diff --git a/forge-game/src/main/java/forge/game/ability/effects/AlterAttributeEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AlterAttributeEffect.java index 79ad1993dc2..14ae5d11caf 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AlterAttributeEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AlterAttributeEffect.java @@ -46,6 +46,9 @@ public class AlterAttributeEffect extends SpellAbilityEffect { boolean altered = false; switch (attr.trim()) { + case "Harnessed": + altered = gameCard.setHarnessed(activate); + break; case "Plotted": altered = gameCard.setPlotted(activate); 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 9b883eab92b..92cc9a09a39 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -203,6 +203,7 @@ public class Card extends GameEntity implements Comparable, IHasSVars, ITr private boolean unearthed; private boolean ringbearer; private boolean monstrous; + private boolean harnessed; private boolean renowned; private boolean solved; private boolean tributed; @@ -2969,6 +2970,9 @@ public class Card extends GameEntity implements Comparable, IHasSVars, ITr if (monstrous) { sb.append("Monstrous\r\n"); } + if (harnessed) { + sb.append("Harnessed\r\n"); + } if (renowned) { sb.append("Renowned\r\n"); } @@ -6693,6 +6697,14 @@ public class Card extends GameEntity implements Comparable, IHasSVars, ITr setRingBearer(false); } + public final boolean isHarnessed() { + return harnessed; + } + public final boolean setHarnessed(final boolean harnessed0) { + harnessed = harnessed0; + return true; + } + public final boolean isMonstrous() { return monstrous; } diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index 33594fb3033..4e68c95a771 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -1828,6 +1828,10 @@ public class CardProperty { if (card.getDevouredCards().isEmpty()) { return false; } + } else if (property.equals("harnessed")) { + if (!card.isHarnessed()) { + return false; + } } else if (property.equals("IsMonstrous")) { if (!card.isMonstrous()) { return false; diff --git a/forge-gui/res/cardsfolder/upcoming/the_soul_stone.txt b/forge-gui/res/cardsfolder/upcoming/the_soul_stone.txt new file mode 100644 index 00000000000..e283c979dcd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_soul_stone.txt @@ -0,0 +1,9 @@ +Name:The Soul Stone +ManaCost:1 B +Types:Legendary Artifact Infinity Stone +K:Indestructible +A:AB$ AlterAttribute | Cost$ 6 B Exile<1/Creature> | Defined$ Self | Attributes$ Harnessed | StackDescription$ SpellDescription | SpellDescription$ Harness CARDNAME. (Once harnessed, its ∞ ability is active.) +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.Self+harnessed | TriggerZones$ Battlefield | Execute$ TrigReturn | TriggerDescription$ ∞ — At the beginning of your upkeep, return target creature card from your graveyard to the battlefield. +SVar:TrigReturn:DB$ Changezone | ValidTgts$ Creature.YouOwn | Origin$ Graveyard | Destination$ Battlefield +DeckHints:Ability$Graveyard +Oracle:Indestructible\n{T}: Add {B}.\n{6}{B}, {T}, Exile a creature you control: Harness The Soul Stone. (Once harnessed, its ∞ ability is active.)\n∞ — At the beginning of your upkeep, return target creature card from your graveyard to the battlefield. diff --git a/forge-gui/res/lists/TypeLists.txt b/forge-gui/res/lists/TypeLists.txt index 2f6adb4fe83..89fabc6c904 100644 --- a/forge-gui/res/lists/TypeLists.txt +++ b/forge-gui/res/lists/TypeLists.txt @@ -368,12 +368,14 @@ Food:Foods Fortification Gold Incubator:Incubators +Infinity Junk Key:Keys Lander:Landers Map Powerstone:Powerstones Spacecraft:Spacecraft +Stone:Stones Treasure:Treasures Vehicle:Vehicles [WalkerTypes]