/// <summary> /// 实际选择目标 /// </summary> public override bool SelectTarget(RoleActor caster, SkillActive skill, ref List <RoleActor> targets) { if (!base.SelectTarget(caster, skill, ref targets)) { return(false); } RoleActor target = caster.GetTarget(skill.mTargetId); if (null == target) { return(false); } targets.Add(target); return(true); }
/// <summary> /// 检查技能条件 /// </summary> public override bool CheckSkillCondition(RoleActor actor, SkillActive skill) { if (!base.CheckSkillCondition(actor, skill)) { return(false); } RoleActor target = actor.GetTarget(skill.mTargetId); if (null == target) { return(false); } if (target is NPCInstance) { return(false); } if (actor.Camp != target.Camp) { return(false); } if (actor.HostMap.MapInstanceId != target.HostMap.MapInstanceId) { return(false); } if (!skill.SkillCD.IsCoolDown() || !actor.SkillCD.IsCoolDown()) { return(false); } if (skill.mDistance > skill.RangeMax + GameSet.Instance.SkillRangeSync) { return(false); } return(true); }
/// <summary> /// 检查技能条件 /// </summary> public override bool CheckSkillCondition(RoleActor actor, SkillActive skill) { if (!base.CheckSkillCondition(actor, skill)) { return(false); } RoleActor target = actor.GetTarget(skill.mTargetId); if (null == target) { skill.mResult = eSkillResult.NotTarget; return(false); } if (actor.HostMap.MapInstanceId != target.HostMap.MapInstanceId) { Log.Log.Server.Info("Error, actor.HostMap.MapInstanceId != target.HostMap.MapInstanceId"); return(false); } if (!actor.CanAttack(target)) { skill.mResult = eSkillResult.NoAttack; return(false); } if (!skill.SkillCD.IsCoolDown() || !actor.SkillCD.IsCoolDown()) { skill.mResult = eSkillResult.NotCoolDown; return(false); } if (skill.mDistance > skill.RangeMax + GameSet.Instance.SkillRangeSync) { skill.mResult = eSkillResult.DistanceToFar; return(false); } return(true); }