diff --git a/forge-game/src/main/java/forge/game/card/token/TokenInfo.java b/forge-game/src/main/java/forge/game/card/token/TokenInfo.java index 5c50ca6e939..6a24f644d63 100644 --- a/forge-game/src/main/java/forge/game/card/token/TokenInfo.java +++ b/forge-game/src/main/java/forge/game/card/token/TokenInfo.java @@ -138,10 +138,11 @@ public class TokenInfo { final Game game = controller.getGame(); int multiplier = 1; + Player player = controller; final Map repParams = Maps.newHashMap(); repParams.put("Event", "CreateToken"); - repParams.put("Affected", controller); + repParams.put("Affected", player); repParams.put("TokenNum", multiplier); repParams.put("EffectOnly", applyMultiplier); @@ -150,6 +151,7 @@ public class TokenInfo { break; case Updated: { multiplier = (int) repParams.get("TokenNum"); + player = (Player) repParams.get("Affected"); break; } default: @@ -157,7 +159,7 @@ public class TokenInfo { } for (int i = 0; i < multiplier; i++) { - list.add(makeOneToken(controller)); + list.add(makeOneToken(player)); } return list; } diff --git a/forge-game/src/main/java/forge/game/replacement/ReplacementEffect.java b/forge-game/src/main/java/forge/game/replacement/ReplacementEffect.java index e93c9e9965f..b613b8ac1a8 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplacementEffect.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplacementEffect.java @@ -63,7 +63,9 @@ public abstract class ReplacementEffect extends TriggerReplacementBase { originalMapParams.putAll(map); mapParams.putAll(map); this.setHostCard(host); - + if (map.containsKey("Layer")) { + this.setLayer(ReplacementLayer.smartValueOf(map.get("Layer"))); + } } /** diff --git a/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java b/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java index 7dd160f85ab..b133bafc8be 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplacementHandler.java @@ -53,7 +53,6 @@ public class ReplacementHandler { final Object affected = runParams.get("Affected"); Player decider = null; - // Figure out who decides which of multiple replacements to apply // as well as whether or not to apply optional replacements. if (affected instanceof Player) { @@ -62,29 +61,21 @@ public class ReplacementHandler { decider = ((Card) affected).getController(); } - if (runParams.get("Event").equals("Moved")) { - ReplacementResult res = run(runParams, ReplacementLayer.Control, decider); - if (res != ReplacementResult.NotReplaced) { - return res; - } - res = run(runParams, ReplacementLayer.Copy, decider); - if (res != ReplacementResult.NotReplaced) { - return res; - } - res = run(runParams, ReplacementLayer.Other, decider); - if (res != ReplacementResult.NotReplaced) { - return res; - } - res = run(runParams, ReplacementLayer.None, decider); - if (res != ReplacementResult.NotReplaced) { - return res; - } + ReplacementResult res = run(runParams, ReplacementLayer.Control, decider); + if (res != ReplacementResult.NotReplaced) { + return res; } - else { - ReplacementResult res = run(runParams, ReplacementLayer.None, decider); - if (res != ReplacementResult.NotReplaced) { - return res; - } + res = run(runParams, ReplacementLayer.Copy, decider); + if (res != ReplacementResult.NotReplaced) { + return res; + } + res = run(runParams, ReplacementLayer.Other, decider); + if (res != ReplacementResult.NotReplaced) { + return res; + } + res = run(runParams, ReplacementLayer.None, decider); + if (res != ReplacementResult.NotReplaced) { + return res; } return ReplacementResult.NotReplaced; diff --git a/forge-gui/res/cardsfolder/c/crafty_cutpurse.txt b/forge-gui/res/cardsfolder/c/crafty_cutpurse.txt index 5060417badc..3172eab5d03 100644 --- a/forge-gui/res/cardsfolder/c/crafty_cutpurse.txt +++ b/forge-gui/res/cardsfolder/c/crafty_cutpurse.txt @@ -5,7 +5,7 @@ PT:2/2 K:Flash T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigEffect | TriggerDescription$ When CARDNAME enters the battlefield, each token that would be created under an opponent's control this turn is created under your control instead. SVar:TrigEffect:DB$ Effect | Name$ Crafty Cutpurse Effect | ReplacementEffects$ OppCreatEnters | SVars$ ETBYourCtrl | SpellDescription$ Each token that would be created under an opponent's control this turn is created under your control instead. -SVar:OppCreatEnters:Event$ Moved | Destination$ Battlefield | ValidCard$ Permanent.token+OppCtrl | ReplaceWith$ ETBYourCtrl | ActiveZone$ Command | Description$ Each token that would be created under an opponent's control this turn is created under your control instead. -SVar:ETBYourCtrl:DB$ ChangeZone | Origin$ All | Destination$ Battlefield | Defined$ ReplacedCard | GainControl$ True +SVar:OppCreatEnters:Event$ CreateToken | ActiveZones$ Command | ValidPlayer$ Player.Opponent | ReplaceWith$ ETBYourCtrl | Layer$ Control | Description$ Each token that would be created under an opponent's control this turn is created under your control instead. +SVar:ETBYourCtrl:DB$ ReplaceEffect | VarName$ Affected | VarValue$ You | VarType$ Player SVar:Picture:http://www.wizards.com/global/images/magic/general/crafty_cutpurse.jpg Oracle:Flash\nWhen Crafty Cutpurse enters the battlefield, each token that would be created under an opponent's control this turn is created under your control instead.