#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#
|
#
|
##@package Buff_801
|
# @todo: ÷è÷ë¶Ü£¬ÎüÊÕXX%É˺¦£¬»¤¶ÜÎüÊÕÉ˺¦´ïµ½ÑªÁ¿ÉÏÏÞµÄxx%Öµ»òÕß3Ãëºó±¬·¢ËùÎüÊÕµÄÉ˺¦
|
#
|
# @author Alee
|
# @date 2017-10-31 14:10
|
# @version 1.0
|
#
|
#---------------------------------------------------------------------
|
"""Version = 2017-10-31 14:10"""
|
|
|
import IPY_GameWorld
|
import GameWorld
|
import ChConfig
|
import SkillShell
|
import PassiveBuffEffMng
|
import PySkillManager
|
import GameObj
|
|
#===============================================================================
|
# ## ¸ù¾ÝÊÍ·Å·½µÄÊôÐÔÌí¼ÓЧ¹û
|
# # @param defender Buff³ÐÊÜÕß
|
# # @param curEffect ¼¼ÄÜЧ¹û
|
# # @param calcDict ¼¼ÄÜЧ¹ûÀÛ¼Ó×ܱí
|
# # @return None
|
# def OnCalcBuffEx(curObj, curEffect, calcDict, curBuff):
|
# GameWorld.DebugLog("801 ǰ OnCalcBuffEx-------------%s"%curEffect.GetEffectValue(0))
|
# buffValue = curEffect.GetEffectValue(0) + PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(
|
# curObj, None, curBuff.GetSkill(), ChConfig.TriggerType_AbsorbShield)
|
# GameWorld.DebugLog("801 ǰ OnCalcBuffEx------buffValue-------%s"%buffValue)
|
# # ÎüÊÕÉ˺¦±ÈÂÊ£¬ SetAtkAbsorb¼Ç¼ÒÑÎüÊÕÉ˺¦Öµ
|
# curObj.SetDefanceAbsorb(buffValue)
|
# maxValue = int(curEffect.GetEffectValue(1)/float(ChConfig.Def_MaxRateValue)*GameObj.GetMaxHP(curObj))
|
# curObj.SetAtkAbsorb(maxValue)
|
# return
|
#
|
#
|
# ## ·µ»ØbuffÀàÐÍ£¬ÏßÐÔÓë·ñ
|
# # @param None
|
# # @return ÏßÐÔ
|
# # @remarks º¯ÊýÏêϸ˵Ã÷.
|
# def GetCalcType():
|
# return ChConfig.TYPE_Linear
|
#===============================================================================
|
|
## Ìí¼ÓBUFFºóµÄÂß¼
|
# @param None
|
# @return None
|
def DoAddBuffOver(curObj, addBuff, curEffect, tick):
|
buffValue = curEffect.GetEffectValue(0) + PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(
|
curObj, None, addBuff.GetSkill(), ChConfig.TriggerType_AbsorbShield)
|
# Õ½¶·ÊôÐÔ ÔÚˢеÄʱºò»áÇå¿Õ£¬²»ÄÜÓÃÔڴ˺¯ÊýÖÐ
|
curObj.SetDict(ChConfig.Def_PlayerKey_AbsorbShieldValue, buffValue) # ÎüÊÕµÄÉ˺¦°Ù·Ö±È
|
maxValue = int(curEffect.GetEffectValue(1)/float(ChConfig.Def_MaxRateValue)*GameObj.GetMaxHP(curObj))
|
curObj.SetDict(ChConfig.Def_PlayerKey_AbsorbShieldMax, maxValue) # ÎüÊÕÉÏÏÞÖµ
|
|
return
|
|
##ÎüÊÕÉ˺¦°Ù·Ö±È
|
# @param attacker ¹¥»÷ÕßʵÀý
|
# @param curSkill ¼¼ÄÜʵÀý
|
# @param curEffect µ±Ç°¼¼ÄÜЧ¹û1
|
# @return ×ÜÖµ
|
def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict):
|
if not changeBuffValueDict:
|
return []
|
|
return [changeBuffValueDict.get(i, 0) for i in range(ChConfig.Def_BuffValue_Count)]
|
|
def OnBuffDisappear(curObj, curSkill, curBuff, curEffect, tick):
|
if not curObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShield):
|
curObj.SetDict(ChConfig.Def_PlayerKey_AbsorbShieldValue, 0) # ÎüÊÕµÄÉ˺¦°Ù·Ö±È
|
curObj.SetDict(ChConfig.Def_PlayerKey_AbsorbShieldMax, 0) # ÎüÊÕÉÏÏÞÖµ
|
curObj.SetDict(ChConfig.Def_PlayerKey_AbsorbShield, 0)
|
return
|
|
#Ч¹ûÖµ µÚÈý¸öֵΪ¼¼ÄÜID
|
boomID = curEffect.GetEffectValue(2)
|
skillData = GameWorld.GetGameData().GetSkillBySkillID(boomID)
|
if not skillData:
|
curObj.SetDict(ChConfig.Def_PlayerKey_AbsorbShieldValue, 0) # ÎüÊÕµÄÉ˺¦°Ù·Ö±È
|
curObj.SetDict(ChConfig.Def_PlayerKey_AbsorbShieldMax, 0) # ÎüÊÕÉÏÏÞÖµ
|
curObj.SetDict(ChConfig.Def_PlayerKey_AbsorbShield, 0)
|
return
|
|
# ´æ´¢ÆðÀ´ÓÃÓÚÉ˺¦
|
curObj.SetDict(ChConfig.Def_PlayerKey_MoreHurtValue,
|
curObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShield))
|
|
SkillShell.Trigger_UseSkill(curObj, None, skillData, tick, curObj.GetPosX(), curObj.GetPosY())
|
curObj.SetDict(ChConfig.Def_PlayerKey_MoreHurtValue, 0)
|
|
curObj.SetDict(ChConfig.Def_PlayerKey_AbsorbShieldValue, 0) # ÎüÊÕµÄÉ˺¦°Ù·Ö±È
|
curObj.SetDict(ChConfig.Def_PlayerKey_AbsorbShieldMax, 0) # ÎüÊÕÉÏÏÞÖµ
|
curObj.SetDict(ChConfig.Def_PlayerKey_AbsorbShield, 0)
|
return
|