diff --git a/changelog.txt b/changelog.txt
index b831f7e3d..85baf34d4 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -33,7 +33,7 @@ PARTITIONS
OTHER UPDATES
• MSE has been updated to MSE 2.1.3! This fixes a bug where single line text-fields like names and typelines couldn't be automatically shrunk, and adds shift-click to select multiple options in the export window. This isn't the full jump to hagan's 2.4.0 fork yet, but we're getting there.
• Added Custom Border to M15 Mainframe and Adventure, which allows defining a trim frame like Vehicle or Nyx with images from magic-mainframe-extras
-• Keywords for MKM, PIP, and OTJ have been added.
+• Keywords and types for MKM, PIP, OTJ, and MH3 have been added.
• Added Capenna, DND, Desparked, Judge Academy, MLP, Shooting Star, Transformers, and hi-res mana symbol watermarks.
• 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.
diff --git a/data/magic.mse-game/keywords b/data/magic.mse-game/keywords
index 846d3db37..35876a854 100644
--- a/data/magic.mse-game/keywords
+++ b/data/magic.mse-game/keywords
@@ -1863,4 +1863,10 @@ keyword:
keyword: Spree
match: Spree
mode: expert
- reminder: Choose one or more additional costs.
\ No newline at end of file
+ reminder: Choose one or more additional costs.
+# Modern Horizons 3
+keyword:
+ keyword: Emerge from
+ match: Emerge cost from name
+ mode: expert
+ reminder: You may cast this spell by sacrificing a {param2} and paying the emerge cost reduced by that {param2}'s mana value.
diff --git a/data/magic.mse-game/keywords_de b/data/magic.mse-game/keywords_de
index 91074b9f8..e667a2803 100644
--- a/data/magic.mse-game/keywords_de
+++ b/data/magic.mse-game/keywords_de
@@ -62,6 +62,11 @@ keyword parameter type:
match: ([^(.:;\n—]+|[ ])
optional: true
+keyword parameter type:
+ name: ein_wort
+ match: ([^( .:;\n—]+)
+ optional: true
+
############################################################## All Magic keywords
keyword:
@@ -469,7 +474,7 @@ keyword:
keyword: Seelenwanderung
match: Seelenwanderung Nummer
mode: expert
- reminder: Wenn diese Karte aus dem Spiel auf einen Friedhof gelegt wird, kannst du eine Geist-Karte deiner Wahl mit umgewandelten Manakosten von {param1} oder weniger aus deinem Friedhof auf deine Hand zurückbringen.
+ reminder: Wenn diese Karte aus dem Spiel auf einen Friedhof gelegt wird, kannst du eine Geist-Karte deiner Wahl mit Manabetrags von {param1} oder weniger aus deinem Friedhof auf deine Hand zurückbringen.
#example: Thousand-legged Kami
keyword:
@@ -533,7 +538,7 @@ keyword:
keyword: Transmutation
match: Transmutation Kosten
mode: expert
- reminder: {param1}, wirf diese Karte aus deiner Hand ab: Durchsuche deine Bibliothek nach einer Karte mit den gleichen umgewandelten Manakosten wie diese Karte, zeige sie offen vor und nimm sie auf deine Hand. Mische danach deine Bibliothek. Spiele diese Fähigkeit nur wie eine Hexerei.
+ reminder: {param1}, wirf diese Karte aus deiner Hand ab: Durchsuche deine Bibliothek nach einer Karte mit den gleichen Manabetrags wie diese Karte, zeige sie offen vor und nimm sie auf deine Hand. Mische danach deine Bibliothek. Spiele diese Fähigkeit nur wie eine Hexerei.
#example: Clutch of the Undercity
keyword:
@@ -661,7 +666,7 @@ keyword:
keyword: Umgestalten
match: Umgestalten Kosten
mode: expert
- reminder: {param1}, opfere diese Kreatur: Durchsuche deine Bibliothek nach einer Kreaturenkarte mit den gleichen umgewandelten Manakosten wie diese Kreatur und bringe jene Karte ins Spiel. Mische danach deine Bibliothek. Spiele diese Fähigkeit nur wie eine Hexerei.
+ reminder: {param1}, opfere diese Kreatur: Durchsuche deine Bibliothek nach einer Kreaturenkarte mit den gleichen Manabetrags wie diese Kreatur und bringe jene Karte ins Spiel. Mische danach deine Bibliothek. Spiele diese Fähigkeit nur wie eine Hexerei.
#example: Fleshwrither
keyword:
@@ -1061,9 +1066,17 @@ keyword:
keyword: Auftauchen
match: Auftauchen Kosten
mode: expert
- reminder: Du kannst diesen Zauberspruch wirken, indem du eine Kreatur opferst und die Auftauchen-Kosten bezahlst, abzüglich der umgewandelten Manakosten der geopferten Kreatur.
+ reminder: Du kannst diesen Zauberspruch wirken, indem du eine Kreatur opferst und die Auftauchen-Kosten bezahlst, abzüglich des Manabetrags des geopferten Kreatur.
#example: It of the Horrid Swarm
+keyword:
+ #english keyword: Emerge from
+ keyword: Auftauchen aus
+ match: Auftauchen aus ein_wort Name Kosten
+ mode: expert
+ reminder: Du kannst diesen Zauberspruch wirken, indem du eine Kreatur opferst und die Auftauchen-Kosten bezahlst, abzüglich des Manabetrags des geopferten {param2}s.
+ #example: Crabomination
+
keyword:
#english keyword: Escalate
keyword: Eskalieren
@@ -1493,7 +1506,7 @@ keyword:
keyword: Befehde
match: Befehde
mode: action
- reminder: Jeder Spieler in einer Fehde deckt die oberste Karte seiner Bibliothek auf und legt diese Karte dann auf oder unter seine Bibliothek. Ein Spieler gewinnt die Fehde, wenn seine Karte die höheren umgewandelten Manakosten hat.
+ reminder: Jeder Spieler in einer Fehde deckt die oberste Karte seiner Bibliothek auf und legt diese Karte dann auf oder unter seine Bibliothek. Ein Spieler gewinnt die Fehde, wenn seine Karte die höheren Manabetrags hat.
#example: Fistful of Force
keyword:
diff --git a/data/magic.mse-game/keywords_es b/data/magic.mse-game/keywords_es
index a146fef43..32d89416c 100644
--- a/data/magic.mse-game/keywords_es
+++ b/data/magic.mse-game/keywords_es
@@ -470,7 +470,7 @@ keyword:
keyword: Migración de almas
match: Migración de almas número
mode: expert
- reminder: Cuando esto vaya a un cementerio desde el juego, puedes regresar la carta de Espíritu objetivo con coste de maná convertido de {param1} o menos de tu cementerio a tu mano.
+ reminder: Cuando esto vaya a un cementerio desde el juego, puedes regresar la carta de Espíritu objetivo con valor de maná de {param1} o menos de tu cementerio a tu mano.
#example: Thousand-legged Kami
keyword:
@@ -542,7 +542,7 @@ keyword:
keyword: Transmutar
match: Transmutar coste
mode: expert
- reminder: {param1}, descartar esta carta: Busca en tu biblioteca una carta con el mismo coste de maná convertido que esta carta, muéstrala y ponla en tu mano. Luego baraja tu biblioteca. Juega esta habilidad sólo como un conjuro
+ reminder: {param1}, descartar esta carta: Busca en tu biblioteca una carta con el mismo valor de maná que esta carta, muéstrala y ponla en tu mano. Luego baraja tu biblioteca. Juega esta habilidad sólo como un conjuro
#example: Clutch of the Undercity
keyword:
@@ -670,7 +670,7 @@ keyword:
keyword: Transfigurar
match: Transfigurar coste
mode: expert
- reminder: {param1}, sacrificar esta criatura: Busca en tu biblioteca una carta de criatura con el mismo coste de maná convertido que esta criatura y pon esa carta en juego. Luego baraja tu biblioteca. Juega esta habilidad sólo como un conjuro
+ reminder: {param1}, sacrificar esta criatura: Busca en tu biblioteca una carta de criatura con el mismo valor de maná que esta criatura y pon esa carta en juego. Luego baraja tu biblioteca. Juega esta habilidad sólo como un conjuro
#example: Fleshwrither
keyword:
@@ -1070,9 +1070,17 @@ keyword:
keyword: Emerger
match: Emerger coste
mode: expert
- reminder: Puedes lanzar este hechizo sacrificando una criatura y pagando el coste de emerger menos el coste de maná convertido de esa criatura.
+ reminder: Puedes lanzar este hechizo sacrificando una criatura y pagando el coste de emerger menos el valor de maná de esa criatura.
#example: It of the Horrid Swarm
+keyword:
+ #english keyword: Emerge from
+ keyword: Emerger desde
+ match: Emerger desde nombre coste
+ mode: expert
+ reminder: Puedes lanzar este hechizo sacrificando {if starts_vowel(param1.value) then "un" else "una"} {param1} y pagando el coste de emerger menos el valor de maná de ese {param1}.
+ #example: Crabomination
+
keyword:
#english keyword: Escalate
keyword: Expandir
@@ -1510,7 +1518,7 @@ keyword:
keyword: Enfréntate
match: Enfréntate
mode: action
- reminder: Cada jugador enfrentado muestra la primera carta de su biblioteca, luego pone esa carta en la parte superior o inferior. Gana el jugador cuya carta tenga el mayor coste de maná convertido.
+ reminder: Cada jugador enfrentado muestra la primera carta de su biblioteca, luego pone esa carta en la parte superior o inferior. Gana el jugador cuya carta tenga el mayor valor de maná.
#example: Fistful of Force
keyword:
diff --git a/data/magic.mse-game/keywords_fr b/data/magic.mse-game/keywords_fr
index 413a374a1..0dd7b4b2e 100644
--- a/data/magic.mse-game/keywords_fr
+++ b/data/magic.mse-game/keywords_fr
@@ -56,6 +56,11 @@ keyword parameter type:
match: [^(.,”":;\n—]+
optional: false
+keyword parameter type:
+ name: un_mot
+ match: [^(.,”":;\n— ]+
+ optional: false
+
keyword parameter type:
name: nom
match: ([^(.:;\n—]+|[ ])
@@ -1143,6 +1148,14 @@ keyword:
reminder: Vous pouvez lancer ce sort en sacrifiant une créature et en payant le coût d'émergence, moins la valeur de mana de cette créature.
#example: It of the Horrid Swarm
+keyword:
+ #english keyword: Emerge from
+ keyword: Émergence d'
+ match: Émergence d’un_mot coût
+ mode: expert
+ reminder: Vous pouvez lancer ce sort en sacrifiant {if starts_vowel(param1.value) then "un" else "une"} {param1} et en payant le coût d'émergence, moins la valeur de mana de l'{param1} sacrifié.
+ #example: Crabomination
+
keyword:
#english keyword: Escalate
keyword: Intensification
diff --git a/data/magic.mse-game/keywords_it b/data/magic.mse-game/keywords_it
index 8c3fb8a01..01d5b7ad0 100644
--- a/data/magic.mse-game/keywords_it
+++ b/data/magic.mse-game/keywords_it
@@ -58,6 +58,11 @@ keyword parameter type:
match: [^(.,”":;\n—]+
optional: false
+keyword parameter type:
+ name: una_parola
+ match: [^(.,”":;\n— ]+
+ optional: false
+
keyword parameter type:
name: nome
match: ([^(.:;\n—]+|[ ])
@@ -526,7 +531,7 @@ keyword:
keyword: Muta-anima
match: Muta-anima numero
mode: expert
- reminder: Quando questa viene messa in un cimitero dal gioco, puoi riprendere in mano una carta Spirito bersaglio con costo di mana convertito pari o inferiore a {param1} presente nel tuo cimitero.
+ reminder: Quando questa viene messa in un cimitero dal gioco, puoi riprendere in mano una carta Spirito bersaglio con valore di mana pari o inferiore a {param1} presente nel tuo cimitero.
#example: Thousand-legged Kami
keyword:
@@ -622,7 +627,7 @@ keyword:
keyword: Trasmutare
match: Trasmutare costo
mode: expert
- reminder: {param1}, Scarta questa carta: Passa in rassegna il tuo grimorio, scegli una carta con lo stesso costo di mana convertito di questa carta, rivelala e aggiungila alla tua mano. Poi rimescola il tuo grimorio. Giocalo solo come una stregoneria.
+ reminder: {param1}, Scarta questa carta: Passa in rassegna il tuo grimorio, scegli una carta con lo stesso valore di mana di questa carta, rivelala e aggiungila alla tua mano. Poi rimescola il tuo grimorio. Giocalo solo come una stregoneria.
#example: Clutch of the Undercity
keyword:
@@ -758,7 +763,7 @@ keyword:
keyword: Trasfigurare
match: Trasfigurare costo
mode: expert
- reminder: {param1}, Sacrifica questa creatura: Passa in rassegna il tuo grimorio per una carta creatura con lo stesso costo di mana convertito di questa creatura e metti in gioco quella carta. Poi rimescola il tuo grimorio. Gioca questa abilità solo quando potresti giocare una stregoneria.
+ reminder: {param1}, Sacrifica questa creatura: Passa in rassegna il tuo grimorio per una carta creatura con lo stesso valore di mana di questa creatura e metti in gioco quella carta. Poi rimescola il tuo grimorio. Gioca questa abilità solo quando potresti giocare una stregoneria.
#example: Fleshwrither
keyword:
@@ -1166,9 +1171,17 @@ keyword:
keyword: Emergere
match: Emergere costo
mode: expert
- reminder: Puoi lanciare questa magia sacrificando una creatura e pagando il costo di emergere meno il costo di mana convertito di quella creatura.
+ reminder: Puoi lanciare questa magia sacrificando una creatura e pagando il costo di emergere meno il valore di mana di quella creatura.
#example: It of the Horrid Swarm
+keyword:
+ #english keyword: Emerge
+ keyword: Emergere da
+ match: Emergere da una_parola una_parola costo
+ mode: expert
+ reminder: Puoi lanciare questa magia sacrificando {if starts_vowel(param2.value) then "un" else "une"} {param2} e pagando il costo di emergere meno il valore di mana di quell'{param2}.
+ #example: Crabomination
+
keyword:
#english keyword: Escalate
keyword: Incrementare
@@ -1614,7 +1627,7 @@ keyword:
keyword: Scontrati
match: Scontrati
mode: action
- reminder: Ogni giocatore che si scontra rivela la prima carta del suo grimorio, poi la mette in cima o in fondo. Un giocatore vince se la sua carta aveva un costo di mana convertito maggiore.
+ reminder: Ogni giocatore che si scontra rivela la prima carta del suo grimorio, poi la mette in cima o in fondo. Un giocatore vince se la sua carta aveva un valore di mana maggiore.
#example: Fistful of Force
keyword:
diff --git a/data/magic.mse-game/keywords_ja b/data/magic.mse-game/keywords_ja
index df25b8028..ebb7ce7b6 100644
--- a/data/magic.mse-game/keywords_ja
+++ b/data/magic.mse-game/keywords_ja
@@ -1054,9 +1054,17 @@ keyword:
keyword: 現出
match: 現出コスト
mode: expert
- reminder: あなたはこの呪文を、クリーチャー1体を生け贄に捧げるとともにXだけ減らした現出コストを支払って唱えてもよい。Xはそのクリーチャーの点数で見たマナ・コストに等しい。
+ reminder: あなたはこの呪文を、クリーチャー1体を生け贄に捧げ、そのクリーチャーのマナ総量だけ減らした現出コストを支払って唱えてもよい。
#example: It of the Horrid Swarm
+keyword:
+ #english keyword: Emerge from
+ keyword: からの現出
+ match: 名前からの現出コスト
+ mode: expert
+ reminder: あなたはこの呪文を、{param1}1つを生け贄に捧げてそのアーテイファクトのマナ総量だけ減らした現出コストを支払って唱えてもよい。
+ #example: Crabomination
+
keyword:
#english keyword: Escalate
keyword: 増呪
diff --git a/data/magic.mse-game/keywords_pt b/data/magic.mse-game/keywords_pt
index 50bac1f43..9a942bf86 100644
--- a/data/magic.mse-game/keywords_pt
+++ b/data/magic.mse-game/keywords_pt
@@ -478,7 +478,7 @@ keyword:
keyword: Transmigração da alma
match: Transmigração da alma número
mode: expert
- reminder: Quando esta for colocada num cemitério vinda de jogo, você pode devolver o card alvo de Espírito com custo de mana convertido menor ou igual a {param1} de seu cemitério para sua mão.
+ reminder: Quando esta for colocada num cemitério vinda de jogo, você pode devolver o card alvo de Espírito com valor de mana menor ou igual a {param1} de seu cemitério para sua mão.
#example: Thousand-legged Kami
keyword:
@@ -566,7 +566,7 @@ keyword:
keyword: Transmutação
match: Transmutação custo
mode: expert
- reminder: {param1}, Descarte este card: Procure em seu grimório um card com o mesmo custo de mana convertido deste card, revele-o e coloque-o em sua mão. Depois, embaralhe seu grimório. Jogue somente como um feitiço.
+ reminder: {param1}, Descarte este card: Procure em seu grimório um card com o mesmo valor de mana deste card, revele-o e coloque-o em sua mão. Depois, embaralhe seu grimório. Jogue somente como um feitiço.
#example: Clutch of the Undercity
keyword:
@@ -694,7 +694,7 @@ keyword:
keyword: Transfigurar
match: Transfigurar custo
mode: expert
- reminder: {param1}, Sacrifique esta criatura: Procure em seu grimório por um card de criatura com o mesmo custo de mana convertido que esta criatura e coloque esse card em jogo. Depois, embaralhe seu grimório. Jogue somente como um feitiço.
+ reminder: {param1}, Sacrifique esta criatura: Procure em seu grimório por um card de criatura com o mesmo valor de mana que esta criatura e coloque esse card em jogo. Depois, embaralhe seu grimório. Jogue somente como um feitiço.
#example: Fleshwrither
keyword:
@@ -1094,9 +1094,17 @@ keyword:
keyword: Emergir
match: Emergir custo
mode: expert
- reminder: Você pode conjurar esta mágica sacrificando uma criatura e pagando o custo de emergir menos o custo de mana convertido daquela criatura.
+ reminder: Você pode conjurar esta mágica sacrificando uma criatura e pagando o custo de emergir menos o valor de mana daquela criatura.
#example: It of the Horrid Swarm
+keyword:
+ #english keyword: Emerge from
+ keyword: Emergir de
+ match: Emergir de nome custo
+ mode: expert
+ reminder: Você pode conjurar esta mágica sacrificando {if starts_vowel(param1.value) then "um" else "uma"} {param1} e pagando o custo de emergir menos o valor de mana daquele {param1}.
+ #example: Crabomination
+
keyword:
#english keyword: Escalate
keyword: Escalar
@@ -1534,7 +1542,7 @@ keyword:
keyword: Confronte
match: Confronte
mode: action
- reminder: Cada jogador confrontante revela o card do topo de seu próprio grimório, e então coloca aquele card no topo ou no fundo deste. Vence o jogador que tiver o card com o maior custo de mana convertido.
+ reminder: Cada jogador confrontante revela o card do topo de seu próprio grimório, e então coloca aquele card no topo ou no fundo deste. Vence o jogador que tiver o card com o maior valor de mana.
#example: Fistful of Force
keyword:
diff --git a/data/magic.mse-game/keywords_zhs b/data/magic.mse-game/keywords_zhs
index c0e8aed5b..1a35e30d4 100644
--- a/data/magic.mse-game/keywords_zhs
+++ b/data/magic.mse-game/keywords_zhs
@@ -1050,13 +1050,21 @@ keyword:
#example: Furtive Homunculus
keyword:
- #english keyword: Emerge
+ #english keyword: Emerge from
keyword: 化生
match: 化生费用
mode: expert
reminder: 你可以牺牲一个生物并支付化生费用来施放此咒语,此时总费用会扣除该生物之总法术力费用。
#example: It of the Horrid Swarm
+keyword:
+ #english keyword: Emerge from
+ keyword: 字首化生
+ match: 字首化生费用
+ mode: expert
+ reminder: 你可以牺牲一个{param1}并支付化生费用来施放此咒语,此时总费用会扣除该{param1}之总法术力费用。
+ #example: Crabomination
+
keyword:
#english keyword: Escalate
keyword: 增效
diff --git a/data/magic.mse-game/script b/data/magic.mse-game/script
index 6ef72321b..b5fb0a41e 100644
--- a/data/magic.mse-game/script
+++ b/data/magic.mse-game/script
@@ -32,7 +32,7 @@ include file: language
include file: statistics_script
include file: /magic-blends.mse-include/new-blends
############################################################## Versioning
-version_date := {"2024-05-24 Mainframe 1.3.d Showcase Catchup: Alchemy Compatibility"}
+version_date := {"2024-05-27 Mainframe 1.3.e Showcase Catchup: MH3 Keywords"}
version := version_date
############################################################## Common filters
############################################################## Utility
@@ -47,6 +47,8 @@ word_count := break_text@(match:"[^[:space:]]+") + length
has_png := contains@(match:".png")
has_none := contains@(match: "none")
+starts_vowel := match@(match:"[aâäàáeêëèéiîïìíoôöòóuûüùúAÂÄÀÁEÊËÈÉIÎÏÌÍOÔÖÒÓUÛÜÙÚ]")
+
remove_comma := replace@(match: ",", replace: "")
long_dash := replace@(match:"-", replace:"—")
softline_ripper := replace@(match:"?soft-line>", replace:"")