Files
2HUCardTDGame/scripts/vscripts/modifiers/power/modifier_ability_power_kanako.lua
2021-10-24 15:36:18 -04:00

148 lines
3.2 KiB
Lua
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
modifier_ability_power_kanako = class({})
local public = modifier_ability_power_kanako
local m_modifier_funcs=
{
MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL,
MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL_VALUE,
}
local power_bonus = {
["thtd_kanako_02"] = {
[1] = {
["power_damage"] = 2,
},
[2] = {
["power_damage"] = 4,
},
[3] = {
["power_damage"] = 8,
},
},
["thtd_kanako_04"] = {
[1] = {
["power_damage1"] = 50,
["power_damage2"] = 50,
["damage_up"] = 0,
},
[2] = {
["power_damage1"] = 100,
["power_damage2"] = 100,
["damage_up"] = 0,
},
[3] = {
["power_damage1"] = 200,
["power_damage2"] = 200,
["damage_up"] = 0,
},
[4] = {
["power_damage1"] = 200,
["power_damage2"] = 200,
["damage_up"] = 0.6,
},
[5] = {
["power_damage1"] = 200,
["power_damage2"] = 200,
["damage_up"] = 0.6,
},
},
}
local power999_bonus = 600
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 )
-- self:ForceRefresh()
-- 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_AddCritDamage("thtd_kanako_04_crit_999")
end
function public:OnStackCountChanged( iStackCount )
-- 双端触发iStackCount为改变前的层数
if not IsServer() then return end
local caster = self:GetParent()
if self:GetStackCount() == 5 then
caster:THTD_AddCritDamage(power999_bonus, "thtd_kanako_04_crit_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 abilityName == "thtd_kanako_02" then
return params.ability:GetLevelSpecialValueNoOverride(valueName, specialLevel) * power_bonus[abilityName][level][valueName]
elseif abilityName == "thtd_kanako_04" then
if valueName == "power_damage1" or valueName == "power_damage2" then
return params.ability:GetLevelSpecialValueNoOverride(valueName, specialLevel) * (1 + power_bonus[abilityName][level][valueName] / 100)
else
return params.ability:GetLevelSpecialValueNoOverride(valueName, specialLevel) + power_bonus[abilityName][level][valueName]
end
end
end