diff --git a/data/vs-new.mse-style/style b/data/vs-new.mse-style/style index 533bfd2d..4eba6bd8 100644 --- a/data/vs-new.mse-style/style +++ b/data/vs-new.mse-style/style @@ -207,21 +207,21 @@ card style: z index: 3 ############################# Type Bar type text full: - left: 19 + left: 22 top: 317 - width: { if card.card_type=="planet" then 0 else 339 } + width: { if card.card_type=="planet" then 0 else 332 } height: { if card.card_type=="planet" then 0 else 12 } font: name: BankGothic Md BT size: 8 color: rgb(0,0,0) - visible: { is_character() } - alignment: middle center + visible: { is_character() or is_equipment() } + alignment: middle center shrink-overflow z index: 3 type bar: left: 19 top: 317 - width: { if card.card_type=="planet" then 0 else 339 } + width: { if card.card_type=="planet" then 0 else 338 } height: { if card.card_type=="planet" then 0 else 13 } visible: { card.type_text != "" } render style: image @@ -234,7 +234,7 @@ card style: top : 51 width: 230 height: 18 - alignment: middle center + alignment: middle center shrink-overflow z index: 4 font: name: Percolator Expert TM @@ -321,7 +321,7 @@ card style: left: { if card.card_type=="planet" then 72 else 20 } top : { if card.card_type=="planet" then 123 else 353 } width: { if card.card_type=="planet" then 236 else 335 } - height: { if card.card_type=="planet" then 305 else if card.flavor_text!="" then 80 else 100 } + height: { if card.card_type=="planet" then 305 else if card.flavor_text!="" then 95 else 100 } font: name: Eurostile italic name: EurostileObl-Normal @@ -337,13 +337,13 @@ card style: padding left: 3 padding top: 5 padding right: 2 - padding bottom: 2 + padding bottom: 6 line height hard: 1.4 flavor text: left: 90 - top : 435 + top : 449 width: { if card.card_type=="planet" then 0 else 225 } - height: { if card.card_type=="planet" then 0 else 40 } + height: { if card.card_type=="planet" then 0 else 25 } font: name: EurostileObl-Normal size: 10 @@ -353,7 +353,7 @@ card style: z index: 3 visible: { card.card_type!="planet" } padding left: 2 - padding top: 2 + padding top: 0 padding right: 2 padding bottom: 2 line height hard: 1 diff --git a/data/vs.mse-game/auto_replace b/data/vs.mse-game/auto_replace new file mode 100644 index 00000000..5fa5a29c --- /dev/null +++ b/data/vs.mse-game/auto_replace @@ -0,0 +1,38 @@ + +############################################################## Auto replace +# Do we need categories? +#auto replace category: text box +#auto replace category: copyright +#auto replace category: everywhere +auto replace: + match: (C) + replace: © +auto replace: + match: CR + replace: © +auto replace: + match: AE + replace: Æ + whole word: false +auto replace: + match: TM + replace: ™ + whole word: false +auto replace: + match: -- + replace: — +auto replace: + # note the spaces + match: + - + replace: + — +auto replace: + match: ` + replace: • +auto replace: + match: :: + replace: • +auto replace: + match: @ + replace: @ diff --git a/data/vs.mse-game/card_fields b/data/vs.mse-game/card_fields new file mode 100644 index 00000000..23f607ef --- /dev/null +++ b/data/vs.mse-game/card_fields @@ -0,0 +1,412 @@ + +############################################################## Card fields +############################# Background stuff +card field: + type: choice + name: shape + save value: false + show statistics: false + editable: false + choice: new + choice: old + choice: avatar + choice: alter ego + script: + stylesheet # indicate that this value should be updated when the stylesheet changes + card_shape() # determined by the style +card field: + type: choice + name: card type + choice: characters + choice: + name: visible + choice: character + choice: character dual + choice: character dual (new) + choice: + name: hidden + choice: concealed + choice: concealed dual + choice: concealed dual (new) + choice: + name: concealed-optional + choice: concealed-optional character + choice: concealed-optional dual + choice: concealed-optional dual (new) + choice: + name: equipment + choice: visible equipment + choice: concealed equipment + choice: concealed-optional equipment + choice: location + choice: plot twist + choice: planet + default: card_type() + show statistics: false + description: The frame of the card. +############################# Name line +card field: + type: text + name: name + editable: false + show statistics: false +card field: + type: text + name: identity + editable: false +card field: + type: text + name: full name + script: + combined_editor( + field1: card.name, + separator: name_sep(), + field2: card.identity, + soft_before_empty: false, + hide_when_empty: false, + type_over1: "TM", + type_over2: "@" + ) + identifying: true + show statistics: false + card list visible: true + card list column: 1 + card list width: 200 + description: The name of the card, use @ for a diamond. +card field: + type: text + name: cost + script: only_numbers(value) + icon: stats/cost.png + card list visible: true + card list column: 3 + card list alignment: right + card list width: 37 + card list name: Cost + description: The cost of the card. +############################# Image +card field: + type: image + name: image + show statistics: false +card field: + type: choice + name: card symbol + choice: none + choice: Marvel + choice: DC-new + choice: DC-old + choice: Hellboy + choice: Other... + show statistics: false + default: set.logo + editable: false +card field: + type: choice + name: edition + choice: first edition + editable: false + show statistics: false +############################# Type Bar +card field: + type: text + name: type text + script: to_upper(value) + editable: false +card field: + type: text + name: sub type + script: to_upper(value) + editable: false +card field: + type: text + name: type text full + script: + # Either just type_text, or type_text—sub_type + combined_editor( + field1: card.type_text, + separator: " - ", + field2: card.sub_type, + soft_before_empty: true, + hide_when_empty: true, + type_over1: " -", + type_over2: "-" + ) + description: The type of the card +card field: + type: choice + name: type bar + choice: type bar + editable: false + show statistics: false +############################# Version +card field: + type: text + name: version + script: to_lower(value) + editable: false + show statistics: false +card field: + type: text + name: team affiliation + script: to_lower(value) + editable: false +card field: + type: text + name: version full + script: + # Either just version, or version • team_affiliation + combined_editor( + field1: card.version, + separator: " • ", + field2: card.team_affiliation, + soft_before_empty: true, + hide_when_empty: true, + type_over1: " `" + ) + card list visible: true + card list column: 2 + show statistics: false + description: The version of the card. +############################# Card ID +card field: + type: text + name: number + save value: false + script: + if pos_of_card()<=9 then "00" + pos_of_card(value) else + if pos_of_card()>=9 and pos_of_card()<=99 then "0" + pos_of_card(value) else + "" + pos_of_card(value) + card list visible: true + card list column: 6 + card list width: 55 + card list name: # + card list alignment: right + editable: false + show statistics: false +card field: + type: text + name: number text + script: to_upper(value) + default: set.code + "-" + card.number + editable: false + show statistics: false +card field: + type: text + name: number line + save value: false + show statistics: false + script: + if set.automatic_card_numbers then + combined_editor(field1: set.code, separator: "-", field2: card.number) + else + forward_editor(field: card.number_text) + description: Copyright of this card and cardnumber, the default value can be changed on the 'set info' tab +card field: + type: text + name: promo outliner + save value: false + show statistics: false + editable: false + default: card.number_line +card field: + type: text + name: promo outliner 2 + save value: false + show statistics: false + editable: false + default: card.number_line +card field: + type: choice + name: rarity + choice: common + choice: uncommon + choice: rare + choice: promo + default: set.set_rarity + icon: stats/rarity.png + description: The rarity of the card. +############################# Affiliation +card field: + type: text + name: separator + script: separator_type(team2: card.team_2_of_2) + editable: false + show statistics: false +card field: + type: text + name: team + script: affiliation_1_filter(if contains(card.shape, match: "old") then (value) else to_upper(value)) + editable: false + show statistics: false +card field: + type: text + name: team 2 of 2 + script: affiliation_2_filter(if contains(card.shape, match: "old") then (value) else to_upper(value)) + editable: false + show statistics: false +card field: + type: text + name: team full + script: + # Either just team, or team • team 2 of 2 + combined_editor( + field1: card.team, + separator: card.separator, + field2: card.team_2_of_2, + soft_before_empty: true, + hide_when_empty: true + ) + description: The team of the card, use ` for a separator for dual cards +card field: + type: text + name: separator 2 + script: separator_type(team2: card.team_2_of_2_2) + editable: false + show statistics: false +card field: + type: text + name: team 2 + script: affiliation_1_filter(if contains(card.shape, match: "old") then (value) else to_upper(value)) + editable: false + show statistics: false +card field: + type: text + name: team 2 of 2 2 + script: affiliation_2_filter(if contains(card.shape, match: "old") then (value) else to_upper(value)) + editable: false + show statistics: false +card field: + type: text + name: team 2 full + script: + # Either just team, or team 2 • team 2 of 2 2 + combined_editor( + field1: card.team_2, + separator: card.separator, + field2: card.team_2_of_2_2, + soft_before_empty: true, + hide_when_empty: true, + type_over1: " `" + ) + description: The second affiliation of the card (for dual cards) +############################# FlightRange +card field: + type: multiple choice + name: symbols + icon: stats/symbols.png + choice: flight + choice: range + choice: ongoing + default: symbol_default() + description: Symbols for this card (flight/range/ongoing), multiple symbols can be selected + show statistics: false +############################# Text box +card field: + type: text + name: rule text + show statistics: false + multi line: true + script: text_filter(value) + description: Rule text of the card, use @ for a diamond, -> for an arrow +card field: + type: text + name: flavor text + show statistics: false + multi line: true + description: Flavor text of the card. +card field: + type: choice + name: watermark + include file: /vs-common.mse-include/watermark-names + editable: false + description: The Watermark for this set. +############################# Atack / Defense +card field: + type: text + name: attack + script: only_numbers(value) + icon: stats/attack.png + save value: true + card list visible: true + card list column: 4 + card list width: 33 + card list name: ATK + card list alignment: right + description: The attack of the card. +card field: + type: text + name: defence + script: only_numbers(value) + icon: stats/defence.png + save value: true + card list visible: true + card list column: 5 + card list width: 33 + card list name: DEF + card list alignment: right + description: The defence of the card. +############################# Copyright stuff +card field: + type: text + name: illustrator + default: set.artist + icon: stats/illustrator.png + description: The artist for the card. +card field: + type: text + name: copyright + default: set.copyright + multi line: true + show statistics: false + description: The copyright line of the card. +############################################### +########################### For New style cards +card field: + type: choice + name: playarea + choice: none + choice: visible + choice: concealed + choice: both + initial: visible + script: + if is_concealed_optional() then "both" + else if is_concealed() then "concealed" + else "visible" + editable: false + show statistics: false + save value: true +card field: + type: choice + name: flightrange + choice: none + choice: flight + choice: range + choice: both + initial: none + show statistics: false + save value: true + description: Flight and range icons for the card. +card field: + type: choice + name: ongoing + choice: none + choice: ongoing + initial: none + script: ongoing_detect() + description: Ongoing icons for the card. +card field: + type: choice + name: affiliation + editable: false + initial: none + include file: /vs-common.mse-include/watermark-names + description: First affiliation icon for the card. +card field: + type: choice + name: affiliation2 + editable: false + initial: none + include file: /vs-common.mse-include/dual-affiliation + description: Second affiliation icon for the card. diff --git a/data/vs.mse-game/game b/data/vs.mse-game/game index affcd12d..bfdf379b 100644 --- a/data/vs.mse-game/game +++ b/data/vs.mse-game/game @@ -10,1240 +10,18 @@ depends on: package: vs-common.mse-include version: 2008-09-23 ############ some scripts copied and altered from magic.mse-game -############################################################## Functions & filters -# General functions -init script: - ############### Sorting - sort_index := { - if contains(card.team, match: "") then "2" - else if contains(card.team, match: "EQUIPMENT") then "3" - else if contains(card.team, match: "Equipment") then "3" - else if contains(card.team, match: "LOCATION") then "4" - else if contains(card.team, match: "Location") then "4" - else if contains(card.team, match: "PLOT TWIST") then "5" - else if contains(card.team, match: "Plot Twist") then "5" - else if contains(card.team, match: "Planet") then "6" - else if contains(card.team, match: "PLANET") then "6" - else "1" - } - extensive_sort := { - card.team + card.team_2_of_2 + card.team_2 + card.team_2_of_2_2 + card.name + card.version + " • " + card.team_affiliation - } - rarity_sort := { - if contains(card.shape, match: "old") then "B" - else if contains(card.shape, match: "avatar") then "C" - else if contains(card.shape, match: "alter ego") then "D" - else "A" - } - sort_name := - replace@(match: "^(The|An?) ", replace: "") + - to_lower - - ############### Determine Card Position - pos_of_card := { - position( - of: card - in: set - order_by: { rarity_sort() + sort_index() + extensive_sort() + sort_name(card.name) } - ) + 1 - } - - ############################################################## Text Filters - card_shape := { "new" } - # - adds all symbols - # - bolds keywords - # - makes text in parentheses italic - text_filter := - # step 1 : Remove all automatic tags - tag_remove_rule(tag: "") + - tag_remove_rule(tag: "") + - tag_remove_rule(tag: "") + - # step 2 : Reminder text for keywords - expand_keywords@( - condition: { - correct_case - } - default_expand: { - chosen(choice:if correct_case then mode else "lower case", set.automatic_reminder_text) - }, - combine: { "{keyword} ({process_english_hints(reminder)})" } - ) + - # step 3 : Expand shortcut words ~ and CARDNAME - replace_rule( - match: "~|~THIS~|CARDNAME", - in_context: "(^|[[:space:]])", - replace: "&" - ) + - # step 4 : Fill in atom fields - tag_contents_rule( - tag: "", - contents: { if card.name=="" then "CARDNAME" else card.name } - ) + - # step 5a: add arrow & diamond symbols - replace_rule( - match: "->|>>>|@|<>|•", - replace: "&") + - #X#if contains(card.shape, match:"old") then symbol_filter else new_symbols - # step 7a : Bold keywords without reminder text - replace_rule( - match: "]*>[^<]+", - replace: "&") + - # step 7b : Bold keywords with reminder text - replace_rule( - match: "]*>[^<]+", - replace: "&") + - # step 8 : Italic reminder text - replace_rule( - match: "[(][^)\n]*[)]?", - in_context: "(^|[[:space:]])|", - replace: "&") - - ############### Word List Scripts for Affiliations and Card Types - type_over_list := replace_rule(match:" ?-$", replace:"") - - affiliation_1_filter := - tag_remove_rule(tag: "{input}" } - - space_to_wltags := replace_rule(match:"( +| )", - replace:{"{_1}"}) - - affiliation_2_filter := - tag_remove_rule(tag: "{input}" } - - ############### Determine type of card - c_optional_character := filter_rule(match: "Concealed—Optional") - concealed_character := filter_rule(match: "Concealed") - keyword_sort_equipment := filter_rule(match: "Transferable") - keyword_sort_location := filter_rule(match: "Terraform") - keyword_sort_plot_twist := filter_rule(match: "Ongoing:") - card_type := { - if contains(card.team, match: "Location") then "location" - else if contains(card.team, match: "LOCATION") then "location" - else if keyword_sort_location(card.rule_text) != "" then "location" - else if contains(card.team, match: "Planet") then "planet" - else if contains(card.team, match: "PLANET") then "planet" - else if contains(card.team, match: "Equipment") then "equipment visible equipment" - else if contains(card.team, match: "EQUIPMENT") then "equipment visible equipment" - else if keyword_sort_equipment(card.rule_text) != "" then "equipment visible equipment" - else if contains(card.team, match: "Plot Twist") then "plot twist" - else if contains(card.team, match: "PLOT TWIST") then "plot twist" - else if keyword_sort_plot_twist(card.rule_text) != "" then "plot twist" - else if card.symbols == "ongoing" then "plot twist" - else if c_optional_character(card.rule_text) != "" then "characters concealed-optional concealed-optional character" - else if concealed_character(card.rule_text) != "" then "characters hidden concealed" - else "characters visible character" - } - # Default symbols - flightrange_detect := { if card.flightrange == "flight" then "flight" - else if card.flightrange == "range" then "range" - else if card.flightrange == "both" then "flight, range" - else "" - } - ongoing_detect := { - if keyword_sort_plot_twist(card.rule_text) != "" then "ongoing" - else "" - } - symbol_default := { flightrange_detect() + (if flightrange_detect() != "" then ", " else " ") + ongoing_detect() } +############################################################## The script - # Default 'team' name of card - team := { - if is_location() then "Location" - else if is_equipment() then "Equipment" - else if is_plot_twist() then "Plot Twist" - else "" - } - true_pass := { - if is_character() then false else true - } - - ############### Type of card - - is_dual := { - card.card_type == "characters visible character dual" or - card.card_type == "characters hidden concealed dual" or - card.card_type == "characters concealed-optional concealed-optional dual" - } - is_new_dual := { - card.card_type == "characters visible character dual (new)" or - card.card_type == "characters hidden concealed dual (new)" or - card.card_type == "characters concealed-optional concealed-optional dual (new)" - } - is_not_new_dual := { - card.card_type == "characters visible character" or - card.card_type == "characters visible character dual" or - card.card_type == "characters hidden character concealed" or - card.card_type == "characters hidden character concealed dual" or - card.card_type == "characters concealed-optional concealed-optional character" or - card.card_type == "characters concealed-optional concealed-optional dual" - } - is_character := { contains(card.card_type, match: "characters") - } - is_concealed_optional := { contains(card.card_type, match: "concealed-optional") or - contains(card.rule_text, match: "Concealed—Optional") - } - is_concealed := { contains(card.card_type, match: "hidden") or - contains(card.rule_text, match: "Concealed") - } - is_equipment := { contains(card.card_type, match: "equipment") - } - is_location := { - card.card_type == "location" - } - is_plot_twist := { - card.card_type == "plot twist" - } - is_ch_or_eq := { - is_character() or is_equipment() - } - is_ch_or_pt := { - is_character() or is_plot_twist() - } - ############### Watermark Scripts - - watermark_narrow := { - card.watermark == "Marvel A-C Brood" or - card.watermark == "Marvel A-C Brotherhood" or - card.watermark == "Marvel D-H Hellfire Club" or - card.watermark == "DC A-C Anti-Matter" or - card.watermark == "DC A-C Arkham Inmates" or - card.watermark == "DC N-S Shadowpact" - } - watermark_wide := { - card.watermark == "Marvel D-H Horsemen of Apocalypse" or - card.watermark == "DC I-M JLA" or - card.watermark == "DC I-M JSA" - } +init script: include file: script - ############### Additional Scripts - - only_numbers := filter_text@(match: "^[0123456789]+") +############################################################## Lots of lists - word_count := break_text@(match:"[^[:space:]]+") + length - - name_sep := { - if contains(set.logo, match: "Marvel") then ( - if is_character() and card.identity=="" then "™" - else if is_character() and card.identity!="" then "™ " - else if is_equipment() and card.identity=="" then " " - else if is_equipment() and card.identity!="" then " " - else "" - ) - else if is_character() and card.identity=="" then " " - else if is_character() and card.identity!="" then " " - else if is_equipment() and card.identity=="" then " " - else if is_equipment() and card.identity!="" then " " - else "" - } - - separator_type := { - if contains(card.shape, match:"old") then ( - if team2 != "" then " " - else " " - ) - else " • " - } - - only_first := replace@(match:"card.team", replace:"") - - all_affiliations := { - for each card in set do - if is_character() then "," + only_first(to_text(card.team)) - } - -############################################################## Set fields -set field: - type: info - name: Set Information -set field: - type: text - name: title - description: This information will not appear on the card. -set field: - type: text - name: description - multi line: true - description: This information will not appear on the card. -set field: - type: info - name: Set Logo Options -set field: - type: choice - name: logo - choice: none - choice: Marvel - choice: DC-new - choice: DC-old - choice: Hellboy - choice: Other... - initial: none - save value: true - description: The logo for the company. -set field: - type: image - name: custom logo - save value: true - description: This is where you load custom logos that will appear on all your cards. -set field: - type: info - name: Other Default Options -set field: - type: text - name: code - description: Recommended only 3 Capital digits. Will appear before card number. ex: MOR-1 -set field: - type: text - name: artist - description: Editting this will set 1 artist for all the cards and will appear in the illustrator area. -set field: - type: text - name: copyright - description: Copytight information. This information will appear in the copyright area on the card. -set field: - type: choice - name: set rarity - choice: common - choice: uncommon - choice: rare - choice: promo - initial: none - description: Set the rarity for all cards in the set. -set field: - type: multiple choice - name: automatic reminder text - choice: real - choice: custom - initial: custom - # Convert from older mse versions - script: - if value = "yes" then "real, custom" - else if value = "no" then "" - else value - description: For which kinds of keywords should reminder text be added by default? Note: you can enable/disable reminder text by right clicking the keyword. -set field: - type: boolean - name: automatic card numbers - initial: yes - description: Should card numbers be shown on the cards? -############################# Default style -default set style: - title: - padding left: 2 - font: - size: 14 - logo: - font: - size: 16 - render style: both - choice images: - Marvel: /vs-common.mse-include/marvel.png - DC-new: /vs-common.mse-include/dcnew.png - DC-old: /vs-common.mse-include/dcold.png - Hellboy: /vs-common.mse-include/hellboy.png - Other...: /vs-common.mse-include/other.png - custom logo: - width: 30 - height: 30 - title: - padding left: 2 - font: - size: 16 - automatic reminder text: - render style: checklist - direction: vertical -############################################################## Card fields -############################# Background stuff -card field: - type: choice - name: shape - save value: false - show statistics: false - editable: false - choice: new - choice: old - choice: avatar - choice: alter ego - script: - stylesheet # indicate that this value should be updated when the stylesheet changes - card_shape() # determined by the style -card field: - type: choice - name: card type - choice: characters - choice: - name: visible - choice: character - choice: character dual - choice: character dual (new) - choice: - name: hidden - choice: concealed - choice: concealed dual - choice: concealed dual (new) - choice: - name: concealed-optional - choice: concealed-optional character - choice: concealed-optional dual - choice: concealed-optional dual (new) - choice: - name: equipment - choice: visible equipment - choice: concealed equipment - choice: concealed-optional equipment - choice: location - choice: plot twist - choice: planet - default: card_type() - show statistics: false - description: The frame of the card. -############################# Name line -card field: - type: text - name: name - editable: false - show statistics: false -card field: - type: text - name: identity - editable: false -card field: - type: text - name: full name - script: - combined_editor( - field1: card.name, - separator: name_sep(), - field2: card.identity, - soft_before_empty: false, - hide_when_empty: false, - type_over1: "TM", - type_over2: "@" - ) - identifying: true - show statistics: false - card list visible: true - card list column: 1 - card list width: 200 - description: The name of the card, use @ for a diamond. -card field: - type: text - name: cost - script: only_numbers(value) - icon: stats/cost.png - card list visible: true - card list column: 3 - card list alignment: right - card list width: 37 - card list name: Cost - description: The cost of the card. -############################# Image -card field: - type: image - name: image - show statistics: false -card field: - type: choice - name: card symbol - choice: none - choice: Marvel - choice: DC-new - choice: DC-old - choice: Hellboy - choice: Other... - show statistics: false - default: set.logo - editable: false -card field: - type: choice - name: edition - choice: first edition - editable: false - show statistics: false -############################# Type Bar -card field: - type: text - name: type text - script: to_upper(value) - editable: false -card field: - type: text - name: sub type - script: to_upper(value) - editable: false -card field: - type: text - name: type text full - script: - # Either just type_text, or type_text—sub_type - combined_editor( - field1: card.type_text, - separator: " - ", - field2: card.sub_type, - soft_before_empty: true, - hide_when_empty: true, - type_over1: " -", - type_over2: "-" - ) - description: The type of the card -card field: - type: choice - name: type bar - choice: type bar - editable: false - show statistics: false -############################# Version -card field: - type: text - name: version - script: to_lower(value) - editable: false - show statistics: false -card field: - type: text - name: team affiliation - script: to_lower(value) - editable: false -card field: - type: text - name: version full - script: - # Either just version, or version • team_affiliation - combined_editor( - field1: card.version, - separator: " • ", - field2: card.team_affiliation, - soft_before_empty: true, - hide_when_empty: true, - type_over1: " `" - ) - card list visible: true - card list column: 2 - show statistics: false - description: The version of the card. -############################# Card ID -card field: - type: text - name: number - save value: false - script: - if pos_of_card()<=9 then "00" + pos_of_card(value) else - if pos_of_card()>=9 and pos_of_card()<=99 then "0" + pos_of_card(value) else - "" + pos_of_card(value) - card list visible: true - card list column: 6 - card list width: 55 - card list name: # - card list alignment: right - editable: false - show statistics: false -card field: - type: text - name: number text - script: to_upper(value) - default: set.code + "-" + card.number - editable: false - show statistics: false -card field: - type: text - name: number line - save value: false - show statistics: false - script: - if set.automatic_card_numbers then - combined_editor(field1: set.code, separator: "-", field2: card.number) - else - forward_editor(field: card.number_text) - description: Copyright of this card and cardnumber, the default value can be changed on the 'set info' tab -card field: - type: text - name: promo outliner - save value: false - show statistics: false - editable: false - default: card.number_line -card field: - type: text - name: promo outliner 2 - save value: false - show statistics: false - editable: false - default: card.number_line -card field: - type: choice - name: rarity - choice: common - choice: uncommon - choice: rare - choice: promo - default: set.set_rarity - icon: stats/rarity.png - description: The rarity of the card. -############################# Affiliation -card field: - type: text - name: separator - script: separator_type(team2: card.team_2_of_2) - editable: false - show statistics: false -card field: - type: text - name: team - script: affiliation_1_filter(if contains(card.shape, match: "old") then (value) else to_upper(value)) - editable: false - show statistics: false -card field: - type: text - name: team 2 of 2 - script: affiliation_2_filter(if contains(card.shape, match: "old") then (value) else to_upper(value)) - editable: false - show statistics: false -card field: - type: text - name: team full - script: - # Either just team, or team • team 2 of 2 - combined_editor( - field1: card.team, - separator: card.separator, - field2: card.team_2_of_2, - soft_before_empty: true, - hide_when_empty: true - ) - description: The team of the card, use ` for a separator for dual cards -card field: - type: text - name: separator 2 - script: separator_type(team2: card.team_2_of_2_2) - editable: false - show statistics: false -card field: - type: text - name: team 2 - script: affiliation_1_filter(if contains(card.shape, match: "old") then (value) else to_upper(value)) - editable: false - show statistics: false -card field: - type: text - name: team 2 of 2 2 - script: affiliation_2_filter(if contains(card.shape, match: "old") then (value) else to_upper(value)) - editable: false - show statistics: false -card field: - type: text - name: team 2 full - script: - # Either just team, or team 2 • team 2 of 2 2 - combined_editor( - field1: card.team_2, - separator: card.separator, - field2: card.team_2_of_2_2, - soft_before_empty: true, - hide_when_empty: true, - type_over1: " `" - ) - description: The second affiliation of the card (for dual cards) -############################# FlightRange -card field: - type: multiple choice - name: symbols - icon: stats/symbols.png - choice: flight - choice: range - choice: ongoing - default: symbol_default() - description: Symbols for this card (flight/range/ongoing), multiple symbols can be selected - show statistics: false -############################# Text box -card field: - type: text - name: rule text - show statistics: false - multi line: true - script: text_filter(value) - description: Rule text of the card, use @ for a diamond, -> for an arrow -card field: - type: text - name: flavor text - show statistics: false - multi line: true - description: Flavor text of the card. -card field: - type: choice - name: watermark - include file: /vs-common.mse-include/watermark-names - editable: false - description: The Watermark for this set. -############################# Atack / Defense -card field: - type: text - name: attack - script: only_numbers(value) - icon: stats/attack.png - save value: true - card list visible: true - card list column: 4 - card list width: 33 - card list name: ATK - card list alignment: right - description: The attack of the card. -card field: - type: text - name: defence - script: only_numbers(value) - icon: stats/defence.png - save value: true - card list visible: true - card list column: 5 - card list width: 33 - card list name: DEF - card list alignment: right - description: The defence of the card. -############################# Copyright stuff -card field: - type: text - name: illustrator - default: set.artist - icon: stats/illustrator.png - description: The artist for the card. -card field: - type: text - name: copyright - default: set.copyright - multi line: true - show statistics: false - description: The copyright line of the card. -############################################### -########################### For New style cards -card field: - type: choice - name: playarea - choice: none - choice: visible - choice: concealed - choice: both - initial: visible - script: - if is_concealed_optional() then "both" - else if is_concealed() then "concealed" - else "visible" - editable: false - show statistics: false - save value: true -card field: - type: choice - name: flightrange - choice: none - choice: flight - choice: range - choice: both - initial: none - show statistics: false - save value: true - description: Flight and range icons for the card. -card field: - type: choice - name: ongoing - choice: none - choice: ongoing - initial: none - script: ongoing_detect() - description: Ongoing icons for the card. -card field: - type: choice - name: affiliation - editable: false - initial: none - include file: /vs-common.mse-include/watermark-names - description: First affiliation icon for the card. -card field: - type: choice - name: affiliation2 - editable: false - initial: none - include file: /vs-common.mse-include/dual-affiliation - description: Second affiliation icon for the card. -############################################################# Extra Statistics -statistics dimension: - name: keywords - position hint: 1000 - script: keyword_usage(unique:true) - show empty: false - split list: true - icon: stats/keywords.png -statistics dimension: - name: style - position hint: 1001 - script: stylesheet.short_name - icon: stats/stylesheet.png -statistics dimension: - name: text length (words) - position hint: 100 - script: word_count(to_text(card.rule_text)) - numeric: true - bin size: 5 - icon: stats/text_length.png -############################################################## Auto replace -# Do we need categories? -#auto replace category: text box -#auto replace category: copyright -#auto replace category: everywhere -auto replace: - match: (C) - replace: © -auto replace: - match: CR - replace: © -auto replace: - match: AE - replace: Æ - whole word: false -auto replace: - match: TM - replace: ™ - whole word: false -auto replace: - match: -- - replace: — -auto replace: - # note the spaces - match: - - - replace: - — -auto replace: - match: ` - replace: • -auto replace: - match: :: - replace: • -auto replace: - match: @ - replace: @ -############################################################## Word lists +include file: card_fields +include file: set_fields +include file: statistics +include file: packs +include file: keywords +include file: word_lists +include file: auto_replace -word list: - name: affiliation1 - word: - name: DC - word: - name: A-E - word: Anti-Matter - word: Arkham Inmates - word: Birds of Prey - word: Checkmate - word: Crisis - word: Darkseid's Elite - word: Deathstroke - word: Doom Patrol - word: Emerald Enemies - word: - name: F-J - word: Fearsome Five - word: Future Foes - word: Gotham Knights - word: Green Lantern - word: Injustice Gang - word: JLA - word: JLI - word: JSA - word: - name: K-O - word: League of Assassins - word: Legionnaires - word: Manhunters - word: New Gods - word: Outsiders - word: - name: P-T - word: Rann - word: Revenge Squad - word: Secret Six - word: Shadowpact - word: Speed Force - word: Squadron Supreme - word: Team Superman - word: Teen Titans - word: Thanagar - word: - name: U-Z - word: Villains United - word: - name: Marvel - word: - name: A-E - word: Alpha Flight - word: Asgardians - word: Atlantis - word: Avengers - word: Crime Lords - word: Defenders - word: Doom - word: - name: F-J - word: Fantastic Four - word: Heralds of Galactus - word: Heroes of Earth - word: Hellfire Club - word: Horsemen of Apocalypse - word: Infinity Watch - word: Inhumans - word: Invaders - word: - name: K-O - word: Kang Council - word: Kree - word: Marvel Defenders - word: Marvel Knights - word: Masters of Evil - word: Morlocks - word: Negative Zone - word: Nextwave - word: Nova Corps - word: - name: P-T - word: Phalanx - word: Sentinels - word: The Shi'ar - word: SHIELD - word: Sinister Syndicate - word: Skrull - word: Spider-Friends - word: Thunderbolts - word: - name: U-Z - word: Underworld - word: United Front - word: Villains of Earth - word: X-Men - word: X-Statix - word: Warbound - word: Weapon X - word: Wild Pack - word: - name: Other - word: B.P.R.D. - word: Thule Society - word: Equipment - word: Location - word: Plot Twist - word: Planet - word: - name: Your Affiliations - word: - script: all_affiliations() - line below: true -word list: - name: affiliation2 - word: - name: DC - word: - name: A-E - word: Anti-Matter - word: Arkham Inmates - word: Birds of Prey - word: Checkmate - word: Crisis - word: Darkseid's Elite - word: Deathstroke - word: Doom Patrol - word: Emerald Enemies - word: - name: F-J - word: Fearsome Five - word: Future Foes - word: Gotham Knights - word: Green Lantern - word: Injustice Gang - word: JLA - word: JLI - word: JSA - word: - name: K-O - word: League of Assassins - word: Legionnaires - word: Manhunters - word: New Gods - word: Outsiders - word: - name: P-T - word: Rann - word: Revenge Squad - word: Secret Six - word: Shadowpact - word: Speed Force - word: Squadron Supreme - word: Team Superman - word: Teen Titans - word: Thanagar - word: - name: U-Z - word: Villains United - word: - name: Marvel - word: - name: A-E - word: Alpha Flight - word: Asgardians - word: Atlantis - word: Avengers - word: Crime Lords - word: Defenders - word: Doom - word: - name: F-J - word: Fantastic Four - word: Heralds of Galactus - word: Heroes of Earth - word: Hellfire Club - word: Horsemen of Apocalypse - word: Infinity Watch - word: Inhumans - word: Invaders - word: - name: K-O - word: Kang Council - word: Kree - word: Marvel Defenders - word: Marvel Knights - word: Masters of Evil - word: Morlocks - word: Negative Zone - word: Nextwave - word: Nova Corps - word: - name: P-T - word: Phalanx - word: Sentinels - word: The Shi'ar - word: SHIELD - word: Sinister Syndicate - word: Skrull - word: Spider-Friends - word: Thunderbolts - word: - name: U-Z - word: Underworld - word: United Front - word: Villains of Earth - word: X-Men - word: X-Statix - word: Warbound - word: Weapon X - word: Wild Pack - word: - name: Other - word: B.P.R.D. - word: Thule Society - word: Equipment - word: Location - word: Plot Twist - word: Planet - word: - name: Your Affiliations - word: - script: all_affiliations() - line below: true -############################################################## Card pack items -pack item: - name: rare - filter: card.rarity == "rare" -pack item: - name: uncommon - filter: card.rarity == "uncommon" -pack item: - name: common - filter: card.rarity == "common" -pack item: - name: promo - filter: card.rarity == "promo" -pack item: - name: random non-rare foil - filter: card.rarity == "common" or card.rarity == "uncommon" -############################################################## Card packs -pack type: - name: booster pack - item: - name: rare - amount: 1 - item: - name: uncommon - amount: 3 - item: - name: common - amount: 9 - item: - name: random non-rare foil - amount: 1 -pack type: - name: additional promo - item: - name: promo -pack type: - name: additional rare - item: - name: rare -pack type: - name: additional uncommon - item: - name: uncommon -pack type: - name: additional common - item: - name: common -pack type: - name: additional random non-rare foil - item: - name: random non-rare foil -############################################################## Keywords -############################# Keyword rules - -has keywords: true - -keyword match script: text_filter(value) - -keyword mode: - is default: true - name: custom - description: Custom keywords. -keyword mode: - name: real - description: Actual keywords. - -keyword parameter type: - name: number - match: [0-9XYZ?!]+ -keyword parameter type: - name: action - match: - [^ - (.,]+ -keyword parameter type: - name: name - match: - [^ - (.,]+ - -############################# All VS System keywords -keyword: - keyword: Concealed—Optional - match: Concealed—Optional - mode: real - reminder: This card may come into play in the hidden area. -keyword: - keyword: Concealed - match: Concealed - mode: real - reminder: This card comes into play in the hidden area. -keyword: - keyword: Loyalty—Reveal - match: Loyalty—Reveal - mode: real - reminder: If you don’t control a character that shares an affiliation with this character, then as an additional cost to recruit this character, reveal a character card from your hand or resource row that shares an affiliation with this character. -keyword: - keyword: Loyalty - match: Loyalty - mode: real - reminder: Recruit this character only if you control a character that shares at least one team affiliation with this character. -keyword: - keyword: Evasion - match: Evasion - mode: real - reminder: Stun this character -> Recover this character at the start of the recovery phase this turn. -keyword: - keyword: Invulnerability - match: Invulnerability - mode: real - reminder: Whenever this character becomes stunned, you do not take stun damage. Breakthrough is applied normally. -keyword: - keyword: Cosmic—Surge: - match: Cosmic—Surge: action - mode: real - reminder: This character does not come into play with a cosmic counter. At the start of the recovery phase each turn, put a cosmic counter on this character. -keyword: - keyword: Cosmic: - match: Cosmic: action - mode: real - reminder: This character comes into play with a cosmic counter on it. While this character has a cosmic counter on it, it has this ability in addition to any other text it has. -keyword: - keyword: Cosmic - match: Cosmic - mode: real - reminder: This character comes into play with a cosmic counter on it. -keyword: - keyword: Boost - match: Boost number - mode: real - reminder: As an additional cost to play this card, you may pay its boost cost. If you pay, this card has this this this ability in addition to any other text it has this turn. -keyword: - keyword: Willpower - match: Willpower number - mode: real - reminder: This character has willpower equal to . -keyword: - keyword: Leader: - match: Leader: action - mode: real - reminder: The designated characters are affected by this text. -keyword: - keyword: Ally: - match: Ally: action - mode: real - reminder: This character's ally power is activated whenever a character becomes powered-up. -keyword: - keyword: Unique - match: Unique - mode: real - reminder: You may only have one copy of this card in play at a time. -keyword: - keyword: Ongoing: - match: Ongoing action - mode: real - reminder: As long as this card remains face-up in your resource row, this text is active. -keyword: - keyword: Reservist - match: Reservist - mode: real - reminder: You may recruit this card from your resource row. If you do, you may put a card from your hand face down into your resource row. -keyword: - keyword: Press - match: Press - mode: real - reminder: When you recruit this card, your next character costs 1 less to recruit this turn for each press card you recruited this turn, but no less than 1. -keyword: - keyword: Terraform - match: Terraform - mode: real - reminder: Reveal this card -> You may return a face-down resource you control to its owner's hand. If you do, put this card face-down into your resource row. Use this power only if this card is in your hand and only during your recruit step. -keyword: - keyword: Transferable - match: Transferable - mode: real - reminder: At the start of the formation step, you may transfer this card. -keyword: - keyword: Vengeance: - match: Vengeance: action - mode: real - reminder: This ability is activated whenever this character is stunned. -keyword: - keyword: Backup: - match: Backup: action - mode: real - reminder: This ability can only be used during the build phase. -keyword: - keyword: Dual Loyalty - match: Dual Loyalty - mode: real - reminder: Recruit this card only if both its printed affiliations are among the affiliations of characters you control. -keyword: - keyword: Substitute - match: Substitute - mode: real - reminder: Reveal this card -> You may remove from the game a ready character you control with cost greater than or equal to the cost of this card. If you do, put this card into play. Use only if this card is in your hand and only during your recruit step." -keyword: - keyword: Insanity: - match: Insanity: action - mode: real - reminder: You may not have more than one copy of this card in your deck. +############################################################## Other stuff \ No newline at end of file diff --git a/data/vs.mse-game/keywords b/data/vs.mse-game/keywords new file mode 100644 index 00000000..167e6b03 --- /dev/null +++ b/data/vs.mse-game/keywords @@ -0,0 +1,150 @@ +############################################################## Keywords +############################# Keyword rules + +has keywords: true + +keyword match script: text_filter(value) + +keyword mode: + is default: true + name: custom + description: Custom keywords. +keyword mode: + name: real + description: Actual keywords. + +keyword parameter type: + name: number + match: [0-9XYZ?!]+ +keyword parameter type: + name: action + match: + [^ + (.,]+ +keyword parameter type: + name: name + match: + [^ + (.,]+ + +############################# All VS System keywords +keyword: + keyword: Concealed—Optional + match: Concealed—Optional + mode: real + reminder: This card may come into play in the hidden area. +keyword: + keyword: Concealed + match: Concealed + mode: real + reminder: This card comes into play in the hidden area. +keyword: + keyword: Loyalty—Reveal + match: Loyalty—Reveal + mode: real + reminder: If you don’t control a character that shares an affiliation with this character, then as an additional cost to recruit this character, reveal a character card from your hand or resource row that shares an affiliation with this character. +keyword: + keyword: Loyalty + match: Loyalty + mode: real + reminder: Recruit this character only if you control a character that shares at least one team affiliation with this character. +keyword: + keyword: Evasion + match: Evasion + mode: real + reminder: Stun this character -> Recover this character at the start of the recovery phase this turn. +keyword: + keyword: Invulnerability + match: Invulnerability + mode: real + reminder: Whenever this character becomes stunned, you do not take stun damage. Breakthrough is applied normally. +keyword: + keyword: Cosmic—Surge: + match: Cosmic—Surge: action + mode: real + reminder: This character does not come into play with a cosmic counter. At the start of the recovery phase each turn, put a cosmic counter on this character. +keyword: + keyword: Cosmic: + match: Cosmic: action + mode: real + reminder: This character comes into play with a cosmic counter on it. While this character has a cosmic counter on it, it has this ability in addition to any other text it has. +keyword: + keyword: Cosmic + match: Cosmic + mode: real + reminder: This character comes into play with a cosmic counter on it. +keyword: + keyword: Boost + match: Boost number + mode: real + reminder: As an additional cost to play this card, you may pay its boost cost. If you pay, this card has this this this ability in addition to any other text it has this turn. +keyword: + keyword: Willpower + match: Willpower number + mode: real + reminder: This character has willpower equal to . +keyword: + keyword: Leader: + match: Leader: action + mode: real + reminder: The designated characters are affected by this text. +keyword: + keyword: Ally: + match: Ally: action + mode: real + reminder: This character's ally power is activated whenever a character becomes powered-up. +keyword: + keyword: Unique + match: Unique + mode: real + reminder: You may only have one copy of this card in play at a time. +keyword: + keyword: Ongoing: + match: Ongoing action + mode: real + reminder: As long as this card remains face-up in your resource row, this text is active. +keyword: + keyword: Reservist + match: Reservist + mode: real + reminder: You may recruit this card from your resource row. If you do, you may put a card from your hand face down into your resource row. +keyword: + keyword: Press + match: Press + mode: real + reminder: When you recruit this card, your next character costs 1 less to recruit this turn for each press card you recruited this turn, but no less than 1. +keyword: + keyword: Terraform + match: Terraform + mode: real + reminder: Reveal this card -> You may return a face-down resource you control to its owner's hand. If you do, put this card face-down into your resource row. Use this power only if this card is in your hand and only during your recruit step. +keyword: + keyword: Transferable + match: Transferable + mode: real + reminder: At the start of the formation step, you may transfer this card. +keyword: + keyword: Vengeance: + match: Vengeance: action + mode: real + reminder: This ability is activated whenever this character is stunned. +keyword: + keyword: Backup: + match: Backup: action + mode: real + reminder: This ability can only be used during the build phase. +keyword: + keyword: Dual Loyalty + match: Dual Loyalty + mode: real + reminder: Recruit this card only if both its printed affiliations are among the affiliations of characters you control. +keyword: + keyword: Substitute + match: Substitute + mode: real + reminder: Reveal this card -> You may remove from the game a ready character you control with cost greater than or equal to the cost of this card. If you do, put this card into play. Use only if this card is in your hand and only during your recruit step." +keyword: + keyword: Insanity: + match: Insanity: action + mode: real + reminder: You may not have more than one copy of this card in your deck. diff --git a/data/vs.mse-game/packs b/data/vs.mse-game/packs new file mode 100644 index 00000000..0d3b51a7 --- /dev/null +++ b/data/vs.mse-game/packs @@ -0,0 +1,52 @@ + +############################################################## Card pack items +pack item: + name: rare + filter: card.rarity == "rare" +pack item: + name: uncommon + filter: card.rarity == "uncommon" +pack item: + name: common + filter: card.rarity == "common" +pack item: + name: promo + filter: card.rarity == "promo" +pack item: + name: random non-rare foil + filter: card.rarity == "common" or card.rarity == "uncommon" +############################################################## Card packs +pack type: + name: booster pack + item: + name: rare + amount: 1 + item: + name: uncommon + amount: 3 + item: + name: common + amount: 9 + item: + name: random non-rare foil + amount: 1 +pack type: + name: additional promo + item: + name: promo +pack type: + name: additional rare + item: + name: rare +pack type: + name: additional uncommon + item: + name: uncommon +pack type: + name: additional common + item: + name: common +pack type: + name: additional random non-rare foil + item: + name: random non-rare foil \ No newline at end of file diff --git a/data/vs.mse-game/script b/data/vs.mse-game/script new file mode 100644 index 00000000..ff8bf3f5 --- /dev/null +++ b/data/vs.mse-game/script @@ -0,0 +1,239 @@ + + ############### Sorting + sort_index := { + if contains(card.team_full, match: "") then "2" + else if contains(card.card_type, match: "equipment") then "3" + else if card.card_type=="location" then "4" + else if card.card_type=="plot twist" then "5" + else if card.card_type=="planet" then "6" + else "1" + } + extensive_sort := { + card.team_full + card.full_name + card.version_full + } + rarity_sort := { + if contains(card.shape, match: "old") then "B" + else if contains(card.shape, match: "avatar") then "C" + else if contains(card.shape, match: "alter ego") then "D" + else "A" + } + + ############### Determine Card Position + pos_of_card := { + position( + of: card + in: set + order_by: { rarity_sort() + sort_index() + extensive_sort() } + ) + 1 + } + + ############################################################## Text Filters + card_shape := { "new" } + # - adds all symbols + # - bolds keywords + # - makes text in parentheses italic + text_filter := + # step 1 : Remove all automatic tags + tag_remove_rule(tag: "") + + tag_remove_rule(tag: "") + + tag_remove_rule(tag: "") + + # step 2 : Reminder text for keywords + expand_keywords@( + condition: { + correct_case + } + default_expand: { + chosen(choice:if correct_case then mode else "lower case", set.automatic_reminder_text) + }, + combine: { "{keyword} ({process_english_hints(reminder)})" } + ) + + # step 3 : Expand shortcut words ~ and CARDNAME + replace_rule( + match: "~|~THIS~|CARDNAME", + in_context: "(^|[[:space:]])", + replace: "&" + ) + + # step 4 : Fill in atom fields + tag_contents_rule( + tag: "", + contents: { if card.name=="" then "CARDNAME" else card.name } + ) + + # step 5a: add arrow & diamond symbols + replace_rule( + match: "->|>>>|@|<>|•", + replace: "&") + + #X#if contains(card.shape, match:"old") then symbol_filter else new_symbols + # step 7a : Bold keywords without reminder text + replace_rule( + match: "]*>[^<]+", + replace: "&") + + # step 7b : Bold keywords with reminder text + replace_rule( + match: "]*>[^<]+", + replace: "&") + + # step 8 : Italic reminder text + replace_rule( + match: "[(][^)\n]*[)]?", + in_context: "(^|[[:space:]])|", + replace: "&") + + ############### Word List Scripts for Affiliations and Card Types + type_over_list := replace_rule(match:" ?-$", replace:"") + + affiliation_1_filter := + tag_remove_rule(tag: "") + + tag_remove_rule(tag: "") + + type_over_list + + { "{if contains(card.shape, match: "old") then (input) else to_upper(input)}" } + + space_to_wltags := replace_rule(match:"( +| )", + replace:{"{_1}"}) + + affiliation_2_filter := + tag_remove_rule(tag: "") + + tag_remove_rule(tag: "") + + type_over_list + + { "{if contains(card.shape, match: "old") then (input) else to_upper(input)}" } + + ############### Determine type of card + c_optional_character := filter_rule(match: "Concealed—Optional") + concealed_character := filter_rule(match: "Concealed") + keyword_sort_equipment := filter_rule(match: "Transferable") + keyword_sort_location := filter_rule(match: "Terraform") + keyword_sort_plot_twist := filter_rule(match: "Ongoing:") + card_type := { + if contains(card.team, match: "Location") then "location" + else if contains(card.team, match: "LOCATION") then "location" + else if keyword_sort_location(card.rule_text) != "" then "location" + else if card.team=="Planet" then "planet" + else if card.team=="PLANET" then "planet" + else if contains(card.team, match: "Equipment") then "equipment visible equipment" + else if contains(card.team, match: "EQUIPMENT") then "equipment visible equipment" + else if keyword_sort_equipment(card.rule_text) != "" then "equipment visible equipment" + else if contains(card.team, match: "Plot Twist") then "plot twist" + else if contains(card.team, match: "PLOT TWIST") then "plot twist" + else if keyword_sort_plot_twist(card.rule_text) != "" then "plot twist" + else if card.symbols == "ongoing" then "plot twist" + else if c_optional_character(card.rule_text) != "" then "characters concealed-optional concealed-optional character" + else if concealed_character(card.rule_text) != "" then "characters hidden concealed" + else "characters visible character" + } + # Default symbols + flightrange_detect := { if card.flightrange == "flight" then "flight" + else if card.flightrange == "range" then "range" + else if card.flightrange == "both" then "flight, range" + else "" + } + ongoing_detect := { + if keyword_sort_plot_twist(card.rule_text) != "" then "ongoing" + else "" + } + symbol_default := { flightrange_detect() + (if flightrange_detect() != "" then ", " else " ") + ongoing_detect() } + + # Default 'team' name of card + team := { + if is_location() then "Location" + else if is_equipment() then "Equipment" + else if is_plot_twist() then "Plot Twist" + else "" + } + true_pass := { + if is_character() then false else true + } + + ############### Type of card + + is_dual := { + card.card_type == "characters visible character dual" or + card.card_type == "characters hidden concealed dual" or + card.card_type == "characters concealed-optional concealed-optional dual" + } + is_new_dual := { + card.card_type == "characters visible character dual (new)" or + card.card_type == "characters hidden concealed dual (new)" or + card.card_type == "characters concealed-optional concealed-optional dual (new)" + } + is_not_new_dual := { + card.card_type == "characters visible character" or + card.card_type == "characters visible character dual" or + card.card_type == "characters hidden character concealed" or + card.card_type == "characters hidden character concealed dual" or + card.card_type == "characters concealed-optional concealed-optional character" or + card.card_type == "characters concealed-optional concealed-optional dual" + } + is_character := { contains(card.card_type, match: "characters") + } + is_concealed_optional := { contains(card.card_type, match: "concealed-optional") or + contains(card.rule_text, match: "Concealed—Optional") + } + is_concealed := { contains(card.card_type, match: "hidden") or + contains(card.rule_text, match: "Concealed") + } + is_equipment := { contains(card.card_type, match: "equipment") + } + is_location := { + card.card_type == "location" + } + is_plot_twist := { + card.card_type == "plot twist" + } + is_ch_or_eq := { + is_character() or is_equipment() + } + is_ch_or_pt := { + is_character() or is_plot_twist() + } + ############### Watermark Scripts + + watermark_narrow := { + card.watermark == "Marvel A-C Brood" or + card.watermark == "Marvel A-C Brotherhood" or + card.watermark == "Marvel D-H Hellfire Club" or + card.watermark == "DC A-C Anti-Matter" or + card.watermark == "DC A-C Arkham Inmates" or + card.watermark == "DC N-S Shadowpact" + } + watermark_wide := { + card.watermark == "Marvel D-H Horsemen of Apocalypse" or + card.watermark == "DC I-M JLA" or + card.watermark == "DC I-M JSA" + } + + ############### Additional Scripts + + only_numbers := filter_text@(match: "^[0123456789]+") + + word_count := break_text@(match:"[^[:space:]]+") + length + + name_sep := { + if contains(set.logo, match: "Marvel") then ( + if is_character() and card.identity=="" then "™" + else if is_character() and card.identity!="" then "™ " + else if is_equipment() and card.identity=="" then " " + else if is_equipment() and card.identity!="" then " " + else "" + ) + else if is_character() and card.identity=="" then " " + else if is_character() and card.identity!="" then " " + else if is_equipment() and card.identity=="" then " " + else if is_equipment() and card.identity!="" then " " + else "" + } + + separator_type := { + if contains(card.shape, match:"old") then ( + if team2 != "" then " " + else " " + ) + else " • " + } + + only_first := replace@(match:"card.team", replace:"") + + all_affiliations := { + for each card in set do + if is_character() then "," + only_first(to_text(card.team)) + } + \ No newline at end of file diff --git a/data/vs.mse-game/set_fields b/data/vs.mse-game/set_fields new file mode 100644 index 00000000..66e280c2 --- /dev/null +++ b/data/vs.mse-game/set_fields @@ -0,0 +1,101 @@ + +############################################################## Set fields +set field: + type: info + name: Set Information +set field: + type: text + name: title + description: This information will not appear on the card. +set field: + type: text + name: description + multi line: true + description: This information will not appear on the card. +set field: + type: info + name: Set Logo Options +set field: + type: choice + name: logo + choice: none + choice: Marvel + choice: DC-new + choice: DC-old + choice: Hellboy + choice: Other... + initial: none + save value: true + description: The logo for the company. +set field: + type: image + name: custom logo + save value: true + description: This is where you load custom logos that will appear on all your cards. +set field: + type: info + name: Other Default Options +set field: + type: text + name: code + description: Recommended only 3 Capital digits. Will appear before card number. ex: MOR-1 +set field: + type: text + name: artist + description: Editting this will set 1 artist for all the cards and will appear in the illustrator area. +set field: + type: text + name: copyright + description: Copytight information. This information will appear in the copyright area on the card. +set field: + type: choice + name: set rarity + choice: common + choice: uncommon + choice: rare + choice: promo + initial: none + description: Set the rarity for all cards in the set. +set field: + type: multiple choice + name: automatic reminder text + choice: real + choice: custom + initial: custom + # Convert from older mse versions + script: + if value = "yes" then "real, custom" + else if value = "no" then "" + else value + description: For which kinds of keywords should reminder text be added by default? Note: you can enable/disable reminder text by right clicking the keyword. +set field: + type: boolean + name: automatic card numbers + initial: yes + description: Should card numbers be shown on the cards? +############################# Default style +default set style: + title: + padding left: 2 + font: + size: 14 + logo: + font: + size: 16 + render style: both + choice images: + Marvel: /vs-common.mse-include/marvel.png + DC-new: /vs-common.mse-include/dcnew.png + DC-old: /vs-common.mse-include/dcold.png + Hellboy: /vs-common.mse-include/hellboy.png + Other...: /vs-common.mse-include/other.png + custom logo: + width: 30 + height: 30 + title: + padding left: 2 + font: + size: 16 + automatic reminder text: + render style: checklist + direction: vertical diff --git a/data/vs.mse-game/statistics b/data/vs.mse-game/statistics new file mode 100644 index 00000000..d70bf3b5 --- /dev/null +++ b/data/vs.mse-game/statistics @@ -0,0 +1,21 @@ + +############################################################# Extra Statistics +statistics dimension: + name: keywords + position hint: 1000 + script: keyword_usage(unique:true) + show empty: false + split list: true + icon: stats/keywords.png +statistics dimension: + name: style + position hint: 1001 + script: stylesheet.short_name + icon: stats/stylesheet.png +statistics dimension: + name: text length (words) + position hint: 100 + script: word_count(to_text(card.rule_text)) + numeric: true + bin size: 5 + icon: stats/text_length.png diff --git a/data/vs.mse-game/word_lists b/data/vs.mse-game/word_lists new file mode 100644 index 00000000..2b9d1977 --- /dev/null +++ b/data/vs.mse-game/word_lists @@ -0,0 +1,235 @@ + +############################################################## Word lists + +word list: + name: affiliation1 + word: + name: DC + word: + name: A-E + word: ANTI-MATTER + word: ARKHAM INMATES + word: BIRDS OF PREY + word: CHECKMATE + word: CRISIS + word: DARKSEID'S ELITE + word: DEATHSTROKE + word: DOOM PATROL + word: EMERALD ENEMIES + word: + name: F-J + word: FEARSOME FIVE + word: FUTURE FOES + word: GOTHAM KNIGHTS + word: GREEN LANTERN + word: INJUSTICE GANG + word: JLA + word: JLI + word: JSA + word: + name: K-O + word: LEAGUE OF ASSASSINS + word: LEGIONNAIRES + word: MANHUNTERS + word: NEW GODS + word: OUTSIDERS + word: + name: P-T + word: RANN + word: REVENGE SQUAD + word: SECRET SIX + word: SHADOWPACT + word: SPEED FORCE + word: SQUADRON SUPREME + word: TEAM SUPERMAN + word: TEEN TITANS + word: THANAGAR + word: + name: U-Z + word: VILLAINS UNITED + word: + name: Marvel + word: + name: A-E + word: ALPHA FLIGHT + word: ASGARDIANS + word: ATLANTIS + word: AVENGERS + word: CRIME LORDS + word: DEFENDERS + word: DOOM + word: EXILES + word: + name: F-J + word: FANTASTIC FOUR + word: HERALDS OF GALACTUS + word: HEROES OF EARTH + word: HELLFIRE CLUB + word: HORSEMEN OF APOCALYPSE + word: INFINITY WATCH + word: INHUMANS + word: INVADERS + word: + name: K-O + word: KANG COUNCIL + word: KREE + word: MARAUDERS + word: MARVEL DEFENDERS + word: MARVEL KNIGHTS + word: MASTERS OF EVIL + word: MORLOCKS + word: NEGATIVE ZONE + word: NEXTWAVE + word: NOVA CORPS + word: + name: P-T + word: PHALANX + word: RUNAWAYS + word: SENTINELS + word: THE SHI'AR + word: SHIELD + word: SINISTER SYNDICATE + word: SKRULL + word: SPIDER-FRIENDS + word: THUNDERBOLTS + word: + name: U-Z + word: UNDERWORLD + word: UNITED FRONT + word: VILLAINS OF EARTH + word: X-FACTOR + word: X-FORCE + word: X-MEN + word: X-STATIX + word: WARBOUND + word: WEAPON X + word: WILD PACK + word: + name: Other + word: B.P.R.D. + word: THULE SOCIETY + word: EQUIPMENT + word: LOCATION + word: PLOT TWIST + word: PLANET + word: + name: Your Affiliations + word: + script: all_affiliations() + line below: true +word list: + name: affiliation2 + word: + name: DC + word: + name: A-E + word: ANTI-MATTER + word: ARKHAM INMATES + word: BIRDS OF PREY + word: CHECKMATE + word: CRISIS + word: DARKSEID'S ELITE + word: DEATHSTROKE + word: DOOM PATROL + word: EMERALD ENEMIES + word: + name: F-J + word: FEARSOME FIVE + word: FUTURE FOES + word: GOTHAM KNIGHTS + word: GREEN LANTERN + word: INJUSTICE GANG + word: JLA + word: JLI + word: JSA + word: + name: K-O + word: LEAGUE OF ASSASSINS + word: LEGIONNAIRES + word: MANHUNTERS + word: NEW GODS + word: OUTSIDERS + word: + name: P-T + word: RANN + word: REVENGE SQUAD + word: SECRET SIX + word: SHADOWPACT + word: SPEED FORCE + word: SQUADRON SUPREME + word: TEAM SUPERMAN + word: TEEN TITANS + word: THANAGAR + word: + name: U-Z + word: VILLAINS UNITED + word: + name: Marvel + word: + name: A-E + word: ALPHA FLIGHT + word: ASGARDIANS + word: ATLANTIS + word: AVENGERS + word: CRIME LORDS + word: DEFENDERS + word: DOOM + word: EXILES + word: + name: F-J + word: FANTASTIC FOUR + word: HERALDS OF GALACTUS + word: HEROES OF EARTH + word: HELLFIRE CLUB + word: HORSEMEN OF APOCALYPSE + word: INFINITY WATCH + word: INHUMANS + word: INVADERS + word: + name: K-O + word: KANG COUNCIL + word: KREE + word: MARAUDERS + word: MARVEL DEFENDERS + word: MARVEL KNIGHTS + word: MASTERS OF EVIL + word: MORLOCKS + word: NEGATIVE ZONE + word: NEXTWAVE + word: NOVA CORPS + word: + name: P-T + word: PHALANX + word: RUNAWAYS + word: SENTINELS + word: THE SHI'AR + word: SHIELD + word: SINISTER SYNDICATE + word: SKRULL + word: SPIDER-FRIENDS + word: THUNDERBOLTS + word: + name: U-Z + word: UNDERWORLD + word: UNITED FRONT + word: VILLAINS OF EARTH + word: X-FACTOR + word: X-FORCE + word: X-MEN + word: X-STATIX + word: WARBOUND + word: WEAPON X + word: WILD PACK + word: + name: Other + word: B.P.R.D. + word: THULE SOCIETY + word: EQUIPMENT + word: LOCATION + word: PLOT TWIST + word: PLANET + word: + name: Your Affiliations + word: + script: all_affiliations() + line below: true