modifier_ability_power_eirin = class({}) local public = modifier_ability_power_eirin local m_modifier_funcs= { MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL, MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL_VALUE, } local power_bonus = { ["thtd_eirin_01"] = { [1] = { ["power_damage"] = 2, ["power_bonus"] = 1, ["crit_bonus"] = 1, ["crit_chance"] = 1, }, [2] = { ["power_damage"] = 4, ["power_bonus"] = 1, ["crit_bonus"] = 1, ["crit_chance"] = 1, }, [3] = { ["power_damage"] = 6, ["power_bonus"] = 1, ["crit_bonus"] = 1, ["crit_chance"] = 1, }, [4] = { ["power_damage"] = 5, ["power_bonus"] = 5, ["crit_bonus"] = 5, ["crit_chance"] = 5, }, [5] = { ["power_damage"] = 5, ["power_bonus"] = 5, ["crit_bonus"] = 5, ["crit_chance"] = 5, }, }, ["thtd_eirin_02"] = { [1] = { ["power_damage"] = 2, ["power_bonus"] = 1, ["crit_bonus"] = 1, ["crit_chance"] = 1, }, [2] = { ["power_damage"] = 4, ["power_bonus"] = 1, ["crit_bonus"] = 1, ["crit_chance"] = 1, }, [3] = { ["power_damage"] = 6, ["power_bonus"] = 1, ["crit_bonus"] = 1, ["crit_chance"] = 1, }, [4] = { ["power_damage"] = 5, ["power_bonus"] = 5, ["crit_bonus"] = 5, ["crit_chance"] = 5, }, [5] = { ["power_damage"] = 5, ["power_bonus"] = 5, ["crit_bonus"] = 5, ["crit_chance"] = 5, }, }, ["thtd_eirin_04"] = { [1] = { ["power_damage"] = 5, }, [2] = { ["power_damage"] = 10, }, [3] = { ["power_damage"] = 15, }, }, } local power999_bonus = 1200 function public:IsHidden() return true end function public:IsPermanent() return true end function public:RemoveOnDeath() return false end function public:IsDebuff() return false end function public:IsPurgable() return false end function public:DeclareFunctions() return m_modifier_funcs end -- function public:OnCreated( kv ) -- if not IsServer() then return end -- self:OnRefresh( kv ) -- end -- function public:OnRefresh( kv ) -- if not IsServer() then return end -- end function public:OnDestroy(kv) if not IsServer() then return end local caster = self:GetParent() caster:THTD_AddBasePower("thtd_eirin_power_999") caster:THTD_AddBaseAttack("thtd_eirin_power_999") end function public:OnStackCountChanged( iStackCount ) -- 双端触发,iStackCount为改变前的层数 if not IsServer() then return end local caster = self:GetParent() if self:GetStackCount() == 5 then caster:THTD_AddBasePower(power999_bonus, "thtd_eirin_power_999") caster:THTD_AddBaseAttack(power999_bonus, "thtd_eirin_power_999") end end function public:GetModifierOverrideAbilitySpecial( params ) if self:GetParent() == nil or params.ability == nil then return 0 end local abilityName = params.ability:GetAbilityName() local level = self:GetStackCount() local valueName = params.ability_special_value if power_bonus[abilityName] == nil then return 0 end if power_bonus[abilityName][level] == nil then level = 3 end if power_bonus[abilityName][level] == nil then return 0 end if power_bonus[abilityName][level][valueName] == nil then return 0 end return 1 end function public:GetModifierOverrideAbilitySpecialValue( params ) local abilityName = params.ability:GetAbilityName() local level = self:GetStackCount() local valueName = params.ability_special_value local specialLevel = params.ability_special_level if power_bonus[abilityName][level] == nil then level = 3 end if valueName == "power_damage" then return params.ability:GetLevelSpecialValueNoOverride(valueName, specialLevel) + power_bonus[abilityName][level][valueName] else return params.ability:GetLevelSpecialValueNoOverride(valueName, specialLevel) * power_bonus[abilityName][level][valueName] end end