Fixed some primitives from issue #1085, improved some cards for AI combo (from Discord channel), added "isattacker" keyword to check if creature is attacking, added "couldattack" keyword to check if creature can attack, improved some triggers to add turnlimit option.
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
grade=borderline
|
grade=borderline
|
||||||
#Bordeline Primitives Pack for Wagic the Homebrew.
|
#Bordeline Primitives Pack for Wagic the Homebrew.
|
||||||
#Please keep these card alphabetized, and try to have the "name=" line at the top of each card
|
#Please keep these card alphabetized, and try to have the "name=" line at the top of each card
|
||||||
#I sorted this programmatically - Thanks to Vitty85 20-07-2023
|
#I sorted this programmatically - Thanks to Vitty85 21-07-2023
|
||||||
[card]
|
[card]
|
||||||
name=+2 Mace
|
name=+2 Mace
|
||||||
auto={3}:equip
|
auto={3}:equip
|
||||||
@@ -18979,7 +18979,7 @@ type=Land
|
|||||||
[card]
|
[card]
|
||||||
name=Corruption of Towashi
|
name=Corruption of Towashi
|
||||||
auto=name(Incubate 4) name(Incubate 4) token(Incubator) and!( counter(1/1.4) )!
|
auto=name(Incubate 4) name(Incubate 4) token(Incubator) and!( counter(1/1.4) )!
|
||||||
auto=@transformed(*[-instant;-sorcery]|myzones) turnlimited:may name(Draw a card) draw:1 controller
|
auto=@transformed(*|mybattlefield) turnlimited:may name(Draw a card) draw:1 controller
|
||||||
text=When Corruption of Towashi enters the battlefield, incubate 4. (Create an Incubator token with four +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) -- Whenever a permanent you control transforms or a permanent enters the battlefield under your control transformed, you may draw a card. Do this only once each turn.
|
text=When Corruption of Towashi enters the battlefield, incubate 4. (Create an Incubator token with four +1/+1 counters on it and "{2}: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.) -- Whenever a permanent you control transforms or a permanent enters the battlefield under your control transformed, you may draw a card. Do this only once each turn.
|
||||||
mana={4}{U}
|
mana={4}{U}
|
||||||
type=Enchantment
|
type=Enchantment
|
||||||
@@ -20336,7 +20336,7 @@ toughness=2
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Cult of the Waxing Moon
|
name=Cult of the Waxing Moon
|
||||||
auto=@transformed(creature[-human]|myBattlefield):name(Create wolf) _WOLFTOKEN_
|
auto=@transformed(creature[-human]|myBattlefield):may name(Create wolf) _WOLFTOKEN_
|
||||||
text=Whenever a permanent you control transforms into a non-Human creature, put a 2/2 green Wolf creature token onto the battlefield.
|
text=Whenever a permanent you control transforms into a non-Human creature, put a 2/2 green Wolf creature token onto the battlefield.
|
||||||
mana={4}{G}
|
mana={4}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -36853,12 +36853,12 @@ toughness=4
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Garth One-Eye
|
name=Garth One-Eye
|
||||||
auto=this(cantargetcard(*[-disenchant]) {1}{W}{T}:name(Choose disenchant) becomes(disenchant) forever && activate castcard(copied noevent named!:disenchant:!)
|
auto=this(cantargetcard(*[-disenchant]) {1}{W}{T}:name(Choose disenchant) becomes(disenchant) forever && activate castcard(copied named!:disenchant:!)
|
||||||
auto=this(cantargetcard(*[-braingeyser]) {X}{U}{U}{T}:name(Choose braingeyser) name(Choose braingeyser) transforms((,newability[becomes(braingeyser)],newability[activate castcard(copied noevent named!:braingeyser:! costx!:x:!)])) forever
|
auto=this(cantargetcard(*[-braingeyser]) {X}{U}{U}{T}:name(Choose braingeyser) name(Choose braingeyser) transforms((,newability[becomes(braingeyser)],newability[activate castcard(copied named!:braingeyser:! costx!:x:!)])) forever
|
||||||
auto=this(cantargetcard(*[-terror]) {1}{B}{T}:name(Choose terror) becomes(terror) forever && activate castcard(copied noevent named!:terror:!)
|
auto=this(cantargetcard(*[-terror]) {1}{B}{T}:name(Choose terror) becomes(terror) forever && activate castcard(copied named!:terror:!)
|
||||||
auto=this(cantargetcard(*[-shivan]) {4}{R}{R}{T}:name(Choose shivan dragon) becomes(shivan) forever && activate castcard(copied noevent named!:shivan dragon:!)
|
auto=this(cantargetcard(*[-shivan]) {4}{R}{R}{T}:name(Choose shivan dragon) becomes(shivan) forever && activate castcard(copied named!:shivan dragon:!)
|
||||||
auto=this(cantargetcard(*[-regrowth]) {1}{G}{T}:name(Choose regrowth) becomes(regrowth) forever && activate castcard(copied noevent named!:regrowth:!)
|
auto=this(cantargetcard(*[-regrowth]) {1}{G}{T}:name(Choose regrowth) becomes(regrowth) forever && activate castcard(copied named!:regrowth:!)
|
||||||
auto=this(cantargetcard(*[-lotus]) {0}{T}:name(Choose black lotus) becomes(lotus) forever && activate castcard(copied noevent named!:black lotus:!)
|
auto=this(cantargetcard(*[-lotus]) {T}:name(Choose black lotus) becomes(lotus) forever && activate castcard(copied putinplay named!:black lotus:!)
|
||||||
text={T}: Choose a card name that hasn't been chosen from among Disenchant, Braingeyser, Terror, Shivan Dragon, Regrowth, and Black Lotus. Create a copy of the card with the chosen name. You may cast the copy. (You still pay its costs.)
|
text={T}: Choose a card name that hasn't been chosen from among Disenchant, Braingeyser, Terror, Shivan Dragon, Regrowth, and Black Lotus. Create a copy of the card with the chosen name. You may cast the copy. (You still pay its costs.)
|
||||||
mana={W}{U}{B}{R}{G}
|
mana={W}{U}{B}{R}{G}
|
||||||
type=Legendary Creature
|
type=Legendary Creature
|
||||||
@@ -36974,7 +36974,7 @@ name=Gavony Dawnguard
|
|||||||
aicode=activate transforms((,newability[if type(creature[zpos<=4;manacost<=3]|myLibrary)~morethan~0 then target(creature[zpos<=4;manacost<=3]|myLibrary) moveTo(myHand) and!( all(other *[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )! else all(*[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! ])) oneshot
|
aicode=activate transforms((,newability[if type(creature[zpos<=4;manacost<=3]|myLibrary)~morethan~0 then target(creature[zpos<=4;manacost<=3]|myLibrary) moveTo(myHand) and!( all(other *[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )! else all(*[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! ])) oneshot
|
||||||
auto=if type(*[day;night]|battlefield)~equalto~0 then name(It becomes day) activate castcard(noevent named!:Day:!)
|
auto=if type(*[day;night]|battlefield)~equalto~0 then name(It becomes day) activate castcard(noevent named!:Day:!)
|
||||||
auto=@transformed(*[day;night]|battlefield):name(Look top 4 cards) reveal:4 optionone name(Get a creature) target(<upto:1>creature[manacost<=3]|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<4>*|reveal) bottomoflibrary optiontwoend revealend
|
auto=@transformed(*[day;night]|battlefield):name(Look top 4 cards) reveal:4 optionone name(Get a creature) target(<upto:1>creature[manacost<=3]|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<4>*|reveal) bottomoflibrary optiontwoend revealend
|
||||||
auto=_WARD_(1)
|
auto=@targeted(this) from(*|opponentzones):choice name(This spell costs 1 more) name(This spell costs 1 more) target(*|opponentzones) transforms((,newability[pay[[{1}]] name(pay 1 mana) donothing?fizzle])) oneshot
|
||||||
text=Ward {1} -- If it's neither day nor night, it becomes day as Gavony Dawnguard enters the battlefield. -- Whenever day becomes night or night becomes day, look at the top four cards of your library. You may reveal a creature card with mana value 3 or less from among them and put it into your hand. Put the rest on the bottom of your library in any order.
|
text=Ward {1} -- If it's neither day nor night, it becomes day as Gavony Dawnguard enters the battlefield. -- Whenever day becomes night or night becomes day, look at the top four cards of your library. You may reveal a creature card with mana value 3 or less from among them and put it into your hand. Put the rest on the bottom of your library in any order.
|
||||||
type=Creature
|
type=Creature
|
||||||
subtype=Human Soldier
|
subtype=Human Soldier
|
||||||
@@ -37297,8 +37297,7 @@ type=Sorcery
|
|||||||
[card]
|
[card]
|
||||||
name=Geode Golem
|
name=Geode Golem
|
||||||
abilities=trample
|
abilities=trample
|
||||||
auto=@combatdamagefoeof(player) from(this):may activate castcard(normal) target(*[iscommander]|mycommandzone)
|
auto=@combatdamaged(player) from(this):may name(Cast the commander) target(*[iscommander]|mycommandzone) activate castcard(normal)
|
||||||
auto=@combatdamageof(player) from(this):may activate castcard(normal) target(*[iscommander]|mycommandzone)
|
|
||||||
text=Trample -- Whenever Geode Golem deals combat damage to a player, you may cast your commander from the command zone without paying its mana cost. (You still pay any additional costs.)
|
text=Trample -- Whenever Geode Golem deals combat damage to a player, you may cast your commander from the command zone without paying its mana cost. (You still pay any additional costs.)
|
||||||
mana={5}
|
mana={5}
|
||||||
type=Artifact Creature
|
type=Artifact Creature
|
||||||
@@ -40442,10 +40441,11 @@ toughness=2
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Gor Muldrak, Amphinologist
|
name=Gor Muldrak, Amphinologist
|
||||||
auto=lord(*|mybattlefield) protection from(salamander)
|
auto=lord(*|mybattlefield) transforms((,newability[protection from(*[salamander])]))
|
||||||
auto=preventalldamage to(controller) from(creature[salamander])
|
auto=preventalldamage to(controller) from(*[salamander])
|
||||||
auto=@each my endofturn restriction{type(creature|opponentbattlefield)~morethan~type(creature|mybattlefield)}:token(Salamander Warrior,Creature Warrior Salamander,4/3,blue)
|
auto=@each my endofturn restriction{type(creature|opponentbattlefield)~morethan~type(creature|mybattlefield)}:name(Create salamander) name(Create salamander) token(Salamander Warrior,Creature Warrior Salamander,4/3,blue)
|
||||||
auto=@each my endofturn restriction{type(creature|opponentbattlefield)~lessthan~type(creature|mybattlefield)}:token(Salamander Warrior,Creature Warrior Salamander,4/3,blue) opponent
|
auto=@each my endofturn restriction{type(creature|opponentbattlefield)~lessthan~type(creature|mybattlefield)}:name(Create salamander) name(Create salamander) token(Salamander Warrior,Creature Warrior Salamander,4/3,blue) opponent
|
||||||
|
auto=@each my endofturn restriction{type(creature|opponentbattlefield)~equalto~type(creature|mybattlefield)}:name(Create salamander) name(Create salamander) token(Salamander Warrior,Creature Warrior Salamander,4/3,blue) && token(Salamander Warrior,Creature Warrior Salamander,4/3,blue) opponent
|
||||||
text=You and permanents you control have protection from Salamanders. -- At the beginning of your end step, each player who controls the fewest creatures creates a 4/3 blue Salamander Warrior creature token.
|
text=You and permanents you control have protection from Salamanders. -- At the beginning of your end step, each player who controls the fewest creatures creates a 4/3 blue Salamander Warrior creature token.
|
||||||
mana={1}{G}{U}
|
mana={1}{G}{U}
|
||||||
type=Legendary Creature
|
type=Legendary Creature
|
||||||
@@ -40466,8 +40466,7 @@ toughness=2
|
|||||||
[card]
|
[card]
|
||||||
name=Goreclaw, Terror of Qal Sisma
|
name=Goreclaw, Terror of Qal Sisma
|
||||||
auto=lord(creature[power>=4]|mycastingzone) altercost(colorless,-2)
|
auto=lord(creature[power>=4]|mycastingzone) altercost(colorless,-2)
|
||||||
auto=_ATTACKING_all(creature[power>=4]|myBattlefield) 1/1 ueot
|
auto=_ATTACKING_name(All creatures gain 1/1 and trample) all(creature[power>=4]|myBattlefield) transforms((,newability[1/1],newability[trample])) ueot
|
||||||
auto=_ATTACKING_all(creature[power>=4]|myBattlefield) trample ueot
|
|
||||||
text=Creature spells you cast with power 4 or greater cost {2} less to cast. -- Whenever Goreclaw, Terror of Qal Sisma attacks, each creature you control with power 4 or greater gets +1/+1 and gains trample until end of turn.
|
text=Creature spells you cast with power 4 or greater cost {2} less to cast. -- Whenever Goreclaw, Terror of Qal Sisma attacks, each creature you control with power 4 or greater gets +1/+1 and gains trample until end of turn.
|
||||||
mana={3}{G}
|
mana={3}{G}
|
||||||
type=Legendary Creature
|
type=Legendary Creature
|
||||||
@@ -41151,7 +41150,7 @@ toughness=1
|
|||||||
[card]
|
[card]
|
||||||
name=Grazilaxx, Illithid Scholar
|
name=Grazilaxx, Illithid Scholar
|
||||||
auto=@combat(blocked) source(creature|myBattlefield):may name(Return to hand) all(trigger[to]) moveto(ownerhand)
|
auto=@combat(blocked) source(creature|myBattlefield):may name(Return to hand) all(trigger[to]) moveto(ownerhand)
|
||||||
auto=@each combatdamage restriction{opponentdamagedbycombat}:name(Draw card) draw:1 controller
|
auto=@combatdamagefoeof(player) from(creature|mybattlefield):name(Draw card) draw:1 controller
|
||||||
text=Whenever a creature you control becomes blocked, you may return it to its owner's hand. -- Whenever one or more creatures you control deal combat damage to a player, draw a card.
|
text=Whenever a creature you control becomes blocked, you may return it to its owner's hand. -- Whenever one or more creatures you control deal combat damage to a player, draw a card.
|
||||||
mana={1}{U}{U}
|
mana={1}{U}{U}
|
||||||
type=Legendary Creature
|
type=Legendary Creature
|
||||||
@@ -80357,8 +80356,10 @@ toughness=4
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Rosie Cotton of South Lane
|
name=Rosie Cotton of South Lane
|
||||||
auto=token(Food)
|
auto=token(Food) and!( name(Put 1/1 counter) target(other creature|myBattlefield) counter(1/1) )!
|
||||||
auto=@tokencreated(*|myBattlefield):name(Put 1/1 counter) target(other creature|myBattlefield) counter(1/1)
|
auto=@tokencreated(*|myBattlefield) restriction{compare(ishuman)~morethan~0}:name(Put 1/1 counter) name(Put 1/1 counter) target(other creature|myBattlefield) counter(1/1)
|
||||||
|
auto=@tokencreated(*|myBattlefield) restriction{compare(ishuman)~equalto~0,type(Scurry Oak|mybattlefield)~equalto~0}:name(Put 1/1 counter) name(Put 1/1 counter) target(other creature|myBattlefield) counter(1/1)
|
||||||
|
auto=@tokencreated(*|myBattlefield) restriction{compare(ishuman)~equalto~0,type(Scurry Oak|mybattlefield)~morethan~0}:name(Put 1/1 counter) name(Put 1/1 counter) name(Put 1/1 counter) target(Scurry Oak|mybattlefield) counter(1/1)
|
||||||
text=When Rosie Cotton of South Lane enters the battlefield, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") -- Whenever you create a token, put a +1/+1 counter on target creature you control other than Rosie.
|
text=When Rosie Cotton of South Lane enters the battlefield, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") -- Whenever you create a token, put a +1/+1 counter on target creature you control other than Rosie.
|
||||||
mana={2}{W}
|
mana={2}{W}
|
||||||
type=Legendary Creature
|
type=Legendary Creature
|
||||||
@@ -85516,7 +85517,7 @@ type=Instant
|
|||||||
[card]
|
[card]
|
||||||
name=Shalai and Hallar
|
name=Shalai and Hallar
|
||||||
abilities=flying,vigilance
|
abilities=flying,vigilance
|
||||||
auto=@counteradded(1/1) source(creature|myBattlefield):damage:1 target(opponent)
|
auto=@counteradded(1/1) from(creature|myBattlefield):name(Deal damage) damage:1 target(opponent)
|
||||||
text=Flying, vigilance -- Whenever one or more +1/+1 counters are put on a creature you control, Shalai and Hallar deals that much damage to target opponent.
|
text=Flying, vigilance -- Whenever one or more +1/+1 counters are put on a creature you control, Shalai and Hallar deals that much damage to target opponent.
|
||||||
mana={1}{R}{G}{W}
|
mana={1}{R}{G}{W}
|
||||||
type=Legendary Creature
|
type=Legendary Creature
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#Primitives Pack for Wagic the Homebrew.
|
#Primitives Pack for Wagic the Homebrew.
|
||||||
#Please keep these card alphabetized, and try to have the "name=" line at the top of each card
|
#Please keep these card alphabetized, and try to have the "name=" line at the top of each card
|
||||||
#I sorted this programmatically so the other comments are removed except for AUTO_DEFINE - Vitty85 20-07-2023
|
#I sorted this programmatically so the other comments are removed except for AUTO_DEFINE - Vitty85 21-07-2023
|
||||||
[card]
|
[card]
|
||||||
name=Abandon Reason
|
name=Abandon Reason
|
||||||
target=<upto:2>creature
|
target=<upto:2>creature
|
||||||
@@ -45418,8 +45418,8 @@ toughness=5
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Gerrard Capashen
|
name=Gerrard Capashen
|
||||||
auto=@each my upkeep:name(target opponent) target(opponent) life:type:*:targetedpersonshand controller
|
auto=@each my upkeep:name(Gain life) name(Gain life) life:type:*:opponenthand controller
|
||||||
auto=this(attacking) {3}{W}:tap target(creature)
|
auto=this(variable{isattacker}>0) transforms((,newability[{3}{W} restriction{compare(currentphase)~lessthan~9}:name(Tap a creature) name(Tap a creature) transforms((,newability[mustattack],newability[name(Tap a creature) name(Tap a creature) target(creature|battlefield) tap])) ueot]))
|
||||||
text=At the beginning of your upkeep, you gain 1 life for each card in target opponent's hand. -- {3}{W}: Tap target creature. Activate this ability only if Gerrard Capashen is attacking.
|
text=At the beginning of your upkeep, you gain 1 life for each card in target opponent's hand. -- {3}{W}: Tap target creature. Activate this ability only if Gerrard Capashen is attacking.
|
||||||
mana={3}{W}{W}
|
mana={3}{W}{W}
|
||||||
type=Legendary Creature
|
type=Legendary Creature
|
||||||
@@ -46426,8 +46426,8 @@ subtype=Aura
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Gift of the Gargantuan
|
name=Gift of the Gargantuan
|
||||||
aicode=activate target(<upto:2>*[creature;land;zpos<=4]|mylibrary) moveto(myhand)
|
aicode=activate transforms((,newability[if type(creature[zpos<=4]|mylibrary)~morethan~0 then if type(land[zpos<=4]|mylibrary)~morethan~0 then target(creature[zpos<=4]|mylibrary) moveto(myhand) and!( target(land[zpos<=4]|mylibrary) moveto(myhand) and!( all(*[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )! )!],newability[if type(creature[zpos<=4]|mylibrary)~morethan~0 then if type(land[zpos<=4]|mylibrary)~equalto~0 then target(creature[zpos<=4]|mylibrary) moveto(myhand) and!( all(*[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )!],newability[if type(creature[zpos<=4]|mylibrary)~equalto~0 then if type(land[zpos<=4]|mylibrary)~morethan~0 then target(land[zpos<=4]|mylibrary) moveto(myhand) and!( all(*[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )!],newability[if type(creature[zpos<=4]|mylibrary)~morethan~0 then if type(land[zpos<=4]|mylibrary)~equalto~0 then target(creature[zpos<=4]|mylibrary) moveto(myhand) and!( all(*[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )!],newability[if type(creature[zpos<=4]|mylibrary)~equalto~0 then if type(land[zpos<=4]|mylibrary)~equalto~0 then all(*[zpos<=4]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) oneshot
|
||||||
auto=name(look) reveal:4 optionone name(Get a card) target(<upto:2>creature,land|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<4>*|reveal) bottomoflibrary optiontwoend revealend
|
auto=name(Look top 4 cards) reveal:4 optionone name(Get a creature or land) target(<upto:1>*[creature;land]|reveal) moveto(myhand) and!( transforms((,newability[if cantargetcard(*[land]|*) then if type(creature|reveal)~morethan~0 then choice name(Get a creature) name(Get a creature) name(Get a creature) target(creature|reveal) moveto(myhand)],newability[if cantargetcard(*[creature]|*) then if type(land|reveal)~morethan~0 then choice name(Get a land) name(Get a land) name(Get a land) target(land|reveal) moveto(myhand)],newability[choice name(Don't choose another card) donothing])) oneshot )! optiononeend optiontwo name(Put on bottom) target(<4>*|reveal) bottomoflibrary optiontwoend revealend
|
||||||
text=Look at the top four cards of your library. You may reveal a creature card and/or a land card from among them and put the revealed cards into your hand. Put the rest on the bottom of your library in any order.
|
text=Look at the top four cards of your library. You may reveal a creature card and/or a land card from among them and put the revealed cards into your hand. Put the rest on the bottom of your library in any order.
|
||||||
mana={2}{G}
|
mana={2}{G}
|
||||||
type=Sorcery
|
type=Sorcery
|
||||||
@@ -50575,7 +50575,7 @@ type=Instant
|
|||||||
[card]
|
[card]
|
||||||
name=Grip of Phyresis
|
name=Grip of Phyresis
|
||||||
target=equipment
|
target=equipment
|
||||||
auto=moveto(mybattlefield) and!( transforms((,newability[create(Phyrexian Germ:Creature Phyrexian Germ:0/0:black) livingweapon])) oneshot )!
|
auto=moveto(mybattlefield) and!( transforms((Stolen,newability[token(Phyrexian Germ^Creature Phyrexian Germ^0/0^black) and!( name(Choose stolen equipment) target(equipment[stolen&-attached]|mybattlefield) transforms((,newability[name(Attach to phyrexian) rehook target(phyrexian[token&fresh&-geared]|mybattlefield)])) ueot )!])) oneshot )!
|
||||||
text=Gain control of target Equipment, then create a 0/0 black Phyrexian Germ creature token and attach that Equipment to it.
|
text=Gain control of target Equipment, then create a 0/0 black Phyrexian Germ creature token and attach that Equipment to it.
|
||||||
mana={2}{U}
|
mana={2}{U}
|
||||||
type=Instant
|
type=Instant
|
||||||
@@ -51642,8 +51642,8 @@ toughness=2
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Gutter Grime
|
name=Gutter Grime
|
||||||
auto=@movedTo(creature[-token]|graveyard) from(myBattlefield):counter(0/0,1,Slime)
|
auto=@movedTo(creature[-token]|graveyard) from(myBattlefield):name(Add slime counter) counter(0/0,1,Slime) && token(Ooze,Creature Ooze Slimed,0/0,green)
|
||||||
auto=@counteradded(0/0,1,Slime) from(this):token(Ooze,Creature Ooze,type:enchantment{counter(0/0,1,Slime)}:mybattlefield/type:enchantment{counter(0/0,1,Slime)}:mybattlefield cdaactive,green)
|
auto=thisforeach(variable{hascntslime}>0) lord(ooze[token&slimed]|mybattlefield) 1/1
|
||||||
text=Whenever a notoken creature you control dies, put a slime counter on Gutter Grime, then create a green Ooze creature token with "This creature's power and toughness are each equal to the number of slime counters on Gutter Grime."
|
text=Whenever a notoken creature you control dies, put a slime counter on Gutter Grime, then create a green Ooze creature token with "This creature's power and toughness are each equal to the number of slime counters on Gutter Grime."
|
||||||
mana={4}{G}
|
mana={4}{G}
|
||||||
type=Enchantment
|
type=Enchantment
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#Planeswalkers Primitives Pack for Wagic the Homebrew.
|
#Planeswalkers Primitives Pack for Wagic the Homebrew.
|
||||||
#Please keep these card alphabetized, and try to have the "name=" line at the top of each card
|
#Please keep these card alphabetized, and try to have the "name=" line at the top of each card
|
||||||
#We sorted this in alphabetical order - Luruz & Vitty85 12-07-2023
|
#We sorted this in alphabetical order - Luruz & Vitty85 21-07-2023
|
||||||
[card]
|
[card]
|
||||||
name=Abian, Luvion Usurper
|
name=Abian, Luvion Usurper
|
||||||
auto=counter(0/0,5,loyalty)
|
auto=counter(0/0,5,loyalty)
|
||||||
@@ -1042,11 +1042,11 @@ color=black,green
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Garruk, Savage Herald
|
name=Garruk, Savage Herald
|
||||||
aicode=activate transforms((,newability[if type(creature[zpos=1]|mylibrary)~morethan~0 then target(creature[zpos=1]|mylibrary) moveto(ownerHand) else target(*[zpos=1]|mylibrary) moveto(bottomoflibrary)])) ueot
|
aicode=activate transforms((,newability[if type(creature[zpos=1]|mylibrary)~morethan~0 then target(creature[zpos=1]|mylibrary) moveto(myhand) else target(*[zpos=1]|mylibrary) moveto(myreveal) and!( bottomoflibrary )!])) ueot
|
||||||
auto=counter(0/0,5,loyalty)
|
auto=counter(0/0,5,loyalty)
|
||||||
auto={C(0/0,1,Loyalty)}:name(+1: Reveal the top card) reveal:1 optionone target(creature|reveal) moveto(myhand) optiononeend optiontwo name(Put in bottom of library) target(<1>*|reveal) moveto(bottomoflibrary) optiontwoend revealend
|
auto={C(0/0,1,Loyalty)}:name(+1: Reveal the top card) reveal:1 optionone name(Put in hand) target(creature|reveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend revealend
|
||||||
auto={C(0/0,-2,Loyalty)}:name(-2: Deals damage to target creature) target(creature|mybattlefield) transforms((,newability[target(other creature) dynamicability<!powerstrike!>])) oneshot
|
auto={C(0/0,-2,Loyalty)}:name(-2: Deals damage to target creature) target(creature|mybattlefield) transforms((,newability[name(Damage other creature) target(other creature|battlefield) dynamicability<!powerstrike!>])) oneshot
|
||||||
auto={C(0/0,-7,Loyalty)}:name(-7: Creatures you control assign damage) all(creature|myBattlefield) transforms((,newability[@combat(blocked,turnlimited) source(this):may name(assign combat damage to defending player) thisforeach(power>=1) damage:1 opponent && fog from(this)]))
|
auto={C(0/0,-7,Loyalty)}:name(-7: Creatures you control assign damage) all(creature|myBattlefield) transforms((,newability[@combat(blocked) source(this) turnlimited:may name(assign combat damage to defending player) thisforeach(power>=1) damage:1 opponent && fog from(this)])) ueot
|
||||||
text=+1: Reveal the top card of your library. If it's a creature card, put it into your hand. Otherwise, put it on the bottom of your library. -- −2: Target creature you control deals damage equal to its power to another target creature. -- −7: Until end of turn, creatures you control gain "You may have this creature assign its combat damage as though it weren't blocked."
|
text=+1: Reveal the top card of your library. If it's a creature card, put it into your hand. Otherwise, put it on the bottom of your library. -- −2: Target creature you control deals damage equal to its power to another target creature. -- −7: Until end of turn, creatures you control gain "You may have this creature assign its combat damage as though it weren't blocked."
|
||||||
mana={4}{G}{G}
|
mana={4}{G}{G}
|
||||||
type=Legendary Planeswalker
|
type=Legendary Planeswalker
|
||||||
|
|||||||
@@ -230,9 +230,12 @@ class TrCardTapped: public Trigger
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool tap;
|
bool tap;
|
||||||
TrCardTapped(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool tap = true, bool once = false) :
|
bool limitOnceATurn;
|
||||||
Trigger(observer, id, source, once, tc), tap(tap)
|
int triggeredTurn;
|
||||||
|
TrCardTapped(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool tap = true, bool once = false, bool limitOnceATurn = false) :
|
||||||
|
Trigger(observer, id, source, once, tc), tap(tap), limitOnceATurn(limitOnceATurn)
|
||||||
{
|
{
|
||||||
|
triggeredTurn = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int triggerOnEventImpl(WEvent * event)
|
int triggerOnEventImpl(WEvent * event)
|
||||||
@@ -241,9 +244,12 @@ public:
|
|||||||
if (!e) return 0;
|
if (!e) return 0;
|
||||||
if (e->noTrigger)
|
if (e->noTrigger)
|
||||||
return 0;
|
return 0;
|
||||||
|
if (limitOnceATurn && triggeredTurn == game->turn)
|
||||||
|
return 0;
|
||||||
if (e->before == e->after) return 0;
|
if (e->before == e->after) return 0;
|
||||||
if (e->after != tap) return 0;
|
if (e->after != tap) return 0;
|
||||||
if (!tc->canTarget(e->card)) return 0;
|
if (!tc->canTarget(e->card)) return 0;
|
||||||
|
triggeredTurn = game->turn;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -257,18 +263,24 @@ class TrCardTappedformana: public Trigger
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool tap;
|
bool tap;
|
||||||
TrCardTappedformana(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool tap = true, bool once = false) :
|
bool limitOnceATurn;
|
||||||
Trigger(observer, id, source, once, tc), tap(tap)
|
int triggeredTurn;
|
||||||
|
TrCardTappedformana(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool tap = true, bool once = false, bool limitOnceATurn = false) :
|
||||||
|
Trigger(observer, id, source, once, tc), tap(tap), limitOnceATurn(limitOnceATurn)
|
||||||
{
|
{
|
||||||
|
triggeredTurn = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int triggerOnEventImpl(WEvent * event)
|
int triggerOnEventImpl(WEvent * event)
|
||||||
{
|
{
|
||||||
WEventCardTappedForMana * e = dynamic_cast<WEventCardTappedForMana *> (event);
|
WEventCardTappedForMana * e = dynamic_cast<WEventCardTappedForMana *> (event);
|
||||||
if (!e) return 0;
|
if (!e) return 0;
|
||||||
|
if (limitOnceATurn && triggeredTurn == game->turn)
|
||||||
|
return 0;
|
||||||
if (e->before == e->after) return 0;
|
if (e->before == e->after) return 0;
|
||||||
if (e->after != tap) return 0;
|
if (e->after != tap) return 0;
|
||||||
if (!tc->canTarget(e->card)) return 0;
|
if (!tc->canTarget(e->card)) return 0;
|
||||||
|
triggeredTurn = game->turn;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -309,16 +321,22 @@ public:
|
|||||||
class TrCardPhasesIn: public Trigger
|
class TrCardPhasesIn: public Trigger
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TrCardPhasesIn(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false) :
|
bool limitOnceATurn;
|
||||||
Trigger(observer, id, source, once, tc)
|
int triggeredTurn;
|
||||||
|
TrCardPhasesIn(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false) :
|
||||||
|
Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn)
|
||||||
{
|
{
|
||||||
|
triggeredTurn = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int triggerOnEventImpl(WEvent * event)
|
int triggerOnEventImpl(WEvent * event)
|
||||||
{
|
{
|
||||||
WEventCardPhasesIn * e = dynamic_cast<WEventCardPhasesIn *> (event);
|
WEventCardPhasesIn * e = dynamic_cast<WEventCardPhasesIn *> (event);
|
||||||
if (!e) return 0;
|
if (!e) return 0;
|
||||||
|
if (limitOnceATurn && triggeredTurn == game->turn)
|
||||||
|
return 0;
|
||||||
if (!tc->canTarget(e->card)) return 0;
|
if (!tc->canTarget(e->card)) return 0;
|
||||||
|
triggeredTurn = game->turn;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -331,16 +349,22 @@ public:
|
|||||||
class TrCardFaceUp: public Trigger
|
class TrCardFaceUp: public Trigger
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TrCardFaceUp(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false) :
|
bool limitOnceATurn;
|
||||||
Trigger(observer, id, source, once, tc)
|
int triggeredTurn;
|
||||||
|
TrCardFaceUp(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false) :
|
||||||
|
Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn)
|
||||||
{
|
{
|
||||||
|
triggeredTurn = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int triggerOnEventImpl(WEvent * event)
|
int triggerOnEventImpl(WEvent * event)
|
||||||
{
|
{
|
||||||
WEventCardFaceUp * e = dynamic_cast<WEventCardFaceUp *> (event);
|
WEventCardFaceUp * e = dynamic_cast<WEventCardFaceUp *> (event);
|
||||||
if (!e) return 0;
|
if (!e) return 0;
|
||||||
|
if (limitOnceATurn && triggeredTurn == game->turn)
|
||||||
|
return 0;
|
||||||
if (!tc->canTarget(e->card)) return 0;
|
if (!tc->canTarget(e->card)) return 0;
|
||||||
|
triggeredTurn = game->turn;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -353,16 +377,22 @@ public:
|
|||||||
class TrCardTransformed: public Trigger
|
class TrCardTransformed: public Trigger
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TrCardTransformed(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false) :
|
bool limitOnceATurn;
|
||||||
Trigger(observer, id, source, once, tc)
|
int triggeredTurn;
|
||||||
|
TrCardTransformed(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false) :
|
||||||
|
Trigger(observer, id, source, once, tc), limitOnceATurn(limitOnceATurn)
|
||||||
{
|
{
|
||||||
|
triggeredTurn = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int triggerOnEventImpl(WEvent * event)
|
int triggerOnEventImpl(WEvent * event)
|
||||||
{
|
{
|
||||||
WEventCardTransforms * e = dynamic_cast<WEventCardTransforms *> (event);
|
WEventCardTransforms * e = dynamic_cast<WEventCardTransforms *> (event);
|
||||||
if (!e) return 0;
|
if (!e) return 0;
|
||||||
|
if (limitOnceATurn && triggeredTurn == game->turn)
|
||||||
|
return 0;
|
||||||
if (!tc->canTarget(e->card)) return 0;
|
if (!tc->canTarget(e->card)) return 0;
|
||||||
|
triggeredTurn = game->turn;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1315,15 +1315,15 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
|
|||||||
|
|
||||||
//Card unTapped
|
//Card unTapped
|
||||||
if (TargetChooser *tc = parseSimpleTC(s,"untapped", card))
|
if (TargetChooser *tc = parseSimpleTC(s,"untapped", card))
|
||||||
return NEW TrCardTapped(observer, id, card, tc, false, once);
|
return NEW TrCardTapped(observer, id, card, tc, false, once, limitOnceATurn);
|
||||||
|
|
||||||
//Card Tapped
|
//Card Tapped
|
||||||
if (TargetChooser *tc = parseSimpleTC(s,"tapped", card))
|
if (TargetChooser *tc = parseSimpleTC(s,"tapped", card))
|
||||||
return NEW TrCardTapped(observer, id, card, tc, true, once);
|
return NEW TrCardTapped(observer, id, card, tc, true, once, limitOnceATurn);
|
||||||
|
|
||||||
//Card Tapped for mana
|
//Card Tapped for mana
|
||||||
if (TargetChooser *tc = parseSimpleTC(s,"tappedformana", card))
|
if (TargetChooser *tc = parseSimpleTC(s,"tappedformana", card))
|
||||||
return NEW TrCardTappedformana(observer, id, card, tc, true, once);
|
return NEW TrCardTappedformana(observer, id, card, tc, true, once, limitOnceATurn);
|
||||||
|
|
||||||
//Card Produced some mana
|
//Card Produced some mana
|
||||||
if (TargetChooser *tc = parseSimpleTC(s,"producedmana", card))
|
if (TargetChooser *tc = parseSimpleTC(s,"producedmana", card))
|
||||||
@@ -1331,15 +1331,15 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
|
|||||||
|
|
||||||
//Card Transforms
|
//Card Transforms
|
||||||
if (TargetChooser *tc = parseSimpleTC(s,"transformed", card))
|
if (TargetChooser *tc = parseSimpleTC(s,"transformed", card))
|
||||||
return NEW TrCardTransformed(observer, id, card, tc, once);
|
return NEW TrCardTransformed(observer, id, card, tc, once, limitOnceATurn);
|
||||||
|
|
||||||
//Card Faces Up
|
//Card Faces Up
|
||||||
if (TargetChooser *tc = parseSimpleTC(s,"facedup", card))
|
if (TargetChooser *tc = parseSimpleTC(s,"facedup", card))
|
||||||
return NEW TrCardFaceUp(observer, id, card, tc, once);
|
return NEW TrCardFaceUp(observer, id, card, tc, once, limitOnceATurn);
|
||||||
|
|
||||||
//Card Phases In
|
//Card Phases In
|
||||||
if (TargetChooser *tc = parseSimpleTC(s,"phasedin", card))
|
if (TargetChooser *tc = parseSimpleTC(s,"phasedin", card))
|
||||||
return NEW TrCardPhasesIn(observer, id, card, tc, once);
|
return NEW TrCardPhasesIn(observer, id, card, tc, once, limitOnceATurn);
|
||||||
|
|
||||||
//Card Exerted
|
//Card Exerted
|
||||||
if (TargetChooser *tc = parseSimpleTC(s,"exerted", card))
|
if (TargetChooser *tc = parseSimpleTC(s,"exerted", card))
|
||||||
|
|||||||
@@ -1527,16 +1527,16 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(s.find("startingplayer") != string::npos){ //Return who was the starting player (0 is controller, 1 is opponent).
|
else if(s.find("startingplayer") != string::npos){ // Return who was the starting player (0 is controller, 1 is opponent).
|
||||||
intValue = card->controller()->getObserver()->turn%2;
|
intValue = card->controller()->getObserver()->turn%2;
|
||||||
if(card->controller()->getObserver()->currentlyActing() != card->controller())
|
if(card->controller()->getObserver()->currentlyActing() != card->controller())
|
||||||
intValue = 1 - intValue;
|
intValue = 1 - intValue;
|
||||||
}
|
}
|
||||||
else if (s == "pinstsorcount" || s == "oinstsorcount") // Return the number of instant or sorceries that were casted this turn by controller or opponent.
|
else if (s == "pinstsorcount" || s == "oinstsorcount") //Return the number of instant or sorceries that were casted this turn by controller or opponent.
|
||||||
{
|
{
|
||||||
intValue = (s == "pinstsorcount")?card->controller()->game->stack->seenThisTurn("*[instant;sorcery]", Constants::CAST_ALL):card->controller()->opponent()->game->stack->seenThisTurn("*[instant;sorcery]", Constants::CAST_ALL);
|
intValue = (s == "pinstsorcount")?card->controller()->game->stack->seenThisTurn("*[instant;sorcery]", Constants::CAST_ALL):card->controller()->opponent()->game->stack->seenThisTurn("*[instant;sorcery]", Constants::CAST_ALL);
|
||||||
}
|
}
|
||||||
else if ((s.find("palldead") != string::npos) || (s.find("oalldead") != string::npos)) // Return the number of cards of a specific type that died this turn for controller or opponent.
|
else if ((s.find("palldead") != string::npos) || (s.find("oalldead") != string::npos)) //Return the number of cards of a specific type that died this turn for controller or opponent.
|
||||||
{
|
{
|
||||||
int hasdeadtype = 0;
|
int hasdeadtype = 0;
|
||||||
MTGGameZone * grave = (s.find("oalldead") != string::npos)?card->controller()->opponent()->game->graveyard:card->controller()->game->graveyard;
|
MTGGameZone * grave = (s.find("oalldead") != string::npos)?card->controller()->opponent()->game->graveyard:card->controller()->game->graveyard;
|
||||||
@@ -1547,7 +1547,7 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card)
|
|||||||
MTGCardInstance * checkCard = grave->cardsSeenThisTurn[gy];
|
MTGCardInstance * checkCard = grave->cardsSeenThisTurn[gy];
|
||||||
if(checkCard->hasType(checktype) &&
|
if(checkCard->hasType(checktype) &&
|
||||||
((checkCard->previousZone == checkCurrent->game->battlefield)||
|
((checkCard->previousZone == checkCurrent->game->battlefield)||
|
||||||
(checkCard->previousZone == checkCurrent->opponent()->game->battlefield))//died from battlefield
|
(checkCard->previousZone == checkCurrent->opponent()->game->battlefield)) //died from battlefield
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
hasdeadtype++;
|
hasdeadtype++;
|
||||||
@@ -1555,7 +1555,7 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card)
|
|||||||
}
|
}
|
||||||
intValue = hasdeadtype;
|
intValue = hasdeadtype;
|
||||||
}
|
}
|
||||||
else if (s.find("bothalldead") != string::npos) // Return the number of cards of a specific type that died this turn.
|
else if (s.find("bothalldead") != string::npos) //Return the number of cards of a specific type that died this turn.
|
||||||
{
|
{
|
||||||
int hasdeadtype = 0;
|
int hasdeadtype = 0;
|
||||||
string checktype = s.substr(11);
|
string checktype = s.substr(11);
|
||||||
@@ -1654,26 +1654,30 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (s == "pringtemptations" || s == "oringtemptations") // How many times the player has been tempted by the Ring.
|
else if (s == "pringtemptations" || s == "oringtemptations") //How many times the player has been tempted by the Ring.
|
||||||
{
|
{
|
||||||
intValue = (s == "pringtemptations")?card->controller()->ringTemptations:card->controller()->opponent()->ringTemptations;
|
intValue = (s == "pringtemptations")?card->controller()->ringTemptations:card->controller()->opponent()->ringTemptations;
|
||||||
}
|
}
|
||||||
else if (s == "iscommander" || s == "ringbearer") // Return 1 if card is the commander -- Return 1 if card is the Ring bearer
|
else if (s == "iscommander" || s == "ringbearer") //Return 1 if card is the commander -- Return 1 if card is the Ring bearer
|
||||||
{
|
{
|
||||||
intValue = (s == "iscommander")?card->isCommander:card->isRingBearer;
|
intValue = (s == "iscommander")?card->isCommander:card->isRingBearer;
|
||||||
}
|
}
|
||||||
else if (s == "oppotgt" || s == "ctrltgt") // Return 1 if card targeted the opponent -- Return 1 if card targeted its controller
|
else if (s == "oppotgt" || s == "ctrltgt") //Return 1 if card targeted the opponent -- Return 1 if card targeted its controller
|
||||||
{
|
{
|
||||||
intValue = 0;
|
intValue = 0;
|
||||||
Player* p = (s == "oppotgt")?card->controller()->opponent():card->controller();
|
Player* p = (s == "oppotgt")?card->controller()->opponent():card->controller();
|
||||||
if(card->playerTarget == p)
|
if(card->playerTarget == p)
|
||||||
intValue = 1;
|
intValue = 1;
|
||||||
}
|
}
|
||||||
else if (s == "kicked")
|
else if (s == "isattacker" || s == "couldattack") //Return 1 if creature is attacking. -- Return 1 if creature can attack.
|
||||||
|
{
|
||||||
|
intValue = (s == "isattacker")?card->isAttacker():card->canAttack();
|
||||||
|
}
|
||||||
|
else if (s == "kicked") //Return the number of times kicker has been paid
|
||||||
{
|
{
|
||||||
intValue = card->kicked;
|
intValue = card->kicked;
|
||||||
}
|
}
|
||||||
else if(!intValue)//found nothing, try parsing a atoi
|
else if(!intValue) //Found nothing, try parsing a atoi
|
||||||
{
|
{
|
||||||
intValue = atoi(s.c_str());
|
intValue = atoi(s.c_str());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user