diff --git a/.gitattributes b/.gitattributes index ebfe4522ec6..7f03db6ac67 100644 --- a/.gitattributes +++ b/.gitattributes @@ -687,6 +687,7 @@ forge-game/src/main/java/forge/game/trigger/TriggerExploited.java -text forge-game/src/main/java/forge/game/trigger/TriggerFight.java -text forge-game/src/main/java/forge/game/trigger/TriggerFlippedCoin.java -text forge-game/src/main/java/forge/game/trigger/TriggerHandler.java svneol=native#text/plain +forge-game/src/main/java/forge/game/trigger/TriggerInvestigated.java -text forge-game/src/main/java/forge/game/trigger/TriggerLandPlayed.java svneol=native#text/plain forge-game/src/main/java/forge/game/trigger/TriggerLifeGained.java svneol=native#text/plain forge-game/src/main/java/forge/game/trigger/TriggerLifeLost.java svneol=native#text/plain @@ -5521,6 +5522,7 @@ forge-gui/res/cardsfolder/e/equipoise.txt -text forge-gui/res/cardsfolder/e/eradicate.txt svneol=native#text/plain forge-gui/res/cardsfolder/e/erase.txt svneol=native#text/plain forge-gui/res/cardsfolder/e/erayo_soratami_ascendant_erayos_essence.txt -text +forge-gui/res/cardsfolder/e/erdwal_illuminator.txt -text forge-gui/res/cardsfolder/e/erdwal_ripper.txt -text forge-gui/res/cardsfolder/e/erebos_god_of_the_dead.txt -text forge-gui/res/cardsfolder/e/ereboss_emissary.txt -text diff --git a/forge-game/src/main/java/forge/game/ability/effects/RestartGameEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RestartGameEffect.java index 9ec0b925bdb..e16f5a1babc 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RestartGameEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RestartGameEffect.java @@ -70,6 +70,7 @@ public class RestartGameEffect extends SpellAbilityEffect { player.setStartingLife(psc.getStartingLife()); player.setPoisonCounters(0, sa.getHostCard()); player.resetLandsPlayedThisTurn(); + player.resetInvestigatedThisTurn(); player.initVariantsZones(psc); List newLibrary = playerLibraries.get(player); diff --git a/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java b/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java index 128263d54fb..c987096efed 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java @@ -343,7 +343,9 @@ public class TokenEffect extends SpellAbilityEffect { } } } - + if (tokenName.equals("Clue")) { // investigate trigger + controller.addInvestigatedThisTurn(); + } if (combatChanged) { game.updateCombatForView(); game.fireEvent(new GameEventCombatChanged()); diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index 75f72153307..945ba89b1fa 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -88,6 +88,7 @@ public class Player extends GameEntity implements Comparable { private final Map assignedDamage = new HashMap(); private int spellsCastThisTurn = 0; private int landsPlayedThisTurn = 0; + private int investigatedThisTurn = 0; private int lifeLostThisTurn = 0; private int lifeLostLastTurn = 0; private int lifeGainedThisTurn = 0; @@ -2207,6 +2208,19 @@ public class Player extends GameEntity implements Comparable { landsPlayedThisTurn = 0; } + public final int getInvestigateNumThisTurn() { + return investigatedThisTurn; + } + public final void addInvestigatedThisTurn() { + investigatedThisTurn++; + HashMap runParams = new HashMap(); + runParams.put("Player", this); + game.getTriggerHandler().runTrigger(TriggerType.Investigated, runParams,false); + } + public final void resetInvestigatedThisTurn() { + investigatedThisTurn = 0; + } + public final int getSpellsCastThisTurn() { return spellsCastThisTurn; } @@ -2403,6 +2417,7 @@ public class Player extends GameEntity implements Comparable { setActivateLoyaltyAbilityThisTurn(false); setTappedLandForManaThisTurn(false); resetLandsPlayedThisTurn(); + resetInvestigatedThisTurn(); clearAssignedDamage(); resetAttackersDeclaredThisTurn(); } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerInvestigated.java b/forge-game/src/main/java/forge/game/trigger/TriggerInvestigated.java new file mode 100644 index 00000000000..8849e0819bd --- /dev/null +++ b/forge-game/src/main/java/forge/game/trigger/TriggerInvestigated.java @@ -0,0 +1,83 @@ +/* + * Forge: Play Magic: the Gathering. + * Copyright (C) 2011 Forge Team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package forge.game.trigger; + +import forge.game.card.Card; +import forge.game.player.Player; +import forge.game.spellability.SpellAbility; + +import java.util.Map; + +/** + *

+ * Trigger_LandPlayed class. + *

+ * + * @author Forge + * @version $Id: TriggerInvestigated.java 30294 2015-10-16 01:53:32Z friarsol $ + */ +public class TriggerInvestigated extends Trigger { + + /** + *

+ * Constructor for Trigger_Investigated. + *

+ * + * @param params + * a {@link java.util.HashMap} object. + * @param host + * a {@link forge.game.card.Card} object. + * @param intrinsic + * the intrinsic + */ + public TriggerInvestigated(final Map params, final Card host, final boolean intrinsic) { + super(params, host, intrinsic); + } + + @Override + public String getImportantStackObjects(SpellAbility sa) { + StringBuilder sb = new StringBuilder(); + sb.append("Player: ").append(sa.getTriggeringObject("Player")); + return sb.toString(); + } + + /** {@inheritDoc} */ + @Override + public final void setTriggeringObjects(final SpellAbility sa) { + sa.setTriggeringObject("Player", this.getRunParams().get("Player")); + } + + /** {@inheritDoc} */ + @Override + public final boolean performTest(final java.util.Map runParams2) { + Player p = (Player) runParams2.get("Player"); + if (this.mapParams.containsKey("ValidPlayer")) { + if (!matchesValid(p, this.mapParams.get("ValidPlayer").split(","), this.getHostCard())) { + return false; + } + } + + if (this.mapParams.containsKey("OnlyFirst")) { + if (p.getInvestigateNumThisTurn() != 1) { + return false; + } + } + return true; + } + +} diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerType.java b/forge-game/src/main/java/forge/game/trigger/TriggerType.java index 5968689c480..83dd2fc3045 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerType.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerType.java @@ -45,6 +45,7 @@ public enum TriggerType { Exploited(TriggerExploited.class), Fight(TriggerFight.class), FlippedCoin(TriggerFlippedCoin.class), + Investigated(TriggerInvestigated.class), LandPlayed(TriggerLandPlayed.class), LifeGained(TriggerLifeGained.class), LifeLost(TriggerLifeLost.class), diff --git a/forge-gui/res/cardsfolder/e/erdwal_illuminator.txt b/forge-gui/res/cardsfolder/e/erdwal_illuminator.txt new file mode 100644 index 00000000000..24562b8134b --- /dev/null +++ b/forge-gui/res/cardsfolder/e/erdwal_illuminator.txt @@ -0,0 +1,10 @@ +Name:Erdwal Illuminator +ManaCost:1 U +Types:Creature Spirit +PT:1/3 +K:Flying +T:Mode$ Investigated | ValidPlayer$ You | TriggerZones$ Battlefield | OnlyFirst$ True | Execute$ TrigInvestigate | TriggerDescription$ Whenever you investigate for the first time each turn, investigate an additional time. +SVar:TrigInvestigate:AB$ Token | Cost$ 0 | TokenAmount$ 1 | TokenName$ Clue | TokenAltImages$ c_clue2,c_clue3,c_clue4,c_clue5,c_clue6 | TokenTypes$ Artifact,Clue | TokenOwner$ You | TokenColors$ Colorless | TokenImage$ c clue | TokenAbilities$ ABDraw +SVar:ABDraw:AB$ Draw | Cost$ 2 Sac<1/CARDNAME> | NumCards$ 1 | SpellDescription$ Draw a card. +SVar:Picture:http://www.wizards.com/global/images/magic/general/erdwal_illuminator.jpg +Oracle:Flying\nWhenever you investigate for the first time each turn, investigate an additional time.