#!/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
|