示例#1
0
        public override void Execute(GameTrigger trigger)
        {
            if (!trigger.Character.IsInFight())
            {
                trigger.ReplyError("You must be in a fight");
                return;
            }

            if (!trigger.Character.Fight.AIDebugMode)
            {
                trigger.ReplyError("AI debug mode must be enabled");
                return;
            }

            if (!(trigger.Character.Fight.FighterPlaying is AIFighter))
            {
                trigger.ReplyError("Current fighter is not an AI fighter");
                return;
            }

            var aiFighter = trigger.Character.Fight.FighterPlaying as AIFighter;

            trigger.Character.ClearHighlight();

            var enemy = aiFighter.Brain.Environment.GetNearestEnemy();

            if (trigger.IsArgumentDefined("los"))
            {
                trigger.Reply(trigger.Color("Cast with LoS", trigger.Character.HighlightCells(aiFighter.Brain.Environment.GetCellsWithLoS(enemy.Cell))));
            }

            foreach (var spell in aiFighter.Spells.Values)
            {
                var cell = aiFighter.Brain.Environment.GetCellToCastSpell(new TargetCell(enemy.Cell), spell, spell.CurrentSpellLevel.CastTestLos);
                if (cell != null)
                {
                    trigger.Reply(trigger.Color("Cast " + spell, trigger.Character.HighlightCell(cell)));
                }
            }

            var fleeCell = aiFighter.Brain.Environment.GetCellToFlee();

            trigger.Reply(trigger.Color("Flee cell", trigger.Character.HighlightCell(fleeCell)));
        }