diff --git a/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java b/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java index bbb39fb8e2c..386f7a8b404 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java @@ -8,8 +8,11 @@ import forge.game.ability.AbilityKey; import forge.game.ability.AbilityUtils; import forge.game.card.Card; import forge.game.card.CardDamageMap; +import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.trigger.TriggerType; +import forge.util.Localizer; +import forge.util.CardTranslation; import java.util.List; import java.util.Map; @@ -56,17 +59,24 @@ public class FightEffect extends DamageBaseEffect { } } - dealDamage(sa, fighters.get(0), fighters.get(1)); + Player controller = host.getController(); + boolean isOptional = sa.hasParam("Optional"); + + if (isOptional && !controller.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblWouldYouLikeFight", CardTranslation.getTranslatedName(fighters.get(0).getName()), CardTranslation.getTranslatedName(fighters.get(1).getName())))) { + return; + } else { + dealDamage(sa, fighters.get(0), fighters.get(1)); + + for (Card c : fighters) { + final Map runParams = AbilityKey.newMap(); + runParams.put(AbilityKey.Fighter, c); + game.getTriggerHandler().runTrigger(TriggerType.Fight, runParams, false); + } - for (Card c : fighters) { final Map runParams = AbilityKey.newMap(); - runParams.put(AbilityKey.Fighter, c); - game.getTriggerHandler().runTrigger(TriggerType.Fight, runParams, false); + runParams.put(AbilityKey.Fighters, fighters); + game.getTriggerHandler().runTrigger(TriggerType.FightOnce, runParams, false); } - - final Map runParams = AbilityKey.newMap(); - runParams.put(AbilityKey.Fighters, fighters); - game.getTriggerHandler().runTrigger(TriggerType.FightOnce, runParams, false); } private static List getFighters(SpellAbility sa) { diff --git a/forge-gui/res/cardsfolder/k/kraul_harpooner.txt b/forge-gui/res/cardsfolder/k/kraul_harpooner.txt index 0fde4013fb2..d3812276b04 100644 --- a/forge-gui/res/cardsfolder/k/kraul_harpooner.txt +++ b/forge-gui/res/cardsfolder/k/kraul_harpooner.txt @@ -5,6 +5,6 @@ PT:3/2 K:Reach T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters the battlefield, choose up to one target creature with flying you don't control. CARDNAME gets +X/+0 until end of turn, where X is the number of creature cards in your graveyard, then you may have CARDNAME fight that creature. SVar:TrigPump:DB$ Pump | Defined$ Self | NumAtt$ X | References$ X | SubAbility$ DBFight -SVar:DBFight:DB$ Fight | Defined$ Self | ValidTgts$ Creature.withFlying+YouDontCtrl | TgtPrompt$ Select target creature with flying you don't control | TargetMin$ 0 | TargetMax$ 1 +SVar:DBFight:DB$ Fight | Defined$ Self | ValidTgts$ Creature.withFlying+YouDontCtrl | TgtPrompt$ Select target creature with flying you don't control | TargetMin$ 0 | TargetMax$ 1 | Optional$ True SVar:X:Count$TypeInYourYard.Creature Oracle:Reach\nUndergrowth — When Kraul Harpooner enters the battlefield, choose up to one target creature with flying you don't control. Kraul Harpooner gets +X/+0 until end of turn, where X is the number of creature cards in your graveyard, then you may have Kraul Harpooner fight that creature. diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties index 23962d7e08b..0a3715fb71c 100644 --- a/forge-gui/res/languages/de-DE.properties +++ b/forge-gui/res/languages/de-DE.properties @@ -1833,6 +1833,8 @@ lblDoYouWantEndTurn=Möchtest du den Zug beenden? #ExploreEffect.java lblRevealedForExplore=Zeige offen vor zum Erkunden lblPutThisCardToYourGraveyard=Lege diese Karte auf deinen Friedhof? +#FightEffect.java +lblWouldYouLikeFight=Möchtest du dass {0} gegen {1} kämpfen? #FlipCoinEffect.java lblHeads=Kopf lblTails=Zahl diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties index d58cacccd0c..6c1d119567f 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -1833,6 +1833,8 @@ lblDoYouWantEndTurn=Do you want to end the turn? #ExploreEffect.java lblRevealedForExplore=Revealed for Explore lblPutThisCardToYourGraveyard=Put this card in your graveyard? +#FightEffect.java +lblWouldYouLikeFight=Do you want {0} to fight {1}? #FlipCoinEffect.java lblHeads=heads lblTails=tails diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties index 7fe83c4b429..976e8d5a35f 100644 --- a/forge-gui/res/languages/es-ES.properties +++ b/forge-gui/res/languages/es-ES.properties @@ -1833,6 +1833,8 @@ lblDoYouWantEndTurn=¿Quieres terminar el turno? #ExploreEffect.java lblRevealedForExplore=Revelado para Explorar lblPutThisCardToYourGraveyard=¿Poner esta carta en tu cementerio? +#FightEffect.java +lblWouldYouLikeFight=¿Quieres que {0} luche contra {1}? #FlipCoinEffect.java lblHeads=cara lblTails=cruz