add system for (To keyword, ...) reminder text (#69)
-added handle_action_rt(to:"name", "Action") to be used in keyword code. It will return either "To name, action" or "Action" depending on if the reminder text is removed from the keyword.
Example: {handle_action_rt(to:"populate", "Create")} a token that's a copy of a creature token you control.
-added handle_merged_rt("Normal", moved:"Alternate") to be used in keyword code. It will typically return "Normal", but will return "Alternate" if its keyword gets moved.
Example: {handle_merged_rt(if param1.value == "ns" then "They’re artifacts" else "It’s an artifact", moved:"A Food token is an artifact")} with "2, T, Sacrifice this artifact: You gain 3 life."
This commit is contained in:
@@ -41,6 +41,8 @@ OTHER UPDATES
|
|||||||
• Added support for Custom Watermarks up to a maximum size of 1024x1024. Watermarks that aren't 500x500 will still need to include their height and width.
|
• Added support for Custom Watermarks up to a maximum size of 1024x1024. Watermarks that aren't 500x500 will still need to include their height and width.
|
||||||
• Split the "blend with colors" watermark option into one that applies to custom watermarks and one that applies to default watermarks.
|
• Split the "blend with colors" watermark option into one that applies to custom watermarks and one that applies to default watermarks.
|
||||||
• Reorganized the Set tab into something hopefully easier to navigate.
|
• Reorganized the Set tab into something hopefully easier to navigate.
|
||||||
|
• Added the keyword utility handle_action_rt(to:"name", "Action"). This can be used to add "To {name}," before the reminder text when it isn't right next to the keyword, such as handle_action_rt(to:"forage", "Exile"). capitalization matters here.
|
||||||
|
• Added the keyword utility handle_merged_rt("Normal", moved:"Alternate"). This can be used to add clarifying text when reminder text is merged, like in [card]Cache Grab[/card]. Unlike the previous, this only changes during reminder text merges, not any distance from the keyword.
|
||||||
• Added the up and down triangles as mainframe transform options.
|
• Added the up and down triangles as mainframe transform options.
|
||||||
• Added support for dungeons with 8 levels.
|
• Added support for dungeons with 8 levels.
|
||||||
• Added option to remove backface rarity symbol to Mainframe DFC.
|
• Added option to remove backface rarity symbol to Mainframe DFC.
|
||||||
|
|||||||
@@ -380,8 +380,8 @@ keyword:
|
|||||||
match: Scry <atom-param>number</atom-param>
|
match: Scry <atom-param>number</atom-param>
|
||||||
mode: core
|
mode: core
|
||||||
reminder:
|
reminder:
|
||||||
To scry {param1}, look at the top {
|
{ handle_action_rt(to:"scry {param1}", "Look")} at the top {
|
||||||
if param1.value=="1" then "card of your library. You may put that card on the bottom."
|
if param1.value=="1" then "card of your library. You may put that card on the bottom of your library."
|
||||||
else "{english_number(param1)} cards of your library, then put any number of them on the bottom and the rest on top in any order."
|
else "{english_number(param1)} cards of your library, then put any number of them on the bottom and the rest on top in any order."
|
||||||
}
|
}
|
||||||
keyword:
|
keyword:
|
||||||
@@ -580,8 +580,8 @@ keyword:
|
|||||||
match: Fateseal <atom-param>number</atom-param>
|
match: Fateseal <atom-param>number</atom-param>
|
||||||
mode: action
|
mode: action
|
||||||
reminder:
|
reminder:
|
||||||
To fateseal {param1}, look at the top {
|
{handle_action_rt(to:"fateseal "+param1, "Look")} at the top {
|
||||||
if param1.value=="1" then "card of an opponent’s library, then you may put that card on the bottom of that player’s library."
|
if param1.value=="1" then "card of an opponent’s library, then you may put it on the bottom of that player’s library."
|
||||||
else "{english_number(param1)} cards of an opponent’s library, then put any number of them on the bottom of that player’s library and the rest on top in any order."
|
else "{english_number(param1)} cards of an opponent’s library, then put any number of them on the bottom of that player’s library and the rest on top in any order."
|
||||||
}
|
}
|
||||||
keyword:
|
keyword:
|
||||||
@@ -780,7 +780,7 @@ keyword:
|
|||||||
keyword: Proliferate
|
keyword: Proliferate
|
||||||
match: Proliferate
|
match: Proliferate
|
||||||
mode: action
|
mode: action
|
||||||
reminder: Choose any number of permanents and/or players, then give each another counter of each kind already there.
|
reminder: {handle_action_rt(to:"proliferate", "Choose")} any number of permanents and/or players, then give each another counter of each kind already there.
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Metalcraft
|
keyword: Metalcraft
|
||||||
match: Metalcraft
|
match: Metalcraft
|
||||||
@@ -872,7 +872,7 @@ keyword:
|
|||||||
keyword: Populate
|
keyword: Populate
|
||||||
match: populate
|
match: populate
|
||||||
mode: action
|
mode: action
|
||||||
reminder: Create a token that's a copy of a creature token you control.
|
reminder: {handle_action_rt(to:"populate", "Create")} a token that's a copy of a creature token you control.
|
||||||
# Gatecrash
|
# Gatecrash
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Extort
|
keyword: Extort
|
||||||
@@ -1018,7 +1018,7 @@ keyword:
|
|||||||
keyword: Bolster
|
keyword: Bolster
|
||||||
match: bolster <atom-param>number</atom-param>
|
match: bolster <atom-param>number</atom-param>
|
||||||
mode: action
|
mode: action
|
||||||
reminder: Choose a creature with the least toughness among creatures you control and put {english_number_a(param1)} +1/+1 counter(s) on it.
|
reminder: {handle_action_rt(to:"bolster {param1}", "Choose")} a creature with the least toughness among creatures you control and put {english_number_a(param1)} +1/+1 counter(s) on it.
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Dash
|
keyword: Dash
|
||||||
match: Dash <atom-param>cost</atom-param>
|
match: Dash <atom-param>cost</atom-param>
|
||||||
@@ -1028,7 +1028,7 @@ keyword:
|
|||||||
keyword: Manifest
|
keyword: Manifest
|
||||||
match: manifest
|
match: manifest
|
||||||
mode: action
|
mode: action
|
||||||
reminder: To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.
|
reminder: {handle_action_rt(to:"manifest a card", "Put")} it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.
|
||||||
# Dragons of Tarkir
|
# Dragons of Tarkir
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Exploit
|
keyword: Exploit
|
||||||
@@ -1103,13 +1103,13 @@ keyword:
|
|||||||
keyword: Support
|
keyword: Support
|
||||||
match: Support <atom-param>number</atom-param>
|
match: Support <atom-param>number</atom-param>
|
||||||
mode: action
|
mode: action
|
||||||
reminder: Put a +1/+1 counter on {if param1.value!=1 then "each of "}up to {english_number(param1)}{if has_pt() then " other"} target creature(s).
|
reminder: {handle_action_rt(to:"support {param1}", "Put")} a +1/+1 counter on {if param1.value!=1 then "each of "}up to {english_number(param1)}{if has_pt() then " other"} target creature(s).
|
||||||
# Shadows over Innistrad
|
# Shadows over Innistrad
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Investigate
|
keyword: Investigate
|
||||||
match: Investigate
|
match: Investigate
|
||||||
mode: action
|
mode: action
|
||||||
reminder: Create a Clue token. It's an artifact with "<sym>2</sym>, Sacrifice this artifact: Draw a card."
|
reminder: {handle_action_rt(to:"investigate", "Create")} a Clue token. It's an artifact with "<sym>2</sym>, Sacrifice this artifact: Draw a card."
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Skulk
|
keyword: Skulk
|
||||||
match: Skulk
|
match: Skulk
|
||||||
@@ -1238,7 +1238,7 @@ keyword:
|
|||||||
keyword: Explore
|
keyword: Explore
|
||||||
match: explores
|
match: explores
|
||||||
mode: action
|
mode: action
|
||||||
reminder: Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on {this_or_that("creature")}, then put the card back or put it into your graveyard.
|
reminder: {handle_action_rt(to:"explore", "Reveal")} the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on {this_or_that("creature")}, then put the card back or put it into your graveyard.
|
||||||
#Unstable
|
#Unstable
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Assemble a Contraption
|
keyword: Assemble a Contraption
|
||||||
@@ -1326,7 +1326,7 @@ keyword:
|
|||||||
keyword: Treasure token
|
keyword: Treasure token
|
||||||
match: Treasure toke<atom-param>*s</atom-param>
|
match: Treasure toke<atom-param>*s</atom-param>
|
||||||
mode: core
|
mode: core
|
||||||
reminder: {if param1.value == "ns" then "They’re artifacts" else "It’s an artifact"} with "T, Sacrifice this artifact: Add one mana of any color."
|
reminder: {handle_merged_rt(if param1.value == "ns" then "They’re artifacts" else "It’s an artifact", moved:"A Treasure token is an artifact")} with "T, Sacrifice this artifact: Add one mana of any color."
|
||||||
#Guilds of Ravnica
|
#Guilds of Ravnica
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Jump-start
|
keyword: Jump-start
|
||||||
@@ -1343,7 +1343,7 @@ keyword:
|
|||||||
match: Surveil <atom-param>number</atom-param>
|
match: Surveil <atom-param>number</atom-param>
|
||||||
mode: action
|
mode: action
|
||||||
reminder:
|
reminder:
|
||||||
Look at the top {
|
{handle_action_rt(to:"surveil {param1}", "Look")} at the top {
|
||||||
if param1.value=="1" then "card of your library. You may put it into your graveyard."
|
if param1.value=="1" then "card of your library. You may put it into your graveyard."
|
||||||
else "{english_number(param1)} cards of your library, then put any number of them into your graveyard and the rest on top of your library in any order."
|
else "{english_number(param1)} cards of your library, then put any number of them into your graveyard and the rest on top of your library in any order."
|
||||||
}
|
}
|
||||||
@@ -1383,7 +1383,7 @@ keyword:
|
|||||||
keyword: Amass
|
keyword: Amass
|
||||||
match: Amass <atom-param>name</atom-param> <atom-param>number</atom-param>
|
match: Amass <atom-param>name</atom-param> <atom-param>number</atom-param>
|
||||||
mode: action
|
mode: action
|
||||||
reminder: Put {english_number_a(param2)} +1/+1 counter(s) on an Army you control. It's also a {if param1.value == "Zombies" then "Zombie" else english_singular(param1)}. If you don't control an Army, create a 0/0 black {if param1.value == "Zombies" then "Zombie" else english_singular(param1)} Army creature token first.
|
reminder: {handle_action_rt(to:"amass {param1} {param2}", "Create")} {english_number_a(param2)} +1/+1 counter(s) on an Army you control. It's also a {if param1.value == "Zombies" then "Zombie" else english_singular(param1)}. If you don't control an Army, create a 0/0 black {if param1.value == "Zombies" then "Zombie" else english_singular(param1)} Army creature token first.
|
||||||
#Throne of Eldraine
|
#Throne of Eldraine
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Adamant
|
keyword: Adamant
|
||||||
@@ -1394,7 +1394,7 @@ keyword:
|
|||||||
keyword: Food token
|
keyword: Food token
|
||||||
match: Food toke<atom-param>*s</atom-param>
|
match: Food toke<atom-param>*s</atom-param>
|
||||||
mode: core
|
mode: core
|
||||||
reminder: {if param1.value == "ns" then "They’re artifacts" else "It’s an artifact"} with "2, T, Sacrifice this artifact: You gain 3 life."
|
reminder: {handle_merged_rt(if param1.value == "ns" then "They’re artifacts" else "It’s an artifact", moved:"A Food token is an artifact")} with "2, T, Sacrifice this artifact: You gain 3 life."
|
||||||
#Theros Beyond Death
|
#Theros Beyond Death
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Escape
|
keyword: Escape
|
||||||
@@ -1405,7 +1405,7 @@ keyword:
|
|||||||
keyword: Gold token
|
keyword: Gold token
|
||||||
match: Gold toke<atom-param>*s</atom-param>
|
match: Gold toke<atom-param>*s</atom-param>
|
||||||
mode: core
|
mode: core
|
||||||
reminder: {if param1.value == "ns" then "They’re artifacts" else "It’s an artifact"} with "Sacrifice this artifact: Add one mana of any color."
|
reminder: {handle_merged_rt(if param1.value == "ns" then "They’re artifacts" else "It’s an artifact", moved:"A Gold token is an artifact")} with "Sacrifice this artifact: Add one mana of any color."
|
||||||
#Ikoria: Lair of Behemoths
|
#Ikoria: Lair of Behemoths
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Mutate
|
keyword: Mutate
|
||||||
@@ -1420,9 +1420,9 @@ keyword:
|
|||||||
#Magic 2021
|
#Magic 2021
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Mill
|
keyword: Mill
|
||||||
match: <atom-param>mill</atom-param> <atom-param>one_word</atom-param>
|
match: <atom-param>mill</atom-param> <atom-param>one_word</atom-param> car<atom-param>*s</atom-param>
|
||||||
mode: core
|
mode: core
|
||||||
reminder: {if param1.value == "mills" then "They put" else "Put"} the top {if param2.value == "a" then "" else param2 + " "}{if param2.value == "a" then "card" else "cards"} of {if param1.value == "mills" then "their library into their" else "your library into your"} graveyard.
|
reminder: { if param1.value == "mills" then handle_action_rt(to:if param2 == "a" then "mill a card" else "mill {param2} cards", "They") + " put the top " + (if param2.value == "a" then "card " else param2 + " cards ") + "of their library into their graveyard." else handle_action_rt(to:if param2 == "a" then "mill a card" else "mill {param2} cards", "Put") + " the top " + (if param2.value == "a" then "card " else param2 + " cards ") + "of your library into your graveyard." }
|
||||||
keyword:
|
keyword:
|
||||||
keyword: phases out
|
keyword: phases out
|
||||||
match: phases out
|
match: phases out
|
||||||
@@ -1445,7 +1445,7 @@ keyword:
|
|||||||
keyword: Shard token
|
keyword: Shard token
|
||||||
match: Shard toke<atom-param>*s</atom-param>
|
match: Shard toke<atom-param>*s</atom-param>
|
||||||
mode: core
|
mode: core
|
||||||
reminder: {if param1.value == "ns" then "They’re enchantments" else "It’s an enchantment"} with "2, Sacrifice this enchantment: Scry ]1[, then draw a card."
|
reminder: {handle_merged_rt(if param1.value == "ns" then "They’re enchantments" else "It’s an enchantment", moved:"A Shard token is an enchantment")} with "2, Sacrifice this enchantment: Scry ]1[, then draw a card."
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Boast
|
keyword: Boast
|
||||||
match: Boast
|
match: Boast
|
||||||
@@ -1461,7 +1461,7 @@ keyword:
|
|||||||
keyword: Learn
|
keyword: Learn
|
||||||
match: learn
|
match: learn
|
||||||
mode: action
|
mode: action
|
||||||
reminder: You may reveal a Lesson card you own from outside the game and put it into your hand, or discard a card to draw a card.
|
reminder: {handle_action_rt(to:"learn", "you")} may reveal a Lesson card you own from outside the game and put it into your hand, or discard a card to draw a card.
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Ward
|
keyword: Ward
|
||||||
match: Ward <atom-param>cost</atom-param>
|
match: Ward <atom-param>cost</atom-param>
|
||||||
@@ -1541,7 +1541,7 @@ keyword:
|
|||||||
keyword: Blood token
|
keyword: Blood token
|
||||||
match: Blood toke<atom-param>*s</atom-param>
|
match: Blood toke<atom-param>*s</atom-param>
|
||||||
mode: expert
|
mode: expert
|
||||||
reminder: {if param1.value == "ns" then "They’re artifacts" else "It’s an artifact"} with "1, T, Discard a card, Sacrifice this artifact: Draw a card."
|
reminder: {handle_merged_rt(if param1.value == "ns" then "They’re artifacts" else "It’s an artifact", moved:"A Blood token is an artifact")} with "1, T, Discard a card, Sacrifice this artifact: Draw a card."
|
||||||
# Kamigawa Neon Dynasty
|
# Kamigawa Neon Dynasty
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Reconfigure
|
keyword: Reconfigure
|
||||||
@@ -1568,17 +1568,17 @@ keyword:
|
|||||||
keyword: Connive
|
keyword: Connive
|
||||||
match: connive
|
match: connive
|
||||||
mode: action
|
mode: action
|
||||||
reminder: To have a creature connive, draw a card, then discard a card. If you discarded a nonland card, put a +1/+1 counter on that creature.
|
reminder: {handle_action_rt(to:"have a creature connive", "Draw")} a card, then discard a card. If you discarded a nonland card, put a +1/+1 counter on that creature.
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Connives
|
keyword: Connives
|
||||||
match: connives
|
match: connives
|
||||||
mode: action
|
mode: action
|
||||||
reminder: Draw a card, then discard a card. If you discarded a nonland card, put a +1/+1 counter on {this_or_that("creature")}.
|
reminder: {handle_action_rt(to:"have a creature connive", "Draw")} a card, then discard a card. If you discarded a nonland card, put a +1/+1 counter on {this_or_that("creature")}.
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Connives N
|
keyword: Connives N
|
||||||
match: connives <atom-param>number</atom-param>
|
match: connives <atom-param>number</atom-param>
|
||||||
mode: action
|
mode: action
|
||||||
reminder: Draw {english_number_a(param1)} card(s), then discard {english_number_a(param1)} card(s). Put a +1/+1 counter on {this_or_that("creature")} for each nonland card discarded this way.
|
reminder: {handle_action_rt(to:"have a creature connive", "Draw")} {english_number_a(param1)} card(s), then discard {english_number_a(param1)} card(s). Put a +1/+1 counter on {this_or_that("creature")} for each nonland card discarded this way.
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Blitz
|
keyword: Blitz
|
||||||
match: Blitz <atom-param>cost</atom-param>
|
match: Blitz <atom-param>cost</atom-param>
|
||||||
@@ -1647,7 +1647,7 @@ keyword:
|
|||||||
keyword: Powerstone token
|
keyword: Powerstone token
|
||||||
match: Powerstone toke<atom-param>*s</atom-param>
|
match: Powerstone toke<atom-param>*s</atom-param>
|
||||||
mode: expert
|
mode: expert
|
||||||
reminder: {if param1.value == "ns" then "They’re artifacts" else "It’s an artifact"} with "[T]: Add [C]. This mana can't be spent to cast a nonartifact spell."
|
reminder: {handle_merged_rt(if param1.value == "ns" then "They’re artifacts" else "It’s an artifact", moved:"A Powerstone token is an artifact")} with "[T]: Add [C]. This mana can't be spent to cast a nonartifact spell."
|
||||||
# Brother's War
|
# Brother's War
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Prototype
|
keyword: Prototype
|
||||||
@@ -1690,7 +1690,7 @@ keyword:
|
|||||||
keyword: Incubate
|
keyword: Incubate
|
||||||
match: Incubate <atom-param>number</atom-param>
|
match: Incubate <atom-param>number</atom-param>
|
||||||
mode: action
|
mode: action
|
||||||
reminder: Create an Incubator token with {english_number_a(param1)} +1/+1 counter(s) on it and "[2]: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.
|
reminder: {handle_action_rt(to:"incubate {param1}", "Create")} an Incubator token with {english_number_a(param1)} +1/+1 counter(s) on it and "[2]: Transform this artifact." It transforms into a 0/0 Phyrexian artifact creature.
|
||||||
# Wilds of Eldraine
|
# Wilds of Eldraine
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Bargain
|
keyword: Bargain
|
||||||
@@ -1769,7 +1769,7 @@ keyword:
|
|||||||
keyword: Map token
|
keyword: Map token
|
||||||
match: Map toke<atom-param>*s</atom-param>
|
match: Map toke<atom-param>*s</atom-param>
|
||||||
mode: expert
|
mode: expert
|
||||||
reminder: {if param1.value == "ns" then "They’re artifacts" else "It’s an artifact"} with "1, T, Sacrifice this artifact: Target creature you control explores. Activate only as a sorcery."
|
reminder: {handle_merged_rt(if param1.value == "ns" then "They’re artifacts" else "It’s an artifact", moved:"A Map token is an artifact")} with "1, T, Sacrifice this artifact: Target creature you control explores. Activate only as a sorcery."
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Craft
|
keyword: Craft
|
||||||
match: Craft with <atom-param>name</atom-param> <atom-param>cost</atom-param>
|
match: Craft with <atom-param>name</atom-param> <atom-param>cost</atom-param>
|
||||||
@@ -1794,7 +1794,7 @@ keyword:
|
|||||||
keyword: Discover
|
keyword: Discover
|
||||||
match: Discover <atom-param>number</atom-param>
|
match: Discover <atom-param>number</atom-param>
|
||||||
mode: action
|
mode: action
|
||||||
reminder: Exile cards from the top of your library until you exile a nonland card with mana value {param1} or less. Cast it without paying its mana cost or put it into your hand. Put the rest on the bottom in a random order.
|
reminder: {handle_action_rt(to:"discover {param1}", "Exile")} cards from the top of your library until you exile a nonland card with mana value {param1} or less. Cast it without paying its mana cost or put it into your hand. Put the rest on the bottom in a random order.
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Finality counters
|
keyword: Finality counters
|
||||||
match: finality counter
|
match: finality counter
|
||||||
@@ -1805,12 +1805,12 @@ keyword:
|
|||||||
keyword: Cloak
|
keyword: Cloak
|
||||||
match: cloak
|
match: cloak
|
||||||
mode: action
|
mode: action
|
||||||
reminder: To cloak a card, put it onto the battlefield face down as a 2/2 creature with ward [2]. Turn it face up any time for its mana cost if it's a creature card.
|
reminder: {handle_action_rt(to:"cloak a card", "Put")} it onto the battlefield face down as a 2/2 creature with ward [2]. Turn it face up any time for its mana cost if it's a creature card.
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Collect evidence
|
keyword: Collect evidence
|
||||||
match: collect evidence <atom-param>number</atom-param>
|
match: collect evidence <atom-param>number</atom-param>
|
||||||
mode: action
|
mode: action
|
||||||
reminder: Exile cards with total mana value {param1} or greater from your graveyard.
|
reminder: {handle_action_rt(to:"collect evidence {param1}", "Exile")} cards with total mana value {param1} or greater from your graveyard.
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Disguise
|
keyword: Disguise
|
||||||
match: Disguise <atom-param>cost</atom-param>
|
match: Disguise <atom-param>cost</atom-param>
|
||||||
@@ -1831,7 +1831,7 @@ keyword:
|
|||||||
keyword: Junk token
|
keyword: Junk token
|
||||||
match: Junk toke<atom-param>*s</atom-param>
|
match: Junk toke<atom-param>*s</atom-param>
|
||||||
mode: expert
|
mode: expert
|
||||||
reminder: {if param1.value == "ns" then "They’re artifacts" else "It’s an artifact"} with "T, Sacrifice this artifact: Exile the top card of your library. You may play that card this turn. Activate only as a sorcery."
|
reminder: {handle_merged_rt(if param1.value == "ns" then "They’re artifacts" else "It’s an artifact", moved:"A Junk token is an artifact")} with "T, Sacrifice this artifact: Exile the top card of your library. You may play that card this turn. Activate only as a sorcery."
|
||||||
# Assassin's Creed
|
# Assassin's Creed
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Freerunning
|
keyword: Freerunning
|
||||||
@@ -1890,12 +1890,12 @@ keyword:
|
|||||||
keyword: forage
|
keyword: forage
|
||||||
match: forage
|
match: forage
|
||||||
mode: action
|
mode: action
|
||||||
reminder: Exile three cards from your graveyard or sacrifice a Food.
|
reminder: {handle_action_rt(to:"forage", "Exile")} three cards from your graveyard or sacrifice a Food.
|
||||||
keyword:
|
keyword:
|
||||||
keyword: forage
|
keyword: forage
|
||||||
match: foraging
|
match: foraging
|
||||||
mode: action
|
mode: action
|
||||||
reminder: Exile three cards from your graveyard or sacrifice a Food.
|
reminder: {handle_action_rt(to:"forage", "Exile")} three cards from your graveyard or sacrifice a Food.
|
||||||
keyword:
|
keyword:
|
||||||
keyword: Gift a card
|
keyword: Gift a card
|
||||||
match: Gift a card
|
match: Gift a card
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ include file: language
|
|||||||
include file: statistics_script
|
include file: statistics_script
|
||||||
include file: /magic-blends.mse-include/new-blends
|
include file: /magic-blends.mse-include/new-blends
|
||||||
############################################################## Versioning
|
############################################################## Versioning
|
||||||
version_date := {"2024-05-27 Mainframe 1.3.f Showcase Catchup: Module Rollout"}
|
version_date := {"2024-05-27 Mainframe 1.3.g Showcase Catchup: Action Check"}
|
||||||
version := version_date
|
version := version_date
|
||||||
############################################################## Common filters
|
############################################################## Common filters
|
||||||
############################################################## Utility
|
############################################################## Utility
|
||||||
@@ -1178,6 +1178,16 @@ this_or_that := {
|
|||||||
|
|
||||||
this_that + " " + type
|
this_that + " " + type
|
||||||
}@(upper:false)
|
}@(upper:false)
|
||||||
|
#### see if a keyword should have different text because it's merged with another reminder text
|
||||||
|
#### handle_merged_rt("Its a", moved:"A Food token is")
|
||||||
|
handle_merged_rt := {
|
||||||
|
"<use-if-moved>" + moved + "</use-if-moved><otherwise>" + input + "</otherwise>"
|
||||||
|
}
|
||||||
|
#### see if an action keyword should have different text because its distant from the keyword
|
||||||
|
#### handle_action_rt(to:"forage", "Exile")
|
||||||
|
handle_action_rt := {
|
||||||
|
"<use-if-bumped>To " + to + ", " + to_lower(input) + "</use-if-bumped><otherwise>" + input + "</otherwise>"
|
||||||
|
}
|
||||||
|
|
||||||
############################################################## Complex reminder texts
|
############################################################## Complex reminder texts
|
||||||
self_pro_check := match@(match:"You ha(ve|s) <kw-A><nospellcheck>protection")
|
self_pro_check := match@(match:"You ha(ve|s) <kw-A><nospellcheck>protection")
|
||||||
@@ -1472,6 +1482,9 @@ text_filter :=
|
|||||||
remove_tag@(tag: "<bullet>") +
|
remove_tag@(tag: "<bullet>") +
|
||||||
remove_tag@(tag: "<align") +
|
remove_tag@(tag: "<align") +
|
||||||
remove_tag@(tag: "<margin") +
|
remove_tag@(tag: "<margin") +
|
||||||
|
remove_tag@(tag: "<moved>") +
|
||||||
|
remove_tag@(tag: "<blob>") +
|
||||||
|
remove_tag@(tag: "<key>") +
|
||||||
#### step 1b : remove zero-width space used for level spacers
|
#### step 1b : remove zero-width space used for level spacers
|
||||||
replace@(match:"", replace:"") +
|
replace@(match:"", replace:"") +
|
||||||
#### step 2a : temp fix for formatting buttons
|
#### step 2a : temp fix for formatting buttons
|
||||||
@@ -1496,7 +1509,7 @@ text_filter :=
|
|||||||
chosen(choice:if correct_case or mode == "action" then mode else "lower case", set.automatic_reminder_text) and chosen(choice:mode, set.automatic_reminder_text)
|
chosen(choice:if correct_case or mode == "action" then mode else "lower case", set.automatic_reminder_text) and chosen(choice:mode, set.automatic_reminder_text)
|
||||||
},
|
},
|
||||||
combine: {
|
combine: {
|
||||||
keyword := "<nospellcheck>{keyword}</nospellcheck>"
|
keyword := "<nospellcheck><key>{keyword}</key></nospellcheck>"
|
||||||
reminder := process_english_hints(reminder)
|
reminder := process_english_hints(reminder)
|
||||||
if mode == "pseudo" then "<i-auto>{keyword}</i-auto>"
|
if mode == "pseudo" then "<i-auto>{keyword}</i-auto>"
|
||||||
else keyword + if expand then "<atom-reminder-{mode}> ({reminder})</atom-reminder-{mode}>" else ""
|
else keyword + if expand then "<atom-reminder-{mode}> ({reminder})</atom-reminder-{mode}>" else ""
|
||||||
@@ -1509,13 +1522,41 @@ text_filter :=
|
|||||||
) +
|
) +
|
||||||
#### step 2c : move action keywords' reminder text to the end of the line
|
#### step 2c : move action keywords' reminder text to the end of the line
|
||||||
replace@(
|
replace@(
|
||||||
match: "(<atom-reminder-[^>]+> (?:(?!</kw).*?)</atom-reminder-[^>]+></kw[^>]*>)([^\n]*)", #### removed "| ?<kw-" from lookahead
|
match: "(<atom-reminder-[^>]+> (?:(?!</kw).*?)</atom-reminder-[^>]+></kw[^>]*>)([^\n]+)", #### removed "| ?<kw-" from lookahead
|
||||||
replace: "\\2\\1"
|
replace: "\\2\\1"
|
||||||
) +
|
) +
|
||||||
#### step 2d : when there's an action keyword and another one, then move that to the end of the line
|
#### step 2d : when there's an action keyword and another one, then move that to the end of the line
|
||||||
replace@(
|
replace@(
|
||||||
match: "(<atom-reminder-[^>]+> (?:(?!</kw)[^\n]*?)</atom-reminder-[^>]+></kw[^>]*>)([^\n]*?)(<atom-reminder-[^>]+> (?:(?!</kw).*?)</atom-reminder-[^>]+></kw[^>]*>)([^\n]*)",
|
match: "(<atom-reminder-[^>]+> (?:(?!</kw)[^\n]*?)</atom-reminder-[^>]+></kw[^>]*>)([^\n]*?)(<atom-reminder-[^>]+> (?:(?!</kw).*?)</atom-reminder-[^>]+></kw[^>]*>)([^\n]*)",
|
||||||
replace: "\\2\\4\\3\\1"
|
replace: "\\2<blob>\\4\\3<moved>\\1</moved></blob>"
|
||||||
|
) +
|
||||||
|
#### step 2da : apply multikeyword reminder edits
|
||||||
|
#### A Food token is... vs It's a...
|
||||||
|
#### this one moved
|
||||||
|
replace@(
|
||||||
|
match: "(<moved><atom-reminder[^>]*> [(])<use-if-(?:moved|bumped)>(.*?)</use-if-(?:moved|bumped)><otherwise>(.*?)</otherwise>",
|
||||||
|
replace: "\\1\\2"
|
||||||
|
) +
|
||||||
|
#### this one didn't
|
||||||
|
replace@(
|
||||||
|
match: "<use-if-moved>(.*?)</use-if-moved><otherwise>(.*?)</otherwise>",
|
||||||
|
replace: "\\2"
|
||||||
|
) +
|
||||||
|
#### To forage, exile... vs Exile...
|
||||||
|
#### this was put in a combined rt
|
||||||
|
replace@(
|
||||||
|
match: "(<blob>.*?)<use-if-bumped>(.*?)</use-if-bumped><otherwise>(.*?)</otherwise>",
|
||||||
|
replace: "\\1\\2"
|
||||||
|
) +
|
||||||
|
#### this one wasn't bumped
|
||||||
|
replace@(
|
||||||
|
match: "(</key></nospellcheck>[.]?<atom-reminder[^>]*> [(])<use-if-bumped>(.*?)</use-if-bumped><otherwise>(.*?)</otherwise>",
|
||||||
|
replace: "\\1\\3"
|
||||||
|
) +
|
||||||
|
#### this one was bumped
|
||||||
|
replace@(
|
||||||
|
match: "<use-if-bumped>(.*?)</use-if-bumped><otherwise>(.*?)</otherwise>",
|
||||||
|
replace: "\\1"
|
||||||
) +
|
) +
|
||||||
#### step 2e : allow a sentence after lowercase reminder text for equips etc.
|
#### step 2e : allow a sentence after lowercase reminder text for equips etc.
|
||||||
#replace@(
|
#replace@(
|
||||||
@@ -1529,7 +1570,7 @@ text_filter :=
|
|||||||
) +
|
) +
|
||||||
#### step 2g : combine reminder texts
|
#### step 2g : combine reminder texts
|
||||||
replace@(
|
replace@(
|
||||||
match: "[)](</atom-reminder-[^>]+></kw-[^>]><atom-reminder-[^>]+> )[(]"
|
match: "[)](</atom-reminder-[^>]+></kw-[^>]>(?:</?moved>)?<atom-reminder-[^>]+> )[(]"
|
||||||
replace: "\\1"
|
replace: "\\1"
|
||||||
) +
|
) +
|
||||||
#### step 2h : temp fix for formatting buttons
|
#### step 2h : temp fix for formatting buttons
|
||||||
|
|||||||
Reference in New Issue
Block a user