|  |  |  | 
|---|
|  |  |  | #!/usr/bin/python | 
|---|
|  |  |  | # -*- coding: GBK -*- | 
|---|
|  |  |  | # | 
|---|
|  |  |  | # @todo: 攻击有xx%几率附加xx%技能伤害,持续xx秒 | 
|---|
|  |  |  | # @todo: 攻击有xx%几率附加xx%技能伤害,持续xx秒, 附加目标处于XX状态 | 
|---|
|  |  |  | # | 
|---|
|  |  |  | # @author: Alee | 
|---|
|  |  |  | # @date 2018-1-30 下午05:11:45 | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import ChConfig | 
|---|
|  |  |  | import GameWorld | 
|---|
|  |  |  | import PassiveBuffEffMng | 
|---|
|  |  |  | import GameObj | 
|---|
|  |  |  | import SkillCommon | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs): | 
|---|
|  |  |  | curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID) | 
|---|
|  |  |  | if not curSkill: | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | buffType = SkillCommon.GetBuffType(curSkill) | 
|---|
|  |  |  | buffTuple = SkillCommon.GetBuffManagerByBuffType(attacker, buffType) | 
|---|
|  |  |  | #通过类型获取目标的buff管理器为空,则跳出 | 
|---|
|  |  |  | if buffTuple == (): | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | buffManager = buffTuple[0] | 
|---|
|  |  |  | buff = buffManager.FindBuff(skillID) | 
|---|
|  |  |  | if not buff: | 
|---|
|  |  |  | return | 
|---|
|  |  |  | return GameWorld.CanHappen(buff.GetValue()) | 
|---|
|  |  |  | if passiveEffect.GetEffectValue(2) and defender: | 
|---|
|  |  |  | if not GameObj.GetPyPlayerState(defender, passiveEffect.GetEffectValue(2)): | 
|---|
|  |  |  | #GameWorld.DebugLog("状态触发----%s"%effect.GetEffectValue(1)) | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return GameWorld.CanHappen(passiveEffect.GetEffectValue(1)) | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetValue(attacker, defender, passiveEffect): | 
|---|
|  |  |  | return float(passiveEffect.GetEffectValue(0))/ChConfig.Def_MaxRateValue | 
|---|
|  |  |  | return passiveEffect.GetEffectValue(0) | 
|---|