4997 【后端】【1.3】冰晶矿脉AI--技能指定NPCID使用
| | |
| | | #关系
|
| | | relation = GetTagRelation(attacker, defender, curSkill, tick)
|
| | | return relation[0] == ChConfig.Type_Relation_Friend
|
| | | elif curSkillUseTag == ChConfig.Def_UseSkillTag_AppointNPC:
|
| | | if defender and GameObj.GetHP(defender) > 0 :
|
| | | return True
|
| | | return False
|
| | |
|
| | | return __CheckCanAttack(attacker , defender , curSkill , tick)
|
| | |
|
| | |
| | | Def_Skill_Effect_AttackMove = 2100 # NPC位移战斗
|
| | | Def_Skill_Effect_RandSkill = 2101 # 从效果值获取随机技能
|
| | | Def_Skill_Effect_HPPerLimit = 2102 # 血量限制
|
| | |
|
| | | Def_Skill_Effect_AppointNPC = 2103 # 指定释放的NPCID 和 Def_UseSkillTag_AppointNPC 搭配使用
|
| | | #-----------
|
| | | #变身技能(召唤)效果ID
|
| | | Def_Skill_Effect_SummonMapNPC = 1162
|
| | |
| | | Def_UseSkillTag_SummonMaster, #召唤兽主人 12
|
| | | Def_UseSkillTag_CanAttackBaseNPC, #可攻击的野外小怪(含精英)怪物 13
|
| | | Def_UseSkillTag_FriendNPC, #友好NPC 14
|
| | | Def_UseSkillTag_AppointNPC, #指定NPC 15 必须和效果值配合 Def_Skill_Effect_AppointNPC
|
| | |
|
| | | ) = range( 0, Def_UseSkillTag_Type )
|
| | |
|
| | |
| | | Def_UseSkillTag_SummonMaster : [IPY_GameWorld.gotPlayer, IPY_GameWorld.gotNPC],
|
| | | Def_UseSkillTag_CanAttackBaseNPC : [IPY_GameWorld.gotNPC],
|
| | | Def_UseSkillTag_FriendNPC : [IPY_GameWorld.gotNPC],
|
| | | Def_UseSkillTag_AppointNPC : [IPY_GameWorld.gotNPC],
|
| | | }
|
| | |
|
| | |
|
| | |
| | | # @return 返回值真, 检查通过
|
| | | # @remarks 自定义函数, NPC使用有对象技能
|
| | | def NPCUseSkillTag(curNPC, curTag, curSkill, tick):
|
| | | skillTag = GetSkillAffectTag(curSkill)
|
| | | if skillTag == ChConfig.Def_UseSkillTag_AppointNPC:
|
| | | # 指定释放的NPCID 和 Def_UseSkillTag_AppointNPC 搭配使用
|
| | | curTag = GetAppointNPCBySkillEffect(curSkill)
|
| | | if not curTag:
|
| | | return False
|
| | | |
| | | if not NPCCanUseSkillTag(curNPC, curTag, curSkill, tick):
|
| | | return False
|
| | |
|
| | |
| | | curNPC.SetDict(ChConfig.Def_NPC_Dict_AtkMovePosY, 0)
|
| | |
|
| | | return result
|
| | |
|
| | | # 指定释放的NPCID 和 Def_UseSkillTag_AppointNPC 搭配使用
|
| | | def GetAppointNPCBySkillEffect(curSkill):
|
| | | npcID = 0
|
| | | effectID = ChConfig.Def_Skill_Effect_AppointNPC
|
| | | for i in xrange(0, curSkill.GetEffectCount()):
|
| | | curEffect = curSkill.GetEffect(i)
|
| | | curEffectID = curEffect.GetEffectID()
|
| | | |
| | | if not curEffectID:
|
| | | #策划有可能中途删除,不用return
|
| | | continue
|
| | | |
| | | #不是需要的效果
|
| | | if curEffectID != effectID:
|
| | | continue
|
| | |
|
| | | npcID = curEffect.GetEffectValue(0)
|
| | | break
|
| | |
|
| | | if not npcID:
|
| | | return None
|
| | | return GameWorld.FindNPCByNPCID(npcID)
|
| | |
|
| | |
|
| | | # 计算NPC技能位移坐标,预警和非预警都可以用
|
| | |
| | | # @return 返回值真, 检查通过
|
| | | def NPCCanUseSkillTag(curNPC, curTag, curSkill, tick):
|
| | | skillTag = GetSkillAffectTag(curSkill)
|
| | | if skillTag == ChConfig.Def_UseSkillTag_AppointNPC:
|
| | | return True
|
| | | |
| | | #---对象判定---
|
| | | if IsToPetOwnerSkill(curNPC, skillTag):
|
| | | return True
|