6603 【后端】【2.0】增加新版的sp和被动技能 - 改变技能特效
 
	
	
	
	
	
	
	
	
	
	
	
	
	
 |  |  | 
 |  |  |     
 | 
 |  |  |     #技能攻击
 | 
 |  |  |     skillID = curSkill.GetSkillID()
 | 
 |  |  |     changeSkillID = PassiveBuffEffMng.GetPassiveSkillValueByTriggerTypeEx(attacker, None, curSkill, ChConfig.TriggerType_ChangeSkillEff)
 | 
 |  |  |     if changeSkillID:
 | 
 |  |  |         skillID = changeSkillID
 | 
 |  |  |     battleType = AttackCommon.GetBattleType(attacker, curSkill)
 | 
 |  |  |     #无目标类技能
 | 
 |  |  |     if not defender:
 | 
 |  |  | 
 |  |  |     # ChangeAction(paAttack);
 | 
 |  |  |     # m_LastBattleTick = GetGameWorldManager()->GetTick();
 | 
 |  |  |     #===========================================================================
 | 
 |  |  |      | 
 |  |  |     sendPack = ChNetSendPack.tagUseSkillPos()
 | 
 |  |  |     sendPack.Clear()
 | 
 |  |  |     sendPack.ObjID = attacker.GetID()
 | 
 
 |  |  | 
 |  |  | TriggerType_SkillSuccessExpend, # 使用技能成功后不触发技能 处理消耗等问题用 87
 | 
 |  |  | TriggerType_ThumpSkillValue, # 重击增加技能固定值伤害 88
 | 
 |  |  | TriggerType_HitValue, # 记录命中个数 89
 | 
 |  |  | ) = range(1, 90)
 | 
 |  |  | TriggerType_ChangeSkillEff, # 改变技能特效广播 90
 | 
 |  |  | ) = range(1, 91)
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #不可以佩戴翅膀的地图
 | 
 
| New file | 
 |  |  | 
 |  |  | #!/usr/bin/python
 | 
 |  |  | # -*- coding: GBK -*-
 | 
 |  |  | #
 | 
 |  |  | ##@package
 | 
 |  |  | #
 | 
 |  |  | # @todo: 攻击方的最大生命百分比转化为固定伤害值
 | 
 |  |  | #
 | 
 |  |  | # @author: Alee
 | 
 |  |  | # @date 2019-6-18 下午09:24:04
 | 
 |  |  | # @version 1.0
 | 
 |  |  | #
 | 
 |  |  | # @note:  | 
 |  |  | #
 | 
 |  |  | #---------------------------------------------------------------------
 | 
 |  |  | import ChConfig
 | 
 |  |  | import GameObj
 | 
 |  |  | 
 | 
 |  |  | def CheckCanHappen(attacker, defender, effect, curSkill):
 | 
 |  |  |     return True
 | 
 |  |  |      | 
 |  |  | 
 | 
 |  |  | def GetValue(attacker, defender, effect, skillTypeID):
 | 
 |  |  |     if effect.GetEffectValue(1):
 | 
 |  |  |         return effect.GetEffectValue(1)
 | 
 |  |  |     return skillTypeID
 | 
 |  |  | 
 | 
 
 |  |  | 
 |  |  |              4107:ChConfig.TriggerType_SkillValue,   # 增加技能伤害固定值 82
 | 
 |  |  |              4108:ChConfig.TriggerType_SkillSuccess,  # 使用技能成功后不触发技能 处理消耗等问题用 87
 | 
 |  |  |              4109:ChConfig.TriggerType_SkillValue,   # 增加技能伤害固定值 82
 | 
 |  |  |              4110:ChConfig.TriggerType_ChangeSkillEff, # 改变技能特效
 | 
 |  |  |              }
 | 
 |  |  |     return tdict.get(effectID, -1) 
 | 
 |  |  |     #===========================================================================
 | 
 |  |  | 
 |  |  |     return True
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | # 被动技能改变值  无条件限制 纯取值
 | 
 |  |  | def GetPassiveSkillValueByTriggerTypeEx(attacker, defender, connSkill, triggerType):
 | 
 |  |  |     attacker = FindRealAttacker(attacker)
 | 
 |  |  |     if not attacker:
 | 
 |  |  |         return 0
 | 
 |  |  |      | 
 |  |  |     passiveEff = GetPassiveEffManager().GetPassiveEff(attacker)
 | 
 |  |  |     if not passiveEff:
 | 
 |  |  |         return 0
 | 
 |  |  |     connSkillID = connSkill.GetSkillTypeID() if connSkill else 0
 | 
 |  |  |     skills = passiveEff.GetPassiveSkillsByTriggerType(triggerType, connSkill)
 | 
 |  |  |     if not skills:
 | 
 |  |  |         return 0
 | 
 |  |  |      | 
 |  |  |     curValue = 0
 | 
 |  |  | 
 | 
 |  |  |     for skillTypeID, effectID in skills:
 | 
 |  |  |         if connSkillID == skillTypeID:
 | 
 |  |  |             continue
 | 
 |  |  |         curSkill = attacker.GetSkillManager().FindSkillBySkillTypeID(skillTypeID)
 | 
 |  |  |         if not curSkill:
 | 
 |  |  |             continue
 | 
 |  |  | 
 | 
 |  |  |         effect = SkillCommon.GetSkillEffectByEffectID(curSkill, effectID)
 | 
 |  |  |         if not effect:
 | 
 |  |  |             continue
 | 
 |  |  |         pyName = "PassiveSkill_%s" % effectID
 | 
 |  |  | 
 | 
 |  |  |         callFunc = GameWorld.GetExecFunc(PassiveBuff, "%s.%s" % (pyName, "CheckCanHappen"))
 | 
 |  |  |          | 
 |  |  |         # 条件不满足
 | 
 |  |  |         if callFunc and not callFunc(attacker, defender, effect, curSkill):
 | 
 |  |  |             continue
 | 
 |  |  |          | 
 |  |  |         callFunc = GameWorld.GetExecFunc(PassiveBuff, "%s.%s" % (pyName, "GetValue"))
 | 
 |  |  |         if callFunc is None:
 | 
 |  |  |             continue
 | 
 |  |  |          | 
 |  |  |         curValue += callFunc(attacker, defender, effect, skillTypeID)
 | 
 |  |  |          | 
 |  |  |     return curValue
 |