#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#
|
# @todo: buffÖеÖÏûdebuff²¢ÇÒ·´Éädebuff£¬²ã¼¶¾ö¶¨´ÎÊý
|
#
|
# @author: Alee
|
# @date 2018-1-9 ÏÂÎç09:39:37
|
# @version 1.0
|
#
|
# @note:
|
#
|
#---------------------------------------------------------------------
|
|
import ChConfig
|
import GameWorld
|
import SkillCommon
|
import BuffSkill
|
import IPY_GameWorld
|
|
def CheckCanHappen(attacker, defender, effect, tagSkill, **skillkwargs):
|
debuffState = effect.GetEffectValue(1)
|
if debuffState and debuffState != SkillCommon.GetBuffStateType(tagSkill):
|
return False
|
|
if effect.GetEffectValue(2):
|
if SkillCommon.GetBuffType(tagSkill) != ChConfig.Def_SkillBuffList.get(effect.GetEffectValue(2)):
|
return False
|
if not effect.GetEffectValue(0):
|
return True
|
return GameWorld.CanHappen(effect.GetEffectValue(0))
|
|
def DoLogic(attacker, defender, effect, tagSkill, skillID):
|
# ·´Éädebuff
|
if not defender:
|
return
|
|
findSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
|
if not findSkill:
|
return
|
|
buffType = SkillCommon.GetBuffType(findSkill)
|
buffTuple = SkillCommon.GetBuffManagerByBuffType(attacker, buffType)
|
if buffTuple == ():
|
return
|
|
buffManager = buffTuple[0]
|
findBuff = buffManager.FindBuffEx(skillID)
|
if not findBuff:
|
return
|
|
BuffSkill.SetBuffLayer(attacker, findBuff, findBuff.GetLayer()-1, skillTypeID=findSkill.GetSkillTypeID())
|
if defender.GetGameObjType() != IPY_GameWorld.gotPlayer:
|
# ²»·´µ¯NPC
|
return
|
|
# ¸ø¶Ô·½¼Óbuff
|
BuffSkill.DoAddBuff(defender, SkillCommon.GetBuffType(tagSkill), tagSkill,
|
GameWorld.GetGameWorld().GetTick(), [], attacker, addForce = True)
|
return
|
|