This commit is contained in:
gechangfu 2025-08-01 19:23:12 +08:00
parent 73126e8a05
commit a0889bdba6
34 changed files with 513 additions and 498 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,33 +1,33 @@
[
{"id":1,"type":1,"effectAttribute":"attack","battleValue":[1,10],"iconId":1},
{"id":2,"type":1,"effectAttribute":"hp","battleValue":[1,10],"iconId":2},
{"id":3,"type":1,"effectAttribute":"swordAtk","battleValue":[1,10],"iconId":3},
{"id":4,"type":2,"effectAttribute":"swordWearBase","battleValue":[1,10],"iconId":4},
{"id":5,"type":2,"effectAttribute":"swordWearSpe","battleValue":[1,10],"iconId":5},
{"id":6,"type":2,"effectAttribute":"fireAtk","battleValue":[1,10],"iconId":6},
{"id":7,"type":2,"effectAttribute":"iceAtk","battleValue":[1,10],"iconId":7},
{"id":8,"type":2,"effectAttribute":"lightAtk","battleValue":[1,10],"iconId":8},
{"id":9,"type":2,"effectAttribute":"shadowAtk","battleValue":[1,10],"iconId":9},
{"id":10,"type":1,"effectAttribute":"fireDef","battleValue":[1,10],"iconId":10},
{"id":11,"type":1,"effectAttribute":"iceDef","battleValue":[1,10],"iconId":11},
{"id":12,"type":1,"effectAttribute":"lightDef","battleValue":[1,10],"iconId":12},
{"id":13,"type":1,"effectAttribute":"shadowDef","battleValue":[1,10],"iconId":13},
{"id":14,"type":2,"effectAttribute":"attackRate","battleValue":[1,10],"iconId":14},
{"id":15,"type":2,"effectAttribute":"hpRate","battleValue":[1,10],"iconId":15},
{"id":16,"type":1,"effectAttribute":"atkSpeed","battleValue":[1,10],"iconId":16},
{"id":20,"type":2,"effectAttribute":"critRate","battleValue":[1,10],"iconId":17},
{"id":21,"type":2,"effectAttribute":"critDamageRate","battleValue":[1,10],"iconId":18},
{"id":22,"type":2,"effectAttribute":"atkSpeedRate","battleValue":[1,10],"iconId":19},
{"id":23,"type":2,"effectAttribute":"cdRate","battleValue":[1,10],"iconId":20},
{"id":24,"type":1,"effectAttribute":"mpBonus","battleValue":[1,10],"iconId":21},
{"id":25,"type":2,"effectAttribute":"mpReduceRate","battleValue":[1,10],"iconId":22},
{"id":26,"type":1,"effectAttribute":"mpRecoverBonus","battleValue":[1,10],"iconId":23},
{"id":27,"type":2,"effectAttribute":"vampireRate","battleValue":[1,10],"iconId":24},
{"id":28,"type":2,"effectAttribute":"coinBonus","battleValue":[1,10],"iconId":25},
{"id":50,"type":1,"effectAttribute":"wearNumber","battleValue":[1,10],"iconId":26},
{"id":51,"type":1,"effectAttribute":"skillNumber","battleValue":[1,10],"iconId":27},
{"id":52,"type":1,"effectAttribute":"extraAttributeNumber","battleValue":[1,10],"iconId":28},
{"id":53,"type":1,"effectAttribute":"elementNumber","battleValue":[1,10],"iconId":29},
{"id":54,"type":1,"effectAttribute":"elementDefNumber","battleValue":[1,10],"iconId":30},
{"id":55,"type":1,"effectAttribute":"gemNumber","battleValue":[1,10],"iconId":31}
{"id":1,"type":1,"effectAttribute":"attack","battleValue":[1,10],"iconId":1,"nameId":201},
{"id":2,"type":1,"effectAttribute":"hp","battleValue":[1,10],"iconId":2,"nameId":202},
{"id":3,"type":1,"effectAttribute":"swordAtk","battleValue":[1,10],"iconId":3,"nameId":203},
{"id":4,"type":2,"effectAttribute":"swordWearBase","battleValue":[1,10],"iconId":4,"nameId":204},
{"id":5,"type":2,"effectAttribute":"swordWearSpe","battleValue":[1,10],"iconId":5,"nameId":205},
{"id":6,"type":2,"effectAttribute":"fireAtk","battleValue":[1,10],"iconId":6,"nameId":206},
{"id":7,"type":2,"effectAttribute":"iceAtk","battleValue":[1,10],"iconId":7,"nameId":207},
{"id":8,"type":2,"effectAttribute":"lightAtk","battleValue":[1,10],"iconId":8,"nameId":208},
{"id":9,"type":2,"effectAttribute":"shadowAtk","battleValue":[1,10],"iconId":9,"nameId":209},
{"id":10,"type":1,"effectAttribute":"fireDef","battleValue":[1,10],"iconId":10,"nameId":210},
{"id":11,"type":1,"effectAttribute":"iceDef","battleValue":[1,10],"iconId":11,"nameId":211},
{"id":12,"type":1,"effectAttribute":"lightDef","battleValue":[1,10],"iconId":12,"nameId":212},
{"id":13,"type":1,"effectAttribute":"shadowDef","battleValue":[1,10],"iconId":13,"nameId":213},
{"id":14,"type":2,"effectAttribute":"attackRate","battleValue":[1,10],"iconId":14,"nameId":214},
{"id":15,"type":2,"effectAttribute":"hpRate","battleValue":[1,10],"iconId":15,"nameId":215},
{"id":16,"type":2,"effectAttribute":"atkSpeed","battleValue":[1,10],"iconId":16,"nameId":216},
{"id":20,"type":2,"effectAttribute":"critRate","battleValue":[1,10],"iconId":17,"nameId":220},
{"id":21,"type":2,"effectAttribute":"critDamageRate","battleValue":[1,10],"iconId":18,"nameId":221},
{"id":22,"type":2,"effectAttribute":"atkSpeedRate","battleValue":[1,10],"iconId":19,"nameId":222},
{"id":23,"type":2,"effectAttribute":"cdRate","battleValue":[1,10],"iconId":20,"nameId":223},
{"id":24,"type":1,"effectAttribute":"mpBonus","battleValue":[1,10],"iconId":21,"nameId":224},
{"id":25,"type":2,"effectAttribute":"mpReduceRate","battleValue":[1,10],"iconId":22,"nameId":225},
{"id":26,"type":1,"effectAttribute":"mpRecoverBonus","battleValue":[1,10],"iconId":23,"nameId":226},
{"id":27,"type":2,"effectAttribute":"vampireRate","battleValue":[1,10],"iconId":24,"nameId":227},
{"id":28,"type":2,"effectAttribute":"coinBonus","battleValue":[1,10],"iconId":25,"nameId":228},
{"id":50,"type":1,"effectAttribute":"wearNumber","battleValue":[1,10],"iconId":26,"nameId":250},
{"id":51,"type":1,"effectAttribute":"skillNumber","battleValue":[1,10],"iconId":27,"nameId":251},
{"id":52,"type":1,"effectAttribute":"extraAttributeNumber","battleValue":[1,10],"iconId":28,"nameId":252},
{"id":53,"type":1,"effectAttribute":"elementNumber","battleValue":[1,10],"iconId":29,"nameId":253},
{"id":54,"type":1,"effectAttribute":"elementDefNumber","battleValue":[1,10],"iconId":30,"nameId":254},
{"id":55,"type":1,"effectAttribute":"gemNumber","battleValue":[1,10],"iconId":31,"nameId":255}
]

View File

@ -1,3 +1,3 @@
[
{"id":1,"name":1,"attack":100,"hp":2000,"walkSpeed":10,"atkSpeed":1}
{"id":1,"name":1,"attack":100,"hp":2000,"walkSpeed":10,"atkSpeed":100}
]

View File

@ -1,5 +1,5 @@
[
{"id":1,"type":1,"name":1,"attack":83,"hp":400,"walkSpeed":8,"attackSpeed":1,"model":"Thief"},
{"id":2,"type":1,"name":2,"attack":30,"hp":300,"walkSpeed":8,"attackSpeed":1,"model":"Thief"},
{"id":1,"type":1,"name":1,"attack":20,"hp":1700,"walkSpeed":8,"attackSpeed":1,"model":"Thief"},
{"id":2,"type":1,"name":2,"attack":20,"hp":1700,"walkSpeed":8,"attackSpeed":1,"model":"Thief"},
{"id":1000,"type":2,"name":1000,"attack":120,"hp":1000,"walkSpeed":4,"attackSpeed":1,"model":"Thief"}
]

View File

@ -1,18 +1,18 @@
[
{"id":40000,"type":1,"name":40000,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10},
{"id":40001,"type":1,"name":40001,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10},
{"id":40002,"type":1,"name":40002,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10},
{"id":40003,"type":1,"name":40003,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10},
{"id":40004,"type":1,"name":40004,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10},
{"id":40005,"type":1,"name":40005,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10},
{"id":40006,"type":1,"name":40006,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10},
{"id":40007,"type":1,"name":40007,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10},
{"id":40008,"type":1,"name":40008,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10},
{"id":40009,"type":1,"name":40009,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10},
{"id":40010,"type":1,"name":40010,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10},
{"id":40011,"type":1,"name":40011,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10},
{"id":40012,"type":1,"name":40012,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10},
{"id":40013,"type":1,"name":40013,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10},
{"id":40014,"type":1,"name":40014,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10},
{"id":40015,"type":1,"name":40015,"attributes":[14,200,10,15,200,10,16,100,0],"modelName":"Zeus","recycle":10}
{"id":40000,"type":1,"name":40000,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40001,"type":1,"name":40001,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40002,"type":1,"name":40002,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40003,"type":1,"name":40003,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40004,"type":1,"name":40004,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40005,"type":1,"name":40005,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40006,"type":1,"name":40006,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40007,"type":1,"name":40007,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40008,"type":1,"name":40008,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40009,"type":1,"name":40009,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40010,"type":1,"name":40010,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40011,"type":1,"name":40011,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40012,"type":1,"name":40012,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40013,"type":1,"name":40013,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40014,"type":1,"name":40014,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10},
{"id":40015,"type":1,"name":40015,"attributes":[14,200,10,15,200,10,16,150,0],"modelName":"Zeus","recycle":10}
]

View File

@ -1,17 +1,29 @@
[
{"id":1,"cost":[1,500]},
{"id":2,"cost":[1,500]},
{"id":3,"cost":[1,500]},
{"id":4,"cost":[1,500]},
{"id":5,"cost":[1,500]},
{"id":6,"cost":[1,500]},
{"id":7,"cost":[1,500]},
{"id":8,"cost":[1,500]},
{"id":9,"cost":[1,500]},
{"id":10,"cost":[1,500]},
{"id":11,"cost":[1,500]},
{"id":12,"cost":[1,500]},
{"id":13,"cost":[1,500]},
{"id":14,"cost":[1,500]},
{"id":15,"cost":[1,500]}
{"id":1,"cost":[2,10]},
{"id":2,"cost":[2,20]},
{"id":3,"cost":[2,30]},
{"id":4,"cost":[2,40]},
{"id":5,"cost":[2,60]},
{"id":6,"cost":[2,80]},
{"id":7,"cost":[2,100]},
{"id":8,"cost":[2,120]},
{"id":9,"cost":[2,140]},
{"id":10,"cost":[2,160]},
{"id":11,"cost":[2,180]},
{"id":12,"cost":[2,200]},
{"id":13,"cost":[2,220]},
{"id":14,"cost":[2,240]},
{"id":15,"cost":[2,260]},
{"id":16,"cost":[2,280]},
{"id":17,"cost":[2,300]},
{"id":18,"cost":[2,320]},
{"id":19,"cost":[2,340]},
{"id":20,"cost":[2,360]},
{"id":21,"cost":[2,380]},
{"id":22,"cost":[2,400]},
{"id":23,"cost":[2,420]},
{"id":24,"cost":[2,440]},
{"id":25,"cost":[2,460]},
{"id":26,"cost":[2,480]},
{"id":27,"cost":[2,500]}
]

View File

@ -1,6 +1,43 @@
[
{"id":100006,"text":"Coin+{0}"},
{"id":100007,"text":"Score+{0}"},
{"id":101,"text":"普通"},
{"id":102,"text":"精良"},
{"id":103,"text":"传奇"},
{"id":104,"text":"史诗"},
{"id":105,"text":"卓越"},
{"id":106,"text":"传说"},
{"id":107,"text":"传说+1"},
{"id":108,"text":"传说+2"},
{"id":201,"text":"攻击"},
{"id":202,"text":"血量"},
{"id":203,"text":"飞剑基础伤害"},
{"id":204,"text":"飞剑穿戴额外伤害"},
{"id":205,"text":"飞剑穿戴额外特殊伤害"},
{"id":206,"text":"火焰伤害"},
{"id":207,"text":"冰霜伤害"},
{"id":208,"text":"雷电伤害"},
{"id":209,"text":"暗影伤害"},
{"id":210,"text":"火焰抗性"},
{"id":211,"text":"冰霜抗性"},
{"id":212,"text":"雷电抗性"},
{"id":213,"text":"暗影抗性"},
{"id":214,"text":"攻击"},
{"id":215,"text":"血量"},
{"id":216,"text":"攻速"},
{"id":220,"text":"暴击率"},
{"id":221,"text":"暴击"},
{"id":222,"text":"攻击速度加成"},
{"id":223,"text":"冷却时间"},
{"id":224,"text":"资源上限"},
{"id":225,"text":"资源消耗减免"},
{"id":226,"text":"资源回复速度"},
{"id":227,"text":"吸血"},
{"id":228,"text":"金币掉落加成"},
{"id":250,"text":"上阵穿戴数量上限"},
{"id":251,"text":"技能数量上限"},
{"id":252,"text":"额外属性数量上限"},
{"id":253,"text":"元素属性数量上限"},
{"id":254,"text":"元素抗性数量上限"},
{"id":255,"text":"宝石数量上限"},
{"id":40000,"text":"测试装备1"},
{"id":40001,"text":"测试装备2"},
{"id":40002,"text":"测试装备3"},

View File

@ -1,331 +1,59 @@
[
{"id":2,"text":"token异常"},
{"id":3,"text":"消息序列号异常"},
{"id":10,"text":"服务器火爆"},
{"id":11,"text":"服务器维护"},
{"id":12,"text":"服务器预开启"},
{"id":13,"text":"当前所选服务器处于爆满状态,无法新建账号"},
{"id":14,"text":"当前所选服务器处于未开服状态,无法新建账号"},
{"id":15,"text":"当前所选服务器处于维护状态,请等待维护结束"},
{"id":16,"text":"当前账号未经认证"},
{"id":20,"text":"该账号被封禁,剩余时间:{0}"},
{"id":21,"text":"该账号已被永久封禁"},
{"id":22,"text":"战斗数据异常"},
{"id":23,"text":"战斗数据异常."},
{"id":24,"text":"预开服"},
{"id":25,"text":"新服"},
{"id":26,"text":"火爆"},
{"id":27,"text":"爆满"},
{"id":28,"text":"维护"},
{"id":30,"text":"道具数量不足"},
{"id":31,"text":"已到达购买数量上限"},
{"id":32,"text":"已达到最大等级"},
{"id":33,"text":"请勿重复触发"},
{"id":34,"text":"已达触发次数上限"},
{"id":35,"text":"请勿重复领取"},
{"id":36,"text":"补货失败,道具不足"},
{"id":37,"text":"成功补货"},
{"id":38,"text":"输入内容包含敏感词"},
{"id":39,"text":"暂无可分解内容"},
{"id":100,"text":"输出"},
{"id":101,"text":"控制"},
{"id":102,"text":"盾甲兵"},
{"id":103,"text":"药师"},
{"id":104,"text":"潜行者"},
{"id":105,"text":"增伤"},
{"id":106,"text":"冰剑修"},
{"id":107,"text":"英雄"},
{"id":108,"text":"弓箭手"},
{"id":109,"text":"唐门门主"},
{"id":110,"text":"拳王"},
{"id":200,"text":"黎明时代"},
{"id":201,"text":"石器时代"},
{"id":202,"text":"农耕时代"},
{"id":600,"text":"早餐"},
{"id":601,"text":"午餐"},
{"id":602,"text":"晚餐"},
{"id":1000,"text":"普攻"},
{"id":1001,"text":"近距离攻击敌方"},
{"id":1002,"text":"劈砍"},
{"id":1003,"text":"挥舞大刀对近距离的敌人进行劈砍,对其造成伤害"},
{"id":1004,"text":"重甲"},
{"id":1005,"text":"身着重甲防御较高,但移动缓慢。使用单手剑对近距离的敌人进行劈砍,对其造成伤害"},
{"id":1006,"text":"偷袭"},
{"id":1007,"text":"快速移动到战场后方,近距离攻击敌方"},
{"id":1008,"text":"长弓"},
{"id":1009,"text":"使用长弓远距离对的敌人造成伤害,敌人中箭越多移速越慢"},
{"id":1010,"text":"普通攻击"},
{"id":1011,"text":"远距离释放毒气,造成范围伤害"},
{"id":1012,"text":"眩晕箭"},
{"id":1013,"text":"射出弓箭,远距离攻击敌方,有概率使目标眩晕"},
{"id":1014,"text":"寒冰剑"},
{"id":1015,"text":"远距离释放冰霜,减速周围敌人,并造成少量伤害"},
{"id":1016,"text":"治疗"},
{"id":1017,"text":"对目标施加治疗,恢复少量生命值"},
{"id":1018,"text":"攻击提升"},
{"id":1019,"text":"对目标友军施加增益,短时间内增加目标攻击力"},
{"id":1020,"text":"长枪"},
{"id":1021,"text":"使用长枪对中等距离的敌人造成伤害,并附带击退效果。(无法对肉盾、英雄目标造成击退)"},
{"id":1022,"text":"冲锋"},
{"id":1023,"text":"接近目标时,骑兵发起冲锋对敌人造成伤害与击退效果,冲锋期间击杀敌人后,可继续冲锋。(无法对肉盾、英雄目标造成击退)"},
{"id":1100,"text":"[小队]:首次攻击时,额外召唤1名刀兵"},
{"id":1101,"text":"[小队]额外召唤1个[暗影刀兵]"},
{"id":1102,"text":"首次攻击时,同时投掷[捕网]眩晕敌方4秒"},
{"id":1103,"text":"[捕网]进化成[暗影网]:向首个进入目标范围内敌人,投掷暗影网,重复命中敌方时叠加控制时长"},
{"id":1104,"text":"火焰进化为硫化火焰。附加灼烧伤害3秒"},
{"id":1105,"text":"出战战士数量+1"},
{"id":1106,"text":"爆炸时,对灼烧目标,有20%概率眩晕敌人1秒"},
{"id":1107,"text":"灼烧效果会持续到目标直至死亡。"},
{"id":1150,"text":"每攻击5次,释放一次重刺穿透直线上的3个敌人"},
{"id":1151,"text":"重刺附带撕裂效果,技能伤害+60%"},
{"id":1152,"text":"重刺附带击退效果"},
{"id":1153,"text":"技能伤害+60%"},
{"id":1154,"text":"重刺后附带横扫技,对范围内的敌人造成伤害,技能伤害+30%"},
{"id":1155,"text":"横扫会反向再次横扫1次,本次横扫伤害-20%"},
{"id":1156,"text":"技能对冰冻状态下的敌人,伤害+200%"},
{"id":1157,"text":"技能击杀1个敌人,自身攻击力提升2%,直至死亡"},
{"id":1200,"text":"每攻击5次,恢复自身血量10%,"},
{"id":1201,"text":"单次承伤损失血量,最多不超过自身血量上限的25%"},
{"id":1202,"text":"第一次生命低于30%时,会在接下来的3秒恢复最大生命15%"},
{"id":1203,"text":"单次承伤损失血量,最多不超过自身血量上限的15%"},
{"id":1204,"text":"恢复血量时,有10%概率再次恢复(针对攻击触发技能)"},
{"id":1205,"text":"每次恢复血量时,恢复效果+20%"},
{"id":1206,"text":"攻击异常状态敌人时,有概率额外恢复自身生命2%的生命"},
{"id":1207,"text":"血量为0时,有20%概率恢复自身血量50%(仅触发一次)"},
{"id":1250,"text":"召唤后,冲锋路径上的敌人,造成200%攻击力的伤害,每击杀1个敌人后可持续冲锋,每次击杀伤害递减20%,直至无击杀目标后停止"},
{"id":1251,"text":"冲锋结束后,附带击退效果,伤害+60%"},
{"id":1252,"text":"冲锋状态经过的友军,获得50%移速加成,持续3秒"},
{"id":1253,"text":"骑兵冲锋数量+1,伤害-20%"},
{"id":1254,"text":"冲锋状态结束时,对击退目标有5%造成2秒眩晕"},
{"id":1255,"text":"冲锋状态下,首个命中的敌人对其额外造成200%的伤害"},
{"id":1256,"text":"冲锋状态下,对异常状态敌人伤害+200%"},
{"id":1257,"text":"冲锋过程中,冲锋伤害不递减。"},
{"id":1300,"text":"每普攻5次,发射一枚霜冻箭附加冰霜效果,降低敌人10%移速(霜冻箭最大上限:30%),持续时间5S"},
{"id":1301,"text":"普攻发射弓箭数量+1,伤害-20%"},
{"id":1302,"text":"霜冻箭攻击减速达到30%的目标,使用霜冻箭命中有20%触发1秒冰冻效果"},
{"id":1303,"text":"普攻发射弓箭数量+1"},
{"id":1304,"text":"弓箭攻击,附带减速效果的敌人时,伤害+20%"},
{"id":1305,"text":"霜冻箭击杀敌人时,向扇形发射4枚碎冰造成伤害(伤害1次)"},
{"id":1306,"text":"弓箭对冻结状态下的敌人伤害+100%"},
{"id":1307,"text":"攻击冰冻目标,有5%概率,额外造成目标最大生命上限1%的伤害"},
{"id":1350,"text":"每攻击5次,释放1个高爆燃油弹,对落点区域的敌人造成小范围伤害"},
{"id":1351,"text":"承受到伤害的敌人,附带灼烧效果,持续3秒"},
{"id":1352,"text":"释放2个高爆燃油弹,对落点区域的敌人造成伤害"},
{"id":1353,"text":"被击中的目标,附带30%的减速效果,持续时间3秒"},
{"id":1354,"text":"爆炸区域的敌人,眩晕1.5秒"},
{"id":1355,"text":"爆炸造成伤害时,增加100%伤害"},
{"id":1356,"text":"燃烧弹对冻结的怪物造成伤害+200%"},
{"id":1357,"text":"每次投掷燃烧弹时,有5%概率投出子母弹,对相同区域投掷2枚燃烧弹"},
{"id":1500,"text":"建筑等级上限"},
{"id":1501,"text":"加成提升"},
{"id":2000,"text":"凝聚火焰之力,朝前方释放一道炽热的烈焰冲击,对范围内敌人造成{0}%+{1}伤害"},
{"id":2001,"text":"进入狂化状态自身体型变大提升自身攻速与移速100%"},
{"id":2002,"text":"召唤3道闪电,造成{0}%+{1}范围伤害,并带麻痹效果"},
{"id":2003,"text":"召唤一个图腾,提升友军伤害30%,持续3秒,结束后图腾爆炸,造成{0}%+{1}范围伤害"},
{"id":2004,"text":"召唤一本死亡之书,存在3秒,每0.5秒造成{0}%+{1}范围伤害,并造成牵引效果"},
{"id":2005,"text":"化身天外飞仙,连续攻击目标,并造成大量伤害"},
{"id":2006,"text":"狂化"},
{"id":2007,"text":"进入狂化状态自身体型变大提升自身攻速与移速100%"},
{"id":2008,"text":"陨石"},
{"id":2009,"text":"召唤陨石攻击前方敌人,对范围内的敌人造成伤害,并附带减速效果"},
{"id":2010,"text":"混沌陨石"},
{"id":2011,"text":"召唤陨石攻击前方敌人,对范围内的敌人造成大量伤害,并附带长时间眩晕"},
{"id":2012,"text":"冲锋"},
{"id":2013,"text":"向前冲锋对敌方造成伤害并推走沿途敌人"},
{"id":2014,"text":"治疗"},
{"id":2015,"text":"治疗自己和周围友军"},
{"id":2016,"text":"向前飞行多次造成伤害并且向技能飞行方向击退敌人"},
{"id":3000,"text":"时装5品1_先锋宝藏"},
{"id":3001,"text":"时装5品2_先锋宝藏"},
{"id":3002,"text":"时装5品3_先锋宝藏"},
{"id":3003,"text":"时装5品4_先锋宝藏"},
{"id":3004,"text":"时装5品5_先锋宝藏"},
{"id":3005,"text":"时装5品6_先锋宝藏"},
{"id":3050,"text":"时装6品1_先锋宝藏"},
{"id":3051,"text":"时装6品2_先锋宝藏"},
{"id":3052,"text":"时装6品3_先锋宝藏"},
{"id":3053,"text":"时装6品4_先锋宝藏"},
{"id":3054,"text":"时装6品5_先锋宝藏"},
{"id":3055,"text":"时装6品6_先锋宝藏"},
{"id":3056,"text":"时装6品7"},
{"id":3057,"text":"时装6品8"},
{"id":3058,"text":"时装6品9"},
{"id":3059,"text":"时装6品10"},
{"id":3009,"text":"独立测试"},
{"id":4000,"text":"武器4品1_首充"},
{"id":4001,"text":"武器4品2"},
{"id":4002,"text":"武器4品3"},
{"id":4050,"text":"武器5品1_先锋宝藏"},
{"id":4051,"text":"武器5品2_先锋宝藏"},
{"id":4052,"text":"武器5品3_先锋宝藏"},
{"id":4100,"text":"武器6品1_先锋宝藏"},
{"id":4101,"text":"武器6品2_先锋宝藏"},
{"id":4102,"text":"武器6品3_先锋宝藏"},
{"id":4103,"text":"武器6品4_先锋宝藏"},
{"id":4104,"text":"武器6品5_先锋宝藏"},
{"id":4105,"text":"武器6品6_先锋宝藏"},
{"id":4106,"text":"武器6品7"},
{"id":4107,"text":"武器6品8"},
{"id":4108,"text":"武器6品9"},
{"id":4109,"text":"武器6品10"},
{"id":5000,"text":"按住屏幕左右\\n移动英雄"},
{"id":5001,"text":"点击召唤同伴"},
{"id":5002,"text":"释放技能\\n获得强大效果"},
{"id":5003,"text":"金币可用于召唤同伴\\n也能提升金库等级"},
{"id":10007,"text":"锻造石"},
{"id":10008,"text":"洗炼符"},
{"id":10009,"text":"科技图纸"},
{"id":10010,"text":"木材"},
{"id":10011,"text":"强化剂"},
{"id":10050,"text":"银钥匙"},
{"id":10051,"text":"金钥匙"},
{"id":10052,"text":"招募令"},
{"id":10060,"text":"通用英雄皮肤材料-4"},
{"id":10061,"text":"通用英雄皮肤材料-5"},
{"id":10062,"text":"通用英雄皮肤材料-6"},
{"id":10063,"text":"通用英雄皮肤材料-7"},
{"id":10070,"text":"通用武器皮肤材料-4"},
{"id":10071,"text":"通用武器皮肤材料-5"},
{"id":10072,"text":"通用武器皮肤材料-6"},
{"id":10073,"text":"通用武器皮肤材料-7"},
{"id":10100,"text":"战场积分"},
{"id":10101,"text":"军团积分"},
{"id":10102,"text":"薪火积分"},
{"id":10103,"text":"赛季积分"},
{"id":10104,"text":"荣耀积分"},
{"id":10105,"text":"元素积分"},
{"id":10106,"text":"终末积分"},
{"id":10107,"text":"危机积分"},
{"id":10200,"text":"头盔图纸"},
{"id":10201,"text":"护臂图纸"},
{"id":10202,"text":"衣服图纸"},
{"id":10203,"text":"裤子图纸"},
{"id":10204,"text":"鞋子图纸"},
{"id":10205,"text":"手套图纸"},
{"id":11100,"text":"宠物1碎片"},
{"id":11101,"text":"宠物2碎片"},
{"id":11102,"text":"宠物3碎片"},
{"id":11103,"text":"宠物4碎片"},
{"id":11104,"text":"宠物5碎片"},
{"id":11105,"text":"宠物6碎片"},
{"id":11106,"text":"宠物7碎片"},
{"id":11107,"text":"宠物8碎片"},
{"id":11108,"text":"宠物9碎片"},
{"id":11109,"text":"宠物10碎片"},
{"id":11110,"text":"宠物11碎片"},
{"id":11111,"text":"宠物12碎片"},
{"id":11112,"text":"宠物13碎片"},
{"id":11113,"text":"宠物14碎片"},
{"id":11114,"text":"宠物15碎片"},
{"id":11115,"text":"宠物16碎片"},
{"id":11116,"text":"宠物17碎片"},
{"id":11117,"text":"宠物18碎片"},
{"id":11118,"text":"宠物19碎片"},
{"id":11119,"text":"宠物20碎片"},
{"id":20007,"text":"锻造石详情"},
{"id":20008,"text":"洗炼符详情"},
{"id":20009,"text":"科技图纸详情"},
{"id":20010,"text":"木材详情"},
{"id":20050,"text":"银钥匙详情"},
{"id":20051,"text":"金钥匙详情"},
{"id":20052,"text":"招募令详情"},
{"id":20060,"text":"通用英雄皮肤材料-4详情"},
{"id":20061,"text":"通用英雄皮肤材料-5详情"},
{"id":20062,"text":"通用英雄皮肤材料-6详情"},
{"id":20063,"text":"通用英雄皮肤材料-7详情"},
{"id":20070,"text":"通用武器皮肤材料-4详情"},
{"id":20071,"text":"通用武器皮肤材料-5详情"},
{"id":20072,"text":"通用武器皮肤材料-6详情"},
{"id":20073,"text":"通用武器皮肤材料-7详情"},
{"id":20100,"text":"战场积分详情"},
{"id":20101,"text":"军团积分详情"},
{"id":20102,"text":"薪火积分详情"},
{"id":20103,"text":"赛季积分详情"},
{"id":20104,"text":"荣耀积分详情"},
{"id":20105,"text":"元素积分详情"},
{"id":20106,"text":"终末积分详情"},
{"id":20107,"text":"危机积分详情"},
{"id":20200,"text":"头盔图纸详情"},
{"id":20201,"text":"护臂图纸详情"},
{"id":20202,"text":"衣服图纸详情"},
{"id":20203,"text":"裤子图纸详情"},
{"id":20204,"text":"鞋子图纸详情"},
{"id":20205,"text":"手套图纸详情"},
{"id":10500,"text":"1分钟加速"},
{"id":10501,"text":"10分钟加速"},
{"id":10502,"text":"半小时加速"},
{"id":10503,"text":"1小时加速"},
{"id":10504,"text":"6小时加速"},
{"id":110000,"text":"技能1"},
{"id":110001,"text":"技能2"},
{"id":110002,"text":"技能3"},
{"id":110003,"text":"技能4"},
{"id":110004,"text":"技能5"},
{"id":110005,"text":"技能6"},
{"id":110006,"text":"技能7"},
{"id":110007,"text":"技能8"},
{"id":110008,"text":"技能9"},
{"id":110009,"text":"技能10"},
{"id":110010,"text":"技能11"},
{"id":110011,"text":"技能12"},
{"id":310001,"text":"头盔·普通"},
{"id":310002,"text":"头盔·精良"},
{"id":310003,"text":"头盔·卓越"},
{"id":320001,"text":"护臂·普通"},
{"id":320002,"text":"护臂·精良"},
{"id":320003,"text":"护臂·卓越"},
{"id":330001,"text":"衣服·普通"},
{"id":330002,"text":"衣服·精良"},
{"id":330003,"text":"衣服·卓越"},
{"id":340001,"text":"裤子·普通"},
{"id":340002,"text":"裤子·精良"},
{"id":340003,"text":"裤子·卓越"},
{"id":350001,"text":"鞋子·普通"},
{"id":350002,"text":"鞋子·精良"},
{"id":350003,"text":"鞋子·卓越"},
{"id":360001,"text":"手套·普通"},
{"id":360002,"text":"手套·精良"},
{"id":360003,"text":"手套·卓越"},
{"id":411000,"text":"头盔·普通宝石"},
{"id":421000,"text":"护臂·普通宝石"},
{"id":431000,"text":"衣服·普通宝石"},
{"id":441000,"text":"裤子·普通宝石"},
{"id":451000,"text":"鞋子·普通宝石"},
{"id":461000,"text":"手套·普通宝石"},
{"id":412000,"text":"头盔·精良宝石"},
{"id":422000,"text":"护臂·精良宝石"},
{"id":432000,"text":"衣服·精良宝石"},
{"id":442000,"text":"裤子·精良宝石"},
{"id":452000,"text":"鞋子·精良宝石"},
{"id":462000,"text":"手套·精良宝石"},
{"id":413000,"text":"头盔·卓越宝石"},
{"id":423000,"text":"护臂·卓越宝石"},
{"id":433000,"text":"衣服·卓越宝石"},
{"id":443000,"text":"裤子·卓越宝石"},
{"id":453000,"text":"鞋子·卓越宝石"},
{"id":463000,"text":"手套·卓越宝石"},
{"id":414000,"text":"头盔·完美宝石"},
{"id":424000,"text":"护臂·完美宝石"},
{"id":434000,"text":"衣服·完美宝石"},
{"id":444000,"text":"裤子·完美宝石"},
{"id":454000,"text":"鞋子·完美宝石"},
{"id":464000,"text":"手套·完美宝石"},
{"id":415000,"text":"头盔·传说宝石"},
{"id":425000,"text":"护臂·传说宝石"},
{"id":435000,"text":"衣服·传说宝石"},
{"id":445000,"text":"裤子·传说宝石"},
{"id":455000,"text":"鞋子·传说宝石"},
{"id":465000,"text":"手套·传说宝石"},
{"id":416000,"text":"头盔·绝世宝石"},
{"id":426000,"text":"护臂·绝世宝石"},
{"id":436000,"text":"衣服·绝世宝石"},
{"id":446000,"text":"裤子·绝世宝石"},
{"id":456000,"text":"鞋子·绝世宝石"},
{"id":466000,"text":"手套·绝世宝石"},
{"id":417000,"text":"头盔·至尊宝石"},
{"id":427000,"text":"护臂·至尊宝石"},
{"id":437000,"text":"衣服·至尊宝石"},
{"id":447000,"text":"裤子·至尊宝石"},
{"id":457000,"text":"鞋子·至尊宝石"},
{"id":467000,"text":"手套·至尊宝石"}
{"id":101,"text":"普通"},
{"id":102,"text":"精良"},
{"id":103,"text":"传奇"},
{"id":104,"text":"史诗"},
{"id":105,"text":"卓越"},
{"id":106,"text":"传说"},
{"id":107,"text":"传说+1"},
{"id":108,"text":"传说+2"},
{"id":201,"text":"攻击"},
{"id":202,"text":"血量"},
{"id":203,"text":"飞剑基础伤害"},
{"id":204,"text":"飞剑穿戴额外伤害"},
{"id":205,"text":"飞剑穿戴额外特殊伤害"},
{"id":206,"text":"火焰伤害"},
{"id":207,"text":"冰霜伤害"},
{"id":208,"text":"雷电伤害"},
{"id":209,"text":"暗影伤害"},
{"id":210,"text":"火焰抗性"},
{"id":211,"text":"冰霜抗性"},
{"id":212,"text":"雷电抗性"},
{"id":213,"text":"暗影抗性"},
{"id":214,"text":"攻击"},
{"id":215,"text":"血量"},
{"id":216,"text":"攻速"},
{"id":220,"text":"暴击率"},
{"id":221,"text":"暴击"},
{"id":222,"text":"攻击速度加成"},
{"id":223,"text":"冷却时间"},
{"id":224,"text":"资源上限"},
{"id":225,"text":"资源消耗减免"},
{"id":226,"text":"资源回复速度"},
{"id":227,"text":"吸血"},
{"id":228,"text":"金币掉落加成"},
{"id":250,"text":"上阵穿戴数量上限"},
{"id":251,"text":"技能数量上限"},
{"id":252,"text":"额外属性数量上限"},
{"id":253,"text":"元素属性数量上限"},
{"id":254,"text":"元素抗性数量上限"},
{"id":255,"text":"宝石数量上限"},
{"id":100006,"text":"Coin+{0}"},
{"id":100007,"text":"Score+{0}"},
{"id":40000,"text":"测试装备1"},
{"id":40001,"text":"测试装备2"},
{"id":40002,"text":"测试装备3"},
{"id":40003,"text":"测试装备4"},
{"id":40004,"text":"测试装备5"},
{"id":40005,"text":"测试装备6"},
{"id":40006,"text":"测试装备7"},
{"id":40007,"text":"测试装备8"},
{"id":40008,"text":"测试装备9"},
{"id":40009,"text":"测试装备10"},
{"id":40010,"text":"测试装备11"},
{"id":40011,"text":"测试装备12"},
{"id":40012,"text":"测试装备13"},
{"id":40013,"text":"测试装备14"},
{"id":40014,"text":"测试装备15"},
{"id":40015,"text":"测试装备16"}
]

View File

@ -1,52 +1,52 @@
[
{"id":1,"type":1,"timeLimit":null,"atkBonus":500,"hpBonus":500,"wave":[[10,1,1,50,1,1]]},
{"id":2,"type":1,"timeLimit":null,"atkBonus":520,"hpBonus":520,"wave":[[10,1,1,50,1,1]]},
{"id":3,"type":1,"timeLimit":null,"atkBonus":540,"hpBonus":540,"wave":[[10,1,1,50,1,1]]},
{"id":4,"type":1,"timeLimit":null,"atkBonus":560,"hpBonus":560,"wave":[[10,1,1,50,1,1]]},
{"id":5,"type":2,"timeLimit":60,"atkBonus":1050,"hpBonus":1050,"wave":[[10,1000,1]]},
{"id":6,"type":1,"timeLimit":null,"atkBonus":600,"hpBonus":600,"wave":[[10,1,1,50,1,1]]},
{"id":7,"type":1,"timeLimit":null,"atkBonus":620,"hpBonus":620,"wave":[[10,1,1,50,1,1]]},
{"id":8,"type":1,"timeLimit":null,"atkBonus":640,"hpBonus":640,"wave":[[10,1,1,50,1,1]]},
{"id":9,"type":1,"timeLimit":null,"atkBonus":660,"hpBonus":660,"wave":[[10,1,1,50,1,1]]},
{"id":10,"type":2,"timeLimit":60,"atkBonus":1100,"hpBonus":1100,"wave":[[10,1000,1]]},
{"id":11,"type":1,"timeLimit":null,"atkBonus":700,"hpBonus":700,"wave":[[10,1,1,50,1,1]]},
{"id":12,"type":1,"timeLimit":null,"atkBonus":720,"hpBonus":720,"wave":[[10,1,1,50,1,1]]},
{"id":13,"type":1,"timeLimit":null,"atkBonus":740,"hpBonus":740,"wave":[[10,1,1,50,1,1]]},
{"id":14,"type":1,"timeLimit":null,"atkBonus":760,"hpBonus":760,"wave":[[10,1,1,50,1,1]]},
{"id":15,"type":2,"timeLimit":60,"atkBonus":1150,"hpBonus":1150,"wave":[[10,1000,1]]},
{"id":16,"type":1,"timeLimit":null,"atkBonus":800,"hpBonus":800,"wave":[[10,1,1,50,1,1]]},
{"id":17,"type":1,"timeLimit":null,"atkBonus":820,"hpBonus":820,"wave":[[10,1,1,50,1,1]]},
{"id":18,"type":1,"timeLimit":null,"atkBonus":840,"hpBonus":840,"wave":[[10,1,1,50,1,1]]},
{"id":19,"type":1,"timeLimit":null,"atkBonus":860,"hpBonus":860,"wave":[[10,1,1,50,1,1]]},
{"id":20,"type":2,"timeLimit":60,"atkBonus":1250,"hpBonus":1250,"wave":[[10,1000,1]]},
{"id":21,"type":1,"timeLimit":null,"atkBonus":900,"hpBonus":900,"wave":[[10,1,1,50,1,1]]},
{"id":22,"type":1,"timeLimit":null,"atkBonus":920,"hpBonus":920,"wave":[[10,1,1,50,1,1]]},
{"id":23,"type":1,"timeLimit":null,"atkBonus":940,"hpBonus":940,"wave":[[10,1,1,50,1,1]]},
{"id":24,"type":1,"timeLimit":null,"atkBonus":960,"hpBonus":960,"wave":[[10,1,1,50,1,1]]},
{"id":25,"type":2,"timeLimit":60,"atkBonus":1350,"hpBonus":1350,"wave":[[10,1000,1]]},
{"id":26,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1]]},
{"id":27,"type":1,"timeLimit":null,"atkBonus":1020,"hpBonus":1020,"wave":[[10,1,1,50,1,1]]},
{"id":28,"type":1,"timeLimit":null,"atkBonus":1040,"hpBonus":1040,"wave":[[10,1,1,50,1,1]]},
{"id":29,"type":1,"timeLimit":null,"atkBonus":1060,"hpBonus":1060,"wave":[[10,1,1,50,1,1]]},
{"id":30,"type":2,"timeLimit":60,"atkBonus":1500,"hpBonus":1500,"wave":[[10,1000,1]]},
{"id":31,"type":1,"timeLimit":null,"atkBonus":1100,"hpBonus":1100,"wave":[[10,1,1,50,1,1]]},
{"id":32,"type":1,"timeLimit":null,"atkBonus":1120,"hpBonus":1120,"wave":[[10,1,1,50,1,1]]},
{"id":33,"type":1,"timeLimit":null,"atkBonus":1140,"hpBonus":1140,"wave":[[10,1,1,50,1,1]]},
{"id":34,"type":1,"timeLimit":null,"atkBonus":1160,"hpBonus":1160,"wave":[[10,1,1,50,1,1]]},
{"id":35,"type":2,"timeLimit":60,"atkBonus":2000,"hpBonus":2000,"wave":[[10,1000,1]]},
{"id":36,"type":1,"timeLimit":null,"atkBonus":1200,"hpBonus":1200,"wave":[[10,1,1,50,1,1]]},
{"id":37,"type":1,"timeLimit":null,"atkBonus":1220,"hpBonus":1220,"wave":[[10,1,1,50,1,1]]},
{"id":38,"type":1,"timeLimit":null,"atkBonus":1240,"hpBonus":1240,"wave":[[10,1,1,50,1,1]]},
{"id":39,"type":1,"timeLimit":null,"atkBonus":1260,"hpBonus":1260,"wave":[[10,1,1,50,1,1]]},
{"id":40,"type":2,"timeLimit":60,"atkBonus":2500,"hpBonus":2500,"wave":[[10,1000,1]]},
{"id":41,"type":1,"timeLimit":null,"atkBonus":1300,"hpBonus":1300,"wave":[[10,1,1,50,1,1]]},
{"id":42,"type":1,"timeLimit":null,"atkBonus":1320,"hpBonus":1320,"wave":[[10,1,1,50,1,1]]},
{"id":43,"type":1,"timeLimit":null,"atkBonus":1340,"hpBonus":1340,"wave":[[10,1,1,50,1,1]]},
{"id":44,"type":1,"timeLimit":null,"atkBonus":1360,"hpBonus":1360,"wave":[[10,1,1,50,1,1]]},
{"id":45,"type":2,"timeLimit":60,"atkBonus":3000,"hpBonus":3000,"wave":[[10,1000,1]]},
{"id":46,"type":1,"timeLimit":null,"atkBonus":1400,"hpBonus":1400,"wave":[[10,1,1,50,1,1]]},
{"id":47,"type":1,"timeLimit":null,"atkBonus":1420,"hpBonus":1420,"wave":[[10,1,1,50,1,1]]},
{"id":48,"type":1,"timeLimit":null,"atkBonus":1440,"hpBonus":1440,"wave":[[10,1,1,50,1,1]]},
{"id":49,"type":1,"timeLimit":null,"atkBonus":1460,"hpBonus":1460,"wave":[[10,1,1,50,1,1]]},
{"id":50,"type":2,"timeLimit":60,"atkBonus":3500,"hpBonus":3500,"wave":[[10,1000,1]]}
{"id":1,"type":1,"timeLimit":null,"atkBonus":500,"hpBonus":500,"wave":[[10,1,1,50,1,1]],"finishRewards":[50000,1]},
{"id":2,"type":1,"timeLimit":null,"atkBonus":520,"hpBonus":520,"wave":[[10,1,1,50,1,1]],"finishRewards":[50001,1]},
{"id":3,"type":1,"timeLimit":null,"atkBonus":540,"hpBonus":540,"wave":[[10,1,1,50,1,1]],"finishRewards":[50002,1]},
{"id":4,"type":1,"timeLimit":null,"atkBonus":560,"hpBonus":560,"wave":[[10,1,1,50,1,1]],"finishRewards":[50003,1]},
{"id":5,"type":2,"timeLimit":60,"atkBonus":1050,"hpBonus":1050,"wave":[[10,1000,1]],"finishRewards":[50004,1]},
{"id":6,"type":1,"timeLimit":null,"atkBonus":600,"hpBonus":600,"wave":[[10,1,1,50,1,1]],"finishRewards":[50005,1]},
{"id":7,"type":1,"timeLimit":null,"atkBonus":620,"hpBonus":620,"wave":[[10,1,1,50,1,1]],"finishRewards":[50006,1]},
{"id":8,"type":1,"timeLimit":null,"atkBonus":640,"hpBonus":640,"wave":[[10,1,1,50,1,1]],"finishRewards":[50007,1]},
{"id":9,"type":1,"timeLimit":null,"atkBonus":660,"hpBonus":660,"wave":[[10,1,1,50,1,1]],"finishRewards":[50008,1]},
{"id":10,"type":2,"timeLimit":60,"atkBonus":1100,"hpBonus":1100,"wave":[[10,1000,1]],"finishRewards":[50009,1]},
{"id":11,"type":1,"timeLimit":null,"atkBonus":700,"hpBonus":700,"wave":[[10,1,1,50,1,1]],"finishRewards":[50010,1]},
{"id":12,"type":1,"timeLimit":null,"atkBonus":720,"hpBonus":720,"wave":[[10,1,1,50,1,1]],"finishRewards":[50011,1]},
{"id":13,"type":1,"timeLimit":null,"atkBonus":740,"hpBonus":740,"wave":[[10,1,1,50,1,1]],"finishRewards":[50012,1]},
{"id":14,"type":1,"timeLimit":null,"atkBonus":760,"hpBonus":760,"wave":[[10,1,1,50,1,1]],"finishRewards":[50013,1]},
{"id":15,"type":2,"timeLimit":60,"atkBonus":1150,"hpBonus":1150,"wave":[[10,1000,1]],"finishRewards":[50014,1]},
{"id":16,"type":1,"timeLimit":null,"atkBonus":800,"hpBonus":800,"wave":[[10,1,1,50,1,1]],"finishRewards":[50015,1]},
{"id":17,"type":1,"timeLimit":null,"atkBonus":820,"hpBonus":820,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":18,"type":1,"timeLimit":null,"atkBonus":840,"hpBonus":840,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":19,"type":1,"timeLimit":null,"atkBonus":860,"hpBonus":860,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":20,"type":2,"timeLimit":60,"atkBonus":1250,"hpBonus":1250,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":21,"type":1,"timeLimit":null,"atkBonus":900,"hpBonus":900,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":22,"type":1,"timeLimit":null,"atkBonus":920,"hpBonus":920,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":23,"type":1,"timeLimit":null,"atkBonus":940,"hpBonus":940,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":24,"type":1,"timeLimit":null,"atkBonus":960,"hpBonus":960,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":25,"type":2,"timeLimit":60,"atkBonus":1350,"hpBonus":1350,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":26,"type":1,"timeLimit":null,"atkBonus":1000,"hpBonus":1000,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":27,"type":1,"timeLimit":null,"atkBonus":1020,"hpBonus":1020,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":28,"type":1,"timeLimit":null,"atkBonus":1040,"hpBonus":1040,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":29,"type":1,"timeLimit":null,"atkBonus":1060,"hpBonus":1060,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":30,"type":2,"timeLimit":60,"atkBonus":1500,"hpBonus":1500,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":31,"type":1,"timeLimit":null,"atkBonus":1100,"hpBonus":1100,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":32,"type":1,"timeLimit":null,"atkBonus":1120,"hpBonus":1120,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":33,"type":1,"timeLimit":null,"atkBonus":1140,"hpBonus":1140,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":34,"type":1,"timeLimit":null,"atkBonus":1160,"hpBonus":1160,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":35,"type":2,"timeLimit":60,"atkBonus":2000,"hpBonus":2000,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":36,"type":1,"timeLimit":null,"atkBonus":1200,"hpBonus":1200,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":37,"type":1,"timeLimit":null,"atkBonus":1220,"hpBonus":1220,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":38,"type":1,"timeLimit":null,"atkBonus":1240,"hpBonus":1240,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":39,"type":1,"timeLimit":null,"atkBonus":1260,"hpBonus":1260,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":40,"type":2,"timeLimit":60,"atkBonus":2500,"hpBonus":2500,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":41,"type":1,"timeLimit":null,"atkBonus":1300,"hpBonus":1300,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":42,"type":1,"timeLimit":null,"atkBonus":1320,"hpBonus":1320,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":43,"type":1,"timeLimit":null,"atkBonus":1340,"hpBonus":1340,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":44,"type":1,"timeLimit":null,"atkBonus":1360,"hpBonus":1360,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":45,"type":2,"timeLimit":60,"atkBonus":3000,"hpBonus":3000,"wave":[[10,1000,1]],"finishRewards":[]},
{"id":46,"type":1,"timeLimit":null,"atkBonus":1400,"hpBonus":1400,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":47,"type":1,"timeLimit":null,"atkBonus":1420,"hpBonus":1420,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":48,"type":1,"timeLimit":null,"atkBonus":1440,"hpBonus":1440,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":49,"type":1,"timeLimit":null,"atkBonus":1460,"hpBonus":1460,"wave":[[10,1,1,50,1,1]],"finishRewards":[]},
{"id":50,"type":2,"timeLimit":60,"atkBonus":3500,"hpBonus":3500,"wave":[[10,1000,1]],"finishRewards":[]}
]

View File

@ -2,5 +2,6 @@
{"id":1,"key":"quality_bonus","intValue":null,"stringValue":null,"intArray":[100,125,150,200,275,375]},
{"id":2,"key":"level_get_bonus","intValue":null,"stringValue":null,"intArray":[5,2]},
{"id":3,"key":"mob_died_get","intValue":null,"stringValue":null,"intArray":[2,10]},
{"id":4,"key":"default_weapon","intValue":null,"stringValue":"Sword","intArray":[]}
{"id":4,"key":"default_weapon","intValue":null,"stringValue":"Sword","intArray":[]},
{"id":5,"key":"quality_show","intValue":null,"stringValue":null,"intArray":[101,102,103,104,105,106,107,108]}
]

View File

@ -0,0 +1,76 @@
-- 递增消耗管理器
local IncrementalCostManager = {}
--> Dependencies
local Utils = require(script.Parent.Parent.Tools.Utils)
-- 递增消耗计算函数
function IncrementalCostManager:CalculateCost(currentLevel: number, configData: table, costIndex: number?)
if not configData then
warn("配置数据无效")
return 0
end
costIndex = costIndex or 2 -- 默认使用第二个消耗值
-- 根据当前等级获取对应的消耗配置
local levelData = Utils:GetIdDataFromJson(configData, currentLevel)
if not levelData or not levelData.cost or not levelData.cost[costIndex] then
warn("无法获取等级", currentLevel, "的消耗配置")
return 0
end
return levelData.cost[costIndex]
end
-- 计算当前等级可以进行的操作次数
function IncrementalCostManager:CalculateOperationCount(currentValue: number, currentLevel: number, configData: table, costIndex: number?)
local cost = self:CalculateCost(currentLevel, configData, costIndex)
if cost <= 0 then return 0 end
return math.floor(currentValue / cost)
end
-- 计算下一次升级需要的资源
function IncrementalCostManager:CalculateNextUpgradeCost(currentLevel: number, configData: table, costIndex: number?)
local nextLevel = currentLevel + 1
local maxLevel = Utils:GetMaxIdFromJson(configData)
if nextLevel > maxLevel then
return 0 -- 已达到最高等级
end
return self:CalculateCost(nextLevel, configData, costIndex)
end
-- 检查是否可以升级
function IncrementalCostManager:CanUpgrade(currentValue: number, currentLevel: number, configData: table, costIndex: number?)
local nextCost = self:CalculateNextUpgradeCost(currentLevel, configData, costIndex)
return currentValue >= nextCost
end
-- 获取升级后的剩余资源
function IncrementalCostManager:GetRemainingAfterUpgrade(currentValue: number, currentLevel: number, configData: table, costIndex: number?)
local cost = self:CalculateCost(currentLevel, configData, costIndex)
return currentValue - cost
end
-- 批量计算多个等级的消耗
function IncrementalCostManager:CalculateBatchCosts(startLevel: number, endLevel: number, configData: table, costIndex: number?)
local costs = {}
for level = startLevel, endLevel do
costs[level] = self:CalculateCost(level, configData, costIndex)
end
return costs
end
-- 计算从当前等级到目标等级的总消耗
function IncrementalCostManager:CalculateTotalCost(currentLevel: number, targetLevel: number, configData: table, costIndex: number?)
local totalCost = 0
for level = currentLevel, targetLevel do
totalCost = totalCost + self:CalculateCost(level, configData, costIndex)
end
return totalCost
end
return IncrementalCostManager

View File

@ -10,5 +10,4 @@ function Handles:valueExistsInTable(tab, value)
return false
end
return Handles

View File

@ -14,10 +14,24 @@ local JsonLanguage_Zh_CN = require(ReplicatedStorage.Json.Language_Zh_CN)
local JsonImage_En_US = require(ReplicatedStorage.Json.Image_En_US)
local JsonImage_Zh_CN = require(ReplicatedStorage.Json.Image_Zh_CN)
local JsonParam = require(ReplicatedStorage.Json.Param)
--> Variables
local LocalPlayer = game.Players.LocalPlayer
local SystemLocaleId = LocalizationService.SystemLocaleId
--> Color
local QUALITY_COLOR = {
[1] = Color3.fromRGB(255, 255, 255), -- 白色
[2] = Color3.fromRGB(0, 255, 0), -- 绿色
[3] = Color3.fromRGB(0, 150, 255), -- 蓝色
[4] = Color3.fromRGB(150, 0, 255), -- 紫色
[5] = Color3.fromRGB(255, 150, 0), -- 橙色
[6] = Color3.fromRGB(255, 0, 0), -- 红色
[7] = Color3.fromRGB(255, 215, 0), -- 金色
[8] = Color3.fromRGB(255, 0, 255), -- 粉色
}
-- 获取本地Json文件
function Localization:GetLocalizationJson()
if SystemLocaleId == "zh-CN" then
@ -45,4 +59,44 @@ function Localization:GetImageData(Id: number)
return data.sourceId
end
-- 获取装备品质描述
function Localization:GetEquipmentQualityDesc(Quality: number)
local qualityData = Utils:GetSpecialKeyDataFromJson(JsonParam, "key", "quality_show")
if not qualityData then return "" end
local languageData = Utils:GetSpecialKeyDataFromJson(JsonLanguage, "id", qualityData.intArray[Quality])
if not languageData then return "" end
local language = languageData.text
return language
end
-- 将Color3转换为十六进制字符串
local function Color3ToHex(color: Color3): string
local r = math.floor(color.R * 255)
local g = math.floor(color.G * 255)
local b = math.floor(color.B * 255)
return string.format("#%02X%02X%02X", r, g, b)
end
-- 根据quality获取带颜色包装的文本
function Localization:GetColoredTextByQuality(quality: number, text: string): string
if not quality or not text then return text or "" end
local color = QUALITY_COLOR[quality]
if not color then return text end
local hexColor = Color3ToHex(color)
return string.format('<font color="%s">%s</font>', hexColor, text)
end
-- 根据quality获取装备品质描述带颜色
function Localization:GetColoredEquipmentQualityDesc(Quality: number): string
local qualityData = Utils:GetSpecialKeyDataFromJson(JsonParam, "key", "quality_show")
if not qualityData then return "" end
local languageData = Utils:GetSpecialKeyDataFromJson(JsonLanguage, "id", qualityData.intArray[Quality])
if not languageData then return "" end
local language = languageData.text
return self:GetColoredTextByQuality(Quality, language)
end
return Localization

View File

@ -128,6 +128,14 @@ function Behaviour:ChangeExecutingState(State: boolean)
self.PlayerAI.ExecutingState = State
end
-- 打断执行
function Behaviour:StopExecute()
if self.ExeTask then
task.cancel(self.ExeTask)
self.ExeTask = nil
end
end
-- 销毁
function Behaviour:Destroy()
-- 清除客户端对应行为表现

View File

@ -116,7 +116,13 @@ function EquipmentProxy:AddEquipment(Player: Player, EquipmentId: number)
for i = 1, #EquipmentData.attributes, 3 do
local AttributeData = Utils:GetIdDataFromJson(JsonAttributes, EquipmentData.attributes[i])
local baseLvValue = EquipmentData.attributes[i + 1] + EquipmentData.attributes[i + 2] * (PlayerLevel - 1)
local qualityEffectValue = math.floor(baseLvValue * (qualityParam[quality] / 100))
local qualityEffectValue
-- 攻击速度词条特殊处理
if AttributeData.effectAttribute == "atkSpeed" then
qualityEffectValue = baseLvValue
else
qualityEffectValue = math.floor(baseLvValue * (qualityParam[quality] / 100))
end
ResultData.attributes[AttributeData.effectAttribute] = qualityEffectValue
end

View File

@ -9,6 +9,9 @@ local Utils = require(ReplicatedStorage.Tools.Utils)
--> Json
local JsonItemProp = require(ReplicatedStorage.Json.ItemProp)
--> Modules
local ItemProxy = require(script.Parent.ItemProxy)
--> Events
local RE_PlayerHelper = ReplicatedStorage.Events.RE_PlayerHelper
@ -21,17 +24,7 @@ RE_PlayerHelper.OnServerEvent:Connect(function(Player: Player, EventName: string
if EventName == "CleanPlayerData" then
HelpProxy:CleanPlayerData(Player)
elseif EventName == "AddItem" then
local PlayerInfoProxy = require(script.Parent.PlayerInfoProxy)
local itemData = Utils:GetIdDataFromJson(JsonItemProp, EventData[1])
if itemData.type == 2 then
local EquipmentProxy = require(script.Parent.EquipmentProxy)
EquipmentProxy:AddEquipment(Player, EventData[1], EventData[2])
elseif itemData.type == 3 then
local BookProxy = require(script.Parent.BookProxy)
BookProxy:UnlockBook(Player, EventData[1] - 10000)
else
PlayerInfoProxy:ChangeItemCount(Player, EventData[1], EventData[2])
end
ItemProxy:AddItem(Player, EventData[1], EventData[2])
print("添加物品成功", EventData)
end
end)

View File

@ -21,9 +21,14 @@ function ItemProxy:AddItem(Player: Player, ItemId: number, ItemCount: number)
local ItemData = Utils:GetIdDataFromJson(JsonItem, ItemId)
if not ItemData then return end
-- 之后根据不同类型做处理
if ItemData.type == 1 then
if ItemData.type == 2 then
local EquipmentProxy = require(script.Parent.EquipmentProxy)
EquipmentProxy:AddEquipment(Player, ItemId, ItemCount)
elseif ItemData.type == 3 then
local BookProxy = require(script.Parent.BookProxy)
BookProxy:UnlockBook(Player, ItemId - 10000)
else
PlayerInfoProxy:ChangeItemCount(Player, ItemId, ItemCount)
end
end

View File

@ -10,6 +10,7 @@ local Players = game:GetService("Players")
local Utils = require(ReplicatedStorage.Tools.Utils)
local ArchiveProxy = require(ServerStorage.Proxy.ArchiveProxy)
local MobsProxy = require(ServerStorage.Proxy.MobsProxy)
local ItemProxy = require(ServerStorage.Proxy.ItemProxy)
local TypeList = require(ServerStorage.Base.TypeList)
--> Dependencies
@ -183,7 +184,6 @@ end
-- 挑战关卡(挑战副本用另一个函数)
function LevelProxy:ChallengeLevel(Player: Player, LevelId: number)
print("挑战关卡", LevelId)
local LevelData = Utils:GetIdDataFromJson(JsonLevel, LevelId)
if not LevelData then warn("Level Data not found", LevelId) return end
-- 给前端传数据,做表现
@ -268,6 +268,20 @@ function LevelProxy:ChallengeEnd(Player: Player, result: boolean)
-- 判断玩家是否通关
if result then
local levelData = Utils:GetIdDataFromJson(JsonLevel, LevelProxy.pData[Player.UserId].LevelId)
-- 防止之后失败重复添加奖励
if ArchiveProxy.pData[Player.UserId][STORE_NAME].Progress.Main == LevelProxy.pData[Player.UserId].LevelId then
-- 添加首次通关奖励
if levelData.finishRewards then
for i = 1, #levelData.finishRewards, 2 do
local itemId = levelData.finishRewards[i]
local itemCount = levelData.finishRewards[i + 1]
ItemProxy:AddItem(Player, itemId, itemCount)
print("添加首次通关奖励", itemId, itemCount)
end
end
end
ChangeValue(Player, ProgressFolder, "Main", LevelProxy.pData[Player.UserId].LevelId + 1)
else
local IsBoss = LevelProxy.pData[Player.UserId].IsBoss

View File

@ -47,6 +47,7 @@ function PlayerAI.new(Player: Player, PlayerRole: TypeList.Character)
self.Player = Player
self.ExecutingState = false
self.PlayerControling = false
self.ExecutingBehaviour = nil
self.LastTime = 0
self.Counter = 0
@ -63,6 +64,12 @@ function PlayerAI.new(Player: Player, PlayerRole: TypeList.Character)
self.PlayerControlCon = RE_PlayerAI.OnServerEvent:Connect(function(Player: Player, ControlState: boolean)
if Player ~= self.Player then return end
self.PlayerControling = ControlState
-- 打断正在执行的行为
if self.ExecutingBehaviour then
self.ExecutingBehaviour:StopExecute()
self.ExecutingState = false
end
end)
return self
end
@ -72,6 +79,7 @@ function PlayerAI:Update()
local maxPriority = 0
local bestBehaviour = nil
local bestCheckData = nil
self.ExecutingBehaviour = nil
for _, behaviour in self.BehaviourList do
local priority, checkData = behaviour:Check(self.Character)
@ -83,6 +91,7 @@ function PlayerAI:Update()
end
if bestBehaviour and maxPriority > 0 then
self.ExecutingBehaviour = bestBehaviour
bestBehaviour:Execute(bestCheckData)
end
end
@ -134,6 +143,8 @@ end
function PlayerAI:ClearAllBehaviour()
for _, behaviour in self.BehaviourList do behaviour:Destroy() end
self.BehaviourList = {}
self.ExecutingBehaviour = nil
self.ExecutingState = false
end
-- 销毁AI

View File

@ -157,10 +157,11 @@ function PlayerFightProxy:UpdatePlayerFightData(Player: Player)
-- 针对百分比特殊属性直接进行计算修改
if AttributesData["hpRate"] then
AttributesData["hp"] = math.floor(AttributesData["hp"] * AttributesData["hpRate"] / 100)
AttributesData["hp"] = math.floor(AttributesData["hp"] * (1 + AttributesData["hpRate"] / 100))
AttributesData["maxhp"] = AttributesData["hp"]
end
if AttributesData["atkRate"] then
AttributesData["atk"] = math.floor(AttributesData["atk"] * AttributesData["atkRate"] / 100)
if AttributesData["attackRate"] then
AttributesData["attack"] = math.floor(AttributesData["attack"] * (1 + AttributesData["attackRate"] / 100))
end
-- 更新玩家属性

View File

@ -218,6 +218,9 @@ end
function PlayerInfoProxy:ChangeItemCount(Player: Player, ItemId: number, ItemCount: number)
if not Player or not ItemId or not ItemCount then warn('添加物品失败: ' , Player.Name, ItemId, ItemCount) return end
-- 转换为字符串,存储为字典
local ItemId = tostring(ItemId)
local playerInfoData = ArchiveProxy.pData[Player.UserId][STORE_NAME].Items
local isNew = false
if not playerInfoData[ItemId] then
@ -231,15 +234,15 @@ function PlayerInfoProxy:ChangeItemCount(Player: Player, ItemId: number, ItemCou
local ItemsFolder = GetPlayerInfoFolder(Player):FindFirstChild("Items")
if isNew then
CreateInfoInstance(Player, ItemsFolder, ItemId, "NumberValue")
else
ChangeInfoInstance(Player, ItemsFolder, ItemId, playerInfoData[ItemId])
end
ChangeInfoInstance(Player, ItemsFolder, ItemId, playerInfoData[ItemId])
return true, playerInfoData[ItemId]
end
-- 判断是否拥有足够物品
function PlayerInfoProxy:HasEnoughItem(Player: Player, ItemId: number, ItemCount: number)
if not Player or not ItemId or not ItemCount then warn('添加物品失败: ' .. Player.Name .. ' ' .. ItemId .. ' ' .. ItemCount) return end
ItemId = tostring(ItemId)
local playerInfoData = ArchiveProxy.pData[Player.UserId][STORE_NAME].Items
if not playerInfoData[ItemId] then return false end
return playerInfoData[ItemId] >= ItemCount
@ -248,6 +251,7 @@ end
-- 获取物品数量
function PlayerInfoProxy:GetItemCount(Player: Player, ItemId: number)
if not Player or not ItemId then warn('获取物品数量失败: ' , Player.Name, ItemId) return end
ItemId = tostring(ItemId)
local playerInfoData = ArchiveProxy.pData[Player.UserId][STORE_NAME].Items
if not playerInfoData[ItemId] then return 0 end
return playerInfoData[ItemId]
@ -271,6 +275,7 @@ function PlayerInfoProxy:MakeForge(Player: Player, EquipmentId: number, Count: n
-- 判断金钱是否足够
local MaxForgeLv = Utils:GetMaxIdFromJson(JsonForge)
local ShouldCostMoney = 0
local ForgeItemId = 2
for i = 1, Count do
-- 读取等级并且做最大值限制
local ForgeLv = ArchiveProxy.pData[Player.UserId][STORE_NAME]["Stats"].forge
@ -278,6 +283,8 @@ function PlayerInfoProxy:MakeForge(Player: Player, EquipmentId: number, Count: n
local ForgeData = Utils:GetIdDataFromJson(JsonForge, ForgeLv)
ShouldCostMoney = ShouldCostMoney + ForgeData["cost"][2]
-- 临时写的,其实没啥必要
ForgeItemId = ForgeData["cost"][1]
if ForgeLv > MaxForgeLv then
ForgeLv = MaxForgeLv
@ -285,12 +292,12 @@ function PlayerInfoProxy:MakeForge(Player: Player, EquipmentId: number, Count: n
ForgeLv = ForgeLv + 1
end
end
if not self:HasEnoughItem(Player, 1, ShouldCostMoney) then
if not self:HasEnoughItem(Player, ForgeItemId, ShouldCostMoney) then
RE_PlayerTip:FireClient(Player, "金钱不足")
return
end
-- 扣钱
self:ChangeItemCount(Player, 1, -ShouldCostMoney)
self:ChangeItemCount(Player, ForgeItemId, -ShouldCostMoney)
-- 生成对应装备
local ResultData = {}

View File

@ -17,7 +17,8 @@ UserInputService.InputBegan:Connect(function(input, gameProcessed)
elseif input.KeyCode == Enum.KeyCode.J then
RE_PlayerHelper:FireServer("AddItem", {1, 1000})
elseif input.KeyCode == Enum.KeyCode.K then
RE_UpgradeAttributes:FireServer(1)
-- RE_UpgradeAttributes:FireServer(1)
RE_PlayerHelper:FireServer("AddItem", {2, 1000})
elseif input.KeyCode == Enum.KeyCode.L then
RE_UpgradeAttributes:FireServer(2)
elseif input.KeyCode == Enum.KeyCode.M then

View File

@ -24,17 +24,20 @@ end
function AttributeShow:Refresh()
local attributeData = Utils:GetSpecialKeyDataFromJson(JsonAttributes, "effectAttribute", self.Data.attribute)
-- 基础属性icon显示
if attributeData.id == 14 or attributeData.id == 15 or attributeData.id == 16 then
self.Variables._imgIcon.Image = Localization:GetImageData(attributeData.iconId)
else
self.Variables._imgIcon:Destroy()
self.Variables._imgIcon = nil
end
self.Variables._tmpAttributeName.Text = self.Data.attribute
self.UIRoot.LayoutOrder = 1000 - attributeData.id
self.Variables._tmpAttributeName.Text = Localization:GetLanguageData(attributeData.nameId)
self.UIRoot.LayoutOrder = attributeData.id
if attributeData.type == 2 then
self.Variables._tmpValue.Text = string.format("%.2f%%", self.Data.value / 100)
self.Variables._tmpValue.Text = string.format("%.2f", self.Data.value / 100)
else
self.Variables._tmpValue.Text = self.Data.value
end

View File

@ -187,7 +187,7 @@ function EquipmentDetailWindow:OnOpenWindow()
-- 装备信息
local equipmentInstance = Utils:GetPlayerDataFolder(LocalPlayer):FindFirstChild("Equipment"):FindFirstChild(self.Data.EquipmentUniqueId)
local equipmentData = Utils:GetIdDataFromJson(JsonItemProp, equipmentInstance:GetAttribute("id"))
local equipmentData = Utils:GetIdDataFromJson(JsonItemProp, equipmentInstance:GetAttribute("orgId"))
self.Variables["_imgIcon"].Image = Localization:GetImageData(equipmentData.iconId)
self.Variables["_tmpName"].Text = Localization:GetLanguageData(equipmentData.textId)
self.Variables["_tmpQuality"].Text = equipmentInstance:GetAttribute("quality")

View File

@ -23,11 +23,11 @@ end
function AttributeShow:Refresh()
local attributeData = Utils:GetSpecialKeyDataFromJson(JsonAttributes, "effectAttribute", self.Data.attribute)
self.Variables._tmpAttributeName.Text = self.Data.attribute
self.UIRoot.LayoutOrder = 1000 - attributeData.id
self.Variables._tmpAttributeName.Text = Localization:GetLanguageData(attributeData.nameId)
self.UIRoot.LayoutOrder = attributeData.id
if attributeData.type == 2 then
self.Variables._tmpValue.Text = string.format("%.2f%%", self.Data.value / 100)
self.Variables._tmpValue.Text = string.format("%.2f", self.Data.value / 100)
else
self.Variables._tmpValue.Text = self.Data.value
end

View File

@ -105,8 +105,8 @@ function GetEquipmentsWindow:Init(UIManager: table, Data: table?)
["_tmpQuality"] = 0,
["__listEquipments"] = 0,
["_btnLeft"] = 0,
["_btnRight"] = 0,
-- ["_btnLeft"] = 0,
-- ["_btnRight"] = 0,
["_btnClose"] = 0,
}
@ -130,8 +130,8 @@ end
function GetEquipmentsWindow:ShowDetail(equipmentInstance: Instance)
local equipmentData = Utils:GetIdDataFromJson(JsonItemProp, equipmentInstance:GetAttribute("orgId"))
self.Variables["_tmpName"].Text = Localization:GetLanguageData(equipmentData.textId)
self.Variables["_tmpQuality"].Text = equipmentInstance:GetAttribute("quality")
self.Variables["_tmpName"].Text = Localization:GetColoredTextByQuality(equipmentInstance:GetAttribute("quality"), Localization:GetLanguageData(equipmentData.nameId))
self.Variables["_tmpQuality"].Text = Localization:GetColoredEquipmentQualityDesc(equipmentInstance:GetAttribute("quality"))
local baseAttributes = equipmentInstance:FindFirstChild("attributes"):GetAttributes()
local exAttributes = equipmentInstance:FindFirstChild("exAttributes"):GetAttributes()

View File

@ -18,6 +18,57 @@ local LocalPlayer = game:GetService("Players").LocalPlayer
--------------------------------------------------------------------------------
-- 简单的递增消耗计算函数
local function GetIncrementalCost(currentLevel: number, configData: table, costIndex: number?)
costIndex = costIndex or 2 -- 默认使用第二个消耗值
-- 获取配置表的最大ID
local maxId = Utils:GetMaxIdFromJson(configData)
-- 如果当前等级超过最大ID使用最大ID的消耗配置
local effectiveLevel = math.min(currentLevel, maxId)
-- 根据有效等级获取对应的消耗配置
local levelData = Utils:GetIdDataFromJson(configData, effectiveLevel)
if not levelData or not levelData.cost then
warn("无法获取等级", effectiveLevel, "的消耗配置")
return 0
end
-- 确保costIndex在有效范围内
if costIndex > #levelData.cost then
warn("消耗索引超出范围:", costIndex, "最大索引:", #levelData.cost)
return 0
end
return levelData.cost[costIndex]
end
-- 计算可以进行的操作次数(累加消耗)
local function GetOperationCount(currentValue: number, currentLevel: number, configData: table, costIndex: number?)
local remainingMoney = currentValue
local forgeCount = 0
local currentForgeLevel = currentLevel
local maxId = Utils:GetMaxIdFromJson(configData)
-- 循环计算每次锻造的消耗,直到货币不足
while remainingMoney > 0 do
local cost = GetIncrementalCost(currentForgeLevel, configData, costIndex)
if cost <= 0 then break end -- 无效消耗
if remainingMoney >= cost then
remainingMoney = remainingMoney - cost
forgeCount = forgeCount + 1
currentForgeLevel = currentForgeLevel + 1
else
break -- 货币不足,停止计算
end
end
return forgeCount
end
--------------------------------------------------------------------------------
local MainWindow = {}
MainWindow.__index = MainWindow
setmetatable(MainWindow, {__index = UIWindow})
@ -40,6 +91,9 @@ function MainWindow:Init(UIManager: table, Data: table?)
["_goForgeFill"] = 0,
["_tmpForgeMoney"] = 0,
["_tmpForgeTime"] = 0,
-- 锻造临时红点
["_tmpRedCreate"] = 0,
}
self.UIRootName = "ui_w_main"
self.UIParentName = UIEnums.UIParent.UIRoot
@ -75,26 +129,31 @@ end
-- 手动点击按钮挑战boss
function MainWindow:OnClickChallengeBoss()
RE_ChallengeBoss:FireServer()
self.Variables["_btnChallengeBoss"].Visible = false
end
function MainWindow:SetShowForgeBar(nowForgeTime : number, moneyValue: number)
local maxForgeId = Utils:GetMaxIdFromJson(JsonForge)
local forgeTime = nowForgeTime > maxForgeId and maxForgeId or nowForgeTime
local forgeData = Utils:GetIdDataFromJson(JsonForge, forgeTime)
local forgeTime = math.min(nowForgeTime, maxForgeId)
-- 获取当前锻造次数对应的消耗用于UI显示
local currentCost = GetIncrementalCost(forgeTime, JsonForge, 2)
-- 进度条 - 使用当前锻造次数对应的消耗显示
self.Variables["_goForgeFill"].Size = UDim2.new(math.min(moneyValue / currentCost, 1), 0, 1, 0)
self.Variables["_tmpForgeMoney"].Text = string.format("%d/%d", moneyValue, currentCost)
-- 进度条
self.Variables["_goForgeFill"].Size = UDim2.new(math.min(moneyValue / forgeData.cost[2], 1), 0, 1, 0)
self.Variables["_tmpForgeMoney"].Text = string.format("%d/%d", moneyValue, forgeData.cost[2])
-- 右上角红点
local timeRecorder = math.ceil(moneyValue / forgeData.cost[2])
-- 右上角红点 - 使用累加消耗计算可以进行的操作次数
local timeRecorder = GetOperationCount(moneyValue, forgeTime, JsonForge, 2)
if timeRecorder > 0 then
self.Variables["_tmpForgeTime"].Visible = true
self.Variables["_tmpRedCreate"].Visible = true
self.Variables["_tmpForgeTime"].Text = timeRecorder
self.Variables["_goForgeFill"].BackgroundColor3 = Color3.fromRGB(255, 255, 0)
else
self.Variables["_tmpForgeTime"].Visible = false
self.Variables["_tmpRedCreate"].Visible = false
self.Variables["_goForgeFill"].BackgroundColor3 = Color3.fromRGB(12, 227, 209)
end
end
@ -147,7 +206,7 @@ function MainWindow:OnOpenWindow()
local forgeInstance = playerInfoFolder:WaitForChild("Stats"):WaitForChild("forge")
local itemFolder = playerInfoFolder:WaitForChild("Items")
local hasItem = playerInfoFolder:FindFirstChild("2")
local hasItem = itemFolder:FindFirstChild("2")
-- 设置锻造货币变动链接
local function SetForgeCostChange()
@ -161,25 +220,25 @@ function MainWindow:OnOpenWindow()
-- 后续变动设置
SetForgeCostChange()
-- 初始化设置
-- ceshi1
self:SetShowForgeBar(forgeInstance.Value, hasItem.Value)
else
-- 没有货币时监听设置
local addCon
addCon = itemFolder.ChildAdded:Connect(function(child)
if child.Name == "2" then
self:SetShowForgeBar(forgeInstance.Value, child.Value)
hasItem = child
self:SetShowForgeBar(forgeInstance.Value, hasItem.Value)
addCon:Disconnect()
addCon = nil
-- 设置显示
SetForgeCostChange()
end
end)
table.insert(self.Connections, addCon)
-- 初始化设置
self:SetShowForgeBar(forgeInstance.Value, 0)
end
end
return MainWindow