mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
Merge pull request #1392 from Simisays/DoubleTeamBis
HBG Double Team Ability + 13 cards
This commit is contained in:
@@ -1388,6 +1388,10 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
||||
public final boolean hasDoubleStrike() {
|
||||
return hasKeyword(Keyword.DOUBLE_STRIKE);
|
||||
}
|
||||
|
||||
public final boolean hasDoubleTeam() {
|
||||
return hasKeyword(Keyword.DOUBLE_TEAM);
|
||||
}
|
||||
|
||||
public final boolean hasSecondStrike() {
|
||||
return hasDoubleStrike() || !hasFirstStrike();
|
||||
|
||||
@@ -1063,6 +1063,22 @@ public class CardFactoryUtil {
|
||||
dethroneTrigger.setOverridingAbility(AbilityFactory.getAbility(abString, card));
|
||||
|
||||
inst.addTrigger(dethroneTrigger);
|
||||
} else if (keyword.equals("Double Team")) {
|
||||
final String doubleteamScript = "Mode$ Attacks | ValidCard$ Card.Self+nonToken | TriggerZones$ Battlefield | TriggerDescription$ (" + inst.getReminderText() + ")";
|
||||
final String makeString = "DB$ MakeCard | DefinedName$ Self | Zone$ Hand | RememberMade$ True";
|
||||
final String forgetString = "DB$ Effect | Duration$ Permanent | RememberObjects$ Remembered | ImprintCards$ TriggeredAttacker | StaticAbilities$ RemoveDoubleTeamMade";
|
||||
final String madeforgetmadeString = "Mode$ Continuous | EffectZone$ Command | Affected$ Card.IsRemembered,Card.IsImprinted | RemoveKeyword$ Double Team | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Both cards perpetually lose double team.";
|
||||
final String CleanupString = "DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True";
|
||||
final Trigger trigger = TriggerHandler.parseTrigger(doubleteamScript, card, intrinsic);
|
||||
final SpellAbility youMake = AbilityFactory.getAbility(makeString, card);
|
||||
final AbilitySub forget = (AbilitySub) AbilityFactory.getAbility(forgetString, card);
|
||||
final AbilitySub Cleanup = (AbilitySub) AbilityFactory.getAbility(CleanupString, card);
|
||||
forget.setSVar("RemoveDoubleTeamMade",madeforgetmadeString);
|
||||
youMake.setSubAbility(forget);
|
||||
forget.setSubAbility(Cleanup);
|
||||
trigger.setOverridingAbility(youMake);
|
||||
|
||||
inst.addTrigger(trigger);
|
||||
} else if (keyword.startsWith("Echo")) {
|
||||
final String[] k = keyword.split(":");
|
||||
final String cost = k[1];
|
||||
|
||||
@@ -1364,6 +1364,7 @@ public class CardView extends GameEntityView {
|
||||
public boolean hasDefender() { return get(TrackableProperty.HasDefender); }
|
||||
public boolean hasDivideDamage() { return get(TrackableProperty.HasDivideDamage); }
|
||||
public boolean hasDoubleStrike() { return get(TrackableProperty.HasDoubleStrike); }
|
||||
public boolean hasDoubleTeam() { return get(TrackableProperty.HasDoubleTeam); }
|
||||
public boolean hasFirstStrike() { return get(TrackableProperty.HasFirstStrike); }
|
||||
public boolean hasFlying() { return get(TrackableProperty.HasFlying); }
|
||||
public boolean hasFear() { return get(TrackableProperty.HasFear); }
|
||||
|
||||
@@ -60,6 +60,7 @@ public enum Keyword {
|
||||
DEVOID("Devoid", SimpleKeyword.class, true, "This card has no color."),
|
||||
DISTURB("Disturb", KeywordWithCost.class, false, "You may cast this card from your graveyard transformed for its disturb cost."),
|
||||
DOUBLE_STRIKE("Double Strike", SimpleKeyword.class, true, "This creature deals both first-strike and regular combat damage."),
|
||||
DOUBLE_TEAM("Double Team", SimpleKeyword.class, true, "When this creature attacks, if it's not a token, conjure a duplicate of it into your hand. Then both cards perpetually lose double team."),
|
||||
DREDGE("Dredge", KeywordWithAmount.class, false, "If you would draw a card, instead you may put exactly {%d:card} from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card."),
|
||||
ECHO("Echo", KeywordWithCost.class, false, "At the beginning of your upkeep, if this permanent came under your control since the beginning of your last upkeep, sacrifice it unless you pay %s."),
|
||||
EMBALM("Embalm", KeywordWithCost.class, false, "%s, Exile this card from your graveyard: Create a token that's a copy of this card, except it's white, it has no mana cost, and it's a Zombie in addition to its other types. Embalm only as a sorcery."),
|
||||
|
||||
@@ -138,6 +138,7 @@ public enum TrackableProperty {
|
||||
HasDefender(TrackableTypes.BooleanType),
|
||||
HasDivideDamage(TrackableTypes.BooleanType),
|
||||
HasDoubleStrike(TrackableTypes.BooleanType),
|
||||
HasDoubleTeam(TrackableTypes.BooleanType),
|
||||
HasFirstStrike(TrackableTypes.BooleanType),
|
||||
HasFlying(TrackableTypes.BooleanType),
|
||||
HasFear(TrackableTypes.BooleanType),
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
Name:Genasi Rabble-Rouser
|
||||
ManaCost:1 R
|
||||
Types:Creature Elemental Shaman
|
||||
K:Double Team
|
||||
A:AB$ PumpAll | Cost$ 1 R | ValidCards$ Creature.YouCtrl+namedGenasi Rabble-Rouser | NumAtt$ +1 | SpellDescription$ Creatures you control named Genasi Rabble-Rouser get +1/+0 until end of turn.
|
||||
DeckHints:Name$Genasi Rabble-Rouser
|
||||
Oracle:Double team\n{1}{R}: Creatures you control named Genasi Rabble-Rouser gets +1/+0 until end of turn.
|
||||
@@ -0,0 +1,7 @@
|
||||
Name:Giant Fire Beetles
|
||||
ManaCost:2 R
|
||||
Types:Creature Insect
|
||||
PT:2/2
|
||||
K:Double Team
|
||||
K:Menace
|
||||
Oracle:Menace\nDouble team
|
||||
10
forge-gui/res/cardsfolder/upcoming/gnoll_hunting_party.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/gnoll_hunting_party.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Gnoll Hunting Party
|
||||
ManaCost:5 R
|
||||
Types:Creature Gnoll
|
||||
PT:5/5
|
||||
S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ X | EffectZone$ All | Description$ This spell costs {1} less to cast for each creature you attacked with this turn.
|
||||
S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ First Strike | Condition$ PlayerTurn | Description$ As long as it's your turn, CARDNAME has first strike.
|
||||
SVar:X:Count$AttackersDeclared
|
||||
K:Double Team
|
||||
SVar:PlayMain2:TRUE
|
||||
Oracle:This spell costs {1} less to cast for each creature you attacked with this turn.\nDouble team\nAs long as it's your turn, Gnoll Hunting Party has first strike.
|
||||
@@ -0,0 +1,8 @@
|
||||
Name:Lizardfolk Librarians
|
||||
ManaCost:3 U
|
||||
Types:Creature Lizard
|
||||
PT:2/1
|
||||
K:Double Team
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigScry | TriggerDescription$ When CARDNAME enters the battlefield, scry 2.
|
||||
SVar:TrigScry:DB$ Scry | ScryNum$ 2
|
||||
Oracle:Double team\When Lizardfolk Librarians enters the battlefield, scry 2.
|
||||
@@ -0,0 +1,8 @@
|
||||
Name:Moradin's Disciples
|
||||
ManaCost:3 W
|
||||
Types:Creature Dwarf Cleric
|
||||
PT:2/3
|
||||
K:Double Team
|
||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ DBTap | TriggerDescription$ Whenever CARDNAME attacks, tap target creature defending player controls.
|
||||
SVar:DBTap:DB$ Tap | ValidTgts$ Creature | TargetsWithDefinedController$ TriggeredDefendingPlayer | TargetMax$ 1 | TgtPrompt$ Select target creature defending player controls
|
||||
Oracle:Double team\nWhenever Moradin's Disciples attacks, tap target creature defending player controls.
|
||||
7
forge-gui/res/cardsfolder/upcoming/ranger_squadron.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/ranger_squadron.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Name:Ranger Squadron
|
||||
ManaCost:4 W W
|
||||
Types:Creature Cat Ranger
|
||||
PT:3/4
|
||||
K:Flying
|
||||
K:Double Team
|
||||
Oracle:Flying\nDouble Team
|
||||
@@ -0,0 +1,9 @@
|
||||
Name:Seatower Imprisonment
|
||||
ManaCost:2 W W
|
||||
Types:Enchantment Aura
|
||||
K:Enchant creature or planeswalker you don't control
|
||||
A:SP$ Attach | ValidTgts$ Creature.YouDontCtrl,Planeswalker.YouDontCtrl | AILogic$ Curse
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigConjure | TriggerDescription$ When CARDNAME enters the battlefield, conjure a card named Soldiers of the Watch onto the battlefield.
|
||||
SVar:TrigConjure:DB$ MakeCard | Name$ Soldiers of the Watch | Zone$ Battlefield
|
||||
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddHiddenKeyword$ CARDNAME can't attack or block. & CARDNAME's activated abilities can't be activated. | Description$ Enchanted permanent can't attack or block and its activated abilities can't be activated.
|
||||
Oracle:Enchant creature or planeswalker you don't control\nWhen Seatower Imprisonment enters the battlefield, conjure a card named Soldiers of the Watch onto the battlefield.\nEnchanted permanent can't attack or block and its activated abilities can't be activated.
|
||||
@@ -0,0 +1,6 @@
|
||||
Name:Soldiers of the Watch
|
||||
ManaCost:1 W
|
||||
Types:Creature Human Soldier
|
||||
PT:2/1
|
||||
K:Double Team
|
||||
Oracle:Double Team
|
||||
11
forge-gui/res/cardsfolder/upcoming/sworn_to_the_legion.txt
Normal file
11
forge-gui/res/cardsfolder/upcoming/sworn_to_the_legion.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Name:Sworn to the Legion
|
||||
ManaCost:4 W W
|
||||
Types:Enchantment
|
||||
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ DBEffect | TriggerDescription$ When CARDNAME enters the battlefield, nontoken creatures you control perpetually gain double team.
|
||||
SVar:DBEffect:DB$ Effect | RememberObjects$ Valid Creature.YouCtrl+nonToken | StaticAbilities$ PerpetualDoubleTeam | Name$ Sworn to the Legion's Perpetual Effect | Duration$ Permanent
|
||||
SVar:PerpetualDoubleTeam:Mode$ Continuous | Affected$ Card.IsRemembered | AddKeyword$ Double Team | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ Nontoken creatures you control perpetually gain double team.
|
||||
T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ DBEffectCast | TriggerDescription$ Whenever you cast a creature spell, it perpetually gains double team.
|
||||
SVar:DBEffectCast:DB$ Effect | RememberObjects$ TriggeredCard | StaticAbilities$ PerpetualDoubleTeamCast | Name$ Sworn to the Legion's Perpetual Effect | Duration$ Permanent
|
||||
SVar:PerpetualDoubleTeamCast:Mode$ Continuous | Affected$ Card.IsRemembered | AddKeyword$ Double Team | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This creature perpetually gains double team.
|
||||
SVar:BuffedBy:Creature
|
||||
Oracle:When Sworn to the Legion enters the battlefield, nontoken creatures you control perpetually gain double team.\nWhenever you cast a creature spell, it perpetually gains double team.
|
||||
8
forge-gui/res/cardsfolder/upcoming/tiefling_outcasts.txt
Normal file
8
forge-gui/res/cardsfolder/upcoming/tiefling_outcasts.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Name:Tiefling Outcasts
|
||||
ManaCost:R
|
||||
Types:Creature Tiefling Peasant
|
||||
PT:1/1
|
||||
K:Double Team
|
||||
S:Mode$ Continuous | Affected$ Demon.Other+YouCtrl,Devil.Other+YouCtrl,Imp.Other+YouCtrl,Tiefling.Other+YouCtrl | AddPower$ 1 | Description$ Other Demons, Devils, Imps, and Tieflings you control get +1/+0.
|
||||
DeckHints:Type$Demon|Devil|Imp|Tiefling
|
||||
Oracle:Double Team\nOther Demons, Devils, Imps, and Tieflings you control get +1/+0.
|
||||
@@ -0,0 +1,10 @@
|
||||
Name:Ulder Ravengard, Marshal
|
||||
ManaCost:1 R W
|
||||
Types:Legendary Creature Human Noble Soldier
|
||||
PT:3/3
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPumpEOT | TriggerDescription$ When CARDNAME enters the battlefield, another target nontoken creature you control gains double team until end of turn.
|
||||
SVar:TrigPumpEOT:DB$ Pump | ValidTgts$ Creature.YouCtrl+nonToken+Other | TgtPrompt$ Select another target nontoken creature you control | KW$ Double Team
|
||||
T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigConjure | TriggerDescription$ Whenever NICKNAME attacks, conjure a duplicate of another target nontoken attacking creature into your hand.
|
||||
SVar:TrigConjure:DB$ MakeCard | ValidTgts$ Creature.attacking+Other+nonToken | TgtPrompt$ Select another target nontoken creature that is attacking | DefinedName$ Targeted | Zone$ Hand
|
||||
SVar:HasAttackEffect:TRUE
|
||||
Oracle:When Ulder Ravengard, Marshal enters the battlefield, another target nontoken creature you control gains double team until end of turn.\nWhenever Ulder Ravengard attacks, conjure a duplicate of another target nontoken attacking creature into your hand.
|
||||
@@ -0,0 +1,7 @@
|
||||
Name:Warriors of Tiamat
|
||||
ManaCost:4 R
|
||||
Types:Creature Dragon Warrior
|
||||
PT:4/2
|
||||
K:Haste
|
||||
K:Double Team
|
||||
Oracle:Haste\nDouble Team
|
||||
Reference in New Issue
Block a user