mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-10 04:57:00 -04:00
1213 lines
33 KiB
Plaintext
1213 lines
33 KiB
Plaintext
mse version: 0.3.7
|
||
full name: VS System
|
||
short name: VS
|
||
installer group: VS System/game files
|
||
icon: card-back.png
|
||
position hint: 3
|
||
|
||
version: 2008-09-26
|
||
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: "EQUIPMENT") then "2"
|
||
else if contains(card.team, match: "Equipment") then "2"
|
||
else if contains(card.team, match: "LOCATION") then "3"
|
||
else if contains(card.team, match: "Location") then "3"
|
||
else if contains(card.team, match: "PLOT TWIST") then "4"
|
||
else if contains(card.team, match: "Plot Twist") then "4"
|
||
else if contains(card.team, match: "Planet") then "5"
|
||
else if contains(card.team, match: "PLANET") then "5"
|
||
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
|
||
|
||
############### Symbol Filter
|
||
symbol_filter :=
|
||
# step 5a : add arrow/diamond/dot symbols
|
||
replace_rule(
|
||
match: "->|>>>|@|<>",
|
||
replace: "<sym-auto>&</sym-auto>");
|
||
new_symbols :=
|
||
symbol_filter +
|
||
# step 5a: Majority of affiliation symbols
|
||
replace_rule(
|
||
match: "Activate|Avengers|B.P.R.D.|Brotherhood|Crime Lords|Defenders|Doom|Fantastic Four|Gotham Knights|Green Lantern|Hellfire Club|Heralds of Galactus|Horsemen of Apocalypse|Invaders|JLA|JSA|Kree|Marvel Knights|Masters of Evil|Negative Zone|Planet|Shadowpact|Shi'ar|Sinister Syndicate|Skrull|Speed Force|Spider-Friends|Team Superman|Thule Society|Thunderbolts|Teen Titans|Underworld|Warbound|X-Men",
|
||
replace: "<sym-auto>&</sym-auto>") +
|
||
# step 5b: SHIELD Variations
|
||
replace_rule(
|
||
match: "S.H.I.E.L.D.|SHIELD|Shield",
|
||
replace: "<sym-auto>Shield</sym-auto>");
|
||
|
||
############### Other 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: "<sym-auto>") +
|
||
tag_remove_rule(tag: "<i-auto>") +
|
||
tag_remove_rule(tag: "<b-auto>") +
|
||
# 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: { "<b-auto>{keyword}</b-auto><atom-reminder-{mode}> ({process_english_hints(reminder)})</atom-reminder-{mode}>" }
|
||
) +
|
||
# step 3 : Expand shortcut words ~ and CARDNAME
|
||
replace_rule(
|
||
match: "~|~THIS~|CARDNAME",
|
||
in_context: "(^|[[:space:]])<match>",
|
||
replace: "<atom-cardname>&</atom-cardname>"
|
||
) +
|
||
# step 4 : Fill in atom fields
|
||
tag_contents_rule(
|
||
tag: "<atom-cardname>",
|
||
contents: { if card.name=="" then "CARDNAME" else card.name }
|
||
) +
|
||
if contains(card.shape, match:"old") then symbol_filter else new_symbols
|
||
# step 7a : Bold keywords without reminder text
|
||
replace_rule(
|
||
match: "<kw[^>]*>[^<]+</kw-a>",
|
||
replace: "<b-auto>&</b-auto>") +
|
||
# step 7b : Bold keywords with reminder text
|
||
replace_rule(
|
||
match: "<kw[^>]*>[^<]+</kw-A>",
|
||
replace: "<b-auto>&</b-auto>") +
|
||
# step 8 : Italic reminder text
|
||
replace_rule(
|
||
match: "[(][^)\n]*[)]?",
|
||
in_context: "(^|[[:space:]])<match>|<atom-keyword><match>",
|
||
replace: "<i-auto>&</i-auto>")
|
||
|
||
############### Word List Scripts for Affiliations and Card Types
|
||
type_over_list := replace_rule(match:" ?-$", replace:"")
|
||
|
||
affiliation_1_filter :=
|
||
tag_remove_rule(tag: "<word-list-") +
|
||
type_over_list +
|
||
{ "<word-list-affiliation1>{input}</word-list-affiliation1>" }
|
||
|
||
space_to_wltags := replace_rule(match:"( +|<soft> </soft>)",
|
||
replace:{"</word-list-{list_type}>{_1}<word-list-{list_type}>"})
|
||
|
||
affiliation_2_filter :=
|
||
tag_remove_rule(tag: "<word-list-") +
|
||
type_over_list +
|
||
{ "<word-list-affiliation2>{input}</word-list-affiliation2>" }
|
||
|
||
############### 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
|
||
symbol_default := {
|
||
if keyword_sort_plot_twist(card.rule_text) != "" then "ongoing"
|
||
else ""
|
||
}
|
||
# 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 := { contains(card.card_type, 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
|
||
|
||
separator_type := {
|
||
if contains(card.shape, match:"old") then (
|
||
if team2 != "<word-list-affiliation2></word-list-affiliation2>" then " <sym>•</sym> "
|
||
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: text
|
||
name: title
|
||
description: This information will not appear on the card.
|
||
set field:
|
||
type: choice
|
||
name: logo
|
||
choice: none
|
||
choice: Marvel
|
||
choice: DC-new
|
||
choice: DC-old
|
||
choice: Hellboy
|
||
choice: Other...
|
||
initial: none
|
||
description: The logo for the company.
|
||
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: description
|
||
multi line: true
|
||
description: This information will not appear on the card.
|
||
set field:
|
||
type: text
|
||
name: artist
|
||
description: Editting this will set 1 artist for all the cards and will appear in the artist bar below the picture.
|
||
set field:
|
||
type: text
|
||
name: copyright
|
||
description: Copytight information. This information will not appear 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:
|
||
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
|
||
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: sep
|
||
editable: false
|
||
script: if is_character() and card.identity=="" then "™" else if is_character() and card.identity!="" then "™ <sym>@</sym> " else ""
|
||
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: card.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
|
||
description: Double click to load a symbol for the card
|
||
card field:
|
||
type: image
|
||
name: custom symbol
|
||
show statistics: 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()
|
||
script:
|
||
if card.flightrange=="flight" then "flight"
|
||
else if card.flightrange=="range" then "range"
|
||
else if card.flightrange=="both" then "flight, range"
|
||
else (value)
|
||
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
|
||
script: symbol_filter(value)
|
||
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_character() and contains(card.rule_text, match: "Concealed—Optional") then "both"
|
||
else if contains(card.card_type, match: "hidden") then "concealed"
|
||
else if is_equipment() and contains(card.rule_text, match: "Concealed—Optional") then "both"
|
||
else if is_equipment() and contains(card.rule_text, match: "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
|
||
script:
|
||
if card.symbols=="flight" then "flight"
|
||
else if card.symbols=="range" then "range"
|
||
else if card.symbols=="flight, range" then "both"
|
||
else (value)
|
||
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: symbol_default()
|
||
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
|
||
|
||
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: common / uncommon
|
||
filter: card.rarity == "common" or card.rarity == "uncommon"
|
||
pack item:
|
||
name: rare
|
||
filter: card.rarity == "rare"
|
||
############################################################## Card packs
|
||
pack type:
|
||
name: booster pack
|
||
item:
|
||
name: rare
|
||
amount: 1
|
||
item:
|
||
name: common / uncommon
|
||
amount: 13
|
||
pack type:
|
||
name: additional common / uncommon
|
||
item:
|
||
name: common / uncommon
|
||
pack type:
|
||
name: additional rare
|
||
item:
|
||
name: rare
|
||
############################################################## Keywords
|
||
############################# Keyword rules
|
||
|
||
has keywords: true
|
||
|
||
keyword match script: text_filter(value)
|
||
|
||
keyword mode:
|
||
name: real
|
||
description: Actual keywords.
|
||
keyword mode:
|
||
is default: true
|
||
name: custom
|
||
description: Custom 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: <atom-param>action</atom-param>
|
||
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: <atom-param>action</atom-param>
|
||
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 <atom-param>number</atom-param>
|
||
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 <atom-param>number</atom-param>
|
||
mode: real
|
||
reminder: This character has willpower equal to <param1>.
|
||
keyword:
|
||
keyword: Leader:
|
||
match: Leader: <atom-param>action</atom-param>
|
||
mode: real
|
||
reminder: The designated characters are affected by this text.
|
||
keyword:
|
||
keyword: Ally:
|
||
match: Ally: <atom-param>action</atom-param>
|
||
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 <atom-param>action</atom-param>
|
||
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: <atom-param>action</atom-param>
|
||
mode: real
|
||
reminder: This ability is activated whenever this character is stunned.
|
||
keyword:
|
||
keyword: Backup:
|
||
match: Backup: <atom-param>action</atom-param>
|
||
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: <atom-param>action</atom-param>
|
||
mode: real
|
||
reminder: You may not have more than one copy of this card in your deck.
|