2025-06-04 05:02:57 +08:00

117 lines
2.6 KiB
Plaintext

SkillDynamicInfo = class("SkillDynamicInfo")
function SkillDynamicInfo:ctor()
--cost
self.costs = nil
--like role props
self.props = nil
--影響範圍
self.targetRange = 0
--改變技能目標數量
self.targetNumChange = 0
--readytime
self.changeready = 0
--使用不需要消耗道具
self.isNoItem = false
self._hasItemCostChange = false
end
function SkillDynamicInfo:SetServerInfo(serverData)
if serverData ~= nil then
self:Server_SetProps(serverData.attrs)
self:Server_SetCosts(serverData.cost)
if serverData.changerange then
self:Server_SetTargetRange(serverData.changerange/1000)
end
if serverData.changenum then
self:Server_SetTargetNumChange(serverData.changenum)
end
if serverData.changeready then
self:Server_SetChangeReady(serverData.changeready)
end
self:Server_SetNoItem(serverData.neednoitem)
end
end
function SkillDynamicInfo:Server_SetProps(serverAttrs)
if(self.props==nil) then
self.props = RolePropsContainer.new()
end
local props = self.props
local sdata
for i = 1, #serverAttrs do
sdata = serverAttrs[i]
if sdata ~= nil then
props:SetValueById(sdata.type,sdata.value)
end
end
end
function SkillDynamicInfo:Server_SetCosts(costs)
if(self.costs==nil) then
self.costs = {}
end
local cost,serverCost
for i=1,#costs do
serverCost = costs[i]
cost = self.costs[serverCost.itemid]
if(cost == nil) then
cost = {}
self.costs[serverCost.itemid] = cost
end
self._hasItemCostChange = true
cost[1] = serverCost.itemid
cost[2] = serverCost.changenum
cost[3] = serverCost.changeper/1000
end
end
function SkillDynamicInfo:Server_SetTargetRange( range )
self.targetRange = range
end
function SkillDynamicInfo:GetTargetRange()
return self.targetRange
end
function SkillDynamicInfo:Server_SetChangeReady( changeready )
self.changeready = changeready/1000
end
function SkillDynamicInfo:GetChangeReady()
return self.changeready
end
function SkillDynamicInfo:Server_SetTargetNumChange(change)
self.targetNumChange = change
end
function SkillDynamicInfo:GetTargetNumChange()
return self.targetNumChange
end
function SkillDynamicInfo:Server_SetNoItem(neednoitem)
self.isNoItem = neednoitem
end
function SkillDynamicInfo:GetIsNoItem()
return self.isNoItem
end
function SkillDynamicInfo:HasItemCostChange()
return self._hasItemCostChange
end
function SkillDynamicInfo:GetItemNewCost(itemid,originCost)
if self.isNoItem then
return 0
end
if(self.costs~=nil) then
local cost = self.costs[itemid]
if(cost) then
return math.floor(math.max(0,(originCost+cost[2])*(1+cost[3])))
end
end
return originCost
end