Fixes to Kaldheim equipment, cast prevention, AI sacrificing

Kaldheim (KHM) equipment that creates tokens uses an ETB (Enter the Battlefield) ability, not a cast ability.
Cards that use maxCast(anytext)0 simply prevent any type of casting.
The AI sometimes hangs when sacrificing creatures, preventing game continuation. To address this, a restriction has been added to allow only the human player to use this effect.
Other bug fixes:
Doomsday
Perimeter Sergeant
Imposing Grandeur
Sacred armory text
This commit is contained in:
Eduardo MG
2024-02-12 18:00:35 -06:00
parent 667adfadce
commit 0d05aeb329
2 changed files with 28 additions and 30 deletions
@@ -4885,7 +4885,8 @@ toughness=1
[/card] [/card]
[card] [card]
name=Ashes of the Abhorrent name=Ashes of the Abhorrent
auto=lord(*|graveyard) onlymanaability auto=lord(*[-land]|graveyard) changecost(colorless:+999) forcedalive
auto=lord(*[-land]|graveyard) -canPlayFromGraveyard
auto=@movedto(*|graveyard) from(battlefield):life:1 controller auto=@movedto(*|graveyard) from(battlefield):life:1 controller
text=Players can't cast spells from graveyards or activate abilities of cards in graveyards. -- Whenever a creature dies, you gain 1 life. text=Players can't cast spells from graveyards or activate abilities of cards in graveyards. -- Whenever a creature dies, you gain 1 life.
mana={1}{W} mana={1}{W}
@@ -25451,7 +25452,7 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Doomsday name=Doomsday
auto=name(Search 5 cards) target(<5>*|mylibrary,mygraveyard) moveto(myreveal) and!( moveto(mylibrary) and!( transforms((,newability[all(*[-fresh]|mylibrary) moveto(exile)],newability[all(*|mygraveyard) moveto(exile)])) oneshot )! )! auto=name(Search 5 cards) target(<5>other *|mylibrary,mygraveyard) moveto(myreveal) and!( moveto(mylibrary) and!( transforms((,newability[all(*[-fresh]|mylibrary) moveto(exile)],newability[all(*|mygraveyard) moveto(exile)])) oneshot )! )!
auto=life:-halfuplifetotal controller auto=life:-halfuplifetotal controller
text=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. text=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.
mana={B}{B}{B} mana={B}{B}{B}
@@ -26280,7 +26281,7 @@ toughness=2
[/card] [/card]
[card] [card]
name=Draugr's Helm name=Draugr's Helm
autostack=may name(Create zombie and attach) pay({2}{B}) name(Create zombie and attach) moveTo(mybattlefield) and!( transforms((,newability[token(Zombie^Creature Zombie Berserker^2/2^black)],newability[rehook target(berserker[token;zombie;fresh]|mybattlefield)])) oneshot )! auto=may name(Create zombie and attach) pay({2}{B}) name(Create zombie and attach) moveTo(mybattlefield) and!( transforms((,newability[token(Zombie^Creature Zombie Berserker^2/2^black)],newability[rehook target(berserker[token;zombie;fresh]|mybattlefield)])) oneshot )!
auto={4}:equip auto={4}:equip
auto=teach(creature) 2/2 auto=teach(creature) 2/2
auto=teach(creature) menace auto=teach(creature) menace
@@ -27758,7 +27759,7 @@ toughness=3
[/card] [/card]
[card] [card]
name=Dwarven Hammer name=Dwarven Hammer
autostack=may name(Create dwarf and attach) pay({2}) name(Create dwarf and attach) moveTo(mybattlefield) and!( transforms((,newability[token(Dwarf^Creature Dwarf Berserker^2/1^red)],newability[rehook target(berserker[token;dwarf;fresh]|mybattlefield)])) oneshot )! auto=may name(Create dwarf and attach) pay({2}) name(Create dwarf and attach) moveTo(mybattlefield) and!( transforms((,newability[token(Dwarf^Creature Dwarf Berserker^2/1^red)],newability[rehook target(berserker[token;dwarf;fresh]|mybattlefield)])) oneshot )!
auto={3}:equip auto={3}:equip
auto=teach(creature) 3/0 auto=teach(creature) 3/0
auto=teach(creature) trample auto=teach(creature) trample
@@ -29025,7 +29026,7 @@ type=Instant
[/card] [/card]
[card] [card]
name=Elven Bow name=Elven Bow
autostack=may name(Create elf and attach) pay({2}) name(Create elf and attach) moveTo(mybattlefield) and!( transforms((,newability[token(Elf^Creature Elf Warrior^1/1^green)],newability[rehook target(warrior[token;elf;fresh]|mybattlefield)])) oneshot )! auto=may name(Create elf and attach) pay({2}) name(Create elf and attach) moveTo(mybattlefield) and!( transforms((,newability[token(Elf^Creature Elf Warrior^1/1^green)],newability[rehook target(warrior[token;elf;fresh]|mybattlefield)])) oneshot )!
auto={3}:equip auto={3}:equip
auto=teach(creature) 1/2 auto=teach(creature) 1/2
auto=teach(creature) reach auto=teach(creature) reach
@@ -38620,7 +38621,7 @@ toughness=4
[/card] [/card]
[card] [card]
name=Giant's Amulet name=Giant's Amulet
autostack=may name(Create giant and attach) pay({3}{U}) name(Create giant and attach) moveTo(mybattlefield) and!( transforms((,newability[token(Giant^Creature Giant Wizard^4/4^blue)],newability[rehook target(warrior[token;giant;fresh]|mybattlefield)])) oneshot )! auto=may name(Create giant and attach) pay({3}{U}) name(Create giant and attach) moveTo(mybattlefield) and!( transforms((,newability[token(Giant^Creature Giant Wizard^4/4^blue)],newability[rehook target(warrior[token;giant;fresh]|mybattlefield)])) oneshot )!
auto={2}:equip auto={2}:equip
auto=teach(creature) 0/1 auto=teach(creature) 0/1
auto=teach(creature) transforms((,newability[this(variable{tapped}<1) opponentshroud])) auto=teach(creature) transforms((,newability[this(variable{tapped}<1) opponentshroud]))
@@ -39937,7 +39938,6 @@ toughness=5
[/card] [/card]
[card] [card]
name=Gluttonous Guest name=Gluttonous Guest
abilities=deathtouch
auto=name(Create a blood) token(Blood) auto=name(Create a blood) token(Blood)
auto=@sacrificed(blood|mybattlefield):name(Gain 1 life) life:1 controller auto=@sacrificed(blood|mybattlefield):name(Gain 1 life) life:1 controller
text=When Gluttonous Guest enters the battlefield, create a Blood token. (It's an artifact with "{1}, {T}, Discard a card, Sacrifice this artifact: Draw a card.") -- Whenever you sacrifice a Blood token, you gain 1 life. text=When Gluttonous Guest enters the battlefield, create a Blood token. (It's an artifact with "{1}, {T}, Discard a card, Sacrifice this artifact: Draw a card.") -- Whenever you sacrifice a Blood token, you gain 1 life.
@@ -71998,7 +71998,7 @@ toughness=3
[/card] [/card]
[card] [card]
name=Perimeter Sergeant name=Perimeter Sergeant
auto=_ATTACKING_all(human|myBattlefield) 1/0 ueot auto=_ATTACKING_all(other human|myBattlefield) 1/0 ueot
text=Whenever Perimeter Sergeant attacks, other Humans you control get +1/+0 until end of turn. text=Whenever Perimeter Sergeant attacks, other Humans you control get +1/+0 until end of turn.
mana={2}{W} mana={2}{W}
type=Creature type=Creature
@@ -79382,7 +79382,7 @@ type=Instant
[card] [card]
name=Reprobation name=Reprobation
target=creature target=creature
auto=loseabilities auto=teach(creature) loseabilities
auto=transforms((,setpower=0,settoughness=1)) auto=transforms((,setpower=0,settoughness=1))
auto=transforms((coward)) auto=transforms((coward))
text=Enchant creature -- Enchanted creature loses all abilities and is a Coward creature with base power and toughness 0/1. (It keeps all supertypes but loses all other types and creature types.) text=Enchant creature -- Enchanted creature loses all abilities and is a Coward creature with base power and toughness 0/1. (It keeps all supertypes but loses all other types and creature types.)
@@ -92402,10 +92402,9 @@ toughness=2
name=Soulless Jailer name=Soulless Jailer
auto=@movedto(*|battlefield) from(graveyard):all(trigger[to]) moveto(ownergraveyard) auto=@movedto(*|battlefield) from(graveyard):all(trigger[to]) moveto(ownergraveyard)
auto=@movedto(*|battlefield) from(exile):all(trigger[to]) moveto(ownerexile) auto=@movedto(*|battlefield) from(exile):all(trigger[to]) moveto(ownerexile)
auto=maxCast(*[-creature]|graveyard)0 auto=lord(*[-land]|graveyard) changecost(colorless:+999) forcedalive
auto=maxCast(*[-creature]|graveyard)0 opponent auto=lord(*[-land]|graveyard) -canPlayFromGraveyard
auto=maxCast(*[-creature]|exile)0 auto=lord(*[-land]|exile) changecost(colorless:+999) forcedalive
auto=maxCast(*[-creature]|exile)0 opponent
text=Permanent cards in graveyards can't enter the battlefield. -- Players can't cast noncreature spells from graveyards or exile. text=Permanent cards in graveyards can't enter the battlefield. -- Players can't cast noncreature spells from graveyards or exile.
mana={2} mana={2}
type=Artifact Creature type=Artifact Creature
@@ -106767,7 +106766,7 @@ toughness=5
[card] [card]
name=Urza, Lord High Artificer name=Urza, Lord High Artificer
auto=create(Construct) auto=create(Construct)
auto=aslongas(artifact[-tapped]|mybattlefield) {T(artifact|myBattlefield)}:add{U} auto=aslongas(artifact[-tapped]|mybattlefield) {T(artifact|myBattlefield)}:add{U} restriction{compare(ishuman)~morethan~0}
auto={5}:name(Shuffle and play) shuffle && reveal:1 optionone name(Reveal)if type(*|reveal)~morethan~0 then name(Check to play) target(*|reveal) transforms((,newability[if type(*|mybattlefield)~morethan~0 then castcard(putinplay)])) else name(do not play) target(*|reveal) donothing optiononeend optiontwo choice all(*|reveal) moveTo(exile) optiontwoend revealend auto={5}:name(Shuffle and play) shuffle && reveal:1 optionone name(Reveal)if type(*|reveal)~morethan~0 then name(Check to play) target(*|reveal) transforms((,newability[if type(*|mybattlefield)~morethan~0 then castcard(putinplay)])) else name(do not play) target(*|reveal) donothing optiononeend optiontwo choice all(*|reveal) moveTo(exile) optiontwoend revealend
text=When Urza, Lord High Artificer enters the battlefield, create a 0/0 colorless Construct artifact creature token with "This creature gets +1/+1 for each artifact you control." -- Tap an untapped artifact you control: Add {U}. -- {5}: Shuffle your library, then exile the top card. Until end of turn, you may play that card without paying its mana cost. text=When Urza, Lord High Artificer enters the battlefield, create a 0/0 colorless Construct artifact creature token with "This creature gets +1/+1 for each artifact you control." -- Tap an untapped artifact you control: Add {U}. -- {5}: Shuffle your library, then exile the top card. Until end of turn, you may play that card without paying its mana cost.
mana={2}{U}{U} mana={2}{U}{U}
@@ -107053,7 +107052,7 @@ toughness=5
[/card] [/card]
[card] [card]
name=Valkyrie's Sword name=Valkyrie's Sword
autostack=may name(Create angel and attach) pay({4}{W}) name(Create angel and attach) moveTo(mybattlefield) and!( transforms((,newability[token(Warrior^Creature Angel Warrior^4/4^white^flying^vigilance)],newability[rehook target(warrior[token;angel;fresh]|mybattlefield)])) oneshot )! auto=may name(Create angel and attach) pay({4}{W}) name(Create angel and attach) moveTo(mybattlefield) and!( transforms((,newability[token(Warrior^Creature Angel Warrior^4/4^white^flying^vigilance)],newability[rehook target(warrior[token;angel;fresh]|mybattlefield)])) oneshot )!
auto={3}:equip auto={3}:equip
auto=teach(creature) 2/1 auto=teach(creature) 2/1
text=When Valkyrie's Sword enters the battlefield, you may pay {4}{W}. If you do, create a 4/4 white Angel Warrior creature token with flying and vigilance, then attach Valkyrie's Sword to it. -- Equipped creature gets +2/+1. -- Equip {3} text=When Valkyrie's Sword enters the battlefield, you may pay {4}{W}. If you do, create a 4/4 white Angel Warrior creature token with flying and vigilance, then attach Valkyrie's Sword to it. -- Equipped creature gets +2/+1. -- Equip {3}
@@ -110947,10 +110946,9 @@ type=Instant
name=Weathered Runestone name=Weathered Runestone
auto=@movedto(*[-land]|battlefield) from(graveyard):all(trigger[to]) moveto(ownergraveyard) auto=@movedto(*[-land]|battlefield) from(graveyard):all(trigger[to]) moveto(ownergraveyard)
auto=@movedto(*[-land]|battlefield) from(library):all(trigger[to]) moveto(ownerlibrary) auto=@movedto(*[-land]|battlefield) from(library):all(trigger[to]) moveto(ownerlibrary)
auto=maxCast(*|graveyard)0 auto=lord(*[-land]|graveyard) changecost(colorless:+999) forcedalive
auto=maxCast(*|graveyard)0 opponent auto=lord(*[-land]|graveyard) -canPlayFromGraveyard
auto=maxCast(*|library)0 auto=lord(*[-land]|library) changecost(colorless:+999) forcedalive
auto=maxCast(*|library)0 opponent
text=Nonland permanent cards in graveyards and libraries can't enter the battlefield. -- Players can't cast spells from graveyards or libraries. text=Nonland permanent cards in graveyards and libraries can't enter the battlefield. -- Players can't cast spells from graveyards or libraries.
mana={2} mana={2}
type=Artifact type=Artifact
+11 -11
View File
@@ -6460,7 +6460,7 @@ toughness=1
[/card] [/card]
[card] [card]
name=Ashnod's Altar name=Ashnod's Altar
auto={S(creature|myBattlefield)}:Add{2} auto={S(creature|myBattlefield)}:Add{2} restriction{compare(ishuman)~morethan~0}
text=Sacrifice a creature: Add {2} to your mana pool. text=Sacrifice a creature: Add {2} to your mana pool.
mana={3} mana={3}
type=Artifact type=Artifact
@@ -86173,11 +86173,11 @@ subtype=Aura
[/card] [/card]
[card] [card]
name=Phyrexian Altar name=Phyrexian Altar
auto=aslongas(creature|mybattlefield) {S(creature|myBattlefield)}:Add{W} auto=aslongas(creature|mybattlefield) {S(creature|myBattlefield)}:Add{W} restriction{compare(ishuman)~morethan~0}
auto=aslongas(creature|mybattlefield) {S(creature|myBattlefield)}:Add{U} auto=aslongas(creature|mybattlefield) {S(creature|myBattlefield)}:Add{U} restriction{compare(ishuman)~morethan~0}
auto=aslongas(creature|mybattlefield) {S(creature|myBattlefield)}:Add{B} auto=aslongas(creature|mybattlefield) {S(creature|myBattlefield)}:Add{B} restriction{compare(ishuman)~morethan~0}
auto=aslongas(creature|mybattlefield) {S(creature|myBattlefield)}:Add{R} auto=aslongas(creature|mybattlefield) {S(creature|myBattlefield)}:Add{R} restriction{compare(ishuman)~morethan~0}
auto=aslongas(creature|mybattlefield) {S(creature|myBattlefield)}:Add{G} auto=aslongas(creature|mybattlefield) {S(creature|myBattlefield)}:Add{G} restriction{compare(ishuman)~morethan~0}
text=Sacrifice a creature: Add one mana of any color to your mana pool. text=Sacrifice a creature: Add one mana of any color to your mana pool.
mana={3} mana={3}
type=Artifact type=Artifact
@@ -96540,9 +96540,9 @@ type=Sorcery
name=Roilmage's Trick name=Roilmage's Trick
auto=all(creature|opponentbattlefield) -converge/0 ueot auto=all(creature|opponentbattlefield) -converge/0 ueot
auto=draw:1 controller auto=draw:1 controller
text=Converge -- Creatures your opponents control get -X/-0 until end of turn, where X is the number of colors of mana spent to cast Roilmage's Trick. text=Converge -- Creatures your opponents control get -X/-0 until end of turn, where X is the number of colors of mana spent to cast this spell. -- Draw a card.
mana={3}{U} mana={3}{U}
type=Sorcery type=Instant
[/card] [/card]
[card] [card]
name=Roil's Retribution name=Roil's Retribution
@@ -98073,7 +98073,7 @@ toughness=3
[card] [card]
name=Sacred Armory name=Sacred Armory
auto={2}:1/0 target(creature) auto={2}:1/0 target(creature)
text={2}: Target creatures gets +1/+0 until end of turn. text={2}: Target creature gets +1/+0 until end of turn.
mana={2} mana={2}
type=Artifact type=Artifact
[/card] [/card]
@@ -110394,7 +110394,7 @@ subtype=Aura
[/card] [/card]
[card] [card]
name=Spawning Pit name=Spawning Pit
auto=aslongas(creature|mybattlefield) {S(creature|myBattlefield)}:counter(0/0,1,Charge) auto=aslongas(creature|mybattlefield) {S(creature|myBattlefield)}:counter(0/0,1,Charge) restriction{compare(ishuman)~morethan~0}
auto={1}{C(0/0,-2,Charge)}:token(Spawn,artifact creature spawn,2/2) auto={1}{C(0/0,-2,Charge)}:token(Spawn,artifact creature spawn,2/2)
text=Sacrifice a creature: Put a charge counter on Spawning Pit. -- {1}, Remove two charge counters from Spawning Pit: Put a 2/2 colorless Spawn artifact creature token onto the battlefield. text=Sacrifice a creature: Put a charge counter on Spawning Pit. -- {1}, Remove two charge counters from Spawning Pit: Put a 2/2 colorless Spawn artifact creature token onto the battlefield.
mana={2} mana={2}
@@ -131836,7 +131836,7 @@ toughness=6
[/card] [/card]
[card] [card]
name=War Cadence name=War Cadence
auto={X}{U}:name(Block X Cost) thisforeach(X) all(creature) transforms((,newability[blockcost:1])) ueot auto={X}{R}:name(Block X Cost) thisforeach(X) all(creature) transforms((,newability[blockcost:1])) ueot
text={X}{R}: This turn, creatures can't block unless their controller pays {X} for each blocking creature he or she controls. text={X}{R}: This turn, creatures can't block unless their controller pays {X} for each blocking creature he or she controls.
mana={2}{R} mana={2}{R}
type=Enchantment type=Enchantment