restructure
This commit is contained in:
128
game/scripts/vscripts/modifiers/power/modifier_ability_power_common.lua
Executable file
128
game/scripts/vscripts/modifiers/power/modifier_ability_power_common.lua
Executable file
@@ -0,0 +1,128 @@
|
||||
-- 此通用方法会加重资源消耗,改为单个
|
||||
|
||||
modifier_ability_power_common = class({})
|
||||
|
||||
local public = modifier_ability_power_common
|
||||
|
||||
local m_modifier_funcs=
|
||||
{
|
||||
MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL,
|
||||
MODIFIER_PROPERTY_OVERRIDE_ABILITY_SPECIAL_VALUE,
|
||||
-- 有个显示bug,_Description描述中引用了值名称的不会变,单独的会变
|
||||
}
|
||||
|
||||
-- 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.bDirty = true --本地时在其它函数不起作用
|
||||
|
||||
if IsServer() then
|
||||
-- local playerId = self:GetParent():GetPlayerOwnerID()
|
||||
-- CustomNetTables:SetTableValue("CustomGameInfo", "PowerAbilityValue"..tostring(playerId), GameRules.player_power_enabled[playerId])
|
||||
-- print("---- is Server")
|
||||
-- DeepPrintTable(GameRules.player_power_enabled[playerId])
|
||||
-- else --这里可以生效,但在其它函数里失效
|
||||
-- self:GetParent().PowerAbilityUpgrades = CustomNetTables:GetTableValue("CustomGameInfo", "PowerAbilityValue"..tostring(self:GetParent():GetPlayerOwnerID()))
|
||||
-- print("---- not Server")
|
||||
-- DeepPrintTable(self:GetParent().PowerAbilityUpgrades)
|
||||
end
|
||||
end
|
||||
|
||||
-- function public:OnCreated( kv )
|
||||
-- if not IsServer() then return end
|
||||
-- self:OnRefresh( kv )
|
||||
-- end
|
||||
|
||||
-- function public:OnRefresh( kv )
|
||||
-- -- 设置层数仅本地会触发,无层数设置为1层时不触发
|
||||
-- -- 使用 modifier:ForceRefresh() 会双端触发
|
||||
-- if not IsServer() then return end
|
||||
-- end
|
||||
|
||||
function public:GetModifierOverrideAbilitySpecial( params )
|
||||
-- 这两个必须在双端跑
|
||||
|
||||
if self:GetParent() == nil or params.ability == nil then
|
||||
return 0
|
||||
end
|
||||
|
||||
-- 本地取值失效,并且从NetTable取值后每次生成新的一张table,下同
|
||||
-- local hUpgrades = self:GetParent().PowerAbilityUpgrades
|
||||
-- if hUpgrades == nil then
|
||||
-- hUpgrades = CustomNetTables:GetTableValue("CustomGameInfo", "PowerAbilityValue"..tostring(self:GetParent():GetPlayerOwnerID()))
|
||||
-- print("---- hUpgrades == nil, CustomNetTables:GetTableValue")
|
||||
-- print(hUpgrades)
|
||||
-- end
|
||||
local hUpgrades = CustomNetTables:GetTableValue("CustomGameInfo", "PowerAbilityValue"..tostring(self:GetParent():GetPlayerOwnerID()))
|
||||
local szUnitName = self:GetParent():GetUnitName()
|
||||
local szAbilityName = params.ability:GetAbilityName()
|
||||
local szSpecialValueName = params.ability_special_value
|
||||
|
||||
if hUpgrades == nil or hUpgrades[szUnitName] == nil or hUpgrades[szUnitName][szAbilityName] == nil then
|
||||
return 0
|
||||
end
|
||||
|
||||
if hUpgrades[szUnitName][szAbilityName][szSpecialValueName] == nil then
|
||||
return 0
|
||||
end
|
||||
|
||||
return 1
|
||||
end
|
||||
|
||||
function public:GetModifierOverrideAbilitySpecialValue( params )
|
||||
-- 这两个必须在双端跑
|
||||
|
||||
local hUpgrades = CustomNetTables:GetTableValue("CustomGameInfo", "PowerAbilityValue"..tostring(self:GetParent():GetPlayerOwnerID()))
|
||||
local szUnitName = self:GetParent():GetUnitName()
|
||||
local szAbilityName = params.ability:GetAbilityName()
|
||||
local szSpecialValueName = params.ability_special_value
|
||||
local nSpecialLevel = params.ability_special_level
|
||||
if hUpgrades == nil or hUpgrades[szUnitName] == nil or hUpgrades[szUnitName][szAbilityName] == nil then
|
||||
return 0
|
||||
end
|
||||
|
||||
local flBaseValue = params.ability:GetLevelSpecialValueNoOverride(szSpecialValueName, nSpecialLevel)
|
||||
local SpecialValueUpgrade = hUpgrades[szUnitName][szAbilityName][szSpecialValueName]
|
||||
|
||||
if SpecialValueUpgrade ~= nil then
|
||||
return flBaseValue + SpecialValueUpgrade
|
||||
|
||||
-- 本地不起作用
|
||||
-- if self.bDirty == false and SpecialValueUpgrade["cached_result"] ~= nil and SpecialValueUpgrade["cached_result"][nSpecialLevel] ~= nil then
|
||||
-- print("---- return cached_result")
|
||||
-- return SpecialValueUpgrade["cached_result"][nSpecialLevel]
|
||||
-- end
|
||||
|
||||
-- local flResult = flBaseValue + SpecialValueUpgrade["value"]
|
||||
-- if SpecialValueUpgrade["cached_result"] == nil then
|
||||
-- SpecialValueUpgrade["cached_result"] = {}
|
||||
-- end
|
||||
-- SpecialValueUpgrade["cached_result"][nSpecialLevel] = flResult
|
||||
-- self.bDirty = false
|
||||
-- return flResult
|
||||
end
|
||||
|
||||
return flBaseValue
|
||||
end
|
||||
Reference in New Issue
Block a user