117 lines
2.6 KiB
Plaintext
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 |