git: change ignored files
@@ -6,14 +6,14 @@
|
||||
.vs
|
||||
.vscode
|
||||
|
||||
/data/*.mse-game
|
||||
/data/*.mse-style
|
||||
/data/*.mse-include
|
||||
/data/*.mse-symbol-font
|
||||
/data/*.mse-export-template
|
||||
/data/dictionaries
|
||||
/data/packages
|
||||
/data/old
|
||||
/data/**/*
|
||||
|
||||
!/data/en.mse-locale/
|
||||
!/data/en.mse-locale/**/*
|
||||
!/data/magic.mse-game/
|
||||
!/data/magic.mse-game/**/*
|
||||
!/data/magic-blends.mse-include/
|
||||
!/data/magic-blends.mse-include/**/*
|
||||
|
||||
/build_*
|
||||
/build
|
||||
|
||||
@@ -472,6 +472,7 @@ label:
|
||||
app language : Language of the user interface :
|
||||
card display : Card Display
|
||||
zoom : &Zoom :
|
||||
export : &Export :
|
||||
percent of normal: % of normal size
|
||||
external programs: External programs
|
||||
apprentice: &Apprentice:
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
mse version: 2.0.0
|
||||
full name: Magic The Gathering, card blend utilities
|
||||
version: 2015-05-23
|
||||
|
||||
# This file doesn't do anything, other files in this directory can be included
|
||||
# in game/style files:
|
||||
# card-colors Defines card color choices
|
||||
# Use in game
|
||||
# blend-scripts Defines card_hybrid, family of functions
|
||||
# Use in init script of style
|
||||
# card-backgrounds Uses the blend scripts to make choice images for card backgrounds
|
||||
# Template names can be redefined
|
||||
@@ -0,0 +1,949 @@
|
||||
# Scripts for blending images
|
||||
# Included by a style file in its init script
|
||||
|
||||
|
||||
########################################################################
|
||||
# Filenames and other defaults
|
||||
########################################################################
|
||||
|
||||
mask_hybrid_with_land := { false }
|
||||
mask_multi_land_with_color := { false }
|
||||
template := { input + "{type}.jpg" }
|
||||
land_template := { (if input == "a" then "c" else input) + "l{type}.jpg" }
|
||||
# For what value should thumbnails of hybrids be made?
|
||||
hybrid_previews := "hybrid"
|
||||
# Are there templates for colored lands, land_template(...)?
|
||||
colored_lands := true
|
||||
watermark_colors := {
|
||||
if card.card_color == "white" then "ww"
|
||||
else if card.card_color == "blue" then "uu"
|
||||
else if card.card_color == "black" then "bb"
|
||||
else if card.card_color == "red" then "rr"
|
||||
else if card.card_color == "green" then "gg"
|
||||
else if contains(card.card_color, match:"multi") or contains(card.card_color, match:"hybrid") then hybrid_color()
|
||||
else if card.card_color == "" then "cc"
|
||||
else "aa"
|
||||
}
|
||||
hybrid_color := {
|
||||
if contains(card.card_color, match: "white, blue") then "wu"
|
||||
else if contains(card.card_color, match: "white, black") then "wb"
|
||||
else if contains(card.card_color, match: "white, red") then "rw"
|
||||
else if contains(card.card_color, match: "white, green") then "gw"
|
||||
else if contains(card.card_color, match: "blue, black") then "ub"
|
||||
else if contains(card.card_color, match: "blue, red") then "ur"
|
||||
else if contains(card.card_color, match: "blue, green") then "gu"
|
||||
else if contains(card.card_color, match: "black, red") then "br"
|
||||
else if contains(card.card_color, match: "black, green") then "bg"
|
||||
else if contains(card.card_color, match: "red, green") then "rg"
|
||||
else "mm"
|
||||
}
|
||||
########################################################################
|
||||
# Combining multiple colors (hybrids)
|
||||
########################################################################
|
||||
|
||||
card_hybrid_2 := {
|
||||
linear_blend(
|
||||
image1: template(colors[0])
|
||||
image2: template(colors[1])
|
||||
x1: 0.4, y1: 0
|
||||
x2: 0.6, y2: 0
|
||||
)
|
||||
}
|
||||
|
||||
overlay_hybrid := [
|
||||
1: { template(colors[0]) }
|
||||
2: { combine_blend(
|
||||
image1: template(colors[0]),
|
||||
image2: template(colors[1]),
|
||||
combine: "symmetric overlay"
|
||||
)}
|
||||
]
|
||||
|
||||
# vertical version of a horizontal hybrid
|
||||
vertical_card_hybrid := {
|
||||
do_linear_blend := linear_blend
|
||||
linear_blend := { do_linear_blend(x1: 0, x2: 0, y1: x1, y2: x2) }
|
||||
card_hybrid.horizontal[color_count]()
|
||||
}
|
||||
|
||||
horizontal_card_hybrid := [
|
||||
1: { template(colors[0]) }
|
||||
2: card_hybrid_2
|
||||
3: {linear_blend(
|
||||
image1: template(colors[0])
|
||||
x1: 0.22, y1: 0
|
||||
x2: 0.4, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[1])
|
||||
x1: 0.6, y1: 0
|
||||
x2: 0.78, y2: 0
|
||||
image2: template(colors[2])
|
||||
))}
|
||||
4: {linear_blend(
|
||||
# blend = 0.16
|
||||
image1: template(colors[0])
|
||||
x1: 0.15, y1: 0
|
||||
x2: 0.31, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[1])
|
||||
x1: 0.42, y1: 0
|
||||
x2: 0.58, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[2])
|
||||
x1: 0.69, y1: 0
|
||||
x2: 0.85, y2: 0
|
||||
image2: template(colors[3])
|
||||
)))}
|
||||
5: {linear_blend(
|
||||
image1: template(colors[0])
|
||||
x1: 2.0 / 15, y1: 0
|
||||
x2: 4.0 / 15, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[1])
|
||||
x1: 5.0 / 15, y1: 0
|
||||
x2: 7.0 / 15, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[2])
|
||||
x1: 8.0 / 15, y1: 0
|
||||
x2: 10.0 / 15, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[3])
|
||||
x1: 11.0 / 15, y1: 0
|
||||
x2: 13.0 / 15, y2: 0
|
||||
image2: template(colors[4])
|
||||
))))}
|
||||
6: {linear_blend(
|
||||
image1: template(colors[0])
|
||||
x1: 1.5 / 15, y1: 0
|
||||
x2: 3.1 / 15, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[1])
|
||||
x1: 4.1 / 15, y1: 0
|
||||
x2: 5.7 / 15, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[2])
|
||||
x1: 6.7 / 15, y1: 0
|
||||
x2: 8.3 / 15, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[3])
|
||||
x1: 9.3 / 15, y1: 0
|
||||
x2: 10.9 / 15, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[4])
|
||||
x1: 11.9 / 15, y1: 0
|
||||
x2: 13.5 / 15, y2: 0
|
||||
image2: template(colors[5])
|
||||
)))))}
|
||||
7: {linear_blend(
|
||||
image1: template(colors[0])
|
||||
x1: 1.3 / 15, y1: 0
|
||||
x2: 2.7 / 15, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[1])
|
||||
x1: 3.5 / 15, y1: 0
|
||||
x2: 4.9 / 15, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[2])
|
||||
x1: 5.7 / 15, y1: 0
|
||||
x2: 7.1 / 15, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[3])
|
||||
x1: 7.9 / 15, y1: 0
|
||||
x2: 9.3 / 15, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[4])
|
||||
x1: 10.1 / 15, y1: 0
|
||||
x2: 11.5 / 15, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[5])
|
||||
x1: 12.3 / 15, y1: 0
|
||||
x2: 13.7 / 15, y2: 0
|
||||
image2: template(colors[6])
|
||||
))))))}
|
||||
]
|
||||
|
||||
card_hybrid := [
|
||||
radial: [
|
||||
0: { template("c") }
|
||||
1: { template(colors[0]) }
|
||||
2: card_hybrid_2
|
||||
3: {linear_blend(
|
||||
image1: card_hybrid_2(colors: colors[0] + colors[1]),
|
||||
image2: template(colors[2]),
|
||||
x1: 0, y1: 0.55
|
||||
x2: 0, y2: 0.77
|
||||
)}
|
||||
4: {linear_blend(
|
||||
image1: card_hybrid_2(colors: colors[0] + colors[1])
|
||||
image2: card_hybrid_2(colors: colors[3] + colors[2])
|
||||
x1: 0, y1: 0.4
|
||||
x2: 0, y2: 0.62
|
||||
)}
|
||||
5: {linear_blend(
|
||||
image1: linear_blend(
|
||||
image1: card_hybrid_2(colors: colors[0] + colors[1]),
|
||||
image2: card_hybrid_2(colors: colors[4] + colors[2]),
|
||||
x1: 0, y1: 0.19
|
||||
x2: 0, y2: 0.35
|
||||
),
|
||||
image2: template(colors[3]),
|
||||
x1: 0, y1: 0.777
|
||||
x2: 0, y2: 0.937
|
||||
)}
|
||||
6: {linear_blend(
|
||||
image1: linear_blend(
|
||||
image1: card_hybrid_2(colors: colors[0] + colors[1]),
|
||||
image2: card_hybrid_2(colors: colors[5] + colors[2]),
|
||||
x1: 0, y1: 0.19
|
||||
x2: 0, y2: 0.35
|
||||
),
|
||||
image2: card_hybrid_2(colors: colors[4] + colors[3]),
|
||||
x1: 0, y1: 0.777
|
||||
x2: 0, y2: 0.937
|
||||
)}
|
||||
7: {linear_blend(
|
||||
image1: linear_blend(
|
||||
image1: linear_blend(
|
||||
image1: card_hybrid_2(colors: colors[0] + colors[1]),
|
||||
image2: card_hybrid_2(colors: colors[6] + colors[3]),
|
||||
x1: 0, y1: 0.34
|
||||
x2: 0, y2: 0.50
|
||||
),
|
||||
image2: card_hybrid_2(colors: colors[5] + colors[3]),
|
||||
x1: 0, y1: 0.877
|
||||
x2: 0, y2: 0.937
|
||||
),
|
||||
image2: template(colors[4]),
|
||||
x1: 0, y1: 1.140
|
||||
x2: 0, y2: 1.300
|
||||
)}
|
||||
]
|
||||
horizontal: horizontal_card_hybrid
|
||||
vertical: [
|
||||
1: { template(colors[0]) }
|
||||
2: { linear_blend(
|
||||
image1: template(colors[0])
|
||||
image2: template(colors[1])
|
||||
x1: 0, y1: 0.4
|
||||
x2: 0, y2: 0.6
|
||||
)}
|
||||
3: vertical_card_hybrid
|
||||
4: vertical_card_hybrid
|
||||
5: vertical_card_hybrid
|
||||
6: vertical_card_hybrid
|
||||
7: vertical_card_hybrid
|
||||
]
|
||||
overlay: overlay_hybrid
|
||||
]
|
||||
|
||||
|
||||
########################################################################
|
||||
# P/T box
|
||||
########################################################################
|
||||
# These are easier
|
||||
|
||||
horizontal_pt_hybrid := [
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[1]) }
|
||||
3: { linear_blend(
|
||||
image1: template(colors[1])
|
||||
image2: template(colors[2])
|
||||
x1: -0.51, y1: 0
|
||||
x2: 0.26, y2: 0
|
||||
)}
|
||||
4: { linear_blend(
|
||||
image1: template(colors[2])
|
||||
image2: template(colors[3])
|
||||
x1: -0.1, y1: 0
|
||||
x2: 0.6, y2: 0
|
||||
)}
|
||||
5: { linear_blend(
|
||||
image1: template(colors[3])
|
||||
image2: template(colors[4])
|
||||
x1: 0.08, y1: 0
|
||||
x2: 0.65, y2: 0
|
||||
)}
|
||||
6: { linear_blend(
|
||||
image1: template(colors[4])
|
||||
image2: template(colors[5])
|
||||
x1: 0.07, y1: 0
|
||||
x2: 0.7, y2: 0
|
||||
)}
|
||||
7: {linear_blend(
|
||||
image1: linear_blend(
|
||||
image1: template(colors[4]),
|
||||
image2: template(colors[5]),
|
||||
x1: -0.2, y1: 0
|
||||
x2: 0.2, y2: 0
|
||||
),
|
||||
image2: template(colors[6]),
|
||||
x1: 0.5, y1: 0
|
||||
x2: 0.7, y2: 0
|
||||
)}
|
||||
]
|
||||
|
||||
pt_hybrid := [
|
||||
radial: [
|
||||
0: { template("c") }
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[1]) }
|
||||
3: { template(colors[2]) }
|
||||
4: { template(colors[2]) }
|
||||
5: { linear_blend(
|
||||
image1: template(colors[2])
|
||||
image2: template(colors[3])
|
||||
x1: 0, y1: -1.5
|
||||
x2: 0, y2: 0.7
|
||||
)}
|
||||
6: { linear_blend(
|
||||
image1: template(colors[2])
|
||||
image2: template(colors[3])
|
||||
x1: 0, y1: -1.5
|
||||
x2: 0, y2: 0.7
|
||||
)}
|
||||
7: { template(colors[4]) }
|
||||
]
|
||||
horizontal: horizontal_pt_hybrid
|
||||
vertical: [
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[1]) }
|
||||
3: { template(colors[2]) }
|
||||
4: { template(colors[3]) }
|
||||
5: { template(colors[4]) }
|
||||
6: { template(colors[5]) }
|
||||
7: { template(colors[6]) }
|
||||
]
|
||||
overlay: overlay_hybrid
|
||||
]
|
||||
|
||||
########################################################################
|
||||
# P/T boxes of flip cards
|
||||
########################################################################
|
||||
|
||||
flip_pt_hybrid := [
|
||||
radial: [
|
||||
0: { template("c") }
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[1]) }
|
||||
3: { template(colors[1]) }
|
||||
4: { template(colors[1]) }
|
||||
5: { linear_blend(
|
||||
image1: template(colors[1])
|
||||
image2: template(colors[2])
|
||||
x1: 0, y1: -1
|
||||
x2: 0, y2: 1.8
|
||||
)}
|
||||
6: { linear_blend(
|
||||
image1: template(colors[1])
|
||||
image2: template(colors[2])
|
||||
x1: 0, y1: -1
|
||||
x2: 0, y2: 1.8
|
||||
)}
|
||||
7: { template(colors[4]) }
|
||||
]
|
||||
horizontal: horizontal_pt_hybrid
|
||||
vertical: [
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[0]) }
|
||||
3: { linear_blend(
|
||||
image1: template(colors[0])
|
||||
image2: template(colors[1])
|
||||
x1: 0, y1: 0
|
||||
x2: 0, y2: 2
|
||||
)}
|
||||
4: { linear_blend(
|
||||
image1: template(colors[0])
|
||||
image2: template(colors[1])
|
||||
x1: 0, y1: -1.5
|
||||
x2: 0, y2: 1
|
||||
)}
|
||||
5: { linear_blend(
|
||||
image1: template(colors[0])
|
||||
image2: template(colors[1])
|
||||
x1: 0, y1: -1.1
|
||||
x2: 0, y2: 0.2
|
||||
)}
|
||||
6: { template(colors[1]) } # Probably not right
|
||||
7: { template(colors[2]) }
|
||||
]
|
||||
overlay: overlay_hybrid
|
||||
]
|
||||
|
||||
flip_pt_hybrid2 := [
|
||||
radial: [
|
||||
0: { template("c") }
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[0]) }
|
||||
3: { linear_blend(
|
||||
image1: template(colors[0])
|
||||
image2: template(colors[2])
|
||||
x1: 0, y1: -1
|
||||
x2: 0, y2: 1.1
|
||||
)}
|
||||
4: { template(colors[3]) }
|
||||
5: { template(colors[4]) }
|
||||
6: { template(colors[5]) }
|
||||
7: { template(colors[5]) }
|
||||
]
|
||||
horizontal: [
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[0]) }
|
||||
3: { template(colors[0]) }
|
||||
4: { linear_blend(
|
||||
image1: template(colors[0])
|
||||
image2: template(colors[1])
|
||||
x1: 0.4, y1: 0
|
||||
x2: 1.5, y2: 0
|
||||
)}
|
||||
5: { linear_blend(
|
||||
image1: template(colors[0])
|
||||
image2: template(colors[1])
|
||||
x1: 0.08, y1: 0
|
||||
x2: 0.65, y2: 0
|
||||
)}
|
||||
6: { template(colors[5]) } #TODO
|
||||
7: { template(colors[6]) } #TODO
|
||||
]
|
||||
vertical: [
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[1]) }
|
||||
3: { linear_blend(
|
||||
image1: template(colors[1])
|
||||
image2: template(colors[2])
|
||||
x1: 0, y1: -1
|
||||
x2: 0, y2: 1.5
|
||||
)}
|
||||
4: { linear_blend(
|
||||
image1: template(colors[2])
|
||||
image2: template(colors[3])
|
||||
x1: 0, y1: 0.5
|
||||
x2: 0, y2: 3
|
||||
)}
|
||||
5: { template(colors[3]) }
|
||||
6: { template(colors[5]) } # Probably not right
|
||||
7: { template(colors[6]) }
|
||||
]
|
||||
overlay: overlay_hybrid
|
||||
]
|
||||
|
||||
|
||||
########################################################################
|
||||
# P/T boxes for leveler cards
|
||||
########################################################################
|
||||
|
||||
leveler_pt_hybrid := [
|
||||
radial: [
|
||||
0: { template("c") }
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[1]) }
|
||||
3: { linear_blend(
|
||||
image1: template(colors[1])
|
||||
image2: template(colors[2])
|
||||
x1: 0, y1: 0
|
||||
x2: 0, y2: 1
|
||||
)}
|
||||
4: { template(colors[2]) }
|
||||
5: { template(colors[2]) }
|
||||
6: { template(colors[2]) }
|
||||
7: { template(colors[4]) }
|
||||
]
|
||||
horizontal: horizontal_pt_hybrid
|
||||
vertical: [
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[1]) }
|
||||
3: { linear_blend(
|
||||
image1: template(colors[1])
|
||||
image2: template(colors[2])
|
||||
x1: 0, y1: 0
|
||||
x2: 0, y2: 1
|
||||
)}
|
||||
4: { template(colors[2]) }
|
||||
5: { template(colors[3]) }
|
||||
6: { linear_blend(
|
||||
image1: template(colors[3])
|
||||
image2: template(colors[4])
|
||||
x1: 0, y1: 0
|
||||
x2: 0, y2: 0.25
|
||||
)}
|
||||
7: { template(colors[5]) }
|
||||
]
|
||||
overlay: overlay_hybrid
|
||||
]
|
||||
|
||||
leveler_pt_hybrid2 := [
|
||||
radial: [
|
||||
0: { template("c") }
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[1]) }
|
||||
3: { template(colors[2]) }
|
||||
4: { template(colors[2]) }
|
||||
5: { template(colors[2]) }
|
||||
6: { template(colors[2]) }
|
||||
7: { template(colors[4]) }
|
||||
]
|
||||
horizontal: horizontal_pt_hybrid
|
||||
vertical: [
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[1]) }
|
||||
3: { template(colors[2]) }
|
||||
4: { linear_blend(
|
||||
image1: template(colors[2])
|
||||
image2: template(colors[3])
|
||||
x1: 0, y1: 0
|
||||
x2: 0, y2: 1
|
||||
)}
|
||||
5: { linear_blend(
|
||||
image1: template(colors[3])
|
||||
image2: template(colors[4])
|
||||
x1: 0, y1: 0
|
||||
x2: 0, y2: 0.75
|
||||
)}
|
||||
6: { template(colors[4]) }
|
||||
7: { template(colors[5]) }
|
||||
]
|
||||
overlay: overlay_hybrid
|
||||
]
|
||||
|
||||
leveler_pt_hybrid3 := [
|
||||
radial: [
|
||||
0: { template("c") }
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[1]) }
|
||||
3: { template(colors[2]) }
|
||||
4: { template(colors[2]) }
|
||||
5: { linear_blend(
|
||||
image1: template(colors[2])
|
||||
image2: template(colors[3])
|
||||
x1: 0, y1: 0
|
||||
x2: 0, y2: 1
|
||||
)}
|
||||
6: { linear_blend(
|
||||
image1: template(colors[2])
|
||||
image2: template(colors[3])
|
||||
x1: 0, y1: 0
|
||||
x2: 0, y2: 1
|
||||
)}
|
||||
7: { template(colors[4]) }
|
||||
]
|
||||
horizontal: horizontal_pt_hybrid
|
||||
vertical: [
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[1]) }
|
||||
3: { template(colors[2]) }
|
||||
4: { template(colors[3]) }
|
||||
5: { linear_blend(
|
||||
image1: template(colors[3])
|
||||
image2: template(colors[4])
|
||||
x1: 0, y1: 0
|
||||
x2: 0, y2: 0.5
|
||||
)}
|
||||
6: { linear_blend(
|
||||
image1: template(colors[4])
|
||||
image2: template(colors[5])
|
||||
x1: 0, y1: 0
|
||||
x2: 0, y2: 0.5
|
||||
)}
|
||||
7: { template(colors[5]) }
|
||||
]
|
||||
overlay: overlay_hybrid
|
||||
]
|
||||
|
||||
########################################################################
|
||||
# Textbox and typeline for FPM templates and Futureshifts
|
||||
########################################################################
|
||||
|
||||
textbox_hybrid := [
|
||||
radial: [
|
||||
0: { template("c") }
|
||||
1: { template(colors[0]) }
|
||||
2: card_hybrid_2
|
||||
3: { template(colors[2]) }
|
||||
4: { card_hybrid_2(colors: colors[3] + colors[2]) }
|
||||
5: { template(colors[3]) }
|
||||
6: { card_hybrid_2(colors: colors[4] + colors[3]) }
|
||||
7: { template(colors[4]) }
|
||||
]
|
||||
horizontal: horizontal_card_hybrid
|
||||
vertical: [
|
||||
0: { template("c") }
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[1]) }
|
||||
3: { template(colors[2]) } # TODO
|
||||
4: { template(colors[3]) }
|
||||
5: { template(colors[4]) }
|
||||
6: { template(colors[5]) }
|
||||
7: { template(colors[6]) }
|
||||
]
|
||||
overlay: overlay_hybrid
|
||||
]
|
||||
|
||||
typeline_hybrid := textbox_hybrid
|
||||
|
||||
########################################################################
|
||||
# Color Identity Marking
|
||||
########################################################################
|
||||
|
||||
identity_horizontal_hybrid := [
|
||||
0: { template("c") }
|
||||
1: { template(colors[0]) }
|
||||
2: { linear_blend(
|
||||
image1: template(colors[0])
|
||||
image2: template(colors[1])
|
||||
x1: 0.49, y1: 0.49
|
||||
x2: 0.5, y2: 0.5
|
||||
)}
|
||||
3: {masked_blend(light: masked_blend(light: template(colors[0]), dark: template(colors[2]), mask: "/magic-identity-new.mse-include/imask_32.png"), dark: template(colors[1]), mask: "/magic-identity-new.mse-include/imask_33.png")}
|
||||
4: {masked_blend(
|
||||
light: masked_blend(
|
||||
light: masked_blend(light: template(colors[1]), dark: template(colors[0]), mask: "/magic-identity-new.mse-include/imask_42.png"),
|
||||
dark: template(colors[2]),
|
||||
mask: "/magic-identity-new.mse-include/imask_43.png")
|
||||
dark: template(colors[3]),
|
||||
mask: "/magic-identity-new.mse-include/imask_44.png"
|
||||
)}
|
||||
5: {masked_blend(
|
||||
light: masked_blend(
|
||||
light: masked_blend(
|
||||
light: masked_blend(
|
||||
light: template(colors[0]),
|
||||
dark: template(colors[4]),
|
||||
mask: "/magic-identity-new.mse-include/imask_52.png"),
|
||||
dark: template(colors[1]),
|
||||
mask: "/magic-identity-new.mse-include/imask_53.png"),
|
||||
dark: template(colors[2]),
|
||||
mask: "/magic-identity-new.mse-include/imask_54.png"),
|
||||
dark: template(colors[3]),
|
||||
mask: "/magic-identity-new.mse-include/imask_55.png")
|
||||
}
|
||||
6: { template("m") }
|
||||
]
|
||||
|
||||
identity_hybrid := [
|
||||
radial: identity_horizontal_hybrid
|
||||
vertical: identity_horizontal_hybrid
|
||||
horizontal: identity_horizontal_hybrid
|
||||
overlay: identity_horizontal_hybrid
|
||||
]
|
||||
|
||||
########################################################################
|
||||
# Promo Stamp
|
||||
########################################################################
|
||||
# These are easier
|
||||
|
||||
horizontal_stamp_hybrid := [
|
||||
1: { template(colors[0]) }
|
||||
2: { linear_blend(
|
||||
image1: template(colors[0])
|
||||
image2: template(colors[1])
|
||||
x1: -0.3, y1: 0
|
||||
x2: 1.3, y2: 0
|
||||
)}
|
||||
3: { template(colors[1]) }
|
||||
4: { linear_blend(
|
||||
image1: template(colors[1])
|
||||
image2: template(colors[2])
|
||||
x1: -0.3, y1: 0
|
||||
x2: 1.3, y2: 0
|
||||
)}
|
||||
5: {linear_blend(
|
||||
image1: template(colors[1])
|
||||
x1: -0.55, y1: 0
|
||||
x2: 0.2, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[2])
|
||||
x1: 0.8, y1: 0
|
||||
x2: 1.55, y2: 0
|
||||
image2: template(colors[3])
|
||||
))}
|
||||
6: { linear_blend(
|
||||
image1: template(colors[2])
|
||||
image2: template(colors[3])
|
||||
x1: 0.1, y1: 0
|
||||
x2: 0.9, y2: 0
|
||||
)}
|
||||
7: {linear_blend(
|
||||
image1: template(colors[2])
|
||||
x1: -0.55, y1: 0
|
||||
x2: 0.2, y2: 0
|
||||
image2: linear_blend(
|
||||
image1: template(colors[3])
|
||||
x1: 0.8, y1: 0
|
||||
x2: 1.55, y2: 0
|
||||
image2: template(colors[4])
|
||||
))}
|
||||
]
|
||||
|
||||
stamp_hybrid := [
|
||||
radial: [
|
||||
0: { template("c") }
|
||||
1: { template(colors[0]) }
|
||||
2: { linear_blend(
|
||||
image1: template(colors[0])
|
||||
image2: template(colors[1])
|
||||
x1: -0.3, y1: 0
|
||||
x2: 1.3, y2: 0
|
||||
)}
|
||||
3: { template(colors[2]) }
|
||||
4: { linear_blend(
|
||||
image1: template(colors[3])
|
||||
image2: template(colors[2])
|
||||
x1: -0.3, y1: 0
|
||||
x2: 1.3, y2: 0
|
||||
)}
|
||||
5: { template(colors[3]) }
|
||||
6: { linear_blend(
|
||||
image1: template(colors[4])
|
||||
image2: template(colors[3])
|
||||
x1: -0.3, y1: 0
|
||||
x2: 1.3, y2: 0
|
||||
)}
|
||||
7: { template(colors[4]) }
|
||||
]
|
||||
horizontal: horizontal_stamp_hybrid
|
||||
vertical: [
|
||||
1: { template(colors[0]) }
|
||||
2: { template(colors[1]) }
|
||||
3: { template(colors[2]) }
|
||||
4: { template(colors[3]) }
|
||||
5: { template(colors[4]) }
|
||||
6: { template(colors[5]) }
|
||||
7: { template(colors[6]) }
|
||||
]
|
||||
overlay: overlay_hybrid
|
||||
]
|
||||
|
||||
########################################################################
|
||||
# Putting it all together.
|
||||
########################################################################
|
||||
|
||||
# Determine the card background based on the card_color multiple choice options
|
||||
color_background := {
|
||||
|
||||
# for thumbnails
|
||||
if input == "hybrid" then
|
||||
input := "white,blue,red,{hybrid_previews},horizontal"
|
||||
else if input == "overlay" then
|
||||
input := "blue,red,{hybrid_previews},overlay"
|
||||
else if input == "radial" or input == "horizontal" or input == "vertical" then
|
||||
input := "white,blue,red,{hybrid_previews}," + input
|
||||
else if input == "reversed" then
|
||||
input := "white,blue,red,{hybrid_previews},horizontal,reversed"
|
||||
|
||||
# What type of 'hybrid'?
|
||||
land := chosen(choice:"land")
|
||||
multi := chosen(choice:"multicolor")
|
||||
hybrid := chosen(choice:"hybrid")
|
||||
artifact := chosen(choice:"artifact")
|
||||
if land and colored_lands then template := land_template # use land template instead?
|
||||
|
||||
# The selected colors
|
||||
colors := sort_text( order: "(wubrg)"
|
||||
, (if chosen(choice:"white") then "w")
|
||||
+ (if chosen(choice:"blue") then "u")
|
||||
+ (if chosen(choice:"black") then "b")
|
||||
+ (if chosen(choice:"red") then "r")
|
||||
+ (if chosen(choice:"green") then "g"))
|
||||
if multi and (hybrid or colors == "") then (
|
||||
colors := colors + "m"
|
||||
multi := false
|
||||
)
|
||||
if artifact and (hybrid or colors == "") then (
|
||||
colors := colors + "a"
|
||||
artifact := false
|
||||
)
|
||||
if chosen(choice:"reversed") then colors := reverse(colors)
|
||||
color_count := number_of_items(in: colors)
|
||||
if colors == "" then colors == "c"
|
||||
|
||||
# 'shape' / type of hybrid
|
||||
shape := if chosen(choice:"horizontal") then "horizontal"
|
||||
else if chosen(choice:"vertical") then "vertical"
|
||||
else if chosen(choice:"overlay") then "overlay"
|
||||
else "radial"
|
||||
|
||||
# Determine background (allows styles to hook something else here)
|
||||
color_combination()
|
||||
}
|
||||
|
||||
color_combination := {
|
||||
# The base hybrid, without the outer frame blended over it
|
||||
base := base_hybrid[shape][color_count]()
|
||||
|
||||
# Put a frame around it?
|
||||
if land and not colored_lands then
|
||||
masked_blend(
|
||||
mask: "multicolor_blend_{type}.png",
|
||||
dark: land_template("c"),
|
||||
light: base,
|
||||
)
|
||||
else if land and multi and mask_multi_land_with_color() then
|
||||
masked_blend(
|
||||
mask: "hybrid_blend_{type}.png",
|
||||
dark: base,
|
||||
light: land_template("m"),
|
||||
)
|
||||
else if multi and artifact then
|
||||
masked_blend(
|
||||
mask: "artifact_blend_{type}.png",
|
||||
dark: template("a"),
|
||||
light: masked_blend(
|
||||
mask: "multicolor_blend_{type}.png",
|
||||
dark: template("m"),
|
||||
light: base
|
||||
)
|
||||
)
|
||||
else if multi then
|
||||
masked_blend(
|
||||
mask: "multicolor_blend_{type}.png",
|
||||
dark: template("m"),
|
||||
light: base,
|
||||
)
|
||||
else if artifact and color_count > 1 and mask_hybrid_with_land() then
|
||||
masked_blend(
|
||||
mask: "artifact_blend_{type}.png",
|
||||
dark: template("a"),
|
||||
light: masked_blend(
|
||||
mask: "multicolor_blend_{type}.png",
|
||||
dark: template("c"),
|
||||
light: base
|
||||
)
|
||||
)
|
||||
else if artifact then
|
||||
masked_blend(
|
||||
mask: "artifact_blend_{type}.png",
|
||||
dark: template("a"),
|
||||
light: base,
|
||||
)
|
||||
else if color_count > 1 and mask_hybrid_with_land() then
|
||||
masked_blend(
|
||||
mask: "hybrid_blend_{type}.png",
|
||||
dark: land_template("c"),
|
||||
light: base,
|
||||
)
|
||||
else base
|
||||
}
|
||||
|
||||
########################################################################
|
||||
# Specific types
|
||||
########################################################################
|
||||
|
||||
card_background := { color_background(type:"card", base_hybrid:card_hybrid) }
|
||||
card_ptbox := { color_background(type:"pt", base_hybrid:pt_hybrid) }
|
||||
flip_ptbox := { color_background(type:"pt", base_hybrid:flip_pt_hybrid) }
|
||||
flip_ptbox2 := { color_background(type:"pt2", base_hybrid:flip_pt_hybrid2) }
|
||||
leveler_ptbox := { color_background(type:"pt", base_hybrid:leveler_pt_hybrid) }
|
||||
leveler_ptbox2 := { color_background(type:"pt", base_hybrid:leveler_pt_hybrid2) }
|
||||
leveler_ptbox3 := { color_background(type:"pt", base_hybrid:leveler_pt_hybrid3) }
|
||||
card_textbox := { color_background(type:"textbox", base_hybrid:textbox_hybrid) }
|
||||
card_typeline := { color_background(type:"typeline", base_hybrid:typeline_hybrid) }
|
||||
card_identity := { color_background(type:"identity", base_hybrid:identity_hybrid) }
|
||||
card_identity_2 := { color_background(type:"identity2", base_hybrid:identity_hybrid) }
|
||||
card_stamp := { color_background(type:"stamp", base_hybrid:stamp_hybrid) }
|
||||
card_stamp2 := { color_background(type:"stamp", base_hybrid:stamp_hybrid) }
|
||||
|
||||
flip_background := {
|
||||
linear_blend(
|
||||
image1: card_background(top)
|
||||
image2: card_background(bottom)
|
||||
x1: 0, y1: 0.4
|
||||
x2: 0, y2: 0.6
|
||||
)
|
||||
}
|
||||
|
||||
########################################################################
|
||||
# Font colors
|
||||
########################################################################
|
||||
|
||||
# For which colors is the font white?
|
||||
font_colors_white := { input == "b" or input == "l" }
|
||||
|
||||
font_color_positions := [
|
||||
radial: [0,0,0,2,3,3,4,4]
|
||||
horizontal: [0,0,0,0,0,0,0,0]
|
||||
vertical: [0,0,1,2,3,4,5,6]
|
||||
overlay: [0,0,0,0,0,0,0,0]
|
||||
]
|
||||
|
||||
# Determine whether light or dark fonts should be used
|
||||
font_white := {
|
||||
hybrid := chosen(choice:"hybrid")
|
||||
artifact := chosen(choice:"artifact")
|
||||
colors := sort_text( order: "(wubrg)"
|
||||
, (if chosen(choice:"white") then "w")
|
||||
+ (if chosen(choice:"blue") then "u")
|
||||
+ (if chosen(choice:"black") then "b")
|
||||
+ (if chosen(choice:"red") then "r")
|
||||
+ (if chosen(choice:"green") then "g"))
|
||||
+ (if artifact then "a")
|
||||
font_colors_white(
|
||||
if chosen(choice:"land") then "l"
|
||||
else if input == "artifact, multicolor" then "a"
|
||||
else if chosen(choice:"multicolor") then "m"
|
||||
else if artifact and not hybrid then "a"
|
||||
else if colors == "" then "c"
|
||||
else colors[
|
||||
font_color_positions[
|
||||
if chosen(choice:"horizontal") then "horizontal"
|
||||
else if chosen(choice:"vertical") then "vertical"
|
||||
else if chosen(choice:"overlay") then "overlay"
|
||||
else "radial"
|
||||
][number_of_items(in: colors)]
|
||||
]
|
||||
)
|
||||
}
|
||||
|
||||
font_color := { if font_white() then rgb(255,255,255) else rgb(0,0,0) }
|
||||
|
||||
#####Watermark Blending
|
||||
watermark_hybrid:= {
|
||||
linear_blend(
|
||||
image1: colors[0] + input + ".png"
|
||||
image2: colors[1] + input + ".png"
|
||||
x1: 0.4, y1: 0
|
||||
x2: 0.6, y2: 0
|
||||
)
|
||||
}
|
||||
set_watermark_blend := {
|
||||
set_alpha(
|
||||
alpha: 0.75
|
||||
input:
|
||||
linear_blend(
|
||||
image1:
|
||||
masked_blend(
|
||||
light: "/magic-watermarks.mse-include/sets/" + input + ".png"
|
||||
dark: "/magic-watermarks.mse-include/sets/" + watermark_colors().0 + "mark.png"
|
||||
mask: "/magic-watermarks.mse-include/sets/" + input + ".png"
|
||||
)
|
||||
image2:
|
||||
masked_blend(
|
||||
light: "/magic-watermarks.mse-include/sets/" + input + ".png"
|
||||
dark: "/magic-watermarks.mse-include/sets/" + watermark_colors().1 + "mark.png"
|
||||
mask: "/magic-watermarks.mse-include/sets/" + input + ".png"
|
||||
)
|
||||
x1: 0.4, y1: 0
|
||||
x2: 0.6, y2: 0
|
||||
)
|
||||
)
|
||||
}
|
||||
spotlight_watermark_blend := {
|
||||
set_alpha(
|
||||
alpha: 0.75
|
||||
input:
|
||||
linear_blend(
|
||||
image1:
|
||||
masked_blend(
|
||||
light: "/magic-watermarks.mse-include/planeswalker.png"
|
||||
dark: "/magic-watermarks.mse-include/spotlight/" + watermark_colors().0 + "spotlight.png"
|
||||
mask: "/magic-watermarks.mse-include/planeswalker.png"
|
||||
)
|
||||
image2:
|
||||
masked_blend(
|
||||
light: "/magic-watermarks.mse-include/planeswalker.png"
|
||||
dark: "/magic-watermarks.mse-include/spotlight/" + watermark_colors().1 + "spotlight.png"
|
||||
mask: "/magic-watermarks.mse-include/planeswalker.png"
|
||||
)
|
||||
x1: 0.4, y1: 0
|
||||
x2: 0.6, y2: 0
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
|
||||
add cards script:
|
||||
name: &Basic Lands
|
||||
description: Adds 5 basic lands to the set (Plains, Island, Swamp, Mountain, Forest)
|
||||
script:
|
||||
# TODO:
|
||||
#show_yes_no_dialog("This set already contains basic lands, do you want to add more?")
|
||||
[ new_card([name: "Plains", super_type: "Basic Land", sub_type: "Plains", rarity: "basic land", watermark: "mana symbol white"])
|
||||
, new_card([name: "Island", super_type: "Basic Land", sub_type: "Island", rarity: "basic land", watermark: "mana symbol blue"])
|
||||
, new_card([name: "Swamp", super_type: "Basic Land", sub_type: "Swamp", rarity: "basic land", watermark: "mana symbol black"])
|
||||
, new_card([name: "Mountain", super_type: "Basic Land", sub_type: "Mountain", rarity: "basic land", watermark: "mana symbol red"])
|
||||
, new_card([name: "Forest", super_type: "Basic Land", sub_type: "Forest", rarity: "basic land", watermark: "mana symbol green"])
|
||||
]
|
||||
|
||||
add cards script:
|
||||
name: &Basic Snow-Covered Lands
|
||||
description: Adds 5 basic snow-covered lands to the set (Plains, Island, Swamp, Mountain, Forest)
|
||||
script:
|
||||
# TODO:
|
||||
#show_yes_no_dialog("This set already contains basic snow-covered lands, do you want to add more?")
|
||||
[ new_card([name: "Snow-Covered Plains", super_type: "Basic Snow Land", sub_type: "Plains", rarity: "common", watermark: "mana symbol white"])
|
||||
, new_card([name: "Snow-Covered Island", super_type: "Basic Snow Land", sub_type: "Island", rarity: "common", watermark: "mana symbol blue"])
|
||||
, new_card([name: "Snow-Covered Swamp", super_type: "Basic Snow Land", sub_type: "Swamp", rarity: "common", watermark: "mana symbol black"])
|
||||
, new_card([name: "Snow-Covered Mountain", super_type: "Basic Snow Land", sub_type: "Mountain", rarity: "common", watermark: "mana symbol red"])
|
||||
, new_card([name: "Snow-Covered Forest", super_type: "Basic Snow Land", sub_type: "Forest", rarity: "common", watermark: "mana symbol green"])
|
||||
]
|
||||
|
||||
#add cards script:
|
||||
# name: &Many Empty Cards
|
||||
# script:
|
||||
# # TODO:
|
||||
# #count := show_number_dialog("How many cards should be added?")
|
||||
# count := 1
|
||||
# for _ from 1 to count do [new_card()]
|
||||
|
||||
add cards script:
|
||||
name: &Common Cycle
|
||||
description: Add a common card of each color to the set
|
||||
script:
|
||||
# TODO:
|
||||
#rarity := show_text_dialog("What rarity should the cards be?")
|
||||
[ new_card([casting_cost: "W"])
|
||||
, new_card([casting_cost: "U"])
|
||||
, new_card([casting_cost: "B"])
|
||||
, new_card([casting_cost: "R"])
|
||||
, new_card([casting_cost: "G"])
|
||||
]
|
||||
add cards script:
|
||||
name: &Uncommon Cycle
|
||||
description: Add an uncommon card of each color to the set
|
||||
script:
|
||||
[ new_card([casting_cost: "W", rarity: "uncommon"])
|
||||
, new_card([casting_cost: "U", rarity: "uncommon"])
|
||||
, new_card([casting_cost: "B", rarity: "uncommon"])
|
||||
, new_card([casting_cost: "R", rarity: "uncommon"])
|
||||
, new_card([casting_cost: "G", rarity: "uncommon"])
|
||||
]
|
||||
add cards script:
|
||||
name: &Rare Cycle
|
||||
description: Adds a rare card of each color to the set
|
||||
script:
|
||||
[ new_card([casting_cost: "W", rarity: "rare"]) , new_card([casting_cost: "U", rarity: "rare"]) , new_card([casting_cost: "B", rarity: "rare"]) , new_card([casting_cost: "R", rarity: "rare"]) , new_card([casting_cost: "G", rarity: "rare"]) ]
|
||||
|
||||
add cards script:
|
||||
name: &Cube
|
||||
description: Custom list of cube cards
|
||||
script:
|
||||
[
|
||||
new_card([ name: "Thousand-Faced Shadow", super_type: "Creature", sub_type: "Human Ninja", rule_text: "Ninjutsu [2][U][U] ([2][U][U], Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand tapped and attacking.)\nFlying\nWhen Thousand-Faced Shadow enters the battlefield from your hand, if it's attacking, create a token that's a copy of another target attacking creature. The token enters the battlefield tapped and attacking.", casting_cost: "U", power: "1", toughness: "1", illustrator: "Ekaterina Burmak", card_color: "blue", rarity: "mythic rare"])
|
||||
, new_card([ name: "Sea Gate Stormcaller", super_type: "Creature", sub_type: "Human Wizard", rule_text: "Kicker [4][U]\nWhen Sea Gate Stormcaller enters the battlefield, copy the next instant or sorcery spell with mana value 2 or less you cast this turn when you cast it. If Sea Gate Stormcaller was kicked, copy that spell twice instead. You may choose new targets for the copies.", casting_cost: "1U", power: "2", toughness: "1", illustrator: "Anna Steinbauer", card_color: "blue", rarity: "mythic rare"])
|
||||
, new_card([ name: "Thieving Skydiver", super_type: "Creature", sub_type: "Merfolk Rogue", rule_text: "Kicker [X]. X can't be 0. (You may pay an additional [X] as you cast this spell.)\nFlying\nWhen Thieving Skydiver enters the battlefield, if it was kicked, gain control of target artifact with mana value X or less. If that artifact is an Equipment, attach it to Thieving Skydiver.", casting_cost: "1U", power: "2", toughness: "1", illustrator: "Kieran Yanner", card_color: "blue", rarity: "mythic rare"])
|
||||
, new_card([ name: "Watcher for Tomorrow", super_type: "Creature", sub_type: "Human Wizard", rule_text: "Hideaway 4 (When this creature enters the battlefield, look at the top four cards of your library, exile one face down, then put the rest on the bottom in a random order.)\nWatcher for Tomorrow enters the battlefield tapped.\nWhen Watcher for Tomorrow leaves the battlefield, put the exiled card into its owner's hand.", casting_cost: "1U", power: "2", toughness: "1", illustrator: "Tommy Arnold", card_color: "blue", rarity: "mythic rare"])
|
||||
, new_card([ name: "Snap", super_type: "Instant", rule_text: "Return target creature to its owner's hand. Untap up to two lands.", flavor_text: "Good riddance.", casting_cost: "1U", illustrator: "Mike Raabe", card_color: "blue", rarity: "mythic rare"])
|
||||
, new_card([ name: "Thopter Foundry", super_type: "Artifact", rule_text: "[1], Sacrifice a nontoken artifact: Create a 1/1 blue Thopter artifact creature token with flying. You gain 1 life.", flavor_text: "\"Etherium is limited. Innovation is not.\"\n—Tezzeret", casting_cost: "W/BU", illustrator: "Ralph Horsley", card_color: "black, blue, white", rarity: "mythic rare"])
|
||||
, new_card([ name: "Sword of the Meek", super_type: "Artifact", sub_type: "Equipment", rule_text: "Equipped creature gets +1/+2.\nEquip [2]\nWhenever a 1/1 creature enters the battlefield under your control, you may return Sword of the Meek from your graveyard to the battlefield, then attach it to that creature.", casting_cost: "2", illustrator: "Franz Vohwinkel", rarity: "mythic rare"])
|
||||
, new_card([ name: "Infernal Grasp", super_type: "Instant", rule_text: "Destroy target creature. You lose 2 life.", flavor_text: "Ancient evils dwell within the burning chasm called the Ashmouth, ever ready to devour those foolish enough to travel alone.", casting_cost: "1B", illustrator: "Naomi Baker", card_color: "black", rarity: "mythic rare"])
|
||||
, new_card([ name: "Dualcaster Mage", super_type: "Creature", sub_type: "Human Wizard", rule_text: "Flash\nWhen Dualcaster Mage enters the battlefield, copy target instant or sorcery spell. You may choose new targets for the copy.", flavor_text: "\"It has been my experience that disasters like to strike in pairs.\"", casting_cost: "1RR", power: "2", toughness: "2", illustrator: "Matt Stewart", card_color: "red", rarity: "mythic rare"])
|
||||
, new_card([ name: "Burst Lightning", super_type: "Instant", rule_text: "Kicker [4] (You may pay an additional [4] as you cast this spell.)\nBurst Lightning deals 2 damage to any target. If this spell was kicked, it deals 4 damage instead.", casting_cost: "R", illustrator: "Vance Kovacs", card_color: "red", rarity: "mythic rare"])
|
||||
, new_card([ name: "Rite of Flame", super_type: "Sorcery", rule_text: "Add [R][R], then add [R] for each card named Rite of Flame in each graveyard.", flavor_text: "Deep beneath the ice, beneath the soil and the rock, Dominaria's fire still burned hot.", casting_cost: "R", illustrator: "Dany Orizio", card_color: "red", rarity: "mythic rare"])
|
||||
, new_card([ name: "Cathartic Reunion", super_type: "Sorcery", rule_text: "As an additional cost to cast this spell, discard two cards.\nDraw three cards.", flavor_text: "The chasm of years and worlds collapsed under the power of their embrace.", casting_cost: "1R", illustrator: "Howard Lyon", card_color: "red", rarity: "mythic rare"])
|
||||
, new_card([ name: "Finale of Promise", super_type: "Sorcery", rule_text: "You may cast up to one target instant card and/or up to one target sorcery card from your graveyard each with mana value X or less without paying their mana costs. If a spell cast this way would be put into your graveyard, exile it instead. If X is 10 or more, copy each of those spells twice. You may choose new targets for the copies.", casting_cost: "XRR", illustrator: "Jaime Jones", card_color: "red", rarity: "mythic rare"])
|
||||
, new_card([ name: "Endurance", super_type: "Creature", sub_type: "Elemental Incarnation", rule_text: "Flash\nReach\nWhen Endurance enters the battlefield, up to one target player puts all the cards from their graveyard on the bottom of their library in a random order.\nEvoke—Exile a green card from your hand.", casting_cost: "1GG", power: "3", toughness: "4", illustrator: "Svetlin Velinov", card_color: "green", rarity: "mythic rare"])
|
||||
, new_card([ name: "Arboreal Grazer", super_type: "Creature", sub_type: "Beast", rule_text: "Reach\nWhen Arboreal Grazer enters the battlefield, you may put a land card from your hand onto the battlefield tapped.", flavor_text: "\"We fight to stop a tyrant, but we also fight for the gentle creatures who have no concept of what befalls their world.\"\n—Vivien Reid", casting_cost: "G", power: "0", toughness: "3", illustrator: "Jason Rainville", card_color: "green", rarity: "mythic rare"])
|
||||
, new_card([ name: "Avacyn's Pilgrim", super_type: "Creature", sub_type: "Human Monk", rule_text: "[T]: Add [W].", flavor_text: "\"Avacyn's protection is everywhere. From the holy church to the sacred glade, all that we see is under her blessed watch.\"", casting_cost: "G", power: "1", toughness: "1", illustrator: "Jana Schirmer & Johannes Voss", card_color: "green, white", rarity: "mythic rare"])
|
||||
, new_card([ name: "Elvish Mystic", super_type: "Creature", sub_type: "Elf Druid", rule_text: "[T]: Add [G].", flavor_text: "\"Life grows everywhere. My kin merely find those places where it grows strongest.\"\n—Nissa Revane", casting_cost: "G", power: "1", toughness: "1", illustrator: "Wesley Burt", card_color: "green", rarity: "mythic rare"])
|
||||
, new_card([ name: "Krark, the Thumbless", super_type: "Legendary Creature", sub_type: "Goblin Wizard", rule_text: "Whenever you cast an instant or sorcery spell, flip a coin. If you lose the flip, return that spell to its owner's hand. If you win the flip, copy that spell, and you may choose new targets for the copy.\nPartner (You can have two commanders if both have partner.)", flavor_text: "\"Double or nothing.\"", casting_cost: "1R", power: "2", toughness: "2", illustrator: "Mathias Kollros", card_color: "red", rarity: "mythic rare"])
|
||||
, new_card([ name: "Oni-Cult Anvil", super_type: "Artifact", rule_text: "Whenever one or more artifacts you control leave the battlefield during your turn, create a 1/1 colorless Construct artifact creature token. This ability triggers only once each turn.\n[T], Sacrifice an artifact: Oni-Cult Anvil deals 1 damage to each opponent. You gain 1 life.", casting_cost: "BR", illustrator: "Yeong-Hao Han", card_color: "black, red", rarity: "mythic rare"])
|
||||
, new_card([ name: "Prismari Command", super_type: "Instant", rule_text: "Choose two —\n• Prismari Command deals 2 damage to any target.\n• Target player draws two cards, then discards two cards.\n• Target player creates a Treasure token.\n• Destroy target artifact.", casting_cost: "1UR", illustrator: "Johannes Voss", card_color: "red, blue", rarity: "mythic rare"])
|
||||
, new_card([ name: "Korvold, Fae-Cursed King", super_type: "Legendary Creature", sub_type: "Dragon Noble", rule_text: "Flying\nWhenever Korvold, Fae-Cursed King enters the battlefield or attacks, sacrifice another permanent.\nWhenever you sacrifice a permanent, put a +1/+1 counter on Korvold and draw a card.", flavor_text: "Transformed at his own wedding, he promptly ate the banquet, the gifts, and the guests.", casting_cost: "2BRG", power: "4", toughness: "4", illustrator: "Wisnu Tan", card_color: "black, green, red", rarity: "mythic rare"])
|
||||
, new_card([ name: "Sol Ring", super_type: "Artifact", rule_text: "[T]: Add [C][C].", casting_cost: "1", illustrator: "Mark Tedin", rarity: "mythic rare"])
|
||||
, new_card([ name: "Witch's Oven", super_type: "Artifact", rule_text: "[T], Sacrifice a creature: Create a Food token. If the sacrificed creature's toughness was 4 or greater, create two Food tokens instead. (They're artifacts with \"[2], [T], Sacrifice this artifact: You gain 3 life.\")", flavor_text: "The wafting smells are both scrumptious and suspicious.", casting_cost: "1", illustrator: "Alexander Forssberg", rarity: "mythic rare"])
|
||||
, new_card([ name: "Silver Raven", super_type: "Artifact Creature", sub_type: "Bird", rule_text: "Flying\nWhen Silver Raven enters the battlefield, scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.)", flavor_text: "Wings take flight on whispered wind.", casting_cost: "U", power: "1", toughness: "1", illustrator: "Joe Slucher", card_color: "blue", rarity: "mythic rare"])
|
||||
]
|
||||
@@ -0,0 +1,189 @@
|
||||
|
||||
############################################################## 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: 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: CIP
|
||||
replace: enters the battlefield
|
||||
auto replace:
|
||||
match: AAA
|
||||
replace: as an additional cost to cast
|
||||
auto replace:
|
||||
match: @
|
||||
replace: LEGENDNAME
|
||||
auto replace:
|
||||
match: ~
|
||||
replace: CARDNAME
|
||||
auto replace:
|
||||
match: ::
|
||||
replace: •
|
||||
auto replace:
|
||||
match: ->
|
||||
replace: •
|
||||
auto replace:
|
||||
match: ETB
|
||||
replace: enters the battlefield
|
||||
auto replace:
|
||||
match: etbt
|
||||
replace: enters the battlefield tapped
|
||||
auto replace:
|
||||
match: phyW
|
||||
replace: ([H/W] can be paid with either [W] or 2 life.)
|
||||
auto replace:
|
||||
match: phyU
|
||||
replace: ([H/U] can be paid with either [U] or 2 life.)
|
||||
auto replace:
|
||||
match: phyB
|
||||
replace: ([H/B] can be paid with either [B] or 2 life.)
|
||||
auto replace:
|
||||
match: phyR
|
||||
replace: ([H/R] can be paid with either [R] or 2 life.)
|
||||
auto replace:
|
||||
match: phyG
|
||||
replace: ([H/G] can be paid with either [G] or 2 life.)
|
||||
auto replace:
|
||||
match: twoW
|
||||
replace: ([2/W] can be paid with any two mana or with [W].)
|
||||
auto replace:
|
||||
match: twoU
|
||||
replace: ([2/U] can be paid with any two mana or with [U].)
|
||||
auto replace:
|
||||
match: twoB
|
||||
replace: ([2/B] can be paid with any two mana or with [B].)
|
||||
auto replace:
|
||||
match: twoR
|
||||
replace: ([2/R] can be paid with any two mana or with [R].)
|
||||
auto replace:
|
||||
match: twoG
|
||||
replace: ([2/G] can be paid with any two mana or with [G].)
|
||||
auto replace:
|
||||
match: TWALK
|
||||
replace: Take an extra turn after this one.
|
||||
auto replace:
|
||||
match: TAW
|
||||
replace: [T]: Add [W] to your mana pool.
|
||||
auto replace:
|
||||
match: TAU
|
||||
replace: [T]: Add [U] to your mana pool.
|
||||
auto replace:
|
||||
match: TAB
|
||||
replace: [T]: Add [B] to your mana pool.
|
||||
auto replace:
|
||||
match: TAR
|
||||
replace: [T]: Add [R] to your mana pool.
|
||||
auto replace:
|
||||
match: TAG
|
||||
replace: [T]: Add [G] to your mana pool.
|
||||
auto replace:
|
||||
match: TAC
|
||||
replace: [T]: Add [C] to your mana pool.
|
||||
auto replace:
|
||||
match: TWU
|
||||
replace: [T]: Add [W] or [U] to your mana pool.
|
||||
auto replace:
|
||||
match: TUB
|
||||
replace: [T]: Add [U] or [B] to your mana pool.
|
||||
auto replace:
|
||||
match: TBR
|
||||
replace: [T]: Add [B] or [R] to your mana pool.
|
||||
auto replace:
|
||||
match: TRG
|
||||
replace: [T]: Add [R] or [G] to your mana pool.
|
||||
auto replace:
|
||||
match: TGW
|
||||
replace: [T]: Add [G] or [W] to your mana pool.
|
||||
auto replace:
|
||||
match: TWB
|
||||
replace: [T]: Add [W] or [B] to your mana pool.
|
||||
auto replace:
|
||||
match: TUR
|
||||
replace: [T]: Add [U] or [R] to your mana pool.
|
||||
auto replace:
|
||||
match: TBG
|
||||
replace: [T]: Add [B] or [G] to your mana pool.
|
||||
auto replace:
|
||||
match: TRW
|
||||
replace: [T]: Add [R] or [W] to your mana pool.
|
||||
auto replace:
|
||||
match: TGU
|
||||
replace: [T]: Add [G] or [U] to your mana pool.
|
||||
auto replace:
|
||||
match: twub
|
||||
replace: [T]: Add [W], [U], or [B] to your mana pool.
|
||||
auto replace:
|
||||
match: tubr
|
||||
replace: [T]: Add [U], [B], or [R] to your mana pool.
|
||||
auto replace:
|
||||
match: tbrg
|
||||
replace: [T]: Add [B], [R], or [G] to your mana pool.
|
||||
auto replace:
|
||||
match: trgw
|
||||
replace: [T]: Add [R], [G], or [W] to your mana pool.
|
||||
auto replace:
|
||||
match: tgwu
|
||||
replace: [T]: Add [G], [W] or [U] to your mana pool.
|
||||
auto replace:
|
||||
match: twbg
|
||||
replace: [T]: Add [W], [B], or [G] to your mana pool.
|
||||
auto replace:
|
||||
match: turw
|
||||
replace: [T]: Add [U], [R], or [W] to your mana pool.
|
||||
auto replace:
|
||||
match: tbgu
|
||||
replace: [T]: Add [B], [G], or [U] to your mana pool.
|
||||
auto replace:
|
||||
match: trwb
|
||||
replace: [T]: Add [R], [W], or [B] to your mana pool.
|
||||
auto replace:
|
||||
match: tgur
|
||||
replace: [T]: Add [G], [U], or [R] to your mana pool.
|
||||
auto replace:
|
||||
match: twbr
|
||||
replace: [T]: Add [W], [B], or [R] to your mana pool.
|
||||
auto replace:
|
||||
match: turg
|
||||
replace: [T]: Add [U], [R], or [G] to your mana pool.
|
||||
auto replace:
|
||||
match: tbgw
|
||||
replace: [T]: Add [B], [G], or [W] to your mana pool.
|
||||
auto replace:
|
||||
match: trwu
|
||||
replace: [T]: Add [R], [W], or [U] to your mana pool.
|
||||
auto replace:
|
||||
match: tgub
|
||||
replace: [T]: Add [G], [U], or [B] to your mana pool.
|
||||
auto replace:
|
||||
match: WTD
|
||||
replace: When CARDNAME dies
|
||||
auto replace:
|
||||
match: WTT
|
||||
replace: Whenever CARDNAME becomes the target of a spell
|
||||
auto replace:
|
||||
match: ANYCARD
|
||||
replace: Search your library for a card and put that card into your hand. Then shuffle your library.
|
||||
auto replace:
|
||||
match: TUTOR
|
||||
replace: Search your library for a card, reveal it, and put it into your hand. Then shuffle your library.
|
||||
|
After Width: | Height: | Size: 20 KiB |
@@ -0,0 +1,786 @@
|
||||
############################################################## Card fields
|
||||
|
||||
############################# Automatic fields
|
||||
|
||||
# The 'shape' of the card (flip, split, etc.)
|
||||
card field:
|
||||
type: choice
|
||||
name: shape
|
||||
save value: false
|
||||
show statistics: false
|
||||
editable: false
|
||||
choice: normal
|
||||
choice: token
|
||||
choice: flip
|
||||
choice: split
|
||||
choice: fuse split
|
||||
choice: double faced
|
||||
choice: planeswalker
|
||||
choice: shifted
|
||||
choice: rulestip
|
||||
choice: leveler
|
||||
choice: augment
|
||||
choice: counter
|
||||
choice: checklist
|
||||
choice: emblem
|
||||
script:
|
||||
stylesheet # indicate that this value should be updated when the stylesheet changes
|
||||
card_shape() # determined by the style
|
||||
card field:
|
||||
type: text
|
||||
name: full name
|
||||
save value: false
|
||||
show statistics: false
|
||||
editable: false
|
||||
card list visible: true
|
||||
card list name: Name
|
||||
card list column: 1
|
||||
card list width: 150
|
||||
description: The name of the card
|
||||
script: if contains(card.shape, match:"split") or contains(card.shape, match:"flip") or contains(card.shape, match:"double faced") then card.name + " // " + card.name_2 else card.name
|
||||
############################# Background stuff
|
||||
card field:
|
||||
type: color
|
||||
name: border color
|
||||
default: set.border_color
|
||||
choice:
|
||||
name: black
|
||||
color: rgb(0,0,0)
|
||||
choice:
|
||||
name: white
|
||||
color: rgb(255,255,255)
|
||||
choice:
|
||||
name: silver
|
||||
color: rgb(128,128,128)
|
||||
choice:
|
||||
name: gold
|
||||
color: rgb(200,180,0)
|
||||
show statistics: false
|
||||
description: The border of the card; can be any solid color.
|
||||
card field:
|
||||
type: multiple choice
|
||||
name: card color
|
||||
empty choice: colorless
|
||||
choice: white
|
||||
choice: blue
|
||||
choice: black
|
||||
choice: red
|
||||
choice:
|
||||
name: green
|
||||
line below: true
|
||||
choice: artifact
|
||||
choice: land
|
||||
choice: multicolor
|
||||
choice:
|
||||
name: hybrid
|
||||
enabled: { card_color_color_count(card.card_color) >= 2 }
|
||||
line below: true
|
||||
choice:
|
||||
name: horizontal
|
||||
enabled: { card_color_color_count(card.card_color) >= 2 }
|
||||
type: radio
|
||||
choice:
|
||||
name: vertical
|
||||
enabled: { card_color_color_count(card.card_color) >= 2 }
|
||||
type: radio
|
||||
choice:
|
||||
name: radial
|
||||
enabled: { card_color_color_count(card.card_color) >= 2 }
|
||||
type: radio
|
||||
choice:
|
||||
name: overlay
|
||||
enabled: { card_color_color_count(card.card_color) == 2 and chosen(choice:"hybrid",card.card_color) }
|
||||
type: radio
|
||||
choice:
|
||||
name: reversed
|
||||
enabled: { card_color_color_count(card.card_color) >= 2 and not chosen(choice:"overlay",card.card_color) }
|
||||
script: card_color_filter(value)
|
||||
default: card_color(casting_cost: card.casting_cost, rules_text: card.rule_text, type: card.super_type, watermark: card.watermark, card_name: card.name, default: "colorless")
|
||||
show statistics: false
|
||||
description: The frame of the card, used to indicate card color.
|
||||
|
||||
############################# Name line
|
||||
card field:
|
||||
type: text
|
||||
name: name
|
||||
card list visible: false
|
||||
identifying: true
|
||||
show statistics: false
|
||||
description: The name of the card
|
||||
card field:
|
||||
type: text
|
||||
name: casting cost
|
||||
icon: stats/casting_cost.png
|
||||
position hint: 1
|
||||
script: mana_filter(value)
|
||||
card list visible: true
|
||||
card list column: 2
|
||||
card list alignment: right
|
||||
card list width: 50
|
||||
card list name: CC
|
||||
description: The casting cost of the card
|
||||
card field:
|
||||
type: choice
|
||||
name: card symbol
|
||||
position hint: 10
|
||||
icon: stats/card_symbol.png
|
||||
choice: none
|
||||
choice: tombstone
|
||||
description: Symbol for this card (tombstone)
|
||||
card field:
|
||||
type: choice
|
||||
name: type symbol
|
||||
default: typesymbol_type(type: card.super_type)
|
||||
card list visible: false
|
||||
show statistics: false
|
||||
choice: artifact
|
||||
choice: creature
|
||||
choice: enchantment
|
||||
choice: instant
|
||||
choice: land
|
||||
choice: multitype
|
||||
choice: planeswalker
|
||||
choice: sorcery
|
||||
choice: none
|
||||
description: The card type symbol for this card
|
||||
card field:
|
||||
type: choice
|
||||
name: transformation
|
||||
choice: day
|
||||
choice: night
|
||||
description: On transforming cards, is this the day or the night side?
|
||||
show statistics: false
|
||||
card field:
|
||||
type: multiple choice
|
||||
name: indicator
|
||||
empty choice: colorless
|
||||
choice: white
|
||||
choice: blue
|
||||
choice: black
|
||||
choice: red
|
||||
choice:
|
||||
name: green
|
||||
line below: true
|
||||
choice: artifact
|
||||
choice: land
|
||||
choice: multicolor
|
||||
choice:
|
||||
name: hybrid
|
||||
enabled: { card_color_color_count(card.card_color) >= 2 }
|
||||
line below: true
|
||||
choice:
|
||||
name: horizontal
|
||||
enabled: { card_color_color_count(card.card_color) >= 2 }
|
||||
type: radio
|
||||
choice:
|
||||
name: vertical
|
||||
enabled: { card_color_color_count(card.card_color) >= 2 }
|
||||
type: radio
|
||||
choice:
|
||||
name: radial
|
||||
enabled: { card_color_color_count(card.card_color) >= 2 }
|
||||
type: radio
|
||||
choice:
|
||||
name: overlay
|
||||
enabled: { card_color_color_count(card.card_color) == 2 and chosen(choice:"hybrid",card.card_color) }
|
||||
type: radio
|
||||
choice:
|
||||
name: reversed
|
||||
enabled: { card_color_color_count(card.card_color) >= 2 and not chosen(choice:"overlay",card.card_color) }
|
||||
script: card_color_filter(value)
|
||||
default: card.card_color
|
||||
show statistics: false
|
||||
description: The color indicator of the card, used to indicate card color.
|
||||
|
||||
############################# Image
|
||||
card field:
|
||||
type: image
|
||||
name: image
|
||||
show statistics: false
|
||||
description: The image of the card
|
||||
|
||||
############################# Card type
|
||||
card field:
|
||||
type: text
|
||||
name: super type
|
||||
icon: stats/card_type.png
|
||||
position hint: 30
|
||||
script: super_type_filter(value)
|
||||
show statistics: false
|
||||
card field:
|
||||
type: text
|
||||
name: sub type
|
||||
icon: stats/creature_type.png
|
||||
position hint: 31
|
||||
script: sub_type_filter(value, type:card.super_type)
|
||||
card field:
|
||||
type: text
|
||||
name: type
|
||||
show statistics: false
|
||||
save value: false
|
||||
script:
|
||||
# Either just supertype, or subtype - supertype
|
||||
combined_editor(
|
||||
field1: card.super_type,
|
||||
separator: language().type_separator,
|
||||
field2: card.sub_type,
|
||||
soft_before_empty: true,
|
||||
hide_when_empty: true
|
||||
)
|
||||
card list visible: true
|
||||
card list column:4
|
||||
description: The type of this card, type - to go the sub type
|
||||
card field:
|
||||
type: choice
|
||||
name: rarity
|
||||
icon: stats/rarity.png
|
||||
position hint: 100
|
||||
choice: basic land
|
||||
choice: common
|
||||
choice: uncommon
|
||||
choice: rare
|
||||
choice: mythic rare
|
||||
choice: special
|
||||
initial: common
|
||||
card list visible: true
|
||||
card list column: 6
|
||||
description: The rarity of the card, to edit the symbol switch to the 'set info' tab
|
||||
choice colors:
|
||||
basic land: rgb(109,62,39)
|
||||
common: rgb(33,33,33)
|
||||
uncommon: rgb(224,224,224)
|
||||
mythic rare: rgb(202, 49, 35)
|
||||
rare: rgb(255,207,52)
|
||||
special: rgb(190,0,255)
|
||||
|
||||
############################# Text box
|
||||
card field:
|
||||
type: text
|
||||
name: rule text
|
||||
script: text_filter(input: value, card_name: card.name)
|
||||
show statistics: false
|
||||
multi line: true
|
||||
description: The rules text for the card
|
||||
card field:
|
||||
type: text
|
||||
name: flavor text
|
||||
script: flavor_text_filter(value)
|
||||
show statistics: false
|
||||
multi line: true
|
||||
description: The flavor text for the card
|
||||
card field:
|
||||
type: text
|
||||
name: text
|
||||
multi line: true
|
||||
save value: false
|
||||
show statistics: false
|
||||
script:
|
||||
combined_editor(field1: card.rule_text, separator: "<line>\n</line>", field2: card.flavor_text)
|
||||
description: The rules and flavor text for the card; use up and down arrows to switch
|
||||
card field:
|
||||
type: choice
|
||||
name: watermark
|
||||
icon: stats/watermark.png
|
||||
position hint: 200
|
||||
include file: /magic-watermarks.mse-include/watermark-names
|
||||
description: A watermark for below the textbox, this can be a big mana symbol used on basic lands, or a guild symbol
|
||||
|
||||
############################# Loyalty
|
||||
card field:
|
||||
type: text
|
||||
name: loyalty
|
||||
icon: stats/toughness.png
|
||||
position hint: 59
|
||||
description: The initial loyalty of a planeswalker
|
||||
card field:
|
||||
type: text
|
||||
name: loyalty cost 1
|
||||
show statistics: false
|
||||
description: The loyalty cost for the first ability of a planeswalker
|
||||
card field:
|
||||
type: text
|
||||
name: loyalty cost 2
|
||||
show statistics: false
|
||||
description: The loyalty cost for the second ability of a planeswalker
|
||||
card field:
|
||||
type: text
|
||||
name: loyalty cost 3
|
||||
show statistics: false
|
||||
description: The loyalty cost for the third ability of a planeswalker
|
||||
card field:
|
||||
type: text
|
||||
name: loyalty cost 4
|
||||
show statistics: false
|
||||
description: The loyalty cost for the fourth ability of a planeswalker
|
||||
default: if card.power_2 !="" then card.power_2 else card.power #For back compatibility with past templates. Take out a couple versions after 0.3.8
|
||||
card field:
|
||||
type: text
|
||||
name: loyalty cost 5
|
||||
show statistics: false
|
||||
description: The loyalty cost for the fifth ability of a planeswalker
|
||||
default: card.toughness_2 #For back compatibility with past templates. Take out a couple versions after 0.3.8
|
||||
card field:
|
||||
type: text
|
||||
name: loyalty cost 6
|
||||
show statistics: false
|
||||
description: The loyalty cost for the sixth ability of a planeswalker
|
||||
card field:
|
||||
type: text
|
||||
name: loyalty cost 7
|
||||
show statistics: false
|
||||
description: The loyalty cost for the seventh ability of a planeswalker
|
||||
card field:
|
||||
type: text
|
||||
name: loyalty cost 8
|
||||
show statistics: false
|
||||
description: The loyalty cost for the eighth ability of a planeswalker
|
||||
############################# Levels
|
||||
card field:
|
||||
type: text
|
||||
name: level 1
|
||||
description: The first level of a creature
|
||||
show statistics: false
|
||||
card field:
|
||||
type: text
|
||||
name: level 2
|
||||
description: The second level of a creature
|
||||
show statistics: false
|
||||
############################# PT
|
||||
card field:
|
||||
type: text
|
||||
name: power
|
||||
icon: stats/power.png
|
||||
show statistics: false
|
||||
script: type_over_pt(value)
|
||||
description: The power of a creature
|
||||
card field:
|
||||
type: text
|
||||
name: toughness
|
||||
show statistics: false
|
||||
icon: stats/toughness.png
|
||||
description: The toughness of a creature
|
||||
card field:
|
||||
type: text
|
||||
name: pt
|
||||
save value: false
|
||||
script:
|
||||
combined_editor(
|
||||
field1: card.power,
|
||||
separator: language().pt_separator,
|
||||
field2: card.toughness,
|
||||
soft_before_empty: true,
|
||||
hide_when_empty: true
|
||||
)
|
||||
card list visible: true
|
||||
card list column: 5
|
||||
card list width: 50
|
||||
card list name: P/T
|
||||
description: Power/toughness of a creature
|
||||
show statistics: false
|
||||
|
||||
############################# Card sorting / numbering
|
||||
card field:
|
||||
type: text
|
||||
name: card number
|
||||
save value: false
|
||||
script: card_number() + "/" + card_count()
|
||||
sort script: rarity_sort() + card.card_number
|
||||
card list visible: true
|
||||
card list column: 10
|
||||
card list width: 50
|
||||
card list name: #
|
||||
card list alignment: right
|
||||
editable: false
|
||||
show statistics: false
|
||||
card field:
|
||||
type: text
|
||||
name: card number m15
|
||||
save value: false
|
||||
script: card_number_m15() + "/" + card_count_m15()
|
||||
sort script: rarity_sort() + card.card_number
|
||||
card list visible: false
|
||||
editable: false
|
||||
show statistics: false
|
||||
card field:
|
||||
type: text
|
||||
name: custom card number
|
||||
save value: true
|
||||
editable: true
|
||||
show statistics: false
|
||||
card field:
|
||||
type: text
|
||||
name: set code
|
||||
editable: false
|
||||
save value: false
|
||||
script: set.set_code + " ⋅ " + set.set_language
|
||||
show statistics: false
|
||||
card field:
|
||||
type: text
|
||||
name: card code text
|
||||
editable: true
|
||||
save value: true
|
||||
show statistics: false
|
||||
############################# Copyright stuff
|
||||
card field:
|
||||
type: text
|
||||
name: illustrator
|
||||
icon: stats/illustrator.png
|
||||
position hint: 210
|
||||
default: set.artist
|
||||
description: Illustrator of this card, the default value can be changed on the 'set info' tab
|
||||
card field:
|
||||
type: text
|
||||
name: copyright
|
||||
default: set.copyright
|
||||
show statistics: false
|
||||
card field:
|
||||
type: text
|
||||
name: copyright line
|
||||
save value: false
|
||||
show statistics: false
|
||||
script:
|
||||
if set.automatic_card_numbers then
|
||||
combined_editor(field1: card.copyright, separator: " ", field2: card.card_number)
|
||||
else
|
||||
forward_editor(field: card.copyright)
|
||||
description: Copyright of this card and cardnumber, the default value can be changed on the 'set info' tab
|
||||
|
||||
############################################################## Duplicate fields (split/flip cards)
|
||||
# Based on flip templates by Wolfwood
|
||||
# These are a direct copy of the fields above, only with a 2
|
||||
|
||||
|
||||
card field:
|
||||
type: multiple choice
|
||||
name: card color 2
|
||||
icon: stats/card_color.png
|
||||
empty choice: colorless
|
||||
choice: white
|
||||
choice: blue
|
||||
choice: black
|
||||
choice: red
|
||||
choice:
|
||||
name: green
|
||||
line below: true
|
||||
choice: artifact
|
||||
choice: land
|
||||
choice: multicolor
|
||||
choice:
|
||||
name: hybrid
|
||||
enabled: { card_color_color_count(card.card_color_2) >= 2 }
|
||||
line below: true
|
||||
choice:
|
||||
name: horizontal
|
||||
enabled: { card_color_color_count(card.card_color_2) >= 2 }
|
||||
type: radio
|
||||
choice:
|
||||
name: vertical
|
||||
enabled: { card_color_color_count(card.card_color_2) >= 2 }
|
||||
type: radio
|
||||
choice:
|
||||
name: radial
|
||||
enabled: { card_color_color_count(card.card_color_2) >= 2 }
|
||||
type: radio
|
||||
choice:
|
||||
name: overlay
|
||||
enabled: { card_color_color_count(card.card_color_2) == 2 and chosen(choice:"hybrid",card.card_color_2) }
|
||||
type: radio
|
||||
choice:
|
||||
name: reversed
|
||||
enabled: { card_color_color_count(card.card_color) >= 2 and not chosen(choice:"overlay",card.card_color_2) }
|
||||
script: card_color_filter(value)
|
||||
default: card_color(casting_cost: card.casting_cost_2, type: card.super_type_2, rules_text: card.rule_text_2, watermark: card.watermark_2, card_name: card.name_2, default: card.card_color)
|
||||
show statistics: false
|
||||
description: The frame of a card
|
||||
card field:
|
||||
type: text
|
||||
name: name 2
|
||||
identifying: true
|
||||
show statistics: false
|
||||
description: The name of a card
|
||||
card field:
|
||||
type: text
|
||||
name: casting cost 2
|
||||
icon: stats/casting_cost.png
|
||||
script: mana_filter(value)
|
||||
card list alignment: right
|
||||
card list width: 50
|
||||
card list name: CC
|
||||
show statistics: false
|
||||
description: The casting cost of a card
|
||||
card field:
|
||||
type: text
|
||||
name: casting cost 3
|
||||
icon: stats/casting_cost.png
|
||||
script: mana_filter(value)
|
||||
show statistics: false
|
||||
description: The casting cost of a card
|
||||
card field:
|
||||
type: choice
|
||||
name: card symbol 2
|
||||
icon: stats/card_symbol.png
|
||||
choice: none
|
||||
choice: tombstone
|
||||
show statistics: false
|
||||
description: The card symbol of the card (Tombstone)
|
||||
card field:
|
||||
type: choice
|
||||
name: type symbol 2
|
||||
default: typesymbol_type(type: card.super_type_2)
|
||||
card list visible: false
|
||||
show statistics: false
|
||||
choice: artifact
|
||||
choice: creature
|
||||
choice: enchantment
|
||||
choice: instant
|
||||
choice: land
|
||||
choice: multitype
|
||||
choice: planeswalker
|
||||
choice: sorcery
|
||||
choice: none
|
||||
description: The card type symbol for this card
|
||||
card field:
|
||||
type: choice
|
||||
name: transformation 2
|
||||
choice: night
|
||||
choice: day
|
||||
description: On transforming cards, is this the day or the night side?
|
||||
show statistics: false
|
||||
card field:
|
||||
type: image
|
||||
name: image 2
|
||||
show statistics: false
|
||||
description: The image of the card
|
||||
card field:
|
||||
type: text
|
||||
name: super type 2
|
||||
icon: stats/creature_type.png
|
||||
show statistics: false
|
||||
script: super_type_filter(value)
|
||||
card field:
|
||||
type: text
|
||||
name: sub type 2
|
||||
icon: stats/creature_type.png
|
||||
show statistics: false
|
||||
script: sub_type_filter(value, type:card.super_type_2)
|
||||
card field:
|
||||
type: text
|
||||
name: type 2
|
||||
save value: false
|
||||
script:
|
||||
combined_editor(
|
||||
field1: card.super_type_2,
|
||||
separator: language().type_separator,
|
||||
field2: card.sub_type_2,
|
||||
soft_before_empty: true,
|
||||
hide_when_empty: true
|
||||
)
|
||||
show statistics: false
|
||||
description: The type of the card; type "-" to go from type to subtype
|
||||
card field:
|
||||
type: choice
|
||||
name: rarity 2
|
||||
icon: stats/rarity.png
|
||||
choice: basic land
|
||||
choice: common
|
||||
choice: uncommon
|
||||
choice: rare
|
||||
choice: mythic rare
|
||||
choice: special
|
||||
initial: common
|
||||
# Both rarities will be the same
|
||||
script: card.rarity
|
||||
editable: false
|
||||
show statistics: false
|
||||
card field:
|
||||
type: multiple choice
|
||||
name: indicator 2
|
||||
empty choice: colorless
|
||||
choice: white
|
||||
choice: blue
|
||||
choice: black
|
||||
choice: red
|
||||
choice:
|
||||
name: green
|
||||
line below: true
|
||||
choice: artifact
|
||||
choice: land
|
||||
choice: multicolor
|
||||
choice:
|
||||
name: hybrid
|
||||
enabled: { card_color_color_count(card.card_color_2) >= 2 }
|
||||
line below: true
|
||||
choice:
|
||||
name: horizontal
|
||||
enabled: { card_color_color_count(card.card_color_2) >= 2 }
|
||||
type: radio
|
||||
choice:
|
||||
name: vertical
|
||||
enabled: { card_color_color_count(card.card_color_2) >= 2 }
|
||||
type: radio
|
||||
choice:
|
||||
name: radial
|
||||
enabled: { card_color_color_count(card.card_color_2) >= 2 }
|
||||
type: radio
|
||||
choice:
|
||||
name: overlay
|
||||
enabled: { card_color_color_count(card.card_color_2) == 2 and chosen(choice:"hybrid",card.card_color_2) }
|
||||
type: radio
|
||||
choice:
|
||||
name: reversed
|
||||
enabled: { card_color_color_count(card.card_color_2) >= 2 and not chosen(choice:"overlay",card.card_color_2) }
|
||||
script: card_color_filter(value)
|
||||
default: card.card_color_2
|
||||
show statistics: false
|
||||
description: The color indicator of the card, used to indicate card color.
|
||||
card field:
|
||||
type: text
|
||||
name: rule text 2
|
||||
script: text_filter(input: value, card_name: card.name_2)
|
||||
show statistics: false
|
||||
multi line: true
|
||||
description: The rules text of the card
|
||||
card field:
|
||||
type: text
|
||||
name: rule text 3
|
||||
script: text_filter(input: value, card_name: card.name)
|
||||
show statistics: false
|
||||
multi line: true
|
||||
description: The rules text of the card
|
||||
card field:
|
||||
type: text
|
||||
name: rule text 4
|
||||
script: text_filter(input: value, card_name: card.name_2)
|
||||
show statistics: false
|
||||
multi line: true
|
||||
description: The rules text of the card
|
||||
card field:
|
||||
type: text
|
||||
name: rule text 5
|
||||
script: text_filter(input: value, card_name: card.name_2)
|
||||
show statistics: false
|
||||
multi line: true
|
||||
description: The rules text of the card
|
||||
card field:
|
||||
type: text
|
||||
name: rule text 6
|
||||
script: text_filter(input: value, card_name: card.name_2)
|
||||
show statistics: false
|
||||
multi line: true
|
||||
description: The rules text of the card
|
||||
card field:
|
||||
type: text
|
||||
name: flavor text 2
|
||||
script: flavor_text_filter(value)
|
||||
multi line: true
|
||||
show statistics: false
|
||||
card field:
|
||||
type: text
|
||||
name: text 2
|
||||
multi line: true
|
||||
save value: false
|
||||
show statistics: false
|
||||
script:
|
||||
combined_editor(field1: card.rule_text_2, separator: "<line>\n</line>", field2: card.flavor_text_2)
|
||||
description: The rules and flavor text of the card
|
||||
card field:
|
||||
type: choice
|
||||
name: watermark 2
|
||||
include file: /magic-watermarks.mse-include/watermark-names
|
||||
icon: stats/watermark.png
|
||||
show statistics: false
|
||||
description: A watermark for below the textbox, this can be a big mana symbol used on basic lands, a special symbol, or a guild symbol
|
||||
card field:
|
||||
type: text
|
||||
name: loyalty 2
|
||||
icon: stats/toughness.png
|
||||
show statistics: false
|
||||
description: The initial loyalty of a planeswalker
|
||||
card field:
|
||||
type: text
|
||||
name: power 2
|
||||
icon: stats/power.png
|
||||
show statistics: false
|
||||
script: type_over_pt(value)
|
||||
description: The power of a creature
|
||||
card field:
|
||||
type: text
|
||||
name: toughness 2
|
||||
icon: stats/toughness.png
|
||||
show statistics: false
|
||||
description: The toughness of a creature
|
||||
card field:
|
||||
type: text
|
||||
name: pt 2
|
||||
save value: false
|
||||
script:
|
||||
combined_editor(
|
||||
field1: card.power_2,
|
||||
separator: language().pt_separator,
|
||||
field2: card.toughness_2,
|
||||
soft_before_empty: true,
|
||||
hide_when_empty: true
|
||||
)
|
||||
card list width: 50
|
||||
card list name: P/T2
|
||||
show statistics: false
|
||||
description: Power/Toughness of a creature
|
||||
card field:
|
||||
type: text
|
||||
name: power 3
|
||||
icon: stats/power.png
|
||||
show statistics: false
|
||||
script: type_over_pt(value)
|
||||
description: The power of a creature
|
||||
card field:
|
||||
type: text
|
||||
name: toughness 3
|
||||
icon: stats/toughness.png
|
||||
show statistics: false
|
||||
description: The toughness of a creature
|
||||
card field:
|
||||
type: text
|
||||
name: pt 3
|
||||
save value: false
|
||||
script:
|
||||
combined_editor(
|
||||
field1: card.power_3,
|
||||
separator: language().pt_separator,
|
||||
field2: card.toughness_3,
|
||||
soft_before_empty: true,
|
||||
hide_when_empty: true
|
||||
)
|
||||
card list width: 50
|
||||
card list name: P/T3
|
||||
show statistics: false
|
||||
description: Power/Toughness of a creature
|
||||
card field:
|
||||
type: text
|
||||
name: illustrator 2
|
||||
icon: stats/illustrator.png
|
||||
default: set.artist
|
||||
show statistics: false
|
||||
description: The illustrator of the image
|
||||
card field:
|
||||
type: text
|
||||
name: copyright 2
|
||||
default: set.copyright
|
||||
show statistics: false
|
||||
card field:
|
||||
type: text
|
||||
name: copyright line 2
|
||||
save value: false
|
||||
show statistics: false
|
||||
script:
|
||||
if set.automatic_card_numbers then
|
||||
combined_editor(field1: card.copyright_2, separator: " ", field2: card.card_number)
|
||||
else
|
||||
forward_editor(field: card.copyright_2)
|
||||
description: The copyright and card number of the card
|
||||
card field:
|
||||
type: text
|
||||
name: set code 2
|
||||
editable: false
|
||||
save value: false
|
||||
script: set.set_code + " ⋅ " + set.set_language
|
||||
show statistics: false
|
||||
@@ -0,0 +1,55 @@
|
||||
mse version: 2.0.0
|
||||
short name: Magic
|
||||
full name: Magic the Gathering
|
||||
installer group: magic/game files
|
||||
icon: card-back.png
|
||||
position hint: 01
|
||||
|
||||
version: 2016-01-11
|
||||
depends on:
|
||||
package: magic-blends.mse-include
|
||||
version: 2014-06-25
|
||||
depends on:
|
||||
package: magic-watermarks.mse-include
|
||||
version: 2007-09-23
|
||||
|
||||
############################################################## The script
|
||||
|
||||
init script: include file: script
|
||||
|
||||
############################################################## Lots of lists
|
||||
|
||||
################## There be dragons here. -Liosan ##########################
|
||||
|
||||
include file: card_fields
|
||||
include file: set_fields
|
||||
include file: statistics
|
||||
include file: add_cards_scripts
|
||||
include file: packs
|
||||
include file: keywords
|
||||
include file: word_lists
|
||||
include file: auto_replace
|
||||
|
||||
|
||||
############################################################## Other stuff
|
||||
|
||||
card list color script:
|
||||
input := card.card_color
|
||||
if input == "white" then rgb(156,130,90)
|
||||
else if input == "blue" then rgb(0,64,168)
|
||||
else if input == "black" then rgb(0,0,0)
|
||||
else if input == "red" then rgb(168,0,0)
|
||||
else if input == "green" then rgb(0,168,0)
|
||||
else if input == "pink" then rgb(210,60,140)
|
||||
else if input == "purple" then rgb(150,100,160)
|
||||
else (
|
||||
artifact := chosen(choice:"artifact")
|
||||
land := chosen(choice:"land")
|
||||
multi := chosen(choice:"multicolor")
|
||||
hybrid := chosen(choice:"hybrid")
|
||||
if land then rgb(109,62,39) # land
|
||||
else if multi and input != "artifact, multicolor" then rgb(130,110,0) # multicolor
|
||||
else if hybrid then rgb(115,0,160) # hybrid
|
||||
else if artifact then rgb(72,90,100) # artifact
|
||||
else rgb(119,83,83) # colorless
|
||||
)
|
||||
@@ -0,0 +1,52 @@
|
||||
mse version: 2.0.0
|
||||
short name: Magic
|
||||
full name: Magic the Gathering
|
||||
installer group: magic/game files
|
||||
icon: card-back.png
|
||||
position hint: 01
|
||||
|
||||
version: 2016-01-11
|
||||
depends on:
|
||||
package: magic-blends.mse-include
|
||||
version: 2014-06-25
|
||||
depends on:
|
||||
package: magic-watermarks.mse-include
|
||||
version: 2007-09-23
|
||||
|
||||
############################################################## The script
|
||||
|
||||
init script: include file: mainframe_scripts
|
||||
|
||||
############################################################## Lots of lists
|
||||
|
||||
################## There be dragons here. -Liosan ##########################
|
||||
|
||||
include file: mainframe_card_fields
|
||||
include file: mainframe_set_fields
|
||||
include file: statistics
|
||||
include file: mainframe_patch
|
||||
include file: keywords
|
||||
include file: word_lists
|
||||
include file: auto_replace
|
||||
|
||||
|
||||
############################################################## Other stuff
|
||||
|
||||
card list color script:
|
||||
input := card.card_color
|
||||
if input == "white" then rgb(156,130,90)
|
||||
else if input == "blue" then rgb(0,64,168)
|
||||
else if input == "black" then rgb(0,0,0)
|
||||
else if input == "red" then rgb(168,0,0)
|
||||
else if input == "green" then rgb(0,168,0)
|
||||
else (
|
||||
artifact := chosen(choice:"artifact")
|
||||
land := chosen(choice:"land")
|
||||
multi := chosen(choice:"multicolor")
|
||||
hybrid := chosen(choice:"hybrid")
|
||||
if land then rgb(109,62,39) # land
|
||||
else if multi and input != "artifact, multicolor" then rgb(130,110,0) # multicolor
|
||||
else if hybrid then rgb(115,0,160) # hybrid
|
||||
else if artifact then rgb(72,90,100) # artifact
|
||||
else rgb(119,83,83) # colorless
|
||||
)
|
||||
@@ -0,0 +1,53 @@
|
||||
mse version: 2.0.0
|
||||
short name: Magic
|
||||
full name: Magic the Gathering
|
||||
installer group: magic/game files
|
||||
icon: card-back.png
|
||||
position hint: 01
|
||||
|
||||
version: 2016-01-11
|
||||
depends on:
|
||||
package: magic-blends.mse-include
|
||||
version: 2014-06-25
|
||||
depends on:
|
||||
package: magic-watermarks.mse-include
|
||||
version: 2007-09-23
|
||||
|
||||
############################################################## The script
|
||||
|
||||
init script: include file: script
|
||||
|
||||
############################################################## Lots of lists
|
||||
|
||||
################## There be dragons here. -Liosan ##########################
|
||||
|
||||
include file: card_fields
|
||||
include file: set_fields
|
||||
include file: statistics
|
||||
include file: mainframe_patch
|
||||
include file: keywords
|
||||
include file: word_lists
|
||||
include file: add_cards_scripts
|
||||
include file: auto_replace
|
||||
|
||||
|
||||
############################################################## Other stuff
|
||||
|
||||
card list color script:
|
||||
input := card.card_color
|
||||
if input == "white" then rgb(156,130,90)
|
||||
else if input == "blue" then rgb(0,64,168)
|
||||
else if input == "black" then rgb(0,0,0)
|
||||
else if input == "red" then rgb(168,0,0)
|
||||
else if input == "green" then rgb(0,168,0)
|
||||
else (
|
||||
artifact := chosen(choice:"artifact")
|
||||
land := chosen(choice:"land")
|
||||
multi := chosen(choice:"multicolor")
|
||||
hybrid := chosen(choice:"hybrid")
|
||||
if land then rgb(109,62,39) # land
|
||||
else if multi and input != "artifact, multicolor" then rgb(130,110,0) # multicolor
|
||||
else if hybrid then rgb(115,0,160) # hybrid
|
||||
else if artifact then rgb(72,90,100) # artifact
|
||||
else rgb(119,83,83) # colorless
|
||||
)
|
||||
|
After Width: | Height: | Size: 109 B |
|
After Width: | Height: | Size: 108 B |
|
After Width: | Height: | Size: 111 B |
|
After Width: | Height: | Size: 631 B |
|
After Width: | Height: | Size: 545 B |
|
After Width: | Height: | Size: 460 B |
|
After Width: | Height: | Size: 632 B |
|
After Width: | Height: | Size: 613 B |
|
After Width: | Height: | Size: 628 B |
|
After Width: | Height: | Size: 372 B |
@@ -0,0 +1,37 @@
|
||||
|
||||
|
||||
# Language specific strings
|
||||
languages := [
|
||||
English: [
|
||||
code : "en",
|
||||
spellcheck_code : "en_us",
|
||||
pt_separator : "/",
|
||||
type_separator : " — ",
|
||||
subtype_separator : " ",
|
||||
is_creature : match@(match: "(?i)Creature")
|
||||
is_tribal : match@(match: "(?i)Tribal")
|
||||
is_artifact : match@(match: "(?i)Artifact")
|
||||
is_land : match@(match: "(?i)Land")
|
||||
is_enchantment : match@(match: "(?i)Enchantment")
|
||||
is_spell : match@(match: "(?i)Instant|Sorcery")
|
||||
is_planeswalker : match@(match: "(?i)Planeswalker")
|
||||
],
|
||||
|
||||
Français: [
|
||||
code : "fr",
|
||||
spellcheck_code : "", # TODO: get dictionary
|
||||
pt_separator : "/",
|
||||
type_separator : " : "
|
||||
subtype_separator : "<atom-sep> et </atom-sep>",
|
||||
is_creature : match@(match: "(?i)Creature|Créature")
|
||||
is_tribal : match@(match: "(?i)Tribal")
|
||||
is_artifact : match@(match: "(?i)Artifact")
|
||||
is_land : match@(match: "(?i)Land")
|
||||
is_enchantment : match@(match: "(?i)Enchantment")
|
||||
is_spell : match@(match: "(?i)Instant|Sorcery")
|
||||
is_planeswalker : match@(match: "(?i)Planeswalker")
|
||||
]
|
||||
]
|
||||
|
||||
# The selected language
|
||||
language := { languages[set.card_language] or else language.English }
|
||||
@@ -0,0 +1 @@
|
||||
merfolk
|
||||
@@ -0,0 +1,175 @@
|
||||
148
|
||||
mana
|
||||
untap/MSDRJZG
|
||||
unblockable
|
||||
planeswalker
|
||||
noncreature
|
||||
nonland
|
||||
nonenchantment
|
||||
nonartifact
|
||||
nonwhite
|
||||
nonblue
|
||||
nonblack
|
||||
nonred
|
||||
nongreen
|
||||
unblock/USDG
|
||||
precombat
|
||||
postcombat
|
||||
scry
|
||||
plainswalk
|
||||
islandwalk
|
||||
swampwalk
|
||||
mountainwalk
|
||||
forestwalk
|
||||
landwalk
|
||||
desertwalk
|
||||
plainshome
|
||||
islandhome
|
||||
swamphome
|
||||
mountainhome
|
||||
foresthome
|
||||
landhome
|
||||
soulshift
|
||||
ninjitsu
|
||||
bushido
|
||||
lifelink
|
||||
gravestorm
|
||||
fateseal
|
||||
bloodthirst
|
||||
djinn
|
||||
unattach
|
||||
face-down
|
||||
face-up
|
||||
spell's
|
||||
guerrilas
|
||||
mages
|
||||
exit-the-battlefield
|
||||
enter-the-battlefield
|
||||
havok
|
||||
spectre
|
||||
gargadon
|
||||
gargadons
|
||||
Crovax
|
||||
evincar
|
||||
and/or
|
||||
20/20
|
||||
planeswalkers
|
||||
Merfolk
|
||||
deathtouch
|
||||
noncombat
|
||||
Urza
|
||||
Karn
|
||||
Ajani
|
||||
Goldmane
|
||||
Jace
|
||||
Beleren
|
||||
Liliana
|
||||
Vess
|
||||
Chandra
|
||||
Nalaar
|
||||
Garruk
|
||||
Wildspeaker
|
||||
Tezzeret
|
||||
Elspeth
|
||||
Tirel
|
||||
Nicol
|
||||
Bolas
|
||||
Sarkhan
|
||||
Vol
|
||||
Nissa
|
||||
Revane
|
||||
Baltrice
|
||||
Crucius
|
||||
scryers
|
||||
+1
|
||||
etherium
|
||||
-1
|
||||
Kothophed
|
||||
wurm
|
||||
Tolaria
|
||||
Weatherlight
|
||||
Ertai
|
||||
Barrin
|
||||
Dominaria
|
||||
Benalish
|
||||
Benalia
|
||||
Sisay
|
||||
golem
|
||||
Keld
|
||||
Maraxus
|
||||
Volrath
|
||||
Mirri
|
||||
Multani
|
||||
maro-sorcerer
|
||||
Squee
|
||||
Tahngarth
|
||||
Crovax
|
||||
Selenia
|
||||
Greven
|
||||
il-Vec
|
||||
Argive
|
||||
Samite
|
||||
Orim
|
||||
Argivian
|
||||
Rath
|
||||
Starke
|
||||
Sidar
|
||||
Kondo
|
||||
evincar
|
||||
multiverse
|
||||
Eladamri
|
||||
Skyshroud
|
||||
guerilla
|
||||
Soltari
|
||||
Lyna
|
||||
Rofellos
|
||||
spellcasting
|
||||
Korvecdal
|
||||
Vuel
|
||||
Takara
|
||||
self-interest
|
||||
Ashnod
|
||||
Mishra
|
||||
Fallaji
|
||||
Gix
|
||||
Phyrexia
|
||||
Phyrexian
|
||||
supremacy
|
||||
Tawnos
|
||||
Argoth
|
||||
Xantcha
|
||||
Saproling
|
||||
nontoken
|
||||
mage
|
||||
Ashling
|
||||
Jaya
|
||||
Maralen
|
||||
Mornsong
|
||||
non-Sliver
|
||||
non-Shapeshifter
|
||||
Thopter
|
||||
Kraken
|
||||
•
|
||||
•
|
||||
and/or
|
||||
primordial
|
||||
non-Dragon
|
||||
nonpermanent
|
||||
noninstant
|
||||
nonplaneswalker
|
||||
nonenchantment
|
||||
nonsorcery
|
||||
nonartifact
|
||||
non-Human
|
||||
Hellkite
|
||||
hexproof
|
||||
draughts
|
||||
dwarves
|
||||
sigil
|
||||
dwarven
|
||||
axe
|
||||
earthen
|
||||
hedron
|
||||
thrull
|
||||
arcun
|
||||
merfolk
|
||||
@@ -0,0 +1,200 @@
|
||||
pack type:
|
||||
name: basic land
|
||||
select: equal
|
||||
filter: card.rarity == "basic land" and not is_token_card() and not is_masterpiece() # can be shifted
|
||||
pack type:
|
||||
name: common
|
||||
filter: card.rarity == "common" and not is_token_card() and not is_shifted_card() and not is_masterpiece() and not is_unsorted()
|
||||
pack type:
|
||||
name: uncommon
|
||||
filter: card.rarity == "uncommon" and not is_token_card() and not is_shifted_card() and not is_masterpiece() and not is_unsorted()
|
||||
pack type:
|
||||
name: rare
|
||||
filter: card.rarity == "rare" and not is_token_card() and not is_shifted_card() and not is_masterpiece() and not is_unsorted()
|
||||
pack type:
|
||||
name: mythic rare
|
||||
filter: card.rarity == "mythic rare" and not is_masterpiece() and not is_token_card() and not is_shifted_card() and not is_unsorted()
|
||||
pack type:
|
||||
name: special
|
||||
filter: card.rarity == "special" and not is_token_card() # can be shifted
|
||||
pack type:
|
||||
name: shifted common
|
||||
filter: card.rarity == "common" and not is_token_card() and is_shifted_card() and not is_unsorted()
|
||||
pack type:
|
||||
name: shifted uncommon
|
||||
filter: card.rarity == "uncommon" and not is_token_card() and is_shifted_card() and not is_unsorted()
|
||||
pack type:
|
||||
name: shifted rare
|
||||
filter:
|
||||
( card.rarity == "rare" or
|
||||
card.rarity == "mythic rare" # We've got to put shifted mythic rares somewhere
|
||||
) and not is_token_card() and is_shifted_card() and not is_unsorted()
|
||||
pack type:
|
||||
name: token / rulestip
|
||||
filter: is_token_card()
|
||||
pack type:
|
||||
name: masterpiece
|
||||
filter: is_masterpiece()
|
||||
# shifted common if they exist, otherwise a normal common
|
||||
pack type:
|
||||
name: shifted common or else common
|
||||
selectable: false
|
||||
select: first
|
||||
item: shifted common
|
||||
item: common
|
||||
|
||||
# basic land if it exist, otherwise a common
|
||||
pack type:
|
||||
name: basic land or else common
|
||||
selectable: false
|
||||
select: first
|
||||
item: basic land
|
||||
item: common
|
||||
|
||||
# special if it exist, otherwise a common
|
||||
pack type:
|
||||
name: special or else common
|
||||
selectable: false
|
||||
select: first
|
||||
item: special
|
||||
item: common
|
||||
|
||||
# shifted uncommon/rare if they exist, otherwise a normal uncommon
|
||||
pack type:
|
||||
name: shifted uncommon or rare or else uncommon
|
||||
selectable: false
|
||||
select: first
|
||||
item: shifted uncommon or rare
|
||||
item: uncommon
|
||||
|
||||
############################################################## Randomized selections
|
||||
|
||||
pack type:
|
||||
name: mythic rare or rare
|
||||
selectable: false
|
||||
# In Shards of Alara there are 15 mythic rares and 53 rares.
|
||||
# Each booster has a 1/8 chance of containing a mythic rare.
|
||||
# This means that looking at single mythics : rares, the proportion is
|
||||
# 1*53 : 7*15 = 53 : 105
|
||||
# this is almost exactly 1 : 2,
|
||||
# So, a a single mythic is 2 times as rare as a single normal rare.
|
||||
#
|
||||
# We use this proportional system instead of a fixed 1:7 system,
|
||||
# because it copes better with cases where there are few mythics.
|
||||
# For example, if a set has 1 mythic and 20 rares, you would actually
|
||||
# be MORE likely to find the mythic card with the 1:7 system!
|
||||
select: proportional
|
||||
item:
|
||||
name: mythic rare
|
||||
weight: 1
|
||||
item:
|
||||
name: rare
|
||||
weight: 2
|
||||
|
||||
pack type:
|
||||
name: shifted uncommon or rare
|
||||
selectable: false
|
||||
select: nonempty
|
||||
item:
|
||||
name: shifted uncommon
|
||||
weight: 3
|
||||
item:
|
||||
name: shifted rare
|
||||
weight: 1
|
||||
|
||||
|
||||
############################################################## Common proportions of cards
|
||||
|
||||
# of the common slots, 3/10 will be shifted, 1/10 will be special
|
||||
pack type:
|
||||
name: common sometimes shifted or special
|
||||
selectable: false
|
||||
# TODO: Perhaps use some kind of proportional system here as well?
|
||||
select: equal
|
||||
item:
|
||||
name: common
|
||||
weight: 6
|
||||
item:
|
||||
name: shifted common or else common
|
||||
weight: 3
|
||||
item:
|
||||
name: special or else common
|
||||
weight: 1
|
||||
|
||||
# of the uncommon slots, 1/3 will be shifted, 1/4 of that will be shifted rares instead
|
||||
pack type:
|
||||
name: uncommon sometimes shifted
|
||||
selectable: false
|
||||
select: equal
|
||||
item: uncommon
|
||||
item: uncommon
|
||||
item: shifted uncommon or rare or else uncommon
|
||||
|
||||
############################################################## Card packs
|
||||
|
||||
pack type:
|
||||
name: tournament pack
|
||||
item:
|
||||
name: mythic rare or rare
|
||||
amount: 3
|
||||
item:
|
||||
name: uncommon sometimes shifted
|
||||
amount: 9
|
||||
item:
|
||||
name: common sometimes shifted or special
|
||||
amount: 33
|
||||
item:
|
||||
name: basic land
|
||||
amount: 30
|
||||
item:
|
||||
name: token / rulestip
|
||||
pack type:
|
||||
name: booster pack
|
||||
item:
|
||||
name: mythic rare or rare
|
||||
amount: 1
|
||||
item:
|
||||
name: uncommon sometimes shifted
|
||||
amount: 3
|
||||
# a total of 11 common-likes
|
||||
item:
|
||||
name: common sometimes shifted or special
|
||||
amount: 10
|
||||
item:
|
||||
name: basic land or else common
|
||||
item:
|
||||
name: token / rulestip
|
||||
|
||||
pack type:
|
||||
name: additional land
|
||||
item: basic land
|
||||
pack type:
|
||||
name: additional common
|
||||
item: common sometimes shifted or special
|
||||
pack type:
|
||||
name: additional uncommon
|
||||
item: uncommon sometimes shifted
|
||||
pack type:
|
||||
name: additional rare
|
||||
item: mythic rare or rare
|
||||
pack type:
|
||||
name: additional token / rulestip
|
||||
item: token / rulestip
|
||||
pack type:
|
||||
name: common sometimes masterpiece
|
||||
select: equal
|
||||
item:
|
||||
name: masterpiece
|
||||
weight: 1
|
||||
item:
|
||||
name: common
|
||||
weight: 35
|
||||
pack type:
|
||||
name: common rarely masterpiece
|
||||
select: equal
|
||||
item:
|
||||
name: masterpiece
|
||||
weight: 1
|
||||
item:
|
||||
name: common
|
||||
weight: 143
|
||||
@@ -0,0 +1,187 @@
|
||||
|
||||
############################################################## Card pack types
|
||||
|
||||
pack type:
|
||||
name: basic land
|
||||
select: equal
|
||||
filter: card.rarity == "basic land" and not is_token_card()
|
||||
pack type:
|
||||
name: common
|
||||
filter: card.rarity == "common" and not is_token_card() and not is_shifted_card()
|
||||
pack type:
|
||||
name: uncommon
|
||||
filter: card.rarity == "uncommon" and not is_token_card() and not is_shifted_card()
|
||||
pack type:
|
||||
name: rare
|
||||
filter: card.rarity == "rare" and not is_token_card() and not is_shifted_card()
|
||||
pack type:
|
||||
name: mythic rare
|
||||
filter: card.rarity == "mythic rare" and not is_token_card() and not is_shifted_card()
|
||||
pack type:
|
||||
name: special
|
||||
filter: card.rarity == "special" and not is_token_card()
|
||||
pack type:
|
||||
name: shifted common
|
||||
filter: card.rarity == "common" and not is_token_card() and is_shifted_card()
|
||||
pack type:
|
||||
name: shifted uncommon
|
||||
filter: card.rarity == "uncommon" and not is_token_card() and is_shifted_card()
|
||||
pack type:
|
||||
name: shifted rare
|
||||
filter:
|
||||
( card.rarity == "rare" or
|
||||
card.rarity == "mythic rare" # We've got to put shifted mythic rares somewhere
|
||||
) and not is_token_card() and is_shifted_card()
|
||||
|
||||
pack type:
|
||||
name: token / rulestip
|
||||
filter: is_token_card()
|
||||
|
||||
|
||||
############################################################## shifted/special if possible
|
||||
|
||||
# shifted common if they exist, otherwise a normal common
|
||||
pack type:
|
||||
name: shifted common or else common
|
||||
selectable: false
|
||||
select: first
|
||||
item: shifted common
|
||||
item: common
|
||||
|
||||
# basic land if it exist, otherwise a common
|
||||
pack type:
|
||||
name: basic land or else common
|
||||
selectable: false
|
||||
select: first
|
||||
item: basic land
|
||||
item: common
|
||||
|
||||
# special if it exist, otherwise a common
|
||||
pack type:
|
||||
name: special or else common
|
||||
selectable: false
|
||||
select: first
|
||||
item: special
|
||||
item: common
|
||||
|
||||
# shifted uncommon/rare if they exist, otherwise a normal uncommon
|
||||
pack type:
|
||||
name: shifted uncommon or rare or else uncommon
|
||||
selectable: false
|
||||
select: first
|
||||
item: shifted uncommon or rare
|
||||
item: uncommon
|
||||
|
||||
############################################################## Randomized selections
|
||||
|
||||
pack type:
|
||||
name: mythic rare or rare
|
||||
selectable: false
|
||||
# In Shards of Alara there are 15 mythic rares and 53 rares.
|
||||
# Each booster has a 1/8 chance of containing a mythic rare.
|
||||
# This means that looking at single mythics : rares, the proportion is
|
||||
# 1*53 : 7*15 = 53 : 105
|
||||
# this is almost exactly 1 : 2,
|
||||
# So, a a single mythic is 2 times as rare as a single normal rare.
|
||||
#
|
||||
# We use this proportional system instead of a fixed 1:7 system,
|
||||
# because it copes better with cases where there are few mythics.
|
||||
# For example, if a set has 1 mythic and 20 rares, you would actually
|
||||
# be MORE likely to find the mythic card with the 1:7 system!
|
||||
select: proportional
|
||||
item:
|
||||
name: mythic rare
|
||||
weight: 1
|
||||
item:
|
||||
name: rare
|
||||
weight: 2
|
||||
|
||||
pack type:
|
||||
name: shifted uncommon or rare
|
||||
selectable: false
|
||||
select: nonempty
|
||||
item:
|
||||
name: shifted uncommon
|
||||
weight: 3
|
||||
item:
|
||||
name: shifted rare
|
||||
weight: 1
|
||||
|
||||
############################################################## Common proportions of cards
|
||||
|
||||
# of the common slots, 3/10 will be shifted, 1/10 will be special
|
||||
pack type:
|
||||
name: common sometimes shifted or special
|
||||
selectable: false
|
||||
# TODO: Perhaps use some kind of proportional system here as well?
|
||||
select: equal
|
||||
item:
|
||||
name: common
|
||||
weight: 6
|
||||
item:
|
||||
name: shifted common or else common
|
||||
weight: 3
|
||||
item:
|
||||
name: special or else common
|
||||
weight: 1
|
||||
|
||||
# of the uncommon slots, 1/3 will be shifted, 1/4 of that will be shifted rares instead
|
||||
pack type:
|
||||
name: uncommon sometimes shifted
|
||||
selectable: false
|
||||
select: equal
|
||||
item: uncommon
|
||||
item: uncommon
|
||||
item: shifted uncommon or rare or else uncommon
|
||||
|
||||
|
||||
############################################################## Card packs
|
||||
|
||||
pack type:
|
||||
name: tournament pack
|
||||
item:
|
||||
name: mythic rare or rare
|
||||
amount: 3
|
||||
item:
|
||||
name: uncommon sometimes shifted
|
||||
amount: 9
|
||||
item:
|
||||
name: common sometimes shifted or special
|
||||
amount: 33
|
||||
item:
|
||||
name: basic land
|
||||
amount: 30
|
||||
item:
|
||||
name: token / rulestip
|
||||
pack type:
|
||||
name: booster pack
|
||||
item:
|
||||
name: mythic rare or rare
|
||||
amount: 1
|
||||
item:
|
||||
name: uncommon sometimes shifted
|
||||
amount: 3
|
||||
# a total of 11 common-likes
|
||||
item:
|
||||
name: common sometimes shifted or special
|
||||
amount: 10
|
||||
item:
|
||||
name: basic land or else common
|
||||
item:
|
||||
name: token / rulestip
|
||||
|
||||
pack type:
|
||||
name: additional land
|
||||
item: basic land
|
||||
pack type:
|
||||
name: additional common
|
||||
item: common sometimes shifted or special
|
||||
pack type:
|
||||
name: additional uncommon
|
||||
item: uncommon sometimes shifted
|
||||
pack type:
|
||||
name: additional rare
|
||||
item: mythic rare or rare
|
||||
pack type:
|
||||
name: additional token / rulestip
|
||||
item: token / rulestip
|
||||
@@ -0,0 +1,801 @@
|
||||
############################################################## Localization
|
||||
|
||||
include file: language
|
||||
|
||||
############################################################## Sorting mana symbols
|
||||
|
||||
# correctly sort a mana symbol (no guild mana)
|
||||
mana_sort := sort_text@(order: "XYZI[0123456789]DHSC(WUBRG)")
|
||||
# correctly sort wedge mana
|
||||
mana_sort_wedge := sort_text@(order: "XYZI[0123456789]DHSC(WBGUR)")
|
||||
# correctly sort guild mana
|
||||
mana_sort_guild := sort_text@(order: "[XYZI01234567890DHSCWUBRG/|]") +
|
||||
replace@(
|
||||
# No lookbehind :(
|
||||
#match: "(?<!/)(./.|././.|./././.|.[|])(?!/)",
|
||||
match: "./.|././.|./././.|.[|]",
|
||||
in_context: "(^|[^/])<match>($|[^/])",
|
||||
replace: {sort_text(order:"in_place((WUBRG)")}
|
||||
)
|
||||
mana_has_guild := match@(match: "[/|]") # Is there guild or half mana in the input?
|
||||
mana_is_wedge := { contains(set.mana_cost_sorting, match: "wedge") and ( number_of_items(in: sort_text(order:"<WUBRG>", card.casting_cost), filter: "<WUBRG>") == 3 ) }
|
||||
# A mana cost can contain both normal and guild mana
|
||||
mana_filter := to_upper + {
|
||||
if contains(set.mana_cost_sorting, match: "unsorted") then input
|
||||
else if mana_has_guild() then mana_sort_guild()
|
||||
else if mana_is_wedge() then mana_sort_wedge()
|
||||
else mana_sort()
|
||||
}
|
||||
# Like mana filter, only also allow tap symbols:
|
||||
tap_filter := sort_text@(order: "<TQ>")
|
||||
mana_filter_t := replace@( # Remove [] used for forcing mana symbols
|
||||
match: "[\\[\\]]",
|
||||
replace: ""
|
||||
) + { tap_filter() + mana_filter() }
|
||||
|
||||
|
||||
############################################################## Determine card color
|
||||
|
||||
# Names of colors
|
||||
color_name := {
|
||||
if input == "W" then "white"
|
||||
else if input == "U" then "blue"
|
||||
else if input == "B" then "black"
|
||||
else if input == "R" then "red"
|
||||
else if input == "G" then "green"
|
||||
else ""
|
||||
}
|
||||
color_names_1 := { color_name(colors.0) }
|
||||
color_names_2 := { color_name(colors.0) + ", " + color_name(colors.1) }
|
||||
color_names_3 := { color_name(colors.0) + ", " + color_name(colors.1) + ", " + color_name(colors.2) }
|
||||
color_names_4 := { color_name(colors.0) + ", " + color_name(colors.1) + ", " + color_name(colors.2) + ", " + color_name(colors.3) }
|
||||
color_names_5 := { color_name(colors.0) + ", " + color_name(colors.1) + ", " + color_name(colors.2) + ", " + color_name(colors.3) + ", " + color_name(colors.4) }
|
||||
# color based on mana cost, input = a mana cost
|
||||
color_filter := sort_text@(order: "<WUBRG>")
|
||||
color_filterH := sort_text@(order: "</>")
|
||||
mana_to_color := {
|
||||
count := number_of_items(in: colors)
|
||||
if hybrid == "" and contains(type, match:"Artifact") then
|
||||
# not a hybrid, but artifact
|
||||
if count == 0 then "artifact"
|
||||
else if count == 1 then color_names_1() + ", artifact"
|
||||
else if set.set_info.use_gradient_multicolor == "no" then "artifact, multicolor" # stop here
|
||||
else if count == 2 then color_names_2() + ", artifact, multicolor"
|
||||
else if set.set_info.use_gradient_multicolor != "yes" then "artifact, multicolor" # stop here
|
||||
else if count == 3 then color_names_3() + ", artifact, multicolor"
|
||||
else if count == 4 then color_names_4() + ", artifact, multicolor"
|
||||
else if count == 5 then color_names_5() + ", artifact, multicolor"
|
||||
else "artifact, multicolor"
|
||||
else if hybrid == "" then
|
||||
# not a hybrid, not artifact
|
||||
if count == 0 then "colorless"
|
||||
else if count == 1 then color_names_1()
|
||||
else if set.set_info.use_gradient_multicolor == "no" then "multicolor" # stop here
|
||||
else if count == 2 then color_names_2() + ", multicolor"
|
||||
else if set.set_info.use_gradient_multicolor != "yes" then "multicolor" # stop here
|
||||
else if count == 3 then color_names_3() + ", multicolor"
|
||||
else if count == 4 then color_names_4() + ", multicolor"
|
||||
else if count == 5 then color_names_5() + ", multicolor"
|
||||
else "multicolor"
|
||||
else if contains(type, match:"Artifact") then
|
||||
# hybrid, but artifact
|
||||
if count == 0 then "artifact"
|
||||
else if count == 1 then color_names_1() + ", artifact"
|
||||
else if count == 2 then color_names_2() + ", artifact"
|
||||
else "artifact, multicolor"
|
||||
else
|
||||
# hybrid, not artifact
|
||||
if count == 0 then "colorless"
|
||||
else if count == 1 then color_names_1()
|
||||
else if count == 2 then color_names_2() + ", hybrid"
|
||||
else "multicolor"
|
||||
}
|
||||
|
||||
# color based on land text box, input = textbox contents
|
||||
color_text_filter :=
|
||||
# remove activation costs
|
||||
replace@(
|
||||
match: "<sym[^>]*>[^<]+</sym[^>]*>"
|
||||
in_context: "(?ix) (\\n|^)[^:]*<match>(,|:) | (pays?|additional|costs?)[ ]<match>",
|
||||
replace: ""
|
||||
) +
|
||||
# keep only mana
|
||||
filter_text@(match: "<sym[^>]*>([^<]+)") + color_filter;
|
||||
# get the land frame for a "WUBRG"-style input.
|
||||
land_multicolor := {
|
||||
count := number_of_items(in: colors)
|
||||
if count == 0 then "land"
|
||||
else if count == 1 then color_names_1() + ", land"
|
||||
else if count == 2 then color_names_2() + ", land"
|
||||
else "land, multicolor"
|
||||
}
|
||||
land_to_color := {
|
||||
# Based on watermark
|
||||
if watermark == "mana symbol white" then "white, land"
|
||||
else if watermark == "mana symbol blue" then "blue, land"
|
||||
else if watermark == "mana symbol black" then "black, land"
|
||||
else if watermark == "mana symbol red" then "red, land"
|
||||
else if watermark == "mana symbol green" then "green, land"
|
||||
else land_multicolor(colors:color_text_filter(input: card.rule_text))
|
||||
};
|
||||
|
||||
# Look for a CDA that defines colors
|
||||
text_to_color := {
|
||||
# Note: running filter_text is quite slow, do a quick 'contains' check first
|
||||
if contains(match: card_name) then (
|
||||
text := filter_text(match: "is (colorless|all colors|((blue|white|green|red|black)((,|,? and) (blue|white|green|red|black))*))", in_context: regex_escape(card_name)+"(</[-a-z]+>)* <match>\\.")
|
||||
if text != "" then (
|
||||
if contains(text, match: "all colors") then (
|
||||
colors := "WUBRG"
|
||||
if land == "land" then land_multicolor()
|
||||
else mana_to_color(hybrid: "")
|
||||
) else (
|
||||
colors := ""
|
||||
if contains(text, match: "white") then colors := colors + "W"
|
||||
if contains(text, match: "blue") then colors := colors + "U"
|
||||
if contains(text, match: "black") then colors := colors + "B"
|
||||
if contains(text, match: "red") then colors := colors + "R"
|
||||
if contains(text, match: "green") then colors := colors + "G"
|
||||
if land == "land" then land_multicolor()
|
||||
else mana_to_color(hybrid: "")
|
||||
)
|
||||
) else (
|
||||
colors := ""
|
||||
)
|
||||
) else (
|
||||
colors := ""
|
||||
)
|
||||
};
|
||||
|
||||
# The color of a card
|
||||
is_creature := match@(match: "(?i)Creature")
|
||||
is_tribal := match@(match: "(?i)Tribal")
|
||||
is_artifact := match@(match: "(?i)Artifact")
|
||||
is_land := match@(match: "(?i)Land")
|
||||
is_enchantment := match@(match: "(?i)Enchantment")
|
||||
is_spell := match@(match: "(?i)Instant|Sorcery")
|
||||
card_color := {
|
||||
# usually the color of mana
|
||||
text_color := text_to_color(rules_text, land: is_land(type));
|
||||
if text_color == "" then (
|
||||
mana_color := mana_to_color(colors: color_filter(casting_cost), hybrid: color_filterH(casting_cost))
|
||||
if mana_color == "colorless" and is_land (type) then land_to_color(watermark)
|
||||
else if mana_color == "colorless" and is_artifact(type) then "artifact"
|
||||
else if mana_color == "colorless" and contains(card.shape, match:"flip") then default
|
||||
else mana_color
|
||||
)
|
||||
else text_color
|
||||
};
|
||||
|
||||
# Number of colors in a card_color
|
||||
card_color_color_count := count_chosen@(choices: "white,blue,black,red,green,artifact")
|
||||
# Clean up color field
|
||||
card_color_filter := {
|
||||
colors := card_color_color_count()
|
||||
if colors > 2 then
|
||||
input := remove_choice(choice: "overlay")
|
||||
if colors > 1 then (
|
||||
input := require_choice(choices: "multicolor, hybrid, land, artifact")
|
||||
input := exclusive_choice(choices: "multicolor, hybrid")
|
||||
input := require_exclusive_choice(choices: "horizontal, vertical, radial, overlay")
|
||||
) else
|
||||
input := remove_choice(choices: "radial, horizontal, vertical, overlay, hybrid, reversed")
|
||||
if chosen(choice:"overlay") then
|
||||
input := remove_choice(choice: "reversed")
|
||||
input
|
||||
}
|
||||
|
||||
# needed by all style files anyway
|
||||
include file: /magic-blends.mse-include/new-blends
|
||||
|
||||
|
||||
############################################################## Card number
|
||||
|
||||
# Index for sorting, white cards are first, so white->A, blue->B, .. ,
|
||||
# The code consists of 3 parts:
|
||||
# color, shifted, split
|
||||
sort_index := {
|
||||
color_of_card() +
|
||||
(if contains(card.shape, match:"shifted") then "S" else " ") + # planeshifted cards come after normal ones
|
||||
(if contains(card.shape, match:"split") then "S" else " ") + # split cards come after normal ones
|
||||
":"
|
||||
}
|
||||
# Process the name for sorting rules
|
||||
sort_name :=
|
||||
# Remove "The", "A", and "And" at the beginning
|
||||
replace@(match: "^(The|An?) ", replace: "") +
|
||||
# Remove commas and apostrophes
|
||||
replace@(match: "(,|'|’)", replace: "") +
|
||||
# Remove bold and italic tags
|
||||
replace@(match: "(<b>|<i>|</b>|</i>)", replace: "") +
|
||||
# Make lowercase
|
||||
to_lower
|
||||
|
||||
is_multicolor := { chosen(choice: "multicolor") and input != "artifact, multicolor" }
|
||||
is_null_cost := { input == "" or input == "0" }
|
||||
is_hybrid_cost := { contains(card.casting_cost, match: "W/") or contains(card.casting_cost, match: "U/") or contains(card.casting_cost, match: "B/") or contains(card.casting_cost, match: "R/") or contains(card.casting_cost, match: "G/") }
|
||||
basic_land_sort := {
|
||||
if contains(card.name, match:"Plains") then "MB" # Plains
|
||||
else if contains(card.name, match:"Island") then "MC" # Islands
|
||||
else if contains(card.name, match:"Swamp") then "MD" # Swamps
|
||||
else if contains(card.name, match:"Mountain") then "ME" # Mountains
|
||||
else if contains(card.name, match:"Forest") then "MF" # Forests
|
||||
else "MA" # other basic lands
|
||||
}
|
||||
hybrid_color_pair_sort := {
|
||||
colors := sort_text(casting_cost, order: "<WUBRG>")
|
||||
if not set.sort_hybrid_in_pairs then "HK"
|
||||
else if colors == "WU" then "HA"
|
||||
else if colors == "UB" then "HB"
|
||||
else if colors == "BR" then "HC"
|
||||
else if colors == "RG" then "HD"
|
||||
else if colors == "WG" then "HE"
|
||||
else if colors == "WB" then "HF"
|
||||
else if colors == "UR" then "HG"
|
||||
else if colors == "BG" then "HH"
|
||||
else if colors == "WR" then "HI"
|
||||
else if colors == "UG" then "HJ"
|
||||
else "HK"
|
||||
}
|
||||
multi_color_pair_sort := {
|
||||
colors := sort_text(casting_cost, order: "<WUBRG>")
|
||||
if not set.sort_multicolor_in_pairs then "GK"
|
||||
else if colors == "WU" then "GA"
|
||||
else if colors == "UB" then "GB"
|
||||
else if colors == "BR" then "GC"
|
||||
else if colors == "RG" then "GD"
|
||||
else if colors == "WG" then "GE"
|
||||
else if colors == "WB" then "GF"
|
||||
else if colors == "UR" then "GG"
|
||||
else if colors == "BG" then "GH"
|
||||
else if colors == "WR" then "GI"
|
||||
else if colors == "UG" then "GJ"
|
||||
else if contains(card.casting_cost, match:"/") then "GL"
|
||||
else "GK"
|
||||
}
|
||||
# A code for the color of the card
|
||||
color_of_card := {
|
||||
card_color := card.card_color
|
||||
casting_cost := card.casting_cost
|
||||
type := card.super_type
|
||||
if contains(card.shape, match: "split") and
|
||||
card_color != card.card_color_2 then "I" # Diff Color Splits
|
||||
else if chosen(choice: "land", card_color) then ( # Lands
|
||||
if card.rarity != "basic land" then "L" # Nonbasic Land
|
||||
else basic_land_sort() # Basic Land
|
||||
) else if is_null_cost(casting_cost) then ( # Non-Land Cards with no or zero costs.
|
||||
if chosen(choice: "colorless", card_color) then "A" # Clear Colorless
|
||||
else if chosen(choice: "hybrid", card_color) then "HK" # Hybrids
|
||||
else if is_multicolor(card_color) then "GK" # Multicolor
|
||||
else if chosen(choice:"white", card_color) then "B" # White
|
||||
else if chosen(choice:"blue", card_color) then "C" # Blue
|
||||
else if chosen(choice:"black", card_color) then "D" # Black
|
||||
else if chosen(choice:"red", card_color) then "E" # Red
|
||||
else if chosen(choice:"green", card_color) then "F" # Green
|
||||
else "J" # Artifact
|
||||
) else (
|
||||
# Cards with costs.
|
||||
colors := sort_text(casting_cost, order: "<WUBRG>")
|
||||
if colors == "" and contains(type, match:"Artifact") then "J" # Artifact
|
||||
else if colors == "" then "A" # Clear Colorless
|
||||
else if colors == "W" then "B" # White
|
||||
else if colors == "U" then "C" # Blue
|
||||
else if colors == "B" then "D" # Black
|
||||
else if colors == "R" then "E" # Red
|
||||
else if colors == "G" then "F" # Green
|
||||
else if is_hybrid_cost() then hybrid_color_pair_sort() # Hybrid (by pairs)
|
||||
else if contains(casting_cost, match:"/") and contains(type, match:"Artifact") then "I" # Hybrid Artifacts
|
||||
else multi_color_pair_sort() # Multicolor (by pairs)
|
||||
)
|
||||
}
|
||||
|
||||
rarity_sort := {
|
||||
if card.shape == "token" then "T1"
|
||||
else if card.shape == "emblem" then "T2"
|
||||
else if card.shape == "rulestip" then "T3"
|
||||
else if card.shape == "counter" then "T4"
|
||||
else if card.shape == "checklist" then "T5"
|
||||
else if is_masterpiece() then "T6"
|
||||
else if set.sort_special_rarity == "with the rest" or card.rarity != "special" then " "
|
||||
else "S"
|
||||
}
|
||||
set_filter := {
|
||||
# TODO: what about rulestips?
|
||||
if is_unsorted() then
|
||||
{ is_unsorted() }
|
||||
if card.shape == "token" or card.shape == "emblem" then
|
||||
{ card.shape == "token" or card.shape == "emblem" }
|
||||
else if card.shape == "rulestip" then
|
||||
{ card.shape == "rulestip" }
|
||||
else if card.shape == "counter" then
|
||||
{ card.shape == "counter" }
|
||||
else if card.shape == "checklist" then
|
||||
{ card.shape == "checklist" }
|
||||
else if is_masterpiece() and card.shape != "token" and card.shape != "emblem" then
|
||||
{ is_masterpiece() and card.shape != "token" and card.shape != "emblem" }
|
||||
else if set.sort_special_rarity != "separate numbering" then
|
||||
{ not is_unsorted() and card.shape != "token" and not is_masterpiece() and card.shape != "emblem" and card.shape != "rulestip" and card.shape != "counter" and card.shape != "checklist"}
|
||||
else if card.rarity == "special" then
|
||||
{ not is_unsorted() and card.shape != "token" and not is_masterpiece() and card.shape != "emblem" and card.shape != "rulestip" and card.shape != "counter" and card.shape != "checklist" and card.rarity == "special" }
|
||||
else
|
||||
{ not is_unsorted() and card.shape != "token" and not is_masterpiece() and card.shape != "emblem" and card.shape != "rulestip" and card.shape != "counter" and card.shape != "checklist" and card.rarity != "special" }
|
||||
}
|
||||
|
||||
card_number := {
|
||||
position (
|
||||
of: card
|
||||
in: set
|
||||
order_by: { rarity_sort() + sort_index() + sort_name(card.name) }
|
||||
filter: set_filter()
|
||||
) + 1
|
||||
}
|
||||
card_count := {
|
||||
number_of_items(in: set, filter: set_filter())
|
||||
}
|
||||
|
||||
#Starting with M15, zero digits in card numbers should be shown up to three.
|
||||
card_number_m15 := { (if card_number() < 100 then "0" else "") + (if card_number() < 10 then "0" else "") + card_number() }
|
||||
card_count_m15 := { (if card_count() < 100 then "0" else "") + (if card_count() < 10 then "0" else "") + card_count() }
|
||||
|
||||
# used by pack scripts
|
||||
is_token_card := { card.shape == "token" or card.shape == "rulestip" or card.shape == "counter" or card.shape == "checklist" or card.shape == "emblem"}
|
||||
is_shifted_card := { contains(card.shape, match:"shifted") }
|
||||
is_masterpiece := { card.rarity == "masterpiece" }
|
||||
is_nightbreak := { card.shape == "nightbreak" }
|
||||
|
||||
|
||||
############################################################## Utilities for keywords
|
||||
|
||||
comma_count := filter_text@(match:",")
|
||||
# Replace spaces by a spacer
|
||||
separate_words := remove_tags + trim + replace@(match:" ", replace: {spacer})
|
||||
|
||||
# replaces — correctly
|
||||
add := "" # default is nothing
|
||||
|
||||
# If the 'input' parameter is a mana costs, then adds 'add'
|
||||
for_mana_costs := format_cost := {
|
||||
if input.separator_before == "—" and contains(input.param, match: " ") then (
|
||||
if comma_count(input.param) == "," then (
|
||||
if match(match: "^[DHSCTQXYZIWUBRG0-9/|]+,", input.param) then
|
||||
"{add}<param-cost>{combined_cost(input.param)}</param-cost>"
|
||||
else "<param-cost>{combined_cost(input.param)}</param-cost>"
|
||||
) else if contains(input.param, match: ",") then (
|
||||
if match(match: "^[DHSCTQXYZIWUBRG0-9/|]+,", input.param) then
|
||||
"{add}<param-cost>{long_cost(input.param)}</param-cost>"
|
||||
else "<param-cost>{long_nomana_cost(input.param)}</param-cost>"
|
||||
) else
|
||||
"<param-cost>{alternative_cost(input.param)}</param-cost>"
|
||||
) else
|
||||
"{add}<param-mana>{input.param}</param-mana>"
|
||||
}
|
||||
|
||||
# Convert first character to lower case
|
||||
alternative_cost := replace@(match:"^[A-Z]", replace: { to_lower() })
|
||||
# Convert extra costs
|
||||
long_cost := replace@(match:", [A-Z]", replace: { to_lower() } )
|
||||
long_nomana_cost := replace@(match:"[A-Z]", replace: { to_lower() })
|
||||
#
|
||||
combined_cost := replace@(match:", [A-Z]", replace: { to_lower() })+
|
||||
replace@(match:",", replace:" and")+
|
||||
replace@(match:"^[DHSCTQXYZIWUBRG0-9/|]+", in_context: "(^|[[:space:]])<match>(?![a-z])", replace: "<sym-auto>&</sym-auto>")+
|
||||
replace@(match:"^[A-Z]", replace: { to_lower() })
|
||||
|
||||
long_dash := replace@(match:"-", replace:"—")
|
||||
|
||||
# Utilities for keywords
|
||||
|
||||
has_cc := { card.casting_cost != "" }
|
||||
|
||||
has_pt := { card.power != "" or card.toughness != "" }
|
||||
|
||||
contains_target := match@(match:"(?i)([^a-z]|^)target([^a-z]|$)")
|
||||
|
||||
is_spell := { contains(card.type, match:"Instant") or contains(card.type, match:"Sorcery") }
|
||||
|
||||
is_targeted := { contains_target(card.rule_text) }
|
||||
|
||||
color_to_mana := replace@(match: "white", replace: "[W]")+
|
||||
replace@(match: "blue", replace: "[U]")+
|
||||
replace@(match: "black", replace: "[B]")+
|
||||
replace@(match: "red", replace: "[R]")+
|
||||
replace@(match: "green", replace: "[G]")
|
||||
|
||||
############################################################## The text box
|
||||
|
||||
# Filters for the text box
|
||||
# context in which mana symbols are found
|
||||
mana_context :=
|
||||
"(?ix) # case insensitive, ignore whitespace
|
||||
(^|[[:space:]\"(“']) # start of a word
|
||||
( <match>: # G: something
|
||||
| <match>, # G, tap: something
|
||||
| or[ ]<match> # Add X, Y, or Z.
|
||||
| <match>[ ]to # Add X, Y, or Z to your mana pool.
|
||||
| <match>[ ]was[ ]spent # if G was spent to cast
|
||||
| <match>[ ]can[ ]be[ ]pay
|
||||
| (pays?|additional|costs?|the # pay X. creatures cost 1 less. pay an additional G.
|
||||
|adds?|pay(ed)?[ ](with|using)
|
||||
)
|
||||
([ ]either)? # pay either X or Y
|
||||
([ ](<sym[^>]*>)?[DHSCTQXYZIEWUBRG0-9/|]+(</sym[^>]*>)?,)* # pay X, Y or Z
|
||||
([ ](<sym[^>]*>)?[DHSCTQXYZIEWUBRG0-9/|]+(</sym[^>]*>)?[ ](and|or|and/or))* # pay X or Y
|
||||
[ ]<match>
|
||||
([,.)]|$ # (end of word)
|
||||
|[ ][^ .,]*$ # still typing...
|
||||
|[ ]( or | and | in | less | more | to ) # or next word is ...
|
||||
)
|
||||
)
|
||||
| <param-mana><match></param-mana> # keyword argument that is declared as mana
|
||||
| <param-cost>[ ]*<match></param-cost> # keyword argument that is declared as cost
|
||||
| <param-cost><match>, # keyword argument that is declared as cost
|
||||
";
|
||||
|
||||
|
||||
# truncates the name of legends
|
||||
legend_filter := replace@(match:"(, | of | the ).*", replace: "" )
|
||||
|
||||
# these are considered a correct 'word' for spellchecking in the text box:
|
||||
additional_text_words := match@(match:
|
||||
"(?ix)^(?: # match whole word
|
||||
<atom-[^>]*>.*?</atom-[^>]*> # cardnames and stuff
|
||||
| [+-]?[0-9X]+ / [+-]?[0-9X]+ # '3/3', '+X/+X'
|
||||
)$")
|
||||
|
||||
# the rule text filter
|
||||
# - adds mana symbols
|
||||
# - makes text in parentheses italic
|
||||
text_filter :=
|
||||
# step 1 : remove all automatic tags
|
||||
remove_tag@(tag: "<sym-auto>") +
|
||||
remove_tag@(tag: "<i-auto>") +
|
||||
remove_tag@(tag: "<b-auto>") +
|
||||
remove_tag@(tag: "<error-spelling") +
|
||||
remove_tag@(tag: "<nospellcheck") +
|
||||
# step 2 : reminder text for keywords
|
||||
expand_keywords@(
|
||||
condition: {
|
||||
correct_case or (mode != "pseudo" and not used_placeholders)
|
||||
}
|
||||
default_expand: {
|
||||
chosen(choice:if correct_case then mode else "lower case", set.automatic_reminder_text)
|
||||
},
|
||||
combine: {
|
||||
keyword := "<nospellcheck>{keyword}</nospellcheck>"
|
||||
reminder := process_english_hints(reminder)
|
||||
if mode == "pseudo" then "<i-auto>{keyword}</i-auto>"
|
||||
else keyword + if expand then "<atom-reminder-{mode}> ({reminder})</atom-reminder-{mode}>"
|
||||
}) +
|
||||
# step 2b : move action keywords' reminder text to the end of the line
|
||||
replace@(
|
||||
match: "(<atom-reminder-action>(?:(?!<kw-).)*</atom-reminder-action></kw[^>]*>)(((?!<atom-reminder| ?<kw-)[^\n(])+)",
|
||||
replace: "\\2\\1"
|
||||
) +
|
||||
# step 2c : remove duplicate reminder text
|
||||
replace@(
|
||||
match: "(<atom-reminder-[^>]*>[^)]+[)]</atom-reminder-[^>]*>)([^\n]+)\\1"
|
||||
replace: "\\2\\1"
|
||||
) +
|
||||
# step 3a : expand shortcut word CARDNAME
|
||||
replace@(
|
||||
match: "CARDNAME",
|
||||
in_context: "(^|[[:space:]]|\\()<match>", # TODO: Allow any punctuation before
|
||||
replace: "<atom-cardname></atom-cardname>"
|
||||
) +
|
||||
# step 3b : expand shortcut word LEGENDNAME
|
||||
replace@(
|
||||
match: "LEGENDNAME",
|
||||
in_context: "(^|[[:space:]]|\\()<match>", # TODO: Allow any punctuation before
|
||||
replace: "<atom-legname></atom-legname>"
|
||||
) +
|
||||
# step 3c : fill in atom fields
|
||||
tag_contents@(
|
||||
tag: "<atom-cardname>",
|
||||
contents: { "<nospellcheck>" + (if card_name=="" then "CARDNAME" else card_name) + "</nospellcheck>" }
|
||||
) +
|
||||
tag_contents@(
|
||||
tag: "<atom-legname>",
|
||||
contents: { "<nospellcheck>" + (if card_name=="" then "LEGENDNAME" else legend_filter(card_name)) + "</nospellcheck>" }
|
||||
) +
|
||||
# step 4 : explict non mana symbols
|
||||
replace@(
|
||||
match: "\\][DHSCTQXYZIWUBRG0-9/|]+\\[",
|
||||
replace: {"<nosym>" + mana_filter_t() + "</nosym>"} ) +
|
||||
# step 5 : add mana & tap symbols
|
||||
replace@(
|
||||
match: "\\b[DHSCTQXYZIWUBRG0-9/|]+\\b",
|
||||
in_context: mana_context,
|
||||
replace: {"<sym-auto>" + mana_filter_t() + "</sym-auto>"} ) +
|
||||
# step 5c : add explicit mana symbols
|
||||
replace@(
|
||||
match: "\\[[DHSCTQXYZIWUBRG0-9/|]+\\]",
|
||||
replace: {"<sym>" + mana_filter_t() + "</sym>"} ) +
|
||||
# step 6 : curly quotes
|
||||
(if set.curly_quotes then curly_quotes) +
|
||||
# step 7 : italicize text in parenthesis
|
||||
replace@(
|
||||
match: "[(]([^)\n]|[(][^)\n]*[)])*[)]?",
|
||||
in_context: "(^|[[:space:]])<match>|<atom-keyword><match></",
|
||||
replace: "<i-auto>&</i-auto>") +
|
||||
# step 8 : automatic capitalization, but not after "("
|
||||
replace@(
|
||||
match: "([ ]*: |—| — )" # preceded by this
|
||||
+ "([[:lower:]])" # match this
|
||||
+ "(?![)])", # not followed by this
|
||||
replace: { _1 + to_upper(_2) }) +
|
||||
# step 9 : spellcheck
|
||||
{ if set.mark_errors then
|
||||
check_spelling(
|
||||
language: language().spellcheck_code,
|
||||
extra_dictionary: "/magic.mse-game/magic-words",
|
||||
extra_match: additional_text_words
|
||||
)
|
||||
else input
|
||||
}
|
||||
|
||||
|
||||
############################################################## Other boxes
|
||||
|
||||
# the flavor text filter
|
||||
# - makes all text italic
|
||||
flavor_text_filter :=
|
||||
# step 1 : remove italic tags
|
||||
remove_tag@(tag: "<i-flavor>") +
|
||||
# step 2 : surround by <i> tags
|
||||
{ "<i-flavor>" + input + "</i-flavor>" } +
|
||||
# curly quotes
|
||||
(if set.curly_quotes then curly_quotes) +
|
||||
# spellcheck
|
||||
{ if set.mark_errors
|
||||
then check_spelling(language:language().spellcheck_code)
|
||||
else input
|
||||
}
|
||||
|
||||
# Move the cursor past the separator in the p/t and type boxes
|
||||
type_over_pt := replace@(match:"/$", replace:"")
|
||||
type_over_type := replace@(match:" ?[-:]$", replace:"")
|
||||
|
||||
super_type_filter := {
|
||||
input := remove_tag(tag: "<word-list-")
|
||||
input := type_over_type()
|
||||
tag := "word-list-type" # TODO: localize
|
||||
"<{tag}>{input}</{tag}>"
|
||||
}
|
||||
|
||||
break_subtypes := split_text@(match: " +|<atom-sep>[^<]*</atom-sep>", include_empty:false)
|
||||
sub_type_filter := {
|
||||
input := remove_tag(tag: "<word-list-")
|
||||
input := remove_tag(tag: "<soft")
|
||||
lang := language()
|
||||
# What word list to use?
|
||||
list_type_rest := if lang.is_creature(type) then "class"
|
||||
else if lang.is_land(type) then "land"
|
||||
else if lang.is_artifact(type) then "artifact"
|
||||
else if lang.is_enchantment(type) then "enchantment"
|
||||
else if lang.is_spell(type) then "spell"
|
||||
else if lang.is_planeswalker(type) then "planeswalker"
|
||||
else "";
|
||||
if list_type_rest != "" then (
|
||||
if lang.is_creature(type) or lang.is_tribal(type) then (
|
||||
list_type_first := "race"
|
||||
) else (
|
||||
list_type_first := list_type_rest
|
||||
);
|
||||
# wrap wordlist tag around each part
|
||||
parts := break_subtypes()
|
||||
(for each i:part in parts do
|
||||
if i == 0 then
|
||||
"<word-list-{list_type_first}>{part}</word-list-{list_type_first}>"
|
||||
else
|
||||
lang.subtype_separator + "<word-list-{list_type_rest}>{part}</word-list-{list_type_rest}>"
|
||||
) +
|
||||
(if length(parts) > 0 then
|
||||
# Add a new box at the end
|
||||
"<soft>{lang.subtype_separator}</soft><word-list-{list_type_rest}></word-list-{list_type_rest}>"
|
||||
else
|
||||
"<word-list-{list_type_first}></word-list-{list_type_first}>"
|
||||
)
|
||||
) else input # do nothing
|
||||
}
|
||||
|
||||
# all sub types, for word list
|
||||
space_to_comma := replace@(match:" ", replace:",")
|
||||
only_first := replace@(match:" .*", replace:"")
|
||||
only_next := replace@(match:"^[^ ]* ?", replace:"")
|
||||
all_sub_types := {
|
||||
for each card in set do
|
||||
if contains(card.super_type) then "," + space_to_comma(to_text(card.sub_type))
|
||||
}
|
||||
all_races := {
|
||||
for each card in set do
|
||||
if is_creature(card.super_type) or is_tribal(card.super_type) then
|
||||
"," + only_first(to_text(card.sub_type))
|
||||
}
|
||||
all_classes := {
|
||||
for each card in set do
|
||||
if contains(card.super_type, match:"Creature") then
|
||||
"," + space_to_comma(only_next(to_text(card.sub_type)))
|
||||
}
|
||||
|
||||
# Determine a rarity code for M15 styles.
|
||||
rarity_code := {
|
||||
if is_promo() then "P"
|
||||
else if is_masterpiece() then "S"
|
||||
else if contains(card.shape, match:"token") then "T"
|
||||
else if contains(card.shape, match:"emblem") then "E"
|
||||
else if card.rarity == "common" then "C"
|
||||
else if card.rarity == "uncommon" then "U"
|
||||
else if card.rarity == "rare" then "R"
|
||||
else if card.rarity == "mythic rare" then "M"
|
||||
else if card.rarity == "special" then "S"
|
||||
else if card.rarity == "basic land" then "L"
|
||||
else ""
|
||||
};
|
||||
|
||||
# Determine if the card is a promo card.
|
||||
is_promo := { "false" }
|
||||
|
||||
# Determine if the card is a rare.
|
||||
is_rare := { card.rarity == "rare" or card.rarity == "mythic rare" or card.rarity == "masterpiece" }
|
||||
|
||||
# Shape of cards, can be changed in style files
|
||||
card_shape := { "normal" }
|
||||
|
||||
typesymbol_for :=
|
||||
to_text +
|
||||
replace@(match: "(Legendary|Basic|Snow|World| )", replace: "") +
|
||||
{ if input == "Creature" then "creature"
|
||||
else if input == "Sorcery" then "sorcery"
|
||||
else if input == "Instant" then "instant"
|
||||
else if input == "Artifact" then "artifact"
|
||||
else if input == "Enchantment" then "enchantment"
|
||||
else if input == "Land" then "land"
|
||||
else if input == "Planeswalker" then "planeswalker"
|
||||
else "multitype"
|
||||
}
|
||||
typesymbol_type := { typesymbol_for(type) }
|
||||
|
||||
#Script to make magic-mana-future compatible w/ other templates
|
||||
colorless_color := {
|
||||
if contains(card.card_color, match:"hybrid") or contains(card.card_color, match:"multicolor") then "c"
|
||||
else if card.card_color=="white" then "w"
|
||||
else if card.card_color=="blue" then "u"
|
||||
else if card.card_color=="black" then "b"
|
||||
else if card.card_color=="red" then "r"
|
||||
else if card.card_color=="green" then "g"
|
||||
else "c"
|
||||
}
|
||||
|
||||
#Indicators never appear if the indicator would be colorless, colorless land, or colorless artifact.
|
||||
#Indicators do appear if the chosen frame doesn't match the default.
|
||||
#Indicators do appear if the chosen color for the indicator doesn't match the default.
|
||||
|
||||
has_identity := { ( ( card.card_color != card_color(casting_cost: card.casting_cost, rules_text: card.rule_text, type: card.super_type, watermark: card.watermark, card_name: card.name, default: "colorless") ) or ( card.indicator != card_color(casting_cost: card.casting_cost, rules_text: card.rule_text, type: card.super_type, watermark: card.watermark, card_name: card.name, default: "colorless") ) ) and card.indicator != "colorless" and card.indicator != "artifact" and card.indicator != "land"}
|
||||
|
||||
has_identity_2 := { ( ( card.card_color_2 != card_color(casting_cost: card.casting_cost_2, rules_text: card.rule_text_2, type: card.super_type_2, watermark: card.watermark_2, card_name: card.name_2, default: "colorless") ) or ( card.indicator_2 != card_color(casting_cost: card.casting_cost_2, rules_text: card.rule_text_2, type: card.super_type_2, watermark: card.watermark_2, card_name: card.name_2, default: "colorless") ) ) and card.indicator_2 != "colorless" and card.indicator_2 != "artifact" and card.indicator_2 != "land"}
|
||||
|
||||
############################################################## Statistics utilities
|
||||
|
||||
# Converted mana cost
|
||||
is_half_mana := match@(match: "1/2|[|][WUBRGS]")
|
||||
is_colored_mana := match@(match: "[WUBRG]")
|
||||
only_numbers := filter_text@(match: "^[0123456789]+")
|
||||
cmc_split := break_text@(match: "(?ix) 1/2 | [|][WUBRG] | [0-9]+(?!/[WUBRGDHSCTQ2]) | [WUBRGDHS0-9](/[WUBRGDHS])\{0,4} ")
|
||||
cmc := {to_number(
|
||||
for each sym in cmc_split(to_text()) do (
|
||||
numbers := only_numbers(sym)
|
||||
if is_half_mana(sym) then 0.5
|
||||
else if numbers != "" then to_int(numbers)
|
||||
else 1 # all other symbols are 1
|
||||
))
|
||||
}
|
||||
|
||||
colored_mana := {to_number(
|
||||
for each sym in cmc_split(to_text()) do (
|
||||
numbers := only_numbers(sym)
|
||||
if is_colored_mana(sym) then
|
||||
if is_half_mana(sym) then 0.5 else 1
|
||||
else 0
|
||||
))
|
||||
}
|
||||
|
||||
primary_card_color := {
|
||||
artifact := chosen(choice:"artifact") and not (chosen(choice:"white") or chosen(choice:"blue") or chosen(choice:"black") or chosen(choice:"red") or chosen(choice:"green"))
|
||||
land := chosen(choice:"land")
|
||||
multi := chosen(choice:"multicolor")
|
||||
hybrid := chosen(choice:"hybrid")
|
||||
white := chosen(choice:"white")
|
||||
blue := chosen(choice:"blue")
|
||||
black := chosen(choice:"black")
|
||||
red := chosen(choice:"red")
|
||||
green := chosen(choice:"green")
|
||||
if land then "land"
|
||||
else if multi then "multicolor"
|
||||
else if hybrid then "hybrid"
|
||||
else if artifact then "artifact"
|
||||
else if white then "white"
|
||||
else if blue then "blue"
|
||||
else if black then "black"
|
||||
else if red then "red"
|
||||
else if green then "green"
|
||||
else input
|
||||
}
|
||||
mainframe_stat_color := {
|
||||
artifact := chosen(choice:"artifact") and not (chosen(choice:"white") or chosen(choice:"blue") or chosen(choice:"black") or chosen(choice:"red") or chosen(choice:"green"))
|
||||
land := chosen(choice:"land")
|
||||
multi := chosen(choice:"multicolor")
|
||||
hybrid := chosen(choice:"hybrid")
|
||||
white := chosen(choice:"white")
|
||||
blue := chosen(choice:"blue")
|
||||
black := chosen(choice:"black")
|
||||
red := chosen(choice:"red")
|
||||
green := chosen(choice:"green")
|
||||
pink := chosen(choice:"pink")
|
||||
purple := chosen(choice:"purple")
|
||||
if land then "land"
|
||||
else if multi then "multicolor"
|
||||
else if hybrid then "hybrid"
|
||||
else if artifact then "artifact"
|
||||
else if white then "white"
|
||||
else if blue then "blue"
|
||||
else if black then "black"
|
||||
else if red then "red"
|
||||
else if green then "green"
|
||||
else if pink then "pink"
|
||||
else if purple then "purple"
|
||||
else input
|
||||
}
|
||||
is_mainframe := { false }
|
||||
is_walker := { contains(card.super_type, match:"Planeswalker") }
|
||||
mainframe_power := { card.power }
|
||||
mainframe_toughness := { card.toughness }
|
||||
|
||||
word_count := break_text@(match:"[^[:space:]]+") + length
|
||||
line_count := split_text@(match:"\n+",include_empty:false) + length
|
||||
|
||||
#Remove supertypes or types to look at parts of the super_type field by themselves.
|
||||
remove_supertype := replace@(match: "(Legendary|Basic|Snow|World|Tribal|Token)", replace: "")+
|
||||
replace@(match: "[ ]+", in_context: "^<match>", replace: "")+
|
||||
replace@(match: "[ ]+", in_context: "<match>$", replace: "")
|
||||
remove_type := replace@(match: "(Artifact|Creature|Enchantment|Instant|Land|Planeswalker|Sorcery)", replace: "")+
|
||||
replace@(match: "[ ]+", in_context: "^<match>", replace: "")+
|
||||
replace@(match: "[ ]+", in_context: "<match>$", replace: "")
|
||||
node_script := { if card.shape == "double faced" then "transform day" else "none" }
|
||||
node_script_2 := {
|
||||
if card.mainframe_node == "transform day" then "transform night"
|
||||
else if card.mainframe_node == "transform night" then "transform day"
|
||||
else if card.mainframe_node == "transform moon" then "transform eldrazi"
|
||||
else if card.mainframe_node == "transform eldrazi" then "transform moon"
|
||||
else if card.mainframe_node == "transform sparker" then "transform aetherprint"
|
||||
else if card.mainframe_node == "transform aetherprint" then "transform sparker"
|
||||
else "none"
|
||||
}
|
||||
card_new_color := {
|
||||
if card.card_color == "white" then "w"
|
||||
else if card.card_color == "blue" then "u"
|
||||
else if card.card_color == "black" then "b"
|
||||
else if card.card_color == "red" then "r"
|
||||
else if card.card_color == "green" then "g"
|
||||
else if contains(card.card_color, match:"artifact") then "a"
|
||||
else if contains(card.card_color, match:"multi") or contains(card.card_color, match:"hybrid") then "m"
|
||||
else "c"
|
||||
}
|
||||
spark_color := {
|
||||
if card.card_color == "white" then "w"
|
||||
else if card.card_color == "blue" then "u"
|
||||
else if card.card_color == "black" then "b"
|
||||
else if card.card_color == "red" then "r"
|
||||
else if card.card_color == "green" then "g"
|
||||
else if contains(card.card_color, match:"multi") or contains(card.card_color, match:"hybrid") then "m"
|
||||
else ""
|
||||
}
|
||||
card_spotlight := { "/magic-mainframe-watermarks.mse-include/spotlight/" + card_new_color() + "spotlight.png" }
|
||||
|
||||
ancestral_mana := { card.pt != "" and card.pt == "" }
|
||||
exporter_check := { "no" }
|
||||
custom_watermark_1 := { if set.custom_watermark_1 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_1 else "/magic-watermarks.mse-include/aetherprint3.png" }
|
||||
custom_watermark_2 := { if set.custom_watermark_2 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_2 else "/magic-watermarks.mse-include/aetherprint3.png" }
|
||||
custom_watermark_3 := { if set.custom_watermark_3 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_3 else "/magic-watermarks.mse-include/aetherprint3.png" }
|
||||
custom_watermark_4 := { if set.custom_watermark_4 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_4 else "/magic-watermarks.mse-include/aetherprint3.png" }
|
||||
custom_watermark_5 := { if set.custom_watermark_5 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_5 else "/magic-watermarks.mse-include/aetherprint3.png" }
|
||||
is_unsorted := {"false"}
|
||||
@@ -0,0 +1,280 @@
|
||||
|
||||
############################################################## Set fields
|
||||
|
||||
set field:
|
||||
type: info
|
||||
name: Set Information
|
||||
set field:
|
||||
type: text
|
||||
name: title
|
||||
identifying: true
|
||||
set field:
|
||||
type: text
|
||||
name: description
|
||||
multi line: true
|
||||
set field:
|
||||
type: text
|
||||
name: artist
|
||||
set field:
|
||||
type: text
|
||||
name: copyright
|
||||
set field:
|
||||
type: text
|
||||
name: set code
|
||||
description: Typically, a three letter code for the set.
|
||||
set field:
|
||||
type: text
|
||||
name: set language
|
||||
description: Typically, a two letter code for the language the set is in.
|
||||
set field:
|
||||
type: text
|
||||
name: masterpiece set code
|
||||
description: The letter code for masterpieces, typically MSP
|
||||
set field:
|
||||
type: symbol
|
||||
name: symbol
|
||||
description: The symbol for this set, double click to edit
|
||||
set field:
|
||||
type: symbol
|
||||
name: masterpiece symbol
|
||||
description: The symbol for this sets masterpieces, click to edit
|
||||
set field:
|
||||
type: text
|
||||
name: custom watermark 1
|
||||
description: Set this image in magic-watermarks.mse-include as Custom Watermark 1
|
||||
set field:
|
||||
type: text
|
||||
name: custom watermark 2
|
||||
description: Set this image in magic-watermarks.mse-include as Custom Watermark 2
|
||||
set field:
|
||||
type: text
|
||||
name: custom watermark 3
|
||||
description: Set this image in magic-watermarks.mse-include as Custom Watermark 3
|
||||
set field:
|
||||
type: text
|
||||
name: custom watermark 4
|
||||
description: Set this image in magic-watermarks.mse-include as Custom Watermark 4
|
||||
set field:
|
||||
type: text
|
||||
name: custom watermark 5
|
||||
description: Set this image in magic-watermarks.mse-include as Custom Watermark 5
|
||||
set field:
|
||||
type: info
|
||||
name: Defaults and Automation
|
||||
set field:
|
||||
type: color
|
||||
name: border color
|
||||
description: The default border color for cards
|
||||
choice:
|
||||
name: black
|
||||
color: rgb(0,0,0)
|
||||
choice:
|
||||
name: white
|
||||
color: rgb(255,255,255)
|
||||
choice:
|
||||
name: silver
|
||||
color: rgb(128,128,128)
|
||||
choice:
|
||||
name: gold
|
||||
color: rgb(200,180,0)
|
||||
set field:
|
||||
type: multiple choice
|
||||
name: automatic reminder text
|
||||
choice: old
|
||||
choice: core
|
||||
choice: expert
|
||||
choice: pseudo
|
||||
choice: action
|
||||
choice: custom
|
||||
choice: lower case
|
||||
initial: old, expert, pseudo, action, custom
|
||||
# Convert from older mse versions
|
||||
script:
|
||||
if value == "yes" then "old, core, expert, 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
|
||||
description: Should card numbers be shown on the cards?
|
||||
set field:
|
||||
type: boolean
|
||||
name: automatic copyright
|
||||
description: Should the copyright line above be shown on the cards?
|
||||
set field:
|
||||
type: boolean
|
||||
name: trim statistics
|
||||
description: Removes tokens, special rarity, and masterpiece rarity from most statistics.
|
||||
set field:
|
||||
type: boolean
|
||||
name: curly quotes
|
||||
description: converts quotes to curly quotes.
|
||||
set field:
|
||||
type: choice
|
||||
name: sort special rarity
|
||||
description: Determines how cards with special rarity are sorted.
|
||||
choice: with the rest
|
||||
choice: after other cards
|
||||
choice: separate numbering
|
||||
initial: after other cards
|
||||
set field:
|
||||
type: boolean
|
||||
name: sort multicolor in pairs
|
||||
description: Should multicolor cards be sorted according to pairs like in Shards block?
|
||||
initial: no
|
||||
set field:
|
||||
type: boolean
|
||||
name: sort hybrid in pairs
|
||||
description: Should hybrid cards be sorted according to pairs like in Shadowmoor block?
|
||||
initial: no
|
||||
#set field:
|
||||
# type: boolean
|
||||
# name: wedge mana costs
|
||||
# description: Should three color mana costs sort in wedge order like in Khans block?
|
||||
# initial: no
|
||||
set field:
|
||||
type: choice
|
||||
name: mana cost sorting
|
||||
description: Should mana costs be sorted by shard, by wedge, or unsorted?
|
||||
choice: shard sorting
|
||||
choice: wedge sorting
|
||||
choice: unsorted
|
||||
set field:
|
||||
type: choice
|
||||
name: card language
|
||||
description: Language for the cards
|
||||
choice: English
|
||||
choice: Français
|
||||
initial: English
|
||||
set field:
|
||||
type: boolean
|
||||
name: mark errors
|
||||
description: Marks errors on cards, for example wording and spelling errors, non unique card names, etc.
|
||||
set field:
|
||||
type: choice
|
||||
name: use gradient multicolor
|
||||
choice: yes
|
||||
choice: only for two color cards
|
||||
choice: no
|
||||
description: Use gradients on multicolor cards by default, you can always change it be clicking on the card border.
|
||||
initial: only for two color cards
|
||||
|
||||
############################# Default style
|
||||
|
||||
default set style:
|
||||
title:
|
||||
padding left: 2
|
||||
font:
|
||||
size: 16
|
||||
symbol:
|
||||
max aspect ratio: 2.5
|
||||
variation:
|
||||
name: common
|
||||
border radius: 0.10
|
||||
fill type: solid
|
||||
fill color: rgb(0,0,0)
|
||||
border color: rgb(255,255,255)
|
||||
variation:
|
||||
name: uncommon
|
||||
border radius: 0.07
|
||||
fill type: linear gradient
|
||||
fill color 1: rgb(224,224,224)
|
||||
fill color 2: rgb(84, 84, 84)
|
||||
border color 1: rgb(0, 0, 0)
|
||||
border color 2: rgb(0, 0, 0)
|
||||
variation:
|
||||
name: rare
|
||||
border radius: 0.07
|
||||
fill type: linear gradient
|
||||
fill color 1: rgb(214,196,94)
|
||||
fill color 2: rgb(95, 84, 40)
|
||||
border color 1: rgb(0, 0, 0)
|
||||
border color 2: rgb(0, 0, 0)
|
||||
variation:
|
||||
name: mythic rare
|
||||
border radius: 0.07
|
||||
fill type: linear gradient
|
||||
fill color 1: rgb(245,148,31)
|
||||
fill color 2: rgb(186,45,38)
|
||||
border color 1: rgb(0, 0, 0)
|
||||
border color 2: rgb(0, 0, 0)
|
||||
variation:
|
||||
name: special
|
||||
border radius: 0.10
|
||||
fill type: linear gradient
|
||||
fill color 1: rgb(224,170,247)
|
||||
fill color 2: rgb(58,7,80)
|
||||
border color 1: rgb(255,255,255)
|
||||
border color 2: rgb(255,255,255)
|
||||
variation:
|
||||
name: watermark
|
||||
border radius: 0.10
|
||||
fill type: solid
|
||||
fill color: rgb(255,255,255)
|
||||
border color: rgba(0,0,0,0)
|
||||
masterpiece symbol:
|
||||
max aspect ratio: 2.5
|
||||
variation:
|
||||
name: common
|
||||
border radius: 0.10
|
||||
fill type: solid
|
||||
fill color: rgb(0,0,0)
|
||||
border color: rgb(255,255,255)
|
||||
variation:
|
||||
name: uncommon
|
||||
border radius: 0.07
|
||||
fill type: linear gradient
|
||||
fill color 1: rgb(224,224,224)
|
||||
fill color 2: rgb(84, 84, 84)
|
||||
border color 1: rgb(0, 0, 0)
|
||||
border color 2: rgb(0, 0, 0)
|
||||
variation:
|
||||
name: rare
|
||||
border radius: 0.07
|
||||
fill type: linear gradient
|
||||
fill color 1: rgb(214,196,94)
|
||||
fill color 2: rgb(95, 84, 40)
|
||||
border color 1: rgb(0, 0, 0)
|
||||
border color 2: rgb(0, 0, 0)
|
||||
variation:
|
||||
name: mythic rare
|
||||
border radius: 0.07
|
||||
fill type: linear gradient
|
||||
fill color 1: rgb(245,148,31)
|
||||
fill color 2: rgb(186,45,38)
|
||||
border color 1: rgb(0, 0, 0)
|
||||
border color 2: rgb(0, 0, 0)
|
||||
variation:
|
||||
name: special
|
||||
border radius: 0.10
|
||||
fill type: linear gradient
|
||||
fill color 1: rgb(224,170,247)
|
||||
fill color 2: rgb(58,7,80)
|
||||
border color 1: rgb(255,255,255)
|
||||
border color 2: rgb(255,255,255)
|
||||
variation:
|
||||
name: watermark
|
||||
border radius: 0.10
|
||||
fill type: solid
|
||||
fill color: rgb(255,255,255)
|
||||
border color: rgba(0,0,0,0)
|
||||
automatic reminder text:
|
||||
render style: checklist
|
||||
direction: vertical
|
||||
sort special rarity:
|
||||
render style: both
|
||||
choice images:
|
||||
with the rest: /magic.mse-game/icons/number_cards_mixed.png
|
||||
after other cards: /magic.mse-game/icons/number_cards_after.png
|
||||
separate numbering: /magic.mse-game/icons/number_cards_separate.png
|
||||
use gradient multicolor:
|
||||
render style: both
|
||||
choice images:
|
||||
yes: script: built_in_image("bool_yes")
|
||||
no: script: built_in_image("bool_no")
|
||||
card language:
|
||||
render style: both
|
||||
choice images:
|
||||
English: /magic.mse-game/icons/language-en.png
|
||||
Français: /magic.mse-game/icons/language-fr.png
|
||||
@@ -0,0 +1,291 @@
|
||||
|
||||
############################################################## Statistics dimensions
|
||||
|
||||
statistics dimension:
|
||||
name: card color
|
||||
position hint: 0
|
||||
script: if (card.shape == "token" or card.rarity == "special" or card.rarity == "masterpiece") and set.trim_statistics then "" else primary_card_color(card.card_color)
|
||||
icon: stats/card_color.png
|
||||
colors:
|
||||
white : rgb(255,237,202)
|
||||
blue : rgb(42,141,255)
|
||||
black : rgb(33,33,33)
|
||||
red : rgb(255,52,0)
|
||||
green : rgb(118,230,0)
|
||||
colorless : rgb(120,90,90)
|
||||
artifact : rgb(185,192,199)
|
||||
multicolor : rgb(255,188,14)
|
||||
land : rgb(109,62,39)
|
||||
hybrid : rgb(201,12,230)
|
||||
group: white
|
||||
group: blue
|
||||
group: black
|
||||
group: red
|
||||
group: green
|
||||
group: colorless
|
||||
group: artifact
|
||||
group: multicolor
|
||||
group: land
|
||||
group: hybrid
|
||||
statistics dimension:
|
||||
name: promo colors
|
||||
position hint: 800
|
||||
script: if card.rarity == "special" or card.rarity == "masterpiece" then primary_card_color(card.card_color) else ""
|
||||
icon: stats/card_color.png
|
||||
colors:
|
||||
white : rgb(255,237,202)
|
||||
blue : rgb(42,141,255)
|
||||
black : rgb(33,33,33)
|
||||
red : rgb(255,52,0)
|
||||
green : rgb(118,230,0)
|
||||
colorless : rgb(120,90,90)
|
||||
artifact : rgb(185,192,199)
|
||||
multicolor : rgb(255,188,14)
|
||||
land : rgb(109,62,39)
|
||||
hybrid : rgb(201,12,230)
|
||||
group: white
|
||||
group: blue
|
||||
group: black
|
||||
group: red
|
||||
group: green
|
||||
group: colorless
|
||||
group: artifact
|
||||
group: multicolor
|
||||
group: land
|
||||
group: hybrid
|
||||
statistics dimension:
|
||||
name: omniverse card color
|
||||
position hint: 9999
|
||||
script: primary_card_color(card.card_color)
|
||||
icon: stats/card_color.png
|
||||
colors:
|
||||
white : rgb(255,237,202)
|
||||
blue : rgb(42,141,255)
|
||||
black : rgb(33,33,33)
|
||||
red : rgb(255,52,0)
|
||||
green : rgb(118,230,0)
|
||||
pink : rgb(255,175,200)
|
||||
purple : rgb(150,100,160)
|
||||
colorless : rgb(120,90,90)
|
||||
artifact : rgb(185,192,199)
|
||||
multicolor : rgb(255,188,14)
|
||||
land : rgb(109,62,39)
|
||||
hybrid : rgb(201,12,230)
|
||||
group: white
|
||||
group: blue
|
||||
group: black
|
||||
group: red
|
||||
group: green
|
||||
group: pink
|
||||
group: purple
|
||||
group: colorless
|
||||
group: artifact
|
||||
group: multicolor
|
||||
group: land
|
||||
group: hybrid
|
||||
statistics dimension:
|
||||
position hint: 2
|
||||
name: converted mana cost
|
||||
script: if (card.shape == "token" or card.rarity == "special" or card.rarity == "masterpiece") and set.trim_statistics then "" else cmc(card.casting_cost)
|
||||
numeric: true
|
||||
icon: stats/casting_cost.png
|
||||
|
||||
statistics dimension:
|
||||
position hint: 3
|
||||
name: colored mana cost
|
||||
script: if (card.shape == "token" or card.rarity == "special" or card.rarity == "masterpiece") and set.trim_statistics then "" else colored_mana(card.casting_cost)
|
||||
numeric: true
|
||||
icon: stats/colored_casting_cost.png
|
||||
|
||||
statistics dimension:
|
||||
name: supertype
|
||||
position hint: 27
|
||||
icon: stats/card_type.png
|
||||
description: The card's supertype, not including types
|
||||
script: if (card.shape == "token" or card.rarity == "special" or card.rarity == "masterpiece") and set.trim_statistics then "" else remove_type(to_text(card.super_type))
|
||||
|
||||
statistics dimension:
|
||||
name: type
|
||||
position hint: 28
|
||||
icon: stats/card_type.png
|
||||
description: The card's type, not including supertypes
|
||||
script: if (card.shape == "token" or card.rarity == "special" or card.rarity == "masterpiece") and set.trim_statistics then "" else remove_supertype(to_text(card.super_type))
|
||||
|
||||
statistics dimension:
|
||||
name: combined type
|
||||
position hint: 29
|
||||
icon: stats/card_type.png
|
||||
description: The traditional supertype statistic, with no filtering
|
||||
script: if (card.shape == "token" or card.rarity == "special" or card.rarity == "masterpiece") and set.trim_statistics then "" else card.super_type
|
||||
|
||||
statistics dimension:
|
||||
name: perm/non-perm
|
||||
position hint: 30
|
||||
icon: stats/card_type.png
|
||||
description: Is the card a creature, non-creature permanent, or nonpermanent?
|
||||
script:
|
||||
if (card.shape == "token" or card.rarity == "special" or card.rarity == "masterpiece") and set.trim_statistics then "" else
|
||||
if is_creature(card.super_type) then "creature"
|
||||
else if is_spell(card.super_type) then "nonpermanent"
|
||||
else if is_artifact(card.super_type) or is_enchantment(card.super_type) or is_land(card.super_type) or contains(card.super_type, match:"Planeswalker") then "permanent"
|
||||
else "unknown"
|
||||
|
||||
statistics dimension:
|
||||
name: race
|
||||
position hint: 32
|
||||
icon: stats/creature_race.png
|
||||
description: Race of creatures and tribal cards
|
||||
script:
|
||||
if (card.shape == "token" or card.rarity == "special" or card.rarity == "masterpiece") and set.trim_statistics then "" else
|
||||
if is_creature(card.super_type) or is_tribal(card.super_type) then
|
||||
only_first(card.sub_type)
|
||||
show empty: false
|
||||
|
||||
statistics dimension:
|
||||
name: creature class
|
||||
position hint: 33
|
||||
icon: stats/creature_class.png
|
||||
description: Class of creature cards
|
||||
script:
|
||||
if (card.shape == "token" or card.rarity == "special" or card.rarity == "masterpiece") and set.trim_statistics then "" else
|
||||
if is_creature(card.super_type) then
|
||||
space_to_comma(trim(remove_tags(only_next(card.sub_type))))
|
||||
show empty: false
|
||||
split list: true
|
||||
|
||||
statistics dimension:
|
||||
position hint: 50
|
||||
name: power
|
||||
script: if (card.shape == "token" or card.rarity == "special" or card.rarity == "masterpiece") and set.trim_statistics then "" else card.power
|
||||
numeric: true
|
||||
icon: stats/power.png
|
||||
|
||||
statistics dimension:
|
||||
position hint: 51
|
||||
name: toughness
|
||||
script: if (card.shape == "token" or card.rarity == "special" or card.rarity == "masterpiece") and set.trim_statistics then "" else card.toughness
|
||||
numeric: true
|
||||
icon: stats/toughness.png
|
||||
|
||||
statistics dimension:
|
||||
position hint: 99
|
||||
name: rarity
|
||||
script: if card.shape == "token" or card.shape == "emblem" then "token" else card.rarity
|
||||
colors:
|
||||
token: rgb(33,33,33)
|
||||
basic land: rgb(109,62,39)
|
||||
common: rgb(33,33,33)
|
||||
uncommon: rgb(224,224,224)
|
||||
mythic rare: rgb(202, 49, 35)
|
||||
rare: rgb(255,207,52)
|
||||
special: rgb(190,0,255)
|
||||
masterpiece: rgb(202,49,35)
|
||||
group: token
|
||||
group: basic land
|
||||
group: common
|
||||
group: uncommon
|
||||
group: rare
|
||||
group: mythic rare
|
||||
group: special
|
||||
group: masterpiece
|
||||
icon: stats/rarity.png
|
||||
|
||||
statistics dimension:
|
||||
name: text length (words)
|
||||
position hint: 100
|
||||
script: if is_mainframe() and is_walker() then word_count(to_text(card.mainframe_rule_text)) else word_count(to_text(card.rule_text))
|
||||
numeric: true
|
||||
bin size: 5
|
||||
icon: stats/text_length.png
|
||||
|
||||
statistics dimension:
|
||||
name: text length (lines)
|
||||
position hint: 101
|
||||
script: if is_mainframe() and is_walker() then line_count(to_text(card.mainframe_rule_text)) else line_count(to_text(card.rule_text))
|
||||
numeric: true
|
||||
icon: stats/text_length.png
|
||||
|
||||
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 categories (OLD)
|
||||
|
||||
statistics category:
|
||||
name: color / rarity
|
||||
position hint: 101
|
||||
type: stack
|
||||
icon: stats/color_rarity.png
|
||||
dimension: card color
|
||||
dimension: rarity
|
||||
|
||||
statistics category:
|
||||
name: power / toughness
|
||||
position hint: 52
|
||||
type: scatter pie
|
||||
icon: stats/pt.png
|
||||
dimension: power
|
||||
dimension: toughness
|
||||
dimension: rarity
|
||||
|
||||
#statistics category:
|
||||
# name: color / cost
|
||||
# type: scatter
|
||||
# dimension: card color
|
||||
# dimension: converted mana cost
|
||||
|
||||
statistics category:
|
||||
name: color / cost
|
||||
position hint: 4
|
||||
type: scatter pie
|
||||
icon: stats/color_cost.png
|
||||
dimension: card color
|
||||
dimension: converted mana cost
|
||||
dimension: rarity
|
||||
|
||||
statistics category:
|
||||
name: color / colored cost
|
||||
position hint: 5
|
||||
icon: stats/color_colored_cost.png
|
||||
type: scatter
|
||||
dimension: card color
|
||||
dimension: colored mana cost
|
||||
|
||||
statistics category:
|
||||
name: cost / colored cost
|
||||
position hint: 6
|
||||
icon: stats/cost_colored_cost.png
|
||||
type: scatter pie
|
||||
dimension: converted mana cost
|
||||
dimension: colored mana cost
|
||||
dimension: card color
|
||||
|
||||
statistics category:
|
||||
name: creature race / class
|
||||
position hint: 34
|
||||
icon: stats/creature_type.png
|
||||
type: scatter pie
|
||||
dimension: race
|
||||
dimension: creature class
|
||||
dimension: card color
|
||||
statistics dimension:
|
||||
position hint: 210
|
||||
name: illustrator
|
||||
script: if card.illustrator == "" then " No artist" else card.illustrator
|
||||
icon: stats/illustrator.png
|
||||
#statistics dimension:
|
||||
# position hint: 2
|
||||
# name: purple converted mana cost
|
||||
# script: 0 + (if card.mana_label_1 != "" then card.mana_label_1 else 0) + (if card.mana_label_2 != "" then card.mana_label_2 else 0) + (if card.mana_label_3 != "" then card.mana_label_3 else 0) + (if card.mana_label_4 != "" then card.mana_label_4 else 0) + (if card.mana_label_5 != "" then card.mana_label_5 else 0) + (if card.mana_label_6 != "" then card.mana_label_6 else 0) + (if card.mana_label_7 != "" then card.mana_label_7 else 0) + (if card.mana_label_8 != "" then card.mana_label_8 else 0)
|
||||
# numeric: true
|
||||
# icon: stats/casting_cost.png
|
||||
|
After Width: | Height: | Size: 876 B |
|
After Width: | Height: | Size: 654 B |
|
After Width: | Height: | Size: 400 B |
|
After Width: | Height: | Size: 877 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1014 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 672 B |
|
After Width: | Height: | Size: 706 B |
|
After Width: | Height: | Size: 416 B |
|
After Width: | Height: | Size: 394 B |
|
After Width: | Height: | Size: 674 B |
|
After Width: | Height: | Size: 576 B |
|
After Width: | Height: | Size: 1000 B |
|
After Width: | Height: | Size: 860 B |
|
After Width: | Height: | Size: 590 B |
|
After Width: | Height: | Size: 118 B |
|
After Width: | Height: | Size: 702 B |
|
After Width: | Height: | Size: 1016 B |
@@ -0,0 +1,27 @@
|
||||
# This script contains tests of the functions defined in other script files.
|
||||
# These are not used during normal execution, they are only used for development.
|
||||
# When everything is right, all these tests pass.
|
||||
|
||||
##############################################################
|
||||
# card_color_color_count
|
||||
##############################################################
|
||||
|
||||
assert(card_color_color_count("") == 0)
|
||||
assert(card_color_color_count("asdf") == 0)
|
||||
assert(card_color_color_count("white") == 1)
|
||||
assert(card_color_color_count("artifact,white") == 2)
|
||||
|
||||
##############################################################
|
||||
# converted mana cost
|
||||
##############################################################
|
||||
|
||||
assert(cmc("") == 0)
|
||||
assert(cmc("0") == 0)
|
||||
assert(cmc("1/2") == 0.5)
|
||||
assert(cmc("2/R3/W") == 5)
|
||||
assert(cmc("W/UW") == 2)
|
||||
assert(cmc("RRR") == 3)
|
||||
assert(cmc("2X") == 2)
|
||||
assert(cmc("22") == 22)
|
||||
assert(cmc("20WUBRG") == 25)
|
||||
|
||||
@@ -0,0 +1,531 @@
|
||||
|
||||
############################################################## Magic word lists
|
||||
|
||||
word list:
|
||||
name:
|
||||
word:
|
||||
|
||||
word list:
|
||||
name: type
|
||||
word:
|
||||
name: Basic
|
||||
is prefix: true
|
||||
word:
|
||||
name: Legendary
|
||||
is prefix: true
|
||||
word:
|
||||
name: Tribal
|
||||
is prefix: true
|
||||
word:
|
||||
name: Snow
|
||||
is prefix: true
|
||||
word:
|
||||
name: World
|
||||
is prefix: true
|
||||
line below: true
|
||||
word: Conspiracy
|
||||
word: Creature
|
||||
word: Artifact
|
||||
word: Artifact Creature
|
||||
word: Enchantment
|
||||
word: Instant
|
||||
word: Sorcery
|
||||
word: Land
|
||||
word: Planeswalker
|
||||
|
||||
word list:
|
||||
name: race
|
||||
word:
|
||||
script: all_races()
|
||||
line below: true
|
||||
word: Angel
|
||||
word: Beast
|
||||
word: Construct
|
||||
word: Demon
|
||||
word: Dragon
|
||||
word: Elf
|
||||
word: Faerie
|
||||
word: Giant
|
||||
word: Goblin
|
||||
word: Golem
|
||||
word: Human
|
||||
word: Merfolk
|
||||
word: Zombie
|
||||
word:
|
||||
name: All Races
|
||||
word:
|
||||
name: A
|
||||
word: Aetherborn
|
||||
word: Angel
|
||||
word: Antelope
|
||||
word: Ape
|
||||
word: Archon
|
||||
word: Assembly-Worker
|
||||
word: Atog
|
||||
word: Aurochs
|
||||
word: Avatar
|
||||
word:
|
||||
name: B
|
||||
word: Badger
|
||||
word: Basilisk
|
||||
word: Bat
|
||||
word: Bear
|
||||
word: Beast
|
||||
word: Beeble
|
||||
word: Bird
|
||||
word: Blinkmoth
|
||||
word: Boar
|
||||
word: Bringer
|
||||
word: Brushwagg
|
||||
word:
|
||||
name: C
|
||||
word: Camarid
|
||||
word: Camel
|
||||
word: Caribou
|
||||
word: Carrier
|
||||
word: Cat
|
||||
word: Centaur
|
||||
word: Cephalid
|
||||
word: Chimera
|
||||
word: Cockatrice
|
||||
word: Construct
|
||||
word: Crab
|
||||
word: Crocodile
|
||||
word: Cyclops
|
||||
word:
|
||||
name: D
|
||||
word: Dauthi
|
||||
word: Demon
|
||||
word: Devil
|
||||
word: Dinosaur
|
||||
word: Djinn
|
||||
word: Dragon
|
||||
word: Drake
|
||||
word: Dreadnought
|
||||
word: Drone
|
||||
word: Dryad
|
||||
word: Dwarf
|
||||
word:
|
||||
name: E
|
||||
word: Efreet
|
||||
word: Eldrazi
|
||||
word: Elemental
|
||||
word: Elephant
|
||||
word: Elf
|
||||
word: Elk
|
||||
word: Eye
|
||||
word:
|
||||
name: F
|
||||
word: Faerie
|
||||
word: Ferret
|
||||
word: Fish
|
||||
word: Fox
|
||||
word: Frog
|
||||
word: Fungus
|
||||
word:
|
||||
name: G
|
||||
word: Gargoyle
|
||||
word: Germ
|
||||
word: Giant
|
||||
word: Gnome
|
||||
word: Goat
|
||||
word: Goblin
|
||||
word: God
|
||||
word: Golem
|
||||
word: Gorgon
|
||||
word: Graveborn
|
||||
word: Gremlin
|
||||
word: Griffin
|
||||
word:
|
||||
name: H
|
||||
word: Hag
|
||||
word: Harpy
|
||||
word: Hellion
|
||||
word: Hippo
|
||||
word: Hippogriff
|
||||
word: Homarid
|
||||
word: Homunculus
|
||||
word: Horror
|
||||
word: Horse
|
||||
word: Hound
|
||||
word: Human
|
||||
word: Hydra
|
||||
word: Hyena
|
||||
word:
|
||||
name: I
|
||||
word: Illusion
|
||||
word: Imp
|
||||
word: Incarnation
|
||||
word: Insect
|
||||
word:
|
||||
name: J
|
||||
word: Jackal
|
||||
word: Jellyfish
|
||||
word: Juggernaut
|
||||
word:
|
||||
name: K
|
||||
word: Kavu
|
||||
word: Kirin
|
||||
word: Kithkin
|
||||
word: Kobold
|
||||
word: Kor
|
||||
word: Kraken
|
||||
word:
|
||||
name: L
|
||||
word: Lamia
|
||||
word: Lammasu
|
||||
word: Leech
|
||||
word: Leviathan
|
||||
word: Lhurgoyf
|
||||
word: Licid
|
||||
word: Lizard
|
||||
word:
|
||||
name: M
|
||||
word: Manticore
|
||||
word: Masticore
|
||||
word: Merfolk
|
||||
word: Metathran
|
||||
word: Minotaur
|
||||
word: Mole
|
||||
word: Mongoose
|
||||
word: Monkey
|
||||
word: Moonfolk
|
||||
word: Mutant
|
||||
word: Myr
|
||||
word:
|
||||
name: N
|
||||
word: Naga
|
||||
word: Nautilus
|
||||
word: Nephilim
|
||||
word: Nightmare
|
||||
word: Nightstalker
|
||||
word: Noggle
|
||||
word: Nymph
|
||||
word:
|
||||
name: O
|
||||
word: Octopus
|
||||
word: Ogre
|
||||
word: Ooze
|
||||
word: Orb
|
||||
word: Orc
|
||||
word: Orgg
|
||||
word: Ouphe
|
||||
word: Ox
|
||||
word: Oyster
|
||||
word:
|
||||
name: P
|
||||
word: Pegasus
|
||||
word: Pentavite
|
||||
word: Pest
|
||||
word: Phelddagrif
|
||||
word: Phoenix
|
||||
word: Pincher
|
||||
word: Plant
|
||||
word: Praetor
|
||||
word: Prism
|
||||
word:
|
||||
name: R
|
||||
word: Rabbit
|
||||
word: Rat
|
||||
word: Reflection
|
||||
word: Rhino
|
||||
word:
|
||||
name: S
|
||||
word:
|
||||
name: Sa-Sl
|
||||
word: Sable
|
||||
word: Salamander
|
||||
word: Sand
|
||||
word: Saproling
|
||||
word: Satyr
|
||||
word: Scarecrow
|
||||
word: Scorpion
|
||||
word: Serpent
|
||||
word: Servo
|
||||
word: Shade
|
||||
word: Shapeshifter
|
||||
word: Sheep
|
||||
word: Siren
|
||||
word: Skeleton
|
||||
word: Slith
|
||||
word: Sliver
|
||||
word: Slug
|
||||
word:
|
||||
name: Sn-Sz
|
||||
word: Snake
|
||||
word: Soltari
|
||||
word: Spawn
|
||||
word: Specter
|
||||
word: Sphinx
|
||||
word: Spider
|
||||
word: Spike
|
||||
word: Spirit
|
||||
word: Splinter
|
||||
word: Sponge
|
||||
word: Squid
|
||||
word: Squirrel
|
||||
word: Starfish
|
||||
word: Surrakar
|
||||
word:
|
||||
name: T
|
||||
word: Tetravite
|
||||
word: Thalakos
|
||||
word: Thopter
|
||||
word: Thrull
|
||||
word: Treefolk
|
||||
word: Trilobite
|
||||
word: Triskelavite
|
||||
word: Troll
|
||||
word: Turtle
|
||||
word:
|
||||
name: U
|
||||
word: Unicorn
|
||||
word:
|
||||
name: V
|
||||
word: Vampire
|
||||
word: Vedalken
|
||||
word: Viashino
|
||||
word: Volver
|
||||
word:
|
||||
name: W
|
||||
word: Wall
|
||||
word: Weird
|
||||
word: Werewolf
|
||||
word: Whale
|
||||
word: Wolf
|
||||
word: Wolverine
|
||||
word: Wombat
|
||||
word: Worm
|
||||
word: Wraith
|
||||
word: Wurm
|
||||
word:
|
||||
name: Y
|
||||
word: Yeti
|
||||
word:
|
||||
name: Z
|
||||
word: Zombie
|
||||
word: Zubera
|
||||
|
||||
word list:
|
||||
name: class
|
||||
word:
|
||||
script: all_classes()
|
||||
line below: true
|
||||
word: Beast
|
||||
word: Cleric
|
||||
word: Druid
|
||||
word: Knight
|
||||
word: Rogue
|
||||
word: Shaman
|
||||
word: Soldier
|
||||
word: Warrior
|
||||
word: Wizard
|
||||
word: Zombie
|
||||
word:
|
||||
name: All Classes
|
||||
word:
|
||||
name: A-C
|
||||
word: Advisor
|
||||
word: Ally
|
||||
word: Archer
|
||||
word: Archon
|
||||
word: Artificer
|
||||
word: Assassin
|
||||
word: Barbarian
|
||||
word: Beast
|
||||
word: Berserker
|
||||
word: Bringer
|
||||
word: Carrier
|
||||
word: Citizen
|
||||
word: Cleric
|
||||
word: Coward
|
||||
word:
|
||||
name: D-I
|
||||
word: Deserter
|
||||
word: Dreadnought
|
||||
word: Drone
|
||||
word: Druid
|
||||
word: Elder
|
||||
word: Flagbearer
|
||||
word: Horror
|
||||
word: Incarnation
|
||||
word:
|
||||
name: J-P
|
||||
word: Juggernaut
|
||||
word: Knight
|
||||
word: Leviathan
|
||||
word: Mercenary
|
||||
word: Minion
|
||||
word: Monger
|
||||
word: Monk
|
||||
word: Mutant
|
||||
word: Mystic
|
||||
word: Ninja
|
||||
word: Nomad
|
||||
word: Pilot
|
||||
word: Pirate
|
||||
word: Processor
|
||||
word:
|
||||
name: R-S
|
||||
word: Rebel
|
||||
word: Reflection
|
||||
word: Rigger
|
||||
word: Rogue
|
||||
word: Samurai
|
||||
word: Scion
|
||||
word: Scout
|
||||
word: Serf
|
||||
word: Shaman
|
||||
word: Skeleton
|
||||
word: Soldier
|
||||
word: Spawn
|
||||
word: Spellshaper
|
||||
word: Spirit
|
||||
word: Survivor
|
||||
word:
|
||||
name: T-Z
|
||||
word: Thopter
|
||||
word: Vampire
|
||||
word: Warrior
|
||||
word: Werewolf
|
||||
word: Wizard
|
||||
word: Zombie
|
||||
|
||||
word list:
|
||||
name: artifact
|
||||
word:
|
||||
script: all_sub_types(match: "Artifact")
|
||||
line below: true
|
||||
word: Contraption
|
||||
word: Equipment
|
||||
word: Fortification
|
||||
|
||||
word list:
|
||||
name: land
|
||||
word:
|
||||
script: all_sub_types(match: "Land")
|
||||
line below: true
|
||||
word: Plains
|
||||
word: Island
|
||||
word: Swamp
|
||||
word: Mountain
|
||||
word: Forest
|
||||
word: Desert
|
||||
word: Lair
|
||||
word: Locus
|
||||
word: Mine
|
||||
word: Power-Plant
|
||||
word: Tower
|
||||
word: Urza's
|
||||
|
||||
word list:
|
||||
name: enchantment
|
||||
word:
|
||||
script: all_sub_types(match: "Enchantment")
|
||||
line below: true
|
||||
word: Aura
|
||||
word: Curse
|
||||
word: Shrine
|
||||
word: Cartouche
|
||||
word: Saga
|
||||
|
||||
word list:
|
||||
name: spell
|
||||
word:
|
||||
script: all_sub_types(match: "Instant") + "," + all_sub_types(match: "Sorcery")
|
||||
line below: true
|
||||
word: Arcane
|
||||
word: Trap
|
||||
|
||||
word list:
|
||||
name: planeswalker
|
||||
word:
|
||||
script: all_sub_types(match: "Planeswalker")
|
||||
line below: true
|
||||
word: Ajani
|
||||
word: Angrath
|
||||
word: Arlinn
|
||||
word: Ashiok
|
||||
word: Bolas
|
||||
word: Chandra
|
||||
word: Dack
|
||||
word: Daretti
|
||||
word: Domri
|
||||
word: Dovin
|
||||
word: Elspeth
|
||||
word: Freylaise
|
||||
word: Garruk
|
||||
word: Gideon
|
||||
word: Huatli
|
||||
word: Jace
|
||||
word: Karn
|
||||
word: Kiora
|
||||
word: Koth
|
||||
word: Liliana
|
||||
word: Nahiri
|
||||
word: Narset
|
||||
word: Nissa
|
||||
word: Nixilis
|
||||
word: Ral
|
||||
word: Saheeli
|
||||
word: Samut
|
||||
word: Sarkhan
|
||||
word: Sorin
|
||||
word: Tamiyo
|
||||
word: Teferi
|
||||
word: Tezzeret
|
||||
word: Tibalt
|
||||
word: Ugin
|
||||
word: Venser
|
||||
word: Vraska
|
||||
word: Xenagos
|
||||
word:
|
||||
name: Last Seen on Ixalan
|
||||
word: Angrath
|
||||
word: Huatli
|
||||
word: Jace
|
||||
word: Vraska
|
||||
word:
|
||||
name: Last Seen on Amonkhet
|
||||
word: Bolas
|
||||
word: Gideon
|
||||
word: Liliana
|
||||
word: Nissa
|
||||
word: Samut
|
||||
word:
|
||||
name: Last Seen on Kaladesh
|
||||
word: Ajani
|
||||
word: Chandra
|
||||
word: Dovin
|
||||
word: Saheeli
|
||||
word: Tezzeret
|
||||
word:
|
||||
name: Last Seen on Innistrad
|
||||
word: Arlinn
|
||||
word: Nahiri
|
||||
word: Sorin
|
||||
word: Tamiyo
|
||||
word: Tibalt
|
||||
word:
|
||||
name: Last Seen on Zendikar
|
||||
word: Kiora
|
||||
word: Nixilis
|
||||
word:
|
||||
name: Last Seen on Tarkir
|
||||
word: Narset
|
||||
word: Sarkhan
|
||||
word: Ugin
|
||||
word:
|
||||
name: Last Seen on Theros
|
||||
word: Ashiok
|
||||
word: Elspeth
|
||||
word: Xenagos
|
||||
word:
|
||||
name: Last Seen on Ravnica
|
||||
word: Domri
|
||||
word: Ral
|
||||
word:
|
||||
name: Last Seen on New Phyrexia
|
||||
word: Karn
|
||||
word: Koth
|
||||
word: Venser
|
||||
@@ -0,0 +1,412 @@
|
||||
|
||||
############################################################## Magic word lists
|
||||
|
||||
word list:
|
||||
name: type
|
||||
word:
|
||||
name: de base
|
||||
is prefix: true
|
||||
word:
|
||||
name: légendaire
|
||||
is prefix: true
|
||||
word:
|
||||
name: tribaux
|
||||
is prefix: true
|
||||
word:
|
||||
name: de neige
|
||||
is prefix: true
|
||||
word:
|
||||
name: monde
|
||||
is prefix: true
|
||||
line below: true
|
||||
word: Créature
|
||||
word: Artefact
|
||||
word: Artefact Créature
|
||||
word: Enchantement
|
||||
word: Instant
|
||||
word: Rituel
|
||||
word: Terrain
|
||||
word: Planeswalker
|
||||
|
||||
word list:
|
||||
name: race
|
||||
word:
|
||||
script: all_races()
|
||||
line below: true
|
||||
word: Angel
|
||||
word: Beast
|
||||
word: Bird
|
||||
word: Construct
|
||||
word: Demon
|
||||
word: Dragon
|
||||
word: Drake
|
||||
word: Elemental
|
||||
word: Elf
|
||||
word: Faerie
|
||||
word: Giant
|
||||
word: Goblin
|
||||
word: Golem
|
||||
word: Human
|
||||
word: Illusion
|
||||
word: Merfolk
|
||||
word: Treefolk
|
||||
word: Zombie
|
||||
word:
|
||||
name: All Races
|
||||
word:
|
||||
name: A
|
||||
word: Angel
|
||||
word: Anteater
|
||||
word: Antelope
|
||||
word: Ape
|
||||
word: Archon
|
||||
word: Assembly-Worker
|
||||
word: Atog
|
||||
word: Aurochs
|
||||
word: Avatar
|
||||
word:
|
||||
name: B
|
||||
word: Badger
|
||||
word: Basilisk
|
||||
word: Bat
|
||||
word: Bear
|
||||
word: Beast
|
||||
word: Beeble
|
||||
word: Bird
|
||||
word: Blinkmoth
|
||||
word: Boar
|
||||
word: Bringer
|
||||
word: Brushwagg
|
||||
word:
|
||||
name: C
|
||||
word: Camarid
|
||||
word: Camel
|
||||
word: Caribou
|
||||
word: Cat
|
||||
word: Centaur
|
||||
word: Cephalid
|
||||
word: Chimera
|
||||
word: Cockatrice
|
||||
word: Construct
|
||||
word: Crab
|
||||
word: Crocodile
|
||||
word: Cyclops
|
||||
word:
|
||||
name: D
|
||||
word: Dauthi
|
||||
word: Demon
|
||||
word: Devil
|
||||
word: Djinn
|
||||
word: Dragon
|
||||
word: Drake
|
||||
word: Dreadnought
|
||||
word: Dryad
|
||||
word: Dwarf
|
||||
word:
|
||||
name: E
|
||||
word: Efreet
|
||||
word: Egg
|
||||
word: Elemental
|
||||
word: Elephant
|
||||
word: Elf
|
||||
word: Elk
|
||||
word: Eye
|
||||
word:
|
||||
name: F
|
||||
word: Faerie
|
||||
word: Ferret
|
||||
word: Fish
|
||||
word: Fox
|
||||
word: Frog
|
||||
word: Fungus
|
||||
word:
|
||||
name: G
|
||||
word: Gargoyle
|
||||
word: Giant
|
||||
word: Gnome
|
||||
word: Goat
|
||||
word: Goblin
|
||||
word: Golem
|
||||
word: Gorgon
|
||||
word: Graveborn
|
||||
word: Griffin
|
||||
word:
|
||||
name: H
|
||||
word: Hag
|
||||
word: Harpy
|
||||
word: Hellion
|
||||
word: Hippo
|
||||
word: Homarid
|
||||
word: Homunculus
|
||||
word: Horror
|
||||
word: Horse
|
||||
word: Hound
|
||||
word: Human
|
||||
word: Hydra
|
||||
word: Hyena
|
||||
word:
|
||||
name: I
|
||||
word: Illusion
|
||||
word: Imp
|
||||
word: Incarnation
|
||||
word: Insect
|
||||
word:
|
||||
name: J
|
||||
word: Jellyfish
|
||||
word: Juggernaut
|
||||
word:
|
||||
name: K
|
||||
word: Kavu
|
||||
word: Kirin
|
||||
word: Kithkin
|
||||
word: Kobold
|
||||
word: Kor
|
||||
word: Kraken
|
||||
word:
|
||||
name: L
|
||||
word: Lammasu
|
||||
word: Leech
|
||||
word: Leviathan
|
||||
word: Lhurgoyf
|
||||
word: Licid
|
||||
word: Lizard
|
||||
word:
|
||||
name: M
|
||||
word: Manticore
|
||||
word: Masticore
|
||||
word: Merfolk
|
||||
word: Metathran
|
||||
word: Minotaur
|
||||
word: Mongoose
|
||||
word: Moonfolk
|
||||
word: Mutant
|
||||
word: Myr
|
||||
word:
|
||||
name: N
|
||||
word: Nautilus
|
||||
word: Nephilim
|
||||
word: Nightmare
|
||||
word: Nightstalker
|
||||
word: Noggle
|
||||
word:
|
||||
name: O
|
||||
word: Octopus
|
||||
word: Ogre
|
||||
word: Ooze
|
||||
word: Orb
|
||||
word: Orc
|
||||
word: Orgg
|
||||
word: Ouphe
|
||||
word: Ox
|
||||
word: Oyster
|
||||
word:
|
||||
name: P
|
||||
word: Pegasus
|
||||
word: Pentavite
|
||||
word: Pest
|
||||
word: Phelddagrif
|
||||
word: Phoenix
|
||||
word: Pincher
|
||||
word: Plant
|
||||
word: Prism
|
||||
word:
|
||||
name: R
|
||||
word: Rabbit
|
||||
word: Rat
|
||||
word: Reflection
|
||||
word: Rhino
|
||||
word:
|
||||
name: S
|
||||
word:
|
||||
name: Sa-Sl
|
||||
word: Salamander
|
||||
word: Sand
|
||||
word: Saproling
|
||||
word: Satyr
|
||||
word: Scarecrow
|
||||
word: Scorpion
|
||||
word: Serpent
|
||||
word: Shade
|
||||
word: Shapeshifter
|
||||
word: Sheep
|
||||
word: Skeleton
|
||||
word: Slith
|
||||
word: Sliver
|
||||
word: Slug
|
||||
word:
|
||||
name: Sn-Sz
|
||||
word: Snake
|
||||
word: Soltari
|
||||
word: Spawn
|
||||
word: Specter
|
||||
word: Sphinx
|
||||
word: Spider
|
||||
word: Spike
|
||||
word: Spirit
|
||||
word: Splinter
|
||||
word: Sponge
|
||||
word: Squid
|
||||
word: Squirrel
|
||||
word: Starfish
|
||||
word:
|
||||
name: T
|
||||
word: Tetravite
|
||||
word: Thalakos
|
||||
word: Thopter
|
||||
word: Thrull
|
||||
word: Treefolk
|
||||
word: Triskelavite
|
||||
word: Troll
|
||||
word: Turtle
|
||||
word:
|
||||
name: U
|
||||
word: Unicorn
|
||||
word:
|
||||
name: V
|
||||
word: Vampire
|
||||
word: Vedalken
|
||||
word: Viashino
|
||||
word: Volver
|
||||
word:
|
||||
name: W
|
||||
word: Wall
|
||||
word: Weird
|
||||
word: Whale
|
||||
word: Wolf
|
||||
word: Wolverine
|
||||
word: Wombat
|
||||
word: Worm
|
||||
word: Wraith
|
||||
word: Wurm
|
||||
word:
|
||||
name: Y
|
||||
word: Yeti
|
||||
word:
|
||||
name: Z
|
||||
word: Zombie
|
||||
word: Zubera
|
||||
|
||||
word list:
|
||||
name: class
|
||||
word:
|
||||
script: all_classes()
|
||||
line below: true
|
||||
word: Advisor
|
||||
word: Archer
|
||||
word: Artificer
|
||||
word: Assassin
|
||||
word: Beast
|
||||
word: Cleric
|
||||
word: Druid
|
||||
word: Knight
|
||||
word: Mutant
|
||||
word: Rogue
|
||||
word: Scout
|
||||
word: Shaman
|
||||
word: Soldier
|
||||
word: Warrior
|
||||
word: Wizard
|
||||
word: Zombie
|
||||
word:
|
||||
name: All Classes
|
||||
word:
|
||||
name: A-C
|
||||
word: Advisor
|
||||
word: Archer
|
||||
word: Archon
|
||||
word: Artificer
|
||||
word: Assassin
|
||||
word: Barbarian
|
||||
word: Beast
|
||||
word: Berserker
|
||||
word: Bringer
|
||||
word: Carrier
|
||||
word: Citizen
|
||||
word: Cleric
|
||||
word: Coward
|
||||
word:
|
||||
name: D-I
|
||||
word: Deserter
|
||||
word: Dreadnought
|
||||
word: Drone
|
||||
word: Druid
|
||||
word: Elder
|
||||
word: Flagbearer
|
||||
word: Horror
|
||||
word: Incarnation
|
||||
word:
|
||||
name: J-P
|
||||
word: Juggernaut
|
||||
word: Knight
|
||||
word: Leviathan
|
||||
word: Mercenary
|
||||
word: Minion
|
||||
word: Monger
|
||||
word: Monk
|
||||
word: Mutant
|
||||
word: Mystic
|
||||
word: Ninja
|
||||
word: Nomad
|
||||
word: Pirate
|
||||
word:
|
||||
name: R-S
|
||||
word: Rebel
|
||||
word: Reflection
|
||||
word: Rigger
|
||||
word: Rogue
|
||||
word: Samurai
|
||||
word: Scout
|
||||
word: Serf
|
||||
word: Shaman
|
||||
word: Soldier
|
||||
word: Spellshaper
|
||||
word: Survivor
|
||||
word:
|
||||
name: T-Z
|
||||
word: Thopter
|
||||
word: Vampire
|
||||
word: Warrior
|
||||
word: Wizard
|
||||
word: Zombie
|
||||
|
||||
word list:
|
||||
name: artifact
|
||||
word:
|
||||
name:
|
||||
line below: true
|
||||
word: Contraption
|
||||
word: Equipment
|
||||
word: Fortification
|
||||
|
||||
word list:
|
||||
name: land
|
||||
word:
|
||||
script: all_sub_types(match: "Land")
|
||||
line below: true
|
||||
word: Plains
|
||||
word: Island
|
||||
word: Swamp
|
||||
word: Mountain
|
||||
word: Forest
|
||||
word: Desert
|
||||
word: Lair
|
||||
word: Locus
|
||||
word: Mine
|
||||
word: Power-Plant
|
||||
word: Tower
|
||||
word: Urza's
|
||||
|
||||
word list:
|
||||
name: enchantment
|
||||
word:
|
||||
name:
|
||||
line below: true
|
||||
word: Aura
|
||||
word: Shrine
|
||||
|
||||
word list:
|
||||
name: spell
|
||||
word:
|
||||
name:
|
||||
line below: true
|
||||
word: Arcane
|
||||