public short AgressiveTarget(BrainFighter fighter, SpellLevelRecord level) { if (fighter.Brain.HasBehavior) { var agressiveCell = fighter.Brain.GetBehavior <Behavior>().GetAgressiveCell(); if (agressiveCell != -1) { return(agressiveCell); } } if (level.MaxRange > 0) { var targets = fighter.OposedTeam().CloserFighters(fighter); var target = targets.LastOrDefault(x => x.Stats.InvisibilityState == Protocol.Enums.GameActionFightInvisibilityStateEnum.VISIBLE); if (target != null) { return(target.CellId); } else { return(Array.FindAll(fighter.GetCastZone(fighter.CellId, level), x => fighter.Fight.Map.WalkableDuringFight((ushort)x)).Random()); } } else { return(fighter.CellId); } }
public short TeleportTarget(BrainFighter fighter, SpellLevelRecord level) { if (fighter.Brain.HasBehavior) { var teleportCell = fighter.Brain.GetBehavior <Behavior>().GetTeleportCell(); if (teleportCell != -1) { return(teleportCell); } } var target = fighter.OposedTeam().LowerFighter(); if (target != null) { var points = target.Point.GetNearPoints(); if (points.Count() > 0) { var pt = points.FirstOrDefault(x => fighter.Fight.IsCellFree(x.CellId)); if (pt != null) { return(pt.CellId); } } } return(-1); }
public Tabacille(BrainFighter fighter) : base(fighter) { fighter.Fight.FightStartEvt += Fight_FightStartEvt; this.Fighter.OnTurnStartEvt += Fighter_OnTurnStartEvt; foreach (var enemy in fighter.OposedTeam().GetFighters()) { enemy.OnHealEvt += Enemy_OnHealEvt; } TurnCount = 0; }