Exemple #1
0
        public bool Attack(Point?target)
        {
            var zone = target == null?AttackZone.Select(x => Position + x).ToList() : new List <Point>
            {
                (Point)target
            };
            var attack   = AttackMethods.AttackConstructor(Type, this, zone);
            var isLethal = GetMap().IsLethalAttack(attack, zone);

            MonsterAttack?.Invoke(this, attack);
            return(isLethal);
        }
Exemple #2
0
        public bool MonsterAttacking(Battler user, Monster attacker, Monster defender, int attackerIndex, int defenderIndex)
        {
            user.HasMoved = true;
            BattleCardEventArgs args = new BattleCardEventArgs(user, GetOpponent(user), attacker, defender, attackerIndex, defenderIndex);

            ShowText(user.Name + "'s " + attacker.Name + " attacked " + GetOpponent(user).Name + "'s " + defender.Name + "!");

            MonsterAttack?.Invoke(this, args);

            if (args.DestroyTriggerer)
            {
                DestroyingMonster(args.TriggeringPlayer, (Monster)args.TriggeringCard, null, args.TriggeringCardIndex, -1);
            }
            if (args.Cancel || args.DestroyTriggerer)
            {
                return(false);
            }

            switch (((Monster)args.TriggeringCard).Battle((Monster)args.TargetedCard))
            {
            case MonsterAttackOutcome.WIN:
                if (DestroyingMonster(args))
                {
                    ChangingMana(args.TriggeringPlayer, args.TargetedCard.Level);
                }
                break;

            case MonsterAttackOutcome.LOSS:
                if (DestroyingMonster(args.NonTriggeringPlayer, args.TargetedCard, (Monster)args.TriggeringCard, args.TargetedCardIndex, args.TriggeringCardIndex))
                {
                    ChangingMana(args.NonTriggeringPlayer, args.TriggeringCard.Level);
                }
                break;

            case MonsterAttackOutcome.TIE:
                ShowText("...but neither claimed victory.");
                break;
            }

            return(true);
        }
Exemple #3
0
 public static void monsterAttack(int s)
 {
     MonsterAttack?.Invoke(s);
 }