#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package Skill.TurnBuff # # @todo:»ØºÏÕ½¶·buff # @author hxp # @date 2025-08-06 # @version 1.0 # # ÏêϸÃèÊö: »ØºÏÕ½¶·buff # #------------------------------------------------------------------------------- #"""Version = 2025-08-06 18:30""" #------------------------------------------------------------------------------- import ChConfig import GameWorld import ChPyNetSendPack import ObjPool def OnAddBuff(turnFight, batObj, curSkill, buffOwner=None): skillID = curSkill.GetSkillID() enhanceBySkill = curSkill.GetEnhanceBySkill() relatedSkillID = enhanceBySkill.GetSkillID() if enhanceBySkill else 0 curID = batObj.GetID() ownerID = buffOwner.GetID() if buffOwner else curID GameWorld.DebugLog("OnAddBuff: curID=%s,skillID=%s,ownerID=%s,relatedSkillID=%s" % (curID, skillID, ownerID, relatedSkillID)) #¼ì²éÊÇ·ñ¼¸ÂÊ´¥·¢ if not enhanceBySkill: rate = curSkill.GetHappenRate() if rate and rate != ChConfig.Def_MaxRateValue and not GameWorld.CanHappen(rate, ChConfig.Def_MaxRateValue): GameWorld.DebugLog(" ¸ÅÂʲ»´¥·¢buff!") return skillTypeID = curSkill.GetSkillTypeID() # Ïȼòµ¥×öÏÂÄܼÓÉϼ´¿É buffMgr = batObj.GetBuffManager() buffIDList = buffMgr.FindBuffIDBySkillTypeID(skillTypeID) if buffIDList: GameWorld.DebugLog(" ÒѾ­´æÔÚ¸Ãbuff: skillTypeID=%s,buffIDList=%s" % (skillTypeID, buffIDList)) return True buff = buffMgr.AddBuff(skillID) if not buff: GameWorld.DebugLog(" Ìí¼Óbuffʧ°Ü! skillID=%s" % skillID) return False GameWorld.DebugLog(" AddBuffOK. buffID=%s" % buff.GetBuffID()) buff.SetOwnerID(ownerID) buff.SetRemainTime(curSkill.GetLastTime()) #buff.SetLayer() SyncBuffRefresh(turnFight, batObj, buff, relatedSkillID) return True def SyncBuffRefresh(turnFight, curBatObj, curBuff, relatedSkillID=0): clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCBuffRefresh) clientPack.ObjID = curBatObj.GetID() clientPack.BuffID = curBuff.GetBuffID() clientPack.SkillID = curBuff.GetSkillID() clientPack.RelatedSkillID = relatedSkillID clientPack.LastTime = curBuff.GetRemainTime() clientPack.Layer = curBuff.GetLayer() clientPack.OwnerID = curBuff.GetOwnerID() turnFight.addBatPack(clientPack) return def SyncBuffDel(turnFight, curBatObj, buffID, relatedSkillID=0): clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCBuffDel) clientPack.ObjID = curBatObj.GetID() clientPack.BuffID = buffID clientPack.RelatedSkillID = relatedSkillID turnFight.addBatPack(clientPack) return