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); }
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); }
public static void monsterAttack(int s) { MonsterAttack?.Invoke(s); }