diff --git a/res/cardsfolder/blazing_specter.txt b/res/cardsfolder/blazing_specter.txt index d892d263c77..8cfae583d37 100644 --- a/res/cardsfolder/blazing_specter.txt +++ b/res/cardsfolder/blazing_specter.txt @@ -1,10 +1,12 @@ Name:Blazing Specter ManaCost:2 B R Types:Creature Specter -Text:Whenever Blazing Specter deals combat damage to a player, that player discards a card. +Text:no text PT:2/2 K:Flying K:Haste +T:Mode$ DamageDone | SourceValid$ Card.Self | TargetValid$ Opponent | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player discards a card. +SVar:TrigDiscard:AB$Discard | Cost$ 0 | Defined$ Opponent | NumCards$ 1 | Mode$ TgtChoose SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/blazing_specter.jpg SetInfo:INV|Rare|http://magiccards.info/scans/en/in/236.jpg diff --git a/src/forge/Card.java b/src/forge/Card.java index 9122571acd9..b022faf2929 100644 --- a/src/forge/Card.java +++ b/src/forge/Card.java @@ -177,7 +177,9 @@ public class Card extends MyObservable { public void addTrigger(Trigger t) { - triggers.add(t); + Trigger newtrig = t.getCopy(); + newtrig.setHostCard(this); + triggers.add(newtrig); } public ArrayList getTriggers() @@ -187,10 +189,11 @@ public class Card extends MyObservable { public void setTriggers(ArrayList trigs) { - triggers = trigs; - for(Trigger t : triggers) + for(Trigger t : trigs) { - t.setHostCard(this); + Trigger newtrig = t.getCopy(); + newtrig.setHostCard(this); + triggers.add(newtrig); } } diff --git a/src/forge/GameActionUtil.java b/src/forge/GameActionUtil.java index 16115e2d60d..3c756ebfbfd 100644 --- a/src/forge/GameActionUtil.java +++ b/src/forge/GameActionUtil.java @@ -6157,7 +6157,6 @@ public class GameActionUtil { else if(c.getName().equals("Guul Draz Specter")) opponent_Discard(c, 1); else if(c.getName().equals("Chilling Apparition")) opponent_Discard(c, 1); else if(c.getName().equals("Sedraxis Specter")) opponent_Discard(c, 1); - else if(c.getName().equals("Blazing Specter")) opponent_Discard(c, 1); else if(c.getName().equals("Headhunter")) opponent_Discard(c, 1); else if(c.getName().equals("Riptide Pilferer")) opponent_Discard(c, 1); else if(c.getName().equals("Shadowmage Infiltrator")) playerCombatDamage_Shadowmage_Infiltrator(c); diff --git a/src/forge/PhaseUtil.java b/src/forge/PhaseUtil.java index 2347589a659..ffc62d5355b 100644 --- a/src/forge/PhaseUtil.java +++ b/src/forge/PhaseUtil.java @@ -344,7 +344,6 @@ public class PhaseUtil { HashMap runParams = new HashMap(); runParams.put("Phase", Constant.Phase.Draw); runParams.put("Player", playerTurn); - System.out.println("Calling runTrigger from PhaseUtil.handleDraw()"); AllZone.TriggerHandler.runTrigger("Phase", runParams); playerTurn.drawCard(); diff --git a/src/forge/Trigger.java b/src/forge/Trigger.java index 9f5ae98a0b2..99d78883133 100644 --- a/src/forge/Trigger.java +++ b/src/forge/Trigger.java @@ -33,7 +33,11 @@ public abstract class Trigger { public Trigger(HashMap params, Card host) { - mapParams = params; + mapParams = new HashMap(); + for(String key : params.keySet()) + { + mapParams.put(key,params.get(key)); + } hostCard = host; } @@ -181,4 +185,6 @@ public abstract class Trigger { } public abstract boolean performTest(HashMap runParams); + + public abstract Trigger getCopy(); } diff --git a/src/forge/Trigger_AttackerBlocked.java b/src/forge/Trigger_AttackerBlocked.java index 2b68670f654..e4850e8d5dd 100644 --- a/src/forge/Trigger_AttackerBlocked.java +++ b/src/forge/Trigger_AttackerBlocked.java @@ -28,4 +28,8 @@ public class Trigger_AttackerBlocked extends Trigger { return true; } + @Override + public Trigger getCopy() { + return new Trigger_AttackerBlocked(mapParams,hostCard); + } } diff --git a/src/forge/Trigger_AttackerUnblocked.java b/src/forge/Trigger_AttackerUnblocked.java index 0de969dff1a..22618728a29 100644 --- a/src/forge/Trigger_AttackerUnblocked.java +++ b/src/forge/Trigger_AttackerUnblocked.java @@ -21,4 +21,8 @@ public class Trigger_AttackerUnblocked extends Trigger { return true; } + @Override + public Trigger getCopy() { + return new Trigger_AttackerUnblocked(mapParams,hostCard); + } } diff --git a/src/forge/Trigger_Attacks.java b/src/forge/Trigger_Attacks.java index 4574fd454ec..181dc244722 100644 --- a/src/forge/Trigger_Attacks.java +++ b/src/forge/Trigger_Attacks.java @@ -41,4 +41,8 @@ public class Trigger_Attacks extends Trigger { return true; } + @Override + public Trigger getCopy() { + return new Trigger_Attacks(mapParams,hostCard); + } } diff --git a/src/forge/Trigger_Blocks.java b/src/forge/Trigger_Blocks.java index 83f44433a9b..80001ffd4e8 100644 --- a/src/forge/Trigger_Blocks.java +++ b/src/forge/Trigger_Blocks.java @@ -29,4 +29,8 @@ public class Trigger_Blocks extends Trigger { return true; } + @Override + public Trigger getCopy() { + return new Trigger_Blocks(mapParams,hostCard); + } } diff --git a/src/forge/Trigger_ChangesZone.java b/src/forge/Trigger_ChangesZone.java index 2c5febb7030..ed7d83594ca 100644 --- a/src/forge/Trigger_ChangesZone.java +++ b/src/forge/Trigger_ChangesZone.java @@ -45,4 +45,8 @@ public class Trigger_ChangesZone extends Trigger { return true; } + @Override + public Trigger getCopy() { + return new Trigger_ChangesZone(mapParams,hostCard); + } } diff --git a/src/forge/Trigger_DamageDone.java b/src/forge/Trigger_DamageDone.java index 5890b18620f..71e90085df1 100644 --- a/src/forge/Trigger_DamageDone.java +++ b/src/forge/Trigger_DamageDone.java @@ -51,4 +51,8 @@ public class Trigger_DamageDone extends Trigger { return true; } + @Override + public Trigger getCopy() { + return new Trigger_DamageDone(mapParams,hostCard); + } } diff --git a/src/forge/Trigger_Discarded.java b/src/forge/Trigger_Discarded.java index cea2f38bfb4..705ddad53e9 100644 --- a/src/forge/Trigger_Discarded.java +++ b/src/forge/Trigger_Discarded.java @@ -20,4 +20,8 @@ public class Trigger_Discarded extends Trigger { return true; } + @Override + public Trigger getCopy() { + return new Trigger_Discarded(mapParams,hostCard); + } } diff --git a/src/forge/Trigger_LifeGained.java b/src/forge/Trigger_LifeGained.java index e33b2c2b48b..3c66812ebab 100644 --- a/src/forge/Trigger_LifeGained.java +++ b/src/forge/Trigger_LifeGained.java @@ -22,4 +22,8 @@ public class Trigger_LifeGained extends Trigger { return true; } + @Override + public Trigger getCopy() { + return new Trigger_LifeGained(mapParams,hostCard); + } } diff --git a/src/forge/Trigger_LifeLost.java b/src/forge/Trigger_LifeLost.java index 82e7d92914d..1ef721bdecf 100644 --- a/src/forge/Trigger_LifeLost.java +++ b/src/forge/Trigger_LifeLost.java @@ -22,4 +22,8 @@ public class Trigger_LifeLost extends Trigger { return true; } + @Override + public Trigger getCopy() { + return new Trigger_LifeLost(mapParams,hostCard); + } } diff --git a/src/forge/Trigger_Phase.java b/src/forge/Trigger_Phase.java index 9d7cd8dbe02..480f36bfe36 100644 --- a/src/forge/Trigger_Phase.java +++ b/src/forge/Trigger_Phase.java @@ -27,4 +27,8 @@ public class Trigger_Phase extends Trigger { return true; } + @Override + public Trigger getCopy() { + return new Trigger_Phase(mapParams,hostCard); + } } diff --git a/src/forge/Trigger_Sacrificed.java b/src/forge/Trigger_Sacrificed.java index afe97036320..83cf2de11bb 100644 --- a/src/forge/Trigger_Sacrificed.java +++ b/src/forge/Trigger_Sacrificed.java @@ -28,4 +28,8 @@ public class Trigger_Sacrificed extends Trigger { return true; } + @Override + public Trigger getCopy() { + return new Trigger_Sacrificed(mapParams,hostCard); + } } diff --git a/src/forge/Trigger_SpellCast.java b/src/forge/Trigger_SpellCast.java index 22aca1a5f44..896bed3a2bc 100644 --- a/src/forge/Trigger_SpellCast.java +++ b/src/forge/Trigger_SpellCast.java @@ -67,4 +67,8 @@ public class Trigger_SpellCast extends Trigger { return true; } + @Override + public Trigger getCopy() { + return new Trigger_SpellCast(mapParams,hostCard); + } } diff --git a/src/forge/Trigger_Taps.java b/src/forge/Trigger_Taps.java index 541d8f52217..d139a604dc2 100644 --- a/src/forge/Trigger_Taps.java +++ b/src/forge/Trigger_Taps.java @@ -24,4 +24,8 @@ public class Trigger_Taps extends Trigger { return true; } + @Override + public Trigger getCopy() { + return new Trigger_Taps(mapParams,hostCard); + } } diff --git a/src/forge/Trigger_TurnFaceUp.java b/src/forge/Trigger_TurnFaceUp.java index 3329477fe51..a2de8cc7586 100644 --- a/src/forge/Trigger_TurnFaceUp.java +++ b/src/forge/Trigger_TurnFaceUp.java @@ -21,4 +21,8 @@ public class Trigger_TurnFaceUp extends Trigger { return true; } + @Override + public Trigger getCopy() { + return new Trigger_TurnFaceUp(mapParams,hostCard); + } } diff --git a/src/forge/Trigger_Untaps.java b/src/forge/Trigger_Untaps.java index f768b473550..81dd2a682b2 100644 --- a/src/forge/Trigger_Untaps.java +++ b/src/forge/Trigger_Untaps.java @@ -24,4 +24,10 @@ public class Trigger_Untaps extends Trigger { return true; } + @Override + public Trigger getCopy() { + return new Trigger_Untaps(mapParams,hostCard); + } + + }