| | |
| | | import TurnPassive
|
| | | import TurnAttack
|
| | | import TurnBuff
|
| | | import ObjPool
|
| | | import FBLogic
|
| | |
|
| | | import random
|
| | |
| | | objID, skillID, len(tagObjList), batType, bySkillID, curBatObj.GetHP(), curBatObj.GetMaxHP(), angerOverflow, curXP, oneActionUseCnt)
|
| | | # 以下为技能可以使用的处理,之后的逻辑默认技能使用成功
|
| | |
|
| | | poolMgr = ObjPool.GetPoolMgr()
|
| | | usePoolSkill = False
|
| | | if isinstance(useSkill, IpyGameDataPY.IPY_Skill):
|
| | | usePoolSkill = True
|
| | | # 统一使用 BattleObj.PySkill
|
| | | useSkill = poolMgr.acquire(BattleObj.PySkill, useSkill, objID)
|
| | | useSkill = BattleObj.PySkill(useSkill, objID)
|
| | |
|
| | | useSkill.ResetUseRec()
|
| | | useSkill.SetTagObjList(tagObjList)
|
| | |
| | |
|
| | | # 最后重置、回收对象
|
| | | useSkill.ResetUseRec()
|
| | | if usePoolSkill:
|
| | | poolMgr.release(useSkill)
|
| | | return True
|
| | |
|
| | | def CheckSkillUseCntLimit(batObj, useSkill):
|
| | |
| | | # hurtValue *= (10000 + FinalDamPer) / 10000.0
|
| | | # GameWorld.DebugLogEx(" 增伤: hurtValue=%s,FinalDamPer=%s", hurtValue, FinalDamPer)
|
| | |
|
| | | poolMgr = ObjPool.GetPoolMgr()
|
| | | useSkill = poolMgr.acquire(BattleObj.PySkill, skillIpyData, atkID)
|
| | | useSkill = BattleObj.PySkill(skillIpyData, atkID)
|
| | | useSkill.SetTagObjList([defObj])
|
| | | useSkill.SetBatType(ChConfig.TurnBattleType_Cot)
|
| | |
|
| | |
| | | Sync_TurnFightTag(turnFight, useTag, 1)
|
| | |
|
| | | useSkill.ResetUseRec()
|
| | | poolMgr.release(useSkill)
|
| | | return
|
| | |
|
| | | def SkillModule_6(turnFight, curBatObj, useSkill, opType):
|
| | |
| | | hurtValue *= (10000 + FinalDamPer) / 10000.0
|
| | | GameWorld.DebugLogEx(" 增伤: hurtValue=%s,FinalDamPer=%s", hurtValue, FinalDamPer)
|
| | |
|
| | | poolMgr = ObjPool.GetPoolMgr()
|
| | | useSkill = poolMgr.acquire(BattleObj.PySkill, skillIpyData, atkID)
|
| | | useSkill = BattleObj.PySkill(skillIpyData, atkID)
|
| | | useSkill.SetTagObjList([defObj])
|
| | | useSkill.SetBatType(ChConfig.TurnBattleType_Dot)
|
| | |
|
| | |
| | | Sync_TurnFightTag(turnFight, useTag, 1)
|
| | |
|
| | | useSkill.ResetUseRec()
|
| | | poolMgr.release(useSkill)
|
| | | return
|
| | |
|
| | | def Sync_TurnFightTag(turnFight, useTag, sign):
|
| | | ## 通知技能标签
|
| | | clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCTurnFightTag)
|
| | | clientPack = ChPyNetSendPack.tagSCTurnFightTag()
|
| | | clientPack.Tag = useTag
|
| | | clientPack.Len = len(clientPack.Tag)
|
| | | clientPack.Sign = sign
|
| | |
| | | ## 通知释放技能
|
| | | bySkill = useSkill.GetBySkill()
|
| | | relatedSkillID = bySkill.GetSkillID() if bySkill else 0
|
| | | poolMgr = ObjPool.GetPoolMgr()
|
| | | clientPack = poolMgr.acquire(ChPyNetSendPack.tagSCUseSkill)
|
| | | clientPack = ChPyNetSendPack.tagSCUseSkill()
|
| | | clientPack.ObjID = curBatObj.GetID()
|
| | | clientPack.PMType = GetPMType(curBatObj, useSkill)
|
| | | clientPack.BattleType = useSkill.GetBatType()
|
| | |
| | | # 技能的主要伤害
|
| | | clientPack.HurtList = []
|
| | | for hurtObj in useSkill.GetHurtObjList():
|
| | | hurt = poolMgr.acquire(ChPyNetSendPack.tagSCUseSkillHurt)
|
| | | hurt = ChPyNetSendPack.tagSCUseSkillHurt()
|
| | | hurt.ObjID = hurtObj.GetObjID()
|
| | | hurt.AttackTypes = hurtObj.GetHurtTypes()
|
| | | hurt.HurtHP = hurtObj.GetHurtHP() % ChConfig.Def_PerPointValue
|
| | |
| | | hurt.HurtListEx = []
|
| | | # 单个伤害的额外伤害,如弹射+平摊伤害
|
| | | for hurtObjEx in hurtObj.GetHurtObjListEx():
|
| | | hurtEx = poolMgr.acquire(ChPyNetSendPack.tagSCUseSkillHurtEx)
|
| | | hurtEx = ChPyNetSendPack.tagSCUseSkillHurtEx()
|
| | | hurtEx.ObjID = hurtObjEx.GetObjID()
|
| | | hurtEx.AttackTypes = hurtObjEx.GetHurtTypes()
|
| | | hurtEx.HurtHP = hurtObjEx.GetHurtHP() % ChConfig.Def_PerPointValue
|
| | |
| | | # 技能的额外伤害,如常规技能的平摊伤害
|
| | | clientPack.HurtListEx = []
|
| | | for hurtObjEx in useSkill.GetHurtObjListEx():
|
| | | hurtEx = poolMgr.acquire(ChPyNetSendPack.tagSCUseSkillHurtEx)
|
| | | hurtEx = ChPyNetSendPack.tagSCUseSkillHurtEx()
|
| | | hurtEx.ObjID = hurtObjEx.GetObjID()
|
| | | hurtEx.AttackTypes = hurtObjEx.GetHurtTypes()
|
| | | hurtEx.HurtHP = hurtObjEx.GetHurtHP() % ChConfig.Def_PerPointValue
|
| | |
| | | if not clientPack.HurtList:
|
| | | for tagObj in useSkill.GetTagObjList():
|
| | | tagID = tagObj.GetID()
|
| | | hurt = poolMgr.acquire(ChPyNetSendPack.tagSCUseSkillHurt)
|
| | | hurt = ChPyNetSendPack.tagSCUseSkillHurt()
|
| | | hurt.ObjID = tagID
|
| | | hurt.CurHP = tagObj.GetHP() % ChConfig.Def_PerPointValue
|
| | | hurt.CurHPEx = tagObj.GetHP() / ChConfig.Def_PerPointValue
|
| | |
| | | if attrID not in ChConfig.CDBRefresh_AttrIDDict:
|
| | | return
|
| | | refreshType, isBig = ChConfig.CDBRefresh_AttrIDDict[attrID]
|
| | | poolMgr = ObjPool.GetPoolMgr()
|
| | | clientPack = poolMgr.acquire(ChPyNetSendPack.tagSCObjPropertyRefreshView)
|
| | | clientPack = ChPyNetSendPack.tagSCObjPropertyRefreshView()
|
| | | clientPack.ObjID = curBatObj.GetID()
|
| | | clientPack.RefreshType = refreshType
|
| | | clientPack.AttackTypes = hurtTypes
|
| | |
| | |
|
| | | def Sync_HPRefresh(turnFight, curBatObj):
|
| | | hp, maxHP = curBatObj.GetHP(), curBatObj.GetMaxHP()
|
| | | clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCObjHPRefresh)
|
| | | clientPack = ChPyNetSendPack.tagSCObjHPRefresh()
|
| | | clientPack.ObjID = curBatObj.GetID()
|
| | | clientPack.HP = hp % ShareDefine.Def_PerPointValue
|
| | | clientPack.HPEx = hp / ShareDefine.Def_PerPointValue
|