From 9ed652ea9f8e6ddbd1600a93cfae00031e49ae3a Mon Sep 17 00:00:00 2001 From: pichoro Date: Sat, 14 Aug 2010 18:08:19 +0000 Subject: [PATCH] Forum formatted text spoiler exporter templates for Magic, Vanguard, Planechase and Yu-Gi-Oh. git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1496 0fc631ac-6414-0410-93d0-97cfa31319b6 --- .../export-template | 433 ++++++++++++++++++ data/magic-forum.mse-export-template/icon.png | Bin 0 -> 18608 bytes .../export-template | 215 +++++++++ .../icon.png | Bin 0 -> 18608 bytes .../export-template | 189 ++++++++ .../icon.png | Bin 0 -> 18608 bytes .../export-template | 66 +++ .../yugioh-forum.mse-export-template/icon.png | Bin 0 -> 18172 bytes 8 files changed, 903 insertions(+) create mode 100644 data/magic-forum.mse-export-template/export-template create mode 100644 data/magic-forum.mse-export-template/icon.png create mode 100644 data/planechase-forum.mse-export-template/export-template create mode 100644 data/planechase-forum.mse-export-template/icon.png create mode 100644 data/vanguard-forum.mse-export-template/export-template create mode 100644 data/vanguard-forum.mse-export-template/icon.png create mode 100644 data/yugioh-forum.mse-export-template/export-template create mode 100644 data/yugioh-forum.mse-export-template/icon.png diff --git a/data/magic-forum.mse-export-template/export-template b/data/magic-forum.mse-export-template/export-template new file mode 100644 index 00000000..ac594a13 --- /dev/null +++ b/data/magic-forum.mse-export-template/export-template @@ -0,0 +1,433 @@ +mse version: 0.3.8 +short name: Forum +full name: Spoiler Exporter +position hint: 006 +icon: icon.png +version: 2010-06-06 +installer group: magic/Export/forum + +depends on: + package: magic.mse-game + version: 2009-07-23 + +game: magic +file type: *.txt|*.txt|*.*|*.* + +# By Pichoro +# Based on code by Idle Muse, Innuendo and Seeonee + +option field: + type: choice + name: forum + choice: mse + choice: mtgsalvation + description: What forum should the spoiler be formatted for? +option field: + type: boolean + name: text costs + initial: yes + description: Should mana costs be plain text? Symbols usually can't be copied and pasted. +option field: + type: text + name: creator + description: The creator of the set. +option field: + type: boolean + name: include notes + description: Should card notes be included? + initial: no +option field: + type: boolean + name: color rarities + description: Should rarities be colored? + initial: yes +script: + # Formats mana costs. MSE and mtgsally use same bbcode tags. + mtgsally_mse_forum_cost := replace@(match:"2/W", replace:":sym2w:")+ + replace@(match:"2/U", replace:":sym2u:")+ + replace@(match:"2/B", replace:":sym2b:")+ + replace@(match:"2/R", replace:":sym2r:")+ + replace@(match:"2/G", replace:":sym2g:")+ + replace@(match:"S", replace:":snow:")+ + replace@(match:"W/U", replace:":symwu:")+ + replace@(match:"W/B", replace:":symwb:")+ + replace@(match:"U/B", replace:":symub:")+ + replace@(match:"U/R", replace:":symur:")+ + replace@(match:"B/R", replace:":symbr:")+ + replace@(match:"B/G", replace:":symbg:")+ + replace@(match:"R/G", replace:":symrg:")+ + replace@(match:"R/W", replace:":symrw:")+ + replace@(match:"G/W", replace:":symgw:")+ + replace@(match:"G/U", replace:":symgu:")+ + replace@(match:"X", replace:":symx:")+ + replace@(match:"Y", replace:":symy:")+ + replace@(match:"W", replace:":symw:")+ + replace@(match:"U", replace:":symu:")+ + replace@(match:"B", replace:":symb:")+ + replace@(match:"R", replace:":symr:")+ + replace@(match:"G", replace:":symg:")+ + replace@(match:"20", replace:":20mana:")+ + replace@(match:"19", replace:":19mana:")+ + replace@(match:"18", replace:":18mana:")+ + replace@(match:"17", replace:":17mana:")+ + replace@(match:"16", replace:":16mana:")+ + replace@(match:"15", replace:":15mana:")+ + replace@(match:"14", replace:":14mana:")+ + replace@(match:"13", replace:":13mana:")+ + replace@(match:"12", replace:":12mana:")+ + replace@(match:"11", replace:":11mana:")+ + replace@(match:"10", replace:":10mana:")+ + replace@(match:"9", replace:":9mana:")+ + replace@(match:"8", replace:":8mana:")+ + replace@(match:"7", replace:":7mana:")+ + replace@(match:"6", replace:":6mana:")+ + replace@(match:"5", replace:":5mana:")+ + replace@(match:"4", replace:":4mana:")+ + replace@(match:"3", replace:":3mana:")+ + replace@(match:"2", replace:":2mana:")+ + replace@(match:"1", replace:":1mana:")+ + replace@(match:"0", replace:":0mana:") + # Determine which style of colored rarities to use. + rarity_color := { + if options.forum == "mse" then rarity_color_mse() + else if options.forum == "mtgsalvation" then rarity_color_mtgs() + } + # Colored rarity markers for MTGS forum. + rarity_color_mtgs := { + if card.rarity == "basic land" then " (C)" + else if card.rarity == "common" then " (C)" + else if card.rarity == "uncommon" then " [color=silver](U)[/color]" + else if card.rarity == "rare" then " [color=gold](R)[/color]" + else if card.rarity == "mythic rare" then " [color=orange](M)[/color]" + else if card.rarity == "special" then " [color=purple](S)[/color]" + else " (C)" + } + # Colored rarity markers for MSE forum. + rarity_color_mse := { + if card.rarity == "basic land" then " :common:" + else if card.rarity == "common" then " :common:" + else if card.rarity == "uncommon" then " :uncommon:" + else if card.rarity == "rare" then " :rare:" + else if card.rarity == "mythic rare" then " :mythic:" + else if card.rarity == "special" then " :special:" + else " :common:" + } + # Non colored rarity markers. + rarity_uncolor := { + if card.rarity == "basic land" then " (C)" + else if card.rarity == "common" then " (C)" + else if card.rarity == "uncommon" then " (U)" + else if card.rarity == "rare" then " (R)" + else if card.rarity == "mythic rare" then " (M)" + else if card.rarity == "special" then " (S)" + else " (C)" + } + # Formats rules text w/ only italic tags. + forum_rules_filter_plain := replace@(match:"[(]", replace:"[i](")+ + replace@(match:"[)]", replace: ")[/i]") + # Formats rules text w/ mana symbols. MSE and mtgsally use same bbcode tags for mana. + forum_rules_filter_mtgsally_mse := + # Italics around parenthesis. + replace@(match:"[(]", replace:"[i](")+ + replace@(match:"[)]", replace: ")[/i]")+ + # 2/C's don't appear in regular english, format them all. + replace@(match:"2/W", replace:":sym2w:")+ + replace@(match:"2/U", replace:":sym2u:")+ + replace@(match:"2/B", replace:":sym2b:")+ + replace@(match:"2/R", replace:":sym2r:")+ + replace@(match:"2/G", replace:":sym2g:")+ + # C/D's don't appear in regular english, format them all. + replace@(match:"W/U", replace:":symwu:")+ + replace@(match:"W/B", replace:":symwb:")+ + replace@(match:"U/B", replace:":symub:")+ + replace@(match:"U/R", replace:":symur:")+ + replace@(match:"B/R", replace:":symbr:")+ + replace@(match:"B/G", replace:":symbg:")+ + replace@(match:"R/G", replace:":symrg:")+ + replace@(match:"R/W", replace:":symrw:")+ + replace@(match:"G/W", replace:":symgw:")+ + replace@(match:"G/U", replace:":symgu:")+ + # Various positions for taps, untaps and chaos symbols. + replace@(match:" T ", replace:" :symtap: ")+ + replace@(match:" Q ", replace:" :symq: ")+ + replace@(match:" C ", replace:" :symch: ")+ + replace@(match:"T,", replace:":symtap:,")+ + replace@(match:"Q,", replace:":symq:,")+ + replace@(match:"C,", replace:":symch:,")+ + replace@(match:"T:", replace:":symtap::")+ + replace@(match:"Q:", replace:":symq::")+ + replace@(match:"C:", replace:":symch::")+ + # Mana right before a space. + replace@(match:"G ", replace:":symg: ")+ + replace@(match:"R ", replace:":symr: ")+ + replace@(match:"B ", replace:":symb: ")+ + replace@(match:"U ", replace:":symu: ")+ + replace@(match:"W ", replace:":symw: ")+ + replace@(match:"S ", replace:":snow: ")+ + # Mana right before a comma. + replace@(match:"G,", replace:":symg:,")+ + replace@(match:"R,", replace:":symr:,")+ + replace@(match:"B,", replace:":symb:,")+ + replace@(match:"U,", replace:":symu:,")+ + replace@(match:"W,", replace:":symw:,")+ + replace@(match:"S,", replace:":snow:,")+ + # Mana right before a colon. + replace@(match:"G:", replace:":symg::")+ + replace@(match:"R:", replace:":symr::")+ + replace@(match:"B:", replace:":symb::")+ + replace@(match:"U:", replace:":symu::")+ + replace@(match:"W:", replace:":symw::")+ + # Drag rules text to search for more mana characters. Reverse color wheel order works better. Repeat several times. + replace@(match:"G:", replace:":symg::")+ + replace@(match:"R:", replace:":symr::")+ + replace@(match:"B:", replace:":symb::")+ + replace@(match:"U:", replace:":symu::")+ + replace@(match:"W:", replace:":symw::")+ + replace@(match:"G:", replace:":symg::")+ + replace@(match:"R:", replace:":symr::")+ + replace@(match:"B:", replace:":symb::")+ + replace@(match:"U:", replace:":symu::")+ + replace@(match:"W:", replace:":symw::")+ + replace@(match:"G:", replace:":symg::")+ + replace@(match:"R:", replace:":symr::")+ + replace@(match:"B:", replace:":symb::")+ + replace@(match:"U:", replace:":symu::")+ + replace@(match:"W:", replace:":symw::")+ + # Symbolize snow. + replace@(match:"S:", replace:":snow::")+ + replace@(match:"S:", replace:":snow::")+ + replace@(match:"S:", replace:":snow::")+ + # Symbolize numbers from 20-0 when before a comma. + replace@(match:"20,", replace:":20mana:,")+ + replace@(match:"19,", replace:":19mana:,")+ + replace@(match:"18,", replace:":18mana:,")+ + replace@(match:"17,", replace:":17mana:,")+ + replace@(match:"16,", replace:":16mana:,")+ + replace@(match:"15,", replace:":15mana:,")+ + replace@(match:"14,", replace:":14mana:,")+ + replace@(match:"13,", replace:":13mana:,")+ + replace@(match:"12,", replace:":12mana:,")+ + replace@(match:"11,", replace:":11mana:,")+ + replace@(match:"10,", replace:":10mana:,")+ + replace@(match:"9,", replace:":9mana:,")+ + replace@(match:"8,", replace:":8mana:,")+ + replace@(match:"7,", replace:":7mana:,")+ + replace@(match:"6,", replace:":6mana:,")+ + replace@(match:"5,", replace:":5mana:,")+ + replace@(match:"4,", replace:":4mana:,")+ + replace@(match:"3,", replace:":3mana:,")+ + replace@(match:"2,", replace:":2mana:,")+ + replace@(match:"1,", replace:":1mana:,")+ + replace@(match:"0,", replace:":0mana:,")+ + # Symbolize numbers from 20-0 when before another symbol or a colon. + replace@(match:"20:", replace:":20mana::")+ + replace@(match:"19:", replace:":19mana::")+ + replace@(match:"18:", replace:":18mana::")+ + replace@(match:"17:", replace:":17mana::")+ + replace@(match:"16:", replace:":16mana::")+ + replace@(match:"15:", replace:":15mana::")+ + replace@(match:"14:", replace:":14mana::")+ + replace@(match:"13:", replace:":13mana::")+ + replace@(match:"12:", replace:":12mana::")+ + replace@(match:"11:", replace:":11mana::")+ + replace@(match:"10:", replace:":10mana::")+ + replace@(match:"9:", replace:":9mana::")+ + replace@(match:"8:", replace:":8mana::")+ + replace@(match:"7:", replace:":7mana::")+ + replace@(match:"6:", replace:":6mana::")+ + replace@(match:"5:", replace:":5mana::")+ + replace@(match:"4:", replace:":4mana::")+ + replace@(match:"3:", replace:":3mana::")+ + replace@(match:"2:", replace:":2mana::")+ + replace@(match:"1:", replace:":1mana::")+ + replace@(match:"0:", replace:":0mana::")+ + # Symbolize X and Y when before a comma. + replace@(match:"Y,", replace:":symy:,")+ + replace@(match:"X,", replace:":symx:,")+ + # Symbolize X and Y when before another symbol or a colon. + replace@(match:"Y:", replace:":symy::")+ + replace@(match:"X:", replace:":symx::") + # Count the number of paragraphs to detect number of walker abilities. + paragraph_count := replace@(match:"\n", replace:"•")+ + filter_text@(match:"•") + write_normal := { + # The Name and Casting Cost + "\n[b]"+card.name+"[/b] " + +(if not options.text_costs then mtgsally_mse_forum_cost(card.casting_cost)) + +(if options.text_costs then card.casting_cost) + # The Type and Rarity + +"\n"+card.type+(if options.color_rarities then rarity_color() else rarity_uncolor()) + # The Rules Text + +(if card.rule_text != "" then "\n") + +(if not options.text_costs then forum_rules_filter_mtgsally_mse(remove_tags(card.rule_text))) + +(if options.text_costs then forum_rules_filter_plain(card.rule_text)) + # The Flavor Text + +(if card.flavor_text != "" then "\n[i]") + +card.flavor_text + +(if card.flavor_text != "" then "[/i]") + # The P/T + +(if contains(card.type, match:"Creature") then "\n") + +(if contains(card.type, match:"Creature") then card.pt) + # The Notes + +(if options.include_notes and card.notes !="" then "\n[spoiler]Card Notes: ") + +(if options.include_notes and card.notes !="" then card.notes) + +(if options.include_notes and card.notes !="" then "[/spoiler]") + +"\n" + } + write_split := { + # The Name and Casting Cost + "\n[b]"+card.name+"[/b] " + +(if not options.text_costs then mtgsally_mse_forum_cost(card.casting_cost)) + +(if options.text_costs then card.casting_cost) + # The Type and Rarity + +"\n"+card.type+(if options.color_rarities then rarity_color() else rarity_uncolor()) + # The Rules Text + +(if card.rule_text != "" then "\n") + +(if not options.text_costs then forum_rules_filter_mtgsally_mse(remove_tags(card.rule_text))) + +(if options.text_costs then forum_rules_filter_plain(card.rule_text)) + # The Flavor Text + +(if card.flavor_text != "" then "\n[i]") + +card.flavor_text + +(if card.flavor_text != "" then "[/i]") + # The P/T + +(if contains(card.type, match:"Creature") then "\n") + +(if contains(card.type, match:"Creature") then card.pt) + +"\n /// " + # The Second Name and Casting Cost + +"\n[b]"+card.name_2+"[/b] " + +(if not options.text_costs then mtgsally_mse_forum_cost(card.casting_cost_2)) + +(if options.text_costs then card.casting_cost_2) + # The Second Type and Rarity + +"\n"+card.type_2+(if options.color_rarities then rarity_color() else rarity_uncolor()) + # The Second Rules Text + +(if card.rule_text_2 != "" then "\n") + +(if not options.text_costs then forum_rules_filter_mtgsally_mse(remove_tags(card.rule_text_2))) + +(if options.text_costs then forum_rules_filter_plain(card.rule_text_2)) + # The Second Flavor Text + +(if card.flavor_text_2 != "" then "\n[i]") + +card.flavor_text_2 + +(if card.flavor_text_2 != "" then "[/i]") + # The Second P/T + +(if contains(card.type_2, match:"Creature") then "\n") + +(if contains(card.type_2, match:"Creature") then card.pt_2) + # The Notes + +(if options.include_notes and card.notes !="" then "\n[spoiler]Card Notes: ") + +(if options.include_notes and card.notes !="" then card.notes) + +(if options.include_notes and card.notes !="" then "[/spoiler]") + +"\n" + } + write_flip := { + # The Name and Casting Cost + "\n[b]"+card.name+"[/b] " + +(if not options.text_costs then mtgsally_mse_forum_cost(card.casting_cost)) + +(if options.text_costs then card.casting_cost) + # The Type and Rarity + +"\n"+card.type+(if options.color_rarities then rarity_color() else rarity_uncolor()) + # The Rules Text + +(if card.rule_text != "" then "\n") + +(if not options.text_costs then forum_rules_filter_mtgsally_mse(remove_tags(card.rule_text))) + +(if options.text_costs then forum_rules_filter_plain(card.rule_text)) + # The Flavor Text + +(if card.flavor_text != "" then "\n[i]") + +card.flavor_text + +(if card.flavor_text != "" then "[/i]") + # The P/T + +(if contains(card.type, match:"Creature") then "\n") + +(if contains(card.type, match:"Creature") then card.pt) + +"\n ---Flip--- " + # The Flip Name and Casting Cost + +"\n[b]"+card.name_2+"[/b] " + +(if not options.text_costs then mtgsally_mse_forum_cost(card.casting_cost_2)) + +(if options.text_costs then card.casting_cost_2) + # The Flip Rules Text + +(if card.rule_text_2 != "" then "\n") + +(if not options.text_costs then forum_rules_filter_mtgsally_mse(remove_tags(card.rule_text_2))) + +(if options.text_costs then forum_rules_filter_plain(card.rule_text_2)) + # The Flip Flavor Text + +(if card.flavor_text_2 != "" then "\n[i]") + +card.flavor_text_2 + +(if card.flavor_text_2 != "" then "[/i]") + # The Flip P/T + +(if contains(card.type_2, match:"Creature") then "\n") + +(if contains(card.type_2, match:"Creature") then card.pt_2) + # The Notes + +(if options.include_notes and card.notes !="" then "\n[spoiler]Card Notes: ") + +(if options.include_notes and card.notes !="" then card.notes) + +(if options.include_notes and card.notes !="" then "[/spoiler]") + +"\n" + } + write_walker := { + # The Name and Casting Cost + "\n[b]"+card.name+"[/b] " + +(if not options.text_costs then mtgsally_mse_forum_cost(card.casting_cost)) + +(if options.text_costs then card.casting_cost) + # The Type and Rarity + +"\n"+card.type+(if options.color_rarities then rarity_color() else rarity_uncolor()) + # The Starting Loyalty + +"\nStarting Loyalty: "+card.loyalty + # The First Ability + +"\n"+card.loyalty_cost_1 + +(if card.loyalty_cost_1 !="" then ": ") + +forum_rules_filter_plain(split_text(match:"\n", card.rule_text).0) + # The Second Ability + +(if contains(paragraph_count(card.rule_text), match:"•") then "\n") + +card.loyalty_cost_2 + +(if card.loyalty_cost_2 !="" then ": ") + +(if contains(paragraph_count(card.rule_text), match:"•") then forum_rules_filter_plain(split_text(match:"\n", card.rule_text).1)) + # The Third Ability + +(if contains(paragraph_count(card.rule_text), match:"••") then "\n") + +card.loyalty_cost_3 + +(if card.loyalty_cost_3 !="" then ": ") + +(if contains(paragraph_count(card.rule_text), match:"••") then forum_rules_filter_plain(split_text(match:"\n", card.rule_text).2)) + # The Fourth Ability + +(if contains(paragraph_count(card.rule_text), match:"•••") then "\n") + +card.loyalty_cost_4 + +(if card.loyalty_cost_4 !="" then ": ") + +(if contains(paragraph_count(card.rule_text), match:"•••") then forum_rules_filter_plain(split_text(match:"\n", card.rule_text).3)) + # The Flavor Text + +(if card.flavor_text != "" then "\n[i]") + +card.flavor_text + +(if card.flavor_text != "" then "[/i]") + # The Notes + +(if options.include_notes and card.notes !="" then "\n[spoiler]Card Notes: ") + +(if options.include_notes and card.notes !="" then card.notes) + +(if options.include_notes and card.notes !="" then "[/spoiler]") + +"\n" + } + write_leveler := { + # The Name and Casting Cost + "\n[b]"+card.name+"[/b] " + +(if not options.text_costs then mtgsally_mse_forum_cost(card.casting_cost)) + +(if options.text_costs then card.casting_cost) + # The Type and Rarity + +"\n"+card.type+(if options.color_rarities then rarity_color() else rarity_uncolor()) + # The First Textbox + +"\n"+forum_rules_filter_plain(card.rule_text) + +(if card.pt !="" then " (")+card.pt+")" + # The Second Textbox + +"\n[LEVEL "+card.level_1+"]: " + +forum_rules_filter_plain(card.rule_text_2) + +(if card.pt_2 !="" then " (")+card.pt_2+")" + # The Third Textbox + +"\n"+(if card.level_2 !="" then "[LEVEL "+card.level_2+"]: ") + +forum_rules_filter_plain(card.rule_text_3) + +(if card.pt_3 !="" then " (")+card.pt_3+")" + # The Flavor Text + +(if card.flavor_text != "" then "\n[i]") + +card.flavor_text + +(if card.flavor_text != "" then "[/i]") + # The Notes + +(if options.include_notes and card.notes !="" then "\n[spoiler]Card Notes: ") + +(if options.include_notes and card.notes !="" then card.notes) + +(if options.include_notes and card.notes !="" then "[/spoiler]") + +"\n" + } + write_card := { if contains(card.shape, match:"token") or contains(card.shape, match:"rulestip") then "" + else if contains(card.shape, match:"split") then write_split() + else if card.name_2 != "" then write_flip() + else if card.loyalty != "" then write_walker() + else if contains(card.shape, match:"leveler") then write_leveler() + else write_normal() + } + write_cards := to_text(for each card in sort_list(cards, order_by: {input.card_number}) do write_card()) + to_string("Full Spoiler List for "+set.title+"\nSet by "+options.creator+"\n"+set.description+"\n"+write_cards) diff --git a/data/magic-forum.mse-export-template/icon.png b/data/magic-forum.mse-export-template/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f81555722bb72e323b6af60a9f81ed2d9473ccfe GIT binary patch literal 18608 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 literal 0 HcmV?d00001 diff --git a/data/planechase-forum.mse-export-template/export-template b/data/planechase-forum.mse-export-template/export-template new file mode 100644 index 00000000..5ee34e08 --- /dev/null +++ b/data/planechase-forum.mse-export-template/export-template @@ -0,0 +1,215 @@ +mse version: 0.3.8 +short name: Forum +full name: Spoiler Exporter +position hint: 002 +icon: icon.png +version: 2010-05-11 +installer group: Magic Planes/Export/forum + +depends on: + package: planechase.mse-game + version: 2009-08-11 + +game: planechase +file type: *.txt|*.txt|*.*|*.* + +# By Pichoro +# Based on code by Idle Muse, Innuendo and Seeonee + +option field: + type: choice + name: forum + choice: mse + choice: mtgsalvation + description: What forum should the spoiler be formatted for? +option field: + type: boolean + name: text costs + initial: yes + description: Should mana costs be plain text? Symbols usually can't be copied and pasted. +option field: + type: text + name: creator + description: The creator of the set. +option field: + type: boolean + name: include notes + description: Should card notes be included? + initial: no +option field: + type: boolean + name: color rarities + description: Should rarities be colored? + initial: yes +script: + # Colored rarity markers. + rarity_color := { + if card.rarity == "basic land" then " (C)" + else if card.rarity == "common" then " (C)" + else if card.rarity == "uncommon" then " [color=silver](U)[/color]" + else if card.rarity == "rare" then " [color=gold](R)[/color]" + else if card.rarity == "mythic rare" then " [color=orange](M)[/color]" + else if card.rarity == "special" then " [color=purple](S)[/color]" + else " (C)" + } + # Non colored rarity markers. + rarity_uncolor := { + if card.rarity == "basic land" then " (C)" + else if card.rarity == "common" then " (C)" + else if card.rarity == "uncommon" then " (U)" + else if card.rarity == "rare" then " (R)" + else if card.rarity == "mythic rare" then " (M)" + else if card.rarity == "special" then " (S)" + else " (C)" + } + # Formats rules text w/ only italic tags. + forum_rules_filter_plain := replace@(match:"[(]", replace:"[i](")+ + replace@(match:"[)]", replace: ")[/i]") + # Formats rules text w/ mana symbols. MSE and mtgsally use same bbcode tags for mana. + forum_rules_filter_mtgsally_mse := + # Italics around parenthesis. + replace@(match:"[(]", replace:"[i](")+ + replace@(match:"[)]", replace: ")[/i]")+ + # 2/C's don't appear in regular english, format them all. + replace@(match:"2/W", replace:":sym2w:")+ + replace@(match:"2/U", replace:":sym2u:")+ + replace@(match:"2/B", replace:":sym2b:")+ + replace@(match:"2/R", replace:":sym2r:")+ + replace@(match:"2/G", replace:":sym2g:")+ + # C/D's don't appear in regular english, format them all. + replace@(match:"W/U", replace:":symwu:")+ + replace@(match:"W/B", replace:":symwb:")+ + replace@(match:"U/B", replace:":symub:")+ + replace@(match:"U/R", replace:":symur:")+ + replace@(match:"B/R", replace:":symbr:")+ + replace@(match:"B/G", replace:":symbg:")+ + replace@(match:"R/G", replace:":symrg:")+ + replace@(match:"R/W", replace:":symrw:")+ + replace@(match:"G/W", replace:":symgw:")+ + replace@(match:"G/U", replace:":symgu:")+ + # Various positions for taps, untaps and chaos symbols. + replace@(match:" T ", replace:" :symtap: ")+ + replace@(match:" Q ", replace:" :symq: ")+ + replace@(match:" C ", replace:" :symch: ")+ + replace@(match:"T,", replace:":symtap:,")+ + replace@(match:"Q,", replace:":symq:,")+ + replace@(match:"C,", replace:":symch:,")+ + replace@(match:"T:", replace:":symtap::")+ + replace@(match:"Q:", replace:":symq::")+ + replace@(match:"C:", replace:":symch::")+ + # Mana right before a space. + replace@(match:"G ", replace:":symg: ")+ + replace@(match:"R ", replace:":symr: ")+ + replace@(match:"B ", replace:":symb: ")+ + replace@(match:"U ", replace:":symu: ")+ + replace@(match:"W ", replace:":symw: ")+ + replace@(match:"S ", replace:":snow: ")+ + # Mana right before a comma. + replace@(match:"G,", replace:":symg:,")+ + replace@(match:"R,", replace:":symr:,")+ + replace@(match:"B,", replace:":symb:,")+ + replace@(match:"U,", replace:":symu:,")+ + replace@(match:"W,", replace:":symw:,")+ + replace@(match:"S,", replace:":snow:,")+ + # Mana right before a colon. + replace@(match:"G:", replace:":symg::")+ + replace@(match:"R:", replace:":symr::")+ + replace@(match:"B:", replace:":symb::")+ + replace@(match:"U:", replace:":symu::")+ + replace@(match:"W:", replace:":symw::")+ + # Drag rules text to search for more mana characters. Reverse color wheel order works better. Repeat several times. + replace@(match:"G:", replace:":symg::")+ + replace@(match:"R:", replace:":symr::")+ + replace@(match:"B:", replace:":symb::")+ + replace@(match:"U:", replace:":symu::")+ + replace@(match:"W:", replace:":symw::")+ + replace@(match:"G:", replace:":symg::")+ + replace@(match:"R:", replace:":symr::")+ + replace@(match:"B:", replace:":symb::")+ + replace@(match:"U:", replace:":symu::")+ + replace@(match:"W:", replace:":symw::")+ + replace@(match:"G:", replace:":symg::")+ + replace@(match:"R:", replace:":symr::")+ + replace@(match:"B:", replace:":symb::")+ + replace@(match:"U:", replace:":symu::")+ + replace@(match:"W:", replace:":symw::")+ + # Symbolize snow. + replace@(match:"S:", replace:":snow::")+ + replace@(match:"S:", replace:":snow::")+ + replace@(match:"S:", replace:":snow::")+ + # Symbolize numbers from 20-0 when before a comma. + replace@(match:"20,", replace:":20mana:,")+ + replace@(match:"19,", replace:":19mana:,")+ + replace@(match:"18,", replace:":18mana:,")+ + replace@(match:"17,", replace:":17mana:,")+ + replace@(match:"16,", replace:":16mana:,")+ + replace@(match:"15,", replace:":15mana:,")+ + replace@(match:"14,", replace:":14mana:,")+ + replace@(match:"13,", replace:":13mana:,")+ + replace@(match:"12,", replace:":12mana:,")+ + replace@(match:"11,", replace:":11mana:,")+ + replace@(match:"10,", replace:":10mana:,")+ + replace@(match:"9,", replace:":9mana:,")+ + replace@(match:"8,", replace:":8mana:,")+ + replace@(match:"7,", replace:":7mana:,")+ + replace@(match:"6,", replace:":6mana:,")+ + replace@(match:"5,", replace:":5mana:,")+ + replace@(match:"4,", replace:":4mana:,")+ + replace@(match:"3,", replace:":3mana:,")+ + replace@(match:"2,", replace:":2mana:,")+ + replace@(match:"1,", replace:":1mana:,")+ + replace@(match:"0,", replace:":0mana:,")+ + # Symbolize numbers from 20-0 when before another symbol or a colon. + replace@(match:"20:", replace:":20mana::")+ + replace@(match:"19:", replace:":19mana::")+ + replace@(match:"18:", replace:":18mana::")+ + replace@(match:"17:", replace:":17mana::")+ + replace@(match:"16:", replace:":16mana::")+ + replace@(match:"15:", replace:":15mana::")+ + replace@(match:"14:", replace:":14mana::")+ + replace@(match:"13:", replace:":13mana::")+ + replace@(match:"12:", replace:":12mana::")+ + replace@(match:"11:", replace:":11mana::")+ + replace@(match:"10:", replace:":10mana::")+ + replace@(match:"9:", replace:":9mana::")+ + replace@(match:"8:", replace:":8mana::")+ + replace@(match:"7:", replace:":7mana::")+ + replace@(match:"6:", replace:":6mana::")+ + replace@(match:"5:", replace:":5mana::")+ + replace@(match:"4:", replace:":4mana::")+ + replace@(match:"3:", replace:":3mana::")+ + replace@(match:"2:", replace:":2mana::")+ + replace@(match:"1:", replace:":1mana::")+ + replace@(match:"0:", replace:":0mana::")+ + # Symbolize X and Y when before a comma. + replace@(match:"Y,", replace:":symy:,")+ + replace@(match:"X,", replace:":symx:,")+ + # Symbolize X and Y when before another symbol or a colon. + replace@(match:"Y:", replace:":symy::")+ + replace@(match:"X:", replace:":symx::")+ + # Add a Chaos symbol in front of Chaos abilities. + replace@(match:"Whenever you roll :symch:,", replace:":symch: - Whenever you roll :symch:,")+ + # Remove consecutive spaces, as they are meant to adjust text position. + replace@(match:" ", replace:"") + # Count the number of paragraphs to detect number of walker abilities. + write_card := { + # The Name + "\n[b]"+card.name+"[/b]" + # The Type and Rarity + +"\n"+card.type+(if options.color_rarities then rarity_color() else rarity_uncolor()) + # The Rules Text + +(if card.rule_text != "" then "\n") + +(if not options.text_costs then forum_rules_filter_mtgsally_mse(remove_tags(card.rule_text))) + +(if options.text_costs then forum_rules_filter_plain(card.rule_text)) + # The Flavor Text + +(if card.flavor_text != "" then "\n[i]") + +card.flavor_text + +(if card.flavor_text != "" then "[/i]") + # The Notes + +(if options.include_notes and card.notes !="" then "\n[spoiler]Card Notes: ") + +(if options.include_notes and card.notes !="" then card.notes) + +(if options.include_notes and card.notes !="" then "[/spoiler]") + +"\n" + } + write_cards := to_text(for each card in sort_list(cards, order_by: {input.card_number}) do write_card()) + to_string("Full Spoiler List for "+set.title+"\nSet by "+options.creator+"\n"+set.description+"\n"+write_cards) diff --git a/data/planechase-forum.mse-export-template/icon.png b/data/planechase-forum.mse-export-template/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f81555722bb72e323b6af60a9f81ed2d9473ccfe GIT binary patch literal 18608 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 literal 0 HcmV?d00001 diff --git a/data/vanguard-forum.mse-export-template/export-template b/data/vanguard-forum.mse-export-template/export-template new file mode 100644 index 00000000..620d55c2 --- /dev/null +++ b/data/vanguard-forum.mse-export-template/export-template @@ -0,0 +1,189 @@ +mse version: 0.3.8 +short name: Forum +full name: Spoiler Exporter +position hint: 002 +icon: icon.png +version: 2010-05-11 +installer group: Magic Vanguard/Export/forum + +depends on: + package: vanguard.mse-game + version: 2007-09-23 + +game: vanguard +file type: *.txt|*.txt|*.*|*.* + +# By Pichoro +# Based on code by Idle Muse, Innuendo and Seeonee + +option field: + type: choice + name: forum + choice: mse + choice: mtgsalvation + description: What forum should the spoiler be formatted for? +option field: + type: boolean + name: text costs + initial: yes + description: Should mana costs be plain text? Symbols usually can't be copied and pasted. +option field: + type: text + name: creator + description: The creator of the set. +option field: + type: boolean + name: include notes + description: Should card notes be included? + initial: no +script: + # Formats rules text w/ only italic tags. + forum_rules_filter_plain := replace@(match:"[(]", replace:"[i](")+ + replace@(match:"[)]", replace: ")[/i]") + # Formats rules text w/ mana symbols. MSE and mtgsally use same bbcode tags for mana. + forum_rules_filter_mtgsally_mse := + # Italics around parenthesis. + replace@(match:"[(]", replace:"[i](")+ + replace@(match:"[)]", replace: ")[/i]")+ + # 2/C's don't appear in regular english, format them all. + replace@(match:"2/W", replace:":sym2w:")+ + replace@(match:"2/U", replace:":sym2u:")+ + replace@(match:"2/B", replace:":sym2b:")+ + replace@(match:"2/R", replace:":sym2r:")+ + replace@(match:"2/G", replace:":sym2g:")+ + # C/D's don't appear in regular english, format them all. + replace@(match:"W/U", replace:":symwu:")+ + replace@(match:"W/B", replace:":symwb:")+ + replace@(match:"U/B", replace:":symub:")+ + replace@(match:"U/R", replace:":symur:")+ + replace@(match:"B/R", replace:":symbr:")+ + replace@(match:"B/G", replace:":symbg:")+ + replace@(match:"R/G", replace:":symrg:")+ + replace@(match:"R/W", replace:":symrw:")+ + replace@(match:"G/W", replace:":symgw:")+ + replace@(match:"G/U", replace:":symgu:")+ + # Various positions for taps, untaps and chaos symbols. + replace@(match:" T ", replace:" :symtap: ")+ + replace@(match:" Q ", replace:" :symq: ")+ + replace@(match:" C ", replace:" :symch: ")+ + replace@(match:"T,", replace:":symtap:,")+ + replace@(match:"Q,", replace:":symq:,")+ + replace@(match:"C,", replace:":symch:,")+ + replace@(match:"T:", replace:":symtap::")+ + replace@(match:"Q:", replace:":symq::")+ + replace@(match:"C:", replace:":symch::")+ + # Mana right before a space. + replace@(match:"G ", replace:":symg: ")+ + replace@(match:"R ", replace:":symr: ")+ + replace@(match:"B ", replace:":symb: ")+ + replace@(match:"U ", replace:":symu: ")+ + replace@(match:"W ", replace:":symw: ")+ + replace@(match:"S ", replace:":snow: ")+ + # Mana right before a comma. + replace@(match:"G,", replace:":symg:,")+ + replace@(match:"R,", replace:":symr:,")+ + replace@(match:"B,", replace:":symb:,")+ + replace@(match:"U,", replace:":symu:,")+ + replace@(match:"W,", replace:":symw:,")+ + replace@(match:"S,", replace:":snow:,")+ + # Mana right before a colon. + replace@(match:"G:", replace:":symg::")+ + replace@(match:"R:", replace:":symr::")+ + replace@(match:"B:", replace:":symb::")+ + replace@(match:"U:", replace:":symu::")+ + replace@(match:"W:", replace:":symw::")+ + # Drag rules text to search for more mana characters. Reverse color wheel order works better. Repeat several times. + replace@(match:"G:", replace:":symg::")+ + replace@(match:"R:", replace:":symr::")+ + replace@(match:"B:", replace:":symb::")+ + replace@(match:"U:", replace:":symu::")+ + replace@(match:"W:", replace:":symw::")+ + replace@(match:"G:", replace:":symg::")+ + replace@(match:"R:", replace:":symr::")+ + replace@(match:"B:", replace:":symb::")+ + replace@(match:"U:", replace:":symu::")+ + replace@(match:"W:", replace:":symw::")+ + replace@(match:"G:", replace:":symg::")+ + replace@(match:"R:", replace:":symr::")+ + replace@(match:"B:", replace:":symb::")+ + replace@(match:"U:", replace:":symu::")+ + replace@(match:"W:", replace:":symw::")+ + # Symbolize snow. + replace@(match:"S:", replace:":snow::")+ + replace@(match:"S:", replace:":snow::")+ + replace@(match:"S:", replace:":snow::")+ + # Symbolize numbers from 20-0 when before a comma. + replace@(match:"20,", replace:":20mana:,")+ + replace@(match:"19,", replace:":19mana:,")+ + replace@(match:"18,", replace:":18mana:,")+ + replace@(match:"17,", replace:":17mana:,")+ + replace@(match:"16,", replace:":16mana:,")+ + replace@(match:"15,", replace:":15mana:,")+ + replace@(match:"14,", replace:":14mana:,")+ + replace@(match:"13,", replace:":13mana:,")+ + replace@(match:"12,", replace:":12mana:,")+ + replace@(match:"11,", replace:":11mana:,")+ + replace@(match:"10,", replace:":10mana:,")+ + replace@(match:"9,", replace:":9mana:,")+ + replace@(match:"8,", replace:":8mana:,")+ + replace@(match:"7,", replace:":7mana:,")+ + replace@(match:"6,", replace:":6mana:,")+ + replace@(match:"5,", replace:":5mana:,")+ + replace@(match:"4,", replace:":4mana:,")+ + replace@(match:"3,", replace:":3mana:,")+ + replace@(match:"2,", replace:":2mana:,")+ + replace@(match:"1,", replace:":1mana:,")+ + replace@(match:"0,", replace:":0mana:,")+ + # Symbolize numbers from 20-0 when before another symbol or a colon. + replace@(match:"20:", replace:":20mana::")+ + replace@(match:"19:", replace:":19mana::")+ + replace@(match:"18:", replace:":18mana::")+ + replace@(match:"17:", replace:":17mana::")+ + replace@(match:"16:", replace:":16mana::")+ + replace@(match:"15:", replace:":15mana::")+ + replace@(match:"14:", replace:":14mana::")+ + replace@(match:"13:", replace:":13mana::")+ + replace@(match:"12:", replace:":12mana::")+ + replace@(match:"11:", replace:":11mana::")+ + replace@(match:"10:", replace:":10mana::")+ + replace@(match:"9:", replace:":9mana::")+ + replace@(match:"8:", replace:":8mana::")+ + replace@(match:"7:", replace:":7mana::")+ + replace@(match:"6:", replace:":6mana::")+ + replace@(match:"5:", replace:":5mana::")+ + replace@(match:"4:", replace:":4mana::")+ + replace@(match:"3:", replace:":3mana::")+ + replace@(match:"2:", replace:":2mana::")+ + replace@(match:"1:", replace:":1mana::")+ + replace@(match:"0:", replace:":0mana::")+ + # Symbolize X and Y when before a comma. + replace@(match:"Y,", replace:":symy:,")+ + replace@(match:"X,", replace:":symx:,")+ + # Symbolize X and Y when before another symbol or a colon. + replace@(match:"Y:", replace:":symy::")+ + replace@(match:"X:", replace:":symx::") + # Count the number of paragraphs to detect number of walker abilities. + write_card := { + # The Name + "\n[b]"+card.name+"[/b]" + # The Type and Rarity + +"\n"+card.type + # The Rules Text + +(if card.rule_text != "" then "\n") + +(if not options.text_costs then forum_rules_filter_mtgsally_mse(remove_tags(card.rule_text))) + +(if options.text_costs then forum_rules_filter_plain(card.rule_text)) + # The Flavor Text + +(if card.flavor_text != "" then "\n[i]") + +card.flavor_text + +(if card.flavor_text != "" then "[/i]") + # Life and Hand Modifiers + +"\nStarting & Max Hand Size: "+card.handmod + +"\nStarting Life: "+card.lifemod + # The Notes + +(if options.include_notes and card.notes !="" then "\n[spoiler]Card Notes: ") + +(if options.include_notes and card.notes !="" then card.notes) + +(if options.include_notes and card.notes !="" then "[/spoiler]") + +"\n" + } + write_cards := to_text(for each card in sort_list(cards, order_by: {input.card_number}) do write_card()) + to_string("Full Spoiler List for "+set.title+"\nSet by "+options.creator+"\n"+set.description+"\n"+write_cards) diff --git a/data/vanguard-forum.mse-export-template/icon.png b/data/vanguard-forum.mse-export-template/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f81555722bb72e323b6af60a9f81ed2d9473ccfe GIT binary patch literal 18608 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 literal 0 HcmV?d00001 diff --git a/data/yugioh-forum.mse-export-template/export-template b/data/yugioh-forum.mse-export-template/export-template new file mode 100644 index 00000000..fe76091f --- /dev/null +++ b/data/yugioh-forum.mse-export-template/export-template @@ -0,0 +1,66 @@ +mse version: 0.3.8 +short name: Forum +full name: Spoiler Exporter +position hint: 002 +icon: icon.png +version: 2009-12-18 +installer group: Yugioh/Export/forum + +depends on: + package: yugioh.mse-game + version: 2007-09-23 + +game: yugioh +file type: *.txt|*.txt|*.*|*.* + +# By Innuendo and Pichoro +# Based on code by Idle Muse, Seeonee + +script: + # filter out everything but stars from the level line + level_star_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:"[0-9]", replace:"")+ + replace@(match:"[a-z]", replace:"")+ + replace@(match:"[A-Z]", replace:"") + # counts stars by breaking them into a list and seeing how long the list is + level_count := { + if not is_monster() then level_star_filter(card.level) + else number_of_items(in: level_star_filter(card.level)) + } + # Checks for each of the sub types + nonmonster_level_filter := { if contains(input, match:"%") then "Continuous" + +if contains(input, match:"!") then "Counter" + +if contains(input, match:"+") then "Equipment" + +if contains(input, match:"&") then "Field" + +if contains(input, match:"$") then "Quick-Play" + +if contains(input, match:"#") then "Ritual" + } + # remove spaces from things + no_spaces := replace@(match:" ", replace:"") + write_monster := { + "\n\n"+card.number+" "+card.name + +"\n"+no_spaces(card.monster_type) + +" | "+to_title(card.attribute) + +" | Level "+level_count() + +" | "+card.attack + +" ATK | "+card.defense + +" DEF\n"+card.rule_text + +(if card.rarity != "common" then "\n"+to_title(card.rarity)) + } + write_nonmonster := { + "\n\n"+card.number+" "+card.name + +"\n"+nonmonster_level_filter(card.level)+(if nonmonster_level_filter(card.level)=="" then "Normal") + +" "+to_title(card.card_type)+"\n" + +card.rule_text + +(if card.rarity != "common" then "\n"+to_title(card.rarity)) + } + write_card := { if is_monster() then write_monster() else write_nonmonster() } + write_cards := to_text(for each card in sort_list(cards, order_by: {card.number}) do write_card()) + to_string(set.title+"\n"+set.description+write_cards) diff --git a/data/yugioh-forum.mse-export-template/icon.png b/data/yugioh-forum.mse-export-template/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9752e08a4cb27bbe304e86d05448da91274b3873 GIT binary patch literal 18172 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