diff --git a/data/magic-mana-large.mse-symbol-font/energy.png b/data/magic-mana-large.mse-symbol-font/energy.png
index 1254a2d84..db9bc4961 100644
Binary files a/data/magic-mana-large.mse-symbol-font/energy.png and b/data/magic-mana-large.mse-symbol-font/energy.png differ
diff --git a/data/magic-mana-large.mse-symbol-font/symbol-font b/data/magic-mana-large.mse-symbol-font/symbol-font
index 37cf42945..ed50c9d16 100644
--- a/data/magic-mana-large.mse-symbol-font/symbol-font
+++ b/data/magic-mana-large.mse-symbol-font/symbol-font
@@ -146,7 +146,11 @@ symbol:
image: {"/magic-mainframe-extras.mse-include/" + v_mana_loc() + "large/" + v_mana_name() + ".png"}
image font size: 120
enabled: {use_large_v_mana()}
-#######Normal Mana Symbols
+####### Miscellaneous Symbols
+symbol:
+ code: TK
+ image: ticket.png
+ image font size: 178
symbol:
code: T
image: mana_t_older.png
@@ -172,8 +176,9 @@ symbol:
symbol:
code: E
image: Energy.png
+ image font size: 230
symbol:
- code: chaos
+ code: A
image: mana_chaos.png
image font size: 151.69
###################################################################################### Phy Hybrid
@@ -440,9 +445,6 @@ symbol:
symbol:
code: |S
image: mana_s_half.png
-symbol:
- code: A
- image: mana_chaos.png
symbol:
code: H/W
image: mana_phyw.png
@@ -826,7 +828,9 @@ symbol:
insert symbol menu:
item: T
item: Q
- item: chaos
+ item: E
+ item: TK
+ item: A
item:
type: line
item: X
@@ -909,3 +913,4 @@ insert symbol menu:
item: 2/R
item: 2/G
item: 2/C
+ item: 2/S
diff --git a/data/magic-mana-large.mse-symbol-font/ticket.png b/data/magic-mana-large.mse-symbol-font/ticket.png
new file mode 100644
index 000000000..f99fa1b70
Binary files /dev/null and b/data/magic-mana-large.mse-symbol-font/ticket.png differ
diff --git a/data/magic-mana-small.mse-symbol-font/defense.png b/data/magic-mana-small.mse-symbol-font/defense.png
new file mode 100644
index 000000000..695e208fb
Binary files /dev/null and b/data/magic-mana-small.mse-symbol-font/defense.png differ
diff --git a/data/magic-mana-small.mse-symbol-font/defense_wide.png b/data/magic-mana-small.mse-symbol-font/defense_wide.png
new file mode 100644
index 000000000..6f9c5660c
Binary files /dev/null and b/data/magic-mana-small.mse-symbol-font/defense_wide.png differ
diff --git a/data/magic-mana-small.mse-symbol-font/symbol-font b/data/magic-mana-small.mse-symbol-font/symbol-font
index 5ad9fbfd3..d5a5d3545 100644
--- a/data/magic-mana-small.mse-symbol-font/symbol-font
+++ b/data/magic-mana-small.mse-symbol-font/symbol-font
@@ -314,6 +314,53 @@ symbol:
color: black
max stretch: 0.5
image font size: 100
+###################################################################################### Defense Symbols
+symbol:
+ image: defense_wide.png
+ code: D([+-][XYZ0-9][0-9])
+ regex: yes
+ draw text: 1
+ text margin left: .41
+ text margin right: .48
+ text margin top: .00
+ text margin bottom: .00
+ text font:
+ name: Beleren Bold
+ size: .45
+ color: black
+ max stretch: 0.5
+ image font size: 115
+symbol:
+ image: defense_wide.png
+ code: D([XYZ0-9+-][0-9])
+ regex: yes
+ draw text: 1
+ text margin left: .47
+ text margin right: .45
+ text margin top: .02
+ text margin bottom: .00
+ text font:
+ name: Beleren Bold
+ size: .58
+ color: black
+ max stretch: 0.5
+ image font size: 115
+symbol:
+ image: defense.png
+ code: D([XYZ0-9])
+ regex: yes
+ draw text: 1
+ text margin left: .0
+ text margin right: .0
+ text margin top: .02
+ text margin bottom: .0
+ text font:
+ name: Beleren Bold
+ size: .58
+ color: black
+ max stretch: 0.5
+ image font size: 115
+
###################################################################################### Symbols That Actually Appear on Cards
symbol:
code: phi
@@ -324,10 +371,18 @@ symbol:
image: energy_inverse.png
image font size: 300
enabled: {white_text()}
+symbol:
+ code: energy
+ image: energy.png
+ image font size: 300
symbol:
code: E
image: energy.png
image font size: 300
+symbol:
+ code: TK
+ image: ticket.png
+ image font size: 240
symbol:
code: .5
image: one_half.png
@@ -1029,8 +1084,10 @@ symbol:
insert symbol menu:
item: T
item: Q
- item: C
item: E
+ item: TK
+ item: A
+ item: phi
item:
type: custom
name: colorless
@@ -1043,7 +1100,6 @@ insert symbol menu:
item: G
item: C
item: S
- item: A
item:
type: line
item:
@@ -1113,6 +1169,7 @@ insert symbol menu:
item: 2/R
item: 2/G
item: 2/C
+ item: 2/S
item:
type: line
item:
@@ -1156,3 +1213,24 @@ insert symbol menu:
item: 8 loyalty
item: 9 loyalty
item: X loyalty
+ item:
+ name: defense
+ item: D0
+ item: D1
+ item: D2
+ item: D3
+ item: D4
+ item: D5
+ item: D6
+ item: D7
+ item: D8
+ item: D9
+ item: DX
+ item:
+ name: saga chapters
+ item: r1
+ item: r2
+ item: r3
+ item: r4
+ item: r5
+ item: r6
diff --git a/data/magic-mana-small.mse-symbol-font/ticket.png b/data/magic-mana-small.mse-symbol-font/ticket.png
new file mode 100644
index 000000000..6343213df
Binary files /dev/null and b/data/magic-mana-small.mse-symbol-font/ticket.png differ
diff --git a/data/magic.mse-game/script b/data/magic.mse-game/script
index ef9ce896d..a5b24120a 100644
--- a/data/magic.mse-game/script
+++ b/data/magic.mse-game/script
@@ -11,12 +11,12 @@ version_date := {"2023-02-21"}
############################################################## Sorting mana symbols
# correctly sort a mana symbol (no guild mana)
-mana_sort := sort_text@(order: "\\?XYZI[0123456789]VLHSFCAIE(WUBRG)")
+mana_sort := sort_text@(order: "\\?XYZI[0123456789]VLHSFCAIE[TK](WUBRG)")
# correctly sort wedge mana
-mana_sort_wedge := sort_text@(order: "\\?XYZI[0123456789]VLHSFCAIE(WBGUR)")
-mana_unsort := sort_text@(order:"[/\\?XYZI0123456789VLHSCAIEWUBRG]")
+mana_sort_wedge := sort_text@(order: "\\?XYZI[0123456789]VLHSFCAIE[TK](WBGUR)")
+mana_unsort := sort_text@(order:"[/\\?XYZI0123456789VLHSCAIETKWUBRG]")
# correctly sort guild mana
-mana_sort_guild := sort_text@(order: "[\\?XYZI01234567890VLHSFCAIEWUBRG/|]") +
+mana_sort_guild := sort_text@(order: "[\\?XYZI01234567890VLHSFCAIETKWUBRG/|]") +
replace@(
# No lookbehind :(
#match: "(?")
+tap_filter := filter_text@(match: "[TKQ]")
mana_filter_t := replace@( # Remove [] used for forcing mana symbols
match: "[\\[\\]]",
replace: ""
@@ -432,16 +433,16 @@ trim_reminder_x := replace@(match: ". X can’t be 0.", replace: "")
for_mana_costs := {
if input.separator_before == "—" and contains(input.param, match: " ") then ( ##multi word
if comma_count(input.param) == "," then ( ##two part
- if match(match: "^[VLHSCAIETQ\\?XYZIWUBRG0-9/|]+,", input.param) then ##starts with mana
+ if match(match: "^[VLHSCAIETKQ\\?XYZIWUBRG0-9/|]+,", input.param) then ##starts with mana
"{add}{alternative_cost(input.param, trim:combined_cost, s:action)}" ##"add" mana
else "{alternative_cost(input.param, trim:combined_cost, s:action)}{non}" ## else cost "non"
) else if contains(input.param, match: ",") then ( ##three+ parts
- if match(match: "^[VLHSCAIETQ\\?XYZIWUBRG0-9/|]+,", input.param) then ##starts with mana
+ if match(match: "^[VLHSCAIETKQ\\?XYZIWUBRG0-9/|]+,", input.param) then ##starts with mana
"{add}{alternative_cost(input.param, trim:long_cost, s:action)}" ##"add" mana with long formatting
else "{alternative_cost(input.param, trim:long_nomana_cost, s:action)}{non}" ## else cost "non" with long formatting
) else
"{alternative_cost(input.param, s:action, trim:lower_first)}{non}" ##one, nonmana, part
- ) else if match(match: "^[VLHSCAIETQ\\?XYZIWUBRG0-9/|]+$", input.param) then ##one word
+ ) else if match(match: "^[VLHSCAIETKQ\\?XYZIWUBRG0-9/|]+$", input.param) then ##one word
"{add}{input.param}" ##mana
else
"{alternative_cost(input.param, trim:combined_cost, s:action)}{non}" ##nonmana
@@ -454,7 +455,7 @@ long_nomana_cost := replace@(match:"[A-Z]", replace: { to_lower() })
lower_first := replace@(match:"^[A-Z]", replace: { to_lower() })
combined_cost := replace@(match:", [A-Z]", replace: { to_lower() })+
replace@(match:",", replace:" and")+
- replace@(match:"^[VLHSCETQ\\?XYZIWUBRG0-9/|]+", in_context: "(^|[[:space:]])(?![a-z])", replace: "&")+
+ replace@(match:"^[VLHSCETKQ\\?XYZIWUBRG0-9/|]+", in_context: "(^|[[:space:]])(?![a-z])", replace: "&")+
replace@(match:"^[A-Z]", replace: { to_lower() })
alternative_cost := {
input := trim(input)
@@ -780,8 +781,8 @@ mana_context :=
| [ ]can[ ]be[ ]paid
| (pays?|additional|costs?|the|adds?|pay(ed)?[ ](with|using)) # pay X. creatures cost 1 less. pay an additional G.
([ ]either)? # pay either X or Y
- ([ ](]*>)?[-+=]?[VLHSCETQ\\?XYZIEWUBRG0-9/|]+(]*>)?,)* # pay X, Y or Z
- ([ ](]*>)?[-+=]?[VLHSCETQ\\?XYZIEWUBRG0-9/|]+(]*>)?[ ](and|or|and/or))* # pay X or Y
+ ([ ](]*>)?[-+=]?[VLHSCETKQ\\?XYZIEWUBRG0-9/|]+(]*>)?,)* # pay X, Y or Z
+ ([ ](]*>)?[-+=]?[VLHSCETKQ\\?XYZIEWUBRG0-9/|]+(]*>)?[ ](and|or|and/or))* # pay X or Y
[ ]
([,.)\"”]|$ # (end of word)
|[ ][^ .,]*$ # still typing...
@@ -1009,7 +1010,7 @@ text_filter :=
} +
# step 4 : explict non mana symbols
replace@(
- match: "\\][-+=]?[VLHSCETQ\\?XYZIWUBRG0-9/|]+\\[",
+ match: "\\][-+=]?[VLHSCETKQ\\?XYZIWUBRG0-9/|]+\\[",
replace: {"" + mana_filter_t() + ""} ) +
# step 5 : add mana & tap symbols
replace@(
@@ -1017,17 +1018,17 @@ text_filter :=
in_context: mana_context,
replace: {"" + _1 + ""} ) +
replace@(
- match: "\\b[VLHSCETQ\\?XYZIWUBRG0-9/|]+\\b",
+ match: "\\b[VLHSCETKQ\\?XYZIWUBRG0-9/|]+\\b",
in_context: mana_context,
replace: {"" + mana_filter_t() + ""} ) +
# step 5b : remove false positive mana & tap symbols
replace@(
- match: "([VLHSCETQ\\?XYZIWUBRG0-9/|]+)",
+ match: "([VLHSCETKQ\\?XYZIWUBRG0-9/|]+)",
in_context: mana_un_context,
replace: "\\1" ) +
# step 5c : add explicit mana symbols
replace@(
- match: "\\[[-+=]?[VLHSCETQE\\?XYZIWUBRG0-9/|]+\\]",
+ match: "\\[[-+=]?[VLHSCETKQE\\?XYZIWUBRG0-9/|]+\\]",
replace: {"" + mana_filter_t() + ""} ) +
# step 6 : curly quotes
{if set.curly_quotes then curly_quotes(input) else input} +
@@ -1229,7 +1230,7 @@ is_half_mana := match@(match: "1/2|[|][WUBRGS]")
is_half_generic := match@(match: "1/2")
is_colored_mana := match@(match: "[WUBRG]")
only_numbers := filter_text@(match: "^[0123456789]+")
-cmc_split := break_text@(match: "(?ix) 1/2 | [|][WUBRGC] | [0-9](/[WUBRGCVLHSCETQ2]) | [0-9]+(?!/[WUBRGCVLHSCETQ2]) | [WUBRGCVLHS0-9](/[WUBRGCVLHS])\{0,4} ")
+cmc_split := break_text@(match: "(?ix) 1/2 | [|][WUBRGC] | TK | [0-9](/[WUBRGCVLHSCETQ2]) | [0-9]+(?!/[WUBRGCVLHSCETQ2]) | [WUBRGCVLHS0-9](/[WUBRGCVLHS])\{0,4} ")
cmc := {to_number(
for each sym in cmc_split(to_text()) do (
numbers := only_numbers(sym)