diff --git a/forge-game/src/main/java/forge/game/ability/effects/VentureEffect.java b/forge-game/src/main/java/forge/game/ability/effects/VentureEffect.java index 6a817fa0b58..33fb9613ce2 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/VentureEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/VentureEffect.java @@ -90,6 +90,10 @@ public class VentureEffect extends SpellAbilityEffect { } private void ventureIntoDungeon(SpellAbility sa, Player player) { + if (player.getVenturedThisTurn() >= 1 && player.hasKeyword("You can't venture into the dungeon more than once each turn.")) { + return; + } + final Game game = player.getGame(); Card dungeon = getDungeonCard(sa, player); String room = dungeon.getCurrentRoom(); @@ -111,6 +115,8 @@ public class VentureEffect extends SpellAbilityEffect { final Map runParams = AbilityKey.mapFromCard(dungeon); runParams.put(AbilityKey.RoomName, nextRoom); game.getTriggerHandler().runTrigger(TriggerType.RoomEntered, runParams, false); + + player.incrementVenturedThisTurn(); } @Override 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 14285832cdb..600fbfc3153 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -193,6 +193,7 @@ public class Player extends GameEntity implements Comparable { private boolean activateLoyaltyAbilityThisTurn = false; private boolean tappedLandForManaThisTurn = false; private int attackersDeclaredThisTurn = 0; + private int venturedThisTurn = 0; private List completedDungeons = new ArrayList<>(); private final Map zones = Maps.newEnumMap(ZoneType.class); @@ -1947,6 +1948,16 @@ public class Player extends GameEntity implements Comparable { attackersDeclaredThisTurn = 0; } + public final int getVenturedThisTurn() { + return venturedThisTurn; + } + public final void incrementVenturedThisTurn() { + venturedThisTurn++; + } + public final void resetVenturedThisTurn() { + venturedThisTurn = 0; + } + public final List getCompletedDungeons() { return completedDungeons; } @@ -2490,6 +2501,7 @@ public class Player extends GameEntity implements Comparable { resetSacrificedThisTurn(); clearAssignedDamage(); resetAttackersDeclaredThisTurn(); + resetVenturedThisTurn(); setRevolt(false); resetProwl(); setSpellsCastLastTurn(getSpellsCastThisTurn()); diff --git a/forge-gui/res/cardsfolder/upcoming/hama_pashar_ruin_seeker.txt b/forge-gui/res/cardsfolder/upcoming/hama_pashar_ruin_seeker.txt new file mode 100644 index 00000000000..04e5d5dd54d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/hama_pashar_ruin_seeker.txt @@ -0,0 +1,6 @@ +Name:Hama Pashar, Ruin Seeker +ManaCost:1 W U +Types:Legendary Creature Human Wizard +PT:2/3 +S:Mode$ Panharmonicon | ValidMode$ RoomEntered | ValidCard$ Dungeon.YouCtrl | Description$ Room abilities of dungeons you own trigger an additional time. +Oracle:Room abilities of dungeons you own trigger an additional time. diff --git a/forge-gui/res/cardsfolder/upcoming/keen_eared_sentry.txt b/forge-gui/res/cardsfolder/upcoming/keen_eared_sentry.txt new file mode 100644 index 00000000000..21a4c66608c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/keen_eared_sentry.txt @@ -0,0 +1,7 @@ +Name:Keen-Eared Sentry +ManaCost:1 W +Types:Creature Human Soldier +PT:2/1 +S:Mode$ Continuous | Affected$ You | AddKeyword$ Hexproof | Description$ You have hexproof. (You can't be the target of spells or abilities your opponents control.) +S:Mode$ Continuous | Affected$ Opponent | AddKeyword$ You can't venture into the dungeon more than once each turn. | Description$ Each opponent can't venture into the dungeon more than once each turn. +Oracle:You have hexproof. (You can't be the target of spells or abilities your opponents control.)\nEach opponent can't venture into the dungeon more than once each turn.