diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java index 8f0198af2c0..f27d3dc6e77 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java @@ -975,12 +975,20 @@ public class ComputerUtilCombat { final Map trigParams = trigger.getMapParams(); final Card source = trigger.getHostCard(); - if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, null) - || !trigParams.containsKey("Execute")) { + if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, null)) { continue; } - final String ability = source.getSVar(trigParams.get("Execute")); - final Map abilityParams = AbilityFactory.getMapParams(ability); + + Map abilityParams = null; + if (trigger.getOverridingAbility() != null) { + abilityParams = trigger.getOverridingAbility().getMapParams(); + } else if (trigParams.containsKey("Execute")) { + final String ability = source.getSVar(trigParams.get("Execute")); + abilityParams = AbilityFactory.getMapParams(ability); + } else { + continue; + } + if (abilityParams.containsKey("AB") && !abilityParams.get("AB").equals("Pump")) { continue; } @@ -1098,12 +1106,20 @@ public class ComputerUtilCombat { final Map trigParams = trigger.getMapParams(); final Card source = trigger.getHostCard(); - if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, null) - || !trigParams.containsKey("Execute")) { + if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, null)) { continue; } - final String ability = source.getSVar(trigParams.get("Execute")); - final Map abilityParams = AbilityFactory.getMapParams(ability); + + Map abilityParams = null; + if (trigger.getOverridingAbility() != null) { + abilityParams = trigger.getOverridingAbility().getMapParams(); + } else if (trigParams.containsKey("Execute")) { + final String ability = source.getSVar(trigParams.get("Execute")); + abilityParams = AbilityFactory.getMapParams(ability); + } else { + continue; + } + String abType = ""; if (abilityParams.containsKey("AB")) { abType = abilityParams.get("AB"); @@ -1311,12 +1327,20 @@ public class ComputerUtilCombat { final Map trigParams = trigger.getMapParams(); final Card source = trigger.getHostCard(); - if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, combat) - || !trigParams.containsKey("Execute")) { + if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, combat)) { continue; } - final String ability = source.getSVar(trigParams.get("Execute")); - final Map abilityParams = AbilityFactory.getMapParams(ability); + + Map abilityParams = null; + if (trigger.getOverridingAbility() != null) { + abilityParams = trigger.getOverridingAbility().getMapParams(); + } else if (trigParams.containsKey("Execute")) { + final String ability = source.getSVar(trigParams.get("Execute")); + abilityParams = AbilityFactory.getMapParams(ability); + } else { + continue; + } + if (abilityParams.containsKey("ValidTgts") || abilityParams.containsKey("Tgt")) { continue; // targeted pumping not supported } @@ -1330,7 +1354,14 @@ public class ComputerUtilCombat { } if (abilityParams.containsKey("Cost")) { - final SpellAbility sa = AbilityFactory.getAbility(ability, source); + SpellAbility sa = null; + if (trigger.getOverridingAbility() != null) { + sa = trigger.getOverridingAbility(); + } else { + final String ability = source.getSVar(trigParams.get("Execute")); + sa = AbilityFactory.getAbility(ability, source); + } + sa.setActivatingPlayer(source.getController()); if (!CostPayment.canPayAdditionalCosts(sa.getPayCosts(), sa)) { continue; @@ -1514,12 +1545,20 @@ public class ComputerUtilCombat { final Map trigParams = trigger.getMapParams(); final Card source = trigger.getHostCard(); - if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, combat) - || !trigParams.containsKey("Execute")) { + if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, combat)) { continue; } - final String ability = source.getSVar(trigParams.get("Execute")); - final Map abilityParams = AbilityFactory.getMapParams(ability); + + Map abilityParams = null; + if (trigger.getOverridingAbility() != null) { + abilityParams = trigger.getOverridingAbility().getMapParams(); + } else if (trigParams.containsKey("Execute")) { + final String ability = source.getSVar(trigParams.get("Execute")); + abilityParams = AbilityFactory.getMapParams(ability); + } else { + continue; + } + if (abilityParams.containsKey("ValidTgts") || abilityParams.containsKey("Tgt")) { continue; // targeted pumping not supported } @@ -1552,7 +1591,14 @@ public class ComputerUtilCombat { } if (abilityParams.containsKey("Cost")) { - final SpellAbility sa = AbilityFactory.getAbility(ability, source); + SpellAbility sa = null; + if (trigger.getOverridingAbility() != null) { + sa = trigger.getOverridingAbility(); + } else { + final String ability = source.getSVar(trigParams.get("Execute")); + sa = AbilityFactory.getAbility(ability, source); + } + sa.setActivatingPlayer(source.getController()); if (!CostPayment.canPayAdditionalCosts(sa.getPayCosts(), sa)) { continue; diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 3d824497574..6a1e0aadfbf 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -1603,7 +1603,7 @@ public class Card extends GameEntity implements Comparable { final String[] k = keyword.split(":"); sbLong.append("Partner with " + k[1] + " (" + inst.getReminderText() + ")"); } else if (keyword.startsWith("Modular") || keyword.startsWith("Bloodthirst") - || keyword.startsWith("Fabricate") || keyword.startsWith("Soulshift") + || keyword.startsWith("Fabricate") || keyword.startsWith("Soulshift") || keyword.startsWith("Bushido") || keyword.startsWith("Crew") || keyword.startsWith("Tribute") || keyword.startsWith("Absorb") || keyword.startsWith("Graft") || keyword.startsWith("Fading") || keyword.startsWith("Vanishing") || keyword.startsWith("Renown") || keyword.startsWith("Annihilator") || keyword.startsWith("Devour")) { @@ -1625,7 +1625,7 @@ public class Card extends GameEntity implements Comparable { || keyword.equals("Horsemanship") || keyword.equals("Infect")|| keyword.equals("Persist") || keyword.equals("Phasing") || keyword.equals("Shadow")|| keyword.equals("Skulk") || keyword.equals("Undying") || keyword.equals("Wither") - || keyword.startsWith ("Afflict") || keyword.startsWith("Bushido") || keyword.startsWith ("Poisonous") + || keyword.startsWith ("Afflict") || keyword.startsWith ("Poisonous") || keyword.startsWith ("Rampage") || keyword.startsWith("Cascade")) { if (sb.length() != 0) { sb.append("\r\n"); diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 1201f5c8594..1fb146425b6 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -2169,27 +2169,28 @@ public class CardFactoryUtil { inst.addTrigger(trigger); } else if (keyword.startsWith("Bushido")) { - final String[] k = keyword.split(" ", 2); + final String[] k = keyword.split(":"); final String n = k[1]; - final String name = "Bushido" + n; + final String trigBlock = "Mode$ Blocks | ValidCard$ Card.Self | Secondary$ True" + + " | TriggerDescription$ Bushido "+ n + " (" + inst.getReminderText() + ")"; - final String trigBlock = "Mode$ Blocks | ValidCard$ Card.Self | Execute$ Trig" + name + "Pump | Secondary$ True" - + " | TriggerDescription$ "+ keyword + " (" + inst.getReminderText() + ")"; - - final String trigBlocked = "Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ Trig" + name + "Pump | Secondary$ True " - + " | TriggerDescription$ "+ keyword + " (" + inst.getReminderText() + ")"; + final String trigBlocked = "Mode$ AttackerBlocked | ValidCard$ Card.Self | Secondary$ True " + + " | TriggerDescription$ Bushido "+ n + " (" + inst.getReminderText() + ")"; String pumpStr = "DB$ Pump | Defined$ Self | NumAtt$ " + n + " | NumDef$ " + n; + + SpellAbility pump = AbilityFactory.getAbility(pumpStr, card); if ("X".equals(n)) { - pumpStr = "DB$ Pump | Defined$ Self | NumAtt$ " + name + " | NumDef$ " + name + " | References$ "+ name; - card.setSVar(name, "Count$Valid Creature.attacking"); + pump.setSVar("X", "Count$Valid Creature.attacking"); } - card.setSVar("Trig" + name + "Pump", pumpStr); final Trigger bushidoTrigger1 = TriggerHandler.parseTrigger(trigBlock, card, intrinsic); final Trigger bushidoTrigger2 = TriggerHandler.parseTrigger(trigBlocked, card, intrinsic); + bushidoTrigger1.setOverridingAbility(pump); + bushidoTrigger2.setOverridingAbility(pump); + inst.addTrigger(bushidoTrigger1); inst.addTrigger(bushidoTrigger2); } else if (keyword.equals("Cascade")) { diff --git a/forge-gui/res/cardsfolder/a/araba_mothrider.txt b/forge-gui/res/cardsfolder/a/araba_mothrider.txt index c4157b8be3e..1437d130ca0 100644 --- a/forge-gui/res/cardsfolder/a/araba_mothrider.txt +++ b/forge-gui/res/cardsfolder/a/araba_mothrider.txt @@ -3,6 +3,6 @@ ManaCost:1 W Types:Creature Human Samurai PT:1/1 K:Flying -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/araba_mothrider.jpg Oracle:Flying\nBushido 1 (Whenever this creature blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/b/battle_mad_ronin.txt b/forge-gui/res/cardsfolder/b/battle_mad_ronin.txt index 762b0dee5be..0d201003ead 100644 --- a/forge-gui/res/cardsfolder/b/battle_mad_ronin.txt +++ b/forge-gui/res/cardsfolder/b/battle_mad_ronin.txt @@ -3,6 +3,6 @@ ManaCost:1 R Types:Creature Human Samurai PT:1/1 K:CARDNAME attacks each combat if able. -K:Bushido 2 +K:Bushido:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/battle_mad_ronin.jpg Oracle:Bushido 2 (Whenever this creature blocks or becomes blocked, it gets +2/+2 until end of turn.)\nBattle-Mad Ronin attacks each combat if able. diff --git a/forge-gui/res/cardsfolder/b/brothers_yamazaki.txt b/forge-gui/res/cardsfolder/b/brothers_yamazaki.txt index eb64f74ce92..36da0aff1c4 100644 --- a/forge-gui/res/cardsfolder/b/brothers_yamazaki.txt +++ b/forge-gui/res/cardsfolder/b/brothers_yamazaki.txt @@ -2,7 +2,7 @@ Name:Brothers Yamazaki ManaCost:2 R Types:Legendary Creature Human Samurai PT:2/1 -K:Bushido 1 +K:Bushido:1 S:Mode$ Continuous | Affected$ Permanent.namedBrothers Yamazaki | CheckSVar$ X | SVarCompare$ EQ2 | AddHiddenKeyword$ Legend rule doesn't apply to CARDNAME. | Description$ If there are exactly two permanents named Brothers Yamazaki on the battlefield, the "legend rule" doesn't apply to them. SVar:X:Count$Valid Permanent.namedBrothers Yamazaki S:Mode$ Continuous | Affected$ Creature.Other+namedBrothers Yamazaki | AddPower$ 2 | AddToughness$ 2 | AddKeyword$ Haste | Description$ Each other creature named CARDNAME gets +2/+2 and has haste. diff --git a/forge-gui/res/cardsfolder/b/bushi_tenderfoot_kenzo_the_hardhearted.txt b/forge-gui/res/cardsfolder/b/bushi_tenderfoot_kenzo_the_hardhearted.txt index 6a09818ea85..eae910a877c 100644 --- a/forge-gui/res/cardsfolder/b/bushi_tenderfoot_kenzo_the_hardhearted.txt +++ b/forge-gui/res/cardsfolder/b/bushi_tenderfoot_kenzo_the_hardhearted.txt @@ -16,6 +16,6 @@ Colors:white Types:Legendary Creature Human Samurai PT:3/4 K:Double Strike -K:Bushido 2 +K:Bushido:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/kenzo_the_hardhearted.jpg Oracle:Double strike, bushido 2 (When this blocks or becomes blocked, it gets +2/+2 until end of turn.) diff --git a/forge-gui/res/cardsfolder/c/cursed_ronin.txt b/forge-gui/res/cardsfolder/c/cursed_ronin.txt index 18aa922b8e3..0c2295a248e 100644 --- a/forge-gui/res/cardsfolder/c/cursed_ronin.txt +++ b/forge-gui/res/cardsfolder/c/cursed_ronin.txt @@ -3,6 +3,6 @@ ManaCost:3 B Types:Creature Human Samurai PT:1/1 A:AB$ Pump | Cost$ B | NumAtt$ +1 | NumDef$ +1 | SpellDescription$ CARDNAME gets +1/+1 until end of turn. -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/cursed_ronin.jpg Oracle:Bushido 1 (Whenever this creature blocks or becomes blocked, it gets +1/+1 until end of turn.)\n{B}: Cursed Ronin gets +1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/d/devoted_retainer.txt b/forge-gui/res/cardsfolder/d/devoted_retainer.txt index 14f11e98e37..06e83acc4d6 100644 --- a/forge-gui/res/cardsfolder/d/devoted_retainer.txt +++ b/forge-gui/res/cardsfolder/d/devoted_retainer.txt @@ -2,6 +2,6 @@ Name:Devoted Retainer ManaCost:W Types:Creature Human Samurai PT:1/1 -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/devoted_retainer.jpg Oracle:Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/f/fumiko_the_lowblood.txt b/forge-gui/res/cardsfolder/f/fumiko_the_lowblood.txt index f80f1dc47a8..3198a9223b0 100644 --- a/forge-gui/res/cardsfolder/f/fumiko_the_lowblood.txt +++ b/forge-gui/res/cardsfolder/f/fumiko_the_lowblood.txt @@ -2,7 +2,7 @@ Name:Fumiko the Lowblood ManaCost:2 R R Types:Legendary Creature Human Samurai PT:3/2 -K:Bushido X +K:Bushido:X S:Mode$ Continuous | Affected$ Creature.OppCtrl | AddHiddenKeyword$ CARDNAME attacks each combat if able. | Description$ Creatures your opponents control attack each combat if able. SVar:Picture:http://www.wizards.com/global/images/magic/general/fumiko_the_lowblood.jpg Oracle:Fumiko the Lowblood has bushido X, where X is the number of attacking creatures. (When this blocks or becomes blocked, it gets +X/+X until end of turn.)\nCreatures your opponents control attack each combat if able. diff --git a/forge-gui/res/cardsfolder/h/hand_of_cruelty.txt b/forge-gui/res/cardsfolder/h/hand_of_cruelty.txt index d1ff01a0442..407ba0015d0 100644 --- a/forge-gui/res/cardsfolder/h/hand_of_cruelty.txt +++ b/forge-gui/res/cardsfolder/h/hand_of_cruelty.txt @@ -3,6 +3,6 @@ ManaCost:B B Types:Creature Human Samurai PT:2/2 K:Protection from white -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://resources.wizards.com/magic/cards/sok/en-us/card74063.jpg Oracle:Protection from white\nBushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/h/hand_of_honor.txt b/forge-gui/res/cardsfolder/h/hand_of_honor.txt index 23a3b112d4a..2b7e48da7a0 100644 --- a/forge-gui/res/cardsfolder/h/hand_of_honor.txt +++ b/forge-gui/res/cardsfolder/h/hand_of_honor.txt @@ -3,6 +3,6 @@ ManaCost:W W Types:Creature Human Samurai PT:2/2 K:Protection from black -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/hand_of_honor.jpg Oracle:Protection from black\nBushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/i/iizuka_the_ruthless.txt b/forge-gui/res/cardsfolder/i/iizuka_the_ruthless.txt index 90e112f9933..e39b9fc9c41 100644 --- a/forge-gui/res/cardsfolder/i/iizuka_the_ruthless.txt +++ b/forge-gui/res/cardsfolder/i/iizuka_the_ruthless.txt @@ -2,7 +2,7 @@ Name:Iizuka the Ruthless ManaCost:3 R R Types:Legendary Creature Human Samurai PT:3/3 -K:Bushido 2 +K:Bushido:2 A:AB$ PumpAll | Cost$ 2 R Sac<1/Samurai> | ValidCards$ Creature.Samurai+YouCtrl | KW$ Double Strike | SpellDescription$ Samurai creatures you control gain double strike until end of turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/iizuka_the_ruthless.jpg diff --git a/forge-gui/res/cardsfolder/i/indebted_samurai.txt b/forge-gui/res/cardsfolder/i/indebted_samurai.txt index 2d91e71c3e0..252d72858ef 100644 --- a/forge-gui/res/cardsfolder/i/indebted_samurai.txt +++ b/forge-gui/res/cardsfolder/i/indebted_samurai.txt @@ -2,7 +2,7 @@ Name:Indebted Samurai ManaCost:3 W Types:Creature Human Samurai PT:2/3 -K:Bushido 1 +K:Bushido:1 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Samurai.YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPutCounter | TriggerDescription$ Whenever a Samurai you control dies, you may put a +1/+1 counter on CARDNAME. SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | ConditionPresent$ Card.StrictlySelf DeckHints:Type$Samurai diff --git a/forge-gui/res/cardsfolder/i/inner_chamber_guard.txt b/forge-gui/res/cardsfolder/i/inner_chamber_guard.txt index 99d6a410da8..fe93f729a18 100644 --- a/forge-gui/res/cardsfolder/i/inner_chamber_guard.txt +++ b/forge-gui/res/cardsfolder/i/inner_chamber_guard.txt @@ -2,6 +2,6 @@ Name:Inner-Chamber Guard ManaCost:1 W Types:Creature Human Samurai PT:0/2 -K:Bushido 2 +K:Bushido:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/inner_chamber_guard.jpg Oracle:Bushido 2 (When this blocks or becomes blocked, it gets +2/+2 until end of turn.) diff --git a/forge-gui/res/cardsfolder/i/isao_enlightened_bushi.txt b/forge-gui/res/cardsfolder/i/isao_enlightened_bushi.txt index 319f5460aeb..7e1e14265d7 100644 --- a/forge-gui/res/cardsfolder/i/isao_enlightened_bushi.txt +++ b/forge-gui/res/cardsfolder/i/isao_enlightened_bushi.txt @@ -3,7 +3,7 @@ ManaCost:2 G Types:Legendary Creature Human Samurai PT:2/1 K:CARDNAME can't be countered. -K:Bushido 2 +K:Bushido:2 A:AB$ Regenerate | Cost$ 2 | ValidTgts$ Samurai | TgtPrompt$ Select target Samurai. | SpellDescription$ Regenerate target Samurai. DeckHints:Type$Samurai SVar:Picture:http://www.wizards.com/global/images/magic/general/isao_enlightened_bushi.jpg diff --git a/forge-gui/res/cardsfolder/k/kentaro_the_smiling_cat.txt b/forge-gui/res/cardsfolder/k/kentaro_the_smiling_cat.txt index d661956754a..03757801b39 100644 --- a/forge-gui/res/cardsfolder/k/kentaro_the_smiling_cat.txt +++ b/forge-gui/res/cardsfolder/k/kentaro_the_smiling_cat.txt @@ -2,7 +2,7 @@ Name:Kentaro, the Smiling Cat ManaCost:1 W Types:Legendary Creature Human Samurai PT:2/1 -K:Bushido 1 +K:Bushido:1 S:Mode$ Continuous | Affected$ Card.Samurai+YouCtrl | AddKeyword$ Alternative Cost:ConvertedManaCost | AffectedZone$ Hand,Graveyard,Exile,Library,Command | Description$ You may pay {X} rather than pay the mana cost for Samurai spells you cast, where X is that spell's converted mana cost. SVar:Picture:http://www.wizards.com/global/images/magic/general/kentaro_the_smiling_cat.jpg Oracle:Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.)\nYou may pay {X} rather than pay the mana cost for Samurai spells you cast, where X is that spell's converted mana cost. diff --git a/forge-gui/res/cardsfolder/k/kitsune_blademaster.txt b/forge-gui/res/cardsfolder/k/kitsune_blademaster.txt index 413a686af49..32be050ac9a 100644 --- a/forge-gui/res/cardsfolder/k/kitsune_blademaster.txt +++ b/forge-gui/res/cardsfolder/k/kitsune_blademaster.txt @@ -3,6 +3,6 @@ ManaCost:2 W Types:Creature Fox Samurai PT:2/2 K:First Strike -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/kitsune_blademaster.jpg Oracle:First strike\nBushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/k/kitsune_dawnblade.txt b/forge-gui/res/cardsfolder/k/kitsune_dawnblade.txt index d450f8f3ea1..187a782e61f 100644 --- a/forge-gui/res/cardsfolder/k/kitsune_dawnblade.txt +++ b/forge-gui/res/cardsfolder/k/kitsune_dawnblade.txt @@ -2,7 +2,7 @@ Name:Kitsune Dawnblade ManaCost:4 W Types:Creature Fox Samurai PT:2/3 -K:Bushido 1 +K:Bushido:1 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigTap | TriggerDescription$ When CARDNAME enters the battlefield, you may tap target creature. SVar:TrigTap:DB$Tap | ValidTgts$ Creature | TgtPrompt$ Select target creature SVar:PlayMain1:TRUE diff --git a/forge-gui/res/cardsfolder/k/konda_lord_of_eiganjo.txt b/forge-gui/res/cardsfolder/k/konda_lord_of_eiganjo.txt index e1934f11018..a8bf4bb92c6 100644 --- a/forge-gui/res/cardsfolder/k/konda_lord_of_eiganjo.txt +++ b/forge-gui/res/cardsfolder/k/konda_lord_of_eiganjo.txt @@ -3,7 +3,7 @@ ManaCost:5 W W Types:Legendary Creature Human Samurai PT:3/3 K:Vigilance -K:Bushido 5 +K:Bushido:5 K:Indestructible SVar:Picture:http://www.wizards.com/global/images/magic/general/konda_lord_of_eiganjo.jpg Oracle:Vigilance, indestructible\nBushido 5 (When this blocks or becomes blocked, it gets +5/+5 until end of turn.) diff --git a/forge-gui/res/cardsfolder/k/kondas_hatamoto.txt b/forge-gui/res/cardsfolder/k/kondas_hatamoto.txt index 863c2cf4b29..62169bc52e4 100644 --- a/forge-gui/res/cardsfolder/k/kondas_hatamoto.txt +++ b/forge-gui/res/cardsfolder/k/kondas_hatamoto.txt @@ -2,7 +2,7 @@ Name:Konda's Hatamoto ManaCost:1 W Types:Creature Human Samurai PT:1/2 -K:Bushido 1 +K:Bushido:1 S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 1 | AddToughness$ 2 | AddKeyword$ Vigilance | CheckSVar$ X | SVarCompare$ GE1 | Description$ As long as you control a legendary Samurai, CARDNAME gets +1/+2 and has vigilance. (Attacking doesn't cause this creature to tap.) SVar:X:Count$Valid Samurai.Legendary+YouCtrl SVar:BuffedBy:Samurai.Legendary diff --git a/forge-gui/res/cardsfolder/k/kuros_taken.txt b/forge-gui/res/cardsfolder/k/kuros_taken.txt index 1bfa29047ef..b659011bbfd 100644 --- a/forge-gui/res/cardsfolder/k/kuros_taken.txt +++ b/forge-gui/res/cardsfolder/k/kuros_taken.txt @@ -2,7 +2,7 @@ Name:Kuro's Taken ManaCost:1 B Types:Creature Rat Samurai PT:1/1 -K:Bushido 1 +K:Bushido:1 A:AB$ Regenerate | Cost$ 1 B | SpellDescription$ Regenerate CARDNAME. SVar:Picture:http://www.wizards.com/global/images/magic/general/kuros_taken.jpg Oracle:Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.)\n{1}{B}: Regenerate Kuro's Taken. diff --git a/forge-gui/res/cardsfolder/m/mothrider_samurai.txt b/forge-gui/res/cardsfolder/m/mothrider_samurai.txt index d828ea96ca8..397ae2afc1f 100644 --- a/forge-gui/res/cardsfolder/m/mothrider_samurai.txt +++ b/forge-gui/res/cardsfolder/m/mothrider_samurai.txt @@ -3,6 +3,6 @@ ManaCost:3 W Types:Creature Human Samurai PT:2/2 K:Flying -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/mothrider_samurai.jpg Oracle:Flying\nBushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/n/nagao_bound_by_honor.txt b/forge-gui/res/cardsfolder/n/nagao_bound_by_honor.txt index 682dd65811a..5c6cfa7efca 100644 --- a/forge-gui/res/cardsfolder/n/nagao_bound_by_honor.txt +++ b/forge-gui/res/cardsfolder/n/nagao_bound_by_honor.txt @@ -2,7 +2,7 @@ Name:Nagao, Bound by Honor ManaCost:3 W Types:Legendary Creature Human Samurai PT:3/3 -K:Bushido 1 +K:Bushido:1 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPumpAll | TriggerDescription$ Whenever CARDNAME attacks, Samurai creatures you control get +1/+1 until end of turn. SVar:TrigPumpAll:DB$PumpAll | ValidCards$ Creature.Samurai+YouCtrl | NumAtt$ +1 | NumDef$ +1 SVar:RemRandomDeck:True diff --git a/forge-gui/res/cardsfolder/n/nezumi_ronin.txt b/forge-gui/res/cardsfolder/n/nezumi_ronin.txt index 3715059912a..8754dd24b79 100644 --- a/forge-gui/res/cardsfolder/n/nezumi_ronin.txt +++ b/forge-gui/res/cardsfolder/n/nezumi_ronin.txt @@ -2,6 +2,6 @@ Name:Nezumi Ronin ManaCost:2 B Types:Creature Rat Samurai PT:3/1 -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/nezumi_ronin.jpg Oracle:Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/n/numai_outcast.txt b/forge-gui/res/cardsfolder/n/numai_outcast.txt index bab3a5a89c3..6aa216a4b57 100644 --- a/forge-gui/res/cardsfolder/n/numai_outcast.txt +++ b/forge-gui/res/cardsfolder/n/numai_outcast.txt @@ -2,7 +2,7 @@ Name:Numai Outcast ManaCost:3 B Types:Creature Human Samurai PT:1/1 -K:Bushido 2 +K:Bushido:2 A:AB$ Regenerate | Cost$ B PayLife<5> | SpellDescription$ Regenerate CARDNAME. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/numai_outcast.jpg diff --git a/forge-gui/res/cardsfolder/o/opal_eye_kondas_yojimbo.txt b/forge-gui/res/cardsfolder/o/opal_eye_kondas_yojimbo.txt index 6d55248d7ec..104bd5b35c0 100644 --- a/forge-gui/res/cardsfolder/o/opal_eye_kondas_yojimbo.txt +++ b/forge-gui/res/cardsfolder/o/opal_eye_kondas_yojimbo.txt @@ -3,7 +3,7 @@ ManaCost:1 W W Types:Legendary Creature Fox Samurai PT:1/4 K:Defender -K:Bushido 1 +K:Bushido:1 A:AB$ ChooseSource | Cost$ T | Choices$ Card,Emblem | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice would deal damage this turn, that damage is dealt to CARDNAME instead. SVar:DBEffect:DB$ Effect | ReplacementEffects$ SelflessDamage | Triggers$ OutOfSight | SVars$ SelflessDmg,OutOfSight | References$ SelflessDamage,OutOfSight,SelflessDmg,ExileEffect | Duration$ HostLeavesOrEOT | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card,Emblem | ConditionCompare$ GE1 SVar:SelflessDamage:Event$ DamageDone | ValidTarget$ You | ValidSource$ Card.ChosenCard,Emblem.ChosenCard | ReplaceWith$ SelflessDmg | DamageTarget$ EffectSource | Description$ The next time a source of your choice would deal damage to you this turn, that damage is dealt to EFFECTSOURCE instead. diff --git a/forge-gui/res/cardsfolder/r/ronin_cavekeeper.txt b/forge-gui/res/cardsfolder/r/ronin_cavekeeper.txt index 52a53a0472e..68df37eec12 100644 --- a/forge-gui/res/cardsfolder/r/ronin_cavekeeper.txt +++ b/forge-gui/res/cardsfolder/r/ronin_cavekeeper.txt @@ -2,6 +2,6 @@ Name:Ronin Cavekeeper ManaCost:5 R Types:Creature Human Samurai PT:4/3 -K:Bushido 2 +K:Bushido:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/ronin_cavekeeper.jpg Oracle:Bushido 2 (When this blocks or becomes blocked, it gets +2/+2 until end of turn.) diff --git a/forge-gui/res/cardsfolder/r/ronin_cliffrider.txt b/forge-gui/res/cardsfolder/r/ronin_cliffrider.txt index 49a83da40f0..5f71108785f 100644 --- a/forge-gui/res/cardsfolder/r/ronin_cliffrider.txt +++ b/forge-gui/res/cardsfolder/r/ronin_cliffrider.txt @@ -2,7 +2,7 @@ Name:Ronin Cliffrider ManaCost:3 R R Types:Creature Human Samurai PT:2/2 -K:Bushido 1 +K:Bushido:1 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDamage | OptionalDecider$ You| TriggerDescription$ Whenever CARDNAME attacks, you may have it deal 1 damage to each creature defending player controls. SVar:TrigDamage:DB$DamageAll | ValidCards$ Creature.DefenderCtrl | NumDmg$ 1| ValidDescription$ each creature defending player controls. SVar:HasAttackEffect:TRUE diff --git a/forge-gui/res/cardsfolder/r/ronin_houndmaster.txt b/forge-gui/res/cardsfolder/r/ronin_houndmaster.txt index 3464f042b6e..b4d5e5a1554 100644 --- a/forge-gui/res/cardsfolder/r/ronin_houndmaster.txt +++ b/forge-gui/res/cardsfolder/r/ronin_houndmaster.txt @@ -3,6 +3,6 @@ ManaCost:2 R Types:Creature Human Samurai PT:2/2 K:Haste -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/ronin_houndmaster.jpg Oracle:Haste\nBushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/s/samurai_enforcers.txt b/forge-gui/res/cardsfolder/s/samurai_enforcers.txt index cea7583f18b..b8531335dad 100644 --- a/forge-gui/res/cardsfolder/s/samurai_enforcers.txt +++ b/forge-gui/res/cardsfolder/s/samurai_enforcers.txt @@ -2,6 +2,6 @@ Name:Samurai Enforcers ManaCost:4 W W Types:Creature Human Samurai PT:4/4 -K:Bushido 2 +K:Bushido:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/samurai_enforcers.jpg Oracle:Bushido 2 (When this blocks or becomes blocked, it gets +2/+2 until end of turn.) diff --git a/forge-gui/res/cardsfolder/s/samurai_of_the_pale_curtain.txt b/forge-gui/res/cardsfolder/s/samurai_of_the_pale_curtain.txt index 4e086b54bc2..f2b9ccb9f29 100644 --- a/forge-gui/res/cardsfolder/s/samurai_of_the_pale_curtain.txt +++ b/forge-gui/res/cardsfolder/s/samurai_of_the_pale_curtain.txt @@ -2,7 +2,7 @@ Name:Samurai of the Pale Curtain ManaCost:W W Types:Creature Fox Samurai PT:2/2 -K:Bushido 1 +K:Bushido:1 R:Event$ Moved | ActiveZones$ Battlefield | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Permanent | ReplaceWith$ Exile | Description$ If a permanent would be put into a graveyard, exile it instead. SVar:Exile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | Defined$ ReplacedCard SVar:Picture:http://www.wizards.com/global/images/magic/general/samurai_of_the_pale_curtain.jpg diff --git a/forge-gui/res/cardsfolder/s/sensei_golden_tail.txt b/forge-gui/res/cardsfolder/s/sensei_golden_tail.txt index a4fec351bae..03eda37eee9 100644 --- a/forge-gui/res/cardsfolder/s/sensei_golden_tail.txt +++ b/forge-gui/res/cardsfolder/s/sensei_golden_tail.txt @@ -2,8 +2,8 @@ Name:Sensei Golden-Tail ManaCost:1 W Types:Legendary Creature Fox Samurai PT:2/1 -K:Bushido 1 +K:Bushido:1 A:AB$ PutCounter | Cost$ 1 W T | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ TRAINING | CounterNum$ 1 | SorcerySpeed$ True | SubAbility$ DBAnimate | SpellDescription$ Put a training counter on target creature. That creature gains bushido 1 and becomes a Samurai in addition to its other creature types. Activate this ability only any time you could cast a sorcery. -SVar:DBAnimate:DB$Animate | Defined$ Targeted | Types$ Samurai | Keywords$ Bushido 1 | Permanent$ True +SVar:DBAnimate:DB$Animate | Defined$ Targeted | Types$ Samurai | Keywords$ Bushido:1 | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/sensei_golden_tail.jpg Oracle:Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.)\n{1}{W}, {T}: Put a training counter on target creature. That creature gains bushido 1 and becomes a Samurai in addition to its other creature types. Activate this ability only any time you could cast a sorcery. diff --git a/forge-gui/res/cardsfolder/s/silverstorm_samurai.txt b/forge-gui/res/cardsfolder/s/silverstorm_samurai.txt index 2e7edf7e48f..da8834cd8ea 100644 --- a/forge-gui/res/cardsfolder/s/silverstorm_samurai.txt +++ b/forge-gui/res/cardsfolder/s/silverstorm_samurai.txt @@ -3,6 +3,6 @@ ManaCost:4 W W Types:Creature Fox Samurai PT:3/3 K:Flash -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/silverstorm_samurai.jpg Oracle:Flash\nBushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/s/sokenzan_renegade.txt b/forge-gui/res/cardsfolder/s/sokenzan_renegade.txt index 56d0251da31..8fef58c8dcf 100644 --- a/forge-gui/res/cardsfolder/s/sokenzan_renegade.txt +++ b/forge-gui/res/cardsfolder/s/sokenzan_renegade.txt @@ -2,7 +2,7 @@ Name:Sokenzan Renegade ManaCost:2 R Types:Creature Ogre Samurai Mercenary PT:3/3 -K:Bushido 1 +K:Bushido:1 T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigGainControl | APlayerHasMostCardsInHand$ True | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, if a player has more cards in hand than each other player, the player who has the most cards in hand gains control of CARDNAME. SVar:TrigGainControl:DB$ GainControl | Defined$ Self | NewController$ Player.withMostCardsInHand SVar:RemAIDeck:True diff --git a/forge-gui/res/cardsfolder/s/sokenzan_spellblade.txt b/forge-gui/res/cardsfolder/s/sokenzan_spellblade.txt index f2b291596e8..e0374e6f98e 100644 --- a/forge-gui/res/cardsfolder/s/sokenzan_spellblade.txt +++ b/forge-gui/res/cardsfolder/s/sokenzan_spellblade.txt @@ -2,7 +2,7 @@ Name:Sokenzan Spellblade ManaCost:4 R Types:Creature Ogre Samurai Shaman PT:2/3 -K:Bushido 1 +K:Bushido:1 A:AB$ Pump | Cost$ 1 R | Defined$ Self | NumAtt$ +X | References$ X | SpellDescription$ CARDNAME gets +X/+0 until end of turn, where X is the number of cards in your hand. SVar:X:Count$InYourHand SVar:Picture:http://www.wizards.com/global/images/magic/general/sokenzan_spellblade.jpg diff --git a/forge-gui/res/cardsfolder/t/takeno_samurai_general.txt b/forge-gui/res/cardsfolder/t/takeno_samurai_general.txt index ad7d8ae063d..836119c873e 100644 --- a/forge-gui/res/cardsfolder/t/takeno_samurai_general.txt +++ b/forge-gui/res/cardsfolder/t/takeno_samurai_general.txt @@ -2,7 +2,7 @@ Name:Takeno, Samurai General ManaCost:5 W Types:Legendary Creature Human Samurai PT:3/3 -K:Bushido 2 +K:Bushido:2 S:Mode$ Continuous | Affected$ Creature.Samurai+Other+YouCtrl | AffectedZone$ Battlefield | AddPower$ AffectedX | AddToughness$ AffectedX | Description$ Each other Samurai creature you control gets +1/+1 for each point of bushido it has. SVar:AffectedX:Count$BushidoPoint SVar:PlayMain1:TRUE diff --git a/forge-gui/res/cardsfolder/t/takenos_cavalry.txt b/forge-gui/res/cardsfolder/t/takenos_cavalry.txt index 833d3ca7dac..50eaa8d70d4 100644 --- a/forge-gui/res/cardsfolder/t/takenos_cavalry.txt +++ b/forge-gui/res/cardsfolder/t/takenos_cavalry.txt @@ -2,7 +2,7 @@ Name:Takeno's Cavalry ManaCost:3 W Types:Creature Human Samurai Archer PT:1/1 -K:Bushido 1 +K:Bushido:1 A:AB$ DealDamage | Cost$ T | ValidTgts$ Spirit.attacking,Spirit.blocking | TgtPrompt$ Select target attacking or blocking Spirit | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target attacking or blocking Spirit. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/takenos_cavalry.jpg diff --git a/forge-gui/res/cardsfolder/t/toshiro_umezawa.txt b/forge-gui/res/cardsfolder/t/toshiro_umezawa.txt index 2af01ed9fc5..cc5733ee16e 100644 --- a/forge-gui/res/cardsfolder/t/toshiro_umezawa.txt +++ b/forge-gui/res/cardsfolder/t/toshiro_umezawa.txt @@ -2,7 +2,7 @@ Name:Toshiro Umezawa ManaCost:1 B B Types:Legendary Creature Human Samurai PT:2/2 -K:Bushido 1 +K:Bushido:1 T:Mode$ ChangesZone | ValidCard$ Creature.OppCtrl | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigPlay | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature an opponent controls dies, you may cast target instant card from your graveyard. If that card would be put into a graveyard this turn, exile it instead. SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.YouCtrl | TgtPrompt$ Choose target instant from your graveyard | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell SVar:Picture:http://www.wizards.com/global/images/magic/general/toshiro_umezawa.jpg