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 00000000..f8155572 Binary files /dev/null and b/data/magic-forum.mse-export-template/icon.png differ 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 00000000..f8155572 Binary files /dev/null and b/data/planechase-forum.mse-export-template/icon.png differ 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 00000000..f8155572 Binary files /dev/null and b/data/vanguard-forum.mse-export-template/icon.png differ 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 00000000..9752e08a Binary files /dev/null and b/data/yugioh-forum.mse-export-template/icon.png differ