战斗中属性加密
This commit is contained in:
parent
960bf2eb5f
commit
e597b9f7be
@ -55,7 +55,7 @@ else
|
|||||||
end
|
end
|
||||||
GConst.UI_SCREEN_WIDTH = width
|
GConst.UI_SCREEN_WIDTH = width
|
||||||
GConst.UI_SCREEN_HEIGHT = height
|
GConst.UI_SCREEN_HEIGHT = height
|
||||||
|
GConst.NUMBER_ENCRYPTION_CONSTANT = 163
|
||||||
GConst.WAIT_NET_RSP_TIME = 8 -- 与服务器交互的等待回复时间
|
GConst.WAIT_NET_RSP_TIME = 8 -- 与服务器交互的等待回复时间
|
||||||
GConst.INVALID = -1
|
GConst.INVALID = -1
|
||||||
GConst.DEPTH_BUFFER = 24
|
GConst.DEPTH_BUFFER = 24
|
||||||
|
|||||||
@ -1742,4 +1742,12 @@ function GFunc.readOnlyTab(inputTable)
|
|||||||
return _read_only(inputTable)
|
return _read_only(inputTable)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function GFunc.encryptNumber(value)
|
||||||
|
return value + GConst.NUMBER_ENCRYPTION_CONSTANT
|
||||||
|
end
|
||||||
|
|
||||||
|
function GFunc.decryptNumber(value)
|
||||||
|
return value - GConst.NUMBER_ENCRYPTION_CONSTANT
|
||||||
|
end
|
||||||
|
|
||||||
return GFunc
|
return GFunc
|
||||||
@ -335,6 +335,8 @@ local BUFF_NAME = {
|
|||||||
BattleConst.BUFF_NAME = BUFF_NAME
|
BattleConst.BUFF_NAME = BUFF_NAME
|
||||||
|
|
||||||
local ATTR_NAME = {
|
local ATTR_NAME = {
|
||||||
|
HP = "hp",
|
||||||
|
MAX_HP = "max_hp",
|
||||||
ATK = "atk",
|
ATK = "atk",
|
||||||
ATK_RED = "atk_red",
|
ATK_RED = "atk_red",
|
||||||
ATK_YELLOW = "atk_yellow",
|
ATK_YELLOW = "atk_yellow",
|
||||||
|
|||||||
@ -23,14 +23,14 @@ function BattleTeamEntity:init(side, data)
|
|||||||
self.side = side
|
self.side = side
|
||||||
if self.baseAttr then
|
if self.baseAttr then
|
||||||
for k, v in pairs(self.baseAttr) do
|
for k, v in pairs(self.baseAttr) do
|
||||||
self.baseAttr[k] = 0
|
self:setBaseAttrValue(k, 0)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
self.baseAttr = {}
|
self.baseAttr = {}
|
||||||
end
|
end
|
||||||
if self.attr then
|
if self.attr then
|
||||||
for k, v in pairs(self.attr) do
|
for k, v in pairs(self.attr) do
|
||||||
self.attr[k] = 0
|
self:setAttrValue(k, 0)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
self.attr = {}
|
self.attr = {}
|
||||||
@ -83,50 +83,75 @@ function BattleTeamEntity:addUnit(unitData)
|
|||||||
return unit
|
return unit
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function BattleTeamEntity:getBaseAttrValue(name)
|
||||||
|
if not self.baseAttr[name] then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
return GFunc.decryptNumber(self.baseAttr[name])
|
||||||
|
end
|
||||||
|
|
||||||
|
function BattleTeamEntity:setBaseAttrValue(name, value)
|
||||||
|
value = value or 0
|
||||||
|
self.baseAttr[name] = GFunc.encryptNumber(value)
|
||||||
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:addBaseAttr(unitAttr)
|
function BattleTeamEntity:addBaseAttr(unitAttr)
|
||||||
for k, v in pairs(unitAttr) do
|
for k, v in pairs(unitAttr) do
|
||||||
self.baseAttr[k] = (self.baseAttr[k] or 0) + v
|
self:setBaseAttrValue(k, (self:getBaseAttrValue(k) or 0) + v)
|
||||||
self.attr[k] = (self.attr[k] or 0) + v
|
self:setAttrValue(k, (self:getAttrValue(k) or 0) + v)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function BattleTeamEntity:getAttrValue(name, noDefault)
|
||||||
|
if not self.attr[name] then
|
||||||
|
if noDefault then
|
||||||
|
return
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return GFunc.decryptNumber(self.attr[name])
|
||||||
|
end
|
||||||
|
|
||||||
|
function BattleTeamEntity:setAttrValue(name, value)
|
||||||
|
value = value or 0
|
||||||
|
self.attr[name] = GFunc.encryptNumber(value)
|
||||||
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:addAttr(name, num, isPercent)
|
function BattleTeamEntity:addAttr(name, num, isPercent)
|
||||||
local addNum = 0
|
local addNum = 0
|
||||||
if isPercent then
|
if isPercent then
|
||||||
if self.attr[name] then
|
if self:getAttrValue(name, true) then
|
||||||
-- 百分比加减属性的时候如果是减少属性,则先取正数做计算,在减去此结果, 否则在做整除运算的时候,正数和负数整除后的绝对值会不一致
|
-- 百分比加减属性的时候如果是减少属性,则先取正数做计算,在减去此结果, 否则在做整除运算的时候,正数和负数整除后的绝对值会不一致
|
||||||
-- 例如150 // 100 = 1, -150 // 100 = -2, 导致添加和移除的时候计算的属性值不一样
|
-- 例如150 // 100 = 1, -150 // 100 = -2, 导致添加和移除的时候计算的属性值不一样
|
||||||
|
local attrValue = self:getAttrValue(name)
|
||||||
if num < 0 then
|
if num < 0 then
|
||||||
if self.baseAttr[name] then
|
if self:getBaseAttrValue(name) then
|
||||||
addNum = self.baseAttr[name] * -num // DEFAULT_FACTOR
|
addNum = self:getBaseAttrValue(name) * -num // DEFAULT_FACTOR
|
||||||
self.attr[name] = self.attr[name] - addNum
|
self:setAttrValue(name, attrValue - addNum)
|
||||||
else
|
else
|
||||||
addNum = self.attr[name] * -num // DEFAULT_FACTOR
|
addNum = attrValue * -num // DEFAULT_FACTOR
|
||||||
self.attr[name] = self.attr[name] - addNum
|
self:setAttrValue(name, attrValue - addNum)
|
||||||
end
|
end
|
||||||
addNum = -addNum
|
addNum = -addNum
|
||||||
else
|
else
|
||||||
if self.baseAttr[name] then
|
if self:getBaseAttrValue(name) then
|
||||||
addNum = self.baseAttr[name] * num // DEFAULT_FACTOR
|
addNum = self:getBaseAttrValue(name) * num // DEFAULT_FACTOR
|
||||||
self.attr[name] = self.attr[name] + addNum
|
self:setAttrValue(name, attrValue + addNum)
|
||||||
else
|
else
|
||||||
addNum = self.attr[name] * num // DEFAULT_FACTOR
|
addNum = attrValue * num // DEFAULT_FACTOR
|
||||||
self.attr[name] = self.attr[name] + addNum
|
self:setAttrValue(name, attrValue + addNum)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
addNum = num
|
addNum = num
|
||||||
local currNum = self.attr[name] or 0
|
local currNum = self:getAttrValue(name)
|
||||||
self.attr[name] = currNum + num
|
self:setAttrValue(name, currNum + num)
|
||||||
end
|
end
|
||||||
return addNum
|
return addNum
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:setAttr(name, num)
|
|
||||||
self.attr[name] = num
|
|
||||||
end
|
|
||||||
|
|
||||||
function BattleTeamEntity:getAllMembers()
|
function BattleTeamEntity:getAllMembers()
|
||||||
return self.members
|
return self.members
|
||||||
end
|
end
|
||||||
@ -136,60 +161,61 @@ function BattleTeamEntity:getMembersCount()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getHp()
|
function BattleTeamEntity:getHp()
|
||||||
return self.attr.hp
|
return self:getAttrValue(ATTR_NAME.HP)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getMaxHp()
|
function BattleTeamEntity:getMaxHp()
|
||||||
return self.attr.max_hp
|
return self:getAttrValue(ATTR_NAME.MAX_HP)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getHpPercent(hp)
|
function BattleTeamEntity:getHpPercent(hp)
|
||||||
hp = hp or self.attr.hp
|
local maxHp = self:getMaxHp()
|
||||||
return hp / self.attr.max_hp
|
hp = hp or self:getHp()
|
||||||
|
return hp / maxHp
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getAtk(matchType)
|
function BattleTeamEntity:getAtk(matchType)
|
||||||
return self.attr[MATCH_ATTACK_NAME[matchType]] or 0
|
return self:getAttrValue(MATCH_ATTACK_NAME[matchType])
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getDmgAddition(matchType)
|
function BattleTeamEntity:getDmgAddition(matchType)
|
||||||
return (self.attr.dmg_addition_all or 0) + (self.attr[MATCH_DMG_ADDITION_NAME[matchType]] or 0)
|
return self:getAttrValue(ATTR_NAME.DMG_ADDITION_ALL) + self:getAttrValue(MATCH_DMG_ADDITION_NAME[matchType])
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getDmgDec(matchType)
|
function BattleTeamEntity:getDmgDec(matchType)
|
||||||
return (self.attr.dmg_dec_all or 0) + (self.attr[MATCH_DMG_DEC_NAME[matchType]] or 0)
|
return self:getAttrValue(ATTR_NAME.DMG_DEC_ALL) + self:getAttrValue(MATCH_DMG_DEC_NAME[matchType])
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getDecDmg(matchType)
|
function BattleTeamEntity:getDecDmg(matchType)
|
||||||
return (self.attr.dec_dmg_all or 0) + (self.attr[MATCH_DEC_DMG_NAME[matchType]] or 0)
|
return self:getAttrValue(ATTR_NAME.DEC_DMG_ALL) + self:getAttrValue(MATCH_DEC_DMG_NAME[matchType])
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getWeakness(matchType)
|
function BattleTeamEntity:getWeakness(matchType)
|
||||||
return (self.attr.weakness_all or 0) + (self.attr[MATCH_WEAKNESS_NAME[matchType]] or 0)
|
return self:getAttrValue(ATTR_NAME.WEAKNESS_ALL) + self:getAttrValue(MATCH_WEAKNESS_NAME[matchType])
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getCrittime()
|
function BattleTeamEntity:getCrittime()
|
||||||
return self.attr.crit_time or 0
|
return self:getAttrValue(ATTR_NAME.CRIT_TIME)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getCrit()
|
function BattleTeamEntity:getCrit()
|
||||||
return self.attr.crit or 0
|
return self:getAttrValue(ATTR_NAME.CRIT)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getCureAddition()
|
function BattleTeamEntity:getCureAddition()
|
||||||
return self.attr.cure_addition or 0
|
return self:getAttrValue(ATTR_NAME.CURE_ADDITION)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getCureDec()
|
function BattleTeamEntity:getCureDec()
|
||||||
return self.attr.cure_dec or 0
|
return self:getAttrValue(ATTR_NAME.CURE_DEC)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getBeDmgToHeal()
|
function BattleTeamEntity:getBeDmgToHeal()
|
||||||
return self.attr.be_dmg_to_heal or 0
|
return self:getAttrValue(ATTR_NAME.BE_DMG_TO_HEAL)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getBeSucked()
|
function BattleTeamEntity:getBeSucked()
|
||||||
return self.attr.be_sucked or 0
|
return self:getAttrValue(ATTR_NAME.BE_SUCKED)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getUndeadHp()
|
function BattleTeamEntity:getUndeadHp()
|
||||||
@ -201,32 +227,32 @@ function BattleTeamEntity:setUndeadHp(hp)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getNormalAttackAddCount()
|
function BattleTeamEntity:getNormalAttackAddCount()
|
||||||
return self.attr[ATTR_NAME.NORMAL_ATTACK_COUNT] or 0
|
return self:getAttrValue(ATTR_NAME.NORMAL_ATTACK_COUNT)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getThorns()
|
function BattleTeamEntity:getThorns()
|
||||||
return self.attr[ATTR_NAME.THORNS] or 0
|
return self:getAttrValue(ATTR_NAME.THORNS)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getExpTime()
|
function BattleTeamEntity:getExpTime()
|
||||||
return self.attr.exp_time or 0
|
return self:getAttrValue(ATTR_NAME.EXP_TIME)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getFirstHand()
|
function BattleTeamEntity:getFirstHand()
|
||||||
return self.attr.first_hand or 0
|
return self:getAttrValue(ATTR_NAME.FIRST_HAND)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getDeathSummon()
|
function BattleTeamEntity:getDeathSummon()
|
||||||
return self.attr.death_summon or 0
|
return self:getAttrValue(ATTR_NAME.DEATH_SUMMON)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:addMaxHp(num)
|
function BattleTeamEntity:addMaxHp(num)
|
||||||
local hpBefore = self.attr.hp
|
local hpBefore = self:getHp()
|
||||||
local currPercent = hpBefore * DEFAULT_FACTOR // self.attr.max_hp
|
local currPercent = hpBefore * DEFAULT_FACTOR // self:getMaxHp()
|
||||||
self.attr.max_hp = self.attr.max_hp + self.baseAttr.max_hp * num // DEFAULT_FACTOR
|
self:setAttrValue(ATTR_NAME.MAX_HP, self:getMaxHp() + (self:getBaseAttrValue(ATTR_NAME.MAX_HP) or 0) * num // DEFAULT_FACTOR)
|
||||||
self.attr.hp = currPercent*self.attr.max_hp//DEFAULT_FACTOR
|
self:setAttrValue(ATTR_NAME.HP, currPercent * self:getMaxHp() // DEFAULT_FACTOR)
|
||||||
if self.attr.hp <= 0 and hpBefore > 0 then
|
if self:getHp() <= 0 and hpBefore > 0 then
|
||||||
self.attr.hp = 1
|
self:setAttrValue(ATTR_NAME.HP, 1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -295,23 +321,19 @@ function BattleTeamEntity:getShieldHp()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getShieldRebound()
|
function BattleTeamEntity:getShieldRebound()
|
||||||
return self.attr.shield_rebound or 0
|
return self:getAttrValue(ATTR_NAME.SHIELD_REBOUND)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getBlock()
|
function BattleTeamEntity:getBlock()
|
||||||
return self.attr.block or 0
|
return self:getAttrValue(ATTR_NAME.BLOCK)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getCounterAttack()
|
function BattleTeamEntity:getCounterAttack()
|
||||||
return self.attr.counterattack or 0
|
return self:getAttrValue(ATTR_NAME.COUNTER_ATTACK)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:getSkillHurt()
|
function BattleTeamEntity:getSkillHurt()
|
||||||
return self.attr.skill_hurt or 0
|
return self:getAttrValue(ATTR_NAME.SKILL_HURT)
|
||||||
end
|
|
||||||
|
|
||||||
function BattleTeamEntity:getAttrValue(attrName)
|
|
||||||
return self.attr[attrName] or 0
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleTeamEntity:takeDamageOrCure(num)
|
function BattleTeamEntity:takeDamageOrCure(num)
|
||||||
@ -324,23 +346,26 @@ function BattleTeamEntity:takeDamageOrCure(num)
|
|||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local hpBefore = self.attr.hp
|
local hpBefore = self:getHp()
|
||||||
self.attr.hp = self.attr.hp + num
|
self:setAttrValue(ATTR_NAME.HP, self:getHp() + num)
|
||||||
local hurtEventNum = 0
|
local hurtEventNum = 0
|
||||||
if self:getUndeadHp() > 0 and self.attr.hp <= 0 then
|
if self:getUndeadHp() > 0 and self:getHp() <= 0 then
|
||||||
self.attr.hp = self:getUndeadHp()
|
self:setAttrValue(ATTR_NAME.HP, self:getUndeadHp())
|
||||||
num = self:getUndeadHp() - hpBefore
|
num = self:getUndeadHp() - hpBefore
|
||||||
end
|
end
|
||||||
if self.attr.hp <= 0 then -- 死了
|
|
||||||
|
local hp = self:getHp()
|
||||||
|
local maxhp = self:getMaxHp()
|
||||||
|
if hp <= 0 then -- 死了
|
||||||
hurtEventNum = -hpBefore
|
hurtEventNum = -hpBefore
|
||||||
self.attr.hp = 0
|
self:setAttrValue(ATTR_NAME.HP, 0)
|
||||||
self:die()
|
self:die()
|
||||||
elseif self.attr.hp < self.attr.max_hp then
|
elseif hp < maxhp then
|
||||||
hurtEventNum = num
|
hurtEventNum = num
|
||||||
else -- 满血了
|
else -- 满血了
|
||||||
-- 这是加血
|
-- 这是加血
|
||||||
hurtEventNum = self.attr.max_hp - hpBefore
|
hurtEventNum = maxhp - hpBefore
|
||||||
self.attr.hp = self.attr.max_hp
|
self:setAttrValue(ATTR_NAME.HP, maxhp)
|
||||||
end
|
end
|
||||||
return hurtEventNum
|
return hurtEventNum
|
||||||
end
|
end
|
||||||
|
|||||||
@ -104,7 +104,7 @@ function BattleUnitEntity:addAttr(name, num, isPercent)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function BattleUnitEntity:setAttr(name, num)
|
function BattleUnitEntity:setAttr(name, num)
|
||||||
return self.team:setAttr(name, num)
|
return self.team:setAttrValue(name, num)
|
||||||
end
|
end
|
||||||
|
|
||||||
function BattleUnitEntity:getModelId()
|
function BattleUnitEntity:getModelId()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user