mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
fix n't
This commit is contained in:
@@ -832,7 +832,7 @@ public class Game {
|
|||||||
triggerList.triggerChangesZoneAll(this, null);
|
triggerList.triggerChangesZoneAll(this, null);
|
||||||
|
|
||||||
// 901.6: If the current planar controller would leave the game, instead the next player
|
// 901.6: If the current planar controller would leave the game, instead the next player
|
||||||
// in turn order that wouldn’t leave the game becomes the planar controller, then the old
|
// in turn order that wouldn't leave the game becomes the planar controller, then the old
|
||||||
// planar controller leaves
|
// planar controller leaves
|
||||||
// 901.10: When a player leaves the game, all objects owned by that player except abilities
|
// 901.10: When a player leaves the game, all objects owned by that player except abilities
|
||||||
// from phenomena leave the game. (See rule 800.4a.) If that includes a face-up plane card
|
// from phenomena leave the game. (See rule 800.4a.) If that includes a face-up plane card
|
||||||
|
|||||||
@@ -1496,7 +1496,7 @@ public class GameAction {
|
|||||||
if (c.getCounters(CounterEnumType.DEFENSE) > 0) {
|
if (c.getCounters(CounterEnumType.DEFENSE) > 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// 704.5v If a battle has defense 0 and it isn’t the source of an ability that has triggered but not yet left the stack,
|
// 704.5v If a battle has defense 0 and it isn't the source of an ability that has triggered but not yet left the stack,
|
||||||
// it’s put into its owner’s graveyard.
|
// it’s put into its owner’s graveyard.
|
||||||
if (!game.getStack().hasSourceOnStack(c, SpellAbilityPredicates.isTrigger())) {
|
if (!game.getStack().hasSourceOnStack(c, SpellAbilityPredicates.isTrigger())) {
|
||||||
removeList.add(c);
|
removeList.add(c);
|
||||||
@@ -2310,7 +2310,7 @@ public class GameAction {
|
|||||||
// 701.17a To "scry N" means to look at the top N cards of your library, then put any number of them
|
// 701.17a To "scry N" means to look at the top N cards of your library, then put any number of them
|
||||||
// on the bottom of your library in any order and the rest on top of your library in any order.
|
// on the bottom of your library in any order and the rest on top of your library in any order.
|
||||||
// 701.17b If a player is instructed to scry 0, no scry event occurs. Abilities that trigger whenever a
|
// 701.17b If a player is instructed to scry 0, no scry event occurs. Abilities that trigger whenever a
|
||||||
// player scries won’t trigger.
|
// player scries won't trigger.
|
||||||
// 701.17c If multiple players scry at once, each of those players looks at the top cards of their library
|
// 701.17c If multiple players scry at once, each of those players looks at the top cards of their library
|
||||||
// at the same time. Those players decide in APNAP order (see rule 101.4) where to put those
|
// at the same time. Those players decide in APNAP order (see rule 101.4) where to put those
|
||||||
// cards, then those cards move at the same time.
|
// cards, then those cards move at the same time.
|
||||||
|
|||||||
@@ -1694,7 +1694,7 @@ public class AbilityUtils {
|
|||||||
SpellAbility root = sa.getRootAbility();
|
SpellAbility root = sa.getRootAbility();
|
||||||
|
|
||||||
// 107.3i If an object gains an ability, the value of X within that ability is the value defined by that ability,
|
// 107.3i If an object gains an ability, the value of X within that ability is the value defined by that ability,
|
||||||
// or 0 if that ability doesn’t define a value of X. This is an exception to rule 107.3h. This may occur with ability-adding effects, text-changing effects, or copy effects.
|
// or 0 if that ability doesn't define a value of X. This is an exception to rule 107.3h. This may occur with ability-adding effects, text-changing effects, or copy effects.
|
||||||
if (root.getXManaCostPaid() != null) {
|
if (root.getXManaCostPaid() != null) {
|
||||||
return doXMath(root.getXManaCostPaid(), expr, c, ctb);
|
return doXMath(root.getXManaCostPaid(), expr, c, ctb);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ public class ChangeTargetsEffect extends SpellAbilityEffect {
|
|||||||
// 3. test if updated choices would be correct.
|
// 3. test if updated choices would be correct.
|
||||||
GameObject newTarget = Iterables.getFirst(getDefinedCardsOrTargeted(sa, "DefinedMagnet"), null);
|
GameObject newTarget = Iterables.getFirst(getDefinedCardsOrTargeted(sa, "DefinedMagnet"), null);
|
||||||
|
|
||||||
// CR 115.3. The same target can’t be chosen multiple times for
|
// CR 115.3. The same target can't be chosen multiple times for
|
||||||
// any one instance of the word “target” on a spell or ability.
|
// any one instance of the word “target” on a spell or ability.
|
||||||
if (!oldTargetBlock.contains(newTarget) && replaceIn.getSpellAbility().canTarget(newTarget)) {
|
if (!oldTargetBlock.contains(newTarget) && replaceIn.getSpellAbility().canTarget(newTarget)) {
|
||||||
newTargetBlock.remove(oldTarget);
|
newTargetBlock.remove(oldTarget);
|
||||||
|
|||||||
@@ -5722,7 +5722,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final void addAssignedDamage(int assignedDamage0, final Card sourceCard) {
|
public final void addAssignedDamage(int assignedDamage0, final Card sourceCard) {
|
||||||
// 510.1a Creatures that would assign 0 or less damage don’t assign combat damage at all.
|
// 510.1a Creatures that would assign 0 or less damage don't assign combat damage at all.
|
||||||
if (assignedDamage0 <= 0) {
|
if (assignedDamage0 <= 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -5838,7 +5838,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
|||||||
return 0; // 120.8
|
return 0; // 120.8
|
||||||
}
|
}
|
||||||
|
|
||||||
// 120.1a Damage can’t be dealt to an object that’s neither a creature nor a planeswalker nor a battle.
|
// 120.1a Damage can't be dealt to an object that’s neither a creature nor a planeswalker nor a battle.
|
||||||
if (!isPlaneswalker() && !isCreature() && !isBattle()) {
|
if (!isPlaneswalker() && !isCreature() && !isBattle()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -779,7 +779,7 @@ public class CombatUtil {
|
|||||||
if (!blocker.getMustBlockCards().isEmpty()) {
|
if (!blocker.getMustBlockCards().isEmpty()) {
|
||||||
final CardCollectionView blockedSoFar = combat.getAttackersBlockedBy(blocker);
|
final CardCollectionView blockedSoFar = combat.getAttackersBlockedBy(blocker);
|
||||||
for (Card cardToBeBlocked : blocker.getMustBlockCards()) {
|
for (Card cardToBeBlocked : blocker.getMustBlockCards()) {
|
||||||
// If a creature can’t block unless a player pays a cost, that player is not required to pay that cost
|
// If a creature can't block unless a player pays a cost, that player is not required to pay that cost
|
||||||
if (getBlockCost(blocker.getGame(), blocker, cardToBeBlocked) != null) {
|
if (getBlockCost(blocker.getGame(), blocker, cardToBeBlocked) != null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -483,7 +483,7 @@ public class SpellAbilityRestriction extends SpellAbilityVariables {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 702.36e
|
// 702.36e
|
||||||
// If the permanent wouldn’t have a morph cost if it were face up, it can’t be turned face up this way.
|
// If the permanent wouldn't have a morph cost if it were face up, it can't be turned face up this way.
|
||||||
if (sa.isMorphUp() && c.isInPlay()) {
|
if (sa.isMorphUp() && c.isInPlay()) {
|
||||||
Card cp = c;
|
Card cp = c;
|
||||||
if (!c.isLKI()) {
|
if (!c.isLKI()) {
|
||||||
|
|||||||
@@ -780,7 +780,7 @@ public class SpellAbilityPickerTest extends AITest {
|
|||||||
|
|
||||||
SpellAbilityPicker picker = new SpellAbilityPicker(game, p);
|
SpellAbilityPicker picker = new SpellAbilityPicker(game, p);
|
||||||
picker.chooseSpellAbilityToPlay(null);
|
picker.chooseSpellAbilityToPlay(null);
|
||||||
// Only mode "Creatures with power 3 or less can’t block this turn" should be simulated.
|
// Only mode "Creatures with power 3 or less can't block this turn" should be simulated.
|
||||||
AssertJUnit.assertEquals(1, picker.getNumSimulations());
|
AssertJUnit.assertEquals(1, picker.getNumSimulations());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -767,7 +767,7 @@ public class SpellAbilityPickerSimulationTest extends SimulationTest {
|
|||||||
|
|
||||||
SpellAbilityPicker picker = new SpellAbilityPicker(game, p);
|
SpellAbilityPicker picker = new SpellAbilityPicker(game, p);
|
||||||
picker.chooseSpellAbilityToPlay(null);
|
picker.chooseSpellAbilityToPlay(null);
|
||||||
// Only mode "Creatures with power 3 or less can’t block this turn" should be simulated.
|
// Only mode "Creatures with power 3 or less can't block this turn" should be simulated.
|
||||||
AssertJUnit.assertEquals(1, picker.getNumSimulations());
|
AssertJUnit.assertEquals(1, picker.getNumSimulations());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,4 +5,4 @@ PT:1/1
|
|||||||
K:Menace
|
K:Menace
|
||||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigTempt | TriggerDescription$ When CARDNAME dies, the Ring tempts you.
|
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigTempt | TriggerDescription$ When CARDNAME dies, the Ring tempts you.
|
||||||
SVar:TrigTempt:DB$ RingTemptsYou
|
SVar:TrigTempt:DB$ RingTemptsYou
|
||||||
Oracle:Menace (This creature can’t be blocked except by two or more creatures.)\nWhen Rohirrim Lancer dies, the Ring tempts you.
|
Oracle:Menace (This creature can't be blocked except by two or more creatures.)\nWhen Rohirrim Lancer dies, the Ring tempts you.
|
||||||
|
|||||||
@@ -8,4 +8,4 @@ SVar:X:Count$xPaid
|
|||||||
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.Self+counters_GE1_P1P1 | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, if CARDNAME has one or more +1/+1 counters on it, you may remove a +1/+1 counter from it. If you do, draw a card.
|
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.Self+counters_GE1_P1P1 | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, if CARDNAME has one or more +1/+1 counters on it, you may remove a +1/+1 counter from it. If you do, draw a card.
|
||||||
SVar:TrigDraw:AB$ Draw | Cost$ SubCounter<1/P1P1>
|
SVar:TrigDraw:AB$ Draw | Cost$ SubCounter<1/P1P1>
|
||||||
DeckHas:Ability$Counters
|
DeckHas:Ability$Counters
|
||||||
Oracle:Skulk (This creature can’t be blocked by creatures with greater power.)\nIngenious Prodigy enters the battlefield with X +1/+1 counters on it.\nAt the beginning of your upkeep, if Ingenious Prodigy has one or more +1/+1 counters on it, you may remove a +1/+1 counter from it. If you do, draw a card.
|
Oracle:Skulk (This creature can't be blocked by creatures with greater power.)\nIngenious Prodigy enters the battlefield with X +1/+1 counters on it.\nAt the beginning of your upkeep, if Ingenious Prodigy has one or more +1/+1 counters on it, you may remove a +1/+1 counter from it. If you do, draw a card.
|
||||||
Reference in New Issue
Block a user