/* 文件名:Attribute.nut 路径:User/Asset/Item/Attribute.nut 创建日期:2025-02-10 07:00 文件用途:属性类 */ class Attribute { //最大生命值 HPMax = 0; //最大魔法值 MPMax = 0; //生命值回复速度 HPRegenSpeed = 0; //魔法值回复速度 MPRegenSpeed = 0; //跳跃力 JumpPower = 0; //硬直 HitRecovery = 0; //命中率 Stuck = 0; //闪避率 StuckResistance = 0; //力量 PhysicalAttack = 0; //智力 MagicalAttack = 0; //体力 PhysicalDefense = 0; //精神 MagicalDefense = 0; //所有属强 AllElementalAttack = 0; //暗属强 DarkAttack = 0; //光属强 LightAttack = 0; //水属强 WaterAttack = 0; //火属强 FireAttack = 0; //物理攻击力 EquipmentPhysicalAttack = 0; //魔法攻击力 EquipmentMagicalAttack = 0; //独立攻击力 SeparateAttack = 0; //物理防御力 EquipmentPhysicalDefense = 0; //魔法防御力 EquipmentMagicalDefense = 0; //攻击速度 AttackSpeed = 0; //释放速度 CastSpeed = 0; //移动速度 MoveSpeed = 0; //跳跃速度 JumpSpeed = 0; //物理暴击率 PhysicalCriticalHit = 0; //魔法暴击率 MagicalCriticalHit = 0; //暗属抗 DarkResistance = 0; //光属抗 LightResistance = 0; //水属抗 WaterResistance = 0; //火属抗 FireResistance = 0; //属性攻击 ElementalProperty = null; constructor(Args) { ElementalProperty = []; //使用装备构造 if (typeof Args == "table") { foreach(member, val in getconsttable().ATTRIBUTE) { if (member != "ElementalProperty") { //普通属性 if (Args.rawin(member)) { this[member] = Args[member]; } } else { //属性攻击 if (Args.rawin(member)) { switch (Args[member]) { case "[dark element]": this[member].push(0); break; case "[light element]": this[member].push(1); break; case "[water element]": this[member].push(2); break; case "[fire element]": this[member].push(3); } } } } } //使用角色构造 else if (typeof Args == "Game_Character") { local Info = sq_DeepCopy(Args.Info.Attribute[Args.GrowJob]); Info.rawdelete("filepath"); foreach(Key, Value in Info) { // print(Value); if (Key == "HPMax" || Key == "MPMax" || Key == "PhysicalAttack" || Key == "MagicalAttack" || Key == "PhysicalDefense" || Key == "MagicalDefense") this[Key] = Value * Args.Level; else { if (this.rawin(Key)) this[Key] = Value; } } } } function _typeof() { return "Attribute"; } function _add(other) { if (typeof other != "Attribute") throw "属性运算参数错误"; foreach(member, val in getconsttable().ATTRIBUTE) { if (member != "ElementalProperty") { this[member] += other[member]; } else { foreach(EleType in other[member]) { local index = this["ElementalProperty"].find(EleType); if (!index) this["ElementalProperty"].push(EleType); } } } return this; } function _sub(other) { if (typeof other != "Attribute") throw "属性运算参数错误"; foreach(member, val in getconsttable().ATTRIBUTE) { if (member != "ElementalProperty") { this[member] -= other[member]; } else { foreach(EleType in other[member]) { local index = this["ElementalProperty"].find(EleType); if (index) this["ElementalProperty"].remove(index); } } } return this; } function _mul(other) { foreach(member, val in getconsttable().ATTRIBUTE) { if (member != "ElementalProperty") { this[member] *= other; } } return this; } function _div(other) { foreach(member, val in getconsttable().ATTRIBUTE) { if (member != "ElementalProperty") { this[member] /= other; } } return this; } function Show() { foreach(member, val in getconsttable().ATTRIBUTE) { if (member != "ElementalProperty") { print(getconsttable().ATTRIBUTE[member] + " : " + this[member]); } else { print(getconsttable().ATTRIBUTE[member] + " : "); print(this[member]); } } } }