mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
Some fixes (#5699)
This commit is contained in:
@@ -20,7 +20,6 @@ import forge.game.combat.AttackRequirement;
|
|||||||
import forge.game.combat.AttackingBand;
|
import forge.game.combat.AttackingBand;
|
||||||
import forge.game.combat.Combat;
|
import forge.game.combat.Combat;
|
||||||
import forge.game.combat.CombatUtil;
|
import forge.game.combat.CombatUtil;
|
||||||
import forge.game.keyword.Keyword;
|
|
||||||
import forge.game.keyword.KeywordInterface;
|
import forge.game.keyword.KeywordInterface;
|
||||||
import forge.game.mana.Mana;
|
import forge.game.mana.Mana;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
@@ -637,9 +636,6 @@ public class CardProperty {
|
|||||||
if (property.endsWith("With") && card.getPairedWith() != source) {
|
if (property.endsWith("With") && card.getPairedWith() != source) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (property.endsWith("Soulbond") && !card.getPairedWith().hasKeyword(Keyword.SOULBOND)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else if (property.startsWith("Above")) { // "Are Above" Source
|
} else if (property.startsWith("Above")) { // "Are Above" Source
|
||||||
final CardCollectionView cards = card.getOwner().getCardsIn(ZoneType.Graveyard);
|
final CardCollectionView cards = card.getOwner().getCardsIn(ZoneType.Graveyard);
|
||||||
if (cards.indexOf(source) >= cards.indexOf(card)) {
|
if (cards.indexOf(source) >= cards.indexOf(card)) {
|
||||||
|
|||||||
@@ -812,14 +812,14 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
|
|||||||
// Grab players in turn order starting with the active player
|
// Grab players in turn order starting with the active player
|
||||||
List<Player> players = game.getPlayersInTurnOrder(playerTurn);
|
List<Player> players = game.getPlayersInTurnOrder(playerTurn);
|
||||||
|
|
||||||
for(Player p : players) {
|
for (Player p : players) {
|
||||||
if (p.hasLost()) {
|
if (p.hasLost()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
result |= chooseOrderOfSimultaneousStackEntry(p, false);
|
result |= chooseOrderOfSimultaneousStackEntry(p, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(Player p : players) {
|
for (Player p : players) {
|
||||||
if (p.hasLost()) {
|
if (p.hasLost()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,6 @@ Name:Flowering Lumberknot
|
|||||||
ManaCost:3 G
|
ManaCost:3 G
|
||||||
Types:Creature Treefolk
|
Types:Creature Treefolk
|
||||||
PT:5/5
|
PT:5/5
|
||||||
S:Mode$ Continuous | Affected$ Creature.Self+!PairedWithSoulbond | AddHiddenKeyword$ CARDNAME can't attack or block. | Description$ CARDNAME can't attack or block unless it's paired with a creature with soulbond.
|
S:Mode$ Continuous | Affected$ Creature.Self | IsPresent$ Creature.PairedWith+withSoulbond | PresentCompare$ EQ0 | AddHiddenKeyword$ CARDNAME can't attack or block. | Description$ CARDNAME can't attack or block unless it's paired with a creature with soulbond.
|
||||||
AI:RemoveDeck:Random
|
AI:RemoveDeck:Random
|
||||||
Oracle:Flowering Lumberknot can't attack or block unless it's paired with a creature with soulbond.
|
Oracle:Flowering Lumberknot can't attack or block unless it's paired with a creature with soulbond.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Name:Persistent Marshstalker
|
Name:Persistent Marshstalker
|
||||||
ManaCost:1 B
|
ManaCost:1 B
|
||||||
Types:Creature Rat Berserker
|
Types:Creature Rat Berserker
|
||||||
PT:2/1
|
PT:3/1
|
||||||
S:Mode$ Continuous | Affected$ Card.Self | AddPower$ X | Description$ CARDNAME gets +1/+0 for each other Rat you control.
|
S:Mode$ Continuous | Affected$ Card.Self | AddPower$ X | Description$ CARDNAME gets +1/+0 for each other Rat you control.
|
||||||
T:Mode$ AttackersDeclared | ValidAttackers$ Creature.YouCtrl+Rat | TriggerZones$ Graveyard | Execute$ TrigChangeZone | CheckSVar$ Y | SVarCompare$ GE7 | TriggerDescription$ Threshold — Whenever you attack with one or more Rats, if seven of more cards are in your graveyard, you may pay {2}{B}. If you do, return CARDNAME from your graveyard to the battlefield tapped and attacking.
|
T:Mode$ AttackersDeclared | ValidAttackers$ Creature.YouCtrl+Rat | TriggerZones$ Graveyard | Execute$ TrigChangeZone | CheckSVar$ Y | SVarCompare$ GE7 | TriggerDescription$ Threshold — Whenever you attack with one or more Rats, if seven of more cards are in your graveyard, you may pay {2}{B}. If you do, return CARDNAME from your graveyard to the battlefield tapped and attacking.
|
||||||
SVar:TrigChangeZone:AB$ ChangeZone | Cost$ 2 B | Origin$ Graveyard | Destination$ Battlefield | Tapped$ True | Attacking$ True
|
SVar:TrigChangeZone:AB$ ChangeZone | Cost$ 2 B | Origin$ Graveyard | Destination$ Battlefield | Tapped$ True | Attacking$ True
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Types:Creature Rat Rogue
|
|||||||
PT:4/3
|
PT:4/3
|
||||||
K:Offspring:3
|
K:Offspring:3
|
||||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigGenericChoice | TriggerDescription$ When this creature enters, target opponent loses 3 life unless they sacrifice a nonland permanent or discard a card.
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigGenericChoice | TriggerDescription$ When this creature enters, target opponent loses 3 life unless they sacrifice a nonland permanent or discard a card.
|
||||||
SVar:TrigGenericChoice:DB$ GenericChoice | Defined$ Targeted | Choices$ PaySac,PayDiscard | FallbackAbility$ LoseLifeFallback | AILogic$ PayUnlessCost
|
SVar:TrigGenericChoice:DB$ GenericChoice | ValidTgts$ Opponent | Choices$ PaySac,PayDiscard | FallbackAbility$ LoseLifeFallback | AILogic$ PayUnlessCost
|
||||||
SVar:PaySac:DB$ LoseLife | LifeAmount$ 3 | Defined$ Targeted | UnlessCost$ Sac<1/Permanent.nonland/nonland permanent> | UnlessPayer$ Targeted | UnlessAI$ LifeLE3 | SpellDescription$ You lose 3 life unless you sacrifice a nonland permanent
|
SVar:PaySac:DB$ LoseLife | LifeAmount$ 3 | Defined$ Targeted | UnlessCost$ Sac<1/Permanent.nonland/nonland permanent> | UnlessPayer$ Targeted | UnlessAI$ LifeLE3 | SpellDescription$ You lose 3 life unless you sacrifice a nonland permanent
|
||||||
SVar:PayDiscard:DB$ LoseLife | LifeAmount$ 3 | Defined$ Targeted | UnlessCost$ Discard<1/Card> | UnlessPayer$ Targeted | UnlessAI$ LifeLE3 | SpellDescription$ You lose 3 life unless you discard a card
|
SVar:PayDiscard:DB$ LoseLife | LifeAmount$ 3 | Defined$ Targeted | UnlessCost$ Discard<1/Card> | UnlessPayer$ Targeted | UnlessAI$ LifeLE3 | SpellDescription$ You lose 3 life unless you discard a card
|
||||||
# TODO: Most likely the ChooseGenericEffect code can be simplified somehow to avoid the necessity of having a dedicated fallback ability
|
# TODO: Most likely the ChooseGenericEffect code can be simplified somehow to avoid the necessity of having a dedicated fallback ability
|
||||||
|
|||||||
Reference in New Issue
Block a user