2683 子 天赋技能和新增双职业各两个技能 / 【后端】天赋技能 ----- 补齐第一版
| | |
| | | aNPCHurtAddPer = PlayerControl.GetNPCHurtAddPer(atkObj) # PVE伤害加成
|
| | | aDamagePerPVP = PlayerControl.GetDamagePerPVP(atkObj) # 外层PVP伤害加成
|
| | | aFinalHurtPer = PlayerControl.GetFinalHurtPer(atkObj) # 最外层伤害加成, 可能为负值
|
| | | aFinalHurtPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddFinalPer)
|
| | | |
| | | aFinalHurt = PlayerControl.GetFinalHurt(atkObj) # 最终固定伤害
|
| | | # 被动增加最终伤害
|
| | | aFinalHurt += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddFinalValue)
|
| | |
| | | TriggerType_AddBuffOver, # 添加buff之后触发技能 56
|
| | | TriggerType_StormAttackOver, # 类剑刃风暴每攻击一次触发技能 57
|
| | | TriggerType_StormAttackReduceCD, # 类剑刃风暴攻击每攻击一次减少CD 58
|
| | | ) = range(1, 59)
|
| | | TriggerType_AttackAddFinalPer, #增加最终伤害百分比 59
|
| | | TriggerType_SummonDie, #自身召唤兽死亡触发技能 60
|
| | | ) = range(1, 61)
|
| | |
|
| | |
|
| | | # NPC功能类型定义
|
| | |
| | | # @remarks 函数详细说明.
|
| | | def OnNPCDie(curNPC,HurtType,HurtID):
|
| | | PassiveBuffEffMng.GetPassiveEffManager().RemovePassiveEff((curNPC.GetID(), IPY_GameWorld.gotNPC))
|
| | | |
| | | # 召唤NPC死亡触发被动技能
|
| | | owner = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, curNPC)
|
| | | if owner:
|
| | | PassiveBuffEffMng.OnPassiveSkillTrigger(owner, None, None, ChConfig.TriggerType_SummonDie,
|
| | | GameWorld.GetGameWorld().GetTick())
|
| | | |
| | | callFunc = GameWorld.GetExecFunc(NPCAI, "AIType_%d.%s"%(curNPC.GetAIType(), "OnDie"))
|
| | | if callFunc == None:
|
| | | return None
|
| | |
| | | # @param curNPC NPC实例
|
| | | # @param summonID 召唤兽的NPCID
|
| | | # @return 召唤兽数量
|
| | | def GetSummonCountByNPCID(curNPC, summonID):
|
| | | def GetSummonCountByNPCID(gameObj, summonID):
|
| | | count = 0
|
| | | for i in range(0, curNPC.GetSummonCount()):
|
| | | summonNPC = curNPC.GetSummonNPCAt(i)
|
| | | for i in range(0, gameObj.GetSummonCount()):
|
| | | summonNPC = gameObj.GetSummonNPCAt(i)
|
| | |
|
| | | if not summonNPC:
|
| | | continue
|
| | |
| | | import GameWorld
|
| | | import SkillCommon
|
| | | import BuffSkill
|
| | | import SkillShell
|
| | | import IPY_GameWorld
|
| | |
|
| | | def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
|
| | | curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
|
| | |
| | | if buff.GetLayer() <= 0:
|
| | | return False
|
| | |
|
| | | rate = passiveEffect.GetEffectValue(0)
|
| | | if rate and not GameWorld.CanHappen(rate):
|
| | | return False
|
| | | |
| | | BuffSkill.SetBuffLayer(attacker, buff, buff.GetLayer()-1, skillTypeID=curSkill.GetSkillTypeID())
|
| | | |
| | | triggerSkillID = passiveEffect.GetEffectValue(1)
|
| | | if triggerSkillID and attacker.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | skillManager = attacker.GetSkillManager()
|
| | | #获得技能
|
| | | curSkill = skillManager.FindSkillBySkillTypeID(triggerSkillID)
|
| | | if curSkill:
|
| | | #玩家技能会升级
|
| | | SkillShell.UsePassiveTriggerSkill(attacker, curSkill, defender, GameWorld.GetGameWorld().GetTick(), isEnhanceSkill = True)
|
| | | else:
|
| | | triggerSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
|
| | | if triggerSkill:
|
| | | SkillShell.UsePassiveTriggerSkill(attacker, triggerSkill, defender, GameWorld.GetGameWorld().GetTick(), isEnhanceSkill = True)
|
| | | return True
|
| | |
|
| | |
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #
|
| | | ##@package
|
| | | #
|
| | | # @todo: 攻击增加最终伤害百分比
|
| | | #
|
| | | # @author: Alee
|
| | | # @date 2018-11-6 下午07:22:44
|
| | | # @version 1.0
|
| | | #
|
| | | # @note: |
| | | #
|
| | | #---------------------------------------------------------------------
|
| | |
|
| | |
|
| | |
|
| | | import ChConfig
|
| | | import GameWorld
|
| | | import GameObj
|
| | |
|
| | |
|
| | | def CheckCanHappen(attacker, defender, effect, curSkill):
|
| | | return GameWorld.CanHappen(effect.GetEffectValue(0))
|
| | | |
| | |
|
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | | return effect.GetEffectValue(1)
|
| | |
| | | 4059:ChConfig.TriggerType_StormAttackOneByOne, # 类剑刃风暴攻击1对1触发技能 57
|
| | | 4060:ChConfig.TriggerType_StormAttackOver, # 类剑刃风暴攻击后触发技能 57
|
| | | 4061:ChConfig.TriggerType_AttackOverPassive, # 攻击(对敌技能)后被动技能被触发在其他被动效果处理后调用,触发顺序原因
|
| | | 4062:ChConfig.TriggerType_AttackAddFinalPer, # 增加最终伤害百分比 59
|
| | | 4063:ChConfig.TriggerType_SummonDie, #自身召唤兽死亡触发技能 60
|
| | | }
|
| | | return tdict.get(effectID, -1)
|
| | | #===========================================================================
|