mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
Merge branch 'master' into master2
This commit is contained in:
@@ -1398,7 +1398,7 @@ public abstract class GameState {
|
||||
c.setTurnInZone(turn);
|
||||
} else if (info.equals("IsToken")) {
|
||||
c.setGamePieceType(GamePieceType.TOKEN);
|
||||
} else if (info.equals("ClassLevel:")) {
|
||||
} else if (info.startsWith("ClassLevel:")) {
|
||||
c.setClassLevel(Integer.parseInt(info.substring(info.indexOf(':') + 1)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -258,6 +258,10 @@ public class CopyPermanentEffect extends TokenEffectBase {
|
||||
|
||||
if (sa.hasParam("ForEach")) {
|
||||
for (Player p : AbilityUtils.getDefinedPlayers(host, sa.getParam("ForEach"), sa)) {
|
||||
if (sa.hasParam("OptionalForEach") && !activator.getController().confirmAction(sa, null,
|
||||
Localizer.getInstance().getMessage("lblCopyPermanentConfirm") + " (" + p + ")", null)) {
|
||||
continue;
|
||||
}
|
||||
Card proto = getProtoType(sa, c, controller);
|
||||
proto.addRemembered(p);
|
||||
tokenTable.put(controller, proto, numCopies);
|
||||
|
||||
@@ -7206,6 +7206,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars, ITr
|
||||
setRegeneratedThisTurn(0);
|
||||
resetShieldCount();
|
||||
setBecameTargetThisTurn(false);
|
||||
setValiant(false);
|
||||
setFoughtThisTurn(false);
|
||||
turnedFaceUpThisTurn = false;
|
||||
clearMustBlockCards();
|
||||
|
||||
@@ -1553,7 +1553,7 @@ public class CardFactoryUtil {
|
||||
final String actualTrigger = "Mode$ Attacks | ValidCard$ Card.Self | Secondary$ True"
|
||||
+ " | TriggerDescription$ Myriad (" + inst.getReminderText() + ")";
|
||||
|
||||
final String copyStr = "DB$ CopyPermanent | Defined$ Self | TokenTapped$ True | Optional$ True | TokenAttacking$ RememberedPlayer & Valid Planeswalker.ControlledBy Remembered"
|
||||
final String copyStr = "DB$ CopyPermanent | Defined$ Self | TokenTapped$ True | OptionalForEach$ True | TokenAttacking$ RememberedPlayer & Valid Planeswalker.ControlledBy Remembered"
|
||||
+ "| ForEach$ OppNonDefendingPlayer | AtEOT$ ExileCombat | CleanupForEach$ True";
|
||||
|
||||
final SpellAbility copySA = AbilityFactory.getAbility(copyStr, card);
|
||||
|
||||
@@ -307,7 +307,7 @@ public class ManaCostBeingPaid {
|
||||
sc.xCount = sc.totalCount;
|
||||
}
|
||||
// nothing more left in otherSubtract
|
||||
return;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -327,7 +327,7 @@ public class ManaCostBeingPaid {
|
||||
sc.xCount = sc.totalCount;
|
||||
}
|
||||
// nothing more left in otherSubtract
|
||||
return;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -347,7 +347,7 @@ public class ManaCostBeingPaid {
|
||||
sc.xCount = sc.totalCount;
|
||||
}
|
||||
// nothing more left in otherSubtract
|
||||
return;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -367,7 +367,7 @@ public class ManaCostBeingPaid {
|
||||
sc.xCount = sc.totalCount;
|
||||
}
|
||||
// nothing more left in otherSubtract
|
||||
return;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -389,7 +389,7 @@ public class ManaCostBeingPaid {
|
||||
sc.xCount = sc.totalCount;
|
||||
}
|
||||
// nothing more left in otherSubtract
|
||||
return;
|
||||
break;
|
||||
}
|
||||
} else if (sc.xCount > 0) { // X part that can only be paid by specific color
|
||||
if (otherSubtract >= sc.xCount) {
|
||||
@@ -403,7 +403,7 @@ public class ManaCostBeingPaid {
|
||||
sc.totalCount -= otherSubtract;
|
||||
sc.xCount -= otherSubtract;
|
||||
// nothing more left in otherSubtract
|
||||
return;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Name:Doomsday
|
||||
ManaCost:B B B
|
||||
Types:Sorcery
|
||||
A:SP$ ChangeZone | Origin$ Graveyard,Library | Destination$ Library | ChangeType$ Card | ChangeNum$ 5 | SubAbility$ DBChangeZone | RememberChanged$ True | Mandatory$ True | SpellDescription$ Search your library and graveyard for five cards and exile the rest. Put the chosen cards on top of your library in any order. You lose half your life, rounded up.
|
||||
A:SP$ ChangeZone | Origin$ Graveyard,Library | Destination$ Library | ChangeType$ Card | ChangeNum$ 5 | Shuffle$ False | SubAbility$ DBChangeZone | RememberChanged$ True | Mandatory$ True | SpellDescription$ Search your library and graveyard for five cards and exile the rest. Put the chosen cards on top of your library in any order. You lose half your life, rounded up.
|
||||
SVar:DBChangeZone:DB$ ChangeZoneAll | Defined$ You | Origin$ Graveyard,Library | Destination$ Exile | ChangeType$ Card.IsNotRemembered | SubAbility$ DBDig
|
||||
SVar:DBDig:DB$ RearrangeTopOfLibrary | Defined$ You | NumCards$ X | SubAbility$ DBLoseLife
|
||||
SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ Y | SubAbility$ DBCleanup
|
||||
|
||||
@@ -2,7 +2,7 @@ Name:Saw in Half
|
||||
ManaCost:2 B
|
||||
Types:Instant
|
||||
A:SP$ Destroy | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBCopy | RememberLKI$ True | SpellDescription$ Destroy target creature.
|
||||
SVar:DBCopy:DB$ CopyPermanent | Defined$ Remembered | NumCopies$ 2 | Controller$ TargetedController | SetPower$ dX | SetToughness$ dY | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ If that creature dies this way, its controller creates two tokens that are copies of that creature, except their base power is half that creature's power and their base toughness is half that creature's toughness. Round up each time.
|
||||
SVar:DBCopy:DB$ CopyPermanent | Defined$ RememberedLKI | NumCopies$ 2 | Controller$ TargetedController | SetPower$ dX | SetToughness$ dY | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ If that creature dies this way, its controller creates two tokens that are copies of that creature, except their base power is half that creature's power and their base toughness is half that creature's toughness. Round up each time.
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
SVar:X:Remembered$Amount
|
||||
SVar:dX:RememberedLKI$CardPower/HalfUp
|
||||
|
||||
@@ -2,6 +2,6 @@ Name:Friendly Teddy
|
||||
ManaCost:2
|
||||
Types:Artifact Creature Bear Toy
|
||||
PT:2/2
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters, each player draws a card.
|
||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME dies, each player draws a card.
|
||||
SVar:TrigDraw:DB$ Draw | Defined$ Player
|
||||
Oracle:When Friendly Teddy enters, each player draws a card.
|
||||
Oracle:When Friendly Teddy dies, each player draws a card.
|
||||
@@ -0,0 +1,7 @@
|
||||
Name:Monstrous Emergence
|
||||
ManaCost:1 G
|
||||
Types:Sorcery
|
||||
A:SP$ DealDamage | Cost$ 1 G RevealOrChoose<1/Creature> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ X | SpellDescription$ CARDNAME deals damage equal to the power of the creature you chose or the card you revealed to target creature.
|
||||
SVar:X:Revealed$CardPower
|
||||
AI:RemoveDeck:All
|
||||
Oracle:As an additional cost to cast this spell, choose a creature you control or reveal a creature card from your hand.\nMonstrous Emergence deals damage equal to the power of the creature you chose or the card you revealed to target creature.
|
||||
@@ -5,7 +5,7 @@ PT:9/9
|
||||
K:Flying
|
||||
K:Lifelink
|
||||
K:Ward:Sac<3/Permanent.nonLand/nonland permanent>
|
||||
R:Event$ Moved | ActiveZones$ Battlefield | Destination$ Graveyard | ValidCard$ Card.nonToken+YouDontCtrl+OppOwn | ReplaceWith$ Exile | Description$ If a card you didn't control would be put into an opponent's graveyard from anywhere, exile it instead.
|
||||
R:Event$ Moved | ActiveZones$ Battlefield | Destination$ Graveyard | ValidLKI$ Card.nonToken+YouDontCtrl+OppOwn | ReplaceWith$ Exile | Description$ If a card you didn't control would be put into an opponent's graveyard from anywhere, exile it instead.
|
||||
SVar:Exile:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard
|
||||
S:Mode$ Continuous | Condition$ PlayerTurn | MayPlay$ True | Affected$ Card.ExiledWithSource | AffectedZone$ Exile | MayPlayAltManaCost$ PayLife<ConvertedManaCost> | Description$ During your turn, you may play cards exiled with NICKNAME. If you cast a spell this way, pay life equal to its mana value rather than pay its mana cost.
|
||||
Oracle:Flying, lifelink\nWard—Sacrifice three nonland permanents.\nIf a card you didn't control would be put into an opponent's graveyard from anywhere, exile it instead.\nDuring your turn, you may play cards exiled with Valgavoth. If you cast a spell this way, pay life equal to its mana value rather than pay its mana cost.
|
||||
@@ -1,6 +1,6 @@
|
||||
Name:Valgavoth's Onslaught
|
||||
ManaCost:X X G
|
||||
Types:Instant
|
||||
Types:Sorcery
|
||||
A:SP$ ManifestDread | Amount$ X | RememberManifested$ True | SubAbility$ DBPutCounter
|
||||
SVar:DBPutCounter:DB$ PutCounter | Defined$ RememberedCard | CounterType$ P1P1 | CounterNum$ X | SubAbility$ DBCleanup
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
|
||||
16
forge-gui/res/puzzle/PS_BLB4.pzl
Normal file
16
forge-gui/res/puzzle/PS_BLB4.pzl
Normal file
@@ -0,0 +1,16 @@
|
||||
[metadata]
|
||||
Name:Possibility Storm - Bloomburrow #04
|
||||
URL:https://i2.wp.com/www.possibilitystorm.com/wp-content/uploads/2024/09/latest-scaled.jpg?ssl=1
|
||||
Goal:Win
|
||||
Turns:1
|
||||
Difficulty:Mythic
|
||||
Description:Win this turn. Ensure your solution satisfies all possible blocking decisions. Good luck!
|
||||
[state]
|
||||
turn=1
|
||||
activeplayer=p0
|
||||
activephase=MAIN1
|
||||
p0life=20
|
||||
p0hand=Ornery Tumblewagg;Oko, the Ringleader;Season of Gathering;Shivan Devastator;Ferocification
|
||||
p0battlefield=Innkeeper's Talent|ClassLevel:2;Rampaging Geoderm;Kami of Whispered Hopes|Counters:P1P1=2;Island;Island;Mountain;Mountain;Forest;Forest
|
||||
p1life=17
|
||||
p1battlefield=Fear of Immobility;Shield-Wall Sentinel
|
||||
Reference in New Issue
Block a user