From 57875fa24cf35a69dc92e3cb5ac308e53d7738bb Mon Sep 17 00:00:00 2001
From: cajun <12363371+CajunAvenger@users.noreply.github.com>
Date: Fri, 11 Oct 2024 19:49:16 -0500
Subject: [PATCH] field test updates
---
.../export-template | 286 ++++++++++++++++++
.../icon.png | Bin 0 -> 15350 bytes
data/magic-m15-mainframe-dfc.mse-style/style | 54 ++--
3 files changed, 318 insertions(+), 22 deletions(-)
create mode 100644 data/magic-field-test.mse-export-template/export-template
create mode 100644 data/magic-field-test.mse-export-template/icon.png
diff --git a/data/magic-field-test.mse-export-template/export-template b/data/magic-field-test.mse-export-template/export-template
new file mode 100644
index 000000000..fc1453f1e
--- /dev/null
+++ b/data/magic-field-test.mse-export-template/export-template
@@ -0,0 +1,286 @@
+mse version: 2.0.0
+short name: Field Test
+full name: version 0.4
+position hint: 120
+icon: icon.png
+version: 2018-02-09
+installer group: magic/Export/lackeyccg
+
+depends on:
+ package: magic.mse-game
+ version: 2009-07-23
+
+game: magic
+create directory: true
+file type: *.txt|*.txt|*.*|*.*
+
+# By Cajun
+option field:
+ type: text
+ name: set code
+ description: The set code for the set
+option field:
+ type: text
+ name: v mana replacement
+ description: exports V mana as a replacement text string
+script:
+ # replace shenanigans
+ fix_tm := replace@(match:"™", replace:"TM")
+ fixed_set_code := {
+ trim(fix_tm(if options.set_code != "" then options.set_code else set.set_code))
+ }
+ v_rep := {
+ if input != "V"
+ then input
+ else if options.v_mana_replacement == ""
+ then input
+ else
+ options.v_mana_replacement
+ }
+ apos_fix := replace@(match:"’", replace:"'")
+ type_trim := replace@(match:"Basic ", replace:"")+
+ replace@(match:"Legendary", replace:"")+
+ replace@(match:"Snow ", replace:"")+
+ replace@(match:"World ", replace:"")+
+ replace@(match:"Token ", replace:"")
+
+ # process the name
+ exporter_name_filter := filter_text@(match:"!subname [^\n!]+")
+ exporter_name_grabber := replace@(match:"!subname ", replace:"")
+ card_name := { if exporter_name_grabber(exporter_name_filter(card.notes)) != "" then exporter_name_grabber(exporter_name_filter(card.notes)) else remove_tags(card.name) }
+ database_name := {
+ if exporter_name_grabber(exporter_name_filter(card.notes)) != ""
+ then exporter_name_grabber(exporter_name_filter(card.notes))
+ else if card.name_2 != "" and match(card.shape, match:"(double|adventure|split|aftermath)")
+ then remove_tags(card.name) + "//" + remove_tags(card.name_2)
+ else remove_tags(card.name)
+ }
+
+ # process type
+ token_export := {contains(card.shape, match:"token") or contains(card.shape, match:"emblem") or contains(card.shape, match:"rulestip")}
+
+ # process rarity
+ use_promo := match@(match:"!promo\\b")
+ use_bonus := { card.rarity == "special" and not use_promo(card.notes) }
+ rarity_name := { if use_bonus() then "Bonus" else if card.rarity == "special" then "Promo" else if token_export() then "Token" else if card.rarity == "mythic rare" then "M" else if card.rarity == "rare" then "R" else if card.rarity == "uncommon" then "U" else if card.rarity == "common" then "C" else "L" }
+ lb_rarity_code := { "*" + fixed_set_code() + " " + rarity_name() + "*" }
+
+ # !addtoken !replacetoken !tokentag !addconjure
+ add_token_filter := filter_text@(match:"!addtoken [^\n!]+")
+ add_token_grabber := replace@(match:"!addtoken ", replace:"")
+ replace_token_filter := filter_text@(match:"!replacetoken [^\n!]+")
+ replace_token_grabber := replace@(match:"!replacetoken ", replace:"")
+ token_tag_filter := filter_text@(match:"!tokentag [^\n!]+")
+ token_tag_grabber := replace@(match:"!tokentag ", replace:"")
+ add_spellbook_filter := filter_text@(match:"!spellbook [^\n!]+")
+ add_spellbook_grabber := replace@(match:"!spellbook ", replace:"")
+ token_scripts := {
+ add_token_argument := add_token_grabber(add_token_filter(card.notes))
+ replace_token_argument := replace_token_grabber(replace_token_filter(card.notes))
+ token_tag_argument := token_tag_grabber(token_tag_filter(card.notes))
+ spellbook_tag_argument := add_spellbook_grabber(add_spellbook_filter(card.notes))
+ output := ""
+ if add_token_argument != "" then output := output + "\"aa\": \"" + add_token_argument + "\"" + (if replace_token_argument != "" or token_tag_argument != "" then ", " else "")
+ if replace_token_argument != "" then output := output + "\"rr\": \"" + replace_token_argument + "\"" + (if token_tag_argument != "" then ", " else "")
+ if token_tag_argument != "" then output := output + "\"t\": \"" + token_tag_argument + "\""
+ if spellbook_tag_argument != "" then output := output + "\"c\": \"" + spellbook_tag_argument + "\""
+ if output != "" then output := "\"tokenscripts\": \{" + output + "\}, "
+ output
+ }
+
+ # !notes tag
+ notes_filter := filter_text@(match:"!notes? [^\n!]+")
+ notes_grabber := replace@(match:"!notes? ", replace:"")
+ +replace@(match:"([^,]+)", replace:{"\"" + _1 + "\""})
+ +replace@(match:"italics", replace:"italic")
+ card_note_array := { "[" + (if notes_grabber(notes_filter(card.notes)) != "" then notes_grabber(notes_filter(card.notes)) else "") + "]" }
+
+ # process text for LackeyBot
+ lackey_bot_rule_filter := replace@(match:"’", replace:"'")+
+ replace@(match:"\n", replace:"\\\\n")+
+ replace@(match:"[(]", replace:"*(")+
+ replace@(match:"[)]", replace: ")*")+
+ replace@(match:"\"", replace:"”")
+ quote_replace := replace@(match:"\"", replace:"\\\\\"")
+ break_cleaner := replace@(match:"\n", replace:"")
+ mana_script := replace@(match:"(2|H|W|U|B|R|G|S|C)/(W|U|B|R|G|S|C|I)", replace:{"\{"+_1+"/"+_2+"\}"})+
+ replace@(match:"(X|Y|Z|W|U|B|R|G|S|C|I)", in_context:"(?", replace:{"\{"+_1+"\}"})+
+ replace@(match:"([1-9][0-9])", in_context:"(?", replace:{"\{"+_1+"\}"})+
+ replace@(match:"([0-9])", in_context:"(?(?!})", replace:{"\{"+_1+"\}"})+
+ replace@(match:"V", replace:{"\{"+v_rep("V")+"\}"})
+
+ lackey_bot_mana_filter := replace@(match:"([0-9WUBRGCSHEQTXYZEDV/]+)", replace:{"\{"+_2+"}"})+
+ replace@(match:"([0-9HSCWUBRGXYZEDV/])", in_context:"\{[0-9HSCWUBRGXYZEDV/]*[0-9HSCWUBRGXYZEDV/]*}", replace:{"\{"+v_rep(_1)+"}"})+
+ replace@(match:"}\{/}\{", replace:"/")+
+ replace@(match:"\{([0-9])}\{([0-9])}", replace:{"\{"+_1+_2+"}"})+
+ replace@(match:"\{\{", replace:"\{")+
+ replace@(match:"}}", replace:"}")
+
+ color_condense := replace@(match:"(, )?(artifact|multicolor|land|hybrid|horizontal|vertical|radial|overlay)", replace: "")
+ indicator_color_name := {
+ cond := color_condense(input)
+ if cond == "white" then "\{White\} "
+ else if cond == "blue" then "\{Blue\} "
+ else if cond == "black" then "\{Black\} "
+ else if cond == "red" then "\{Red\} "
+ else if cond == "green" then "\{Green\} "
+ else if cond == "white, blue" then "\{White/Blue\} "
+ else if cond == "blue, black" then "\{Blue/Black\} "
+ else if cond == "black, red" then "\{Black/Red\} "
+ else if cond == "red, green" then "\{Red/Green\} "
+ else if cond == "white, green" then "\{Green/White\} "
+ else if cond == "white, black" then "\{White/Black\} "
+ else if cond == "blue, red" then "\{Blue/Red\} "
+ else if cond == "black, green" then "\{Black/Green\} "
+ else if cond == "white, red" then "\{Red/White\} "
+ else if cond == "blue, green" then "\{Green/Blue\} "
+ else if cond == "white, black, red" then "\{White/Black/Red\} "
+ else if cond == "blue, red, green" then "\{Blue/Red/Green\} "
+ else if cond == "white, black, green" then "\{Black/Green/White\} "
+ else if cond == "white, blue, red" then "\{Red/White/Blue\} "
+ else if cond == "blue, black, green" then "\{Green/Blue/Black\} "
+ else if cond == "white, blue, black" then "\{White/Blue/Black\} "
+ else if cond == "blue, black, red" then "\{Blue/Black/Red\} "
+ else if cond == "black, red, green" then "\{Black/Red/Green\} "
+ else if cond == "white, red, green" then "\{Red/Green/White\} "
+ else if cond == "white, blue, green" then "\{Green/White/Blue\} "
+ else ""
+ }
+ silver_patch := {
+ is_silver := contains(card.casting_cost, match:"I")
+ if not is_silver then input
+ else if input == "" then "{Silver} "
+ else replace(input, match:"\{", replace:"\{Silver/")
+ }
+ trim_zeroes := replace@(match: "^00?", replace: "")+
+ replace@(match: "a?/[0-9b]+", replace: "")
+ corrected_card_number := {
+ (if card.custom_card_number != "" then trim_zeroes(card.custom_card_number) else card_number())
+ + (if card.rarity == "special" and set.sort_special_rarity == "separate numbering" then "s" else "")
+ }
+ lackey_bot_flavor := {"*" + input + "*" }
+ apos_filter := replace@(match:"’", replace:"'")
+ paragraph_count := replace@(match:"\n", replace:"~")+
+ filter_text@(match:"~")
+ text_script := {
+ replace(
+ remove_tags(input) + (if card.rule_text_3 != "" then "\\n" + card.rule_text_3 else ""),
+ match:"[ ][ ]+•",
+ replace: "\\n•"
+ )
+ }
+ leveler_text := {
+ card.rule_text + "\\n" +
+ "[LEVEL " + card.level_1 + "] " + card.rule_text_2 + "\\n" +
+ "[LEVEL " + card.level_2 + "] " + card.rule_text_3 + "\\n"
+ }
+ flavor_script := { if input == "" then ""
+ else replace(italic_filter(input), match:"\n", replace:"\\\\n") + "\\n"
+ }
+ italic_filter := replace@(match:"", replace:"*")+
+ replace@(match:" *", replace:"*")+
+ replace@(match:" ", replace:"* ")+
+ replace@(match:" ", replace:"* ")+
+ replace@(match:" ", replace:"* ")+
+ replace@(match:"", replace:"*")+
+ replace@(match:"", replace:"*")+
+ replace@(match:"", replace:"*")+
+ replace@(match:" ", replace:" *")+
+ replace@(match:" ", replace:" *")+
+ replace@(match:" ", replace:" *")+
+ replace@(match:"", replace:"*")+
+ replace@(match:"", replace:"*")+
+ replace@(match:"", replace:"*")+
+ replace@(match:"\\*\\*+", replace:"")
+
+ walker_text := {
+ lackey_bot_mana_filter(
+ lackey_bot_rule_filter(
+ (if card.loyalty_cost_1 != "" then "[" + card.loyalty_cost_1 + "]: ")
+ + (if card.level_1_text != "" then card.level_1_text else split_text(match:"\n", card.rule_text).0)
+ + "\\n"
+ + "[" + card.loyalty_cost_2 + "]" + (if card.loyalty_cost_2 !="" then ": ") + (if card.level_2_text != "" then card.level_2_text+"\\n" else if contains(paragraph_count(card.rule_text), match:"~") then split_text(match:"\n", card.rule_text).1+"\\n")
+ + "[" + card.loyalty_cost_3 + "]" + (if card.loyalty_cost_3 !="" then ": ") + (if card.level_3_text != "" then card.level_3_text+"\\n" else if contains(paragraph_count(card.rule_text), match:"~~") then split_text(match:"\n", card.rule_text).2+"\\n")
+ + ( if card.loyalty_cost_4 != "" then "[" + card.loyalty_cost_4 + "]" +": ") + (if card.level_4_text != "" then card.level_4_text+"\\n" else if contains(paragraph_count(card.rule_text), match:"~~~") then split_text(match:"\n", card.rule_text).3+"\\n")
+ + ( if card.loyalty_cost_5 != "" then "[" + card.loyalty_cost_5 + "]" +": ") + (if card.level_5_text != "" then card.level_5_text+"\\n" else if contains(paragraph_count(card.rule_text), match:"~~~~") then split_text(match:"\n", card.rule_text).4+"\\n")
+ + ( if card.loyalty_cost_6 != "" then "[" + card.loyalty_cost_6 + "]" +": ") + (if card.level_6_text != "" then card.level_6_text+"\\n" else if contains(paragraph_count(card.rule_text), match:"~~~~") then split_text(match:"\n", card.rule_text).5+"\\n")
+ )
+ )
+ }
+ walker_text_2 := {
+ lackey_bot_mana_filter(
+ lackey_bot_rule_filter(
+ (if card.loyalty_cost_9 != "" then "[" + card.loyalty_cost_9 + "]: ") +(if card.level_9_text != "" then card.level_9_text else split_text(match:"\n", card.rule_text_2).0)+"\\n"
+ + "[" + card.loyalty_cost_10 + "]" +(if card.loyalty_cost_10 !="" then ": ") +(if card.level_10_text != "" then card.level_10_text+"\\n" else if contains(paragraph_count(card.rule_text_2), match:"~") then split_text(match:"\n", card.rule_text_2).1+"\\n")
+ + "[" + card.loyalty_cost_11 + "]" +(if card.loyalty_cost_11 !="" then ": ") +(if card.level_11_text != "" then card.level_11_text+"\\n" else if contains(paragraph_count(card.rule_text_2), match:"~~") then split_text(match:"\n", card.rule_text_2).2+"\\n")
+ + ( if card.loyalty_cost_12 != "" then "[" + card.loyalty_cost_12 + "]" +": ") +(if card.level_12_text != "" then card.level_12_text+"\\n" else if contains(paragraph_count(card.rule_text_2), match:"~~~") then split_text(match:"\n", card.rule_text_2).3+"\\n")
+ + ( if card.loyalty_cost_13 != "" then "[" + card.loyalty_cost_13 + "]" +": ") +(if card.level_13_text != "" then card.level_13_text+"\\n" else if contains(paragraph_count(card.rule_text_2), match:"~~~~") then split_text(match:"\n", card.rule_text_2).4+"\\n")
+ + ( if card.loyalty_cost_14 != "" then "[" + card.loyalty_cost_14 + "]" +": ") +(if card.level_14_text != "" then card.level_14_text+"\\n" else if contains(paragraph_count(card.rule_text_2), match:"~~~~") then split_text(match:"\n", card.rule_text_2).5+"\\n")
+ )
+ )
+ }
+
+ write_normal:= {
+ " \{"
+ + "\"fullName\": \"" + break_cleaner(apos_fix(database_name())) + "\", "
+ + "\"cardName\": \"" + break_cleaner(remove_tags(card.name)) + "\", "
+ + "\"manaCost\": \"" + mana_script(card.casting_cost) + "\", "
+ + "\"typeLine\": \"" + break_cleaner(card.type) + "\", "
+ + "\"rarityLine\": \"" + lb_rarity_code() + "\", "
+ + "\"rulesText\": \"" + (if card.special_text != "" then lackey_bot_rule_filter(text_script(lackey_bot_mana_filter(card.special_text))) else if card.shape == "leveler" then lackey_bot_mana_filter(lackey_bot_rule_filter(leveler_text())) else if card.loyalty != "" then walker_text() else lackey_bot_rule_filter(text_script(lackey_bot_mana_filter(card.rule_text)))) + "\", "
+ + "\"flavorText\": \"" + flavor_script(card.flavor_text) + "\", "
+ + "\"power\": " + (if card.power == "*" then "\"★\"" else if card.power == "" then "\"\"" else if (to_number(card.power) or else false != card.power) then "\"" + card.power + "\"" else card.power) + ", "
+ + "\"toughness\": " + (if card.toughness == "*" then "\"★\"" else if card.toughness == "" then "\"\"" else if (to_number(card.toughness) or else false != card.toughness) then "\"" + card.toughness + "\"" else card.toughness) + ", "
+ + "\"loyalty\": " + (if (to_number(card.loyalty) or else false != card.loyalty) then "\"" + card.loyalty + "\"" else card.loyalty) + ", "
+ + "\"color\": \"" + (if contains(card.super_type, match:"Land") then "" else silver_patch(indicator_color_name(card.card_color))) + "\", "
+ + "\"cmc\": " + cmc(card.casting_cost) + ", "
+ + "\"cardType\": \"" + type_trim(card.super_type) + "\", "
+ + (if contains(card.shape, match: "split") or contains(card.shape, match:"double") or contains(card.shape, match:"adventure") or contains(card.shape, match:"aftermath") then secondCard())
+ + "\"rarity\": \"" + (if rarity_name() == "Token" then "token" else if rarity_name() == "Bonus" then "bonus" else if rarity_name() == "Masterpiece" then "masterpiece" else card.rarity) + "\", "
+ + "\"shape\": \"" + (if contains(card.shape, match: "adventure") then "adventure" else if contains(card.shape, match: "aftermath") or contains(card.shape, match: "split") then "split" else if contains(card.shape, match:"double") then "doubleface" else "normal") + "\", "
+ + "\"setID\": \"" + (if token_export() then "tokens" else fixed_set_code()) + "\", "
+ + "\"cardID\": \"" + (if token_export() then fixed_set_code() else "") + position(of:card, in:set) + "\", "
+ + (if token_export() then "\"parentSet\": \"" + fixed_set_code() + "\", " else "")
+ + "\"notes\": " + card_note_array() + ", "
+ + token_scripts()
+ + "\"artist\": \"" + break_cleaner(quote_replace(card.illustrator))
+ + (if contains(card.shape, match: "split") or contains(card.shape, match:"double") and card.illustrator != card.illustrator_2 and card.illustrator_2 != "" then
+ "\", \"artist2\": \"" + quote_replace(break_cleaner(card.illustrator_2)))
+ + "\"\},\n"
+ }
+ secondCard := {
+ (
+ if card.alias_2 != "" then
+ "\"cardName2\": \"" + break_cleaner(card.alias_2) + "\", "
+ + "\"alias2\": \"" + break_cleaner(remove_tags(card.name_2)) + "\", "
+ else "\"cardName2\": \"" + break_cleaner(remove_tags(card.name_2)) + "\", "
+ )
+ + "\"manaCost2\": \"" + mana_script(card.casting_cost_2) + "\", "
+ + "\"typeLine2\": \"" + break_cleaner(card.type_2) + "\", "
+ + "\"rarityLine2\": \"" + lb_rarity_code() + "\", "
+ + "\"rulesText2\": \"" + (if card.special_text_2 != "" then lackey_bot_rule_filter(text_script(lackey_bot_mana_filter(card.special_text_2))) else if card.loyalty_2 != "" then walker_text_2() else lackey_bot_rule_filter(text_script(lackey_bot_mana_filter(card.rule_text_2)))) + "\", "
+ + "\"flavorText2\": \"" + flavor_script(card.flavor_text_2) + "\", "
+ + "\"power2\": " + (if card.power_2 == "*" then "\"★\"" else if card.power_2 == "" then "\"\"" else if (to_number(card.power_2) or else false != card.power_2) then "\"" + card.power_2 + "\"" else card.power_2) + ", "
+ + "\"toughness2\": " + (if card.toughness_2 == "*" then "\"★\"" else if card.toughness_2 == "" then "\"\"" else if (to_number(card.toughness_2) or else false != card.toughness_2) then "\"" + card.toughness_2 + "\"" else card.toughness_2) + ", "
+ + "\"loyalty2\": " + (if (to_number(card.loyalty_2) or else false != card.loyalty_2) then "\"" + card.loyalty_2 + "\"" else card.loyalty_2) + ", "
+ + "\"color2\": \"" + (if contains(card.super_type, match:"Land") then "" else silver_patch(indicator_color_name(card.card_color_2))) + "\", "
+ + "\"cmc2\": " + cmc(card.casting_cost_2) + ", "
+ + "\"cardType2\": \"" + type_trim(card.super_type_2) + "\", "
+ }
+
+ write_update := {write_normal()}
+ write_cards := to_text(for each card in cards do write_update())
+ clean_cards := replace@(match:",\n$", replace: "\n")
+ +replace@(match:"’", replace:"'")
+ write_set := "\"meta\":\{\"setID\": \"{fixed_set_code()}\", \"title\": \"{quote_replace(set.title)}\"\},"
+ ####################################
+ file_name := {
+ (
+ if token_export() then fixed_set_code()+corrected_card_number()
+ else corrected_card_number()
+ )
+ +".jpg"
+ }
+ write_images := for each card in cards do write_image_file(card, directory: "{fixed_set_code()}", file:(if token_export() then fixed_set_code() else "") + position(of:card, in:set)+".jpg")
+
+ to_string("\{" + write_set + "\n\"cards\":[\n"+clean_cards(write_cards) +"]\n\}")
diff --git a/data/magic-field-test.mse-export-template/icon.png b/data/magic-field-test.mse-export-template/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f55ccc4c1205d22a5b6625ec26e6667cd2a20e3
GIT binary patch
literal 15350
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 aD#tm#|SJOhYVR4`ya7jr)y#B7v=R=hlt1y|oed
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