Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
        }