260 lines
6.2 KiB
Lua
260 lines
6.2 KiB
Lua
local BattleSkillEntity = require "app/userdata/battle/skill/battle_skill_entity"
|
|
|
|
local BattleUnitEntity = class("BattleUnitEntity", BaseData)
|
|
|
|
function BattleUnitEntity:ctor()
|
|
end
|
|
|
|
function BattleUnitEntity:init(unitData, side, team)
|
|
self.unitData = unitData
|
|
self.side = side
|
|
self.team = team
|
|
self:initSkill()
|
|
end
|
|
|
|
function BattleUnitEntity:initSkill()
|
|
self.activeSkills = {}
|
|
if self.unitData.normalSkill then
|
|
self.normalSkill = BattleSkillEntity:create(self.unitData.normalSkill, GConst.BattleConst.SKILL_TYPE_NORMAL, self)
|
|
end
|
|
if self.unitData.assistingSkill then
|
|
self.assistingSkill = BattleSkillEntity:create(self.unitData.assistingSkill, GConst.BattleConst.SKILL_TYPE_ASSISTING, self)
|
|
end
|
|
if self.unitData.activeSkills then
|
|
for k, v in ipairs(self.unitData.activeSkills) do
|
|
local skill = BattleSkillEntity:create(v, GConst.BattleConst.SKILL_TYPE_ACTIVE, self)
|
|
table.insert(self.activeSkills, skill)
|
|
end
|
|
end
|
|
end
|
|
|
|
function BattleUnitEntity:getIsBoss()
|
|
return self.unitData.isBoss
|
|
end
|
|
|
|
function BattleUnitEntity:addSkill(skillId)
|
|
local skillInfo = ConfigManager:getConfig("skill")[skillId]
|
|
if skillInfo == nil then
|
|
return nil
|
|
end
|
|
if skillInfo.effect_type == 1 then -- 主动技能
|
|
local skill = BattleSkillEntity:create(skillId, GConst.BattleConst.SKILL_TYPE_ACTIVE, self)
|
|
table.insert(self.activeSkills, skill)
|
|
return skill
|
|
else -- 被动技能
|
|
if self.passiveSkills == nil then
|
|
self.passiveSkills = {}
|
|
end
|
|
local skill = BattleSkillEntity:create(skillId, GConst.BattleConst.SKILL_TYPE_PASSIVE, self)
|
|
table.insert(self.passiveSkills, skill)
|
|
return skill
|
|
end
|
|
return nil
|
|
end
|
|
|
|
function BattleUnitEntity:removeSkill(skillId, sid)
|
|
local skillInfo = ConfigManager:getConfig("skill")[skillId]
|
|
if skillInfo == nil then
|
|
return nil
|
|
end
|
|
if skillInfo.effect_type == 1 then -- 主动技能
|
|
for k, v in ipairs(self.activeSkills) do
|
|
if v:getSid() == sid then
|
|
return table.remove(self.activeSkills, k)
|
|
end
|
|
end
|
|
else -- 被动技能
|
|
if self.passiveSkills then
|
|
for k, v in ipairs(self.passiveSkills) do
|
|
if v:getSid() == sid then
|
|
return table.remove(self.passiveSkills, k)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
function BattleUnitEntity:addAttr(name, num, isPercent)
|
|
return self.team:addAttr(name, num, isPercent)
|
|
end
|
|
|
|
function BattleUnitEntity:getModelId()
|
|
return self.unitData.modelId
|
|
end
|
|
|
|
function BattleUnitEntity:getMatchType()
|
|
return self.unitData.matchType
|
|
end
|
|
|
|
function BattleUnitEntity:getSide()
|
|
return self.side
|
|
end
|
|
|
|
function BattleUnitEntity:setIsMainUnit(isMainUnit)
|
|
self.isMainUnit = isMainUnit
|
|
end
|
|
|
|
function BattleUnitEntity:getIsMainUnit()
|
|
return self.isMainUnit
|
|
end
|
|
|
|
function BattleUnitEntity:getNormalSkill()
|
|
return self.normalSkill
|
|
end
|
|
|
|
function BattleUnitEntity:getAssistingSkill()
|
|
return self.assistingSkill
|
|
end
|
|
|
|
function BattleUnitEntity:getActiveSkillCount()
|
|
return #self.activeSkills
|
|
end
|
|
|
|
function BattleUnitEntity:getAvailableActiveSkill(index)
|
|
local skill = self.activeSkills[index]
|
|
if skill:getIsAvailable() then
|
|
return skill
|
|
end
|
|
return nil
|
|
end
|
|
|
|
function BattleUnitEntity:getActiveSkill(index)
|
|
return self.activeSkills[index]
|
|
end
|
|
|
|
function BattleUnitEntity:getNormalSkillCount()
|
|
return self.unitData.normalSkillCount or 0
|
|
end
|
|
|
|
function BattleUnitEntity:getNormalSkillNameList()
|
|
local count = self.unitData.normalSkillCount or 0
|
|
if self.normalSkillNameList == nil then
|
|
self.normalSkillNameList = {}
|
|
for i = 1, count do
|
|
table.insert(self.normalSkillNameList, DataManager.BattleData:getNormalAttackName(i))
|
|
end
|
|
end
|
|
return self.normalSkillNameList, count
|
|
end
|
|
|
|
function BattleUnitEntity:getPassiveSkills()
|
|
return self.passiveSkills
|
|
end
|
|
|
|
function BattleUnitEntity:changeActiveSkillId(originSkillId, tartgetSkillId)
|
|
for _, skillEntity in ipairs(self.activeSkills) do
|
|
if skillEntity:getSkillid() == originSkillId then
|
|
skillEntity:changeSkillId(tartgetSkillId)
|
|
local extraCount = self.skillExtraUseTimes[originSkillId]
|
|
if extraCount then
|
|
self.skillExtraUseTimes[tartgetSkillId] = extraCount
|
|
end
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
function BattleUnitEntity:addActiveSkillParams(skillId, effect)
|
|
for _, skillEntity in ipairs(self.activeSkills) do
|
|
if skillEntity:getSkillid() == skillId then
|
|
skillEntity:addSkillEffectParams(effect)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
function BattleUnitEntity:addActiveSkillRound(skillId, effect)
|
|
for _, skillEntity in ipairs(self.activeSkills) do
|
|
if skillEntity:getSkillid() == skillId then
|
|
skillEntity:addSkillEffectRound(effect)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
function BattleUnitEntity:takeDamageOrCure(num)
|
|
return self.team:takeDamageOrCure(num)
|
|
end
|
|
|
|
function BattleUnitEntity:getHp()
|
|
return self.team:getHp()
|
|
end
|
|
|
|
function BattleUnitEntity:getHpPercent()
|
|
return self.team:getHpPercent()
|
|
end
|
|
|
|
function BattleUnitEntity:getAtk()
|
|
return self.team:getAtk(self.unitData.matchType)
|
|
end
|
|
|
|
function BattleUnitEntity:getDmgAddition()
|
|
return self.team:getDmgAddition(self.unitData.matchType)
|
|
end
|
|
|
|
function BattleUnitEntity:getDmgDec()
|
|
return self.team:getDmgDec(self.unitData.matchType)
|
|
end
|
|
|
|
function BattleUnitEntity:getWeakness()
|
|
return self.team:getWeakness(self.unitData.matchType)
|
|
end
|
|
|
|
function BattleUnitEntity:getCrit()
|
|
return self.team:getCrit()
|
|
end
|
|
|
|
function BattleUnitEntity:getCrittime()
|
|
return self.team:getCrittime()
|
|
end
|
|
|
|
function BattleUnitEntity:getCureAddition()
|
|
return self.team:getCureAddition()
|
|
end
|
|
|
|
function BattleUnitEntity:getNormalAttackAddCount()
|
|
return self.team:getNormalAttackAddCount()
|
|
end
|
|
|
|
function BattleUnitEntity:addLimit(name)
|
|
self.team:addLimit(name)
|
|
end
|
|
|
|
function BattleUnitEntity:removeLimit(name)
|
|
self.team:removeLimit(name)
|
|
end
|
|
|
|
function BattleUnitEntity:addShield(num)
|
|
self.team:addShield(num)
|
|
end
|
|
|
|
function BattleUnitEntity:getShieldHp()
|
|
return self.team:getShieldHp()
|
|
end
|
|
|
|
function BattleUnitEntity:addMaxHp(num)
|
|
self.team:addMaxHp(num)
|
|
end
|
|
|
|
function BattleUnitEntity:addSkillExtraUseTimes(skillId, count)
|
|
if self.skillExtraUseTimes == nil then
|
|
self.skillExtraUseTimes = {}
|
|
end
|
|
self.skillExtraUseTimes[skillId] = (self.skillExtraUseTimes[skillId] or 0) + count
|
|
end
|
|
|
|
function BattleUnitEntity:getSkillExtraUseTimes(skillId)
|
|
if self.skillExtraUseTimes == nil then
|
|
return 0
|
|
end
|
|
return self.skillExtraUseTimes[skillId] or 0
|
|
end
|
|
|
|
function BattleUnitEntity:onRoundEnd()
|
|
for k, v in ipairs(self.activeSkills) do
|
|
v:cooldown()
|
|
end
|
|
end
|
|
|
|
return BattleUnitEntity |