Fix Baeloth and some others

This commit is contained in:
tool4EvEr
2022-07-24 11:49:37 +02:00
parent 0eabb47003
commit c86c1d7c1b
16 changed files with 40 additions and 59 deletions

View File

@@ -131,9 +131,9 @@ public class Game {
private Map<Player, Card> topLibsCast = Maps.newHashMap();
private Map<Card, Integer> facedownWhileCasting = Maps.newHashMap();
private Player monarch = null;
private Player initiative = null;
private Player monarchBeginTurn = null;
private Player monarch;
private Player initiative;
private Player monarchBeginTurn;
private Player startingPlayer;
private Direction turnOrder = Direction.getDefaultDirection();

View File

@@ -665,13 +665,6 @@ public class AbilityUtils {
for (final SpellAbility s : saList) {
tgtList.addAll(getDefinedCards(s.getHostCard(), "Targeted", s));
// Check sub-abilities, so that modal cards like Abzan Charm are correctly handled.
// TODO: Should this be done in a more general place, like in getDefinedCards()?
AbilitySub abSub = s.getSubAbility();
while (abSub != null) {
tgtList.addAll(getDefinedCards(abSub.getHostCard(), "Targeted", abSub));
abSub = abSub.getSubAbility();
}
}
val = handlePaid(tgtList, calcX[1], card, ability);
}

View File

@@ -261,6 +261,6 @@ public class DigUntilEffect extends SpellAbilityEffect {
game.fireEvent(new GameEventCombatChanged());
}
table.triggerChangesZoneAll(game, sa);
} // end resolve
}
}

View File

@@ -6744,6 +6744,10 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
return new PlayerCollection(goad.values()); // 701.38d
}
public final Map<Long, Player> getGoadMap() {
return goad;
}
/**
* Returns the last known zone information for the card. If the card is a LKI copy of another card,
* then it stores the relevant information in savedLastKnownZone, which is returned. If the card is

View File

@@ -321,6 +321,8 @@ public final class CardUtil {
newCopy.setCombatLKI(in.getGame().getCombat().saveLKI(newCopy));
}
newCopy.getGoadMap().putAll(in.getGoadMap());
return newCopy;
}

View File

@@ -1919,27 +1919,11 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
if (splitTargetRestrictions != null) {
// TODO Ensure that spells with subabilities are processed correctly
TargetChoices matchTgt = topSA.getTargets();
if (matchTgt == null) {
return false;
}
boolean result = false;
for (final GameObject o : matchTgt) {
if (o.isValid(splitTargetRestrictions.split(","), getActivatingPlayer(), getHostCard(), this)) {
result = true;
break;
}
}
// spells with subabilities
if (!result) {
AbilitySub subAb = topSA.getSubAbility();
while (subAb != null) {
if (subAb.getTargetRestrictions() != null) {
matchTgt = subAb.getTargets();
SpellAbility subAb = topSA;
while (subAb != null && !result) {
if (subAb.usesTargeting()) {
TargetChoices matchTgt = subAb.getTargets();
if (matchTgt == null) {
continue;
}
@@ -1952,7 +1936,6 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
}
subAb = subAb.getSubAbility();
}
}
if (!result) {
return false;

View File

@@ -44,7 +44,6 @@ public class StaticAbilityActivateAbilityAsIfHaste {
}
public static boolean applyCanActivateAbility(final StaticAbility stAb, final Card card) {
if (!stAb.matchesValidParam("ValidCard", card)) {
return false;
}

View File

@@ -2,8 +2,8 @@ Name:Archelos, Lagoon Mystic
ManaCost:1 B G U
Types:Legendary Creature Turtle Shaman
PT:2/4
R:Event$ Moved | ValidCard$ Permanent | Destination$ Battlefield | IsPresent$ Card.Self+tapped | ReplaceWith$ ETBTapped | ActiveZones$ Battlefield | Description$ As long as CARDNAME is tapped, other permanents enter the battlefield tapped.
SVar:ETBTapped:DB$ ChangeZone | Origin$ All | Destination$ Battlefield | Tapped$ True | Defined$ ReplacedCard
R:Event$ Moved | ValidCard$ Permanent | Destination$ Battlefield | IsPresent$ Card.Self+untapped | ReplaceWith$ ETBUntapped | ActiveZones$ Battlefield | Description$ As long as NICKNAME is untapped, other permanents enter the battlefield untapped.
SVar:ETBUntapped:DB$ ChangeZone | Origin$ All | Destination$ Battlefield | Untapped$ True | Defined$ ReplacedCard
R:Event$ Moved | ValidCard$ Permanent | Destination$ Battlefield | IsPresent$ Card.Self+tapped | ReplaceWith$ ETBTapped | ReplacementResult$ Updated | ActiveZones$ Battlefield | Description$ As long as CARDNAME is tapped, other permanents enter the battlefield tapped.
SVar:ETBTapped:DB$ Tap | ETB$ True | Defined$ ReplacedCard
R:Event$ Moved | ValidCard$ Permanent | Destination$ Battlefield | IsPresent$ Card.Self+untapped | ReplaceWith$ ETBUntapped | ReplacementResult$ Updated | ActiveZones$ Battlefield | Description$ As long as NICKNAME is untapped, other permanents enter the battlefield untapped.
SVar:ETBUntapped:DB$ Untap | ETB$ True | Defined$ ReplacedCard
Oracle:As long as Archelos, Lagoon Mystic is tapped, other permanents enter the battlefield tapped.\nAs long as Archelos is untapped, other permanents enter the battlefield untapped.

View File

@@ -4,6 +4,6 @@ Types:Legendary Creature Bird
PT:1/3
K:Flying
K:Partner
S:Mode$ RaiseCost | ValidTarget$ Card.IsCommander+YouCtrl | Activator$ Opponent | Type$ Spell | Amount$ 3 | Description$ Spells your opponents cast that target one or more commanders you control cost {3} more to cast.
S:Mode$ RaiseCost | ValidTarget$ Card.IsCommander+YouCtrl+inZoneBattlefield | Activator$ Opponent | Type$ Spell | Amount$ 3 | Description$ Spells your opponents cast that target one or more commanders you control cost {3} more to cast.
AI:RemoveDeck:NonCommander
Oracle:Flying\nSpells your opponents cast that target one or more commanders you control cost {3} more to cast.\nPartner (You can have two commanders if both have partner.)

View File

@@ -2,7 +2,7 @@ Name:Kasmina, Enigmatic Mentor
ManaCost:3 U
Types:Legendary Planeswalker Kasmina
Loyalty:5
S:Mode$ RaiseCost | ValidTarget$ Creature.YouOwn+inZoneBattlefield | Activator$ Player.Opponent | Type$ Spell | Amount$ 2 | Description$ Spells your opponents cast that target a creature or planeswalker you control cost {2} more to cast.
S:Mode$ RaiseCost | ValidTarget$ Creature.YouCtrl+inZoneBattlefield,Planeswalker.YouCtrl+inZoneBattlefield | Activator$ Player.Opponent | Type$ Spell | Amount$ 2 | Description$ Spells your opponents cast that target a creature or planeswalker you control cost {2} more to cast.
A:AB$ Token | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | TokenAmount$ 1 | TokenScript$ u_2_2_wizard | TokenOwner$ You | SubAbility$ DBDraw | SpellDescription$ Create a 2/2 blue Wizard creature token. Draw a card, then discard a card.
SVar:DBDraw:DB$ Draw | NumCards$ 1 | SubAbility$ DBDiscard
SVar:DBDiscard:DB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1

View File

@@ -2,6 +2,6 @@ Name:Kopala, Warden of Waves
ManaCost:1 U U
Types:Legendary Creature Merfolk Wizard
PT:2/2
S:Mode$ RaiseCost | ValidTarget$ Creature.Merfolk+YouCtrl | Activator$ Player.Opponent | Type$ Spell | Amount$ 2 | Description$ Spells your opponents cast that target a Merfolk you control cost {2} more to cast.
S:Mode$ RaiseCost | ValidTarget$ Creature.Merfolk+YouCtrl | Activator$ Player.Opponent | Type$ Ability | Amount$ 2 | Description$ Abilities your opponents activate that target a Merfolk you control cost {2} more to activate.
S:Mode$ RaiseCost | ValidTarget$ Creature.Merfolk+YouCtrl+inZoneBattlefield | Activator$ Player.Opponent | Type$ Spell | Amount$ 2 | Description$ Spells your opponents cast that target a Merfolk you control cost {2} more to cast.
S:Mode$ RaiseCost | ValidTarget$ Creature.Merfolk+YouCtrl+inZoneBattlefield | Activator$ Player.Opponent | Type$ Ability | Amount$ 2 | Description$ Abilities your opponents activate that target a Merfolk you control cost {2} more to activate.
Oracle:Spells your opponents cast that target a Merfolk you control cost {2} more to cast.\nAbilities your opponents activate that target a Merfolk you control cost {2} more to activate.

View File

@@ -5,7 +5,7 @@ PT:2/3
K:Flying
A:AB$ Effect | Cost$ 0 | ValidTgts$ Instant.YouOwn,Sorcery.YouOwn | TgtZone$ Graveyard | TgtPrompt$ Select target instant or sorcery card in your graveyard | ActivationLimit$ 1 | RememberObjects$ Targeted | StaticAbilities$ MayPlay,RaiseCost | ReplacementEffects$ ReplaceGraveyard | SubAbility$ DBCleanup | SpellDescription$ You may cast target instant or sorcery card from your graveyard this turn. If that spell doesn't target a creature you control, it costs {8} more to cast this way. If that spell would be put into your graveyard, exile it instead. Activate only once each turn. (You still pay the spell's costs. Timing rules for the spell still apply.)
SVar:MayPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Graveyard | Description$ You may cast target instant or sorcery card from your graveyard this turn. (You still pay the spell's costs. Timing rules for the spell still apply.)
SVar:RaiseCost:Mode$ RaiseCost | ValidCard$ Card.IsRemembered | ValidTarget$ Creature.YouCtrl | UnlessValidTarget$ True | Activator$ You | Type$ Spell | Amount$ 8 | EffectZone$ Command | Description$ If that spell doesn't target a creature you control, it costs {8} more to cast this way.
SVar:RaiseCost:Mode$ RaiseCost | ValidCard$ Card.IsRemembered | ValidTarget$ Creature.YouCtrl+inZoneBattlefield | UnlessValidTarget$ True | Activator$ You | Type$ Spell | Amount$ 8 | EffectZone$ Command | Description$ If that spell doesn't target a creature you control, it costs {8} more to cast this way.
SVar:ReplaceGraveyard:Event$ Moved | ValidCard$ Card.IsRemembered | Destination$ Graveyard | ReplaceWith$ MoveExile | Description$ If that spell would be put into your graveyard, exile it instead.
SVar:MoveExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ All | Destination$ Exile | SubAbility$ ExileSelf
SVar:ExileSelf:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile

View File

@@ -8,5 +8,5 @@ SVar:KhansTrigger:Mode$ Phase | Phase$ Draw | TriggerZones$ Battlefield | ValidP
SVar:Filter:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBDiscard
SVar:DBDiscard:DB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1
SVar:Dragons:DB$ Animate | Defined$ Self | staticAbilities$ DragonsST | Duration$ Permanent | SpellDescription$ Dragons
SVar:DragonsST:Mode$ RaiseCost | ValidTarget$ You,Card.YouCtrl | Activator$ Opponent | Type$ Spell | Amount$ 2 | Description$ Spells your opponents cast that target you or a permanent you control cost {2} more to cast.
SVar:DragonsST:Mode$ RaiseCost | ValidTarget$ You,Card.YouCtrl+inZoneBattlefield | Activator$ Opponent | Type$ Spell | Amount$ 2 | Description$ Spells your opponents cast that target you or a permanent you control cost {2} more to cast.
Oracle:As Monastery Siege enters the battlefield, choose Khans or Dragons.\n• Khans — At the beginning of your draw step, draw an additional card, then discard a card.\n• Dragons — Spells your opponents cast that target you or a permanent you control cost {2} more to cast.

View File

@@ -3,10 +3,10 @@ ManaCost:4 R
Types:Legendary Creature Elf Shaman
PT:2/5
K:Choose a Background
S:Mode$ Continuous | Affected$ Creature.powerLTY+OppCtrl | Goad$ True | SubAbility$ TrigChangesZone | Description$ Creatures your opponents control with power less than CARDNAME power are goaded. (They attacks each combat if able and attack a player other than you if able.)
S:Mode$ Continuous | Affected$ Creature.powerLTY+OppCtrl | Goad$ True | Description$ Creatures your opponents control with power less than CARDNAME power are goaded. (They attack each combat if able and attack a player other than you if able.)
SVar:Y:Count$CardPower
SVar:TrigChangesZone:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.attacking+IsGoaded,Creature.blocking+IsGoaded | Execute$ TrigToken | TriggerZones$ Battlefield | SubAbility$ TrigToken | TriggerDescription$ Whenever a goaded attacking or blocking creature dies, you create a Treasure token. (It's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.")
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.attacking+IsGoaded,Creature.blocking+IsGoaded | Execute$ TrigToken | TriggerZones$ Battlefield | SubAbility$ TrigToken | TriggerDescription$ Whenever a goaded attacking or blocking creature dies, you create a Treasure token. (It's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.")
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | TokenOwner$ You
SVar:HasAttackEffect:TRUE
DeckHas:Ability$Token|Sacrifice & Type$Artifact|Treasure
Oracle:Creatures your opponents control with power less than Baeloth Barrityl's power are goaded. (They attacks each combat if able and attack a player other than you if able.)\nWhenever a goaded attacking or blocking creature dies, you create a Treasure token. (It's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.")\nChoose a Background (You can have a Background as a second commander.)
Oracle:Creatures your opponents control with power less than Baeloth Barrityl's power are goaded. (They attack each combat if able and attack a player other than you if able.)\nWhenever a goaded attacking or blocking creature dies, you create a Treasure token. (It's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.")\nChoose a Background (You can have a Background as a second commander.)

View File

@@ -1,8 +1,8 @@
Name:Gond Gate
ManaCost:no cost
Types:Land Gate
R:Event$ Moved | ValidCard$ Gate.YouCtrl | Destination$ Battlefield | ReplaceWith$ ETBUntapped | ActiveZones$ Battlefield | Description$ Gates you control enter the battlefield untapped.
SVar:ETBUntapped:DB$ ChangeZone | Origin$ All | Destination$ Battlefield | Untapped$ True | Defined$ ReplacedCard
R:Event$ Moved | ValidCard$ Gate.YouCtrl | Destination$ Battlefield | ReplaceWith$ ETBUntapped | ReplacementResult$ Updated | ActiveZones$ Battlefield | Description$ Gates you control enter the battlefield untapped.
SVar:ETBUntapped:DB$ Untap | ETB$ True | Defined$ ReplacedCard
A:AB$ Mana | Cost$ T | Produced$ C | Amount$ 1 | SpellDescription$ Add {C}.
A:AB$ ManaReflected | Cost$ T | ColorOrType$ Color | Valid$ Gate.YouCtrl | ReflectProperty$ Produce | SpellDescription$ Add one mana of any color that a Gate you control could produce.
DeckNeeds:Type$Gate