From 77351a8a37e6bf538e924903e36d95ac04771cd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Lundeg=C3=A5rd=20Kylander?= Date: Sun, 29 Mar 2026 19:55:15 +0200 Subject: [PATCH] WUBRG -> WUBRGO --- data/magic-blends.mse-include/new-blends | 4 +- .../symbol-font | 2 +- data/magic.mse-game/keywords_en | 4 +- data/magic.mse-game/language | 6 +- data/magic.mse-game/script | 56 +++++++++---------- data/magic.mse-game/statistics_script | 4 +- 6 files changed, 38 insertions(+), 38 deletions(-) diff --git a/data/magic-blends.mse-include/new-blends b/data/magic-blends.mse-include/new-blends index 3a956de19..46f8d4cd5 100644 --- a/data/magic-blends.mse-include/new-blends +++ b/data/magic-blends.mse-include/new-blends @@ -829,7 +829,7 @@ stamp_hybrid := [ # Putting it all together. ######################################################################## blend_colors := { - colors := sort_text( order: if card_is_wedge(input) then "(wbgur)" else "(wubrg)" + colors := sort_text( order: if card_is_wedge(input) then "(wbguro)" else "(wubrgo)" , (if chosen(choice:"white" ) then "w") + (if chosen(choice:"blue" ) then "u") + (if chosen(choice:"black" ) then "b") @@ -1116,7 +1116,7 @@ font_color_positions := [ font_white := { hybrid := chosen(choice:"hybrid" ) artifact := chosen(choice:"artifact" ) - colors := sort_text( order: "(wubrg)" + colors := sort_text( order: "(wubrgo)" , (if chosen(choice:"white" ) then "w") + (if chosen(choice:"blue" ) then "u") + (if chosen(choice:"black" ) then "b") diff --git a/data/magic-mana-large.mse-symbol-font/symbol-font b/data/magic-mana-large.mse-symbol-font/symbol-font index 30d74d17c..d1d85cd2e 100644 --- a/data/magic-mana-large.mse-symbol-font/symbol-font +++ b/data/magic-mana-large.mse-symbol-font/symbol-font @@ -806,7 +806,7 @@ symbol: text margin right: .21 text margin top: -.15 text margin bottom: -.06 - code: [0-9](?!/[WUBRGCSTQ2])|. + code: [0-9](?!/[WUBRGOCSTQ2])|. regex: yes draw text: 0 text font: diff --git a/data/magic.mse-game/keywords_en b/data/magic.mse-game/keywords_en index e1127e75a..a6d721dca 100644 --- a/data/magic.mse-game/keywords_en +++ b/data/magic.mse-game/keywords_en @@ -29,7 +29,7 @@ keyword mode: keyword parameter type: name: mana - match: [HSVCTQXYZI0-9WUBRG/|]+ + match: [HSVCTQXYZI0-9WUBRGO/|]+ refer script: name: normal description: No changes made @@ -48,7 +48,7 @@ keyword parameter type: # By pichoro and bunnierein keyword parameter type: name: cost - match: [ ][HSVECTQXYZI0-9WUBRG/|]*|[-—][^(\r\n]* + match: [ ][HSVECTQXYZI0-9WUBRGO/|]*|[-—][^(\r\n]* separator before is: [ —-] separator after is: [.] optional: false diff --git a/data/magic.mse-game/language b/data/magic.mse-game/language index 58871276f..016b8151b 100644 --- a/data/magic.mse-game/language +++ b/data/magic.mse-game/language @@ -1304,12 +1304,12 @@ reverse_list := cost_parameter_script := { input := remove_tag(input, tag:"") - replace(input, match:"\\b([HSVECTQXYZI0-9WUBRG/|]+)\\b(,|,|<|$)", replace:"\\1\\2") + replace(input, match:"\\b([HSVECTQXYZI0-9WUBRGO/|]+)\\b(,|,|<|$)", replace:"\\1\\2") } cost_parameter_script_nonspace := { input := remove_tag(input, tag:"") - replace(input, match:"(?\\1") + replace(input, match:"(?\\1") } cost_parameter_dash := { @@ -1318,7 +1318,7 @@ cost_parameter_dash := } localized_phy_reminder := { - phy_matches := break_text(card.casting_cost, match:"H(/[WUBRGC])*") + phy_matches := break_text(card.casting_cost, match:"H(/[WUBRGOC])*") if length(phy_matches) < 1 then "" else ( multiple := length(phy_matches) > 1 phy_matches := make_list_unique(reverse_list(sort_list(phy_matches, order_by: length))) #First symbol is used for reminder text. Prefer using hybrid mana. diff --git a/data/magic.mse-game/script b/data/magic.mse-game/script index 8550a0ecb..825a81625 100644 --- a/data/magic.mse-game/script +++ b/data/magic.mse-game/script @@ -312,7 +312,7 @@ get_alpha_percentage := ############################################################## For the user #### Remove card codes -cc_filter := replace@(match:"^[CURMSL][WUBRGMZACL][0-9]+ ?[-—]? ?", replace:"") +cc_filter := replace@(match:"^[CURMSL][WUBRGOMZACL][0-9]+ ?[-—]? ?", replace:"") has_alchemy := contains@(match:"alchemy") strip_card_codes := { save := input @@ -507,25 +507,25 @@ crop_multi_image := { ############################################################## Sorting mana symbols #### correctly sort a mana symbol (no guild mana) -mana_sort := sort_text@(order: "\\?XYZI[0123456789]VHSFCAI(EKPLO)(WUBRG)") +mana_sort := sort_text@(order: "\\?XYZI[0123456789]VHSFCAI(EKPLO)(WUBRGO)") #### correctly sort wedge mana mana_sort_wedge := sort_text@(order: "\\?XYZI[0123456789]VHSFCAI(EPOKL)(WBGUR)") #### sort nothing -mana_unsort := sort_text@(order:"[/\\?XYZI0123456789VHSCAIEKPLOMWUBRG]") +mana_unsort := sort_text@(order:"[/\\?XYZI0123456789VHSCAIEKPLOMWUBRGO]") #### correctly sort guild mana -mana_sort_guild := sort_text@(order: "[\\?XYZI01234567890VHSFCAIEKPLOWUBRG/|]") + +mana_sort_guild := sort_text@(order: "[\\?XYZI01234567890VHSFCAIEKPLOWUBRGO/|]") + replace@( #### No lookbehind :( #match: "(?($|[^/])", - replace: {sort_text(order:"in_place((WUBRG))")} + replace: {sort_text(order:"in_place((WUBRGO))")} ) #### mana filter helpers mana_has_guild := match@(match: "[/|]") #### Is there guild or half mana in the input? -mana_is_wedge := { chosen(set.mana_cost_sorting, choice: "tarkir wedge sorting") and ( number_of_items(in: sort_text(order:"", input), filter: "") == 3 ) } +mana_is_wedge := { chosen(set.mana_cost_sorting, choice: "tarkir wedge sorting") and ( number_of_items(in: sort_text(order:"", input), filter: "") == 3 ) } mana_has_wedge := { - wedge_check := sort_text(order:"", input) + wedge_check := sort_text(order:"", input) mana_is_wedge() and (wedge_check == "WUR" or wedge_check == "WBR" or wedge_check == "WBG" or wedge_check == "UBG" or wedge_check == "URG") } @@ -640,7 +640,7 @@ color_names_3 := { color_name(colors.0) + ", " + color_name(colors.1) + ", " + c color_names_4 := { color_name(colors.0) + ", " + color_name(colors.1) + ", " + color_name(colors.2) + ", " + color_name(colors.3) } color_names_5 := { color_name(colors.0) + ", " + color_name(colors.1) + ", " + color_name(colors.2) + ", " + color_name(colors.3) + ", " + color_name(colors.4) } #### color based on mana cost, input == a mana cost -color_filter := sort_text@(order: "") +color_filter := sort_text@(order: "") color_filterH := sort_text@(order: "") mana_to_color := { count := number_of_items(in: colors) @@ -690,7 +690,7 @@ color_text_filter := ) + #### keep only mana filter_text@(match: "]*>([^<]+)") + color_filter; -#### get the land frame for a "WUBRG"-style input. +#### get the land frame for a "WUBRGO"-style input. land_multicolor := { count := number_of_items(in: colors) if count == 0 then "land" @@ -716,7 +716,7 @@ text_to_color := { text := filter_text(match: "is (colorless|all colors|((blue|white|green|red|black|orange)((,|,? and) (blue|white|green|red|black|orange))*))", in_context: regex_escape(card_name)+"()* \\.") if text != "" then ( if contains(text, match: "all colors") then ( - colors := "WUBRG" + colors := "WUBRGO" if land == true then land_multicolor() else mana_to_color(hybrid: "") ) else ( @@ -775,7 +775,7 @@ list_colors := { list := replace(list, match:", ", replace:", and ", in_context:"[^ ]+$") list } -#### convert card_color to WUBRG +#### convert card_color to WUBRGO card_color_to_letters := { color_string := trim_colors(input) (if contains(color_string, match:"white") then "W" else "") @@ -878,7 +878,7 @@ basic_land_sort := { else "MA" #### other basic lands } hybrid_color_pair_sort := { - colors := sort_text(casting_cost, order: "") + colors := sort_text(casting_cost, order: "") if not set.sort_hybrid_in_pairs then "HK" else if colors == "WU" then "HA" else if colors == "UB" then "HB" @@ -893,7 +893,7 @@ hybrid_color_pair_sort := { else "HK" } multi_color_pair_sort := { - colors := sort_text(casting_cost, order: "") + colors := sort_text(casting_cost, order: "") if not set.sort_multicolor_in_pairs then "GK" else if colors == "WU" then "GA" else if colors == "UB" then "GB" @@ -1040,11 +1040,11 @@ rarity_code := { is_unsorted := { false } ############################################################## Statistics utilities #### Converted mana cost -is_half_mana := match@(match: "1/2|[|][WUBRGS]") +is_half_mana := match@(match: "1/2|[|][WUBRGOS]") is_half_generic := match@(match: "1/2") -is_colored_mana := match@(match: "[WUBRG]") +is_colored_mana := match@(match: "[WUBRGO]") only_numbers := filter_text@(match: "^[0123456789]+") -cmc_split := break_text@(match: "(?ix) 1/2 | [|][WUBRGC] | TK | [0-9](/[WUBRGCVHSCEKPLOTQ2]) | [0-9]+(?!/[WUBRGCVHSCEKPLOTQ2]) | [WUBRGCVHS0-9](/[WUBRGCVHS])\{0,4} ") +cmc_split := break_text@(match: "(?ix) 1/2 | [|][WUBRGOC] | TK | [0-9](/[WUBRGOCVHSCEKPLOTQ2]) | [0-9]+(?!/[WUBRGOCVHSCEKPLOTQ2]) | [WUBRGOCVHS0-9](/[WUBRGOCVHS])\{0,4} ") cmc := {to_number( for each sym in cmc_split(to_text()) do ( numbers := only_numbers(sym) @@ -1237,11 +1237,11 @@ digital_map := [ 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: "^[VHSCAIETKPLOQ\\?XYZIWUBRG0-9/|]+,", input.param) then #### starts with mana + if match(match: "^[VHSCAIETKPLOQ\\?XYZIWUBRGO0-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: "^[VHSCAIETKPLOQ\\?XYZIWUBRG0-9/|]+,", input.param) then #### starts with mana + if match(match: "^[VHSCAIETKPLOQ\\?XYZIWUBRGO0-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 @@ -1253,7 +1253,7 @@ for_mana_costs := { }@(non:" in addition to any other costs", action:false, add:"") #### return bool; is the input is a simple mana cost? is_mana_cost := { - match(match: "^[VHSCAIETKPLOQ\\?XYZIWUBRG0-9/|]+$", input.param) + match(match: "^[VHSCAIETKPLOQ\\?XYZIWUBRGO0-9/|]+$", input.param) } #### Convert extra costs long_cost := replace@(match:", [A-Z]", replace: { to_lower() } ) @@ -1262,7 +1262,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:"^[VHSCETKPLOQ\\?XYZIWUBRG0-9/|]+", in_context: "(^|[[:space:]])(?![a-z])", replace: "&")+ + replace@(match:"^[VHSCETKPLOQ\\?XYZIWUBRGO0-9/|]+", in_context: "(^|[[:space:]])(?![a-z])", replace: "&")+ replace@(match:"^[A-Z]", replace: { to_lower() }) alternative_cost := { input := trim(input) @@ -1323,7 +1323,7 @@ protection_code := { else if match(input, match:"^(converted|mana|power|toughness)") then "anything with " + replace(input, match:"and from", replace:"or", in_context:" ") else if contains(input, match:"the chosen player") then "anything " + replace(input, match:"the chosen", replace:"controlled by that") else if contains(input, match:"the chosen") then "anything with " + replace(input, match:"the chosen", replace:"that") - else if contains(input, match:"all colors") then "anything " + replace(input, match:"all colors", replace:"that's white, blue, black, red, or green") + else if contains(input, match:"all colors") then "anything " + replace(input, match:"all colors", replace:"that's white, blue, black, red, green, or orange") else if match(input, match:"^you$") then "anything you control" else if match(input, match:"^its owner$") then "anything its owner controls" else if match(input, match:"^(each of )?your opponents$") then "anything " + replace(input, match:"(each of )?your opponents", replace:"controlled by those players") @@ -1349,7 +1349,7 @@ protection_code := { output } phy_reminder := { - phy_match := filter_text(input, match:"(/[WUBRG])+", in_context:"H") + phy_match := filter_text(input, match:"(/[WUBRGO])+", in_context:"H") letters := split_text(phy_match, match:"/") reminder_text := "" if length(letters) == 2 then @@ -1533,8 +1533,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 - ([ ](]*>)?[-+=]?[VHSCETKPLOQ\\?XYZIEWUBRG0-9/|]+(]*>)?,)* #### pay X, Y or Z - ([ ](]*>)?[-+=]?[VHSCETKPLOQ\\?XYZIEWUBRG0-9/|]+(]*>)?[ ](and|or|and/or))* #### pay X or Y + ([ ](]*>)?[-+=]?[VHSCETKPLOQ\\?XYZIEWUBRGO0-9/|]+(]*>)?,)* #### pay X, Y or Z + ([ ](]*>)?[-+=]?[VHSCETKPLOQ\\?XYZIEWUBRGO0-9/|]+(]*>)?[ ](and|or|and/or))* #### pay X or Y [ ] ( [,.)\"”]|$ #### (end of word) @@ -1894,7 +1894,7 @@ text_filter := } + #### step 4 : explict non mana symbols replace@( - match: "\\][-+=]?[VHSCEKPLOTQINF\\?XYZIWUBRG0-9/|]+\\[", + match: "\\][-+=]?[VHSCEKPLOTQINF\\?XYZIWUBRGO0-9/|]+\\[", replace: {"" + mana_filter_t() + ""} ) + #### step 5 : add mana & tap symbols @@ -1909,13 +1909,13 @@ text_filter := replace: {"" + _1 + "" + _3} ) + replace@( - match: "\\b[VHSCEKPLOTQ\\?XYZIWUBRG0-9/|]+\\b", + match: "\\b[VHSCEKPLOTQ\\?XYZIWUBRGO0-9/|]+\\b", in_context: mana_context, replace: {"" + mana_filter_t() + ""} ) + #### step 5b : remove false positive mana & tap symbols replace@( - match: "([VHSCEKPLOTQ\\?XYZIWUBRG0-9/|]+)", + match: "([VHSCEKPLOTQ\\?XYZIWUBRGO0-9/|]+)", in_context: mana_un_context, replace: "\\1" ) + @@ -1925,7 +1925,7 @@ text_filter := replace: {"INF" } ) + replace@( - match: "\\[[-+=]?[VHSCEKPLOTQ\\?XYZIWUBRG0-9/|]+\\]", + match: "\\[[-+=]?[VHSCEKPLOTQ\\?XYZIWUBRGO0-9/|]+\\]", replace: {"" + mana_filter_t() + ""} ) + #### step 6a : auto reminder diff --git a/data/magic.mse-game/statistics_script b/data/magic.mse-game/statistics_script index ba828ab88..eb21ff98c 100644 --- a/data/magic.mse-game/statistics_script +++ b/data/magic.mse-game/statistics_script @@ -397,8 +397,8 @@ devotion_filters_statistic := [ G: filter_text@(match:"O") C: filter_text@(match:"C") ] -color_pip_break_statistic := break_text@(match:"([A-Z0-9]/|[|])*[WUBRG]") -color_code_break_statistic := break_text@(match:"[WUBRGC]") +color_pip_break_statistic := break_text@(match:"([A-Z0-9]/|[|])*[WUBRGO]") +color_code_break_statistic := break_text@(match:"[WUBRGOC]") symbol_aggregate_statistic := { devotion := devotion_filters_statistic[symbol](input)