diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..e296967a3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+# ignore everything with magic-mainframe-extras
+/data/magic-mainframe-extras.mse-include/*
+
+# include the include file and readme
+!/data/magic-mainframe-extras.mse-include/include
+!/data/magic-mainframe-extras.mse-include/readme.txt
+
+# include the specific example files
+!/data/magic-mainframe-extras.mse-include/examples
+!/data/magic-mainframe-extras.mse-include/examples/*
+
+# include mainframe shared files until we relocate them
+!/data/magic-mainframe-extras.mse-include/mfsfiles
+!/data/magic-mainframe-extras.mse-include/mfsfiles/*
diff --git a/changelog.txt b/changelog.txt
new file mode 100644
index 000000000..46f1e717f
--- /dev/null
+++ b/changelog.txt
@@ -0,0 +1,61 @@
+MSE Template Packs 1.3.0 Showcase Catchup (PRERELEASE)
+
+SHOWCASE FRAMES
+
+MAGIC MODULES
+• Genevensis has figured out a powerful tool for template building, which has been added to the pack as magic-modules.mse-include
+• magic-modules will allow any template to very easily gain access to complicated field behavior, such as...
+
+MAGIC MODULE ROLLOUT
+• [todo applicable frames]
+• Frames can now use Standard, Acorn, Universes Beyond, Heart, and Alchemy stamps!
+• Frames can add styling options to change their casting cost mana symbols, apply custom fonts, or use the rarity recolor and offset options.
+• Frames can use Genevensis's Corners tech for square, diagonal, aliased, or pixel curve corners.
+• Frames can use the expanded credit suite, which allows up to 4 spots around the art credit to add additional symbols for Mechanics, Flavor Text, Frame, etc.
+• Frames can use the updated OCR fields, which have UB Copyright and the new card numbering code (see Parititons below).
+• Frames can use the loyalty module to painlessly make Planeswalker versions of frames.
+• Frames can use the symbols module to include transform symbols, which now lets you to select Modal DFC icons.
+• The watermarks module now simplifies watermarks to one script instead of three include files.
+
+ADVENTURE OVERHAUL
+• Adventures can now customize both halves of the textbox, allowing for two pages.
+• Added support for flat pages and pages with only a nameline and no typeline.
+• Added "page decorations," images that layer over pages that can be added to magic-mainframe-extras.
+
+PARTITIONS
+• Cards can now be put into partitions 0-9 and A-Z, which will change how the automatic sorter sorts them. This allows MSE to handle things like overcounted cards, and face commanders being listed before everything else.
+• Cards are in Partition A by default. Paritions 0-9 sort before this, Partitions B-Z sort after it. Cards within the same partition sort under the normal logic.
+• Partitions N-Z by default are "over-partition", and their cards won't be counted in the set's total. There is a set option for displaying these cards in the "301/300" or "301" format. There is also a set option for changing the "last main partition" that does not have this effect, default "M".
+• Currently this is supported on M15 Mainframe and Adventures. Other frames can now add the card field "parition select" to access a card's partition.
+• Normally this is put over the automated card number. You can click there to select a new parition for a card.
+• Additionally, there is a set option for defining the card number style, "0001", "0001/0099", "001", "001/099", "1", and "1/99"
+
+OTHER UPDATES
+• MSE has been updated to MSE 2.1.3! This fixes a bug where single line text-fields like names and typelines couldn't be automatically shrunk, and adds shift-click to select multiple options in the export window. This isn't the full jump to hagan's 2.4.0 fork yet, but we're getting there.
+• Added Custom Border to M15 Mainframe and Adventure, which allows defining a trim frame like Vehicle or Nyx with images from magic-mainframe-extras
+• Keywords for MKM, PIP, and OTJ have been added.
+• Added Capenna, DND, Desparked, Judge Academy, MLP, Shooting Star, Transformers, and hi-res mana symbol watermarks.
+• Added support for Custom Watermarks up to a maximum size of 1024x1024. Watermarks that aren't 500x500 will still need to include their height and width.
+• Split the "blend with colors" watermark option into one that applies to custom watermarks and one that applies to default watermarks.
+• Reorganized the Set tab into something hopefully easier to navigate.
+• Added the up and down triangles as mainframe transform options.
+• Added support for dungeons with 8 levels.
+• Added option to remove backface rarity symbol to Mainframe DFC.
+• Added omni and polyamory flags to Pride Pinlines.
+
+BUG FIXES
+• Fixed a bug where the 8th Edition Tokens name spacing would go beserk.
+• Fixed a bug that was eating spaces in the typeline.
+• Fixed some cases where +1/+1 was getting converted to loyalty symbols.
+• Fixed many template warnings across the template packs.
+• Fixed a bug with custom italic font.
+• Fixed a bug with token custom font using the wrong fonts.
+
+TEMPLATE CLEANUP
+• magic-mainframe-extras examples have been cleaned up and moved into one folder. The repo now has a .gitignore for this so it's easier to run MSE off the repo.
+• Take the Crown Draft Matters frame now includes the Conspiracy frame.
+• M15 Leveler now has TriLeveler support.
+• The following frames have been removed from the Full Pack. There is an Outdated Templates pack available as a backup, but these templates are now redundant and are no longer being supported.
+• Redudant with M15 Mainframe: M15 Clear, M15 Custom, M15 Metropolis, Mined & Mined Planeshifted, M15 Miracle, M15 Nyx, M15 Planeshifted & Planeshifted Leveler, M15 Vehicles, Vehicles
+• Redundant with Mainframe Tokens: M15 Tokens
+• Redundant with CN2 Styles and M15 Mainframe: TTK Conspiracy
diff --git a/data/magic-blends.mse-include/new-blends b/data/magic-blends.mse-include/new-blends
index 9bd4f8e9e..910062d95 100644
--- a/data/magic-blends.mse-include/new-blends
+++ b/data/magic-blends.mse-include/new-blends
@@ -9,18 +9,18 @@
########################################################################
include file: masks
- mask_hybrid_with_land := { false }
- mask_hybrid_with_gold := { false }
- mask_multi_land_with_color := { false }
- template := { input + "{type}.jpg" }
- land_template := { ( if input == "a" then "c" else input)+ "l{type}.jpg" }
- offset := 0
+ mask_hybrid_with_land := { false }
+ mask_hybrid_with_gold := { false }
+ mask_multi_land_with_color := { false }
+ template := { input + "{type}.jpg" }
+ land_template := { ( if input == "a" then "c" else input) + "l{type}.jpg" }
+ offset := 0
# For what value should thumbnails of hybrids be made?
- hybrid_previews := "hybrid"
+ hybrid_previews := "hybrid"
# Are there templates for colored lands, land_template(...)?
- colored_lands := true
- trim_colors :=
+ colored_lands := true
+ trim_colors :=
replace@(match:"(, )?(multicolor|hybrid|artifact|land|horizontal|vertical|radial)", replace:"")
watermark_colors := {
@@ -41,27 +41,27 @@ hybrid_color := {
check_colors := card.card_color
if face != "" then check_colors := face
trimmed := trim_colors(check_colors)
- if trimmed == "white, blue" then "wu"
- else if trimmed == "white, black" then "wb"
- else if trimmed == "white, red" then "rw"
- else if trimmed == "white, green" then "gw"
- else if trimmed == "blue, black" then "ub"
- else if trimmed == "blue, red" then "ur"
- else if trimmed == "blue, green" then "gu"
- else if trimmed == "black, red" then "br"
- else if trimmed == "black, green" then "bg"
- else if trimmed == "red, green" then "rg"
- else if trimmed == "white, blue, reversed" then "uw"
- else if trimmed == "white, black, reversed" then "bw"
- else if trimmed == "white, red, reversed" then "wr"
- else if trimmed == "white, green, reversed" then "wg"
- else if trimmed == "blue, black, reversed" then "bu"
- else if trimmed == "blue, red, reversed" then "ru"
- else if trimmed == "blue, green, reversed" then "ug"
- else if trimmed == "black, red, reversed" then "rb"
- else if trimmed == "black, green, reversed" then "bg"
- else if trimmed == "red, green, reversed" then "gr"
- else "mm"
+ if trimmed == "white, blue" then "wu"
+ else if trimmed == "white, black" then "wb"
+ else if trimmed == "white, red" then "rw"
+ else if trimmed == "white, green" then "gw"
+ else if trimmed == "blue, black" then "ub"
+ else if trimmed == "blue, red" then "ur"
+ else if trimmed == "blue, green" then "gu"
+ else if trimmed == "black, red" then "br"
+ else if trimmed == "black, green" then "bg"
+ else if trimmed == "red, green" then "rg"
+ else if trimmed == "white, blue, reversed" then "uw"
+ else if trimmed == "white, black, reversed" then "bw"
+ else if trimmed == "white, red, reversed" then "wr"
+ else if trimmed == "white, green, reversed" then "wg"
+ else if trimmed == "blue, black, reversed" then "bu"
+ else if trimmed == "blue, red, reversed" then "ru"
+ else if trimmed == "blue, green, reversed" then "ug"
+ else if trimmed == "black, red, reversed" then "rb"
+ else if trimmed == "black, green, reversed" then "bg"
+ else if trimmed == "red, green, reversed" then "gr"
+ else "mm"
}@(face:"")
########################################################################
# Combining multiple colors (hybrids)
@@ -78,8 +78,8 @@ card_hybrid_2 := {linear_blend(
overlay_hybrid := [
1: { template( colors[0] ) }
2: {combine_blend(
- image1: template( colors[0] ),
- image2: template( colors[1] ),
+ image1: template( colors[0] ),
+ image2: template( colors[1] ),
combine: "symmetric overlay"
)}
]
@@ -87,7 +87,7 @@ overlay_hybrid := [
# vertical version of a horizontal hybrid
vertical_card_hybrid := {
- do_linear_blend := linear_blend
+ do_linear_blend := linear_blend
linear_blend := { do_linear_blend(x1: 0, x2: 0, y1: x1, y2: x2) }
card_hybrid.horizontal[color_count]()
}
@@ -102,7 +102,7 @@ horizontal_card_hybrid := [
x2: 0.4, y2: 0
image2: linear_blend(
image1: template( colors[(to_int(offset) + 1 ) mod 3] ),
- image2: template( colors[(to_int(offset) + 2 ) mod 3] ),
+ image2: template( colors[(to_int(offset) + 2 ) mod 3] ),
x1: 0.6, y1: 0
x2: 0.78, y2: 0
)
@@ -124,15 +124,15 @@ horizontal_card_hybrid := [
)))}
5: {linear_blend(
- image1: template( colors[(to_int(offset) + 0 ) mod 5] ),
+ image1: template( colors[(to_int(offset) + 0 ) mod 5] ),
x1: 2.0 / 15, y1: 0
x2: 4.0 / 15, y2: 0
image2: linear_blend(
- image1: template( colors[(to_int(offset) + 1 ) mod 5] ),
+ image1: template( colors[(to_int(offset) + 1 ) mod 5] ),
x1: 5.0 / 15, y1: 0
x2: 7.0 / 15, y2: 0
image2: linear_blend(
- image1: template( colors[(to_int(offset) + 2 ) mod 5] ),
+ image1: template( colors[(to_int(offset) + 2 ) mod 5] ),
x1: 8.0 / 15, y1: 0
x2: 10.0 / 15, y2: 0
image2: linear_blend(
@@ -198,19 +198,19 @@ card_hybrid := [
radial: [
0: { template( "c") }
1: { template( colors[0]) }
- 2: card_hybrid_2
+ 2: card_hybrid_2
3:{linear_blend(
- image1: card_hybrid_2( colors: colors[(to_int(offset) + 0 ) mod 3] +
+ image1: card_hybrid_2( colors: colors[(to_int(offset) + 0 ) mod 3] +
colors[(to_int(offset) + 1 ) mod 3] ),
- image2: template( colors[(to_int(offset) + 2 ) mod 3] ),
+ image2: template( colors[(to_int(offset) + 2 ) mod 3] ),
x1: 0, y1: 0.55
x2: 0, y2: 0.77
)}
4:{linear_blend(
image1: card_hybrid_2( colors: colors[(to_int(offset) + 0 ) mod 4] +
colors[(to_int(offset) + 1 ) mod 4] ),
- image2: card_hybrid_2( colors: colors[(to_int(offset) + 3 ) mod 4] +
+ image2: card_hybrid_2( colors: colors[(to_int(offset) + 3 ) mod 4] +
colors[(to_int(offset) + 2 ) mod 4] ),
x1: 0, y1: 0.4
x2: 0, y2: 0.62
@@ -219,7 +219,7 @@ card_hybrid := [
5: {linear_blend(
image1: linear_blend(
image1: card_hybrid_2( colors: colors[(to_int(offset) + 0 ) mod 5] +
- colors[(to_int(offset) + 1 ) mod 5] ),
+ colors[(to_int(offset) + 1 ) mod 5] ),
image2: card_hybrid_2( colors: colors[(to_int(offset) + 4 ) mod 5] +
colors[(to_int(offset) + 2 ) mod 5] ),
x1: 0, y1: 0.19
@@ -235,7 +235,7 @@ card_hybrid := [
image1: card_hybrid_2( colors: colors[(to_int(offset) + 0 ) mod 6] +
colors[(to_int(offset) + 1 ) mod 6] ),
image2: card_hybrid_2( colors: colors[(to_int(offset) + 5 ) mod 6] +
- colors[(to_int(offset) + 2 ) mod 6] ),
+ colors[(to_int(offset) + 2 ) mod 6] ),
x1: 0, y1: 0.19
x2: 0, y2: 0.35
),
@@ -267,7 +267,7 @@ card_hybrid := [
]
horizontal: horizontal_card_hybrid
vertical: [
- 1: { template( colors[0]) }
+ 1: { template( colors[0]) }
2: { linear_blend(
image1: template( colors[0] ),
image2: template( colors[1] ),
@@ -350,7 +350,7 @@ pt_hybrid := [
x1: 0, y1: -1.5
x2: 0, y2: 0.7
)}
- 7: { template( colors[(to_int(offset) + 4 ) mod 7]) }
+ 7: { template( colors[(to_int(offset) + 4 ) mod 7]) }
]
horizontal: horizontal_pt_hybrid
vertical: [
@@ -799,7 +799,7 @@ stamp_hybrid := [
image2: template( colors[(to_int(offset) + 3) mod 6] ),
x1: -0.3, y1: 0
x2: 1.3, y2: 0
- )}
+ )}
7: { template( colors[(to_int(offset) + 4 ) mod 7]) }
]
horizontal: horizontal_stamp_hybrid
@@ -858,10 +858,10 @@ color_background := {
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"
+ 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(folder:folder)
@@ -983,36 +983,36 @@ font_color_positions := [
# 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")
+ 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[
+ 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)]
- ]
+ 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:= {
+watermark_hybrid := {
linear_blend(
image1: colors[0] + input + ".png"
image2: colors[1] + input + ".png"
@@ -1043,38 +1043,106 @@ set_watermark_blend := {
)
}
spotlight_watermark_blend := {
- if face == false then face := card.card_color
- wmc := watermark_colors(face:face)
- c1 := "/magic-watermarks.mse-include/spotlight/" + wmc.0 + (if contains(face, match:"land") then "l") + "spotlight.png"
- c2 := "/magic-watermarks.mse-include/spotlight/" + wmc.1 + (if contains(face, match:"land") then "l") + "spotlight.png"
- if contains(input, match:".png,") then (
+ face := [1:card.card_color, 2:card.card_color_2, 3:card.card_color_3][face]
+ if type_name(input) == "string" and contains(input, match:".png,") then (
array := split_text(input+",,", match:",")
input := array.0
l := min(to_number(array.1),500)
h := min(to_number(array.2),500)
)
+ wmc := watermark_colors(face:face)
+ c1 := wmc.0 + (if contains(face, match:"land") then "l") + "spotlight.png"
+ c2 := wmc.1 + (if contains(face, match:"land") then "l") + "spotlight.png"
+ wmdir := "/magic-watermarks.mse-include/spotlight/"
if (h != 500 or l != 500) then (
- c1 := crop(c1, height:h, width:l, offset_x:0, offset_y:0)
- c2 := crop(c2, height:h, width:l, offset_x:0, offset_y:0)
+ wmdir := wmdir + "1024/"
+ c1 := crop(wmdir+c1, height:h, width:l, offset_x:0, offset_y:0)
+ c2 := crop(wmdir+c2, height:h, width:l, offset_x:0, offset_y:0)
+ )else(
+ c1 := wmdir + c1
+ c2 := wmdir + c2
)
+ mask := input
set_alpha(
- alpha: 0.75
+ alpha: alpha
input:
linear_blend(
image1:
masked_blend(
light: input
dark: c1
- mask: input
+ mask: mask
)
image2:
masked_blend(
light: input
dark: c2
- mask: input
+ mask: mask
)
x1: 0.4, y1: 0
x2: 0.6, y2: 0
)
)
-}@(h:500,l:500,face:false)
\ No newline at end of file
+}@(h:500,l:500,face:1,alpha:0.2)
+
+shadow_watermark_blend := {
+ set_combine(
+ combine:"shadow",
+ set_alpha(
+ alpha: 0.5,
+ drop_shadow(
+ offset_x: -0.01,
+ offset_y: 0.03,
+ blur_radius: 0.02,
+ alpha: 1,
+ color: rgb(0,0,0),
+ enlarge(
+ border_size: 0.03,
+ invert_image(input)
+ )
+ )
+ )
+ )
+}
+
+glow_watermark_blend := {
+ set_combine(
+ combine:"glow",
+ set_alpha(
+ alpha: 0.3,
+ drop_shadow(
+ offset_x: -0.01,
+ offset_y: 0.03,
+ blur_radius: 0.02,
+ alpha: 1,
+ color: rgb(0,0,0),
+ enlarge(
+ border_size: 0.03,
+ invert_image(input)
+ )
+ )
+ )
+ )
+}
+
+watermark_blend :=
+{
+ dark_textbox := (face == 1 and invert_watermark())
+ or (face == 2 and invert_watermark2())
+ or (face == 3 and invert_watermark3())
+ invert_base_image := false
+ if dark_textbox then
+ (
+ alpha := dark_alpha
+ spotlight_alpha := dark_spotlight_alpha
+ invert_base_image := true
+ )
+ backup := if custom then set.blend_with_colors else set.use_blended_watermarks
+ option := styling.watermark_render or else backup
+ if colored then set_alpha(alpha: alpha, input)
+ else if option == "yes" or option == "blend with colors" then spotlight_watermark_blend(h:h, l:l, face:face, alpha: spotlight_alpha, input)
+ else if option == "shadow" then shadow_watermark_blend(input)
+ else if option == "glow" then glow_watermark_blend(input)
+ else if invert_base_image then set_alpha(alpha: alpha, invert_image(input))
+ else set_alpha(alpha: alpha, input)
+}@(h:500,l:500,colored:false,face:1,alpha:0.25,spotlight_alpha:0.75,dark_alpha:0.25,dark_spotlight_alpha:0.35,custom:false)
\ No newline at end of file
diff --git a/data/magic-genevensis-90-counter.mse-style/style b/data/magic-genevensis-90-counter.mse-style/style
index e94a319fa..d375263d8 100644
--- a/data/magic-genevensis-90-counter.mse-style/style
+++ b/data/magic-genevensis-90-counter.mse-style/style
@@ -39,7 +39,16 @@ card dpi: 300
############################################################## Extra scripts
init script:
card_shape := { "counter" }
-
+ faces_coordinates := {
+ [
+ [
+ left: 0,
+ top: 0,
+ width: ((if styling.increase_height then 520 else 420) + increased_width()),
+ height: (if styling.increase_height then 260 else 160)
+ ]
+ ]
+ }
guild_mana := { styling.use_guild_mana_symbols }
ancestral_mana := { false }
diff --git a/data/magic-identity-new.mse-include/include b/data/magic-identity-new.mse-include/include
index 86f2e80dd..f655bf4e3 100644
--- a/data/magic-identity-new.mse-include/include
+++ b/data/magic-identity-new.mse-include/include
@@ -1,7 +1,13 @@
-mse version: 0.3.9
+mse version: 2.0.0
full name: Magic The Gathering, modern identities
-version: 2012-02-23
+version: 2024-01-29
+depends on:
+ package: magic.mse-game
+ version: 2014-06-25
-# This file doesn't do anything, other files in this directory can be included
-# in game/style files:
-# watermarks Includes references to the watermark images, to be used in a style file
+
+
+#### This file doesn't do anything.
+#### Other files in this directory can be included in game/style files.
+#### This include covers the color indicator dot.
+#### This include is being phased out in favor of magic-modules.mse-include/indicators
\ No newline at end of file
diff --git a/data/magic-m15-adventure.mse-style/style b/data/magic-m15-adventure.mse-style/style
index 29b7fd89f..46eaad7a6 100644
--- a/data/magic-m15-adventure.mse-style/style
+++ b/data/magic-m15-adventure.mse-style/style
@@ -918,7 +918,7 @@ card style:
styling.center_text == "always"
then "middle center"
else "middle left"
- z index: 2
+ z index: 3
padding left: 6
padding right: 4
line height hard: {if is_modal(card.rule_text) then 0.9 else 1.2 }
@@ -949,7 +949,7 @@ card style:
styling.center_text == "always"
then "middle center"
else "middle left"
- z index: 2
+ z index: 3
padding left: 6
padding right: 4
line height hard: {if is_modal(card.rule_text_2) then 0.9 else 1.2 }
@@ -980,7 +980,7 @@ card style:
styling.center_text == "always"
then "middle center"
else "middle left"
- z index: 2
+ z index: 3
padding left: 6
padding right: 4
line height hard: {if is_modal(card.rule_text) then 0.9 else 1.2 }
@@ -989,11 +989,11 @@ card style:
line height hard max: {if is_modal(card.rule_text) then 1.0 else 1.3 }
line height line max: 1.6
watermark:
- left: { min(page_coords[page_1_side()][(if is_spot() then "spot_watermark" else "watermark")], page_coords[page_3_side()][(if is_spot() then "spot_watermark" else "watermark")]) }
- top: { if is_spot() then 330 else max(page_1_top(), page_3_top()) }
+ left: { page_coords[page_1_side()][(if is_spot() then "spot_watermark" else "watermark")] }
+ top: { if is_spot() then 330 else page_1_top() }
width: { if is_spot() then 150 else 168}
bottom: {if is_spot() then 470 else 481}
- z index: 1
+ z index: 2
render style: image
popup style: in place
alignment: middle center
@@ -1003,11 +1003,21 @@ card style:
top: { page_2_top() }
width: { if is_spot() then 154 else 167}
bottom: {if is_spot() then 470 else 481}
- z index: 1
+ z index: 2
render style: image
popup style: in place
alignment: middle center
- include file: /magic-watermarks.mse-include/watermarks
+ include file: /magic-watermarks.mse-include/watermarks_back
+ watermark 3:
+ left: { page_coords[page_3_side()][(if is_spot() then "spot_watermark" else "watermark")] }
+ top: { if is_spot() then 330 else page_3_top() }
+ width: { if is_spot() then 154 else 167}
+ bottom: {if is_spot() then 470 else 481}
+ z index: 2
+ render style: image
+ popup style: in place
+ alignment: middle center
+ include file: /magic-watermarks.mse-include/watermarks_third
############################# PT
pt:
z index: 2
diff --git a/data/magic-m15-altered.mse-style/style b/data/magic-m15-altered.mse-style/style
index 79215ed88..d53c8fac2 100644
--- a/data/magic-m15-altered.mse-style/style
+++ b/data/magic-m15-altered.mse-style/style
@@ -13,9 +13,6 @@ depends on:
depends on:
package: magic-default-image.mse-include
version: 2007-09-23
-depends on:
- package: magic-watermarks.mse-include
- version: 2007-09-23
depends on:
package: magic-identity-new.mse-include
version: 2012-01-22
@@ -28,9 +25,15 @@ depends on:
depends on:
package: magic-mainframe-extras.mse-include
version: 2018-01-01
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
depends on:
package: magic-pride.mse-include
- version: 2021-05-26
+ version: 2024-05-22
+depends on:
+ package: magic-watermarks.mse-include
+ version: 2007-09-23
card width: 375
card height: 523
@@ -245,7 +248,7 @@ init script:
+ (if box_leveler() then -5 else 0)
+ (if aug_leveler(input) then 4 else 0)
}
- custom_watermark_a := {if styling.card_watermark == "" or not contains(styling.card_watermark, match:".png") then "/magic-watermarks.mse-include/planeswalker.png" else "/magic-watermarks.mse-include/" + styling.card_watermark}
+ custom_watermark_a := {if styling.card_watermark == "" or not contains(styling.card_watermark, match:".png") then "/magic-modules.mse-include/watermarks/other/planeswalker.png" else "/magic-mainframe-extras.mse-include/" + styling.card_watermark}
special_text := {if is_leveler() then ((if card.level_0 != "" then "[" + level_label(0) + " " + card.level_0 + "] " else "") + card.level_1_text + (if card.pt != "" then " [" + card.pt + "]" else "") + "\n"
+ (if card.level_1 != "" then "[" + level_label(1) + " " + card.level_1 + "] " else "") + card.level_2_text + (if card.pt_2 != "" then " [" + card.pt_2 + "]" else "") + "\n"
+ (if card.level_2 != "" then "[" + level_label(2) + " " + card.level_2 + "] " else "") + card.level_3_text + (if card.pt_3 != "" then " [" + card.pt_3 + "]" else "") + (if card.level_4_text != "" then "\n" else "")
@@ -258,7 +261,7 @@ init script:
card_shape := {if is_leveler() then "leveler" else "normal"}
white_text := {is_full_art() or is_fnm() or is_inverted()}
-
+ alch_compatible := {styling.text_box_mana_symbols == "/magic-mana-small.mse-symbol-font"}
rare_width := {
cw := card_style.rarity.content_width
cw := if cw > 44 then (if set.print_fix != "" then set.print_fix else 22) else if cw < 22 then 22 else cw
@@ -628,7 +631,6 @@ card style:
alignment: {if center_map() then "center bottom shrink-overflow" else "left bottom shrink-overflow" }
padding bottom: 0
z index: 2
- font:
font:
name: { name_font() }
italic name: { name_font_italic() }
@@ -952,7 +954,8 @@ card style:
render style: image
popup style: in place
alignment: middle center
- include file: /magic-watermarks.mse-include/watermarks
+ include file: /magic.mse-game/watermarks/menu_choice_images
+ image: { watermark_scripts[card.watermark](face:watermark_face_1()) }
############################# Levels
level 0:
z index: 7
@@ -1519,7 +1522,6 @@ extra card field:
save value: true
editable: true
-
extra card style:
promo label:
left: 40
diff --git a/data/magic-m15-dungeons.mse-style/style b/data/magic-m15-dungeons.mse-style/style
index e4ebd0063..dcf4c5dd0 100644
--- a/data/magic-m15-dungeons.mse-style/style
+++ b/data/magic-m15-dungeons.mse-style/style
@@ -55,6 +55,7 @@ init script:
# styling stuff
card_shape := {"token"}
+ card_name_for_level := {if set.alias_as_cardname and card.alias != "" then card.alias else card.name}
shrink_name := {if styling.shrink_name_text != "" then to_int(styling.shrink_name_text) else 0 }
note_cleaner := replace@(match:"\\+", replace:"")
num_cleaner := replace@(match:"[0-9]", replace:"")
@@ -215,7 +216,7 @@ init script:
arrow_to_room := {
span := span_array(y)
span2 := span_array(y+1)
- interface := sort_list(join_arrays(a1:span, a2:span2), remove_duplicates:true)
+ interface := sort_list((span+span2), remove_duplicates:true)
if x >= length(interface)
then 0
else (
@@ -266,7 +267,7 @@ init script:
[58, 138, 198, 278, -10]
]
arrow_x := {
- arr := sort_list(join_arrays(a1:span_array(y), a2:span_array(y+1)), remove_duplicates:true)
+ arr := sort_list((span_array(y)+span_array(y+1)), remove_duplicates:true)
if y >= max_level() or x >= length(arr)
then 0
else if use_fast() then (
@@ -343,7 +344,7 @@ init script:
}
add_level_lanes := {
ml := max_level()
- walls := sort_list(join_arrays(a1:span_array(line), a2:span_array(line+1)), remove_duplicates:true)
+ walls := sort_list((span_array(line)+span_array(line+1)), remove_duplicates:true)
len := length(walls)
y := 380-line_offset(line)
baseline := wall_crop("new_masks/"+s+"lane.png", offset:y)
diff --git a/data/magic-m15-future-planeswalker.mse-style/style b/data/magic-m15-future-planeswalker.mse-style/style
index 6980c8716..c15f5fc50 100644
--- a/data/magic-m15-future-planeswalker.mse-style/style
+++ b/data/magic-m15-future-planeswalker.mse-style/style
@@ -173,7 +173,8 @@ init script:
else if contains(input, match: "-") then "loyalty down"
else "loyalty naught"
}
- has_identity := { styling.color_indicator_dot }
+ has_identity := { false }
+ has_identity_2 := { false }
is_unsorted := {styling.remove_from_autocount}
is_hybrid := {contains(card.card_color, match:"hybrid")}
is_legend := { styling.legendary_symbol }
diff --git a/data/magic-m15-mainframe-dfc.mse-style/style b/data/magic-m15-mainframe-dfc.mse-style/style
index 269d3af2b..82586f5f8 100644
--- a/data/magic-m15-mainframe-dfc.mse-style/style
+++ b/data/magic-m15-mainframe-dfc.mse-style/style
@@ -155,6 +155,22 @@ init script:
}
####### Shape things
+ faces_coordinates := {
+ [
+ [
+ left: 0,
+ top: 0,
+ width: 375,
+ height: 523
+ ],
+ [
+ left: 377,
+ top: 0,
+ width: 375,
+ height: 523
+ ]
+ ]
+ }
card_shape := {if contains(styling.dfc_type, match: "modal") then "modal double faced" else "transform double faced"}
a_saga := {is_saga() or is_class()}
b_saga := {back_saga() or back_class()}
@@ -969,6 +985,7 @@ styling field:
choice: use hovering pt
choice: use hovering loyalty
choice: use holofoil stamps
+ choice: use backface rarity
choice: center front
choice: center back
choice: center first name
@@ -1269,7 +1286,7 @@ card style:
type 2:
left: { if back_map() then 462 else if has_identity2() then "429" else "409" }
top: { (if back_map() then 297.5 else if back_saga() or back_class() then 444 else if back_four_abilities() then 261 else 296) + shrink_type2() }
- width: { if back_map() then 205 else (if has_identity2() then "290" else "310") - rare_width() }
+ width: { if back_map() then 205 else (if has_identity2() then "290" else "310") - (if chosen(styling.other_options, choice:"use backface rarity") and set.shorten_types_for_rarity then rare_width() else 0) }
height: { if back_map() then 18 - shrink_type2() else 20 - shrink_type2()}
alignment: {if back_map() then "center top shrink-overflow" else "top shrink-overflow"}
z index: 2
@@ -1330,7 +1347,7 @@ card style:
rarity 2:
right: { if back_map() then 576 else 721}
top: { if back_saga() or back_class() then 445 else if back_map() then 53 else if back_normal() then 297 else if back_four_abilities() then 262 else 297 }
- width: {if set.shorten_types_for_rarity then 44 else 0}
+ width: { if chosen(styling.other_options, choice:"use backface rarity") and set.shorten_types_for_rarity then 44 else 0 }
height: 22
z index: 3
render style: image
diff --git a/data/magic-m15-mainframe-planes-mini.mse-style/style b/data/magic-m15-mainframe-planes-mini.mse-style/style
index d860dce06..2950cc6f4 100644
--- a/data/magic-m15-mainframe-planes-mini.mse-style/style
+++ b/data/magic-m15-mainframe-planes-mini.mse-style/style
@@ -277,17 +277,6 @@ card style:
size: 6.25
color: white
weight: bold
- card number m15:
- left: { if styling.center_set_info then 222 else 161 }
- top: 362
- width: 81
- height: 12
- z index: -1
- font:
- name: Relay-Medium
- size: 6.25
- color: white
- weight: bold
############################################################## Extra card fields
extra card field:
type: text
diff --git a/data/magic-m15-mainframe-planes.mse-style/style b/data/magic-m15-mainframe-planes.mse-style/style
index 33dcc9d3a..906e4f0e5 100644
--- a/data/magic-m15-mainframe-planes.mse-style/style
+++ b/data/magic-m15-mainframe-planes.mse-style/style
@@ -277,17 +277,6 @@ card style:
size: 7
color: white
weight: bold
- card number m15:
- left: { if styling.center_set_info then 360 else 270 }
- top: 542
- width: 120
- height: 19
- z index: -1
- font:
- name: Relay-Medium
- size: 7
- color: white
- weight: bold
############################################################## Extra card fields
extra card field:
type: text
diff --git a/data/magic-m15-mainframe-planeswalker.mse-style/style b/data/magic-m15-mainframe-planeswalker.mse-style/style
index ab831c41f..8741bc0a7 100644
--- a/data/magic-m15-mainframe-planeswalker.mse-style/style
+++ b/data/magic-m15-mainframe-planeswalker.mse-style/style
@@ -79,7 +79,8 @@ init script:
}
card_shape := {"planeswalker"}
-
+ card_name_for_level := {if set.alias_as_cardname and card.alias != "" then card.alias else card.name}
+
# Is the card a promo card?
is_promo := { styling.promo }
diff --git a/data/magic-m15-meld-3in1.mse-style/style b/data/magic-m15-meld-3in1.mse-style/style
index eb1722878..8f7e582d6 100644
--- a/data/magic-m15-meld-3in1.mse-style/style
+++ b/data/magic-m15-meld-3in1.mse-style/style
@@ -14,8 +14,8 @@ depends on:
package: magic-default-image.mse-include
version: 2007-09-23
depends on:
- package: magic-watermarks.mse-include
- version: 2007-09-23
+ package: magic-modules.mse-include
+ version: 2024-05-20
depends on:
package: magic-identity-new.mse-include
version: 2012-01-22
@@ -70,6 +70,27 @@ init script:
has_pt_2 := { card.power_2 != "" or card.toughness_2 != "" }
card_shape := { "double faced" }
+ faces_coordinates := {[
+ [
+ left: 0,
+ top: 0,
+ width: 188,
+ height: 261
+ ],
+ [
+ left: 0,
+ top: 263,
+ width: 188,
+ height: 260
+ ],
+ [
+ left: 193,
+ top: 0,
+ width: 375,
+ height: 523
+ ]
+ ]}
+
has_identity := { styling.color_indicator_dot }
has_identity_2 := {styling.color_indicator_dot_2 }
is_unsorted := {styling.remove_from_autocount}
@@ -610,7 +631,8 @@ card style:
render style: image
popup style: in place
alignment: middle center
- include file: /magic-watermarks.mse-include/watermarks
+ include file: /magic.mse-game/watermarks/menu_choice_images
+ image: { watermark_scripts[card.watermark](face:1) }
watermark 2:
left: 59
top: 422
@@ -620,7 +642,8 @@ card style:
render style: image
popup style: in place
alignment: middle center
- include file: /magic-watermarks.mse-include/watermarks
+ include file: /magic.mse-game/watermarks/menu_choice_images
+ image: { watermark_scripts[card.watermark](face:2) }
visible: { styling.three_cards }
watermark 3:
left: 310
@@ -631,7 +654,8 @@ card style:
render style: image
popup style: in place
alignment: middle center
- include file: /magic-watermarks.mse-include/watermarks
+ include file: /magic.mse-game/watermarks/menu_choice_images
+ image: { watermark_scripts[card.watermark](face:3) }
############################# PT
pt:
z index: 12
diff --git a/data/magic-m15-showcase-dungeon-module.mse-style/style b/data/magic-m15-showcase-dungeon-module.mse-style/style
index 1b28e4318..6829b085f 100644
--- a/data/magic-m15-showcase-dungeon-module.mse-style/style
+++ b/data/magic-m15-showcase-dungeon-module.mse-style/style
@@ -373,11 +373,11 @@ card style:
scale down to: 6
alignment:
script:
- if card.rule_text == "" then "middle " else "top " + (if (styling.center_text == "short text only" and
- not contains(match:"\n", card.rule_text) and
- card.flavor_text == "" and
- card_style.text.content_lines <= 2) or
- styling.center_text == "always"
+ if card.rule_text == "" then "middle " else "top " + (if (styling.center_text == "short text only" and
+ not contains(match:"\n", card.rule_text) and
+ card.flavor_text == "" and
+ card_style.text.content_lines <= 2) or
+ styling.center_text == "always"
then "center"
else "left")
z index: 3
diff --git a/data/magic-m15-showcase-kaldheim-dfc.mse-style/style b/data/magic-m15-showcase-kaldheim-dfc.mse-style/style
index 1c47ef89c..6029e6cbd 100644
--- a/data/magic-m15-showcase-kaldheim-dfc.mse-style/style
+++ b/data/magic-m15-showcase-kaldheim-dfc.mse-style/style
@@ -35,6 +35,24 @@ card dpi: 150
####### images from digiman
############################################################## Extra scripts
init script:
+ faces_coordinates := {
+ [
+ [
+ left: 0,
+ top: 0,
+ width: 375,
+ height: 523
+ ],
+ [
+ left: 377,
+ top: 0,
+ width: 375,
+ height: 523
+ ]
+ ]
+ }
+ card_shape := { "transform double faced" }
+
# Load scripts for image box
include file: /magic-default-image.mse-include/scripts
diff --git a/data/magic-m15-showcase-strixhaven-jp.mse-style/style b/data/magic-m15-showcase-strixhaven-jp.mse-style/style
index 0fbb03c19..4b70c2c14 100644
--- a/data/magic-m15-showcase-strixhaven-jp.mse-style/style
+++ b/data/magic-m15-showcase-strixhaven-jp.mse-style/style
@@ -86,20 +86,20 @@ init script:
}
2: textbox_hybrid_2
3: { linear_blend(
- image1: textbox_hybrid_2( colors: colors[(to_int(offset) + 0 ) mod 3] + colors[(to_int(offset) + 1 ) mod 3] ),
+ image1: textbox_hybrid_2( colors: colors[(to_int(offset) + 0 ) mod 3] + colors[(to_int(offset) + 1 ) mod 3] ),
x1: 0, y1: 0.55
x2: 0, y2: 0.77
- image2: shorten_textbox_image(template( colors[(to_int(offset) + 2 ) mod 3] ))
+ image2: shorten_textbox_image(template( colors[(to_int(offset) + 2 ) mod 3] ))
)}
4: { linear_blend(
image1: textbox_hybrid_2( colors: colors[(to_int(offset) + 0 ) mod 4] + colors[(to_int(offset) + 1 ) mod 4] ),
- image2: textbox_hybrid_2( colors: colors[(to_int(offset) + 3 ) mod 4] + colors[(to_int(offset) + 2 ) mod 4] ),
+ image2: textbox_hybrid_2( colors: colors[(to_int(offset) + 3 ) mod 4] + colors[(to_int(offset) + 2 ) mod 4] ),
x1: 0, y1: 0.4
x2: 0, y2: 0.62
)}
5: { linear_blend(
image1: linear_blend(
- image1: textbox_hybrid_2( colors: colors[(to_int(offset) + 0 ) mod 5] + colors[(to_int(offset) + 1 ) mod 5] ),
+ image1: textbox_hybrid_2( colors: colors[(to_int(offset) + 0 ) mod 5] + colors[(to_int(offset) + 1 ) mod 5] ),
image2: textbox_hybrid_2( colors: colors[(to_int(offset) + 4 ) mod 5] + colors[(to_int(offset) + 2 ) mod 5] ),
x1: 0, y1: 0.19
x2: 0, y2: 0.35),
@@ -118,7 +118,7 @@ init script:
x2: 0.4, y2: 0
image2: linear_blend(
image1: shorten_textbox_image(template( colors[(to_int(offset) + 1 ) mod 3] )),
- image2: shorten_textbox_image(template( colors[(to_int(offset) + 2 ) mod 3] )),
+ image2: shorten_textbox_image(template( colors[(to_int(offset) + 2 ) mod 3] )),
x1: 0.6, y1: 0
x2: 0.78, y2: 0
))}
@@ -137,15 +137,15 @@ init script:
x2: 0.85, y2: 0
)))}
5: { linear_blend(
- image1: shorten_textbox_image(template( colors[(to_int(offset) + 0 ) mod 5] )),
+ image1: shorten_textbox_image(template( colors[(to_int(offset) + 0 ) mod 5] )),
x1: 2.0 / 15, y1: 0
x2: 4.0 / 15, y2: 0
image2: linear_blend(
- image1: shorten_textbox_image(template( colors[(to_int(offset) + 1 ) mod 5] )),
+ image1: shorten_textbox_image(template( colors[(to_int(offset) + 1 ) mod 5] )),
x1: 5.0 / 15, y1: 0
x2: 7.0 / 15, y2: 0
image2: linear_blend(
- image1: shorten_textbox_image(template( colors[(to_int(offset) + 2 ) mod 5] )),
+ image1: shorten_textbox_image(template( colors[(to_int(offset) + 2 ) mod 5] )),
x1: 8.0 / 15, y1: 0
x2: 10.0 / 15, y2: 0
image2: linear_blend(
@@ -609,11 +609,11 @@ card style:
scale down to: 6
alignment:
script:
- if (styling.center_text == "short text only" and
- not contains(match:"\n", card.rule_text) and
- card.flavor_text == "" and
- card_style.text.content_lines <= 2) or
- styling.center_text == "always"
+ if (styling.center_text == "short text only" and
+ not contains(match:"\n", card.rule_text) and
+ card.flavor_text == "" and
+ card_style.text.content_lines <= 2) or
+ styling.center_text == "always"
then "middle center"
else "middle left"
z index: 2
diff --git a/data/magic-m15-showcase-strixhaven.mse-style/style b/data/magic-m15-showcase-strixhaven.mse-style/style
index 552b70966..91e008be1 100644
--- a/data/magic-m15-showcase-strixhaven.mse-style/style
+++ b/data/magic-m15-showcase-strixhaven.mse-style/style
@@ -342,11 +342,11 @@ card style:
scale down to: 6
alignment:
script:
- if (styling.center_text == "short text only" and
- not contains(match:"\n", card.rule_text) and
- card.flavor_text == "" and
- card_style.text.content_lines <= 2) or
- styling.center_text == "always"
+ if (styling.center_text == "short text only" and
+ not contains(match:"\n", card.rule_text) and
+ card.flavor_text == "" and
+ card_style.text.content_lines <= 2) or
+ styling.center_text == "always"
then "middle center"
else "middle left"
z index: 2
diff --git a/data/magic-mainframe-extras.mse-include/colorless.png b/data/magic-mainframe-extras.mse-include/examples/border/colorless.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/colorless.png
rename to data/magic-mainframe-extras.mse-include/examples/border/colorless.png
diff --git a/data/magic-mainframe-extras.mse-include/decoration/alight.png b/data/magic-mainframe-extras.mse-include/examples/decoration/alight.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/decoration/alight.png
rename to data/magic-mainframe-extras.mse-include/examples/decoration/alight.png
diff --git a/data/magic-mainframe-extras.mse-include/decoration/blight.png b/data/magic-mainframe-extras.mse-include/examples/decoration/blight.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/decoration/blight.png
rename to data/magic-mainframe-extras.mse-include/examples/decoration/blight.png
diff --git a/data/magic-mainframe-extras.mse-include/decoration/clight.png b/data/magic-mainframe-extras.mse-include/examples/decoration/clight.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/decoration/clight.png
rename to data/magic-mainframe-extras.mse-include/examples/decoration/clight.png
diff --git a/data/magic-mainframe-extras.mse-include/decoration/cllight.png b/data/magic-mainframe-extras.mse-include/examples/decoration/cllight.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/decoration/cllight.png
rename to data/magic-mainframe-extras.mse-include/examples/decoration/cllight.png
diff --git a/data/magic-mainframe-extras.mse-include/decoration/glight.png b/data/magic-mainframe-extras.mse-include/examples/decoration/glight.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/decoration/glight.png
rename to data/magic-mainframe-extras.mse-include/examples/decoration/glight.png
diff --git a/data/magic-mainframe-extras.mse-include/decoration/mlight.png b/data/magic-mainframe-extras.mse-include/examples/decoration/mlight.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/decoration/mlight.png
rename to data/magic-mainframe-extras.mse-include/examples/decoration/mlight.png
diff --git a/data/magic-mainframe-extras.mse-include/decoration/rlight.png b/data/magic-mainframe-extras.mse-include/examples/decoration/rlight.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/decoration/rlight.png
rename to data/magic-mainframe-extras.mse-include/examples/decoration/rlight.png
diff --git a/data/magic-mainframe-extras.mse-include/decoration/ulight.png b/data/magic-mainframe-extras.mse-include/examples/decoration/ulight.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/decoration/ulight.png
rename to data/magic-mainframe-extras.mse-include/examples/decoration/ulight.png
diff --git a/data/magic-mainframe-extras.mse-include/decoration/wlight.png b/data/magic-mainframe-extras.mse-include/examples/decoration/wlight.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/decoration/wlight.png
rename to data/magic-mainframe-extras.mse-include/examples/decoration/wlight.png
diff --git a/data/magic-mainframe-extras.mse-include/doom/chapter1.png b/data/magic-mainframe-extras.mse-include/examples/doom/chapter1.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/doom/chapter1.png
rename to data/magic-mainframe-extras.mse-include/examples/doom/chapter1.png
diff --git a/data/magic-mainframe-extras.mse-include/doom/chapter2.png b/data/magic-mainframe-extras.mse-include/examples/doom/chapter2.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/doom/chapter2.png
rename to data/magic-mainframe-extras.mse-include/examples/doom/chapter2.png
diff --git a/data/magic-mainframe-extras.mse-include/doom/chapter3.png b/data/magic-mainframe-extras.mse-include/examples/doom/chapter3.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/doom/chapter3.png
rename to data/magic-mainframe-extras.mse-include/examples/doom/chapter3.png
diff --git a/data/magic-mainframe-extras.mse-include/doom/chapter4.png b/data/magic-mainframe-extras.mse-include/examples/doom/chapter4.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/doom/chapter4.png
rename to data/magic-mainframe-extras.mse-include/examples/doom/chapter4.png
diff --git a/data/magic-mainframe-extras.mse-include/doom/chapter5.png b/data/magic-mainframe-extras.mse-include/examples/doom/chapter5.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/doom/chapter5.png
rename to data/magic-mainframe-extras.mse-include/examples/doom/chapter5.png
diff --git a/data/magic-mainframe-extras.mse-include/doom/chapter6.png b/data/magic-mainframe-extras.mse-include/examples/doom/chapter6.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/doom/chapter6.png
rename to data/magic-mainframe-extras.mse-include/examples/doom/chapter6.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/future/hazard.png b/data/magic-mainframe-extras.mse-include/examples/future/hazard.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/future/hazard.png
rename to data/magic-mainframe-extras.mse-include/examples/future/hazard.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/future/hazard_b.png b/data/magic-mainframe-extras.mse-include/examples/future/hazard_b.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/future/hazard_b.png
rename to data/magic-mainframe-extras.mse-include/examples/future/hazard_b.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/future/hazard_g.png b/data/magic-mainframe-extras.mse-include/examples/future/hazard_g.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/future/hazard_g.png
rename to data/magic-mainframe-extras.mse-include/examples/future/hazard_g.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/future/hazard_r.png b/data/magic-mainframe-extras.mse-include/examples/future/hazard_r.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/future/hazard_r.png
rename to data/magic-mainframe-extras.mse-include/examples/future/hazard_r.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/future/hazard_u.png b/data/magic-mainframe-extras.mse-include/examples/future/hazard_u.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/future/hazard_u.png
rename to data/magic-mainframe-extras.mse-include/examples/future/hazard_u.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/future/hazard_w.png b/data/magic-mainframe-extras.mse-include/examples/future/hazard_w.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/future/hazard_w.png
rename to data/magic-mainframe-extras.mse-include/examples/future/hazard_w.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/future/mana_k_half.png b/data/magic-mainframe-extras.mse-include/examples/future/mana_k_half.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/future/mana_k_half.png
rename to data/magic-mainframe-extras.mse-include/examples/future/mana_k_half.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/large/hazard.png b/data/magic-mainframe-extras.mse-include/examples/large/hazard.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/large/hazard.png
rename to data/magic-mainframe-extras.mse-include/examples/large/hazard.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/large/hazard_b.png b/data/magic-mainframe-extras.mse-include/examples/large/hazard_b.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/large/hazard_b.png
rename to data/magic-mainframe-extras.mse-include/examples/large/hazard_b.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/large/hazard_g.png b/data/magic-mainframe-extras.mse-include/examples/large/hazard_g.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/large/hazard_g.png
rename to data/magic-mainframe-extras.mse-include/examples/large/hazard_g.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/large/hazard_h.png b/data/magic-mainframe-extras.mse-include/examples/large/hazard_h.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/large/hazard_h.png
rename to data/magic-mainframe-extras.mse-include/examples/large/hazard_h.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/large/hazard_r.png b/data/magic-mainframe-extras.mse-include/examples/large/hazard_r.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/large/hazard_r.png
rename to data/magic-mainframe-extras.mse-include/examples/large/hazard_r.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/large/hazard_u.png b/data/magic-mainframe-extras.mse-include/examples/large/hazard_u.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/large/hazard_u.png
rename to data/magic-mainframe-extras.mse-include/examples/large/hazard_u.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/large/hazard_w.png b/data/magic-mainframe-extras.mse-include/examples/large/hazard_w.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/large/hazard_w.png
rename to data/magic-mainframe-extras.mse-include/examples/large/hazard_w.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/large/mined.png b/data/magic-mainframe-extras.mse-include/examples/large/mined.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/large/mined.png
rename to data/magic-mainframe-extras.mse-include/examples/large/mined.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/large/mined_b.png b/data/magic-mainframe-extras.mse-include/examples/large/mined_b.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/large/mined_b.png
rename to data/magic-mainframe-extras.mse-include/examples/large/mined_b.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/large/mined_g.png b/data/magic-mainframe-extras.mse-include/examples/large/mined_g.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/large/mined_g.png
rename to data/magic-mainframe-extras.mse-include/examples/large/mined_g.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/large/mined_r.png b/data/magic-mainframe-extras.mse-include/examples/large/mined_r.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/large/mined_r.png
rename to data/magic-mainframe-extras.mse-include/examples/large/mined_r.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/large/mined_u.png b/data/magic-mainframe-extras.mse-include/examples/large/mined_u.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/large/mined_u.png
rename to data/magic-mainframe-extras.mse-include/examples/large/mined_u.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/large/mined_w.png b/data/magic-mainframe-extras.mse-include/examples/large/mined_w.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/large/mined_w.png
rename to data/magic-mainframe-extras.mse-include/examples/large/mined_w.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/legend/acrown.png b/data/magic-mainframe-extras.mse-include/examples/legend/acrown.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/legend/acrown.png
rename to data/magic-mainframe-extras.mse-include/examples/legend/acrown.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/legend/bcrown.png b/data/magic-mainframe-extras.mse-include/examples/legend/bcrown.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/legend/bcrown.png
rename to data/magic-mainframe-extras.mse-include/examples/legend/bcrown.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/legend/ccrown.png b/data/magic-mainframe-extras.mse-include/examples/legend/ccrown.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/legend/ccrown.png
rename to data/magic-mainframe-extras.mse-include/examples/legend/ccrown.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/legend/gcrown.png b/data/magic-mainframe-extras.mse-include/examples/legend/gcrown.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/legend/gcrown.png
rename to data/magic-mainframe-extras.mse-include/examples/legend/gcrown.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/legend/mcrown.png b/data/magic-mainframe-extras.mse-include/examples/legend/mcrown.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/legend/mcrown.png
rename to data/magic-mainframe-extras.mse-include/examples/legend/mcrown.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/legend/rcrown.png b/data/magic-mainframe-extras.mse-include/examples/legend/rcrown.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/legend/rcrown.png
rename to data/magic-mainframe-extras.mse-include/examples/legend/rcrown.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/legend/ucrown.png b/data/magic-mainframe-extras.mse-include/examples/legend/ucrown.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/legend/ucrown.png
rename to data/magic-mainframe-extras.mse-include/examples/legend/ucrown.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/legend/wcrown.png b/data/magic-mainframe-extras.mse-include/examples/legend/wcrown.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/legend/wcrown.png
rename to data/magic-mainframe-extras.mse-include/examples/legend/wcrown.png
diff --git a/data/magic-mainframe-extras.mse-include/DISc.png b/data/magic-mainframe-extras.mse-include/examples/rarity/DISc.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/DISc.png
rename to data/magic-mainframe-extras.mse-include/examples/rarity/DISc.png
diff --git a/data/magic-mainframe-extras.mse-include/DISm.png b/data/magic-mainframe-extras.mse-include/examples/rarity/DISm.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/DISm.png
rename to data/magic-mainframe-extras.mse-include/examples/rarity/DISm.png
diff --git a/data/magic-mainframe-extras.mse-include/DISmp.png b/data/magic-mainframe-extras.mse-include/examples/rarity/DISmp.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/DISmp.png
rename to data/magic-mainframe-extras.mse-include/examples/rarity/DISmp.png
diff --git a/data/magic-mainframe-extras.mse-include/DISr.png b/data/magic-mainframe-extras.mse-include/examples/rarity/DISr.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/DISr.png
rename to data/magic-mainframe-extras.mse-include/examples/rarity/DISr.png
diff --git a/data/magic-mainframe-extras.mse-include/DISs.png b/data/magic-mainframe-extras.mse-include/examples/rarity/DISs.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/DISs.png
rename to data/magic-mainframe-extras.mse-include/examples/rarity/DISs.png
diff --git a/data/magic-mainframe-extras.mse-include/DISu.png b/data/magic-mainframe-extras.mse-include/examples/rarity/DISu.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/DISu.png
rename to data/magic-mainframe-extras.mse-include/examples/rarity/DISu.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/small/hazard.png b/data/magic-mainframe-extras.mse-include/examples/small/hazard.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/small/hazard.png
rename to data/magic-mainframe-extras.mse-include/examples/small/hazard.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/small/hazard_b.png b/data/magic-mainframe-extras.mse-include/examples/small/hazard_b.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/small/hazard_b.png
rename to data/magic-mainframe-extras.mse-include/examples/small/hazard_b.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/small/hazard_g.png b/data/magic-mainframe-extras.mse-include/examples/small/hazard_g.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/small/hazard_g.png
rename to data/magic-mainframe-extras.mse-include/examples/small/hazard_g.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/small/hazard_h.png b/data/magic-mainframe-extras.mse-include/examples/small/hazard_h.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/small/hazard_h.png
rename to data/magic-mainframe-extras.mse-include/examples/small/hazard_h.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/small/hazard_r.png b/data/magic-mainframe-extras.mse-include/examples/small/hazard_r.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/small/hazard_r.png
rename to data/magic-mainframe-extras.mse-include/examples/small/hazard_r.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/small/hazard_u.png b/data/magic-mainframe-extras.mse-include/examples/small/hazard_u.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/small/hazard_u.png
rename to data/magic-mainframe-extras.mse-include/examples/small/hazard_u.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/small/hazard_w.png b/data/magic-mainframe-extras.mse-include/examples/small/hazard_w.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/small/hazard_w.png
rename to data/magic-mainframe-extras.mse-include/examples/small/hazard_w.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/small/mined.png b/data/magic-mainframe-extras.mse-include/examples/small/mined.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/small/mined.png
rename to data/magic-mainframe-extras.mse-include/examples/small/mined.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/small/mined_b.png b/data/magic-mainframe-extras.mse-include/examples/small/mined_b.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/small/mined_b.png
rename to data/magic-mainframe-extras.mse-include/examples/small/mined_b.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/small/mined_g.png b/data/magic-mainframe-extras.mse-include/examples/small/mined_g.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/small/mined_g.png
rename to data/magic-mainframe-extras.mse-include/examples/small/mined_g.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/small/mined_r.png b/data/magic-mainframe-extras.mse-include/examples/small/mined_r.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/small/mined_r.png
rename to data/magic-mainframe-extras.mse-include/examples/small/mined_r.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/small/mined_u.png b/data/magic-mainframe-extras.mse-include/examples/small/mined_u.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/small/mined_u.png
rename to data/magic-mainframe-extras.mse-include/examples/small/mined_u.png
diff --git a/data/magic-mainframe-extras.mse-include/cajun/small/mined_w.png b/data/magic-mainframe-extras.mse-include/examples/small/mined_w.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/cajun/small/mined_w.png
rename to data/magic-mainframe-extras.mse-include/examples/small/mined_w.png
diff --git a/data/magic-mainframe-extras.mse-include/examples/stamp/heart flat.png b/data/magic-mainframe-extras.mse-include/examples/stamp/heart flat.png
new file mode 100644
index 000000000..fa317a8e0
Binary files /dev/null and b/data/magic-mainframe-extras.mse-include/examples/stamp/heart flat.png differ
diff --git a/data/magic-mainframe-extras.mse-include/examples/stamp/heart.png b/data/magic-mainframe-extras.mse-include/examples/stamp/heart.png
new file mode 100644
index 000000000..5bf44ef32
Binary files /dev/null and b/data/magic-mainframe-extras.mse-include/examples/stamp/heart.png differ
diff --git a/data/magic-mainframe-extras.mse-include/aetherprint.png b/data/magic-mainframe-extras.mse-include/examples/symbol/aetherprint.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/aetherprint.png
rename to data/magic-mainframe-extras.mse-include/examples/symbol/aetherprint.png
diff --git a/data/magic-mainframe-extras.mse-include/comedy.png b/data/magic-mainframe-extras.mse-include/examples/symbol/comedy.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/comedy.png
rename to data/magic-mainframe-extras.mse-include/examples/symbol/comedy.png
diff --git a/data/magic-mainframe-extras.mse-include/discovery.png b/data/magic-mainframe-extras.mse-include/examples/symbol/discovery.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/discovery.png
rename to data/magic-mainframe-extras.mse-include/examples/symbol/discovery.png
diff --git a/data/magic-mainframe-extras.mse-include/tragedy.png b/data/magic-mainframe-extras.mse-include/examples/symbol/tragedy.png
similarity index 100%
rename from data/magic-mainframe-extras.mse-include/tragedy.png
rename to data/magic-mainframe-extras.mse-include/examples/symbol/tragedy.png
diff --git a/data/magic-mainframe-extras.mse-include/examples/watermarks/Discord.png b/data/magic-mainframe-extras.mse-include/examples/watermarks/Discord.png
new file mode 100644
index 000000000..6f673279d
Binary files /dev/null and b/data/magic-mainframe-extras.mse-include/examples/watermarks/Discord.png differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-atq.png b/data/magic-mainframe-extras.mse-include/examples/watermarks/Fes_stamp.png
similarity index 54%
rename from data/magic-watermarks.mse-include/sets/Set-atq.png
rename to data/magic-mainframe-extras.mse-include/examples/watermarks/Fes_stamp.png
index 352cfb9fd..57ac3f45f 100644
Binary files a/data/magic-watermarks.mse-include/sets/Set-atq.png and b/data/magic-mainframe-extras.mse-include/examples/watermarks/Fes_stamp.png differ
diff --git a/data/magic-mainframe-extras.mse-include/examples/watermarks/fesemblem.png b/data/magic-mainframe-extras.mse-include/examples/watermarks/fesemblem.png
new file mode 100644
index 000000000..b0dc90c73
Binary files /dev/null and b/data/magic-mainframe-extras.mse-include/examples/watermarks/fesemblem.png differ
diff --git a/data/magic-mainframe-extras.mse-include/readme.txt b/data/magic-mainframe-extras.mse-include/readme.txt
index 3601e5f09..1b371e43b 100644
--- a/data/magic-mainframe-extras.mse-include/readme.txt
+++ b/data/magic-mainframe-extras.mse-include/readme.txt
@@ -11,21 +11,22 @@ mfsfiles/ contains images that can be shared across most Mainframe templates
Some example images are provided:
Transform/Lesson Circles
- aetherprint.png, comedy.png, tragedy.png
-Mainframe Rarity
- DISc.png, DISu.png, DISr.png, DISm.png, DISmp.png, DISs.png
+ examples/symbol/aetherprint.png, examples/symbol/comedy.png, examples/symbol/tragedy.png
Custom Saga chapter
- discovery.png
+ examples/symbol/discovery.png
Replacement Saga chapters
- doom/ folder
+ examples/doom/ folder
+Mainframe Rarity
+ examples/rarity/ folder (DISc.png, DISu.png, DISr.png, DISm.png, DISmp.png, DISs.png)
+ use examples/rarity/DIS.png as the mainframe rarity name
Custom Legend Crowns
- cajun/legend/ folder
+ examples/legend/ folder
Mainframe Custom Mana
- cajun/small, cajun/large, cajun/future folders
+ examples/small, examples/large, examples/future folders
Custom Border
- colorless.png
+ examples/border/colorless.png
Adventure Decorations
- decoration/ folder
+ examples/decoration/ folder
these images can be used as the forms
- decoration/clight.png
- decoration/light.png;color
\ No newline at end of file
+ examples/decoration/clight.png
+ examples/decoration/light.png;color
\ No newline at end of file
diff --git a/data/magic-mana-small.mse-symbol-font/alchemy old.png b/data/magic-mana-small.mse-symbol-font/alchemy old.png
new file mode 100644
index 000000000..152f040f0
Binary files /dev/null and b/data/magic-mana-small.mse-symbol-font/alchemy old.png differ
diff --git a/data/magic-mana-small.mse-symbol-font/alchemy.png b/data/magic-mana-small.mse-symbol-font/alchemy.png
new file mode 100644
index 000000000..0496c7dd0
Binary files /dev/null and b/data/magic-mana-small.mse-symbol-font/alchemy.png differ
diff --git a/data/magic-mana-small.mse-symbol-font/symbol-font b/data/magic-mana-small.mse-symbol-font/symbol-font
index 76a2ec26d..ebcbfbcdd 100644
--- a/data/magic-mana-small.mse-symbol-font/symbol-font
+++ b/data/magic-mana-small.mse-symbol-font/symbol-font
@@ -178,6 +178,14 @@ symbol:
code: r6
image: chapter6.png
image font size: 40
+###################################################################################### Alchemy Symbols
+symbol:
+ code: A-
+ image: alchemy old.png
+ enabled: {card.card_symbol == "alchemy old"}
+symbol:
+ code: A-
+ image: alchemy.png
###################################################################################### Phy Hybrid
symbol:
code: H/W/U
diff --git a/data/magic-modules.mse-include/card-symbols/alchemy old.png b/data/magic-modules.mse-include/card-symbols/alchemy old.png
new file mode 100644
index 000000000..152f040f0
Binary files /dev/null and b/data/magic-modules.mse-include/card-symbols/alchemy old.png differ
diff --git a/data/magic-modules.mse-include/card-symbols/alchemy.png b/data/magic-modules.mse-include/card-symbols/alchemy.png
new file mode 100644
index 000000000..0496c7dd0
Binary files /dev/null and b/data/magic-modules.mse-include/card-symbols/alchemy.png differ
diff --git a/data/magic-modules.mse-include/card-symbols/card_fields b/data/magic-modules.mse-include/card-symbols/card_fields
new file mode 100644
index 000000000..65af82611
--- /dev/null
+++ b/data/magic-modules.mse-include/card-symbols/card_fields
@@ -0,0 +1,12 @@
+card style:
+ card symbol:
+ left: { card_symbol_left_1() + nameline_offset_left_1() }
+ top: { card_symbol_top_1() + nameline_offset_top_1() }
+ width: { card_symbol_width_1() + nameline_offset_height_1() }
+ height: { if card_symbol_disabled_1() then 0 else card_symbol_height_1() + nameline_offset_height_1() }
+ visible: { not card_symbol_disabled_1() }
+ popup style: in place
+ include file: /magic.mse-game/card-symbols/menu_choice_images
+ render style: image
+ image: { card_symbol_image(face: 1) }
+ z index: 810
diff --git a/data/magic-modules.mse-include/card-symbols/card_fields_dfc b/data/magic-modules.mse-include/card-symbols/card_fields_dfc
new file mode 100644
index 000000000..cd6ce7f58
--- /dev/null
+++ b/data/magic-modules.mse-include/card-symbols/card_fields_dfc
@@ -0,0 +1,13 @@
+include file: /magic-modules.mse-include/card-symbols/card_fields
+card style:
+ card symbol 2:
+ left: { card_symbol_left_2() + nameline_offset_left_2() }
+ top: { card_symbol_top_2() + nameline_offset_top_2() }
+ width: { card_symbol_width_2() + nameline_offset_height_2() }
+ height: { if card_symbol_disabled_2() then 0 else card_symbol_height_2() + nameline_offset_height_2() }
+ visible: { not card_symbol_disabled_2() }
+ popup style: in place
+ include file: /magic.mse-game/card-symbols/menu_choice_images
+ render style: image
+ image: { card_symbol_image(face: 2) }
+ z index: 810
diff --git a/data/magic-modules.mse-include/card-symbols/card_fields_tfc b/data/magic-modules.mse-include/card-symbols/card_fields_tfc
new file mode 100644
index 000000000..da942128b
--- /dev/null
+++ b/data/magic-modules.mse-include/card-symbols/card_fields_tfc
@@ -0,0 +1,13 @@
+include file: /magic-modules.mse-include/card-symbols/card_fields_dfc
+card style:
+ card symbol 3:
+ left: { card_symbol_left_3() + nameline_offset_left_3() }
+ top: { card_symbol_top_3() + nameline_offset_top_3() }
+ width: { card_symbol_width_3() + nameline_offset_height_3() }
+ height: { if card_symbol_disabled_3() then 0 else card_symbol_height_3() + nameline_offset_height_3() }
+ visible: { not card_symbol_disabled_3() }
+ popup style: in place
+ include file: /magic.mse-game/card-symbols/menu_choice_images
+ render style: image
+ image: { card_symbol_image(face: 3) }
+ z index: 810
diff --git a/data/magic-modules.mse-include/card-symbols/choices b/data/magic-modules.mse-include/card-symbols/choices
new file mode 100644
index 000000000..02d88b370
--- /dev/null
+++ b/data/magic-modules.mse-include/card-symbols/choices
@@ -0,0 +1,4 @@
+choice: none
+choice: tombstone
+choice: alchemy
+choice: alchemy old
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/card-symbols/readme.txt b/data/magic-modules.mse-include/card-symbols/readme.txt
new file mode 100644
index 000000000..ac6af47c6
--- /dev/null
+++ b/data/magic-modules.mse-include/card-symbols/readme.txt
@@ -0,0 +1,48 @@
+#### Consider using the Namelines module instead of this one
+
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this, unindented, before the card style section:
+include file: /magic-modules.mse-include/card-symbols/card_fields
+#### For DFC or TFC templates, instead override the faces_coordinates function, and use:
+include file: /magic-modules.mse-include/card-symbols/card_fields_dfc
+include file: /magic-modules.mse-include/card-symbols/card_fields_tfc
+
+#### Default Field Placement (@375x523, w=1 h=1)
+card symbol:
+ left: (8, +18 if used, +28 with transform symbol)w
+ top: 21h
+ width: 23w
+ height: 21h
+#### Customization
+#### Optionally, you can adjust global alignment by defining the following functions in the init script,
+#### which must return an int corresponding to the number of pixels you want to shift things by:
+
+#### To shift everything up/down:
+card_symbol_offset_top_1 := { 0 }
+
+#### To shift everything left/right:
+card_symbol_offset_left_1 := { 0 }
+
+#### To increase/decrease the size:
+card_symbol_offset_width_1 := { 0 }
+card_symbol_offset_height_1 := { 0 }
+
+#### For the other faces on DFCs use:
+card_symbol_offset_top_2 := { 0 }
+card_symbol_offset_left_2 := { 0 }
+card_symbol_offset_width_2 := { 0 }
+card_symbol_offset_height_2 := { 0 }
+card_symbol_offset_top_3 := { 0 }
+card_symbol_offset_left_3 := { 0 }
+card_symbol_offset_width_3 := { 0 }
+card_symbol_offset_height_3 := { 0 }
+
+#### You can disable the symbols on some of the faces,
+#### by adding the following functions in the init script:
+card_symbol_disabled_1 := { true }
+card_symbol_disabled_2 := { true }
+card_symbol_disabled_3 := { true }
diff --git a/data/magic-modules.mse-include/card-symbols/tombstone.png b/data/magic-modules.mse-include/card-symbols/tombstone.png
new file mode 100644
index 000000000..3b7d1aaf8
Binary files /dev/null and b/data/magic-modules.mse-include/card-symbols/tombstone.png differ
diff --git a/data/magic-modules.mse-include/casting-costs/card_fields b/data/magic-modules.mse-include/casting-costs/card_fields
new file mode 100644
index 000000000..38402edb1
--- /dev/null
+++ b/data/magic-modules.mse-include/casting-costs/card_fields
@@ -0,0 +1,18 @@
+card style:
+ casting cost:
+ right: { casting_cost_right_1() + nameline_offset_left_1() + nameline_offset_width_1() }
+ top: { casting_cost_top_1() + nameline_offset_top_1() }
+ width: { casting_cost_width_1() }
+ height: { casting_cost_height_1() + nameline_offset_height_1() }
+ alignment: middle right shrink-overflow
+ visible: { (not nameline_disabled_1()) and not casting_cost_disabled_1() }
+ always symbol: true
+ font:
+ name: MPlantin
+ italic name: MPlantin-Italic
+ size: { name_font_size() }
+ color: black
+ symbol font:
+ name: { styling.casting_cost_mana_symbols or else "magic-mana-large" }
+ size: { name_font_size() }
+ z index: 920
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/casting-costs/card_fields_dfc b/data/magic-modules.mse-include/casting-costs/card_fields_dfc
new file mode 100644
index 000000000..c77b6f662
--- /dev/null
+++ b/data/magic-modules.mse-include/casting-costs/card_fields_dfc
@@ -0,0 +1,19 @@
+include file: /magic-modules.mse-include/casting-costs/card_fields
+card style:
+ casting cost 2:
+ right: { casting_cost_right_2() + nameline_offset_left_2() + nameline_offset_width_2() }
+ top: { casting_cost_top_2() + nameline_offset_top_2() }
+ width: { casting_cost_width_2() }
+ height: { casting_cost_height_2() + nameline_offset_height_2() }
+ alignment: middle right shrink-overflow
+ visible: { (not nameline_disabled_2()) and not casting_cost_disabled_2() }
+ always symbol: true
+ font:
+ name: MPlantin
+ italic name: MPlantin-Italic
+ size: { name2_font_size() }
+ color: black
+ symbol font:
+ name: { styling.casting_cost_mana_symbols or else "magic-mana-large" }
+ size: { name2_font_size() }
+ z index: 920
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/casting-costs/card_fields_tfc b/data/magic-modules.mse-include/casting-costs/card_fields_tfc
new file mode 100644
index 000000000..302681df3
--- /dev/null
+++ b/data/magic-modules.mse-include/casting-costs/card_fields_tfc
@@ -0,0 +1,19 @@
+include file: /magic-modules.mse-include/casting-costs/card_fields_dfc
+card style:
+ casting cost 3:
+ right: { casting_cost_right_3() + nameline_offset_left_3() + nameline_offset_width_3() }
+ top: { casting_cost_top_3() + nameline_offset_top_3() }
+ width: { casting_cost_width_3() }
+ height: { casting_cost_height_3() + nameline_offset_height_3() }
+ alignment: middle right shrink-overflow
+ visible: { (not nameline_disabled_3()) and not casting_cost_disabled_3() }
+ always symbol: true
+ font:
+ name: MPlantin
+ italic name: MPlantin-Italic
+ size: { name3_font_size() }
+ color: black
+ symbol font:
+ name: { styling.casting_cost_mana_symbols or else "magic-mana-large" }
+ size: { name3_font_size() }
+ z index: 920
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/casting-costs/readme.txt b/data/magic-modules.mse-include/casting-costs/readme.txt
new file mode 100644
index 000000000..b6e3c6bc2
--- /dev/null
+++ b/data/magic-modules.mse-include/casting-costs/readme.txt
@@ -0,0 +1,51 @@
+#### Consider using the Namelines module instead of this one.
+
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this, unindented, before the card style section:
+include file: /magic-modules.mse-include/casting-costs/card_fields
+#### For DFC or TFC templates, instead override the faces_coordinates function, and use:
+include file: /magic-modules.mse-include/casting-costs/card_fields_dfc
+include file: /magic-modules.mse-include/casting-costs/card_fields_tfc
+
+#### Also add this among the styling field section,
+#### (styling fields will appear in the order you place them).
+#### This adds a package option to select an alternate mana font for the casting cost.
+include file: /magic-modules.mse-include/casting-costs/styling_fields
+
+#### Default Field Placement (@375x523, w=1 h=1)
+casting cost:
+ right: 346w
+ top: 27h
+ width: min(30w, content) + 5w
+ height: 21h
+#### Customization
+#### Optionally, you can define which face of the card the casting cost should snap to,
+#### by defining the following function in the init script:
+nameline_face_1 := { 1 }
+
+#### You can also adjust global alignment by defining the following functions, again in the init script,
+#### which must return an int corresponding to the number of pixels you want to shift the casting cost by:
+
+#### To shift the casting cost up/down:
+casting_cost_offset_top_1 := { 0 }
+
+#### To shift the casting cost left/right:
+casting_cost_offset_left_1 := { 0 }
+
+#### To increase/decrease the width and height of the casting cost:
+casting_cost_offset_width_1 := { 0 }
+casting_cost_offset_height_1 := { 0 }
+
+#### For DFC or TFC templates, use:
+casting_cost_offset_top_2 := { 0 }
+casting_cost_offset_left_2 := { 0 }
+casting_cost_offset_width_2 := { 0 }
+casting_cost_offset_height_2 := { 0 }
+casting_cost_offset_top_3 := { 0 }
+casting_cost_offset_left_3 := { 0 }
+casting_cost_offset_width_3 := { 0 }
+casting_cost_offset_height_3 := { 0 }
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/casting-costs/styling_fields b/data/magic-modules.mse-include/casting-costs/styling_fields
new file mode 100644
index 000000000..d60a5529c
--- /dev/null
+++ b/data/magic-modules.mse-include/casting-costs/styling_fields
@@ -0,0 +1,4 @@
+styling field:
+ type: package choice
+ name: casting cost mana symbols
+ description: Mana symbols used for casting cost, name, banner, fuse and transformation reminder.
diff --git a/data/magic-modules.mse-include/chapters/1.png b/data/magic-modules.mse-include/chapters/1.png
new file mode 100644
index 000000000..519bbab41
Binary files /dev/null and b/data/magic-modules.mse-include/chapters/1.png differ
diff --git a/data/magic-modules.mse-include/chapters/10.png b/data/magic-modules.mse-include/chapters/10.png
new file mode 100644
index 000000000..d1ed536aa
Binary files /dev/null and b/data/magic-modules.mse-include/chapters/10.png differ
diff --git a/data/magic-modules.mse-include/chapters/2.png b/data/magic-modules.mse-include/chapters/2.png
new file mode 100644
index 000000000..bbeb22edf
Binary files /dev/null and b/data/magic-modules.mse-include/chapters/2.png differ
diff --git a/data/magic-modules.mse-include/chapters/3.png b/data/magic-modules.mse-include/chapters/3.png
new file mode 100644
index 000000000..3e7d42c4d
Binary files /dev/null and b/data/magic-modules.mse-include/chapters/3.png differ
diff --git a/data/magic-modules.mse-include/chapters/4.png b/data/magic-modules.mse-include/chapters/4.png
new file mode 100644
index 000000000..3aba9038f
Binary files /dev/null and b/data/magic-modules.mse-include/chapters/4.png differ
diff --git a/data/magic-modules.mse-include/chapters/5.png b/data/magic-modules.mse-include/chapters/5.png
new file mode 100644
index 000000000..8f8a56ad5
Binary files /dev/null and b/data/magic-modules.mse-include/chapters/5.png differ
diff --git a/data/magic-modules.mse-include/chapters/6.png b/data/magic-modules.mse-include/chapters/6.png
new file mode 100644
index 000000000..c7e1078ea
Binary files /dev/null and b/data/magic-modules.mse-include/chapters/6.png differ
diff --git a/data/magic-modules.mse-include/chapters/7.png b/data/magic-modules.mse-include/chapters/7.png
new file mode 100644
index 000000000..4fa359354
Binary files /dev/null and b/data/magic-modules.mse-include/chapters/7.png differ
diff --git a/data/magic-modules.mse-include/chapters/8.png b/data/magic-modules.mse-include/chapters/8.png
new file mode 100644
index 000000000..46ad3e741
Binary files /dev/null and b/data/magic-modules.mse-include/chapters/8.png differ
diff --git a/data/magic-modules.mse-include/chapters/9.png b/data/magic-modules.mse-include/chapters/9.png
new file mode 100644
index 000000000..42aa9d495
Binary files /dev/null and b/data/magic-modules.mse-include/chapters/9.png differ
diff --git a/data/magic-modules.mse-include/chapters/blank.png b/data/magic-modules.mse-include/chapters/blank.png
new file mode 100644
index 000000000..378df0d24
Binary files /dev/null and b/data/magic-modules.mse-include/chapters/blank.png differ
diff --git a/data/magic-modules.mse-include/corners/1039x744 diagonal.png b/data/magic-modules.mse-include/corners/1039x744 diagonal.png
new file mode 100644
index 000000000..2a2495bd3
Binary files /dev/null and b/data/magic-modules.mse-include/corners/1039x744 diagonal.png differ
diff --git a/data/magic-modules.mse-include/corners/1039x744 rounded and antialiased.png b/data/magic-modules.mse-include/corners/1039x744 rounded and antialiased.png
new file mode 100644
index 000000000..50ca358a4
Binary files /dev/null and b/data/magic-modules.mse-include/corners/1039x744 rounded and antialiased.png differ
diff --git a/data/magic-modules.mse-include/corners/1039x744 rounded.png b/data/magic-modules.mse-include/corners/1039x744 rounded.png
new file mode 100644
index 000000000..8d0d2cb59
Binary files /dev/null and b/data/magic-modules.mse-include/corners/1039x744 rounded.png differ
diff --git a/data/magic-modules.mse-include/corners/1046x750 diagonal.png b/data/magic-modules.mse-include/corners/1046x750 diagonal.png
new file mode 100644
index 000000000..7dacb22ac
Binary files /dev/null and b/data/magic-modules.mse-include/corners/1046x750 diagonal.png differ
diff --git a/data/magic-modules.mse-include/corners/1046x750 rounded and antialiased.png b/data/magic-modules.mse-include/corners/1046x750 rounded and antialiased.png
new file mode 100644
index 000000000..21df55e17
Binary files /dev/null and b/data/magic-modules.mse-include/corners/1046x750 rounded and antialiased.png differ
diff --git a/data/magic-modules.mse-include/corners/1046x750 rounded.png b/data/magic-modules.mse-include/corners/1046x750 rounded.png
new file mode 100644
index 000000000..525f3ed66
Binary files /dev/null and b/data/magic-modules.mse-include/corners/1046x750 rounded.png differ
diff --git a/data/magic-modules.mse-include/corners/375x523 diagonal.png b/data/magic-modules.mse-include/corners/375x523 diagonal.png
new file mode 100644
index 000000000..6fd584e05
Binary files /dev/null and b/data/magic-modules.mse-include/corners/375x523 diagonal.png differ
diff --git a/data/magic-modules.mse-include/corners/375x523 rounded and antialiased.png b/data/magic-modules.mse-include/corners/375x523 rounded and antialiased.png
new file mode 100644
index 000000000..5a7293601
Binary files /dev/null and b/data/magic-modules.mse-include/corners/375x523 rounded and antialiased.png differ
diff --git a/data/magic-modules.mse-include/corners/375x523 rounded.png b/data/magic-modules.mse-include/corners/375x523 rounded.png
new file mode 100644
index 000000000..c29624e00
Binary files /dev/null and b/data/magic-modules.mse-include/corners/375x523 rounded.png differ
diff --git a/data/magic-modules.mse-include/corners/523x375 diagonal.png b/data/magic-modules.mse-include/corners/523x375 diagonal.png
new file mode 100644
index 000000000..ddea5e443
Binary files /dev/null and b/data/magic-modules.mse-include/corners/523x375 diagonal.png differ
diff --git a/data/magic-modules.mse-include/corners/523x375 rounded and antialiased.png b/data/magic-modules.mse-include/corners/523x375 rounded and antialiased.png
new file mode 100644
index 000000000..7123d98a6
Binary files /dev/null and b/data/magic-modules.mse-include/corners/523x375 rounded and antialiased.png differ
diff --git a/data/magic-modules.mse-include/corners/523x375 rounded.png b/data/magic-modules.mse-include/corners/523x375 rounded.png
new file mode 100644
index 000000000..93fe435b4
Binary files /dev/null and b/data/magic-modules.mse-include/corners/523x375 rounded.png differ
diff --git a/data/magic-modules.mse-include/corners/646x902 diagonal.png b/data/magic-modules.mse-include/corners/646x902 diagonal.png
new file mode 100644
index 000000000..d8909613c
Binary files /dev/null and b/data/magic-modules.mse-include/corners/646x902 diagonal.png differ
diff --git a/data/magic-modules.mse-include/corners/646x902 rounded and antialiased.png b/data/magic-modules.mse-include/corners/646x902 rounded and antialiased.png
new file mode 100644
index 000000000..1f4d279ce
Binary files /dev/null and b/data/magic-modules.mse-include/corners/646x902 rounded and antialiased.png differ
diff --git a/data/magic-modules.mse-include/corners/646x902 rounded.png b/data/magic-modules.mse-include/corners/646x902 rounded.png
new file mode 100644
index 000000000..b592bc948
Binary files /dev/null and b/data/magic-modules.mse-include/corners/646x902 rounded.png differ
diff --git a/data/magic-modules.mse-include/corners/744x1039 diagonal.png b/data/magic-modules.mse-include/corners/744x1039 diagonal.png
new file mode 100644
index 000000000..14c34a342
Binary files /dev/null and b/data/magic-modules.mse-include/corners/744x1039 diagonal.png differ
diff --git a/data/magic-modules.mse-include/corners/744x1039 rounded and antialiased.png b/data/magic-modules.mse-include/corners/744x1039 rounded and antialiased.png
new file mode 100644
index 000000000..f533f5537
Binary files /dev/null and b/data/magic-modules.mse-include/corners/744x1039 rounded and antialiased.png differ
diff --git a/data/magic-modules.mse-include/corners/744x1039 rounded.png b/data/magic-modules.mse-include/corners/744x1039 rounded.png
new file mode 100644
index 000000000..b8e658aea
Binary files /dev/null and b/data/magic-modules.mse-include/corners/744x1039 rounded.png differ
diff --git a/data/magic-modules.mse-include/corners/750x1046 diagonal.png b/data/magic-modules.mse-include/corners/750x1046 diagonal.png
new file mode 100644
index 000000000..a552c9335
Binary files /dev/null and b/data/magic-modules.mse-include/corners/750x1046 diagonal.png differ
diff --git a/data/magic-modules.mse-include/corners/750x1046 rounded and antialiased.png b/data/magic-modules.mse-include/corners/750x1046 rounded and antialiased.png
new file mode 100644
index 000000000..f66dc1042
Binary files /dev/null and b/data/magic-modules.mse-include/corners/750x1046 rounded and antialiased.png differ
diff --git a/data/magic-modules.mse-include/corners/750x1046 rounded.png b/data/magic-modules.mse-include/corners/750x1046 rounded.png
new file mode 100644
index 000000000..5f425ba21
Binary files /dev/null and b/data/magic-modules.mse-include/corners/750x1046 rounded.png differ
diff --git a/data/magic-modules.mse-include/corners/902x646 diagonal.png b/data/magic-modules.mse-include/corners/902x646 diagonal.png
new file mode 100644
index 000000000..abc9afb2a
Binary files /dev/null and b/data/magic-modules.mse-include/corners/902x646 diagonal.png differ
diff --git a/data/magic-modules.mse-include/corners/902x646 rounded and antialiased.png b/data/magic-modules.mse-include/corners/902x646 rounded and antialiased.png
new file mode 100644
index 000000000..8be27ff04
Binary files /dev/null and b/data/magic-modules.mse-include/corners/902x646 rounded and antialiased.png differ
diff --git a/data/magic-modules.mse-include/corners/902x646 rounded.png b/data/magic-modules.mse-include/corners/902x646 rounded.png
new file mode 100644
index 000000000..bfb4954b1
Binary files /dev/null and b/data/magic-modules.mse-include/corners/902x646 rounded.png differ
diff --git a/data/magic-modules.mse-include/corners/card_fields b/data/magic-modules.mse-include/corners/card_fields
new file mode 100644
index 000000000..42ef8c8a2
--- /dev/null
+++ b/data/magic-modules.mse-include/corners/card_fields
@@ -0,0 +1,13 @@
+card style:
+ corners:
+ left: { face_coordinates_map(1).left }
+ top: { face_coordinates_map(1).top }
+ width: { face_coordinates_map(1).width }
+ height: { face_coordinates_map(1).height }
+ visible: { not corners_disabled_1() }
+ popup style: in place
+ include file: /magic.mse-game/corners/menu_choice_images
+ render style: image
+ image: { corners_image(field: 1) }
+ mask: { corners_mask(field: 1, face: 1) }
+ z index: 1100
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/corners/card_fields_dfc b/data/magic-modules.mse-include/corners/card_fields_dfc
new file mode 100644
index 000000000..1fd2dbf74
--- /dev/null
+++ b/data/magic-modules.mse-include/corners/card_fields_dfc
@@ -0,0 +1,14 @@
+include file: /magic-modules.mse-include/corners/card_fields
+card style:
+ corners 2:
+ left: { face_coordinates_map(2).left }
+ top: { face_coordinates_map(2).top }
+ width: { face_coordinates_map(2).width }
+ height: { face_coordinates_map(2).height }
+ visible: { not corners_disabled_2() }
+ popup style: in place
+ include file: /magic.mse-game/corners/menu_choice_images
+ render style: image
+ image: { corners_image(field: 2) }
+ mask: { corners_mask(field: 2, face: 2) }
+ z index: 1100
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/corners/card_fields_tfc b/data/magic-modules.mse-include/corners/card_fields_tfc
new file mode 100644
index 000000000..a65b9a0d7
--- /dev/null
+++ b/data/magic-modules.mse-include/corners/card_fields_tfc
@@ -0,0 +1,14 @@
+include file: /magic-modules.mse-include/corners/card_fields_dfc
+card style:
+ corners 3:
+ left: { face_coordinates_map(3).left }
+ top: { face_coordinates_map(3).top }
+ width: { face_coordinates_map(3).width }
+ height: { face_coordinates_map(3).height }
+ visible: { not corners_disabled_3() }
+ popup style: in place
+ include file: /magic.mse-game/corners/menu_choice_images
+ render style: image
+ image: { corners_image(field: 3) }
+ mask: { corners_mask(field: 3, face: 3) }
+ z index: 1100
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/corners/choices b/data/magic-modules.mse-include/corners/choices
new file mode 100644
index 000000000..737f22cbd
--- /dev/null
+++ b/data/magic-modules.mse-include/corners/choices
@@ -0,0 +1,5 @@
+choice: rounded and antialiased
+choice: rounded
+choice: diagonal
+choice: none
+choice: invisible
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/corners/color.png b/data/magic-modules.mse-include/corners/color.png
new file mode 100644
index 000000000..696fe3de2
Binary files /dev/null and b/data/magic-modules.mse-include/corners/color.png differ
diff --git a/data/magic-modules.mse-include/corners/invisible.png b/data/magic-modules.mse-include/corners/invisible.png
new file mode 100644
index 000000000..afc70d88e
Binary files /dev/null and b/data/magic-modules.mse-include/corners/invisible.png differ
diff --git a/data/magic-modules.mse-include/corners/readme.txt b/data/magic-modules.mse-include/corners/readme.txt
new file mode 100644
index 000000000..41e12780c
--- /dev/null
+++ b/data/magic-modules.mse-include/corners/readme.txt
@@ -0,0 +1,10 @@
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this, unindented, before the card style section:
+include file: /magic-modules.mse-include/corners/card_fields
+#### For DFC or TFC templates, instead override the faces_coordinates function, and use:
+include file: /magic-modules.mse-include/corners/card_fields_dfc
+include file: /magic-modules.mse-include/corners/card_fields_tfc
diff --git a/data/magic-modules.mse-include/counters/+1+1 offset.png b/data/magic-modules.mse-include/counters/+1+1 offset.png
new file mode 100644
index 000000000..a7e2b2d70
Binary files /dev/null and b/data/magic-modules.mse-include/counters/+1+1 offset.png differ
diff --git a/data/magic-modules.mse-include/counters/+1+1.png b/data/magic-modules.mse-include/counters/+1+1.png
new file mode 100644
index 000000000..5fddbbc5d
Binary files /dev/null and b/data/magic-modules.mse-include/counters/+1+1.png differ
diff --git a/data/magic-modules.mse-include/counters/-1-1 offset.png b/data/magic-modules.mse-include/counters/-1-1 offset.png
new file mode 100644
index 000000000..8bd21838c
Binary files /dev/null and b/data/magic-modules.mse-include/counters/-1-1 offset.png differ
diff --git a/data/magic-modules.mse-include/counters/-1-1.png b/data/magic-modules.mse-include/counters/-1-1.png
new file mode 100644
index 000000000..deebed26d
Binary files /dev/null and b/data/magic-modules.mse-include/counters/-1-1.png differ
diff --git a/data/magic-modules.mse-include/counters/acorn.png b/data/magic-modules.mse-include/counters/acorn.png
new file mode 100644
index 000000000..b31c4b692
Binary files /dev/null and b/data/magic-modules.mse-include/counters/acorn.png differ
diff --git a/data/magic-modules.mse-include/counters/aether.png b/data/magic-modules.mse-include/counters/aether.png
new file mode 100644
index 000000000..ac675b416
Binary files /dev/null and b/data/magic-modules.mse-include/counters/aether.png differ
diff --git a/data/magic-modules.mse-include/counters/arrow.png b/data/magic-modules.mse-include/counters/arrow.png
new file mode 100644
index 000000000..297fc318e
Binary files /dev/null and b/data/magic-modules.mse-include/counters/arrow.png differ
diff --git a/data/magic-modules.mse-include/counters/awakening.png b/data/magic-modules.mse-include/counters/awakening.png
new file mode 100644
index 000000000..ef21e4029
Binary files /dev/null and b/data/magic-modules.mse-include/counters/awakening.png differ
diff --git a/data/magic-modules.mse-include/counters/bounty.png b/data/magic-modules.mse-include/counters/bounty.png
new file mode 100644
index 000000000..12108605a
Binary files /dev/null and b/data/magic-modules.mse-include/counters/bounty.png differ
diff --git a/data/magic-modules.mse-include/counters/charge.png b/data/magic-modules.mse-include/counters/charge.png
new file mode 100644
index 000000000..ee715d734
Binary files /dev/null and b/data/magic-modules.mse-include/counters/charge.png differ
diff --git a/data/magic-modules.mse-include/counters/choices b/data/magic-modules.mse-include/counters/choices
new file mode 100644
index 000000000..cc4c6350a
--- /dev/null
+++ b/data/magic-modules.mse-include/counters/choices
@@ -0,0 +1,53 @@
+choice:
+ name: none
+ line below: true
+choice:
+ name: custom
+ line below: true
+choice: +1/+1
+choice: -1/-1
+choice: acorn
+choice: aether
+choice: arrow
+choice: awakening
+choice: bounty
+choice: charge
+choice: corpse
+choice: deathtouch alt
+choice: deathtouch
+choice: defender
+choice: doom
+choice: double strike
+choice: egg
+choice: energy
+choice: experience
+choice: finality
+choice: first strike
+choice: flame
+choice: flood
+choice: flying
+choice: goaded
+choice: haste
+choice: hexproof alt
+choice: hexproof
+choice: indestructible
+choice: lifelink alt
+choice: lifelink
+choice: lore
+choice: menace
+choice: oil
+choice: omen
+choice: poison
+choice: rad
+choice: reach
+choice: shield
+choice: solved
+choice: spore
+choice: stun
+choice: suspected
+choice: ticket
+choice: time
+choice: trample
+choice: unlock
+choice: vigilance
+choice: void
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/counters/corpse.png b/data/magic-modules.mse-include/counters/corpse.png
new file mode 100644
index 000000000..d91dd1ab9
Binary files /dev/null and b/data/magic-modules.mse-include/counters/corpse.png differ
diff --git a/data/magic-modules.mse-include/counters/deathtouch alt.png b/data/magic-modules.mse-include/counters/deathtouch alt.png
new file mode 100644
index 000000000..fb9e03166
Binary files /dev/null and b/data/magic-modules.mse-include/counters/deathtouch alt.png differ
diff --git a/data/magic-modules.mse-include/counters/deathtouch.png b/data/magic-modules.mse-include/counters/deathtouch.png
new file mode 100644
index 000000000..30f6cf047
Binary files /dev/null and b/data/magic-modules.mse-include/counters/deathtouch.png differ
diff --git a/data/magic-modules.mse-include/counters/defender.png b/data/magic-modules.mse-include/counters/defender.png
new file mode 100644
index 000000000..7219f21a9
Binary files /dev/null and b/data/magic-modules.mse-include/counters/defender.png differ
diff --git a/data/magic-modules.mse-include/counters/doom.png b/data/magic-modules.mse-include/counters/doom.png
new file mode 100644
index 000000000..e8f2f5756
Binary files /dev/null and b/data/magic-modules.mse-include/counters/doom.png differ
diff --git a/data/magic-modules.mse-include/counters/double strike.png b/data/magic-modules.mse-include/counters/double strike.png
new file mode 100644
index 000000000..c38047cc5
Binary files /dev/null and b/data/magic-modules.mse-include/counters/double strike.png differ
diff --git a/data/magic-modules.mse-include/counters/egg.png b/data/magic-modules.mse-include/counters/egg.png
new file mode 100644
index 000000000..8beac031d
Binary files /dev/null and b/data/magic-modules.mse-include/counters/egg.png differ
diff --git a/data/magic-modules.mse-include/counters/energy.png b/data/magic-modules.mse-include/counters/energy.png
new file mode 100644
index 000000000..d433fd54c
Binary files /dev/null and b/data/magic-modules.mse-include/counters/energy.png differ
diff --git a/data/magic-modules.mse-include/counters/experience.png b/data/magic-modules.mse-include/counters/experience.png
new file mode 100644
index 000000000..1157a1493
Binary files /dev/null and b/data/magic-modules.mse-include/counters/experience.png differ
diff --git a/data/magic-modules.mse-include/counters/finality.png b/data/magic-modules.mse-include/counters/finality.png
new file mode 100644
index 000000000..0d41cce31
Binary files /dev/null and b/data/magic-modules.mse-include/counters/finality.png differ
diff --git a/data/magic-modules.mse-include/counters/first strike.png b/data/magic-modules.mse-include/counters/first strike.png
new file mode 100644
index 000000000..4ae3d8512
Binary files /dev/null and b/data/magic-modules.mse-include/counters/first strike.png differ
diff --git a/data/magic-modules.mse-include/counters/flame.png b/data/magic-modules.mse-include/counters/flame.png
new file mode 100644
index 000000000..0b77985a1
Binary files /dev/null and b/data/magic-modules.mse-include/counters/flame.png differ
diff --git a/data/magic-modules.mse-include/counters/flood.png b/data/magic-modules.mse-include/counters/flood.png
new file mode 100644
index 000000000..4a40d23d0
Binary files /dev/null and b/data/magic-modules.mse-include/counters/flood.png differ
diff --git a/data/magic-modules.mse-include/counters/flying.png b/data/magic-modules.mse-include/counters/flying.png
new file mode 100644
index 000000000..32efa156f
Binary files /dev/null and b/data/magic-modules.mse-include/counters/flying.png differ
diff --git a/data/magic-modules.mse-include/counters/goaded.png b/data/magic-modules.mse-include/counters/goaded.png
new file mode 100644
index 000000000..2e57d8643
Binary files /dev/null and b/data/magic-modules.mse-include/counters/goaded.png differ
diff --git a/data/magic-modules.mse-include/counters/haste.png b/data/magic-modules.mse-include/counters/haste.png
new file mode 100644
index 000000000..c6a0552bd
Binary files /dev/null and b/data/magic-modules.mse-include/counters/haste.png differ
diff --git a/data/magic-modules.mse-include/counters/hexproof alt.png b/data/magic-modules.mse-include/counters/hexproof alt.png
new file mode 100644
index 000000000..3d4926144
Binary files /dev/null and b/data/magic-modules.mse-include/counters/hexproof alt.png differ
diff --git a/data/magic-modules.mse-include/counters/hexproof.png b/data/magic-modules.mse-include/counters/hexproof.png
new file mode 100644
index 000000000..59a030568
Binary files /dev/null and b/data/magic-modules.mse-include/counters/hexproof.png differ
diff --git a/data/magic-modules.mse-include/counters/indestructible.png b/data/magic-modules.mse-include/counters/indestructible.png
new file mode 100644
index 000000000..772d6811e
Binary files /dev/null and b/data/magic-modules.mse-include/counters/indestructible.png differ
diff --git a/data/magic-modules.mse-include/counters/lifelink alt.png b/data/magic-modules.mse-include/counters/lifelink alt.png
new file mode 100644
index 000000000..cc7502b00
Binary files /dev/null and b/data/magic-modules.mse-include/counters/lifelink alt.png differ
diff --git a/data/magic-modules.mse-include/counters/lifelink.png b/data/magic-modules.mse-include/counters/lifelink.png
new file mode 100644
index 000000000..79b604ea7
Binary files /dev/null and b/data/magic-modules.mse-include/counters/lifelink.png differ
diff --git a/data/magic-modules.mse-include/counters/lore.png b/data/magic-modules.mse-include/counters/lore.png
new file mode 100644
index 000000000..bba4c7d1c
Binary files /dev/null and b/data/magic-modules.mse-include/counters/lore.png differ
diff --git a/data/magic-modules.mse-include/counters/menace.png b/data/magic-modules.mse-include/counters/menace.png
new file mode 100644
index 000000000..406defceb
Binary files /dev/null and b/data/magic-modules.mse-include/counters/menace.png differ
diff --git a/data/magic-modules.mse-include/counters/none.png b/data/magic-modules.mse-include/counters/none.png
new file mode 100644
index 000000000..14d76ba19
Binary files /dev/null and b/data/magic-modules.mse-include/counters/none.png differ
diff --git a/data/magic-modules.mse-include/counters/oil.png b/data/magic-modules.mse-include/counters/oil.png
new file mode 100644
index 000000000..6f4d4a618
Binary files /dev/null and b/data/magic-modules.mse-include/counters/oil.png differ
diff --git a/data/magic-modules.mse-include/counters/omen.png b/data/magic-modules.mse-include/counters/omen.png
new file mode 100644
index 000000000..836b5f250
Binary files /dev/null and b/data/magic-modules.mse-include/counters/omen.png differ
diff --git a/data/magic-modules.mse-include/counters/poison.png b/data/magic-modules.mse-include/counters/poison.png
new file mode 100644
index 000000000..e9e438c2f
Binary files /dev/null and b/data/magic-modules.mse-include/counters/poison.png differ
diff --git a/data/magic-modules.mse-include/counters/rad.png b/data/magic-modules.mse-include/counters/rad.png
new file mode 100644
index 000000000..4b4eac081
Binary files /dev/null and b/data/magic-modules.mse-include/counters/rad.png differ
diff --git a/data/magic-modules.mse-include/counters/reach.png b/data/magic-modules.mse-include/counters/reach.png
new file mode 100644
index 000000000..cd5cfb5d1
Binary files /dev/null and b/data/magic-modules.mse-include/counters/reach.png differ
diff --git a/data/magic-modules.mse-include/counters/shield.png b/data/magic-modules.mse-include/counters/shield.png
new file mode 100644
index 000000000..c085a1036
Binary files /dev/null and b/data/magic-modules.mse-include/counters/shield.png differ
diff --git a/data/magic-modules.mse-include/counters/solved.png b/data/magic-modules.mse-include/counters/solved.png
new file mode 100644
index 000000000..e4f0bdada
Binary files /dev/null and b/data/magic-modules.mse-include/counters/solved.png differ
diff --git a/data/magic-modules.mse-include/counters/spore.png b/data/magic-modules.mse-include/counters/spore.png
new file mode 100644
index 000000000..d6887a81a
Binary files /dev/null and b/data/magic-modules.mse-include/counters/spore.png differ
diff --git a/data/magic-modules.mse-include/counters/stun.png b/data/magic-modules.mse-include/counters/stun.png
new file mode 100644
index 000000000..b68ce0fd4
Binary files /dev/null and b/data/magic-modules.mse-include/counters/stun.png differ
diff --git a/data/magic-modules.mse-include/counters/suspected.png b/data/magic-modules.mse-include/counters/suspected.png
new file mode 100644
index 000000000..63edbd1b6
Binary files /dev/null and b/data/magic-modules.mse-include/counters/suspected.png differ
diff --git a/data/magic-modules.mse-include/counters/ticket.png b/data/magic-modules.mse-include/counters/ticket.png
new file mode 100644
index 000000000..67c8e0f2e
Binary files /dev/null and b/data/magic-modules.mse-include/counters/ticket.png differ
diff --git a/data/magic-modules.mse-include/counters/time.png b/data/magic-modules.mse-include/counters/time.png
new file mode 100644
index 000000000..2f1f94a22
Binary files /dev/null and b/data/magic-modules.mse-include/counters/time.png differ
diff --git a/data/magic-modules.mse-include/counters/trample.png b/data/magic-modules.mse-include/counters/trample.png
new file mode 100644
index 000000000..5cff248d2
Binary files /dev/null and b/data/magic-modules.mse-include/counters/trample.png differ
diff --git a/data/magic-modules.mse-include/counters/unlock.png b/data/magic-modules.mse-include/counters/unlock.png
new file mode 100644
index 000000000..6fd11a018
Binary files /dev/null and b/data/magic-modules.mse-include/counters/unlock.png differ
diff --git a/data/magic-modules.mse-include/counters/vigilance.png b/data/magic-modules.mse-include/counters/vigilance.png
new file mode 100644
index 000000000..dfdf074b2
Binary files /dev/null and b/data/magic-modules.mse-include/counters/vigilance.png differ
diff --git a/data/magic-modules.mse-include/counters/void.png b/data/magic-modules.mse-include/counters/void.png
new file mode 100644
index 000000000..d23f1c5ef
Binary files /dev/null and b/data/magic-modules.mse-include/counters/void.png differ
diff --git a/data/magic-modules.mse-include/fonts/readme.txt b/data/magic-modules.mse-include/fonts/readme.txt
new file mode 100644
index 000000000..36a4b0d7b
--- /dev/null
+++ b/data/magic-modules.mse-include/fonts/readme.txt
@@ -0,0 +1,50 @@
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this among the styling field section
+#### (styling fields will appear in the order you place them).
+#### This will add a boolean to enable custom fonts, and four text
+#### options for customizing nameline, typeline, textbox, and pt fonts.
+include file: /magic-modules.mse-include/fonts/styling_fields
+
+#### You may also need to redefine the defaults in the style file:
+swap_fonts_name_default := [
+ name: {"Beleren Bold"},
+ size: {16},
+ color: {"black"},
+ vertical: {0},
+ italic: {""}
+]
+swap_fonts_type_default := [
+ name: {"Beleren Bold"},
+ size: {13},
+ color: {"black"},
+ vertical: {0},
+ italic: {""}
+]
+swap_fonts_body_default := [
+ name: {"MPlantin"},
+ size: {13},
+ color: {"black"},
+ vertical: {0},
+ italic: {"MPlantin-Italic"}
+]
+swap_fonts_pt_default := [
+ name: {"Beleren Bold"},
+ size: {16},
+ color: {"black"},
+ vertical: {0},
+ italic: {""}
+]
+
+#### For DFC or TFC templates, or just templates with multiple text fields, use:
+swap_fonts_name2_default := []
+swap_fonts_name3_default := []
+swap_fonts_type2_default := []
+swap_fonts_type3_default := []
+swap_fonts_body2_default := []
+swap_fonts_body3_default := []
+swap_fonts_pt2_default := []
+swap_fonts_pt3_default := []
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/fonts/styling_fields b/data/magic-modules.mse-include/fonts/styling_fields
new file mode 100644
index 000000000..845a9e990
--- /dev/null
+++ b/data/magic-modules.mse-include/fonts/styling_fields
@@ -0,0 +1,21 @@
+styling field:
+ type: boolean
+ name: apply custom fonts
+ description: Enable to attempt to use custom fonts given below
+ initial: no
+styling field:
+ type: text
+ name: custom name font
+ description: Formatted as "font name;font size;font color;vertical offset;italic font name" last 4 are optional. color can be a name or R,G,B,A numbers.
+styling field:
+ type: text
+ name: custom type font
+ description: Formatted as "font name;font size;font color;vertical offset;italic font name" last 4 are optional. color can be a name or R,G,B,A numbers.
+styling field:
+ type: text
+ name: custom body font
+ description: Formatted as "font name;font size;font color;vertical offset;italic font name" last 4 are optional. color can be a name or R,G,B,A numbers.
+styling field:
+ type: text
+ name: custom pt font
+ description: Formatted as "font name;font size;font color;vertical offset;italic font name" last 4 are optional. color can be a name or R,G,B,A numbers.
diff --git a/data/magic-modules.mse-include/include b/data/magic-modules.mse-include/include
new file mode 100644
index 000000000..ce5d5baff
--- /dev/null
+++ b/data/magic-modules.mse-include/include
@@ -0,0 +1,11 @@
+mse version: 2.0.0
+full name: Magic The Gathering, frame building modules
+version: 2024-05-20
+depends on:
+ package: magic.mse-game
+ version: 2014-06-25
+
+
+#### This file doesn't do anything.
+#### Other files in this directory can be included in game/style files.
+#### Refer to readme files in subfolders for how to use specific modules.
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/indicators/aidentity.png b/data/magic-modules.mse-include/indicators/aidentity.png
new file mode 100644
index 000000000..061a8ace9
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/aidentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/baidentity.png b/data/magic-modules.mse-include/indicators/baidentity.png
new file mode 100644
index 000000000..447cef2ad
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/baidentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/bidentity.png b/data/magic-modules.mse-include/indicators/bidentity.png
new file mode 100644
index 000000000..188a12494
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/bidentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/blidentity.png b/data/magic-modules.mse-include/indicators/blidentity.png
new file mode 100644
index 000000000..188a12494
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/blidentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/card_fields b/data/magic-modules.mse-include/indicators/card_fields
new file mode 100644
index 000000000..ca17e08c4
--- /dev/null
+++ b/data/magic-modules.mse-include/indicators/card_fields
@@ -0,0 +1,10 @@
+card style:
+ indicator:
+ left: { indicator_left_1() + typeline_offset_left_1() }
+ top: { indicator_top_1() + typeline_offset_top_1() }
+ width: { indicator_size_1() + typeline_offset_height_1() }
+ height: { indicator_size_1() + typeline_offset_height_1() }
+ z index: 800
+ render style: image
+ visible: { (not typeline_disabled_1()) and (not indicator_disabled_1()) and has_identity() }
+ image: { card_identity(card.indicator) }
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/indicators/card_fields_dfc b/data/magic-modules.mse-include/indicators/card_fields_dfc
new file mode 100644
index 000000000..4322d1112
--- /dev/null
+++ b/data/magic-modules.mse-include/indicators/card_fields_dfc
@@ -0,0 +1,11 @@
+include file: card_fields
+card style:
+ indicator 2:
+ left: { indicator_left_2() + typeline_offset_left_2() }
+ top: { indicator_top_2() + typeline_offset_top_2() }
+ width: { indicator_size_2() + typeline_offset_height_2() }
+ height: { indicator_size_2() + typeline_offset_height_2() }
+ z index: 800
+ render style: image
+ visible: { (not typeline_disabled_2()) and (not indicator_disabled_2()) and has_identity_2() }
+ image: { card_identity(card.indicator_2) }
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/indicators/card_fields_tfc b/data/magic-modules.mse-include/indicators/card_fields_tfc
new file mode 100644
index 000000000..380a70cab
--- /dev/null
+++ b/data/magic-modules.mse-include/indicators/card_fields_tfc
@@ -0,0 +1,11 @@
+include file: card_fields_dfc
+card style:
+ indicator 3:
+ left: { indicator_left_3() + typeline_offset_left_3() }
+ top: { indicator_top_3() + typeline_offset_top_3() }
+ width: { indicator_size_3() + typeline_offset_height_3() }
+ height: { indicator_size_3() + typeline_offset_height_3() }
+ z index: 800
+ render style: image
+ visible: { (not typeline_disabled_3()) and not indicator_disabled_3() and has_identity_3() }
+ image: { card_identity(card.indicator_3) }
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/indicators/cidentity.png b/data/magic-modules.mse-include/indicators/cidentity.png
new file mode 100644
index 000000000..05aee2e5c
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/cidentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/clidentity.png b/data/magic-modules.mse-include/indicators/clidentity.png
new file mode 100644
index 000000000..05aee2e5c
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/clidentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/gidentity.png b/data/magic-modules.mse-include/indicators/gidentity.png
new file mode 100644
index 000000000..1f89d43e1
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/gidentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/glidentity.png b/data/magic-modules.mse-include/indicators/glidentity.png
new file mode 100644
index 000000000..1f89d43e1
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/glidentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/imask_32.png b/data/magic-modules.mse-include/indicators/imask_32.png
new file mode 100644
index 000000000..fdca7c202
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/imask_32.png differ
diff --git a/data/magic-modules.mse-include/indicators/imask_33.png b/data/magic-modules.mse-include/indicators/imask_33.png
new file mode 100644
index 000000000..5d16919aa
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/imask_33.png differ
diff --git a/data/magic-modules.mse-include/indicators/imask_42.png b/data/magic-modules.mse-include/indicators/imask_42.png
new file mode 100644
index 000000000..bf79bb442
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/imask_42.png differ
diff --git a/data/magic-modules.mse-include/indicators/imask_43.png b/data/magic-modules.mse-include/indicators/imask_43.png
new file mode 100644
index 000000000..734a7a59b
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/imask_43.png differ
diff --git a/data/magic-modules.mse-include/indicators/imask_44.png b/data/magic-modules.mse-include/indicators/imask_44.png
new file mode 100644
index 000000000..e07988fe8
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/imask_44.png differ
diff --git a/data/magic-modules.mse-include/indicators/imask_52.png b/data/magic-modules.mse-include/indicators/imask_52.png
new file mode 100644
index 000000000..dbc5c16f8
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/imask_52.png differ
diff --git a/data/magic-modules.mse-include/indicators/imask_53.png b/data/magic-modules.mse-include/indicators/imask_53.png
new file mode 100644
index 000000000..e58bbd642
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/imask_53.png differ
diff --git a/data/magic-modules.mse-include/indicators/imask_54.png b/data/magic-modules.mse-include/indicators/imask_54.png
new file mode 100644
index 000000000..c46eb3e4d
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/imask_54.png differ
diff --git a/data/magic-modules.mse-include/indicators/imask_55.png b/data/magic-modules.mse-include/indicators/imask_55.png
new file mode 100644
index 000000000..43f495c29
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/imask_55.png differ
diff --git a/data/magic-modules.mse-include/indicators/midentity.png b/data/magic-modules.mse-include/indicators/midentity.png
new file mode 100644
index 000000000..000bddd47
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/midentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/mlidentity.png b/data/magic-modules.mse-include/indicators/mlidentity.png
new file mode 100644
index 000000000..000bddd47
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/mlidentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/omidentity.png b/data/magic-modules.mse-include/indicators/omidentity.png
new file mode 100644
index 000000000..2403fb783
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/omidentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/omlidentity.png b/data/magic-modules.mse-include/indicators/omlidentity.png
new file mode 100644
index 000000000..2403fb783
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/omlidentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/readme.txt b/data/magic-modules.mse-include/indicators/readme.txt
new file mode 100644
index 000000000..56763eb51
--- /dev/null
+++ b/data/magic-modules.mse-include/indicators/readme.txt
@@ -0,0 +1,43 @@
+#### Consider using the Typelines module instead of this one.
+
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this, unindented, before the card style section:
+include file: /magic-modules.mse-include/indicators/card_fields
+#### For DFC or TFC templates, instead override the faces_coordinates function, and use:
+include file: /magic-modules.mse-include/indicators/card_fields_dfc
+include file: /magic-modules.mse-include/indicators/card_fields_tfc
+
+#### Default Field Placement (@375x523, w=1 h=1)
+indicator:
+ left: 31w
+ top: 301h
+ width: 17w
+ height: 17h
+#### Customization
+#### Optionally, you can define which face of the card the color indicator should snap to,
+#### by defining the following function in the init script:
+typeline_face_1 := { 1 }
+
+#### You can also adjust global alignment by defining the following functions, again in the init script,
+#### which must return an int corresponding to the number of pixels you want to shift the color indicator by:
+
+#### To shift the color indicator up/down:
+indicator_offset_top_1 := { 0 }
+
+#### To shift the color indicator left/right:
+indicator_offset_left_1 := { 0 }
+
+#### To increase/decrease the width and height of the color indicator:
+indicator_offset_size_1 := { 0 }
+
+#### For DFC or TFC templates, use:
+indicator_offset_top_2 := { 0 }
+indicator_offset_left_2 := { 0 }
+indicator_offset_size_2 := { 0 }
+indicator_offset_top_3 := { 0 }
+indicator_offset_left_3 := { 0 }
+indicator_offset_size_3 := { 0 }
diff --git a/data/magic-modules.mse-include/indicators/ridentity.png b/data/magic-modules.mse-include/indicators/ridentity.png
new file mode 100644
index 000000000..70f9500f8
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/ridentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/rlidentity.png b/data/magic-modules.mse-include/indicators/rlidentity.png
new file mode 100644
index 000000000..70f9500f8
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/rlidentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/uidentity.png b/data/magic-modules.mse-include/indicators/uidentity.png
new file mode 100644
index 000000000..5bbd07a6f
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/uidentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/ulidentity.png b/data/magic-modules.mse-include/indicators/ulidentity.png
new file mode 100644
index 000000000..5bbd07a6f
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/ulidentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/widentity.png b/data/magic-modules.mse-include/indicators/widentity.png
new file mode 100644
index 000000000..2b36bf8e3
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/widentity.png differ
diff --git a/data/magic-modules.mse-include/indicators/wlidentity.png b/data/magic-modules.mse-include/indicators/wlidentity.png
new file mode 100644
index 000000000..2b36bf8e3
Binary files /dev/null and b/data/magic-modules.mse-include/indicators/wlidentity.png differ
diff --git a/data/magic-modules.mse-include/information/art old.png b/data/magic-modules.mse-include/information/art old.png
new file mode 100644
index 000000000..bdb26efc8
Binary files /dev/null and b/data/magic-modules.mse-include/information/art old.png differ
diff --git a/data/magic-modules.mse-include/information/art.png b/data/magic-modules.mse-include/information/art.png
new file mode 100644
index 000000000..d872cbd0a
Binary files /dev/null and b/data/magic-modules.mse-include/information/art.png differ
diff --git a/data/magic-modules.mse-include/information/card_fields b/data/magic-modules.mse-include/information/card_fields
new file mode 100644
index 000000000..17153f35d
--- /dev/null
+++ b/data/magic-modules.mse-include/information/card_fields
@@ -0,0 +1,856 @@
+card style:
+ set code:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(1) then
+ (
+ 24 * face_coordinates_map(1).width/523 + face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ 24 * face_coordinates_map(1).width/375 + face_coordinates_map(1).left + information_codes_offset_left_1()
+ )
+ top:
+ script:
+ if face_is_rotated(1) then
+ (
+ 24 * face_coordinates_map(1).height/375 + face_coordinates_map(1).top + information_codes_offset_left_1()
+ ) else (
+ 499 * face_coordinates_map(1).height/523 + face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if face_is_rotated(1) then
+ (
+ 40 * face_coordinates_map(1).width/523
+ ) else (
+ 40 * face_coordinates_map(1).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/375
+ ) else (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/523
+ )
+ visible: { not information_disabled_1() }
+ alignment: middle left
+ font:
+ name: Relay-Medium
+ size: { 7 * face_coordinates_map(1).height/(if face_is_rotated(1) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ set language:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(1) then
+ (
+ 14 * face_coordinates_map(1).width/523 + face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ 24 * face_coordinates_map(1).width/375 + face_coordinates_map(1).left + information_codes_offset_left_1()
+ )
+ top:
+ script:
+ if face_is_rotated(1) then
+ (
+ 24 * face_coordinates_map(1).height/375 + face_coordinates_map(1).top + information_codes_offset_left_1()
+ ) else (
+ 509 * face_coordinates_map(1).height/523 + face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if face_is_rotated(1) then
+ (
+ code := if is_masterpiece() then set.masterpiece_set_code else set.set_code
+ if card.additional_credit_brush == "none" or (not set.adaptive_language_height) or code == "" then 0
+ else 40 * face_coordinates_map(1).width/523
+ ) else (
+ code := if is_masterpiece() then set.masterpiece_set_code else set.set_code
+ if card.additional_credit_brush == "none" or (not set.adaptive_language_height) or code == "" then 0
+ else 40 * face_coordinates_map(1).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/375
+ ) else (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/523
+ )
+ visible: { not information_disabled_1() }
+ alignment: middle left
+ font:
+ name: Relay-Medium
+ size: { 7 * face_coordinates_map(1).height/(if face_is_rotated(1) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ card code:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(1) then
+ (
+ 34 * face_coordinates_map(1).width/523 + face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ 24 * face_coordinates_map(1).width/375 + face_coordinates_map(1).left + information_codes_offset_left_1()
+ )
+ top:
+ script:
+ if face_is_rotated(1) then
+ (
+ 24 * face_coordinates_map(1).height/375 + face_coordinates_map(1).top + information_codes_offset_left_1()
+ ) else (
+ 489 * face_coordinates_map(1).height/523 + face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if face_is_rotated(1) then
+ (
+ 120 * face_coordinates_map(1).width/523
+ ) else (
+ 120 * face_coordinates_map(1).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/375
+ ) else (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/523
+ )
+ visible: { not information_disabled_1() }
+ alignment: middle left
+ font:
+ name: Relay-Medium
+ size: { 7 * face_coordinates_map(1).height/(if face_is_rotated(1) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ partition select:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(1) then
+ (
+ 34 * face_coordinates_map(1).width/523 + face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ 24 * face_coordinates_map(1).width/375 + face_coordinates_map(1).left + information_codes_offset_left_1()
+ )
+ top:
+ script:
+ if face_is_rotated(1) then
+ (
+ 24 * face_coordinates_map(1).height/375 + face_coordinates_map(1).top + information_codes_offset_left_1()
+ ) else (
+ 489 * face_coordinates_map(1).height/523 + face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if not use_auto_numbers() then 0
+ else if face_is_rotated(1) then
+ (
+ 35 * face_coordinates_map(1).width/523
+ ) else (
+ 35 * face_coordinates_map(1).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/375
+ ) else (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/523
+ )
+ visible: { not information_disabled_1() and use_auto_numbers() }
+ popup style: menu
+ render style: hidden
+ z index: 1100
+ illustrator:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(1) then
+ (
+ 24 * face_coordinates_map(1).width/523 + face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ initial_space := 25 * face_coordinates_map(1).width/375
+ set_code_space := 4 * face_coordinates_map(1).width/375
+ set_code_width := if card.set_code == "" then 0 else (set_code_space + card_style.set_code.content_width)
+ set_language_width := if card.set_language == "" then 0 else (set_code_space + card_style.set_language.content_width)
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ illustrator_brush_width := (if card.illustrator_brush == "art old" then 31 else if contains(card.illustrator_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).width/375
+ initial_space + set_width + illustrator_brush_width + face_coordinates_map(1).left + information_codes_offset_left_1()
+ )
+ top:
+ script:
+ if face_is_rotated(1) then
+ (
+ initial_space := 25 * face_coordinates_map(1).height/375
+ set_code_space := 4 * face_coordinates_map(1).height/375
+ set_code_width := if card.set_code == "" then 0 else (set_code_space + card_style.set_code.content_width)
+ set_language_width := if card.set_language == "" then 0 else (set_code_space + card_style.set_language.content_width)
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ illustrator_brush_width := (if card.illustrator_brush == "art old" then 31 else if contains(card.illustrator_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).height/375
+ initial_space + set_width + illustrator_brush_width + face_coordinates_map(1).top + information_codes_offset_left_1()
+ ) else (
+ 499 * face_coordinates_map(1).height/523 + face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if face_is_rotated(1) then
+ (
+ max(50 * face_coordinates_map(1).width/523, card_style.illustrator.content_width + 10 * face_coordinates_map(1).width/523)
+ ) else (
+ max(50 * face_coordinates_map(1).width/375, card_style.illustrator.content_width + 10 * face_coordinates_map(1).width/375)
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/375
+ ) else (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/523
+ )
+ visible: { not information_disabled_1() }
+ alignment: middle left
+ font:
+ name: Beleren Small Caps Bold
+ size: { 7.25 * face_coordinates_map(1).height/(if face_is_rotated(1) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ z index: 900
+ illustrator brush:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(1) then
+ (
+ 22 * face_coordinates_map(1).width/523 + face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ initial_space := 25 * face_coordinates_map(1).width/375
+ set_code_space := 4 * face_coordinates_map(1).width/375
+ set_code_width := if card.set_code == "" then 0 else (set_code_space + card_style.set_code.content_width)
+ set_language_width := if card.set_language == "" then 0 else (set_code_space + card_style.set_language.content_width)
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ initial_space + set_width + face_coordinates_map(1).left + information_codes_offset_left_1()
+ )
+ top:
+ script:
+ if face_is_rotated(1) then
+ (
+ initial_space := 25 * face_coordinates_map(1).height/375
+ set_code_space := 4 * face_coordinates_map(1).height/375
+ set_code_width := if card.set_code == "" then 0 else (set_code_space + card_style.set_code.content_width)
+ set_language_width := if card.set_language == "" then 0 else (set_code_space + card_style.set_language.content_width)
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ initial_space + set_width + face_coordinates_map(1).top + information_codes_offset_left_1()
+ ) else (
+ 501 * face_coordinates_map(1).height/523 + face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if face_is_rotated(1) then
+ (
+ (if card.illustrator_brush == "art old" then 30 else if contains(card.illustrator_brush, match: "wide") then 15 else 12) * face_coordinates_map(1).width/523
+ ) else (
+ (if card.illustrator_brush == "art old" then 30 else if contains(card.illustrator_brush, match: "wide") then 15 else 12) * face_coordinates_map(1).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ 7 * face_coordinates_map(1).height/375
+ ) else (
+ 7 * face_coordinates_map(1).height/523
+ )
+ visible: { not information_disabled_1() }
+ popup style: in place
+ include file: /magic.mse-game/information/menu_choice_images
+ render style: image
+ image: { illustrator_brush_image(field: 1) }
+ z index: 900
+ additional credit:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(1) then
+ (
+ 14 * face_coordinates_map(1).width/523 + face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ initial_space := 25 * face_coordinates_map(1).width/375
+ set_code_space := 4 * face_coordinates_map(1).width/375
+ set_code_width := if card.set_code == "" then 0 else (set_code_space + card_style.set_code.content_width)
+ set_language_width := if card.set_language == "" then 0 else (set_code_space + card_style.set_language.content_width)
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ additional_credit_brush_width := (if card.additional_credit_brush == "art old" then 31 else if contains(card.additional_credit_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).width/375
+ initial_space + set_width + additional_credit_brush_width + face_coordinates_map(1).left + information_codes_offset_left_1()
+ )
+ top:
+ script:
+ if face_is_rotated(1) then
+ (
+ initial_space := 25 * face_coordinates_map(1).height/375
+ set_code_space := 4 * face_coordinates_map(1).height/375
+ set_code_width := if card.set_code == "" then 0 else (set_code_space + card_style.set_code.content_width)
+ set_language_width := if card.set_language == "" then 0 else (set_code_space + card_style.set_language.content_width)
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ additional_credit_brush_width := (if card.additional_credit_brush == "art old" then 31 else if contains(card.additional_credit_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).height/375
+ initial_space + set_width + additional_credit_brush_width + face_coordinates_map(1).top + information_codes_offset_left_1()
+ ) else (
+ 509 * face_coordinates_map(1).height/523 + face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if face_is_rotated(1) then
+ (
+ if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then 0 else max(50 * face_coordinates_map(1).width/523, card_style.additional_credit.content_width + 10 * face_coordinates_map(1).width/523)
+ ) else (
+ if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then 0 else max(50 * face_coordinates_map(1).width/375, card_style.additional_credit.content_width + 10 * face_coordinates_map(1).width/375)
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/375
+ ) else (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/523
+ )
+ visible: { not information_disabled_1() }
+ alignment: middle left
+ font:
+ name: Beleren Small Caps Bold
+ size: { 7.25 * face_coordinates_map(1).height/(if face_is_rotated(1) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ z index: 900
+ additional credit brush:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(1) then
+ (
+ 12 * face_coordinates_map(1).width/523 + face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ initial_space := 25 * face_coordinates_map(1).width/375
+ set_code_space := 4 * face_coordinates_map(1).width/375
+ set_code_width := if card.set_code == "" then 0 else set_code_space + card_style.set_code.content_width
+ set_language_width := if card.set_language == "" then 0 else set_code_space + card_style.set_language.content_width
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ initial_space + set_width + face_coordinates_map(1).left + information_codes_offset_left_1()
+ )
+ top:
+ script:
+ if face_is_rotated(1) then
+ (
+ initial_space := 25 * face_coordinates_map(1).height/375
+ set_code_space := 4 * face_coordinates_map(1).height/375
+ set_code_width := if card.set_code == "" then 0 else set_code_space + card_style.set_code.content_width
+ set_language_width := if card.set_language == "" then 0 else set_code_space + card_style.set_language.content_width
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ initial_space + set_width + face_coordinates_map(1).top + information_codes_offset_left_1()
+ ) else (
+ 511 * face_coordinates_map(1).height/523 + face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if face_is_rotated(1) then
+ (
+ (if card.additional_credit_brush == "art old" then 30 else if contains(card.additional_credit_brush, match: "wide") then 15 else 12) * face_coordinates_map(1).width/523
+ ) else (
+ (if card.additional_credit_brush == "art old" then 30 else if contains(card.additional_credit_brush, match: "wide") then 15 else 12) * face_coordinates_map(1).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ 7 * face_coordinates_map(1).height/375
+ ) else (
+ 7 * face_coordinates_map(1).height/523
+ )
+ visible: { not information_disabled_1() }
+ popup style: in place
+ include file: /magic.mse-game/information/menu_choice_images
+ render style: image
+ image: { additional_credit_brush_image(field: 1) }
+ z index: 900
+ additional credit 2:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(1) then
+ (
+ 24 * face_coordinates_map(1).width/523 + face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ initial_space := 25 * face_coordinates_map(1).width/375
+
+ set_code_space := 4 * face_coordinates_map(1).width/375
+ set_code_width := if card.set_code == "" then 0 else set_code_space + card_style.set_code.content_width
+ set_language_width := if card.set_language == "" then 0 else set_code_space + card_style.set_language.content_width
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+
+ illustrator_brush_width := (if card.illustrator_brush == "art old" then 31 else if contains(card.illustrator_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).width/375
+ illustrator_left := initial_space + set_width + illustrator_brush_width
+ illustrator_width := max(50 * face_coordinates_map(1).width/375, card_style.illustrator.content_width + 10 * face_coordinates_map(1).width/375)
+ top_margin := illustrator_left + illustrator_width
+
+ additional_credit_brush_width := (if card.additional_credit_brush == "art old" then 31 else if contains(card.additional_credit_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).width/375
+ additional_credit_left := initial_space + set_width + additional_credit_brush_width
+ additional_credit_width := max(50 * face_coordinates_map(1).width/375, card_style.additional_credit.content_width + 10 * face_coordinates_map(1).width/375)
+ bottom_margin := additional_credit_left + additional_credit_width
+
+ additional_credit_brush_2_width := (if card.additional_credit_brush_2 == "art old" then 31 else if contains(card.additional_credit_brush_2, match: "wide") then 17 else 14) * face_coordinates_map(1).width/375
+
+ max(top_margin, bottom_margin) + additional_credit_brush_2_width + face_coordinates_map(1).left + information_codes_offset_left_1()
+ )
+ top:
+ script:
+ if face_is_rotated(1) then
+ (
+ initial_space := 25 * face_coordinates_map(1).height/375
+
+ set_code_space := 4 * face_coordinates_map(1).height/375
+ set_code_width := if card.set_code == "" then 0 else set_code_space + card_style.set_code.content_width
+ set_language_width := if card.set_language == "" then 0 else set_code_space + card_style.set_language.content_width
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+
+ illustrator_brush_width := (if card.illustrator_brush == "art old" then 31 else if contains(card.illustrator_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).height/375
+ illustrator_left := initial_space + set_width + illustrator_brush_width
+ illustrator_width := max(50 * face_coordinates_map(1).height/375, card_style.illustrator.content_width + 10 * face_coordinates_map(1).height/375)
+ top_margin := illustrator_left + illustrator_width
+
+ additional_credit_brush_width := (if card.additional_credit_brush == "art old" then 31 else if contains(card.additional_credit_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).height/375
+ additional_credit_left := initial_space + set_width + additional_credit_brush_width
+ additional_credit_width := max(50 * face_coordinates_map(1).height/375, card_style.additional_credit.content_width + 10 * face_coordinates_map(1).height/375)
+ bottom_margin := additional_credit_left + additional_credit_width
+
+ additional_credit_brush_2_width := (if card.additional_credit_brush_2 == "art old" then 31 else if contains(card.additional_credit_brush_2, match: "wide") then 17 else 14) * face_coordinates_map(1).height/375
+
+ max(top_margin, bottom_margin) + additional_credit_brush_2_width + face_coordinates_map(1).top + information_codes_offset_left_1()
+ ) else (
+ 499 * face_coordinates_map(1).height/523 + face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if face_is_rotated(1) then
+ (
+ (if card.additional_credit_brush_2 != "none" then 80 else 0) * face_coordinates_map(1).width/523
+ ) else (
+ (if card.additional_credit_brush_2 != "none" then 80 else 0) * face_coordinates_map(1).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/375
+ ) else (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/523
+ )
+ visible: { not information_disabled_1() }
+ alignment: middle left
+ font:
+ name: Beleren Small Caps Bold
+ size: { 7.25 * face_coordinates_map(1).height/(if face_is_rotated(1) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ z index: 900
+ additional credit brush 2:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(1) then
+ (
+ 22 * face_coordinates_map(1).width/523 + face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ initial_space := 25 * face_coordinates_map(1).width/375
+
+ set_code_space := 4 * face_coordinates_map(1).width/375
+ set_code_width := if card.set_code == "" then 0 else set_code_space + card_style.set_code.content_width
+ set_language_width := if card.set_language == "" then 0 else set_code_space + card_style.set_language.content_width
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+
+ illustrator_brush_width := (if card.illustrator_brush == "art old" then 31 else if contains(card.illustrator_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).width/375
+ illustrator_left := initial_space + set_width + illustrator_brush_width
+ illustrator_width := max(50 * face_coordinates_map(1).width/375, card_style.illustrator.content_width + 10 * face_coordinates_map(1).width/375)
+ top_margin := illustrator_left + illustrator_width
+
+ additional_credit_brush_width := (if card.additional_credit_brush == "art old" then 31 else if contains(card.additional_credit_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).width/375
+ additional_credit_left := initial_space + set_width + additional_credit_brush_width
+ additional_credit_width := max(50 * face_coordinates_map(1).width/375, card_style.additional_credit.content_width + 10 * face_coordinates_map(1).width/375)
+ bottom_margin := additional_credit_left + additional_credit_width
+
+ max(top_margin, bottom_margin) + face_coordinates_map(1).left + information_codes_offset_left_1()
+ )
+ top:
+ script:
+ if face_is_rotated(1) then
+ (
+ initial_space := 25 * face_coordinates_map(1).height/375
+
+ set_code_space := 4 * face_coordinates_map(1).height/375
+ set_code_width := if card.set_code == "" then 0 else set_code_space + card_style.set_code.content_width
+ set_language_width := if card.set_language == "" then 0 else set_code_space + card_style.set_language.content_width
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+
+ illustrator_brush_width := (if card.illustrator_brush == "art old" then 31 else if contains(card.illustrator_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).height/375
+ illustrator_left := initial_space + set_width + illustrator_brush_width
+ illustrator_width := max(50 * face_coordinates_map(1).height/375, card_style.illustrator.content_width + 10 * face_coordinates_map(1).height/375)
+ top_margin := illustrator_left + illustrator_width
+
+ additional_credit_brush_width := (if card.additional_credit_brush == "art old" then 31 else if contains(card.additional_credit_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).height/375
+ additional_credit_left := initial_space + set_width + additional_credit_brush_width
+ additional_credit_width := max(50 * face_coordinates_map(1).height/375, card_style.additional_credit.content_width + 10 * face_coordinates_map(1).height/375)
+ bottom_margin := additional_credit_left + additional_credit_width
+
+ max(top_margin, bottom_margin) + face_coordinates_map(1).top + information_codes_offset_left_1()
+ ) else (
+ 501 * face_coordinates_map(1).height/523 + face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if face_is_rotated(1) then
+ (
+ (if card.additional_credit_brush_2 == "art old" then 30 else if contains(card.additional_credit_brush_2, match: "wide") then 15 else 12) * face_coordinates_map(1).width/523
+ ) else (
+ (if card.additional_credit_brush_2 == "art old" then 30 else if contains(card.additional_credit_brush_2, match: "wide") then 15 else 12) * face_coordinates_map(1).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ 7 * face_coordinates_map(1).height/375
+ ) else (
+ 7 * face_coordinates_map(1).height/523
+ )
+ visible: { not information_disabled_1() }
+ popup style: in place
+ include file: /magic.mse-game/information/menu_choice_images
+ render style: image
+ image: { additional_credit_brush_image(field: 2) }
+ z index: 900
+ additional credit 3:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(1) then
+ (
+ 14 * face_coordinates_map(1).width/523 + face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ initial_space := 25 * face_coordinates_map(1).width/375
+
+ set_code_space := 4 * face_coordinates_map(1).width/375
+ set_code_width := if card.set_code == "" then 0 else set_code_space + card_style.set_code.content_width
+ set_language_width := if card.set_language == "" then 0 else set_code_space + card_style.set_language.content_width
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+
+ illustrator_brush_width := (if card.illustrator_brush == "art old" then 31 else if contains(card.illustrator_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).width/375
+ illustrator_left := initial_space + set_width + illustrator_brush_width
+ illustrator_width := max(50 * face_coordinates_map(1).width/375, card_style.illustrator.content_width + 10 * face_coordinates_map(1).width/375)
+ top_margin := illustrator_left + illustrator_width
+
+ additional_credit_brush_width := (if card.additional_credit_brush == "art old" then 31 else if contains(card.additional_credit_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).width/375
+ additional_credit_left := initial_space + set_width + additional_credit_brush_width
+ additional_credit_width := max(50 * face_coordinates_map(1).width/375, card_style.additional_credit.content_width + 10 * face_coordinates_map(1).width/375)
+ bottom_margin := additional_credit_left + additional_credit_width
+
+ additional_credit_brush_3_width := (if card.additional_credit_brush_3 == "art old" then 31 else if contains(card.additional_credit_brush_3, match: "wide") then 17 else 14) * face_coordinates_map(1).width/375
+
+ max(top_margin, bottom_margin) + additional_credit_brush_3_width + face_coordinates_map(1).left + information_codes_offset_left_1()
+ )
+ top:
+ script:
+ if face_is_rotated(1) then
+ (
+ initial_space := 25 * face_coordinates_map(1).height/375
+
+ set_code_space := 4 * face_coordinates_map(1).height/375
+ set_code_width := if card.set_code == "" then 0 else set_code_space + card_style.set_code.content_width
+ set_language_width := if card.set_language == "" then 0 else set_code_space + card_style.set_language.content_width
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+
+ illustrator_brush_width := (if card.illustrator_brush == "art old" then 31 else if contains(card.illustrator_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).height/375
+ illustrator_left := initial_space + set_width + illustrator_brush_width
+ illustrator_width := max(50 * face_coordinates_map(1).height/375, card_style.illustrator.content_width + 10 * face_coordinates_map(1).height/375)
+ top_margin := illustrator_left + illustrator_width
+
+ additional_credit_brush_width := (if card.additional_credit_brush == "art old" then 31 else if contains(card.additional_credit_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).height/375
+ additional_credit_left := initial_space + set_width + additional_credit_brush_width
+ additional_credit_width := max(50 * face_coordinates_map(1).height/375, card_style.additional_credit.content_width + 10 * face_coordinates_map(1).height/375)
+ bottom_margin := additional_credit_left + additional_credit_width
+
+ additional_credit_brush_3_width := (if card.additional_credit_brush_3 == "art old" then 31 else if contains(card.additional_credit_brush_3, match: "wide") then 17 else 14) * face_coordinates_map(1).height/375
+
+ max(top_margin, bottom_margin) + additional_credit_brush_3_width + face_coordinates_map(1).top + information_codes_offset_left_1()
+ ) else (
+ 509 * face_coordinates_map(1).height/523 + face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if face_is_rotated(1) then
+ (
+ (if card.additional_credit_brush_3 != "none" and card.additional_credit_brush != "none" then 80 else 0) * face_coordinates_map(1).width/523
+ ) else (
+ (if card.additional_credit_brush_3 != "none" and card.additional_credit_brush != "none" then 80 else 0) * face_coordinates_map(1).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/375
+ ) else (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/523
+ )
+ visible: { not information_disabled_1() }
+ alignment: middle left
+ font:
+ name: Beleren Small Caps Bold
+ size: { 7.25 * face_coordinates_map(1).height/(if face_is_rotated(1) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ z index: 900
+ additional credit brush 3:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(1) then
+ (
+ 12 * face_coordinates_map(1).width/523 + face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ initial_space := 25 * face_coordinates_map(1).width/375
+
+ set_code_space := 4 * face_coordinates_map(1).width/375
+ set_code_width := if card.set_code == "" then 0 else set_code_space + card_style.set_code.content_width
+ set_language_width := if card.set_language == "" then 0 else set_code_space + card_style.set_language.content_width
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+
+ illustrator_brush_width := (if card.illustrator_brush == "art old" then 31 else if contains(card.illustrator_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).width/375
+ illustrator_left := initial_space + set_width + illustrator_brush_width
+ illustrator_width := max(50 * face_coordinates_map(1).width/375, card_style.illustrator.content_width + 10 * face_coordinates_map(1).width/375)
+ top_margin := illustrator_left + illustrator_width
+
+ additional_credit_brush_width := (if card.additional_credit_brush == "art old" then 31 else if contains(card.additional_credit_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).width/375
+ additional_credit_left := initial_space + set_width + additional_credit_brush_width
+ additional_credit_width := max(50 * face_coordinates_map(1).width/375, card_style.additional_credit.content_width + 10 * face_coordinates_map(1).width/375)
+ bottom_margin := additional_credit_left + additional_credit_width
+
+ max(top_margin, bottom_margin) + face_coordinates_map(1).left + information_codes_offset_left_1()
+ )
+ top:
+ script:
+ if face_is_rotated(1) then
+ (
+ initial_space := 25 * face_coordinates_map(1).height/375
+
+ set_code_space := 4 * face_coordinates_map(1).height/375
+ set_code_width := if card.set_code == "" then 0 else set_code_space + card_style.set_code.content_width
+ set_language_width := if card.set_language == "" then 0 else set_code_space + card_style.set_language.content_width
+ set_width := if card.additional_credit_brush == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+
+ illustrator_brush_width := (if card.illustrator_brush == "art old" then 31 else if contains(card.illustrator_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).height/375
+ illustrator_left := initial_space + set_width + illustrator_brush_width
+ illustrator_width := max(50 * face_coordinates_map(1).height/375, card_style.illustrator.content_width + 10 * face_coordinates_map(1).height/375)
+ top_margin := illustrator_left + illustrator_width
+
+ additional_credit_brush_width := (if card.additional_credit_brush == "art old" then 31 else if contains(card.additional_credit_brush, match: "wide") then 17 else 14) * face_coordinates_map(1).height/375
+ additional_credit_left := initial_space + set_width + additional_credit_brush_width
+ additional_credit_width := max(50 * face_coordinates_map(1).height/375, card_style.additional_credit.content_width + 10 * face_coordinates_map(1).height/375)
+ bottom_margin := additional_credit_left + additional_credit_width
+
+ max(top_margin, bottom_margin) + face_coordinates_map(1).top + information_codes_offset_left_1()
+ ) else (
+ 511 * face_coordinates_map(1).height/523 + face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if face_is_rotated(1) then
+ (
+ (if card.additional_credit_brush_3 == "art old" then 30 else if contains(card.additional_credit_brush_3, match: "wide") then 15 else 12) * face_coordinates_map(1).width/523
+ ) else (
+ (if card.additional_credit_brush_3 == "art old" then 30 else if contains(card.additional_credit_brush_3, match: "wide") then 15 else 12) * face_coordinates_map(1).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ 7 * face_coordinates_map(1).height/375
+ ) else (
+ 7 * face_coordinates_map(1).height/523
+ )
+ visible: { card.additional_credit_brush != "none" and not information_disabled_1() }
+ popup style: in place
+ include file: /magic.mse-game/information/menu_choice_images
+ render style: image
+ image: { additional_credit_brush_image(field: 3) }
+ z index: 900
+ copyright:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ right:
+ script:
+ if face_is_rotated(1) then
+ (
+ (if card.pt != "" or card.loyalty != "" then 21 + information_secondary_offset_pt_left_1() else if card.secondary_copyright != "" then 23 else 33) * face_coordinates_map(1).width/523 +
+ face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ 351 * face_coordinates_map(1).width/375 + face_coordinates_map(1).left + information_copyright_offset_right_1()
+ )
+ top:
+ script:
+ if face_is_rotated(1) then
+ (
+ 351 * face_coordinates_map(1).height/375 + face_coordinates_map(1).top + information_copyright_offset_right_1()
+ ) else (
+ (if card.pt != "" or card.loyalty != "" then 502 + information_copyright_offset_pt_top_1() else if card.secondary_copyright != "" then 500 else 490) * face_coordinates_map(1).height/523 +
+ face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if face_is_rotated(1) then
+ (
+ if set.automatic_copyright then 0 else 140 * face_coordinates_map(1).width/523
+ ) else (
+ if set.automatic_copyright then 0 else 140 * face_coordinates_map(1).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/375
+ ) else (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/523
+ )
+ visible: { not information_disabled_1() }
+ alignment: middle right shrink-overflow
+ font:
+ name: MPlantin
+ size: { 6.5 * face_coordinates_map(1).height/(if face_is_rotated(1) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ auto copyright:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ right:
+ script:
+ if face_is_rotated(1) then
+ (
+ (if card.pt != "" or card.loyalty != "" then 21 + information_secondary_offset_pt_left_1() else if card.secondary_copyright != "" then 23 else 33) * face_coordinates_map(1).width/523 + face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ 351 * face_coordinates_map(1).width/375 + face_coordinates_map(1).left + information_copyright_offset_right_1()
+ )
+ top:
+ script:
+ if face_is_rotated(1) then
+ (
+ 351 * face_coordinates_map(1).height/375 + face_coordinates_map(1).top + information_copyright_offset_right_1()
+ ) else (
+ (if card.pt != "" or card.loyalty != "" then 502 + information_copyright_offset_pt_top_1() else if card.secondary_copyright != "" then 500 else 490) * face_coordinates_map(1).height/523 + face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if face_is_rotated(1) then
+ (
+ if set.automatic_copyright then 140 * face_coordinates_map(1).width/523 else 0
+ ) else (
+ if set.automatic_copyright then 140 * face_coordinates_map(1).width/375 else 0
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/375
+ ) else (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/523
+ )
+ visible: { not information_disabled_1() }
+ alignment: middle right shrink-overflow
+ font:
+ name: MPlantin
+ size: { 6.5 * face_coordinates_map(1).height/(if face_is_rotated(1) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ secondary copyright:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(1) then
+ (
+ 33 * face_coordinates_map(1).width/523 + face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ needed := (255 + information_secondary_offset_pt_left_1() - if length(card.secondary_copyright) > 9 then 45 else if length(card.secondary_copyright) > 6 then 25 else if length(card.secondary_copyright) > 4 then 10 else 0) * face_coordinates_map(1).width/375 + face_coordinates_map(1).left
+ aligned := 351 * face_coordinates_map(1).width/375 + information_copyright_offset_right_1() - (if set.automatic_copyright then card_style.auto_copyright.content_width else card_style.copyright.content_width) + face_coordinates_map(1).left
+ max(min(needed, aligned), 211 * face_coordinates_map(1).width/375)
+ )
+ top:
+ script:
+ if face_is_rotated(1) then
+ (
+ 211 * face_coordinates_map(1).height/375 + face_coordinates_map(1).top + information_copyright_offset_right_1()
+ ) else (
+ 490 * face_coordinates_map(1).height/523 + face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if face_is_rotated(1) then
+ (
+ 140 * face_coordinates_map(1).width/523
+ ) else (
+ needed := (255 + information_secondary_offset_pt_left_1() - if length(card.secondary_copyright) > 9 then 45 else if length(card.secondary_copyright) > 6 then 25 else if length(card.secondary_copyright) > 4 then 10 else 0) * face_coordinates_map(1).width/375 + face_coordinates_map(1).left
+ aligned := 351 * face_coordinates_map(1).width/375 + information_copyright_offset_right_1() - (if set.automatic_copyright then card_style.auto_copyright.content_width else card_style.copyright.content_width) + face_coordinates_map(1).left
+ left := max(min(needed, aligned), 211 * face_coordinates_map(1).width/375)
+ right := (if card.pt != "" then 279 + information_secondary_offset_pt_left_1() else if card.loyalty != "" then 295 + information_secondary_offset_pt_left_1() else 351) * face_coordinates_map(1).width/375 + face_coordinates_map(1).top + information_copyright_offset_right_1()
+ right - left
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/375
+ ) else (
+ if information_disabled_1() then 0 else 10 * face_coordinates_map(1).height/523
+ )
+ visible: { not information_disabled_1() }
+ alignment: { if card.pt != "" or card.loyalty != "" then "middle left shrink-overflow" else "middle right shrink-overflow" }
+ font:
+ name: MPlantin
+ size: { 6.5 * face_coordinates_map(1).height/(if face_is_rotated(1) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ the list icon:
+ angle: { if face_is_rotated(1) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(1) then
+ (
+ face_coordinates_map(1).left - information_offset_top_1()
+ ) else (
+ face_coordinates_map(1).left + information_codes_offset_left_1()
+ )
+ bottom:
+ script:
+ if face_is_rotated(1) then
+ (
+ face_coordinates_map(1).top + information_codes_offset_left_1()
+ ) else (
+ face_coordinates_map(1).height + face_coordinates_map(1).top + information_offset_top_1()
+ )
+ width:
+ script:
+ if face_is_rotated(1) then
+ (
+ 22 * face_coordinates_map(1).width/523
+ ) else (
+ 22 * face_coordinates_map(1).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(1) then
+ (
+ 33 * face_coordinates_map(1).height/375
+ ) else (
+ 33 * face_coordinates_map(1).height/523
+ )
+ visible: { not information_disabled_1() }
+ popup style: in place
+ include file: /magic.mse-game/information/menu_choice_images_the_list
+ render style: image
+ image: { the_list_icon_image(face: 1, field: 1) }
+ z index: 900
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/information/card_fields_dfc b/data/magic-modules.mse-include/information/card_fields_dfc
new file mode 100644
index 000000000..5dc9bd6d4
--- /dev/null
+++ b/data/magic-modules.mse-include/information/card_fields_dfc
@@ -0,0 +1,510 @@
+include file: /magic-modules.mse-include/information/card_fields
+card style:
+ set code 2:
+ angle: { if face_is_rotated(2) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(2) then
+ (
+ 24 * face_coordinates_map(2).width/523 + face_coordinates_map(2).left - information_offset_top_2()
+ ) else (
+ 24 * face_coordinates_map(2).width/375 + face_coordinates_map(2).left + information_codes_offset_left_2()
+ )
+ top:
+ script:
+ if face_is_rotated(2) then
+ (
+ 24 * face_coordinates_map(2).height/375 + face_coordinates_map(2).top + information_codes_offset_left_2()
+ ) else (
+ 499 * face_coordinates_map(2).height/523 + face_coordinates_map(2).top + information_offset_top_2()
+ )
+ width:
+ script:
+ if face_is_rotated(2) then
+ (
+ 40 * face_coordinates_map(2).width/523
+ ) else (
+ 40 * face_coordinates_map(2).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(2) then
+ (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/375
+ ) else (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/523
+ )
+ visible: { not information_disabled_2() }
+ alignment: middle left
+ font:
+ name: Relay-Medium
+ size: { 7 * face_coordinates_map(2).height/(if face_is_rotated(2) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ set language 2:
+ angle: { if face_is_rotated(2) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(2) then
+ (
+ 14 * face_coordinates_map(2).width/523 + face_coordinates_map(2).left - information_offset_top_2()
+ ) else (
+ 24 * face_coordinates_map(2).width/375 + face_coordinates_map(2).left + information_codes_offset_left_2()
+ )
+ top:
+ script:
+ if face_is_rotated(2) then
+ (
+ 24 * face_coordinates_map(2).height/375 + face_coordinates_map(2).top + information_codes_offset_left_2()
+ ) else (
+ 509 * face_coordinates_map(2).height/523 + face_coordinates_map(2).top + information_offset_top_2()
+ )
+ width:
+ script:
+ if face_is_rotated(2) then
+ (
+ code := if is_masterpiece() then set.masterpiece_set_code else set.set_code
+ if card.additional_credit_brush_4 == "none" or (not set.adaptive_language_height) or code == "" then 0
+ else 40 * face_coordinates_map(2).width/523
+ ) else (
+ code := if is_masterpiece() then set.masterpiece_set_code else set.set_code
+ if card.additional_credit_brush_4 == "none" or (not set.adaptive_language_height) or code == "" then 0
+ else 40 * face_coordinates_map(2).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(2) then
+ (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/375
+ ) else (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/523
+ )
+ alignment: middle left
+ visible: { not information_disabled_2() }
+ font:
+ name: Relay-Medium
+ size: { 7 * face_coordinates_map(2).height/(if face_is_rotated(2) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ card code 2:
+ angle: { if face_is_rotated(2) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(2) then
+ (
+ 34 * face_coordinates_map(2).width/523 + face_coordinates_map(2).left - information_offset_top_2()
+ ) else (
+ 24 * face_coordinates_map(2).width/375 + face_coordinates_map(2).left + information_codes_offset_left_2()
+ )
+ top:
+ script:
+ if face_is_rotated(2) then
+ (
+ 24 * face_coordinates_map(2).height/375 + face_coordinates_map(2).top + information_codes_offset_left_2()
+ ) else (
+ 489 * face_coordinates_map(2).height/523 + face_coordinates_map(2).top + information_offset_top_2()
+ )
+ width:
+ script:
+ if face_is_rotated(2) then
+ (
+ 120 * face_coordinates_map(2).width/523
+ ) else (
+ 120 * face_coordinates_map(2).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(2) then
+ (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/375
+ ) else (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/523
+ )
+ visible: { not information_disabled_2() }
+ alignment: middle left
+ font:
+ name: Relay-Medium
+ size: { 7 * face_coordinates_map(2).height/(if face_is_rotated(2) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ illustrator 2:
+ angle: { if face_is_rotated(2) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(2) then
+ (
+ 24 * face_coordinates_map(2).width/523 + face_coordinates_map(2).left - information_offset_top_2()
+ ) else (
+ initial_space := 25 * face_coordinates_map(2).width/375
+ set_code_space := 4 * face_coordinates_map(2).width/375
+ set_code_width := if card.set_code_2 == "" then 0 else (set_code_space + card_style.set_code_2.content_width)
+ set_language_width := if card.set_language_2 == "" then 0 else (set_code_space + card_style.set_language_2.content_width)
+ set_width := if card.additional_credit_brush_4 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ illustrator_brush_width := (if card.illustrator_brush_2 == "art old" then 31 else if contains(card.illustrator_brush_2, match: "wide") then 17 else 14) * face_coordinates_map(2).width/375
+ initial_space + set_width + illustrator_brush_width + face_coordinates_map(2).left + information_codes_offset_left_2()
+ )
+ top:
+ script:
+ if face_is_rotated(2) then
+ (
+ initial_space := 25 * face_coordinates_map(2).height/375
+ set_code_space := 4 * face_coordinates_map(2).height/375
+ set_code_width := if card.set_code_2 == "" then 0 else (set_code_space + card_style.set_code_2.content_width)
+ set_language_width := if card.set_language_2 == "" then 0 else (set_code_space + card_style.set_language_2.content_width)
+ set_width := if card.additional_credit_brush_4 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ illustrator_brush_width := (if card.illustrator_brush_2 == "art old" then 31 else if contains(card.illustrator_brush_2, match: "wide") then 17 else 14) * face_coordinates_map(2).height/375
+ initial_space + set_width + illustrator_brush_width + face_coordinates_map(2).top + information_codes_offset_left_2()
+ ) else (
+ 499 * face_coordinates_map(2).height/523 + face_coordinates_map(2).top + information_offset_top_2()
+ )
+ width:
+ script:
+ if face_is_rotated(2) then
+ (
+ max(50 * face_coordinates_map(2).width/523, card_style.illustrator_2.content_width + 10 * face_coordinates_map(2).width/523)
+ ) else (
+ max(50 * face_coordinates_map(2).width/375, card_style.illustrator_2.content_width + 10 * face_coordinates_map(2).width/375)
+ )
+ height:
+ script:
+ if face_is_rotated(2) then
+ (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/375
+ ) else (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/523
+ )
+ visible: { not information_disabled_2() }
+ alignment: middle left
+ font:
+ name: Beleren Small Caps Bold
+ size: { 7.25 * face_coordinates_map(2).height/(if face_is_rotated(2) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ z index: 900
+ illustrator brush 2:
+ angle: { if face_is_rotated(2) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(2) then
+ (
+ 22 * face_coordinates_map(2).width/523 + face_coordinates_map(2).left - information_offset_top_2()
+ ) else (
+ initial_space := 25 * face_coordinates_map(2).width/375
+ set_code_space := 4 * face_coordinates_map(2).width/375
+ set_code_width := if card.set_code_2 == "" then 0 else (set_code_space + card_style.set_code_2.content_width)
+ set_language_width := if card.set_language_2 == "" then 0 else (set_code_space + card_style.set_language_2.content_width)
+ set_width := if card.additional_credit_brush_4 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ initial_space + set_width + face_coordinates_map(2).left + information_codes_offset_left_2()
+ )
+ top:
+ script:
+ if face_is_rotated(2) then
+ (
+ initial_space := 25 * face_coordinates_map(2).height/375
+ set_code_space := 4 * face_coordinates_map(2).height/375
+ set_code_width := if card.set_code_2 == "" then 0 else (set_code_space + card_style.set_code_2.content_width)
+ set_language_width := if card.set_language_2 == "" then 0 else (set_code_space + card_style.set_language_2.content_width)
+ set_width := if card.additional_credit_brush_4 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ initial_space + set_width + face_coordinates_map(2).top + information_codes_offset_left_2()
+ ) else (
+ 501 * face_coordinates_map(2).height/523 + face_coordinates_map(2).top + information_offset_top_2()
+ )
+ width:
+ script:
+ if face_is_rotated(2) then
+ (
+ (if card.illustrator_brush_2 == "art old" then 30 else if contains(card.illustrator_brush_2, match: "wide") then 15 else 12) * face_coordinates_map(2).width/523
+ ) else (
+ (if card.illustrator_brush_2 == "art old" then 30 else if contains(card.illustrator_brush_2, match: "wide") then 15 else 12) * face_coordinates_map(2).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(2) then
+ (
+ if information_disabled_2() then 0 else 7 * face_coordinates_map(2).height/375
+ ) else (
+ if information_disabled_2() then 0 else 7 * face_coordinates_map(2).height/523
+ )
+ visible: { not information_disabled_2() }
+ popup style: in place
+ include file: /magic.mse-game/information/menu_choice_images
+ render style: image
+ image: { illustrator_brush_image(field: 2) }
+ z index: 900
+ additional credit 4:
+ angle: { if face_is_rotated(2) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(2) then
+ (
+ 14 * face_coordinates_map(2).width/523 + face_coordinates_map(2).left - information_offset_top_2()
+ ) else (
+ initial_space := 25 * face_coordinates_map(2).width/375
+ set_code_space := 4 * face_coordinates_map(2).width/375
+ set_code_width := if card.set_code_2 == "" then 0 else (set_code_space + card_style.set_code_2.content_width)
+ set_language_width := if card.set_language_2 == "" then 0 else (set_code_space + card_style.set_language_2.content_width)
+ set_width := if card.additional_credit_brush_4 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ additional_credit_brush_width := (if card.additional_credit_brush_4 == "art old" then 31 else if contains(card.additional_credit_brush_4, match: "wide") then 17 else 14) * face_coordinates_map(2).width/375
+ initial_space + set_width + additional_credit_brush_width + face_coordinates_map(2).left + information_codes_offset_left_2()
+ )
+ top:
+ script:
+ if face_is_rotated(2) then
+ (
+ initial_space := 25 * face_coordinates_map(2).height/375
+ set_code_space := 4 * face_coordinates_map(2).height/375
+ set_code_width := if card.set_code_2 == "" then 0 else (set_code_space + card_style.set_code_2.content_width)
+ set_language_width := if card.set_language_2 == "" then 0 else (set_code_space + card_style.set_language_2.content_width)
+ set_width := if card.additional_credit_brush_4 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ additional_credit_brush_width := (if card.additional_credit_brush_4 == "art old" then 31 else if contains(card.additional_credit_brush_4, match: "wide") then 17 else 14) * face_coordinates_map(2).height/375
+ initial_space + set_width + additional_credit_brush_width + face_coordinates_map(2).top + information_codes_offset_left_2()
+ ) else (
+ 509 * face_coordinates_map(2).height/523 + face_coordinates_map(2).top + information_offset_top_2()
+ )
+ width:
+ script:
+ if face_is_rotated(2) then
+ (
+ if card.additional_credit_brush_4 == "none" or (not set.adaptive_language_height) then 0 else max(50 * face_coordinates_map(2).width/523, card_style.additional_credit_4.content_width + 10 * face_coordinates_map(2).width/523)
+ ) else (
+ if card.additional_credit_brush_4 == "none" or (not set.adaptive_language_height) then 0 else max(50 * face_coordinates_map(2).width/375, card_style.additional_credit_4.content_width + 10 * face_coordinates_map(2).width/375)
+ )
+ height:
+ script:
+ if face_is_rotated(2) then
+ (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/375
+ ) else (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/523
+ )
+ visible: { not information_disabled_2() }
+ alignment: middle left
+ font:
+ name: Beleren Small Caps Bold
+ size: { 7.25 * face_coordinates_map(2).height/(if face_is_rotated(2) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ z index: 900
+ additional credit brush 4:
+ angle: { if face_is_rotated(2) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(2) then
+ (
+ 12 * face_coordinates_map(2).width/523 + face_coordinates_map(2).left - information_offset_top_2()
+ ) else (
+ initial_space := 25 * face_coordinates_map(2).width/375
+ set_code_space := 4 * face_coordinates_map(2).width/375
+ set_code_width := if card.set_code_2 == "" then 0 else set_code_space + card_style.set_code_2.content_width
+ set_language_width := if card.set_language_2 == "" then 0 else set_code_space + card_style.set_language_2.content_width
+ set_width := if card.additional_credit_brush_4 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ initial_space + set_width + face_coordinates_map(2).left + information_codes_offset_left_2()
+ )
+ top:
+ script:
+ if face_is_rotated(2) then
+ (
+ initial_space := 25 * face_coordinates_map(2).height/375
+ set_code_space := 4 * face_coordinates_map(2).height/375
+ set_code_width := if card.set_code_2 == "" then 0 else set_code_space + card_style.set_code_2.content_width
+ set_language_width := if card.set_language_2 == "" then 0 else set_code_space + card_style.set_language_2.content_width
+ set_width := if card.additional_credit_brush_4 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ initial_space + set_width + face_coordinates_map(2).top + information_codes_offset_left_2()
+ ) else (
+ 511 * face_coordinates_map(2).height/523 + face_coordinates_map(2).top + information_offset_top_2()
+ )
+ width:
+ script:
+ if face_is_rotated(2) then
+ (
+ (if card.additional_credit_brush_4 == "art old" then 30 else if contains(card.additional_credit_brush_4, match: "wide") then 15 else 12) * face_coordinates_map(2).width/523
+ ) else (
+ (if card.additional_credit_brush_4 == "art old" then 30 else if contains(card.additional_credit_brush_4, match: "wide") then 15 else 12) * face_coordinates_map(2).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(2) then
+ (
+ if information_disabled_2() then 0 else 7 * face_coordinates_map(2).height/375
+ ) else (
+ if information_disabled_2() then 0 else 7 * face_coordinates_map(2).height/523
+ )
+ visible: { not information_disabled_2() }
+ popup style: in place
+ include file: /magic.mse-game/information/menu_choice_images
+ render style: image
+ image: { additional_credit_brush_image(field: 4) }
+ z index: 900
+ copyright 2:
+ angle: { if face_is_rotated(2) then -90 else 0 }
+ right:
+ script:
+ if face_is_rotated(2) then
+ (
+ (if card.pt_2 != "" or card.loyalty_2 != "" then 21 + information_secondary_offset_pt_left_2() else if card.secondary_copyright_2 != "" then 23 else 33) * face_coordinates_map(2).width/523 + face_coordinates_map(2).left - information_offset_top_2()
+ ) else (
+ 351 * face_coordinates_map(2).width/375 + face_coordinates_map(2).left + information_copyright_offset_right_2()
+ )
+ top:
+ script:
+ if face_is_rotated(2) then
+ (
+ 351 * face_coordinates_map(2).height/375 + face_coordinates_map(2).top + information_copyright_offset_right_2()
+ ) else (
+ (if card.pt_2 != "" or card.loyalty_2 != "" then 502 + information_copyright_offset_pt_top_2() else if card.secondary_copyright_2 != "" then 500 else 490) * face_coordinates_map(2).height/523 + face_coordinates_map(2).top + information_offset_top_2()
+ )
+ width:
+ script:
+ if face_is_rotated(2) then
+ (
+ if set.automatic_copyright then 0 else 140 * face_coordinates_map(2).width/523
+ ) else (
+ if set.automatic_copyright then 0 else 140 * face_coordinates_map(2).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(2) then
+ (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/375
+ ) else (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/523
+ )
+ visible: { not information_disabled_2() }
+ alignment: middle right shrink-overflow
+ font:
+ name: MPlantin
+ size: { 6.5 * face_coordinates_map(2).height/(if face_is_rotated(2) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ auto copyright 2:
+ angle: { if face_is_rotated(2) then -90 else 0 }
+ right:
+ script:
+ if face_is_rotated(2) then
+ (
+ (if card.pt_2 != "" or card.loyalty_2 != "" then 21 + information_secondary_offset_pt_left_2() else if card.secondary_copyright_2 != "" then 23 else 33) * face_coordinates_map(2).width/523 + face_coordinates_map(2).left - information_offset_top_2()
+ ) else (
+ 351 * face_coordinates_map(2).width/375 + face_coordinates_map(2).left + information_copyright_offset_right_2()
+ )
+ top:
+ script:
+ if face_is_rotated(2) then
+ (
+ 351 * face_coordinates_map(2).height/375 + face_coordinates_map(2).top + information_copyright_offset_right_2()
+ ) else (
+ (if card.pt_2 != "" or card.loyalty_2 != "" then 502 + information_copyright_offset_pt_top_2() else if card.secondary_copyright_2 != "" then 500 else 490) * face_coordinates_map(2).height/523 + face_coordinates_map(2).top + information_offset_top_2()
+ )
+ width:
+ script:
+ if face_is_rotated(2) then
+ (
+ if set.automatic_copyright then 140 * face_coordinates_map(2).width/523 else 0
+ ) else (
+ if set.automatic_copyright then 140 * face_coordinates_map(2).width/375 else 0
+ )
+ height:
+ script:
+ if face_is_rotated(2) then
+ (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/375
+ ) else (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/523
+ )
+ visible: { not information_disabled_2() }
+ alignment: middle right shrink-overflow
+ font:
+ name: MPlantin
+ size: { 6.5 * face_coordinates_map(2).height/(if face_is_rotated(2) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ secondary copyright 2:
+ angle: { if face_is_rotated(2) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(2) then
+ (
+ 33 * face_coordinates_map(2).width/523 + face_coordinates_map(2).left - information_offset_top_2()
+ ) else (
+ needed := (255 + information_secondary_offset_pt_left_2() - if length(card.secondary_copyright_2) > 9 then 45 else if length(card.secondary_copyright_2) > 6 then 25 else if length(card.secondary_copyright_2) > 4 then 10 else 0) * face_coordinates_map(2).width/375 + face_coordinates_map(2).left
+ aligned := 351 * face_coordinates_map(2).width/375 + information_copyright_offset_right_2() - (if set.automatic_copyright then card_style.auto_copyright_2.content_width else card_style.copyright_2.content_width) + face_coordinates_map(2).left
+ max(min(needed, aligned), 211 * face_coordinates_map(2).width/375)
+ )
+ top:
+ script:
+ if face_is_rotated(2) then
+ (
+ 211 * face_coordinates_map(2).height/375 + face_coordinates_map(2).top + information_copyright_offset_right_2()
+ ) else (
+ 490 * face_coordinates_map(2).height/523 + face_coordinates_map(2).top + information_offset_top_2()
+ )
+ width:
+ script:
+ if face_is_rotated(2) then
+ (
+ 140 * face_coordinates_map(2).width/523
+ ) else (
+ needed := (255 + information_secondary_offset_pt_left_2() - if length(card.secondary_copyright_2) > 9 then 45 else if length(card.secondary_copyright_2) > 6 then 25 else if length(card.secondary_copyright_2) > 4 then 10 else 0) * face_coordinates_map(2).width/375 + face_coordinates_map(2).left
+ aligned := 351 * face_coordinates_map(2).width/375 + information_copyright_offset_right_2() - (if set.automatic_copyright then card_style.auto_copyright_2.content_width else card_style.copyright_2.content_width) + face_coordinates_map(2).left
+ left := max(min(needed, aligned), 211 * face_coordinates_map(2).width/375)
+ right := (if card.pt_2 != "" then 279 + information_secondary_offset_pt_left_2() else if card.loyalty_2 != "" then 295 + information_secondary_offset_pt_left_2() else 351) * face_coordinates_map(2).width/375 + face_coordinates_map(2).left + information_copyright_offset_right_2()
+ right - left
+ )
+ height:
+ script:
+ if face_is_rotated(2) then
+ (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/375
+ ) else (
+ if information_disabled_2() then 0 else 10 * face_coordinates_map(2).height/523
+ )
+ visible: { not information_disabled_2() }
+ alignment: { if card.pt_2 != "" or card.loyalty_2 != "" then "middle left shrink-overflow" else "middle right shrink-overflow" }
+ font:
+ name: MPlantin
+ size: { 6.5 * face_coordinates_map(2).height/(if face_is_rotated(2) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ the list icon 2:
+ angle: { if face_is_rotated(2) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(2) then
+ (
+ face_coordinates_map(2).left - information_offset_top_2()
+ ) else (
+ face_coordinates_map(2).left + information_codes_offset_left_2()
+ )
+ bottom:
+ script:
+ if face_is_rotated(2) then
+ (
+ face_coordinates_map(2).top + information_codes_offset_left_2()
+ ) else (
+ face_coordinates_map(2).height + face_coordinates_map(2).top + information_offset_top_2()
+ )
+ width:
+ script:
+ if face_is_rotated(2) then
+ (
+ 22 * face_coordinates_map(2).width/523
+ ) else (
+ 22 * face_coordinates_map(2).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(2) then
+ (
+ 33 * face_coordinates_map(2).height/375
+ ) else (
+ 33 * face_coordinates_map(2).height/523
+ )
+ visible: { not information_disabled_2() }
+ popup style: in place
+ include file: /magic.mse-game/information/menu_choice_images_the_list
+ render style: image
+ image: { the_list_icon_image(face: 2, field: 2) }
+ z index: 900
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/information/card_fields_tfc b/data/magic-modules.mse-include/information/card_fields_tfc
new file mode 100644
index 000000000..e68996742
--- /dev/null
+++ b/data/magic-modules.mse-include/information/card_fields_tfc
@@ -0,0 +1,510 @@
+include file: /magic-modules.mse-include/information/card_fields_dfc
+card style:
+ set code 3:
+ angle: { if face_is_rotated(3) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(3) then
+ (
+ 24 * face_coordinates_map(3).width/523 + face_coordinates_map(3).left - information_offset_top_3()
+ ) else (
+ 24 * face_coordinates_map(3).width/375 + face_coordinates_map(3).left + information_codes_offset_left_3()
+ )
+ top:
+ script:
+ if face_is_rotated(3) then
+ (
+ 24 * face_coordinates_map(3).height/375 + face_coordinates_map(3).top + information_codes_offset_left_3()
+ ) else (
+ 499 * face_coordinates_map(3).height/523 + face_coordinates_map(3).top + information_offset_top_3()
+ )
+ width:
+ script:
+ if face_is_rotated(3) then
+ (
+ 40 * face_coordinates_map(3).width/523
+ ) else (
+ 40 * face_coordinates_map(3).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(3) then
+ (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/375
+ ) else (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/523
+ )
+ visible: { not information_disabled_3() }
+ alignment: middle left
+ font:
+ name: Relay-Medium
+ size: { 7 * face_coordinates_map(3).height/(if face_is_rotated(3) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ set language 3:
+ angle: { if face_is_rotated(3) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(3) then
+ (
+ 14 * face_coordinates_map(3).width/523 + face_coordinates_map(3).left - information_offset_top_3()
+ ) else (
+ 24 * face_coordinates_map(3).width/375 + face_coordinates_map(3).left + information_codes_offset_left_3()
+ )
+ top:
+ script:
+ if face_is_rotated(3) then
+ (
+ 24 * face_coordinates_map(3).height/375 + face_coordinates_map(3).top + information_codes_offset_left_3()
+ ) else (
+ 509 * face_coordinates_map(3).height/523 + face_coordinates_map(3).top + information_offset_top_3()
+ )
+ width:
+ script:
+ if face_is_rotated(3) then
+ (
+ code := if is_masterpiece() then set.masterpiece_set_code else set.set_code
+ if card.additional_credit_brush_5 == "none" or (not set.adaptive_language_height) or code == "" then 0
+ else 40 * face_coordinates_map(3).width/523
+ ) else (
+ code := if is_masterpiece() then set.masterpiece_set_code else set.set_code
+ if card.additional_credit_brush_5 == "none" or (not set.adaptive_language_height) or code == "" then 0
+ else 40 * face_coordinates_map(3).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(3) then
+ (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/375
+ ) else (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/523
+ )
+ visible: { not information_disabled_3() }
+ alignment: middle left
+ font:
+ name: Relay-Medium
+ size: { 7 * face_coordinates_map(3).height/(if face_is_rotated(3) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ card code 3:
+ angle: { if face_is_rotated(3) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(3) then
+ (
+ 34 * face_coordinates_map(3).width/523 + face_coordinates_map(3).left - information_offset_top_3()
+ ) else (
+ 24 * face_coordinates_map(3).width/375 + face_coordinates_map(3).left + information_codes_offset_left_3()
+ )
+ top:
+ script:
+ if face_is_rotated(3) then
+ (
+ 24 * face_coordinates_map(3).height/375 + face_coordinates_map(3).top + information_codes_offset_left_3()
+ ) else (
+ 489 * face_coordinates_map(3).height/523 + face_coordinates_map(3).top + information_offset_top_3()
+ )
+ width:
+ script:
+ if face_is_rotated(3) then
+ (
+ 120 * face_coordinates_map(3).width/523
+ ) else (
+ 120 * face_coordinates_map(3).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(3) then
+ (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/375
+ ) else (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/523
+ )
+ visible: { not information_disabled_3() }
+ alignment: middle left
+ font:
+ name: Relay-Medium
+ size: { 7 * face_coordinates_map(3).height/(if face_is_rotated(3) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ illustrator 3:
+ angle: { if face_is_rotated(3) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(3) then
+ (
+ 24 * face_coordinates_map(3).width/523 + face_coordinates_map(3).left - information_offset_top_3()
+ ) else (
+ initial_space := 25 * face_coordinates_map(3).width/375
+ set_code_space := 4 * face_coordinates_map(3).width/375
+ set_code_width := if card.set_code_3 == "" then 0 else (set_code_space + card_style.set_code_3.content_width)
+ set_language_width := if card.set_language_3 == "" then 0 else (set_code_space + card_style.set_language_3.content_width)
+ set_width := if card.additional_credit_brush_5 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ illustrator_brush_width := (if card.illustrator_brush_3 == "art old" then 31 else if contains(card.illustrator_brush_3, match: "wide") then 17 else 14) * face_coordinates_map(3).width/375
+ initial_space + set_width + illustrator_brush_width + face_coordinates_map(3).left + information_codes_offset_left_3()
+ )
+ top:
+ script:
+ if face_is_rotated(3) then
+ (
+ initial_space := 25 * face_coordinates_map(3).height/375
+ set_code_space := 4 * face_coordinates_map(3).height/375
+ set_code_width := if card.set_code_3 == "" then 0 else (set_code_space + card_style.set_code_3.content_width)
+ set_language_width := if card.set_language_3 == "" then 0 else (set_code_space + card_style.set_language_3.content_width)
+ set_width := if card.additional_credit_brush_5 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ illustrator_brush_width := (if card.illustrator_brush_3 == "art old" then 31 else if contains(card.illustrator_brush_3, match: "wide") then 17 else 14) * face_coordinates_map(3).height/375
+ initial_space + set_width + illustrator_brush_width + face_coordinates_map(3).top + information_codes_offset_left_3()
+ ) else (
+ 499 * face_coordinates_map(3).height/523 + face_coordinates_map(3).top + information_offset_top_3()
+ )
+ width:
+ script:
+ if face_is_rotated(3) then
+ (
+ max(50 * face_coordinates_map(3).width/523, card_style.illustrator_3.content_width + 10 * face_coordinates_map(3).width/523)
+ ) else (
+ max(50 * face_coordinates_map(3).width/375, card_style.illustrator_3.content_width + 10 * face_coordinates_map(3).width/375)
+ )
+ height:
+ script:
+ if face_is_rotated(3) then
+ (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/375
+ ) else (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/523
+ )
+ visible: { not information_disabled_3() }
+ alignment: middle left
+ font:
+ name: Beleren Small Caps Bold
+ size: { 7.25 * face_coordinates_map(3).height/(if face_is_rotated(3) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ z index: 900
+ illustrator brush 3:
+ angle: { if face_is_rotated(3) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(3) then
+ (
+ 22 * face_coordinates_map(3).width/523 + face_coordinates_map(3).left - information_offset_top_3()
+ ) else (
+ initial_space := 25 * face_coordinates_map(3).width/375
+ set_code_space := 4 * face_coordinates_map(3).width/375
+ set_code_width := if card.set_code_3 == "" then 0 else (set_code_space + card_style.set_code_3.content_width)
+ set_language_width := if card.set_language_3 == "" then 0 else (set_code_space + card_style.set_language_3.content_width)
+ set_width := if card.additional_credit_brush_5 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ initial_space + set_width + face_coordinates_map(3).left + information_codes_offset_left_3()
+ )
+ top:
+ script:
+ if face_is_rotated(3) then
+ (
+ initial_space := 25 * face_coordinates_map(3).height/375
+ set_code_space := 4 * face_coordinates_map(3).height/375
+ set_code_width := if card.set_code_3 == "" then 0 else (set_code_space + card_style.set_code_3.content_width)
+ set_language_width := if card.set_language_3 == "" then 0 else (set_code_space + card_style.set_language_3.content_width)
+ set_width := if card.additional_credit_brush_5 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ initial_space + set_width + face_coordinates_map(3).top + information_codes_offset_left_3()
+ ) else (
+ 501 * face_coordinates_map(3).height/523 + face_coordinates_map(3).top + information_offset_top_3()
+ )
+ width:
+ script:
+ if face_is_rotated(3) then
+ (
+ (if card.illustrator_brush_3 == "art old" then 30 else if contains(card.illustrator_brush_3, match: "wide") then 15 else 12) * face_coordinates_map(3).width/523
+ ) else (
+ (if card.illustrator_brush_3 == "art old" then 30 else if contains(card.illustrator_brush_3, match: "wide") then 15 else 12) * face_coordinates_map(3).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(3) then
+ (
+ if information_disabled_3() then 0 else 7 * face_coordinates_map(3).height/375
+ ) else (
+ if information_disabled_3() then 0 else 7 * face_coordinates_map(3).height/523
+ )
+ visible: { not information_disabled_3() }
+ popup style: in place
+ include file: /magic.mse-game/information/menu_choice_images
+ render style: image
+ image: { illustrator_brush_image(field: 3) }
+ z index: 900
+ additional credit 5:
+ angle: { if face_is_rotated(3) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(3) then
+ (
+ 14 * face_coordinates_map(3).width/523 + face_coordinates_map(3).left - information_offset_top_3()
+ ) else (
+ initial_space := 25 * face_coordinates_map(3).width/375
+ set_code_space := 4 * face_coordinates_map(3).width/375
+ set_code_width := if card.set_code_3 == "" then 0 else (set_code_space + card_style.set_code_3.content_width)
+ set_language_width := if card.set_language_3 == "" then 0 else (set_code_space + card_style.set_language_3.content_width)
+ set_width := if card.additional_credit_brush_5 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ additional_credit_brush_width := (if card.additional_credit_brush_5 == "art old" then 31 else if contains(card.additional_credit_brush_5, match: "wide") then 17 else 14) * face_coordinates_map(3).width/375
+ initial_space + set_width + additional_credit_brush_width + face_coordinates_map(3).left + information_codes_offset_left_3()
+ )
+ top:
+ script:
+ if face_is_rotated(3) then
+ (
+ initial_space := 25 * face_coordinates_map(3).height/375
+ set_code_space := 4 * face_coordinates_map(3).height/375
+ set_code_width := if card.set_code_3 == "" then 0 else (set_code_space + card_style.set_code_3.content_width)
+ set_language_width := if card.set_language_3 == "" then 0 else (set_code_space + card_style.set_language_3.content_width)
+ set_width := if card.additional_credit_brush_5 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ additional_credit_brush_width := (if card.additional_credit_brush_5 == "art old" then 31 else if contains(card.additional_credit_brush_5, match: "wide") then 17 else 14) * face_coordinates_map(3).height/375
+ initial_space + set_width + additional_credit_brush_width + face_coordinates_map(3).top + information_codes_offset_left_3()
+ ) else (
+ 509 * face_coordinates_map(3).height/523 + face_coordinates_map(3).top + information_offset_top_3()
+ )
+ width:
+ script:
+ if face_is_rotated(3) then
+ (
+ if card.additional_credit_brush_5 == "none" or (not set.adaptive_language_height) then 0 else max(50 * face_coordinates_map(3).width/523, card_style.additional_credit_4.content_width + 10 * face_coordinates_map(3).width/523)
+ ) else (
+ if card.additional_credit_brush_5 == "none" or (not set.adaptive_language_height) then 0 else max(50 * face_coordinates_map(3).width/375, card_style.additional_credit_4.content_width + 10 * face_coordinates_map(3).width/375)
+ )
+ height:
+ script:
+ if face_is_rotated(3) then
+ (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/375
+ ) else (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/523
+ )
+ visible: { not information_disabled_3() }
+ alignment: middle left
+ font:
+ name: Beleren Small Caps Bold
+ size: { 7.25 * face_coordinates_map(3).height/(if face_is_rotated(3) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ z index: 900
+ additional credit brush 5:
+ angle: { if face_is_rotated(3) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(3) then
+ (
+ 12 * face_coordinates_map(3).width/523 + face_coordinates_map(3).left - information_offset_top_3()
+ ) else (
+ initial_space := 25 * face_coordinates_map(3).width/375
+ set_code_space := 4 * face_coordinates_map(3).width/375
+ set_code_width := if card.set_code_3 == "" then 0 else set_code_space + card_style.set_code_3.content_width
+ set_language_width := if card.set_language_3 == "" then 0 else set_code_space + card_style.set_language_3.content_width
+ set_width := if card.additional_credit_brush_5 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ initial_space + set_width + face_coordinates_map(3).left + information_codes_offset_left_3()
+ )
+ top:
+ script:
+ if face_is_rotated(3) then
+ (
+ initial_space := 25 * face_coordinates_map(3).height/375
+ set_code_space := 4 * face_coordinates_map(3).height/375
+ set_code_width := if card.set_code_3 == "" then 0 else set_code_space + card_style.set_code_3.content_width
+ set_language_width := if card.set_language_3 == "" then 0 else set_code_space + card_style.set_language_3.content_width
+ set_width := if card.additional_credit_brush_5 == "none" or (not set.adaptive_language_height) then set_code_width else max(set_code_width, set_language_width)
+ initial_space + set_width + face_coordinates_map(3).top + information_codes_offset_left_3()
+ ) else (
+ 511 * face_coordinates_map(3).height/523 + face_coordinates_map(3).top + information_offset_top_3()
+ )
+ width:
+ script:
+ if face_is_rotated(3) then
+ (
+ (if card.additional_credit_brush_5 == "art old" then 30 else if contains(card.additional_credit_brush_5, match: "wide") then 15 else 12) * face_coordinates_map(3).width/523
+ ) else (
+ (if card.additional_credit_brush_5 == "art old" then 30 else if contains(card.additional_credit_brush_5, match: "wide") then 15 else 12) * face_coordinates_map(3).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(3) then
+ (
+ if information_disabled_3() then 0 else 7 * face_coordinates_map(3).height/375
+ ) else (
+ if information_disabled_3() then 0 else 7 * face_coordinates_map(3).height/523
+ )
+ visible: { not information_disabled_3() }
+ popup style: in place
+ include file: /magic.mse-game/information/menu_choice_images
+ render style: image
+ image: { additional_credit_brush_image(field: 5) }
+ z index: 900
+ copyright 3:
+ angle: { if face_is_rotated(3) then -90 else 0 }
+ right:
+ script:
+ if face_is_rotated(3) then
+ (
+ (if card.pt_3 != "" or card.loyalty_3 != "" then 21 + information_secondary_offset_pt_left_3() else if card.secondary_copyright_3 != "" then 23 else 33) * face_coordinates_map(3).width/523 + face_coordinates_map(3).left - information_offset_top_3()
+ ) else (
+ 351 * face_coordinates_map(3).width/375 + face_coordinates_map(3).left + information_copyright_offset_right_3()
+ )
+ top:
+ script:
+ if face_is_rotated(3) then
+ (
+ 351 * face_coordinates_map(3).height/375 + face_coordinates_map(3).top + information_copyright_offset_right_3()
+ ) else (
+ (if card.pt_3 != "" or card.loyalty_3 != "" then 502 + information_copyright_offset_pt_top_3() else if card.secondary_copyright_3 != "" then 500 else 490) * face_coordinates_map(3).height/523 + face_coordinates_map(3).top + information_offset_top_3()
+ )
+ width:
+ script:
+ if face_is_rotated(3) then
+ (
+ if set.automatic_copyright then 0 else 140 * face_coordinates_map(3).width/523
+ ) else (
+ if set.automatic_copyright then 0 else 140 * face_coordinates_map(3).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(3) then
+ (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/375
+ ) else (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/523
+ )
+ visible: { not information_disabled_3() }
+ alignment: middle right shrink-overflow
+ font:
+ name: MPlantin
+ size: { 6.5 * face_coordinates_map(3).height/(if face_is_rotated(3) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ auto copyright 3:
+ angle: { if face_is_rotated(3) then -90 else 0 }
+ right:
+ script:
+ if face_is_rotated(3) then
+ (
+ (if card.pt_3 != "" or card.loyalty_3 != "" then 21 + information_secondary_offset_pt_left_3() else if card.secondary_copyright_3 != "" then 23 else 33) * face_coordinates_map(3).width/523 + face_coordinates_map(3).left - information_offset_top_3()
+ ) else (
+ 351 * face_coordinates_map(3).width/375 + face_coordinates_map(3).left + information_copyright_offset_right_3()
+ )
+ top:
+ script:
+ if face_is_rotated(3) then
+ (
+ 351 * face_coordinates_map(3).height/375 + face_coordinates_map(3).top + information_copyright_offset_right_3()
+ ) else (
+ (if card.pt_3 != "" or card.loyalty_3 != "" then 502 + information_copyright_offset_pt_top_3() else if card.secondary_copyright_3 != "" then 500 else 490) * face_coordinates_map(3).height/523 + face_coordinates_map(3).top + information_offset_top_3()
+ )
+ width:
+ script:
+ if face_is_rotated(3) then
+ (
+ if set.automatic_copyright then 140 * face_coordinates_map(3).width/523 else 0
+ ) else (
+ if set.automatic_copyright then 140 * face_coordinates_map(3).width/375 else 0
+ )
+ height:
+ script:
+ if face_is_rotated(3) then
+ (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/375
+ ) else (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/523
+ )
+ visible: { not information_disabled_3() }
+ alignment: middle right shrink-overflow
+ font:
+ name: MPlantin
+ size: { 6.5 * face_coordinates_map(3).height/(if face_is_rotated(3) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ secondary copyright 3:
+ angle: { if face_is_rotated(3) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(3) then
+ (
+ 33 * face_coordinates_map(3).width/523 + face_coordinates_map(3).left - information_offset_top_3()
+ ) else (
+ needed := (255 + information_secondary_offset_pt_left_3() - if length(card.secondary_copyright_3) > 9 then 45 else if length(card.secondary_copyright_3) > 6 then 25 else if length(card.secondary_copyright_3) > 4 then 10 else 0) * face_coordinates_map(3).width/375 + face_coordinates_map(3).left
+ aligned := 351 * face_coordinates_map(3).width/375 + information_copyright_offset_right_3() - (if set.automatic_copyright then card_style.auto_copyright_3.content_width else card_style.copyright_3.content_width) + face_coordinates_map(3).left
+ max(min(needed, aligned), 211 * face_coordinates_map(3).width/375)
+ )
+ top:
+ script:
+ if face_is_rotated(3) then
+ (
+ 211 * face_coordinates_map(3).height/375 + face_coordinates_map(3).top + information_copyright_offset_right_3()
+ ) else (
+ 490 * face_coordinates_map(3).height/523 + face_coordinates_map(3).top + information_offset_top_3()
+ )
+ width:
+ script:
+ if face_is_rotated(3) then
+ (
+ 140 * face_coordinates_map(3).width/523
+ ) else (
+ needed := (255 + information_secondary_offset_pt_left_3() - if length(card.secondary_copyright_3) > 9 then 45 else if length(card.secondary_copyright_3) > 6 then 25 else if length(card.secondary_copyright_3) > 4 then 10 else 0) * face_coordinates_map(3).width/375 + face_coordinates_map(3).left
+ aligned := 351 * face_coordinates_map(3).width/375 + information_copyright_offset_right_3() - (if set.automatic_copyright then card_style.auto_copyright_3.content_width else card_style.copyright_3.content_width) + face_coordinates_map(3).left
+ left := max(min(needed, aligned), 211 * face_coordinates_map(3).width/375)
+ right := (if card.pt_3 != "" then 279 + information_secondary_offset_pt_left_3() else if card.loyalty_3 != "" then 295 + information_secondary_offset_pt_left_3() else 351) * face_coordinates_map(3).width/375 + face_coordinates_map(3).left + information_copyright_offset_right_3()
+ right - left
+ )
+ height:
+ script:
+ if face_is_rotated(3) then
+ (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/375
+ ) else (
+ if information_disabled_3() then 0 else 10 * face_coordinates_map(3).height/523
+ )
+ visible: { not information_disabled_3() }
+ alignment: { if card.pt_3 != "" or card.loyalty_3 != "" then "middle left shrink-overflow" else "middle right shrink-overflow" }
+ font:
+ name: MPlantin
+ size: { 6.5 * face_coordinates_map(3).height/(if face_is_rotated(3) then 375 else 523) }
+ color: { styling.copyright_text_color or else set.copyright_text_color }
+ weight: bold
+ z index: 900
+ the list icon 3:
+ angle: { if face_is_rotated(3) then -90 else 0 }
+ left:
+ script:
+ if face_is_rotated(3) then
+ (
+ face_coordinates_map(3).left - information_offset_top_3()
+ ) else (
+ face_coordinates_map(3).left + information_codes_offset_left_3()
+ )
+ bottom:
+ script:
+ if face_is_rotated(3) then
+ (
+ face_coordinates_map(3).top + information_codes_offset_left_3()
+ ) else (
+ face_coordinates_map(3).height + face_coordinates_map(3).top + information_offset_top_3()
+ )
+ width:
+ script:
+ if face_is_rotated(3) then
+ (
+ 22 * face_coordinates_map(3).width/523
+ ) else (
+ 22 * face_coordinates_map(3).width/375
+ )
+ height:
+ script:
+ if face_is_rotated(3) then
+ (
+ 33 * face_coordinates_map(3).height/375
+ ) else (
+ 33 * face_coordinates_map(3).height/523
+ )
+ visible: { not information_disabled_3() }
+ popup style: in place
+ include file: /magic.mse-game/information/menu_choice_images_the_list
+ render style: image
+ image: { the_list_icon_image(face: 3, field: 3) }
+ z index: 900
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/information/choices b/data/magic-modules.mse-include/information/choices
new file mode 100644
index 000000000..755426865
--- /dev/null
+++ b/data/magic-modules.mse-include/information/choices
@@ -0,0 +1,11 @@
+choice: art
+choice: art old
+choice: flavor
+choice: mechanics
+choice: template
+choice:
+ name: wide
+ choice: art
+ choice: flavor
+ choice: mechanics
+ choice: template
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/information/choices_the_list b/data/magic-modules.mse-include/information/choices_the_list
new file mode 100644
index 000000000..836f8aba3
--- /dev/null
+++ b/data/magic-modules.mse-include/information/choices_the_list
@@ -0,0 +1,2 @@
+choice: the list
+choice: none
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/information/flavor.png b/data/magic-modules.mse-include/information/flavor.png
new file mode 100644
index 000000000..629bf7168
Binary files /dev/null and b/data/magic-modules.mse-include/information/flavor.png differ
diff --git a/data/magic-modules.mse-include/information/mechanics.png b/data/magic-modules.mse-include/information/mechanics.png
new file mode 100644
index 000000000..993f2865a
Binary files /dev/null and b/data/magic-modules.mse-include/information/mechanics.png differ
diff --git a/data/magic-modules.mse-include/information/none.png b/data/magic-modules.mse-include/information/none.png
new file mode 100644
index 000000000..52cfbc444
Binary files /dev/null and b/data/magic-modules.mse-include/information/none.png differ
diff --git a/data/magic-modules.mse-include/information/readme.txt b/data/magic-modules.mse-include/information/readme.txt
new file mode 100644
index 000000000..a9c5f72b6
--- /dev/null
+++ b/data/magic-modules.mse-include/information/readme.txt
@@ -0,0 +1,91 @@
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this, unindented, before the card style section:
+include file: /magic-modules.mse-include/information/card_fields
+#### For DFC or TFC templates, instead override the faces_coordinates function, and use:
+include file: /magic-modules.mse-include/information/card_fields_dfc
+include file: /magic-modules.mse-include/information/card_fields_tfc
+
+#### Default Field Placement (@375x523, w=1 h=1)
+set code:
+ left: 24w
+ top: 499h
+ width: 40w
+ height: 10h
+set language:
+ left: 24w
+ top: 509h
+ width: 40w
+ height: 10h
+card code:
+ left: 24w
+ top: 489h
+ width: 120w
+ height: 10h
+parition select:
+ left: 24w
+ top: 489h
+ width: 35w
+ height: 10h
+illustrator:
+ left: 25w + set_code_language_width
+ top: 499h
+ width: 10w - 50w
+ height: 10h
+copyright:
+ right: 351w
+ top: 490h, 500w w/secondary
+ width: 140w
+ height: 10h
+secondary copyright:
+ left: 211w
+ top: 490h
+ width: variable
+ height: 10h
+the list icon:
+ left: 0w
+ bottom: 523h
+ width: 22w
+ height: 33h
+#### Customization
+#### Optionally, you can adjust global alignment by redefining the following functions after the scripts include statement
+#### which must return an int corresponding to the number of pixels you want to shift things by
+#### positive numbers move right and down, negative move left and up
+
+#### To shift everything up/down:
+information_offset_top_1 := { 0 }
+
+#### To shift the card number, set code and artist credit left/right:
+information_codes_offset_left_1 := { 0 }
+
+#### To shift the actual copyright lines left/right:
+information_copyright_offset_right_1 := { 0 }
+
+#### To shift the copyright up/down on creatures/walkers, if the pt/loyalty box is very short/tall:
+information_copyright_offset_pt_top_1 := { 0 }
+
+#### To shift the secondary copyright left/right on creatures/walkers, if the pt/loyalty box is very narrow/wide:
+information_secondary_offset_pt_left_1 := { 0 }
+
+#### For the other faces on DFC or TFC templates, use:
+information_offset_top_2 := { 0 }
+information_codes_offset_left_2 := { 0 }
+information_copyright_offset_right_2 := { 0 }
+information_copyright_offset_pt_top_2 := { 0 }
+information_secondary_offset_pt_left_2 := { 0 }
+information_offset_top_3 := { 0 }
+information_codes_offset_left_3 := { 0 }
+information_copyright_offset_right_3 := { 0 }
+information_copyright_offset_pt_top_3 := { 0 }
+information_secondary_offset_pt_left_3 := { 0 }
+
+#### These work the same on 90° rotated cards, but you need to imagine the card is upright
+
+#### You can disable the copyright on some of the faces,
+#### by adding the following functions in the init script:
+information_disabled_1 := { true }
+information_disabled_2 := { true }
+information_disabled_3 := { true }
diff --git a/data/magic-modules.mse-include/information/template.png b/data/magic-modules.mse-include/information/template.png
new file mode 100644
index 000000000..41bfac4c2
Binary files /dev/null and b/data/magic-modules.mse-include/information/template.png differ
diff --git a/data/magic-modules.mse-include/information/the list 750.png b/data/magic-modules.mse-include/information/the list 750.png
new file mode 100644
index 000000000..8bd0f2f22
Binary files /dev/null and b/data/magic-modules.mse-include/information/the list 750.png differ
diff --git a/data/magic-modules.mse-include/information/the list.png b/data/magic-modules.mse-include/information/the list.png
new file mode 100644
index 000000000..e14cf7d18
Binary files /dev/null and b/data/magic-modules.mse-include/information/the list.png differ
diff --git a/data/magic-modules.mse-include/information/wide art.png b/data/magic-modules.mse-include/information/wide art.png
new file mode 100644
index 000000000..83540e904
Binary files /dev/null and b/data/magic-modules.mse-include/information/wide art.png differ
diff --git a/data/magic-modules.mse-include/information/wide flavor.png b/data/magic-modules.mse-include/information/wide flavor.png
new file mode 100644
index 000000000..176f4a9eb
Binary files /dev/null and b/data/magic-modules.mse-include/information/wide flavor.png differ
diff --git a/data/magic-modules.mse-include/information/wide mechanics.png b/data/magic-modules.mse-include/information/wide mechanics.png
new file mode 100644
index 000000000..8f4cd6605
Binary files /dev/null and b/data/magic-modules.mse-include/information/wide mechanics.png differ
diff --git a/data/magic-modules.mse-include/information/wide template.png b/data/magic-modules.mse-include/information/wide template.png
new file mode 100644
index 000000000..a6c6c8d02
Binary files /dev/null and b/data/magic-modules.mse-include/information/wide template.png differ
diff --git a/data/magic-modules.mse-include/loyalty/card_fields b/data/magic-modules.mse-include/loyalty/card_fields
new file mode 100644
index 000000000..72491bef8
--- /dev/null
+++ b/data/magic-modules.mse-include/loyalty/card_fields
@@ -0,0 +1,546 @@
+extra card field:
+ type: text
+ name: colon 1
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: text
+ name: colon 2
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: text
+ name: colon 3
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: text
+ name: colon 4
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: text
+ name: colon 5
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: text
+ name: colon 6
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: text
+ name: colon 7
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: text
+ name: colon 8
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: choice
+ name: textbox stripe 1
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe 1
+extra card field:
+ type: choice
+ name: textbox stripe 2
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe 2
+extra card field:
+ type: choice
+ name: textbox stripe 3
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe 3
+extra card field:
+ type: choice
+ name: textbox stripe 4
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe 4
+extra card field:
+ type: choice
+ name: textbox stripe separator 1
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe separator 1
+extra card field:
+ type: choice
+ name: textbox stripe separator 2
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe separator 2
+extra card field:
+ type: choice
+ name: textbox stripe separator 3
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe separator 3
+extra card field:
+ type: choice
+ name: textbox stripe separator 4
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe separator 4
+extra card field:
+ type: choice
+ name: textbox stripe separator 5
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe separator 5
+extra card field:
+ type: choice
+ name: textbox stripe separator 6
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe separator 6
+extra card field:
+ type: choice
+ name: textbox stripe separator 7
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe separator 7
+extra card field:
+ type: choice
+ name: textbox background
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox background
+extra card style:
+ colon 1:
+ left: { instance := 1; loyalty_colon_left() }
+ top: { instance := 1; loyalty_colon_top(1) }
+ width: { instance := 1; loyalty_colon_width() }
+ height: { instance := 1; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 1; card.loyalty_cost_1 != "" and loyalty_abilities_count() >= 1 }
+ font:
+ name: Beleren Bold
+ size: { instance := 1; loyalty_colon_font_size() }
+ color: { body_font_color() }
+ alignment: center middle
+ colon 2:
+ left: { instance := 1; loyalty_colon_left() }
+ top: { instance := 1; loyalty_colon_top(2) }
+ width: { instance := 1; loyalty_colon_width() }
+ height: { instance := 1; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 1; card.loyalty_cost_2 != "" and loyalty_abilities_count() >= 2 }
+ font:
+ name: Beleren Bold
+ size: { instance := 1; loyalty_colon_font_size() }
+ color: { body_font_color() }
+ alignment: center middle
+ colon 3:
+ left: { instance := 1; loyalty_colon_left() }
+ top: { instance := 1; loyalty_colon_top(3) }
+ width: { instance := 1; loyalty_colon_width() }
+ height: { instance := 1; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 1; card.loyalty_cost_3 != "" and loyalty_abilities_count() >= 3 }
+ font:
+ name: Beleren Bold
+ size: { instance := 1; loyalty_colon_font_size() }
+ color: { body_font_color() }
+ alignment: center middle
+ colon 4:
+ left: { instance := 1; loyalty_colon_left() }
+ top: { instance := 1; loyalty_colon_top(4) }
+ width: { instance := 1; loyalty_colon_width() }
+ height: { instance := 1; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 1; card.loyalty_cost_4 != "" and loyalty_abilities_count() >= 4 }
+ font:
+ name: Beleren Bold
+ size: { instance := 1; loyalty_colon_font_size() }
+ color: { body_font_color() }
+ alignment: center middle
+ colon 5:
+ left: { instance := 1; loyalty_colon_left() }
+ top: { instance := 1; loyalty_colon_top(5) }
+ width: { instance := 1; loyalty_colon_width() }
+ height: { instance := 1; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 1; card.loyalty_cost_5 != "" and loyalty_abilities_count() >= 5 }
+ font:
+ name: Beleren Bold
+ size: { instance := 1; loyalty_colon_font_size() }
+ color: { body_font_color() }
+ alignment: center middle
+ colon 6:
+ left: { instance := 1; loyalty_colon_left() }
+ top: { instance := 1; loyalty_colon_top(6) }
+ width: { instance := 1; loyalty_colon_width() }
+ height: { instance := 1; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 1; card.loyalty_cost_6 != "" and loyalty_abilities_count() >= 6 }
+ font:
+ name: Beleren Bold
+ size: { instance := 1; loyalty_colon_font_size() }
+ color: { body_font_color() }
+ alignment: center middle
+ colon 7:
+ left: { instance := 1; loyalty_colon_left() }
+ top: { instance := 1; loyalty_colon_top(7) }
+ width: { instance := 1; loyalty_colon_width() }
+ height: { instance := 1; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 1; card.loyalty_cost_7 != "" and loyalty_abilities_count() >= 7 }
+ font:
+ name: Beleren Bold
+ size: { instance := 1; loyalty_colon_font_size() }
+ color: { body_font_color() }
+ alignment: center middle
+ colon 8:
+ left: { instance := 1; loyalty_colon_left() }
+ top: { instance := 1; loyalty_colon_top(8) }
+ width: { instance := 1; loyalty_colon_width() }
+ height: { instance := 1; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 1; card.loyalty_cost_8 != "" and loyalty_abilities_count() >= 8 }
+ font:
+ name: Beleren Bold
+ size: { instance := 1; loyalty_colon_font_size() }
+ color: { body_font_color() }
+ alignment: center middle
+ textbox stripe 1:
+ left: { instance := 1; a_left() }
+ width: { instance := 1; a_width() }
+ top: { instance := 1; a_top() }
+ bottom: { instance := 1; round_near(loyalty_stripe_separator_top(1)) + 0.5 }
+ z index: 710
+ visible: { instance := 1; loyalty_abilities_count() >= 2 }
+ render style: image
+ image: { instance := 1; loyalty_stripe_image() }
+ mask: { instance := 1; loyalty_stripe_mask(1) }
+ textbox stripe 2:
+ left: { instance := 1; a_left() }
+ width: { instance := 1; a_width() }
+ top: { instance := 1; loyalty_stripe_separator_top(2) + loyalty_stripe_separator_height() }
+ bottom: { instance := 1; round_near(if loyalty_abilities_count() >= 4 then loyalty_stripe_separator_top(3) else a_bottom()) + 0.5 }
+ z index: 710
+ visible: { instance := 1; loyalty_abilities_count() >= 3 }
+ render style: image
+ image: { instance := 1; loyalty_stripe_image() }
+ mask: { instance := 1; loyalty_stripe_mask(2) }
+ textbox stripe 3:
+ left: { instance := 1; a_left() }
+ width: { instance := 1; a_width() }
+ top: { instance := 1; loyalty_stripe_separator_top(4) + loyalty_stripe_separator_height() }
+ bottom: { instance := 1; round_near(if loyalty_abilities_count() >= 6 then loyalty_stripe_separator_top(5) else a_bottom()) + 0.5 }
+ z index: 710
+ visible: { instance := 1; loyalty_abilities_count() >= 5 }
+ render style: image
+ image: { instance := 1; loyalty_stripe_image() }
+ mask: { instance := 1; loyalty_stripe_mask(3) }
+ textbox stripe 4:
+ left: { instance := 1; a_left() }
+ width: { instance := 1; a_width() }
+ top: { instance := 1; loyalty_stripe_separator_top(6) + loyalty_stripe_separator_height() }
+ bottom: { instance := 1; round_near(if loyalty_abilities_count() >= 8 then loyalty_stripe_separator_top(7) else a_bottom()) + 0.5 }
+ z index: 710
+ visible: { instance := 1; loyalty_abilities_count() >= 7 }
+ render style: image
+ image: { instance := 1; loyalty_stripe_image() }
+ mask: { instance := 1; loyalty_stripe_mask(4) }
+ textbox stripe separator 1:
+ left: { instance := 1; a_left() }
+ width: { instance := 1; a_width() }
+ top: { instance := 1; round_near(loyalty_stripe_separator_top(1)) }
+ bottom: { instance := 1; round_near(loyalty_stripe_separator_top(1) + loyalty_stripe_separator_height()) + 0.5 }
+ z index: 710
+ visible: { instance := 1; loyalty_abilities_count() >= 2 }
+ render style: image
+ image: { instance := 1; loyalty_stripe_separator_image(1) }
+ mask: { instance := 1; loyalty_stripe_separator_mask(1) }
+ textbox stripe separator 2:
+ left: { instance := 1; a_left() }
+ width: { instance := 1; a_width() }
+ top: { instance := 1; round_near(loyalty_stripe_separator_top(2)) }
+ bottom: { instance := 1; round_near(loyalty_stripe_separator_top(2) + loyalty_stripe_separator_height()) + 0.5 }
+ z index: 710
+ visible: { instance := 1; loyalty_abilities_count() >= 3 }
+ render style: image
+ image: { instance := 1; loyalty_stripe_separator_image(2) }
+ mask: { instance := 1; loyalty_stripe_separator_mask(2) }
+ textbox stripe separator 3:
+ left: { instance := 1; a_left() }
+ width: { instance := 1; a_width() }
+ top: { instance := 1; round_near(loyalty_stripe_separator_top(3)) }
+ bottom: { instance := 1; round_near(loyalty_stripe_separator_top(3) + loyalty_stripe_separator_height()) + 0.5 }
+ z index: 710
+ visible: { instance := 1; loyalty_abilities_count() >= 4 }
+ render style: image
+ image: { instance := 1; loyalty_stripe_separator_image(3) }
+ mask: { instance := 1; loyalty_stripe_separator_mask(3) }
+ textbox stripe separator 4:
+ left: { instance := 1; a_left() }
+ width: { instance := 1; a_width() }
+ top: { instance := 1; round_near(loyalty_stripe_separator_top(4)) }
+ bottom: { instance := 1; round_near(loyalty_stripe_separator_top(4) + loyalty_stripe_separator_height()) + 0.5 }
+ z index: 710
+ visible: { instance := 1; loyalty_abilities_count() >= 5 }
+ render style: image
+ image: { instance := 1; loyalty_stripe_separator_image(4) }
+ mask: { instance := 1; loyalty_stripe_separator_mask(4) }
+ textbox stripe separator 5:
+ left: { instance := 1; a_left() }
+ width: { instance := 1; a_width() }
+ top: { instance := 1; round_near(loyalty_stripe_separator_top(5)) }
+ bottom: { instance := 1; round_near(loyalty_stripe_separator_top(5) + loyalty_stripe_separator_height()) + 0.5 }
+ z index: 710
+ visible: { instance := 1; loyalty_abilities_count() >= 6 }
+ render style: image
+ image: { instance := 1; loyalty_stripe_separator_image(5) }
+ mask: { instance := 1; loyalty_stripe_separator_mask(5) }
+ textbox stripe separator 6:
+ left: { instance := 1; a_left() }
+ width: { instance := 1; a_width() }
+ top: { instance := 1; round_near(loyalty_stripe_separator_top(6)) }
+ bottom: { instance := 1; round_near(loyalty_stripe_separator_top(6) + loyalty_stripe_separator_height()) + 0.5 }
+ z index: 710
+ visible: { instance := 1; loyalty_abilities_count() >= 7 }
+ render style: image
+ image: { instance := 1; loyalty_stripe_separator_image(6) }
+ mask: { instance := 1; loyalty_stripe_separator_mask(6) }
+ textbox stripe separator 7:
+ left: { instance := 1; a_left() }
+ width: { instance := 1; a_width() }
+ top: { instance := 1; round_near(loyalty_stripe_separator_top(7)) }
+ bottom: { instance := 1; round_near(loyalty_stripe_separator_top(7) + loyalty_stripe_separator_height()) + 0.5 }
+ z index: 710
+ visible: { instance := 1; loyalty_abilities_count() >= 8 }
+ render style: image
+ image: { instance := 1; loyalty_stripe_separator_image(7) }
+ mask: { instance := 1; loyalty_stripe_separator_mask(7) }
+ textbox background:
+ left: { instance := 1; a_left() }
+ width: { instance := 1; a_width() }
+ top: { instance := 1; a_top() }
+ bottom: { instance := 1; a_bottom() }
+ z index: 700
+ render style: image
+ image: { instance := 1; loyalty_textbox_background_image() }
+ mask: { instance := 1; loyalty_textbox_mask() }
+card style:
+ loyalty:
+ left: { instance := 1; card.loyalty_box; loyalty_left() }
+ top: { instance := 1; loyalty_top() }
+ width: { instance := 1; card.loyalty_box; loyalty_width() }
+ height: { instance := 1; loyalty_height() }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name_font() }
+ size: { instance := 1; card.loyalty_box; loyalty_font_size() }
+ color: white
+ loyalty box:
+ left: { instance := 1; loyalty_box_left() }
+ top: { instance := 1; loyalty_box_top() }
+ width: { instance := 1; if card.loyalty == "" then 0 else loyalty_box_width() }
+ height: { instance := 1; loyalty_box_height() }
+ z index: 830
+ visible: { instance := 1; card.loyalty != "" }
+ include file: /magic.mse-game/loyalty/menu_choice_images
+ render style: image
+ image: { instance := 1; loyalty_box_image() }
+ loyalty cost 1:
+ left: { instance := 1; loyalty_cost_left() }
+ top: { instance := 1; card.loyalty_cost_box_1; loyalty_cost_top(1) }
+ width: { instance := 1; loyalty_cost_width() }
+ height: { instance := 1; loyalty_cost_height(1) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name_font() }
+ size: { instance := 1; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost 2:
+ left: { instance := 1; loyalty_cost_left() }
+ top: { instance := 1; card.loyalty_cost_box_2; loyalty_cost_top(2) }
+ width: { instance := 1; loyalty_cost_width() }
+ height: { instance := 1; loyalty_cost_height(2) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name_font() }
+ size: { instance := 1; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost 3:
+ left: { instance := 1; loyalty_cost_left() }
+ top: { instance := 1; card.loyalty_cost_box_3; loyalty_cost_top(3) }
+ width: { instance := 1; loyalty_cost_width() }
+ height: { instance := 1; loyalty_cost_height(3) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name_font() }
+ size: { instance := 1; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost 4:
+ left: { instance := 1; loyalty_cost_left() }
+ top: { instance := 1; card.loyalty_cost_box_4; loyalty_cost_top(4) }
+ width: { instance := 1; loyalty_cost_width() }
+ height: { instance := 1; loyalty_cost_height(4) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name_font() }
+ size: { instance := 1; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost 5:
+ left: { instance := 1; loyalty_cost_left() }
+ top: { instance := 1; card.loyalty_cost_box_5; loyalty_cost_top(5) }
+ width: { instance := 1; loyalty_cost_width() }
+ height: { instance := 1; loyalty_cost_height(5) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name_font() }
+ size: { instance := 1; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost 6:
+ left: { instance := 1; loyalty_cost_left() }
+ top: { instance := 1; card.loyalty_cost_box_6; loyalty_cost_top(6) }
+ width: { instance := 1; loyalty_cost_width() }
+ height: { instance := 1; loyalty_cost_height(6) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name_font() }
+ size: { instance := 1; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost 7:
+ left: { instance := 1; loyalty_cost_left() }
+ top: { instance := 1; card.loyalty_cost_box_7; loyalty_cost_top(7) }
+ width: { instance := 1; loyalty_cost_width() }
+ height: { instance := 1; loyalty_cost_height(7) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name_font() }
+ size: { instance := 1; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost 8:
+ left: { instance := 1; loyalty_cost_left() }
+ top: { instance := 1; card.loyalty_cost_box_8; loyalty_cost_top(8) }
+ width: { instance := 1; loyalty_cost_width() }
+ height: { instance := 1; loyalty_cost_height(8) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name_font() }
+ size: { instance := 1; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost box 1:
+ left: { instance := 1; loyalty_cost_box_left() }
+ top: { instance := 1; loyalty_cost_box_top(1) }
+ width: { instance := 1; loyalty_cost_box_width() }
+ height: { instance := 1; loyalty_cost_box_height(1) }
+ z index: 830
+ visible: { instance := 1; card.loyalty_cost_1 != "" and loyalty_abilities_count() >= 1 }
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 1; loyalty_cost_box_image(1) }
+ loyalty cost box 2:
+ left: { instance := 1; loyalty_cost_box_left() }
+ top: { instance := 1; loyalty_cost_box_top(2) }
+ width: { instance := 1; loyalty_cost_box_width() }
+ height: { instance := 1; loyalty_cost_box_height(2) }
+ z index: 830
+ visible: { instance := 1; card.loyalty_cost_2 != "" and loyalty_abilities_count() >= 2 }
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 1; loyalty_cost_box_image(2) }
+ loyalty cost box 3:
+ left: { instance := 1; loyalty_cost_box_left() }
+ top: { instance := 1; loyalty_cost_box_top(3) }
+ width: { instance := 1; loyalty_cost_box_width() }
+ height: { instance := 1; loyalty_cost_box_height(3) }
+ z index: 830
+ visible: { instance := 1; card.loyalty_cost_3 != "" and loyalty_abilities_count() >= 3}
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 1; loyalty_cost_box_image(3) }
+ loyalty cost box 4:
+ left: { instance := 1; loyalty_cost_box_left() }
+ top: { instance := 1; loyalty_cost_box_top(4) }
+ width: { instance := 1; loyalty_cost_box_width() }
+ height: { instance := 1; loyalty_cost_box_height(4) }
+ z index: 830
+ visible: { instance := 1; card.loyalty_cost_4 != "" and loyalty_abilities_count() >= 4 }
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 1; loyalty_cost_box_image(4) }
+ loyalty cost box 5:
+ left: { instance := 1; loyalty_cost_box_left() }
+ top: { instance := 1; loyalty_cost_box_top(5) }
+ width: { instance := 1; loyalty_cost_box_width() }
+ height: { instance := 1; loyalty_cost_box_height(5) }
+ z index: 830
+ visible: { instance := 1; card.loyalty_cost_5 != "" and loyalty_abilities_count() >= 5 }
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 1; loyalty_cost_box_image(5) }
+ loyalty cost box 6:
+ left: { instance := 1; loyalty_cost_box_left() }
+ top: { instance := 1; loyalty_cost_box_top(6) }
+ width: { instance := 1; loyalty_cost_box_width() }
+ height: { instance := 1; loyalty_cost_box_height(6) }
+ z index: 830
+ visible: { instance := 1; card.loyalty_cost_6 != "" and loyalty_abilities_count() >= 6 }
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 1; loyalty_cost_box_image(6) }
+ loyalty cost box 7:
+ left: { instance := 1; loyalty_cost_box_left() }
+ top: { instance := 1; loyalty_cost_box_top(7) }
+ width: { instance := 1; loyalty_cost_box_width() }
+ height: { instance := 1; loyalty_cost_box_height(7) }
+ z index: 830
+ visible: { instance := 1; card.loyalty_cost_7 != "" and loyalty_abilities_count() >= 7 }
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 1; loyalty_cost_box_image(7) }
+ loyalty cost box 8:
+ left: { instance := 1; loyalty_cost_box_left() }
+ top: { instance := 1; loyalty_cost_box_top(8) }
+ width: { instance := 1; loyalty_cost_box_width() }
+ height: { instance := 1; loyalty_cost_box_height(8) }
+ z index: 830
+ visible: { instance := 1; card.loyalty_cost_8 != "" and loyalty_abilities_count() >= 8 }
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 1; loyalty_cost_box_image(8) }
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/loyalty/card_fields_dfc b/data/magic-modules.mse-include/loyalty/card_fields_dfc
new file mode 100644
index 000000000..3ff38ffd2
--- /dev/null
+++ b/data/magic-modules.mse-include/loyalty/card_fields_dfc
@@ -0,0 +1,547 @@
+include file: /magic-modules.mse-include/loyalty/card_fields
+extra card field:
+ type: text
+ name: colon 9
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: text
+ name: colon 10
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: text
+ name: colon 11
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: text
+ name: colon 12
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: text
+ name: colon 13
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: text
+ name: colon 14
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: text
+ name: colon 15
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: text
+ name: colon 16
+ editable: false
+ save value: false
+ script: ":"
+extra card field:
+ type: choice
+ name: textbox stripe 9
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe 9
+extra card field:
+ type: choice
+ name: textbox stripe 10
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe 10
+extra card field:
+ type: choice
+ name: textbox stripe 11
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe 11
+extra card field:
+ type: choice
+ name: textbox stripe 12
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe 12
+extra card field:
+ type: choice
+ name: textbox stripe separator 9
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe separator 9
+extra card field:
+ type: choice
+ name: textbox stripe separator 10
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe separator 10
+extra card field:
+ type: choice
+ name: textbox stripe separator 11
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe separator 11
+extra card field:
+ type: choice
+ name: textbox stripe separator 12
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe separator 12
+extra card field:
+ type: choice
+ name: textbox stripe separator 13
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe separator 13
+extra card field:
+ type: choice
+ name: textbox stripe separator 14
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe separator 14
+extra card field:
+ type: choice
+ name: textbox stripe separator 15
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox stripe separator 15
+extra card field:
+ type: choice
+ name: textbox background 2
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox background 2
+extra card style:
+ colon 9:
+ left: { instance := 2; loyalty_colon_left() }
+ top: { instance := 2; loyalty_colon_top(1) }
+ width: { instance := 2; loyalty_colon_width() }
+ height: { instance := 2; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 2; card.loyalty_cost_9 != "" and loyalty_abilities_count() >= 1 }
+ font:
+ name: Beleren Bold
+ size: { instance := 2; loyalty_colon_font_size() }
+ color: { body2_font_color() }
+ alignment: center middle
+ colon 10:
+ left: { instance := 2; loyalty_colon_left() }
+ top: { instance := 2; loyalty_colon_top(2) }
+ width: { instance := 2; loyalty_colon_width() }
+ height: { instance := 2; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 2; card.loyalty_cost_10 != "" and loyalty_abilities_count() >= 2 }
+ font:
+ name: Beleren Bold
+ size: { instance := 2; loyalty_colon_font_size() }
+ color: { body2_font_color() }
+ alignment: center middle
+ colon 11:
+ left: { instance := 2; loyalty_colon_left() }
+ top: { instance := 2; loyalty_colon_top(3) }
+ width: { instance := 2; loyalty_colon_width() }
+ height: { instance := 2; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 2; card.loyalty_cost_11 != "" and loyalty_abilities_count() >= 3 }
+ font:
+ name: Beleren Bold
+ size: { instance := 2; loyalty_colon_font_size() }
+ color: { body2_font_color() }
+ alignment: center middle
+ colon 12:
+ left: { instance := 2; loyalty_colon_left() }
+ top: { instance := 2; loyalty_colon_top(4) }
+ width: { instance := 2; loyalty_colon_width() }
+ height: { instance := 2; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 2; card.loyalty_cost_12 != "" and loyalty_abilities_count() >= 4 }
+ font:
+ name: Beleren Bold
+ size: { instance := 2; loyalty_colon_font_size() }
+ color: { body2_font_color() }
+ alignment: center middle
+ colon 13:
+ left: { instance := 2; loyalty_colon_left() }
+ top: { instance := 2; loyalty_colon_top(5) }
+ width: { instance := 2; loyalty_colon_width() }
+ height: { instance := 2; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 2; card.loyalty_cost_13 != "" and loyalty_abilities_count() >= 5 }
+ font:
+ name: Beleren Bold
+ size: { instance := 2; loyalty_colon_font_size() }
+ color: { body2_font_color() }
+ alignment: center middle
+ colon 14:
+ left: { instance := 2; loyalty_colon_left() }
+ top: { instance := 2; loyalty_colon_top(6) }
+ width: { instance := 2; loyalty_colon_width() }
+ height: { instance := 2; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 2; card.loyalty_cost_14 != "" and loyalty_abilities_count() >= 6 }
+ font:
+ name: Beleren Bold
+ size: { instance := 2; loyalty_colon_font_size() }
+ color: { body2_font_color() }
+ alignment: center middle
+ colon 15:
+ left: { instance := 2; loyalty_colon_left() }
+ top: { instance := 2; loyalty_colon_top(7) }
+ width: { instance := 2; loyalty_colon_width() }
+ height: { instance := 2; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 2; card.loyalty_cost_15 != "" and loyalty_abilities_count() >= 7 }
+ font:
+ name: Beleren Bold
+ size: { instance := 2; loyalty_colon_font_size() }
+ color: { body2_font_color() }
+ alignment: center middle
+ colon 16:
+ left: { instance := 2; loyalty_colon_left() }
+ top: { instance := 2; loyalty_colon_top(8) }
+ width: { instance := 2; loyalty_colon_width() }
+ height: { instance := 2; loyalty_colon_height() }
+ z index: 900
+ visible: { instance := 2; card.loyalty_cost_16 != "" and loyalty_abilities_count() >= 8 }
+ font:
+ name: Beleren Bold
+ size: { instance := 2; loyalty_colon_font_size() }
+ color: { body2_font_color() }
+ alignment: center middle
+ textbox stripe 9:
+ left: { instance := 2; a_left() }
+ width: { instance := 2; a_width() }
+ top: { instance := 2; a_top() }
+ bottom: { instance := 2; round_near(loyalty_stripe_separator_top(1)) + 0.5 }
+ z index: 710
+ visible: { instance := 2; loyalty_abilities_count() >= 2 }
+ render style: image
+ image: { instance := 2; loyalty_stripe_image() }
+ mask: { instance := 2; loyalty_stripe_mask(1) }
+ textbox stripe 10:
+ left: { instance := 2; a_left() }
+ width: { instance := 2; a_width() }
+ top: { instance := 2; loyalty_stripe_separator_top(2) + loyalty_stripe_separator_height() }
+ bottom: { instance := 2; round_near(if loyalty_abilities_count() >= 4 then loyalty_stripe_separator_top(3) else a_bottom()) + 0.5 }
+ z index: 710
+ visible: { instance := 2; loyalty_abilities_count() >= 3 }
+ render style: image
+ image: { instance := 2; loyalty_stripe_image() }
+ mask: { instance := 2; loyalty_stripe_mask(2) }
+ textbox stripe 11:
+ left: { instance := 2; a_left() }
+ width: { instance := 2; a_width() }
+ top: { instance := 2; loyalty_stripe_separator_top(4) + loyalty_stripe_separator_height() }
+ bottom: { instance := 2; round_near(if loyalty_abilities_count() >= 6 then loyalty_stripe_separator_top(5) else a_bottom()) + 0.5 }
+ z index: 710
+ visible: { instance := 2; loyalty_abilities_count() >= 5 }
+ render style: image
+ image: { instance := 2; loyalty_stripe_image() }
+ mask: { instance := 2; loyalty_stripe_mask(3) }
+ textbox stripe 12:
+ left: { instance := 2; a_left() }
+ width: { instance := 2; a_width() }
+ top: { instance := 2; loyalty_stripe_separator_top(6) + loyalty_stripe_separator_height() }
+ bottom: { instance := 2; round_near(if loyalty_abilities_count() >= 8 then loyalty_stripe_separator_top(7) else a_bottom()) + 0.5 }
+ z index: 710
+ visible: { instance := 2; loyalty_abilities_count() >= 7 }
+ render style: image
+ image: { instance := 2; loyalty_stripe_image() }
+ mask: { instance := 2; loyalty_stripe_mask(4) }
+ textbox stripe separator 9:
+ left: { instance := 2; a_left() }
+ width: { instance := 2; a_width() }
+ top: { instance := 2; round_near(loyalty_stripe_separator_top(1)) }
+ bottom: { instance := 2; round_near(loyalty_stripe_separator_top(1) + loyalty_stripe_separator_height()) + 0.5 }
+ z index: 710
+ visible: { instance := 2; loyalty_abilities_count() >= 2 }
+ render style: image
+ image: { instance := 2; loyalty_stripe_separator_image(1) }
+ mask: { instance := 2; loyalty_stripe_separator_mask(1) }
+ textbox stripe separator 10:
+ left: { instance := 2; a_left() }
+ width: { instance := 2; a_width() }
+ top: { instance := 2; round_near(loyalty_stripe_separator_top(2)) }
+ bottom: { instance := 2; round_near(loyalty_stripe_separator_top(2) + loyalty_stripe_separator_height()) + 0.5 }
+ z index: 710
+ visible: { instance := 2; loyalty_abilities_count() >= 3 }
+ render style: image
+ image: { instance := 2; loyalty_stripe_separator_image(2) }
+ mask: { instance := 2; loyalty_stripe_separator_mask(2) }
+ textbox stripe separator 11:
+ left: { instance := 2; a_left() }
+ width: { instance := 2; a_width() }
+ top: { instance := 2; round_near(loyalty_stripe_separator_top(3)) }
+ bottom: { instance := 2; round_near(loyalty_stripe_separator_top(3) + loyalty_stripe_separator_height()) + 0.5 }
+ z index: 710
+ visible: { instance := 2; loyalty_abilities_count() >= 4 }
+ render style: image
+ image: { instance := 2; loyalty_stripe_separator_image(3) }
+ mask: { instance := 2; loyalty_stripe_separator_mask(3) }
+ textbox stripe separator 12:
+ left: { instance := 2; a_left() }
+ width: { instance := 2; a_width() }
+ top: { instance := 2; round_near(loyalty_stripe_separator_top(4)) }
+ bottom: { instance := 2; round_near(loyalty_stripe_separator_top(4) + loyalty_stripe_separator_height()) + 0.5 }
+ z index: 710
+ visible: { instance := 2; loyalty_abilities_count() >= 5 }
+ render style: image
+ image: { instance := 2; loyalty_stripe_separator_image(4) }
+ mask: { instance := 2; loyalty_stripe_separator_mask(4) }
+ textbox stripe separator 13:
+ left: { instance := 2; a_left() }
+ width: { instance := 2; a_width() }
+ top: { instance := 2; round_near(loyalty_stripe_separator_top(5)) }
+ bottom: { instance := 2; round_near(loyalty_stripe_separator_top(5) + loyalty_stripe_separator_height()) + 0.5 }
+ z index: 710
+ visible: { instance := 2; loyalty_abilities_count() >= 6 }
+ render style: image
+ image: { instance := 2; loyalty_stripe_separator_image(5) }
+ mask: { instance := 2; loyalty_stripe_separator_mask(5) }
+ textbox stripe separator 14:
+ left: { instance := 2; a_left() }
+ width: { instance := 2; a_width() }
+ top: { instance := 2; round_near(loyalty_stripe_separator_top(6)) }
+ bottom: { instance := 2; round_near(loyalty_stripe_separator_top(6) + loyalty_stripe_separator_height()) + 0.5 }
+ z index: 710
+ visible: { instance := 2; loyalty_abilities_count() >= 7 }
+ render style: image
+ image: { instance := 2; loyalty_stripe_separator_image(6) }
+ mask: { instance := 2; loyalty_stripe_separator_mask(6) }
+ textbox stripe separator 15:
+ left: { instance := 2; a_left() }
+ width: { instance := 2; a_width() }
+ top: { instance := 2; round_near(loyalty_stripe_separator_top(7)) }
+ bottom: { instance := 2; round_near(loyalty_stripe_separator_top(7) + loyalty_stripe_separator_height()) + 0.5 }
+ z index: 710
+ visible: { instance := 2; loyalty_abilities_count() >= 8 }
+ render style: image
+ image: { instance := 2; loyalty_stripe_separator_image(7) }
+ mask: { instance := 2; loyalty_stripe_separator_mask(7) }
+ textbox background 2:
+ left: { instance := 2; a_left() }
+ width: { instance := 2; a_width() }
+ top: { instance := 2; a_top() }
+ bottom: { instance := 2; a_bottom() }
+ z index: 700
+ render style: image
+ image: { instance := 2; loyalty_textbox_background_image() }
+ mask: { instance := 2; loyalty_textbox_mask() }
+card style:
+ loyalty 2:
+ left: { instance := 2; card.loyalty_box_2; loyalty_left() }
+ top: { instance := 2; loyalty_top() }
+ width: { instance := 2; card.loyalty_box_2; loyalty_width() }
+ height: { instance := 2; loyalty_height() }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name2_font() }
+ size: { instance := 2; card.loyalty_box_2; loyalty_font_size() }
+ color: white
+ loyalty box 2:
+ left: { instance := 2; loyalty_box_left() }
+ top: { instance := 2; loyalty_box_top() }
+ width: { instance := 2; if card.loyalty_2 == "" then 0 else loyalty_box_width() }
+ height: { instance := 2; loyalty_box_height() }
+ z index: 830
+ visible: { instance := 2; card.loyalty_2 != "" }
+ include file: /magic.mse-game/loyalty/menu_choice_images
+ render style: image
+ image: { instance := 2; loyalty_box_image() }
+ loyalty cost 9:
+ left: { instance := 2; loyalty_cost_left() }
+ top: { instance := 2; card.loyalty_cost_box_9; loyalty_cost_top(1) }
+ width: { instance := 2; loyalty_cost_width() }
+ height: { instance := 2; loyalty_cost_height(1) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name2_font() }
+ size: { instance := 2; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost 10:
+ left: { instance := 2; loyalty_cost_left() }
+ top: { instance := 2; card.loyalty_cost_box_10; loyalty_cost_top(2) }
+ width: { instance := 2; loyalty_cost_width() }
+ height: { instance := 2; loyalty_cost_height(2) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name2_font() }
+ size: { instance := 2; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost 11:
+ left: { instance := 2; loyalty_cost_left() }
+ top: { instance := 2; card.loyalty_cost_box_11; loyalty_cost_top(3) }
+ width: { instance := 2; loyalty_cost_width() }
+ height: { instance := 2; loyalty_cost_height(3) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name2_font() }
+ size: { instance := 2; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost 12:
+ left: { instance := 2; loyalty_cost_left() }
+ top: { instance := 2; card.loyalty_cost_box_12; loyalty_cost_top(4) }
+ width: { instance := 2; loyalty_cost_width() }
+ height: { instance := 2; loyalty_cost_height(4) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name2_font() }
+ size: { instance := 2; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost 13:
+ left: { instance := 2; loyalty_cost_left() }
+ top: { instance := 2; card.loyalty_cost_box_13; loyalty_cost_top(5) }
+ width: { instance := 2; loyalty_cost_width() }
+ height: { instance := 2; loyalty_cost_height(5) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name2_font() }
+ size: { instance := 2; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost 14:
+ left: { instance := 2; loyalty_cost_left() }
+ top: { instance := 2; card.loyalty_cost_box_14; loyalty_cost_top(6) }
+ width: { instance := 2; loyalty_cost_width() }
+ height: { instance := 2; loyalty_cost_height(6) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name2_font() }
+ size: { instance := 2; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost 15:
+ left: { instance := 2; loyalty_cost_left() }
+ top: { instance := 2; card.loyalty_cost_box_15; loyalty_cost_top(7) }
+ width: { instance := 2; loyalty_cost_width() }
+ height: { instance := 2; loyalty_cost_height(7) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name2_font() }
+ size: { instance := 2; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost 16:
+ left: { instance := 2; loyalty_cost_left() }
+ top: { instance := 2; card.loyalty_cost_box_16; loyalty_cost_top(8) }
+ width: { instance := 2; loyalty_cost_width() }
+ height: { instance := 2; loyalty_cost_height(8) }
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { name2_font() }
+ size: { instance := 2; loyalty_cost_font_size() }
+ scale down to: 7
+ color: white
+ loyalty cost box 9:
+ left: { instance := 2; loyalty_cost_box_left() }
+ top: { instance := 2; loyalty_cost_box_top(1) }
+ width: { instance := 2; loyalty_cost_box_width() }
+ height: { instance := 2; loyalty_cost_box_height(1) }
+ z index: 830
+ visible: { instance := 2; card.loyalty_cost_9 != "" and loyalty_abilities_count() >= 1 }
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 2; loyalty_cost_box_image(1) }
+ loyalty cost box 10:
+ left: { instance := 2; loyalty_cost_box_left() }
+ top: { instance := 2; loyalty_cost_box_top(2) }
+ width: { instance := 2; loyalty_cost_box_width() }
+ height: { instance := 2; loyalty_cost_box_height(2) }
+ z index: 830
+ visible: { instance := 2; card.loyalty_cost_10 != "" and loyalty_abilities_count() >= 2 }
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 2; loyalty_cost_box_image(2) }
+ loyalty cost box 11:
+ left: { instance := 2; loyalty_cost_box_left() }
+ top: { instance := 2; loyalty_cost_box_top(3) }
+ width: { instance := 2; loyalty_cost_box_width() }
+ height: { instance := 2; loyalty_cost_box_height(3) }
+ z index: 830
+ visible: { instance := 2; card.loyalty_cost_11 != "" and loyalty_abilities_count() >= 3}
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 2; loyalty_cost_box_image(3) }
+ loyalty cost box 12:
+ left: { instance := 2; loyalty_cost_box_left() }
+ top: { instance := 2; loyalty_cost_box_top(4) }
+ width: { instance := 2; loyalty_cost_box_width() }
+ height: { instance := 2; loyalty_cost_box_height(4) }
+ z index: 830
+ visible: { instance := 2; card.loyalty_cost_12 != "" and loyalty_abilities_count() >= 4 }
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 2; loyalty_cost_box_image(4) }
+ loyalty cost box 13:
+ left: { instance := 2; loyalty_cost_box_left() }
+ top: { instance := 2; loyalty_cost_box_top(5) }
+ width: { instance := 2; loyalty_cost_box_width() }
+ height: { instance := 2; loyalty_cost_box_height(5) }
+ z index: 830
+ visible: { instance := 2; card.loyalty_cost_13 != "" and loyalty_abilities_count() >= 5 }
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 2; loyalty_cost_box_image(5) }
+ loyalty cost box 14:
+ left: { instance := 2; loyalty_cost_box_left() }
+ top: { instance := 2; loyalty_cost_box_top(6) }
+ width: { instance := 2; loyalty_cost_box_width() }
+ height: { instance := 2; loyalty_cost_box_height(6) }
+ z index: 830
+ visible: { instance := 2; card.loyalty_cost_14 != "" and loyalty_abilities_count() >= 6 }
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 2; loyalty_cost_box_image(6) }
+ loyalty cost box 15:
+ left: { instance := 2; loyalty_cost_box_left() }
+ top: { instance := 2; loyalty_cost_box_top(7) }
+ width: { instance := 2; loyalty_cost_box_width() }
+ height: { instance := 2; loyalty_cost_box_height(7) }
+ z index: 830
+ visible: { instance := 2; card.loyalty_cost_15 != "" and loyalty_abilities_count() >= 7 }
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 2; loyalty_cost_box_image(7) }
+ loyalty cost box 16:
+ left: { instance := 2; loyalty_cost_box_left() }
+ top: { instance := 2; loyalty_cost_box_top(8) }
+ width: { instance := 2; loyalty_cost_box_width() }
+ height: { instance := 2; loyalty_cost_box_height(8) }
+ z index: 830
+ visible: { instance := 2; card.loyalty_cost_16 != "" and loyalty_abilities_count() >= 8 }
+ include file: /magic.mse-game/loyalty/menu_choice_images_cost
+ render style: image
+ image: { instance := 2; loyalty_cost_box_image(8) }
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/loyalty/choices b/data/magic-modules.mse-include/loyalty/choices
new file mode 100644
index 000000000..e50a8f436
--- /dev/null
+++ b/data/magic-modules.mse-include/loyalty/choices
@@ -0,0 +1,12 @@
+choice:
+ name: none
+ type: radio
+choice:
+ name: loyalty
+ type: radio
+choice:
+ name: defense
+ type: radio
+ line below: true
+choice: shadow
+script: require_exclusive_choice(value, choices: "none, loyalty, defense")
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/loyalty/choices_cost b/data/magic-modules.mse-include/loyalty/choices_cost
new file mode 100644
index 000000000..946280004
--- /dev/null
+++ b/data/magic-modules.mse-include/loyalty/choices_cost
@@ -0,0 +1,21 @@
+choice:
+ name: none
+ type: radio
+choice:
+ name: anti ult
+ type: radio
+choice:
+ name: +
+ type: radio
+choice:
+ name: 0
+ type: radio
+choice:
+ name: -
+ type: radio
+choice:
+ name: ult
+ type: radio
+ line below: true
+choice: shadow
+script: require_exclusive_choice(value, choices: "none, anti ult, +, 0, -, ult")
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/loyalty/color.png b/data/magic-modules.mse-include/loyalty/color.png
new file mode 100644
index 000000000..696fe3de2
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/color.png differ
diff --git a/data/magic-modules.mse-include/loyalty/default_textbox_mask.png b/data/magic-modules.mse-include/loyalty/default_textbox_mask.png
new file mode 100644
index 000000000..f1bf8989e
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/default_textbox_mask.png differ
diff --git a/data/magic-modules.mse-include/loyalty/default_textbox_stamp_mask.png b/data/magic-modules.mse-include/loyalty/default_textbox_stamp_mask.png
new file mode 100644
index 000000000..c65ab966b
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/default_textbox_stamp_mask.png differ
diff --git a/data/magic-modules.mse-include/loyalty/default_textbox_tall_mask.png b/data/magic-modules.mse-include/loyalty/default_textbox_tall_mask.png
new file mode 100644
index 000000000..b45a2f79e
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/default_textbox_tall_mask.png differ
diff --git a/data/magic-modules.mse-include/loyalty/default_textbox_tall_stamp_mask.png b/data/magic-modules.mse-include/loyalty/default_textbox_tall_stamp_mask.png
new file mode 100644
index 000000000..ba304af4c
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/default_textbox_tall_stamp_mask.png differ
diff --git a/data/magic-modules.mse-include/loyalty/defense shadow.png b/data/magic-modules.mse-include/loyalty/defense shadow.png
new file mode 100644
index 000000000..da6253f07
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/defense shadow.png differ
diff --git a/data/magic-modules.mse-include/loyalty/defense.png b/data/magic-modules.mse-include/loyalty/defense.png
new file mode 100644
index 000000000..d80bbd857
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/defense.png differ
diff --git a/data/magic-modules.mse-include/loyalty/init_script b/data/magic-modules.mse-include/loyalty/init_script
new file mode 100644
index 000000000..f3330d1f8
--- /dev/null
+++ b/data/magic-modules.mse-include/loyalty/init_script
@@ -0,0 +1,65 @@
+mainframe_walker := { loyalty_text_field_1() <= 1 }
+mainframe_walkerb := { loyalty_text_field_1() == 2 }
+mainframe_walkerc := { loyalty_text_field_1() == 3 }
+mainframe_walkerd := { loyalty_text_field_1() == 4 }
+mainframe_walker_text_script :=
+{
+ count := loyalty_abilities_count(instance: 1)
+ if count == 8 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text, separator7: "\n", field8: card.level_8_text)
+ else if count == 7 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text)
+ else if count == 6 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text)
+ else if count == 5 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text)
+ else if count == 4 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text)
+ else if count == 3 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text)
+ else if count == 2 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text)
+ else forward_editor(field: card.level_1_text)
+}
+mainframe_walker_text_scriptb :=
+{
+ count := loyalty_abilities_count(instance: 1)
+ if count == 8 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text, separator7: "\n", field8: card.level_8_text)
+ else if count == 7 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text)
+ else if count == 6 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text)
+ else if count == 5 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text)
+ else if count == 4 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text)
+ else if count == 3 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text)
+ else if count == 2 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text)
+ else forward_editor(field: card.level_1_text)
+}
+mainframe_walker_text_scriptc :=
+{
+ count := loyalty_abilities_count(instance: 1)
+ if count == 8 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text, separator7: "\n", field8: card.level_8_text)
+ else if count == 7 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text)
+ else if count == 6 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text)
+ else if count == 5 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text)
+ else if count == 4 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text)
+ else if count == 3 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text)
+ else if count == 2 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text)
+ else forward_editor(field: card.level_1_text)
+}
+mainframe_walker_text_scriptd :=
+{
+ count := loyalty_abilities_count(instance: 1)
+ if count == 8 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text, separator7: "\n", field8: card.level_8_text)
+ else if count == 7 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text)
+ else if count == 6 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text)
+ else if count == 5 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text)
+ else if count == 4 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text)
+ else if count == 3 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text)
+ else if count == 2 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text)
+ else forward_editor(field: card.level_1_text)
+}
+margin_left :=
+{
+ number := to_int(replace(input, match: "lv", replace: "")) or else 999
+ if number > 8 or card["loyalty_cost_" + number] == "" then 0
+ else to_int(190 * r_width(instance: 1) + (loyalty_cost_offset_left_1() + loyalty_cost_offset_width_1() + loyalty_cost_offset_text_margin_1()) * 10)
+}
+text_filter := text_filter + { apply_margins(input, name: margin_code) } + { add_spacers(input, name: margin_code) }
+add_spacers :=
+{
+ #The 'then ""' has a zero-width space inside
+ if input == "" and loyalty_level_is_active(name) then ""
+ else input
+}
diff --git a/data/magic-modules.mse-include/loyalty/init_script_dfc b/data/magic-modules.mse-include/loyalty/init_script_dfc
new file mode 100644
index 000000000..8a258e2a2
--- /dev/null
+++ b/data/magic-modules.mse-include/loyalty/init_script_dfc
@@ -0,0 +1,126 @@
+mainframe_walker := { loyalty_text_field_1() <= 1 or loyalty_text_field_2() <= 1 }
+mainframe_walkerb := { loyalty_text_field_1() == 2 or loyalty_text_field_2() == 2 }
+mainframe_walkerc := { loyalty_text_field_1() == 3 or loyalty_text_field_2() == 3 }
+mainframe_walkerd := { loyalty_text_field_1() == 4 or loyalty_text_field_2() == 4 }
+mainframe_walker_text_script :=
+{
+ if loyalty_text_field_1() <= 1 then
+ (
+ count := loyalty_abilities_count(instance: 1)
+ if count == 8 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text, separator7: "\n", field8: card.level_8_text)
+ else if count == 7 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text)
+ else if count == 6 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text)
+ else if count == 5 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text)
+ else if count == 4 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text)
+ else if count == 3 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text)
+ else if count == 2 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text)
+ else forward_editor(field: card.level_1_text)
+ )
+ else
+ (
+ count := loyalty_abilities_count(instance: 2)
+ if count == 8 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text, separator5: "\n", field6: card.level_14_text, separator6: "\n", field7: card.level_15_text, separator7: "\n", field8: card.level_16_text)
+ else if count == 7 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text, separator5: "\n", field6: card.level_14_text, separator6: "\n", field7: card.level_15_text)
+ else if count == 6 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text, separator5: "\n", field6: card.level_14_text)
+ else if count == 5 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text)
+ else if count == 4 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text)
+ else if count == 3 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text)
+ else if count == 2 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text)
+ else forward_editor(field: card.level_9_text)
+ )
+}
+mainframe_walker_text_scriptb :=
+{
+ if loyalty_text_field_1() == 2 then
+ (
+ count := loyalty_abilities_count(instance: 1)
+ if count == 8 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text, separator7: "\n", field8: card.level_8_text)
+ else if count == 7 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text)
+ else if count == 6 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text)
+ else if count == 5 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text)
+ else if count == 4 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text)
+ else if count == 3 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text)
+ else if count == 2 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text)
+ else forward_editor(field: card.level_1_text)
+ )
+ else
+ (
+ count := loyalty_abilities_count(instance: 2)
+ if count == 8 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text, separator5: "\n", field6: card.level_14_text, separator6: "\n", field7: card.level_15_text, separator7: "\n", field8: card.level_16_text)
+ else if count == 7 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text, separator5: "\n", field6: card.level_14_text, separator6: "\n", field7: card.level_15_text)
+ else if count == 6 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text, separator5: "\n", field6: card.level_14_text)
+ else if count == 5 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text)
+ else if count == 4 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text)
+ else if count == 3 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text)
+ else if count == 2 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text)
+ else forward_editor(field: card.level_9_text)
+ )
+}
+mainframe_walker_text_scriptc :=
+{
+ if loyalty_text_field_1() == 3 then
+ (
+ count := loyalty_abilities_count(instance: 1)
+ if count == 8 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text, separator7: "\n", field8: card.level_8_text)
+ else if count == 7 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text)
+ else if count == 6 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text)
+ else if count == 5 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text)
+ else if count == 4 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text)
+ else if count == 3 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text)
+ else if count == 2 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text)
+ else forward_editor(field: card.level_1_text)
+ )
+ else
+ (
+ count := loyalty_abilities_count(instance: 2)
+ if count == 8 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text, separator5: "\n", field6: card.level_14_text, separator6: "\n", field7: card.level_15_text, separator7: "\n", field8: card.level_16_text)
+ else if count == 7 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text, separator5: "\n", field6: card.level_14_text, separator6: "\n", field7: card.level_15_text)
+ else if count == 6 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text, separator5: "\n", field6: card.level_14_text)
+ else if count == 5 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text)
+ else if count == 4 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text)
+ else if count == 3 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text)
+ else if count == 2 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text)
+ else forward_editor(field: card.level_9_text)
+ )
+}
+mainframe_walker_text_scriptd :=
+{
+ if loyalty_text_field_1() == 4 then
+ (
+ count := loyalty_abilities_count(instance: 1)
+ if count == 8 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text, separator7: "\n", field8: card.level_8_text)
+ else if count == 7 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text)
+ else if count == 6 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text)
+ else if count == 5 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text)
+ else if count == 4 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text)
+ else if count == 3 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text)
+ else if count == 2 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text)
+ else forward_editor(field: card.level_1_text)
+ )
+ else
+ (
+ count := loyalty_abilities_count(instance: 2)
+ if count == 8 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text, separator5: "\n", field6: card.level_14_text, separator6: "\n", field7: card.level_15_text, separator7: "\n", field8: card.level_16_text)
+ else if count == 7 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text, separator5: "\n", field6: card.level_14_text, separator6: "\n", field7: card.level_15_text)
+ else if count == 6 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text, separator5: "\n", field6: card.level_14_text)
+ else if count == 5 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text, separator4: "\n", field5: card.level_13_text)
+ else if count == 4 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text, separator3: "\n", field4: card.level_12_text)
+ else if count == 3 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text)
+ else if count == 2 then combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text)
+ else forward_editor(field: card.level_9_text)
+ )
+}
+margin_left :=
+{
+ number := to_int(replace(input, match: "lv", replace: "")) or else 999
+ if number > 16 or card["loyalty_cost_" + number] == "" then 0 else (
+ instance := if number < 9 then 1 else if number < 17 then 2 else 3
+ to_int(190 * r_width() + (loyalty_cost_offset_left() + loyalty_cost_offset_width() + loyalty_cost_offset_text_margin()) * 10))
+}
+text_filter := text_filter + { apply_margins(input, name: margin_code) } + { add_spacers(input, name: margin_code) }
+add_spacers :=
+{
+ #The 'then ""' has a zero-width space inside
+ if input == "" and loyalty_level_is_active(name) then ""
+ else input
+}
diff --git a/data/magic-modules.mse-include/loyalty/loyalty cost + shadow.png b/data/magic-modules.mse-include/loyalty/loyalty cost + shadow.png
new file mode 100644
index 000000000..26f476d6b
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/loyalty cost + shadow.png differ
diff --git a/data/magic-modules.mse-include/loyalty/loyalty cost +.png b/data/magic-modules.mse-include/loyalty/loyalty cost +.png
new file mode 100644
index 000000000..108322060
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/loyalty cost +.png differ
diff --git a/data/magic-modules.mse-include/loyalty/loyalty cost - shadow.png b/data/magic-modules.mse-include/loyalty/loyalty cost - shadow.png
new file mode 100644
index 000000000..68bad6974
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/loyalty cost - shadow.png differ
diff --git a/data/magic-modules.mse-include/loyalty/loyalty cost -.png b/data/magic-modules.mse-include/loyalty/loyalty cost -.png
new file mode 100644
index 000000000..45fce5d67
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/loyalty cost -.png differ
diff --git a/data/magic-modules.mse-include/loyalty/loyalty cost 0 shadow.png b/data/magic-modules.mse-include/loyalty/loyalty cost 0 shadow.png
new file mode 100644
index 000000000..17a0af338
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/loyalty cost 0 shadow.png differ
diff --git a/data/magic-modules.mse-include/loyalty/loyalty cost 0.png b/data/magic-modules.mse-include/loyalty/loyalty cost 0.png
new file mode 100644
index 000000000..d032727e1
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/loyalty cost 0.png differ
diff --git a/data/magic-modules.mse-include/loyalty/loyalty cost anti ult shadow.png b/data/magic-modules.mse-include/loyalty/loyalty cost anti ult shadow.png
new file mode 100644
index 000000000..f7f6d7414
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/loyalty cost anti ult shadow.png differ
diff --git a/data/magic-modules.mse-include/loyalty/loyalty cost anti ult.png b/data/magic-modules.mse-include/loyalty/loyalty cost anti ult.png
new file mode 100644
index 000000000..2e97e35ac
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/loyalty cost anti ult.png differ
diff --git a/data/magic-modules.mse-include/loyalty/loyalty cost ult shadow.png b/data/magic-modules.mse-include/loyalty/loyalty cost ult shadow.png
new file mode 100644
index 000000000..a0f1c941c
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/loyalty cost ult shadow.png differ
diff --git a/data/magic-modules.mse-include/loyalty/loyalty cost ult.png b/data/magic-modules.mse-include/loyalty/loyalty cost ult.png
new file mode 100644
index 000000000..593ca8f8a
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/loyalty cost ult.png differ
diff --git a/data/magic-modules.mse-include/loyalty/loyalty shadow.png b/data/magic-modules.mse-include/loyalty/loyalty shadow.png
new file mode 100644
index 000000000..b0434520b
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/loyalty shadow.png differ
diff --git a/data/magic-modules.mse-include/loyalty/loyalty.png b/data/magic-modules.mse-include/loyalty/loyalty.png
new file mode 100644
index 000000000..c5d79e4cf
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/loyalty.png differ
diff --git a/data/magic-modules.mse-include/loyalty/readme.txt b/data/magic-modules.mse-include/loyalty/readme.txt
new file mode 100644
index 000000000..bc2b777e4
--- /dev/null
+++ b/data/magic-modules.mse-include/loyalty/readme.txt
@@ -0,0 +1,56 @@
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Add the following line, indented by one tab, in the init script section:
+ include file: /magic-modules.mse-include/loyalty/init_script
+
+#### Add the following line,unindented, in the styling field section:
+include file: /magic-modules.mse-include/loyalty/styling_fields
+
+#### Also add this, unindented, before the card style section:
+include file: /magic-modules.mse-include/information/card_fields
+
+#### Customization
+#### Optionally, you can adjust appearance by defining the following functions in the init script:
+
+#### To change which face of the card the boxes go on:
+loyalty_face_1 := { 1 }
+
+#### To change which card field the boxes snap to,
+#### 1 is for card.text, 2 for card.text_2, and 3 for card.text_3
+#### This text field and it's watermark should have z index greater than 1100
+loyalty_text_field_1 := { 1 }
+
+#### This text field's font color should be:
+color: { styling.rule_text_color }
+
+#### To move the starting loyalty up/down:
+loyalty_offset_top_1 := { 0 }
+
+#### To move the starting loyalty left/right:
+loyalty_offset_left_1 := { 0 }
+
+#### To increase/decrease the starting loyalty size:
+loyalty_offset_width_1 := { 0 }
+loyalty_offset_height_1 := { 0 }
+
+#### Similarly for loyalty costs of abilities:
+loyalty_cost_offset_top_1 := { 0 }
+loyalty_cost_offset_left_1 := { 0 }
+loyalty_cost_offset_width_1 := { 0 }
+loyalty_cost_offset_height_1 := { 0 }
+
+#### To increase/decrease by how much the text becomes indented when a loyalty cost is active:
+loyalty_cost_offset_text_margin_1 := { 0 }
+
+#### To change where the stripes separating the abilities appear on the face:
+#### This must return the path of a mask with the same dimensions as the face the boxes go on.
+#### It must have white pixels where the stripes are visible, and black where they are not visible
+loyalty_textbox_mask_1 :=
+{
+ if is_stamped()
+ then "/magic-modules.mse-include/loyalty/default_textbox_stamp_mask.png"
+ else "/magic-modules.mse-include/loyalty/default_textbox_mask.png"
+}
diff --git a/data/magic-modules.mse-include/loyalty/stripe_bottom.png b/data/magic-modules.mse-include/loyalty/stripe_bottom.png
new file mode 100644
index 000000000..b9807c11b
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/stripe_bottom.png differ
diff --git a/data/magic-modules.mse-include/loyalty/stripe_top.png b/data/magic-modules.mse-include/loyalty/stripe_top.png
new file mode 100644
index 000000000..d1fe92665
Binary files /dev/null and b/data/magic-modules.mse-include/loyalty/stripe_top.png differ
diff --git a/data/magic-modules.mse-include/loyalty/styling_fields b/data/magic-modules.mse-include/loyalty/styling_fields
new file mode 100644
index 000000000..4cc50971e
--- /dev/null
+++ b/data/magic-modules.mse-include/loyalty/styling_fields
@@ -0,0 +1,62 @@
+styling field:
+ type: choice
+ name: number of textboxes
+ description: Number of textboxes for abilities and passives. MODIFY CONTENTS OF TEXTBOXES IF THIS HAS TROUBLE UPDATING AFTER BEING CHANGED.
+ choice: 1
+ choice: 2
+ choice: 3
+ choice: 4
+ choice: 5
+ choice: 6
+ choice: 7
+ choice: 8
+ initial: 3
+styling field:
+ type: text
+ name: textbox opacity percentage
+ description: Set the opacity percentage for textboxes. Opaque is 100, transparent is 0, default is 70.
+styling field:
+ type: color
+ name: textbox color
+ description: Use the specified color for the textbox background.
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ choice:
+ name: white
+ color: rgb(255,255,255)
+ initial: rgb(255,255,255)
+styling field:
+ type: text
+ name: stripes opacity percentage
+ description: Set the opacity percentage for stripes separating abilities. Opaque is 100, transparent is 0, default is 40.
+styling field:
+ type: color
+ name: stripes color
+ description: Use the specified color for the textbox background.
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ choice:
+ name: white
+ color: rgb(255,255,255)
+ initial: rgb(255,255,255)
+styling field:
+ type: text
+ name: move separators
+ description: Moves the limits between abilities down by this many pixels. Use negatives to move up. Formatted as "1,2,3,4,5"
+styling field:
+ type: text
+ name: move loyalty costs
+ description: Moves loyalty costs down by this many pixels. Use negatives to move up. Formatted as "1,2,3,4,5,6"
+styling field:
+ type: color
+ name: rule text color
+ description: Use the specified color for the rule text.
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ choice:
+ name: white
+ color: rgb(255,255,255)
+ initial: rgb(0,0,0)
diff --git a/data/magic-modules.mse-include/loyalty/styling_fields_dfc b/data/magic-modules.mse-include/loyalty/styling_fields_dfc
new file mode 100644
index 000000000..6a55fdf8c
--- /dev/null
+++ b/data/magic-modules.mse-include/loyalty/styling_fields_dfc
@@ -0,0 +1,63 @@
+include file: /magic-modules.mse-include/loyalty/styling_fields
+styling field:
+ type: choice
+ name: number of textboxes 2
+ description: Number of textboxes for abilities and passives for the second face. MODIFY CONTENTS OF TEXTBOXES IF THIS HAS TROUBLE UPDATING AFTER BEING CHANGED.
+ choice: 1
+ choice: 2
+ choice: 3
+ choice: 4
+ choice: 5
+ choice: 6
+ choice: 7
+ choice: 8
+ initial: 3
+styling field:
+ type: text
+ name: textbox opacity percentage 2
+ description: Set the opacity percentage for textboxes for the second face. Opaque is 100, transparent is 0, default is 70.
+styling field:
+ type: color
+ name: textbox color 2
+ description: Use the specified color for the textbox background for the second face.
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ choice:
+ name: white
+ color: rgb(255,255,255)
+ initial: rgb(255,255,255)
+styling field:
+ type: text
+ name: stripes opacity percentage 2
+ description: Set the opacity percentage for stripes separating abilities for the second face. Opaque is 100, transparent is 0, default is 40.
+styling field:
+ type: color
+ name: stripes color 2
+ description: Use the specified color for the textbox background for the second face.
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ choice:
+ name: white
+ color: rgb(255,255,255)
+ initial: rgb(255,255,255)
+styling field:
+ type: text
+ name: move separators 2
+ description: Moves the limits between abilities for the second face down by this many pixels. Use negatives to move up. Formatted as "1,2,3,4,5"
+styling field:
+ type: text
+ name: move loyalty costs 2
+ description: Moves loyalty costs for the second face down by this many pixels. Use negatives to move up. Formatted as "1,2,3,4,5,6"
+styling field:
+ type: color
+ name: rule text color 2
+ description: Use the specified color for the rule text for the second face.
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ choice:
+ name: white
+ color: rgb(255,255,255)
+ initial: rgb(0,0,0)
diff --git a/data/magic-modules.mse-include/namelines/card_fields b/data/magic-modules.mse-include/namelines/card_fields
new file mode 100644
index 000000000..cc58e4483
--- /dev/null
+++ b/data/magic-modules.mse-include/namelines/card_fields
@@ -0,0 +1,4 @@
+include file: /magic-modules.mse-include/symbols/card_fields
+include file: /magic-modules.mse-include/card-symbols/card_fields
+include file: /magic-modules.mse-include/casting-costs/card_fields
+include file: /magic-modules.mse-include/names/card_fields
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/namelines/card_fields_dfc b/data/magic-modules.mse-include/namelines/card_fields_dfc
new file mode 100644
index 000000000..3cc31e452
--- /dev/null
+++ b/data/magic-modules.mse-include/namelines/card_fields_dfc
@@ -0,0 +1,4 @@
+include file: /magic-modules.mse-include/symbols/card_fields_dfc
+include file: /magic-modules.mse-include/card-symbols/card_fields_dfc
+include file: /magic-modules.mse-include/casting-costs/card_fields_dfc
+include file: /magic-modules.mse-include/names/card_fields_dfc
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/namelines/card_fields_tfc b/data/magic-modules.mse-include/namelines/card_fields_tfc
new file mode 100644
index 000000000..3dac35188
--- /dev/null
+++ b/data/magic-modules.mse-include/namelines/card_fields_tfc
@@ -0,0 +1,4 @@
+include file: /magic-modules.mse-include/symbols/card_fields_tfc
+include file: /magic-modules.mse-include/card-symbols/card_fields_tfc
+include file: /magic-modules.mse-include/casting-costs/card_fields_tfc
+include file: /magic-modules.mse-include/names/card_fields_tfc
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/namelines/readme.txt b/data/magic-modules.mse-include/namelines/readme.txt
new file mode 100644
index 000000000..36d45985c
--- /dev/null
+++ b/data/magic-modules.mse-include/namelines/readme.txt
@@ -0,0 +1,72 @@
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this, unindented, before the card style section:
+include file: /magic-modules.mse-include/namelines/card_fields
+#### For DFC or TFC templates, instead override the faces_coordinates function, and use:
+include file: /magic-modules.mse-include/namelines/card_fields_dfc
+include file: /magic-modules.mse-include/namelines/card_fields_tfc
+
+#### Customization
+#### The transform symbols default to "none", defaults can be changed with
+transform_symbol_default :=
+{
+ if margin_code == "transform1" then "front triangle"
+ else if margin_code == "transform2" then "back triangle"
+ else "eldrazi"
+}
+
+#### Optionally, you can define which face of the card the nameline should snap to,
+#### by defining the following function in the init script:
+nameline_face_1 := { 1 }
+
+#### You can also adjust global alignment by defining the following functions, again in the init script,
+#### which must return an int corresponding to the number of pixels you want to shift the nameline by:
+
+#### To shift the entire nameline up/down (name + casting cost + transformation symbol):
+nameline_offset_top_1 := { 0 }
+
+#### To shift the entire nameline left/right:
+nameline_offset_left_1 := { 0 }
+
+#### To increase/decrease the width of the entire nameline (this WILL NOT change the size of the transformation symbol):
+nameline_offset_width_1 := { 0 }
+
+#### To increase/decrease the height of the entire nameline (this WILL change the size of the transformation symbol):
+nameline_offset_height_1 := { 0 }
+
+#### You can also adjust each of the components individually:
+name_offset_top_1 := { 0 }
+name_offset_left_1 := { 0 }
+name_offset_right_1 := { 0 }
+name_offset_height_1 := { 0 }
+
+casting_cost_offset_top_1 := { 0 }
+casting_cost_offset_left_1 := { 0 }
+casting_cost_offset_width_1 := { 0 }
+casting_cost_offset_height_1 := { 0 }
+
+transform_symbol_disabled_1 := { true }
+transform_symbol_mirrored_1 := { true }
+transform_symbol_offset_top_1 := { 0 }
+transform_symbol_offset_left_1 := { 0 }
+transform_symbol_offset_width_1 := { 0 }
+transform_symbol_offset_height_1 := { 0 }
+
+#### You can increase/decrease the amount by which the name shifts left
+#### when a transformation symbol is present on the card:
+name_transform_symbol_offset_left_1 := { 0 }
+
+#### For DFC or TFC templates, use:
+nameline_offset_top_2 := { 0 }
+nameline_offset_left_2 := { 0 }
+nameline_offset_width_2 := { 0 }
+nameline_offset_height_2 := { 0 }
+nameline_offset_top_3 := { 0 }
+nameline_offset_left_3 := { 0 }
+nameline_offset_width_3 := { 0 }
+nameline_offset_height_3 := { 0 }
+etc...
+
diff --git a/data/magic-modules.mse-include/names/card_fields b/data/magic-modules.mse-include/names/card_fields
new file mode 100644
index 000000000..8179d07db
--- /dev/null
+++ b/data/magic-modules.mse-include/names/card_fields
@@ -0,0 +1,14 @@
+card style:
+ name:
+ left: { name_left_1() + name_transform_symbol_shift_1() + name_card_symbol_shift_1() + nameline_offset_left_1() }
+ top: { name_top_1() + nameline_offset_top_1() + name_font_vertical() }
+ right: { name_right_1() + nameline_offset_width_1() }
+ height: { name_height_1() + nameline_offset_height_1() }
+ alignment: middle left shrink-overflow
+ visible: { (not nameline_disabled_1()) and not name_disabled_1() }
+ font:
+ name: { name_font() }
+ italic name: { name_font_italic() }
+ size: { name_font_size() }
+ color: { name_font_color() }
+ z index: 900
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/names/card_fields_dfc b/data/magic-modules.mse-include/names/card_fields_dfc
new file mode 100644
index 000000000..48443b8c5
--- /dev/null
+++ b/data/magic-modules.mse-include/names/card_fields_dfc
@@ -0,0 +1,15 @@
+include file: /magic-modules.mse-include/names/card_fields
+card style:
+ name 2:
+ left: { name_left_2() + name_transform_symbol_shift_2() + name_card_symbol_shift_2() + nameline_offset_left_2() }
+ top: { name_top_2() + nameline_offset_top_2() + name2_font_vertical() }
+ right: { name_right_2() + nameline_offset_width_2() }
+ height: { name_height_2() + nameline_offset_height_2() }
+ alignment: middle left shrink-overflow
+ visible: { (not nameline_disabled_2()) and not name_disabled_2() }
+ font:
+ name: { name2_font() }
+ italic name: { name2_font_italic() }
+ size: { name2_font_size() }
+ color: { name2_font_color() }
+ z index: 900
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/names/card_fields_tfc b/data/magic-modules.mse-include/names/card_fields_tfc
new file mode 100644
index 000000000..bd824a9ba
--- /dev/null
+++ b/data/magic-modules.mse-include/names/card_fields_tfc
@@ -0,0 +1,15 @@
+include file: /magic-modules.mse-include/names/card_fields_dfc
+card style:
+ name 3:
+ left: { name_left_3() + name_transform_symbol_shift_3() + name_card_symbol_shift_3() + nameline_offset_left_3() }
+ top: { name_top_3() + nameline_offset_top_3() + name3_font_vertical() }
+ right: { name_right_3() + nameline_offset_width_3() }
+ height: { name_height_3() + nameline_offset_height_3() }
+ alignment: middle left shrink-overflow
+ visible: { (not nameline_disabled_3()) and not name_disabled_3() }
+ font:
+ name: { name3_font() }
+ italic name: { name3_font_italic() }
+ size: { name3_font_size() }
+ color: { name3_font_color() }
+ z index: 900
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/names/readme.txt b/data/magic-modules.mse-include/names/readme.txt
new file mode 100644
index 000000000..c1ca1f7c6
--- /dev/null
+++ b/data/magic-modules.mse-include/names/readme.txt
@@ -0,0 +1,46 @@
+#### Consider using the Namelines module instead of this one
+
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this, unindented, before the card style section:
+include file: /magic-modules.mse-include/names/card_fields
+#### For DFC or TFC templates, instead override the faces_coordinates function, and use:
+include file: /magic-modules.mse-include/names/card_fields_dfc
+include file: /magic-modules.mse-include/names/card_fields_tfc
+
+#### Default Field Placement (@375x523, w=1 h=1)
+name:
+ left: 32w + symbols_width
+ top: 27h
+ right: 341w - casting_cost
+ height: 26h
+#### Customization
+#### Optionally, you can define which face of the card the name should snap to,
+#### by defining the following function in the init script:
+nameline_face_1 := { 1 }
+
+#### You can also adjust global alignment by defining the following functions, again in the init script,
+#### which must return an int corresponding to the number of pixels you want to shift the name by:
+
+#### To shift the name up/down:
+name_offset_top_1 := { 0 }
+
+#### To shift the name left/right:
+name_offset_left_1 := { 0 }
+
+#### To shift where the name ends:
+name_offset_right_1 := { 0 }
+
+#### To increase/decrease the height of the name:
+name_offset_height_1 := { 0 }
+
+#### For DFC or TFC templates, use:
+name_offset_top_2 := { 0 }
+name_offset_left_2 := { 0 }
+name_offset_size_2 := { 0 }
+name_offset_top_3 := { 0 }
+name_offset_left_3 := { 0 }
+name_offset_size_3 := { 0 }
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/rarities/card_fields b/data/magic-modules.mse-include/rarities/card_fields
new file mode 100644
index 000000000..cbb76d76f
--- /dev/null
+++ b/data/magic-modules.mse-include/rarities/card_fields
@@ -0,0 +1,11 @@
+card style:
+ rarity:
+ right: { rarity_right_1() + typeline_offset_left_1() + typeline_offset_width_1() }
+ top: { rarity_top_1() + typeline_offset_top_1() }
+ width: { rarity_width_1() + typeline_offset_height_1() }
+ height: { rarity_height_1() + typeline_offset_height_1() }
+ z index: 950
+ alignment: middle right
+ visible: { (not typeline_disabled_1()) and not rarity_disabled_1() }
+ render style: image
+ include file: /magic-modules.mse-include/rarities/choice_images
diff --git a/data/magic-modules.mse-include/rarities/card_fields_dfc b/data/magic-modules.mse-include/rarities/card_fields_dfc
new file mode 100644
index 000000000..6397d30fd
--- /dev/null
+++ b/data/magic-modules.mse-include/rarities/card_fields_dfc
@@ -0,0 +1,12 @@
+include file: /magic-modules.mse-include/rarities/card_fields
+card style:
+ rarity 2:
+ right: { rarity_right_2() + typeline_offset_left_2() + typeline_offset_width_2() }
+ top: { rarity_top_2() + typeline_offset_top_2() }
+ width: { rarity_width_2() + typeline_offset_height_2() }
+ height: { rarity_height_2() + typeline_offset_height_2() }
+ z index: 950
+ alignment: middle center
+ visible: { (not typeline_disabled_2()) and not rarity_disabled_2() }
+ render style: image
+ include file: /magic-modules.mse-include/rarities/choice_images
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/rarities/card_fields_tfc b/data/magic-modules.mse-include/rarities/card_fields_tfc
new file mode 100644
index 000000000..a86f94de2
--- /dev/null
+++ b/data/magic-modules.mse-include/rarities/card_fields_tfc
@@ -0,0 +1,12 @@
+include file: /magic-modules.mse-include/rarities/card_fields_dfc
+card style:
+ rarity 3:
+ right: { rarity_right_3() + typeline_offset_left_3() + typeline_offset_width_3() }
+ top: { rarity_top_3() + typeline_offset_top_3() }
+ width: { rarity_width_3() + typeline_offset_height_3() }
+ height: { rarity_height_3() + typeline_offset_height_3() }
+ z index: 950
+ alignment: middle center
+ visible: { (not typeline_disabled_3()) and not rarity_disabled_3() }
+ render style: image
+ include file: /magic-modules.mse-include/rarities/choice_images
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/rarities/choice_images b/data/magic-modules.mse-include/rarities/choice_images
new file mode 100644
index 000000000..43151f883
--- /dev/null
+++ b/data/magic-modules.mse-include/rarities/choice_images
@@ -0,0 +1,39 @@
+choice images:
+ # Images based on the set symbol
+ basic land:
+ script:
+ if use_main_rarity() then mainframe_rarity("c")
+ else if alt_rarity() then alt_symbol()
+ else if styling.inverted_common_symbol or else set.inverted_common_symbol then symbol_variation(symbol: set.symbol, variation: "invertedcommon")
+ else symbol_variation(symbol: set.symbol, variation: "common")
+ common:
+ script:
+ if use_main_rarity() then mainframe_rarity("c")
+ else if alt_rarity() then alt_symbol()
+ else if styling.inverted_common_symbol or else set.inverted_common_symbol then symbol_variation(symbol: set.symbol, variation: "invertedcommon")
+ else symbol_variation(symbol: set.symbol, variation: "common")
+ uncommon:
+ script:
+ if use_main_rarity() then mainframe_rarity("u")
+ else if alt_rarity() then alt_symbol()
+ else symbol_variation(symbol: set.symbol, variation: "uncommon")
+ rare:
+ script:
+ if use_main_rarity() then mainframe_rarity("r")
+ else if alt_rarity() then alt_symbol()
+ else symbol_variation(symbol: set.symbol, variation: "rare")
+ mythic rare:
+ script:
+ if use_main_rarity() then mainframe_rarity("m")
+ else if alt_rarity() then alt_symbol()
+ else symbol_variation(symbol: set.symbol, variation: "mythic rare")
+ special:
+ script:
+ if use_main_rarity() then mainframe_rarity("s")
+ else if alt_rarity() then alt_symbol()
+ else symbol_variation(symbol: set.symbol, variation: "special")
+ masterpiece:
+ script:
+ if use_main_rarity() then mainframe_rarity("mp")
+ else symbol_variation(symbol: set.masterpiece_symbol, variation: "mythic rare")
+
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/rarities/readme.txt b/data/magic-modules.mse-include/rarities/readme.txt
new file mode 100644
index 000000000..c4e3a8acc
--- /dev/null
+++ b/data/magic-modules.mse-include/rarities/readme.txt
@@ -0,0 +1,49 @@
+#### Consider using the Typelines module instead of this one
+
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this, unindented, before the card style section:
+include file: /magic-modules.mse-include/rarities/card_fields
+#### For DFC or TFC templates, instead override the faces_coordinates function, and use:
+include file: /magic-modules.mse-include/rarities/card_fields_dfc
+include file: /magic-modules.mse-include/rarities/card_fields_tfc
+
+#### Also add this among the styling field section,
+#### (styling fields will appear in the order you place them):
+#### This will add a text option for customizing the colors used by the rarity symbol,
+#### and another to further tweak the positioning of the rarity symbol.
+include file: /magic-modules.mse-include/rarities/styling_fields
+
+#### Default Field Placement (@375x523, w=1 h=1)
+rarity:
+ left: 317w
+ top: 297h
+ width: 24w
+ height: 24h
+#### Customization
+#### Optionally, you can define which face of the card the rarity should snap to,
+#### by defining the following function in the init script:
+typeline_face_1 := { 1 }
+
+#### You can also adjust global alignment by defining the following functions, again in the init script,
+#### which must return an int corresponding to the number of pixels you want to shift the rarity by:
+
+#### To shift the rarity up/down:
+rarity_offset_top_1 := { 0 }
+
+#### To shift the rarity left/right:
+rarity_offset_left_1 := { 0 }
+
+#### To increase/decrease the width and height of the rarity:
+rarity_offset_size_1 := { 0 }
+
+#### For DFC or TFC templates, use:
+rarity_offset_top_2 := { 0 }
+rarity_offset_left_2 := { 0 }
+rarity_offset_size_2 := { 0 }
+rarity_offset_top_3 := { 0 }
+rarity_offset_left_3 := { 0 }
+rarity_offset_size_3 := { 0 }
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/rarities/styling_fields b/data/magic-modules.mse-include/rarities/styling_fields
new file mode 100644
index 000000000..f7b4e2a14
--- /dev/null
+++ b/data/magic-modules.mse-include/rarities/styling_fields
@@ -0,0 +1,8 @@
+styling field:
+ type: text
+ name: alt rarity color
+ description: Use a custom color for the rarity symbol. Formatted as "R1,G1,B1:R2,G2,B2:...:X:" 1 and 2 are fill color, 3 and 4 border color, X is border thickness. For example, rare is 214,196,94:95,84,40:0,0,0:0,0,0:0.07
+styling field:
+ type: text
+ name: rarity offsets
+ description: Formatted as "A,B,C,D". Moves the set symbol A pixels to the right, B pixels down, C pixels wider, D pixels taller. Use negatives for other directions.
diff --git a/data/magic-modules.mse-include/readme.txt b/data/magic-modules.mse-include/readme.txt
new file mode 100644
index 000000000..1cc4074d0
--- /dev/null
+++ b/data/magic-modules.mse-include/readme.txt
@@ -0,0 +1,90 @@
+#### This include contains standardized assets and code that can help with template creation.
+#### To add a module, see the detailed instructions in it's folder's readme.
+
+#### Globally, you must respect the following z index conventions:
+-100: hidden #### Backend things that should never be visible to the user
+0000: backboard #### Things (other than the main card frame) that layer behind the art
+0100: illustration #### Main card art
+0200: background #### Main card frame. Will need a mask to allow clicking the art beneath.
+0300: trim #### Effects like vehicle, nyx, and snow that don't spill over the border
+0400: pinline #### Colored pinlines, pride pinlines
+0500: border #### Border
+0600: plate editing #### Major frame pieces: Transform sym/Lesson/Spree handling, Adventure pages, movable typelines
+0700: watermarking #### Watermarks, loyalty ability stripes, flavor bar, pop-under art (ex: WAR JP Tamiyo's popout goes under the rarity symbol)
+0800: attachments #### Optional frame additions: Crown, ptbox, level arrows, loyalty boxes, stamps, color indicators, alias box, flash dot
+0900: text #### Any text, rarity symbol
+1000: overlays #### Popout art, foiling and other overlay packages
+1100: corners #### These must always be last
+
+
+Notes on z index conventions:
+
+z index can't be scripted, so choices made need to be consistent across a wide range of templates
+As such, the card frame goes over the card art:
+This means normal card frames need to use a frame mask
+Because the alternative is frames like devoid must layer the art over the frame, which is untenable
+
+Trim effects can spill over the pinline and frame plates (such as snow's textbox effect).
+However, these will be overruled by conflicting effects at the higher z index (such as Adventure pages).
+
+The main functional difference between "plate editing" and "attachments" is how they interact with watermarking.
+When that isn't relevant, consider if the effect is editing the standard version of the frame layout, or adding an extra thing on top
+Crowns are treated as the later in the code to allow for more custom crown freedom, even though they do more resemble the former
+
+Text can go at lower z indexes if it's meant to be obscured or behind the watermarking
+But generally any user input text should be in the 900 level, on top of all the frame elements
+
+Overlays primarily refer to .mse-include packages that add foiling and other effects, as well as the popout art.
+Templates sometimes refer to things like the Vehicle trim as overlays, but these don't belong in this z index unless they must layer over text.
+
+Corners are functionally a special kind of overlay to standardize corners, and get their own section to ensure they always apply last.
+This has the minor drawback that popout art can't be applied to the most extreme corners for square-corner cards.
+The invisible corner option has been added as a workaround for this.
+
+Specific z indexes
+100 Image
+
+200 Card Color
+
+300 Standard color trim
+310 Vehicle
+320 Snow
+330 Nyx
+
+400 Color pinlines
+410 Pride pinlines
+
+500 Card border
+
+600 Moveable name/typelines
+610 Name/type caps (spree attachment)
+620 Transform symbol
+620 Adventure page
+640 Leveler backgrounds
+
+700 Textbox background
+710 Loyalty ability stripes
+720 Watermarks
+740 Flavor bar
+790 Pop-under art
+
+800 Indicators
+800 Legend crown
+810 Tombstone/alchemy symbol
+830 Loyalty boxes
+840 PT Box, Leveler arrows, Flash dot
+850 Color stamp
+860 Holofoil stamp
+880 Alias box
+
+900 Loyalty cost colons
+900 User text fields
+900 Information below the textbox & credit symbols
+920 Casting cost
+950 Rarity
+
+1010 Popout art
+1050 Overlay package
+
+1100 Partition select
+1100 Corners
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/separators/card_fields b/data/magic-modules.mse-include/separators/card_fields
new file mode 100644
index 000000000..a0176f7c8
--- /dev/null
+++ b/data/magic-modules.mse-include/separators/card_fields
@@ -0,0 +1,9 @@
+card style:
+ separator:
+ left: { flavor_bar_left(1) + flavor_bar_offset_left_1() - flavor_bar_offset_width_1() }
+ top: { flavor_bar_top(1) + flavor_bar_offset_top_1() - flavor_bar_offset_height_1() }
+ width: { flavor_bar_width(1) + 2*flavor_bar_offset_width_1() }
+ height: { flavor_bar_height(1) + 2*flavor_bar_offset_height_1() }
+ render style: image
+ image: { "/magic-modules.mse-include/separators/" + card.separator + ".png" }
+ z index: 740
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/separators/card_fields_dfc b/data/magic-modules.mse-include/separators/card_fields_dfc
new file mode 100644
index 000000000..8c461bf6d
--- /dev/null
+++ b/data/magic-modules.mse-include/separators/card_fields_dfc
@@ -0,0 +1,10 @@
+include file: /magic-modules.mse-include/separators/card_fields
+card style:
+ separator 2:
+ left: { flavor_bar_left(2) + flavor_bar_offset_left_2() - flavor_bar_offset_width_2() }
+ top: { flavor_bar_top(2) + flavor_bar_offset_top_2() - flavor_bar_offset_height_2() }
+ width: { flavor_bar_width(2) + 2*flavor_bar_offset_width_2() }
+ height: { flavor_bar_height(2) + 2*flavor_bar_offset_height_2() }
+ render style: image
+ image: { "/magic-modules.mse-include/separators/" + card.separator_2 + ".png" }
+ z index: 740
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/separators/card_fields_tfc b/data/magic-modules.mse-include/separators/card_fields_tfc
new file mode 100644
index 000000000..cff8e34aa
--- /dev/null
+++ b/data/magic-modules.mse-include/separators/card_fields_tfc
@@ -0,0 +1,10 @@
+include file: /magic-modules.mse-include/separators/card_fields_dfc
+card style:
+ separator 3:
+ left: { flavor_bar_left(3) + flavor_bar_offset_left_3() - flavor_bar_offset_width_3() }
+ top: { flavor_bar_top(3) + flavor_bar_offset_top_3() - flavor_bar_offset_height_3() }
+ width: { flavor_bar_width(3) + 2*flavor_bar_offset_width_3() }
+ height: { flavor_bar_height(3) + 2*flavor_bar_offset_height_3() }
+ render style: image
+ image: { "/magic-modules.mse-include/separators/" + card.separator_3 + ".png" }
+ z index: 740
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/separators/choices b/data/magic-modules.mse-include/separators/choices
new file mode 100644
index 000000000..ec47c1e54
--- /dev/null
+++ b/data/magic-modules.mse-include/separators/choices
@@ -0,0 +1,9 @@
+choice: flavor bar
+choice: grey bar
+choice:
+ name: level
+ enabled: { separator_enable_level() }
+choice:
+ name: level notchless
+ enabled: { separator_enable_level() }
+choice: none
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/separators/flavor bar.png b/data/magic-modules.mse-include/separators/flavor bar.png
new file mode 100644
index 000000000..d344ed95a
Binary files /dev/null and b/data/magic-modules.mse-include/separators/flavor bar.png differ
diff --git a/data/magic-modules.mse-include/separators/grey bar.png b/data/magic-modules.mse-include/separators/grey bar.png
new file mode 100644
index 000000000..457f22332
Binary files /dev/null and b/data/magic-modules.mse-include/separators/grey bar.png differ
diff --git a/data/magic-modules.mse-include/separators/level notchless.png b/data/magic-modules.mse-include/separators/level notchless.png
new file mode 100644
index 000000000..497aaac57
Binary files /dev/null and b/data/magic-modules.mse-include/separators/level notchless.png differ
diff --git a/data/magic-modules.mse-include/separators/level.png b/data/magic-modules.mse-include/separators/level.png
new file mode 100644
index 000000000..d4f89d0fe
Binary files /dev/null and b/data/magic-modules.mse-include/separators/level.png differ
diff --git a/data/magic-modules.mse-include/separators/none.png b/data/magic-modules.mse-include/separators/none.png
new file mode 100644
index 000000000..155763ea9
Binary files /dev/null and b/data/magic-modules.mse-include/separators/none.png differ
diff --git a/data/magic-modules.mse-include/separators/readme.txt b/data/magic-modules.mse-include/separators/readme.txt
new file mode 100644
index 000000000..9f2506da8
--- /dev/null
+++ b/data/magic-modules.mse-include/separators/readme.txt
@@ -0,0 +1,34 @@
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this, unindented, before the card style section:
+include file: /magic-modules.mse-include/separators/card_fields
+#### For DFC, TFC, or multiple textbox templates, instead use:
+include file: /magic-modules.mse-include/separators/card_fields_dfc
+include file: /magic-modules.mse-include/separators/card_fields_tfc
+
+#### Customization
+#### Optionally, you can adjust global alignment by defining the following functions in the init script,
+#### which must return an int corresponding to the number of pixels you want to shift the flavor bar by:
+
+#### To shift the bar up/down:
+flavor_bar_offset_top_1 := { 0 }
+
+#### To shift the bar left/right:
+flavor_bar_offset_left_1 := { 0 }
+
+#### To increase/decrease the size:
+flavor_bar_offset_width_1 := { 0 }
+flavor_bar_offset_height_1 := { 0 }
+
+#### For the other faces on DFC or TFC templates, use:
+flavor_bar_offset_top_2 := { 0 }
+flavor_bar_offset_left_2 := { 0 }
+flavor_bar_offset_width_2 := { 0 }
+flavor_bar_offset_height_2 := { 0 }
+flavor_bar_offset_top_3 := { 0 }
+flavor_bar_offset_left_3 := { 0 }
+flavor_bar_offset_width_3 := { 0 }
+flavor_bar_offset_height_3 := { 0 }
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/stamps/1039x744 acorn.png b/data/magic-modules.mse-include/stamps/1039x744 acorn.png
new file mode 100644
index 000000000..3704ea3a6
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/1039x744 acorn.png differ
diff --git a/data/magic-modules.mse-include/stamps/1039x744 alchemy old.png b/data/magic-modules.mse-include/stamps/1039x744 alchemy old.png
new file mode 100644
index 000000000..c44e5bc6f
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/1039x744 alchemy old.png differ
diff --git a/data/magic-modules.mse-include/stamps/1039x744 alchemy.png b/data/magic-modules.mse-include/stamps/1039x744 alchemy.png
new file mode 100644
index 000000000..af4f135ce
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/1039x744 alchemy.png differ
diff --git a/data/magic-modules.mse-include/stamps/1039x744 flatstamped acorn.png b/data/magic-modules.mse-include/stamps/1039x744 flatstamped acorn.png
new file mode 100644
index 000000000..206ba5612
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/1039x744 flatstamped acorn.png differ
diff --git a/data/magic-modules.mse-include/stamps/1039x744 flatstamped alchemy old.png b/data/magic-modules.mse-include/stamps/1039x744 flatstamped alchemy old.png
new file mode 100644
index 000000000..18107a611
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/1039x744 flatstamped alchemy old.png differ
diff --git a/data/magic-modules.mse-include/stamps/1039x744 flatstamped alchemy.png b/data/magic-modules.mse-include/stamps/1039x744 flatstamped alchemy.png
new file mode 100644
index 000000000..d93baf7a2
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/1039x744 flatstamped alchemy.png differ
diff --git a/data/magic-modules.mse-include/stamps/1039x744 flatstamped heart.png b/data/magic-modules.mse-include/stamps/1039x744 flatstamped heart.png
new file mode 100644
index 000000000..7a72d1b52
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/1039x744 flatstamped heart.png differ
diff --git a/data/magic-modules.mse-include/stamps/1039x744 flatstamped standard.png b/data/magic-modules.mse-include/stamps/1039x744 flatstamped standard.png
new file mode 100644
index 000000000..575d1f662
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/1039x744 flatstamped standard.png differ
diff --git a/data/magic-modules.mse-include/stamps/1039x744 flatstamped universes beyond.png b/data/magic-modules.mse-include/stamps/1039x744 flatstamped universes beyond.png
new file mode 100644
index 000000000..48b5e3ab1
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/1039x744 flatstamped universes beyond.png differ
diff --git a/data/magic-modules.mse-include/stamps/1039x744 heart.png b/data/magic-modules.mse-include/stamps/1039x744 heart.png
new file mode 100644
index 000000000..e15659b6c
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/1039x744 heart.png differ
diff --git a/data/magic-modules.mse-include/stamps/1039x744 standard.png b/data/magic-modules.mse-include/stamps/1039x744 standard.png
new file mode 100644
index 000000000..ccb31be25
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/1039x744 standard.png differ
diff --git a/data/magic-modules.mse-include/stamps/1039x744 universes beyond.png b/data/magic-modules.mse-include/stamps/1039x744 universes beyond.png
new file mode 100644
index 000000000..967a5cf73
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/1039x744 universes beyond.png differ
diff --git a/data/magic-modules.mse-include/stamps/375x523 acorn.png b/data/magic-modules.mse-include/stamps/375x523 acorn.png
new file mode 100644
index 000000000..bdb55efb0
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/375x523 acorn.png differ
diff --git a/data/magic-modules.mse-include/stamps/375x523 alchemy old.png b/data/magic-modules.mse-include/stamps/375x523 alchemy old.png
new file mode 100644
index 000000000..ffd714d93
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/375x523 alchemy old.png differ
diff --git a/data/magic-modules.mse-include/stamps/375x523 alchemy.png b/data/magic-modules.mse-include/stamps/375x523 alchemy.png
new file mode 100644
index 000000000..d21c9c948
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/375x523 alchemy.png differ
diff --git a/data/magic-modules.mse-include/stamps/375x523 flatstamped acorn.png b/data/magic-modules.mse-include/stamps/375x523 flatstamped acorn.png
new file mode 100644
index 000000000..56a858c43
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/375x523 flatstamped acorn.png differ
diff --git a/data/magic-modules.mse-include/stamps/375x523 flatstamped alchemy old.png b/data/magic-modules.mse-include/stamps/375x523 flatstamped alchemy old.png
new file mode 100644
index 000000000..9f921f6df
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/375x523 flatstamped alchemy old.png differ
diff --git a/data/magic-modules.mse-include/stamps/375x523 flatstamped alchemy.png b/data/magic-modules.mse-include/stamps/375x523 flatstamped alchemy.png
new file mode 100644
index 000000000..9b3c18e59
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/375x523 flatstamped alchemy.png differ
diff --git a/data/magic-modules.mse-include/stamps/375x523 flatstamped heart.png b/data/magic-modules.mse-include/stamps/375x523 flatstamped heart.png
new file mode 100644
index 000000000..fa317a8e0
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/375x523 flatstamped heart.png differ
diff --git a/data/magic-modules.mse-include/stamps/375x523 flatstamped standard.png b/data/magic-modules.mse-include/stamps/375x523 flatstamped standard.png
new file mode 100644
index 000000000..f568452b2
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/375x523 flatstamped standard.png differ
diff --git a/data/magic-modules.mse-include/stamps/375x523 flatstamped universes beyond.png b/data/magic-modules.mse-include/stamps/375x523 flatstamped universes beyond.png
new file mode 100644
index 000000000..570c4088a
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/375x523 flatstamped universes beyond.png differ
diff --git a/data/magic-modules.mse-include/stamps/375x523 heart.png b/data/magic-modules.mse-include/stamps/375x523 heart.png
new file mode 100644
index 000000000..5bf44ef32
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/375x523 heart.png differ
diff --git a/data/magic-modules.mse-include/stamps/375x523 standard.png b/data/magic-modules.mse-include/stamps/375x523 standard.png
new file mode 100644
index 000000000..b0750d37e
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/375x523 standard.png differ
diff --git a/data/magic-modules.mse-include/stamps/375x523 universes beyond.png b/data/magic-modules.mse-include/stamps/375x523 universes beyond.png
new file mode 100644
index 000000000..ddb539dea
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/375x523 universes beyond.png differ
diff --git a/data/magic-modules.mse-include/stamps/523x375 acorn.png b/data/magic-modules.mse-include/stamps/523x375 acorn.png
new file mode 100644
index 000000000..4cc006761
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/523x375 acorn.png differ
diff --git a/data/magic-modules.mse-include/stamps/523x375 alchemy old.png b/data/magic-modules.mse-include/stamps/523x375 alchemy old.png
new file mode 100644
index 000000000..9ddc089b0
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/523x375 alchemy old.png differ
diff --git a/data/magic-modules.mse-include/stamps/523x375 alchemy.png b/data/magic-modules.mse-include/stamps/523x375 alchemy.png
new file mode 100644
index 000000000..4f63192cb
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/523x375 alchemy.png differ
diff --git a/data/magic-modules.mse-include/stamps/523x375 flatstamped acorn.png b/data/magic-modules.mse-include/stamps/523x375 flatstamped acorn.png
new file mode 100644
index 000000000..0c7a72d32
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/523x375 flatstamped acorn.png differ
diff --git a/data/magic-modules.mse-include/stamps/523x375 flatstamped alchemy old.png b/data/magic-modules.mse-include/stamps/523x375 flatstamped alchemy old.png
new file mode 100644
index 000000000..a742a6cbf
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/523x375 flatstamped alchemy old.png differ
diff --git a/data/magic-modules.mse-include/stamps/523x375 flatstamped alchemy.png b/data/magic-modules.mse-include/stamps/523x375 flatstamped alchemy.png
new file mode 100644
index 000000000..bf8818a7a
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/523x375 flatstamped alchemy.png differ
diff --git a/data/magic-modules.mse-include/stamps/523x375 flatstamped heart.png b/data/magic-modules.mse-include/stamps/523x375 flatstamped heart.png
new file mode 100644
index 000000000..2475ca9b9
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/523x375 flatstamped heart.png differ
diff --git a/data/magic-modules.mse-include/stamps/523x375 flatstamped standard.png b/data/magic-modules.mse-include/stamps/523x375 flatstamped standard.png
new file mode 100644
index 000000000..7a14e9504
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/523x375 flatstamped standard.png differ
diff --git a/data/magic-modules.mse-include/stamps/523x375 flatstamped universes beyond.png b/data/magic-modules.mse-include/stamps/523x375 flatstamped universes beyond.png
new file mode 100644
index 000000000..d57579031
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/523x375 flatstamped universes beyond.png differ
diff --git a/data/magic-modules.mse-include/stamps/523x375 heart.png b/data/magic-modules.mse-include/stamps/523x375 heart.png
new file mode 100644
index 000000000..4de09201c
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/523x375 heart.png differ
diff --git a/data/magic-modules.mse-include/stamps/523x375 standard.png b/data/magic-modules.mse-include/stamps/523x375 standard.png
new file mode 100644
index 000000000..e4594d79b
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/523x375 standard.png differ
diff --git a/data/magic-modules.mse-include/stamps/523x375 universes beyond.png b/data/magic-modules.mse-include/stamps/523x375 universes beyond.png
new file mode 100644
index 000000000..92fe2bb2a
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/523x375 universes beyond.png differ
diff --git a/data/magic-modules.mse-include/stamps/744x1039 acorn.png b/data/magic-modules.mse-include/stamps/744x1039 acorn.png
new file mode 100644
index 000000000..ababcda3d
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/744x1039 acorn.png differ
diff --git a/data/magic-modules.mse-include/stamps/744x1039 alchemy old.png b/data/magic-modules.mse-include/stamps/744x1039 alchemy old.png
new file mode 100644
index 000000000..3405a084d
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/744x1039 alchemy old.png differ
diff --git a/data/magic-modules.mse-include/stamps/744x1039 alchemy.png b/data/magic-modules.mse-include/stamps/744x1039 alchemy.png
new file mode 100644
index 000000000..e20410388
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/744x1039 alchemy.png differ
diff --git a/data/magic-modules.mse-include/stamps/744x1039 flatstamped acorn.png b/data/magic-modules.mse-include/stamps/744x1039 flatstamped acorn.png
new file mode 100644
index 000000000..2357accab
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/744x1039 flatstamped acorn.png differ
diff --git a/data/magic-modules.mse-include/stamps/744x1039 flatstamped alchemy old.png b/data/magic-modules.mse-include/stamps/744x1039 flatstamped alchemy old.png
new file mode 100644
index 000000000..1188629d5
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/744x1039 flatstamped alchemy old.png differ
diff --git a/data/magic-modules.mse-include/stamps/744x1039 flatstamped alchemy.png b/data/magic-modules.mse-include/stamps/744x1039 flatstamped alchemy.png
new file mode 100644
index 000000000..898693779
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/744x1039 flatstamped alchemy.png differ
diff --git a/data/magic-modules.mse-include/stamps/744x1039 flatstamped heart.png b/data/magic-modules.mse-include/stamps/744x1039 flatstamped heart.png
new file mode 100644
index 000000000..2cfc25448
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/744x1039 flatstamped heart.png differ
diff --git a/data/magic-modules.mse-include/stamps/744x1039 flatstamped standard.png b/data/magic-modules.mse-include/stamps/744x1039 flatstamped standard.png
new file mode 100644
index 000000000..283d7f3f3
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/744x1039 flatstamped standard.png differ
diff --git a/data/magic-modules.mse-include/stamps/744x1039 flatstamped universes beyond.png b/data/magic-modules.mse-include/stamps/744x1039 flatstamped universes beyond.png
new file mode 100644
index 000000000..1c488f304
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/744x1039 flatstamped universes beyond.png differ
diff --git a/data/magic-modules.mse-include/stamps/744x1039 heart.png b/data/magic-modules.mse-include/stamps/744x1039 heart.png
new file mode 100644
index 000000000..1d568e692
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/744x1039 heart.png differ
diff --git a/data/magic-modules.mse-include/stamps/744x1039 standard.png b/data/magic-modules.mse-include/stamps/744x1039 standard.png
new file mode 100644
index 000000000..181b7cdc6
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/744x1039 standard.png differ
diff --git a/data/magic-modules.mse-include/stamps/744x1039 universes beyond.png b/data/magic-modules.mse-include/stamps/744x1039 universes beyond.png
new file mode 100644
index 000000000..1fd1cf1a2
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/744x1039 universes beyond.png differ
diff --git a/data/magic-modules.mse-include/stamps/behavior_choices b/data/magic-modules.mse-include/stamps/behavior_choices
new file mode 100644
index 000000000..5b7ab1549
--- /dev/null
+++ b/data/magic-modules.mse-include/stamps/behavior_choices
@@ -0,0 +1,5 @@
+choice: Standard, rares holostamped
+choice: UB, rares holostamped, others flatstamped
+choice: All holostamped
+choice: All flatstamped
+choice: All unstamped
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/stamps/card_choices b/data/magic-modules.mse-include/stamps/card_choices
new file mode 100644
index 000000000..0f7852706
--- /dev/null
+++ b/data/magic-modules.mse-include/stamps/card_choices
@@ -0,0 +1,17 @@
+choice: standard
+choice: none
+choice: acorn
+choice: heart
+choice: universes beyond
+choice: alchemy
+choice: alchemy old
+choice: custom
+choice:
+ name: flatstamped
+ choice: standard
+ choice: acorn
+ choice: heart
+ choice: universes beyond
+ choice: alchemy
+ choice: alchemy old
+ choice: custom
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/stamps/card_fields b/data/magic-modules.mse-include/stamps/card_fields
new file mode 100644
index 000000000..77f960ac6
--- /dev/null
+++ b/data/magic-modules.mse-include/stamps/card_fields
@@ -0,0 +1,36 @@
+card style:
+ card stamp:
+ left:
+ script:
+ width := face_coordinates_map(1).width
+ height := face_coordinates_map(1).height
+ if width > height then face_coordinates_map(1).left + 7 * width/523 + card_stamp_offset_left_1()
+ else face_coordinates_map(1).left + 166 * width/375 + card_stamp_offset_left_1()
+ top:
+ script:
+ width := face_coordinates_map(1).width
+ height := face_coordinates_map(1).height
+ if width > height then face_coordinates_map(1).top + 166 * height/375 + card_stamp_offset_top_1()
+ else face_coordinates_map(1).top + 473 * height/523 + card_stamp_offset_top_1()
+ width:
+ script:
+ width := face_coordinates_map(1).width
+ height := face_coordinates_map(1).height
+ if width > height then 43 * width/523 + card_stamp_offset_width_1()
+ else 43 * width/375 + card_stamp_offset_width_1()
+ height:
+ script:
+ width := face_coordinates_map(1).width
+ height := face_coordinates_map(1).height
+ if width > height then 43 * height/375 + card_stamp_offset_height_1()
+ else 43 * height/523 + card_stamp_offset_height_1()
+ visible: { not card_stamp_disabled_1() }
+ popup style: in place
+ include file: /magic.mse-game/stamps/menu_choice_images
+ render style: image
+ image:
+ script:
+ set.stamp_behavior
+ card.rarity
+ card_stamp_image(field: 1, face: 1)
+ z index: 860
diff --git a/data/magic-modules.mse-include/stamps/card_fields_dfc b/data/magic-modules.mse-include/stamps/card_fields_dfc
new file mode 100644
index 000000000..24cae3aaa
--- /dev/null
+++ b/data/magic-modules.mse-include/stamps/card_fields_dfc
@@ -0,0 +1,37 @@
+include file: /magic-modules.mse-include/stamps/card_fields
+card style:
+ card stamp 2:
+ left:
+ script:
+ width := face_coordinates_map(2).width
+ height := face_coordinates_map(2).height
+ if width > height then face_coordinates_map(2).left + 7 * width/523 + card_stamp_offset_left_2()
+ else face_coordinates_map(2).left + 166 * width/375 + card_stamp_offset_left_2()
+ top:
+ script:
+ width := face_coordinates_map(2).width
+ height := face_coordinates_map(2).height
+ if width > height then face_coordinates_map(2).top + 166 * height/375 + card_stamp_offset_top_2()
+ else face_coordinates_map(2).top + 473 * height/523 + card_stamp_offset_top_2()
+ width:
+ script:
+ width := face_coordinates_map(2).width
+ height := face_coordinates_map(2).height
+ if width > height then 43 * width/523 + card_stamp_offset_width_2()
+ else 43 * width/375 + card_stamp_offset_width_2()
+ height:
+ script:
+ width := face_coordinates_map(2).width
+ height := face_coordinates_map(2).height
+ if width > height then 43 * height/375 + card_stamp_offset_height_2()
+ else 43 * height/523 + card_stamp_offset_height_2()
+ visible: { not card_stamp_disabled_2() }
+ popup style: in place
+ include file: /magic.mse-game/stamps/menu_choice_images
+ render style: image
+ image:
+ script:
+ set.stamp_behavior
+ card.rarity_2
+ card_stamp_image(field: 2, face: 2)
+ z index: 860
diff --git a/data/magic-modules.mse-include/stamps/card_fields_tfc b/data/magic-modules.mse-include/stamps/card_fields_tfc
new file mode 100644
index 000000000..820ed09b4
--- /dev/null
+++ b/data/magic-modules.mse-include/stamps/card_fields_tfc
@@ -0,0 +1,37 @@
+include file: /magic-modules.mse-include/stamps/card_fields_dfc
+card style:
+ card stamp 3:
+ left:
+ script:
+ width := face_coordinates_map(3).width
+ height := face_coordinates_map(3).height
+ if width > height then face_coordinates_map(3).left + 7 * width/523 + card_stamp_offset_left_3()
+ else face_coordinates_map(3).left + 166 * width/375 + card_stamp_offset_left_3()
+ top:
+ script:
+ width := face_coordinates_map(3).width
+ height := face_coordinates_map(3).height
+ if width > height then face_coordinates_map(3).top + 166 * height/375 + card_stamp_offset_top_3()
+ else face_coordinates_map(3).top + 473 * height/523 + card_stamp_offset_top_3()
+ width:
+ script:
+ width := face_coordinates_map(3).width
+ height := face_coordinates_map(3).height
+ if width > height then 43 * width/523 + card_stamp_offset_width_3()
+ else 43 * width/375 + card_stamp_offset_width_3()
+ height:
+ script:
+ width := face_coordinates_map(3).width
+ height := face_coordinates_map(3).height
+ if width > height then 43 * height/375 + card_stamp_offset_height_3()
+ else 43 * height/523 + card_stamp_offset_height_3()
+ visible: { not card_stamp_disabled_3() }
+ popup style: in place
+ include file: /magic.mse-game/stamps/menu_choice_images
+ render style: image
+ image:
+ script:
+ set.stamp_behavior
+ card.rarity_3
+ card_stamp_image(field: 3, face: 3)
+ z index: 860
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/stamps/none.png b/data/magic-modules.mse-include/stamps/none.png
new file mode 100644
index 000000000..d13f4e723
Binary files /dev/null and b/data/magic-modules.mse-include/stamps/none.png differ
diff --git a/data/magic-modules.mse-include/stamps/readme.txt b/data/magic-modules.mse-include/stamps/readme.txt
new file mode 100644
index 000000000..5e8a60212
--- /dev/null
+++ b/data/magic-modules.mse-include/stamps/readme.txt
@@ -0,0 +1,46 @@
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this, unindented, before the card style section:
+include file: /magic-modules.mse-include/stamps/card_fields
+#### For DFC or TFC templates, instead override the faces_coordinates function, and use:
+include file: /magic-modules.mse-include/stamps/card_fields_dfc
+include file: /magic-modules.mse-include/stamps/card_fields_tfc
+
+#### Default Field Placement (@375x523, w=1 h=1)
+card stamp:
+ left: 166w
+ top: 473h
+ width: 43w
+ height: 43h
+#### Customization
+#### Optionally, you can adjust global alignment by defining the following functions in the init script,
+#### which must return an int corresponding to the number of pixels you want to shift the stamp by:
+
+#### To shift the stamp up/down:
+card_stamp_offset_top_1 := { 0 }
+
+#### To shift the stamp left/right:
+card_stamp_offset_left_1 := { 0 }
+
+#### To increase/decrease the size:
+card_stamp_offset_width_1 := { 0 }
+card_stamp_offset_height_1 := { 0 }
+
+#### For the other faces on DFCs use:
+card_stamp_offset_top_2 := { 0 }
+card_stamp_offset_left_2 := { 0 }
+card_stamp_offset_width_2 := { 0 }
+card_stamp_offset_height_2 := { 0 }
+card_stamp_offset_top_3 := { 0 }
+card_stamp_offset_left_3 := { 0 }
+card_stamp_offset_width_3 := { 0 }
+card_stamp_offset_height_3 := { 0 }
+
+#### You can disable the stamp on some of the faces,
+#### by adding the following functions in the init script:
+card_stamp_disabled_1 := { true }
+card_stamp_disabled_2 := { true }
+card_stamp_disabled_3 := { true }
diff --git a/data/magic-modules.mse-include/stamps/set_choices b/data/magic-modules.mse-include/stamps/set_choices
new file mode 100644
index 000000000..7e663e306
--- /dev/null
+++ b/data/magic-modules.mse-include/stamps/set_choices
@@ -0,0 +1,8 @@
+choice: standard
+choice: none
+choice: acorn
+choice: heart
+choice: universes beyond
+choice: alchemy
+choice: alchemy old
+choice: custom
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/stamps/style_choices b/data/magic-modules.mse-include/stamps/style_choices
new file mode 100644
index 000000000..c62d0099b
--- /dev/null
+++ b/data/magic-modules.mse-include/stamps/style_choices
@@ -0,0 +1,9 @@
+choice: default
+choice: standard
+choice: none
+choice: acorn
+choice: heart
+choice: universes beyond
+choice: alchemy
+choice: alchemy old
+choice: custom
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/symbols/aetherprint.png b/data/magic-modules.mse-include/symbols/aetherprint.png
new file mode 100644
index 000000000..2784b412f
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/aetherprint.png differ
diff --git a/data/magic-modules.mse-include/symbols/artifact.png b/data/magic-modules.mse-include/symbols/artifact.png
new file mode 100644
index 000000000..f0a8a6a24
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/artifact.png differ
diff --git a/data/magic-modules.mse-include/symbols/back triangle.png b/data/magic-modules.mse-include/symbols/back triangle.png
new file mode 100644
index 000000000..2a984c045
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/back triangle.png differ
diff --git a/data/magic-modules.mse-include/symbols/battle.png b/data/magic-modules.mse-include/symbols/battle.png
new file mode 100644
index 000000000..6d5f29c8c
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/battle.png differ
diff --git a/data/magic-modules.mse-include/symbols/blank.png b/data/magic-modules.mse-include/symbols/blank.png
new file mode 100644
index 000000000..3edbaef22
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/blank.png differ
diff --git a/data/magic-modules.mse-include/symbols/card_fields b/data/magic-modules.mse-include/symbols/card_fields
new file mode 100644
index 000000000..c503dbff9
--- /dev/null
+++ b/data/magic-modules.mse-include/symbols/card_fields
@@ -0,0 +1,12 @@
+card style:
+ transformation:
+ left: { transform_symbol_left_1() + nameline_offset_left_1() }
+ top: { transform_symbol_top_1() + nameline_offset_top_1() }
+ width: { transform_symbol_width_1() + nameline_offset_height_1() }
+ height: { if transform_symbol_disabled_1() then 0 else transform_symbol_height_1() + nameline_offset_height_1() }
+ visible: { not transform_symbol_disabled_1() }
+ popup style: in place
+ include file: /magic.mse-game/symbols/menu_choice_images
+ render style: image
+ image: { transform_symbol_image(face: 1) }
+ z index: 620
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/symbols/card_fields_dfc b/data/magic-modules.mse-include/symbols/card_fields_dfc
new file mode 100644
index 000000000..e9d270278
--- /dev/null
+++ b/data/magic-modules.mse-include/symbols/card_fields_dfc
@@ -0,0 +1,13 @@
+include file: /magic-modules.mse-include/symbols/card_fields
+card style:
+ transformation 2:
+ left: { transform_symbol_left_2() + nameline_offset_left_2() }
+ top: { transform_symbol_top_2() + nameline_offset_top_2() }
+ width: { transform_symbol_width_2() + nameline_offset_height_2() }
+ height: { if transform_symbol_disabled_2() then 0 else transform_symbol_height_2() + nameline_offset_height_2() }
+ visible: { not transform_symbol_disabled_2() }
+ popup style: in place
+ include file: /magic.mse-game/symbols/menu_choice_images
+ render style: image
+ image: { transform_symbol_image(face: 2) }
+ z index: 620
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/symbols/card_fields_tfc b/data/magic-modules.mse-include/symbols/card_fields_tfc
new file mode 100644
index 000000000..1b1d953d6
--- /dev/null
+++ b/data/magic-modules.mse-include/symbols/card_fields_tfc
@@ -0,0 +1,13 @@
+include file: /magic-modules.mse-include/symbols/card_fields_dfc
+card style:
+ transformation 3:
+ left: { transform_symbol_left_3() + nameline_offset_left_3() }
+ top: { transform_symbol_top_3() + nameline_offset_top_3() }
+ width: { transform_symbol_width_3() + nameline_offset_height_3() }
+ height: { if transform_symbol_disabled_3() then 0 else transform_symbol_height_3() + nameline_offset_height_3() }
+ visible: { not transform_symbol_disabled_3() }
+ popup style: in place
+ include file: /magic.mse-game/symbols/menu_choice_images
+ render style: image
+ image: { transform_symbol_image(face: 3) }
+ z index: 620
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/symbols/choices b/data/magic-modules.mse-include/symbols/choices
new file mode 100644
index 000000000..ec64d916a
--- /dev/null
+++ b/data/magic-modules.mse-include/symbols/choices
@@ -0,0 +1,87 @@
+choice: front triangle
+choice: day
+choice: moon
+choice: closed fan
+choice: meld
+choice: sparker
+choice:
+ name: sparker (colored)
+ choice: default
+ choice: white
+ choice: blue
+ choice: black
+ choice: red
+ choice: green
+ choice: multicolor
+ choice: colorless
+ choice: artifact
+ line below: true
+
+choice: back triangle
+choice: night
+choice: eldrazi
+choice: compass
+choice: open fan
+choice: specialized
+choice:
+ name: aetherprint
+ line below: true
+choice: none
+choice: lesson
+choice:
+ name: custom symbol
+ choice: one
+ choice: two
+ choice: three
+ choice: four
+choice:
+ name: extra
+ choice: comedy
+ choice: tragedy
+ line below: true
+choice:
+ name: modal front
+ choice: default
+ choice: white
+ choice: blue
+ choice: black
+ choice: red
+ choice: green
+ choice: multicolor
+ choice: colorless
+ choice: artifact
+choice:
+ name: modal back
+ line below: true
+ choice: default
+ choice: white
+ choice: blue
+ choice: black
+ choice: red
+ choice: green
+ choice: multicolor
+ choice: colorless
+ choice: artifact
+
+choice: multitype
+choice: artifact
+choice: battle
+choice: creature
+choice: enchantment
+choice: fortress
+choice: instant
+choice: land
+choice: planeswalker
+choice: sorcery
+choice:
+ name: non standard
+ line below: true
+ choice: conspiracy
+ choice: dungeon
+ choice: emblem
+ choice: hero
+ choice: phenomenon
+ choice: plane
+ choice: scheme
+ choice: vanguard
+ line below: true
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/symbols/closed fan.png b/data/magic-modules.mse-include/symbols/closed fan.png
new file mode 100644
index 000000000..fd95311d5
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/closed fan.png differ
diff --git a/data/magic-modules.mse-include/symbols/comedy.png b/data/magic-modules.mse-include/symbols/comedy.png
new file mode 100644
index 000000000..0b8aecb39
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/comedy.png differ
diff --git a/data/magic-modules.mse-include/symbols/compass.png b/data/magic-modules.mse-include/symbols/compass.png
new file mode 100644
index 000000000..02221a8d9
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/compass.png differ
diff --git a/data/magic-modules.mse-include/symbols/conspiracy.png b/data/magic-modules.mse-include/symbols/conspiracy.png
new file mode 100644
index 000000000..58436e3be
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/conspiracy.png differ
diff --git a/data/magic-modules.mse-include/symbols/creature.png b/data/magic-modules.mse-include/symbols/creature.png
new file mode 100644
index 000000000..e1fc8adc1
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/creature.png differ
diff --git a/data/magic-modules.mse-include/symbols/day.png b/data/magic-modules.mse-include/symbols/day.png
new file mode 100644
index 000000000..6f938f82d
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/day.png differ
diff --git a/data/magic-modules.mse-include/symbols/dungeon.png b/data/magic-modules.mse-include/symbols/dungeon.png
new file mode 100644
index 000000000..21c95b86c
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/dungeon.png differ
diff --git a/data/magic-modules.mse-include/symbols/eldrazi.png b/data/magic-modules.mse-include/symbols/eldrazi.png
new file mode 100644
index 000000000..94e83d140
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/eldrazi.png differ
diff --git a/data/magic-modules.mse-include/symbols/enchantment.png b/data/magic-modules.mse-include/symbols/enchantment.png
new file mode 100644
index 000000000..7e0c061f1
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/enchantment.png differ
diff --git a/data/magic-modules.mse-include/symbols/front triangle.png b/data/magic-modules.mse-include/symbols/front triangle.png
new file mode 100644
index 000000000..4d3cd96ee
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/front triangle.png differ
diff --git a/data/magic-modules.mse-include/symbols/hero.png b/data/magic-modules.mse-include/symbols/hero.png
new file mode 100644
index 000000000..c899d0e18
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/hero.png differ
diff --git a/data/magic-modules.mse-include/symbols/instant.png b/data/magic-modules.mse-include/symbols/instant.png
new file mode 100644
index 000000000..417e3cce0
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/instant.png differ
diff --git a/data/magic-modules.mse-include/symbols/land.png b/data/magic-modules.mse-include/symbols/land.png
new file mode 100644
index 000000000..181b8b936
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/land.png differ
diff --git a/data/magic-modules.mse-include/symbols/lesson.png b/data/magic-modules.mse-include/symbols/lesson.png
new file mode 100644
index 000000000..d0fb8a22a
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/lesson.png differ
diff --git a/data/magic-modules.mse-include/symbols/meld.png b/data/magic-modules.mse-include/symbols/meld.png
new file mode 100644
index 000000000..1d00a4847
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/meld.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalback/artifact.png b/data/magic-modules.mse-include/symbols/modalback/artifact.png
new file mode 100644
index 000000000..a81cdfa77
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalback/artifact.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalback/black.png b/data/magic-modules.mse-include/symbols/modalback/black.png
new file mode 100644
index 000000000..34b53d705
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalback/black.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalback/blue.png b/data/magic-modules.mse-include/symbols/modalback/blue.png
new file mode 100644
index 000000000..b88e6dbf9
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalback/blue.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalback/colorless.png b/data/magic-modules.mse-include/symbols/modalback/colorless.png
new file mode 100644
index 000000000..d51784e6d
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalback/colorless.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalback/green.png b/data/magic-modules.mse-include/symbols/modalback/green.png
new file mode 100644
index 000000000..d7cab4d5e
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalback/green.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalback/multicolor.png b/data/magic-modules.mse-include/symbols/modalback/multicolor.png
new file mode 100644
index 000000000..7af13f064
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalback/multicolor.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalback/red.png b/data/magic-modules.mse-include/symbols/modalback/red.png
new file mode 100644
index 000000000..552bf8e1c
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalback/red.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalback/white.png b/data/magic-modules.mse-include/symbols/modalback/white.png
new file mode 100644
index 000000000..51ad3ad27
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalback/white.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalbackflipped/artifact.png b/data/magic-modules.mse-include/symbols/modalbackflipped/artifact.png
new file mode 100644
index 000000000..2d394e018
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalbackflipped/artifact.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalbackflipped/black.png b/data/magic-modules.mse-include/symbols/modalbackflipped/black.png
new file mode 100644
index 000000000..fc88cd0e8
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalbackflipped/black.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalbackflipped/blue.png b/data/magic-modules.mse-include/symbols/modalbackflipped/blue.png
new file mode 100644
index 000000000..9a083580f
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalbackflipped/blue.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalbackflipped/colorless.png b/data/magic-modules.mse-include/symbols/modalbackflipped/colorless.png
new file mode 100644
index 000000000..928f8289d
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalbackflipped/colorless.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalbackflipped/green.png b/data/magic-modules.mse-include/symbols/modalbackflipped/green.png
new file mode 100644
index 000000000..2a6edeb0c
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalbackflipped/green.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalbackflipped/multicolor.png b/data/magic-modules.mse-include/symbols/modalbackflipped/multicolor.png
new file mode 100644
index 000000000..5582c5b8c
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalbackflipped/multicolor.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalbackflipped/red.png b/data/magic-modules.mse-include/symbols/modalbackflipped/red.png
new file mode 100644
index 000000000..3604ee77b
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalbackflipped/red.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalbackflipped/white.png b/data/magic-modules.mse-include/symbols/modalbackflipped/white.png
new file mode 100644
index 000000000..fb1360a50
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalbackflipped/white.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfront/artifact.png b/data/magic-modules.mse-include/symbols/modalfront/artifact.png
new file mode 100644
index 000000000..64757b840
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfront/artifact.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfront/black.png b/data/magic-modules.mse-include/symbols/modalfront/black.png
new file mode 100644
index 000000000..f1668c7fd
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfront/black.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfront/blue.png b/data/magic-modules.mse-include/symbols/modalfront/blue.png
new file mode 100644
index 000000000..3a5bd3e71
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfront/blue.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfront/colorless.png b/data/magic-modules.mse-include/symbols/modalfront/colorless.png
new file mode 100644
index 000000000..836ddcd16
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfront/colorless.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfront/green.png b/data/magic-modules.mse-include/symbols/modalfront/green.png
new file mode 100644
index 000000000..f45aeab32
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfront/green.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfront/multicolor.png b/data/magic-modules.mse-include/symbols/modalfront/multicolor.png
new file mode 100644
index 000000000..e47de4f38
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfront/multicolor.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfront/red.png b/data/magic-modules.mse-include/symbols/modalfront/red.png
new file mode 100644
index 000000000..06879c00d
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfront/red.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfront/white.png b/data/magic-modules.mse-include/symbols/modalfront/white.png
new file mode 100644
index 000000000..9076db921
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfront/white.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfrontflipped/artifact.png b/data/magic-modules.mse-include/symbols/modalfrontflipped/artifact.png
new file mode 100644
index 000000000..31144c816
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfrontflipped/artifact.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfrontflipped/black.png b/data/magic-modules.mse-include/symbols/modalfrontflipped/black.png
new file mode 100644
index 000000000..71be0b86d
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfrontflipped/black.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfrontflipped/blue.png b/data/magic-modules.mse-include/symbols/modalfrontflipped/blue.png
new file mode 100644
index 000000000..1928147b8
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfrontflipped/blue.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfrontflipped/colorless.png b/data/magic-modules.mse-include/symbols/modalfrontflipped/colorless.png
new file mode 100644
index 000000000..081250f49
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfrontflipped/colorless.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfrontflipped/green.png b/data/magic-modules.mse-include/symbols/modalfrontflipped/green.png
new file mode 100644
index 000000000..5bdd3a6e0
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfrontflipped/green.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfrontflipped/multicolor.png b/data/magic-modules.mse-include/symbols/modalfrontflipped/multicolor.png
new file mode 100644
index 000000000..0d99a23a2
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfrontflipped/multicolor.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfrontflipped/red.png b/data/magic-modules.mse-include/symbols/modalfrontflipped/red.png
new file mode 100644
index 000000000..eee6b901d
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfrontflipped/red.png differ
diff --git a/data/magic-modules.mse-include/symbols/modalfrontflipped/white.png b/data/magic-modules.mse-include/symbols/modalfrontflipped/white.png
new file mode 100644
index 000000000..af7ffeb49
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/modalfrontflipped/white.png differ
diff --git a/data/magic-modules.mse-include/symbols/moon.png b/data/magic-modules.mse-include/symbols/moon.png
new file mode 100644
index 000000000..9c5b7c9d2
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/moon.png differ
diff --git a/data/magic-modules.mse-include/symbols/multitype.png b/data/magic-modules.mse-include/symbols/multitype.png
new file mode 100644
index 000000000..0484d583d
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/multitype.png differ
diff --git a/data/magic-modules.mse-include/symbols/night.png b/data/magic-modules.mse-include/symbols/night.png
new file mode 100644
index 000000000..3b8b1a456
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/night.png differ
diff --git a/data/magic-modules.mse-include/symbols/open fan.png b/data/magic-modules.mse-include/symbols/open fan.png
new file mode 100644
index 000000000..1c3035ed6
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/open fan.png differ
diff --git a/data/magic-modules.mse-include/symbols/phenomenon.png b/data/magic-modules.mse-include/symbols/phenomenon.png
new file mode 100644
index 000000000..03927b16d
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/phenomenon.png differ
diff --git a/data/magic-modules.mse-include/symbols/plane.png b/data/magic-modules.mse-include/symbols/plane.png
new file mode 100644
index 000000000..180c42d18
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/plane.png differ
diff --git a/data/magic-modules.mse-include/symbols/planeswalker.png b/data/magic-modules.mse-include/symbols/planeswalker.png
new file mode 100644
index 000000000..13599765c
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/planeswalker.png differ
diff --git a/data/magic-modules.mse-include/symbols/readme.txt b/data/magic-modules.mse-include/symbols/readme.txt
new file mode 100644
index 000000000..10f52de89
--- /dev/null
+++ b/data/magic-modules.mse-include/symbols/readme.txt
@@ -0,0 +1,60 @@
+#### Consider using the Namelines module instead of this one
+
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this, unindented, before the card style section:
+include file: /magic-modules.mse-include/symbols/card_fields
+#### For DFC or TFC templates, instead override the faces_coordinates function, and use:
+include file: /magic-modules.mse-include/symbols/card_fields_dfc
+include file: /magic-modules.mse-include/symbols/card_fields_tfc
+
+#### Default Field Placement (@375x523, w=1 h=1)
+transformation:
+ left: 13w, 319 mirrored
+ top: 19h
+ width: 43w
+ height: 43h
+#### Customization
+#### The symbols default to "none", defaults can be changed with
+transform_symbol_default :=
+{
+ if margin_code == "transform1" then "front triangle"
+ else if margin_code == "transform2" then "back triangle"
+ else "eldrazi"
+}
+#### Optionally, you can adjust global alignment by defining the following functions in the init script,
+#### which must return an int corresponding to the number of pixels you want to shift things by:
+
+#### To shift everything up/down:
+transform_symbol_offset_top_1 := { 0 }
+
+#### To shift everything left/right:
+transform_symbol_offset_left_1 := { 0 }
+
+#### To increase/decrease the size:
+transform_symbol_offset_width_1 := { 0 }
+transform_symbol_offset_height_1 := { 0 }
+
+#### To move the symbol to the right of the card:
+transform_symbol_mirrored_1 := { true }
+
+#### For the other faces on DFCs use:
+transform_symbol_offset_top_2 := { 0 }
+transform_symbol_offset_left_2 := { 0 }
+transform_symbol_offset_width_2 := { 0 }
+transform_symbol_offset_height_2 := { 0 }
+transform_symbol_offset_mirrored_2 := { 0 }
+transform_symbol_offset_top_3 := { 0 }
+transform_symbol_offset_left_3 := { 0 }
+transform_symbol_offset_width_3 := { 0 }
+transform_symbol_offset_height_3 := { 0 }
+transform_symbol_offset_mirrored_3 := { 0 }
+
+#### You can disable the symbols on some of the faces,
+#### by adding the following functions in the init script:
+transform_symbol_disabled_1 := { true }
+transform_symbol_disabled_2 := { true }
+transform_symbol_disabled_3 := { true }
diff --git a/data/magic-modules.mse-include/symbols/scheme.png b/data/magic-modules.mse-include/symbols/scheme.png
new file mode 100644
index 000000000..fbad5825a
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/scheme.png differ
diff --git a/data/magic-modules.mse-include/symbols/sorcery.png b/data/magic-modules.mse-include/symbols/sorcery.png
new file mode 100644
index 000000000..62f3d8218
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/sorcery.png differ
diff --git a/data/magic-modules.mse-include/symbols/sparker.png b/data/magic-modules.mse-include/symbols/sparker.png
new file mode 100644
index 000000000..4f2d6596a
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/sparker.png differ
diff --git a/data/magic-modules.mse-include/symbols/sparker/artifact.png b/data/magic-modules.mse-include/symbols/sparker/artifact.png
new file mode 100644
index 000000000..496578f5c
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/sparker/artifact.png differ
diff --git a/data/magic-modules.mse-include/symbols/sparker/black.png b/data/magic-modules.mse-include/symbols/sparker/black.png
new file mode 100644
index 000000000..72dce0014
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/sparker/black.png differ
diff --git a/data/magic-modules.mse-include/symbols/sparker/blue.png b/data/magic-modules.mse-include/symbols/sparker/blue.png
new file mode 100644
index 000000000..8758904b5
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/sparker/blue.png differ
diff --git a/data/magic-modules.mse-include/symbols/sparker/colorless.png b/data/magic-modules.mse-include/symbols/sparker/colorless.png
new file mode 100644
index 000000000..a918bb432
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/sparker/colorless.png differ
diff --git a/data/magic-modules.mse-include/symbols/sparker/green.png b/data/magic-modules.mse-include/symbols/sparker/green.png
new file mode 100644
index 000000000..4c8a21621
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/sparker/green.png differ
diff --git a/data/magic-modules.mse-include/symbols/sparker/multicolor.png b/data/magic-modules.mse-include/symbols/sparker/multicolor.png
new file mode 100644
index 000000000..9c1869c2c
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/sparker/multicolor.png differ
diff --git a/data/magic-modules.mse-include/symbols/sparker/red.png b/data/magic-modules.mse-include/symbols/sparker/red.png
new file mode 100644
index 000000000..a48a455c0
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/sparker/red.png differ
diff --git a/data/magic-modules.mse-include/symbols/sparker/white.png b/data/magic-modules.mse-include/symbols/sparker/white.png
new file mode 100644
index 000000000..05b371bb1
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/sparker/white.png differ
diff --git a/data/magic-modules.mse-include/symbols/specialized.png b/data/magic-modules.mse-include/symbols/specialized.png
new file mode 100644
index 000000000..5012e546c
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/specialized.png differ
diff --git a/data/magic-modules.mse-include/symbols/structure.png b/data/magic-modules.mse-include/symbols/structure.png
new file mode 100644
index 000000000..47f68e79e
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/structure.png differ
diff --git a/data/magic-modules.mse-include/symbols/tragedy.png b/data/magic-modules.mse-include/symbols/tragedy.png
new file mode 100644
index 000000000..3793e2de5
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/tragedy.png differ
diff --git a/data/magic-modules.mse-include/symbols/vanguard.png b/data/magic-modules.mse-include/symbols/vanguard.png
new file mode 100644
index 000000000..b5c5d1d36
Binary files /dev/null and b/data/magic-modules.mse-include/symbols/vanguard.png differ
diff --git a/data/magic-modules.mse-include/texts/readme.txt b/data/magic-modules.mse-include/texts/readme.txt
new file mode 100644
index 000000000..30cf3f166
--- /dev/null
+++ b/data/magic-modules.mse-include/texts/readme.txt
@@ -0,0 +1,10 @@
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this among the styling field section,
+#### (styling fields will appear in the order you place them).
+#### This adds a package option to select an alternate mana font for the rule text,
+#### And another to modify the dimensions of the textbox.
+include file: /magic-modules.mse-include/texts/styling_fields
diff --git a/data/magic-modules.mse-include/texts/styling_fields b/data/magic-modules.mse-include/texts/styling_fields
new file mode 100644
index 000000000..5922197fc
--- /dev/null
+++ b/data/magic-modules.mse-include/texts/styling_fields
@@ -0,0 +1,8 @@
+styling field:
+ type: package choice
+ name: text box mana symbols
+ description: Mana symbols used inside rule text.
+styling field:
+ type: text
+ name: chop text box
+ description: Formatted as "X,Y,Z". Shrinks the rule textbox X pixels from the top, Y from the bottom and Z from the right.
diff --git a/data/magic-modules.mse-include/typelines/card_fields b/data/magic-modules.mse-include/typelines/card_fields
new file mode 100644
index 000000000..2924abb5a
--- /dev/null
+++ b/data/magic-modules.mse-include/typelines/card_fields
@@ -0,0 +1,3 @@
+include file: /magic-modules.mse-include/rarities/card_fields
+include file: /magic-modules.mse-include/indicators/card_fields
+include file: /magic-modules.mse-include/types/card_fields
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/typelines/card_fields_dfc b/data/magic-modules.mse-include/typelines/card_fields_dfc
new file mode 100644
index 000000000..3d2d1cd5e
--- /dev/null
+++ b/data/magic-modules.mse-include/typelines/card_fields_dfc
@@ -0,0 +1,3 @@
+include file: /magic-modules.mse-include/rarities/card_fields_dfc
+include file: /magic-modules.mse-include/indicators/card_fields_dfc
+include file: /magic-modules.mse-include/types/card_fields_dfc
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/typelines/card_fields_tfc b/data/magic-modules.mse-include/typelines/card_fields_tfc
new file mode 100644
index 000000000..fb7457ef9
--- /dev/null
+++ b/data/magic-modules.mse-include/typelines/card_fields_tfc
@@ -0,0 +1,3 @@
+include file: /magic-modules.mse-include/rarities/card_fields_tfc
+include file: /magic-modules.mse-include/indicators/card_fields_tfc
+include file: /magic-modules.mse-include/types/card_fields_tfc
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/typelines/readme.txt b/data/magic-modules.mse-include/typelines/readme.txt
new file mode 100644
index 000000000..df8d21dad
--- /dev/null
+++ b/data/magic-modules.mse-include/typelines/readme.txt
@@ -0,0 +1,56 @@
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this, unindented, before the card style section:
+include file: /magic-modules.mse-include/typelines/card_fields
+#### For DFC or TFC templates, instead override the faces_coordinates function, and use:
+include file: /magic-modules.mse-include/typelines/card_fields_dfc
+include file: /magic-modules.mse-include/typelines/card_fields_tfc
+
+#### Customization
+#### Optionally, you can define which face of the card the typeline should snap to,
+#### by defining the following function in the init script:
+typeline_face_1 := { 1 }
+
+#### You can also adjust global alignment by defining the following functions, again in the init script,
+#### which must return an int corresponding to the number of pixels you want to shift the typeline by:
+
+#### To shift the entire typeline up/down (type + rarity + color indicator dot):
+typeline_offset_top_1 := { 0 }
+
+#### To shift the entire typeline left/right:
+typeline_offset_left_1 := { 0 }
+
+#### To increase/decrease the width of the entire typeline (this WILL NOT change the size of the rarity and color indicator):
+typeline_offset_width_1 := { 0 }
+
+#### To increase/decrease the height of the entire typeline (this WILL change the size of the rarity and color indicator):
+typeline_offset_height_1 := { 0 }
+
+#### You can also adjust each of the components individually:
+indicator_offset_top_1 := { 0 }
+indicator_offset_left_1 := { 0 }
+indicator_offset_size_1 := { 0 }
+
+rarity_offset_top_1 := { 0 }
+rarity_offset_left_1 := { 0 }
+rarity_offset_size_1 := { 0 }
+
+type_offset_top_1 := { 0 }
+type_offset_left_1 := { 0 }
+type_offset_right_1 := { 0 }
+type_offset_height_1 := { 0 }
+
+#### For DFC or TFC templates, use:
+typeline_offset_top_2 := { 0 }
+typeline_offset_left_2 := { 0 }
+typeline_offset_width_2 := { 0 }
+typeline_offset_height_2 := { 0 }
+typeline_offset_top_3 := { 0 }
+typeline_offset_left_3 := { 0 }
+typeline_offset_width_3 := { 0 }
+typeline_offset_height_3 := { 0 }
+etc...
+
diff --git a/data/magic-modules.mse-include/types/card_fields b/data/magic-modules.mse-include/types/card_fields
new file mode 100644
index 000000000..9f6581831
--- /dev/null
+++ b/data/magic-modules.mse-include/types/card_fields
@@ -0,0 +1,15 @@
+card style:
+ type:
+ left: { indicator_left_1() + type_indicator_shift_1() + type_offset_left_1() + typeline_offset_left_1() }
+ top: { indicator_top_1() - indicator_size_1() * 0.2 + type_offset_top_1() + typeline_offset_top_1() + type_font_vertical() }
+ right: { rarity_left_1() + type_offset_right_1() + typeline_offset_left_1() + typeline_offset_width_1() - typeline_offset_height_1() }
+ height: { indicator_size_1() * 1.3 + type_offset_height_1() + typeline_offset_height_1() }
+ z index: 900
+ alignment: middle left shrink-overflow
+ visible: { (not typeline_disabled_1()) and not type_disabled_1() }
+ font:
+ name: { type_font() }
+ italic name: { type_font_italic() }
+ size: { type_font_size() }
+ color: { type_font_color() }
+ separator color: red
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/types/card_fields_dfc b/data/magic-modules.mse-include/types/card_fields_dfc
new file mode 100644
index 000000000..94e53d867
--- /dev/null
+++ b/data/magic-modules.mse-include/types/card_fields_dfc
@@ -0,0 +1,16 @@
+include file: /magic-modules.mse-include/types/card_fields
+card style:
+ type 2:
+ left: { indicator_left_2() + type_indicator_shift_2() + type_offset_left_2() + typeline_offset_left_2() }
+ top: { indicator_top_2() - indicator_size_2() * 0.2 + type_offset_top_2() + typeline_offset_top_2()+ type2_font_vertical() }
+ right: { rarity_left_2() + type_offset_right_2() + typeline_offset_left_2() + typeline_offset_width_2() - typeline_offset_height_2() }
+ height: { indicator_size_2() *1.3 + type_offset_height_2() + typeline_offset_height_2() }
+ z index: 900
+ alignment: middle left shrink-overflow
+ visible: { (not typeline_disabled_2()) and not type_disabled_2() }
+ font:
+ name: { type2_font() }
+ italic name: { type2_font_italic() }
+ size: { type2_font_size() }
+ color: { type2_font_color() }
+ separator color: red
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/types/card_fields_tfc b/data/magic-modules.mse-include/types/card_fields_tfc
new file mode 100644
index 000000000..29aaa0fa7
--- /dev/null
+++ b/data/magic-modules.mse-include/types/card_fields_tfc
@@ -0,0 +1,16 @@
+include file: /magic-modules.mse-include/types/card_fields_dfc
+card style:
+ type 3:
+ left: { indicator_left_3() + type_indicator_shift_3() + type_offset_left_3() + typeline_offset_left_3() }
+ top: { indicator_top_3() - indicator_size_3() * 0.2 + type_offset_top_3() + typeline_offset_top_3()+ type3_font_vertical() }
+ right: { rarity_left_3() + type_offset_right_3() + typeline_offset_left_3() + typeline_offset_width_3() - typeline_offset_height_3() }
+ height: { indicator_size_3() * 1.3 + type_offset_height_3() + typeline_offset_height_3() }
+ z index: 900
+ alignment: middle left shrink-overflow
+ visible: { (not typeline_disabled_3()) and not type_disabled_3() }
+ font:
+ name: { type3_font() }
+ italic name: { type3_font_italic() }
+ size: { type3_font_size() }
+ color: { type3_font_color() }
+ separator color: red
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/types/readme.txt b/data/magic-modules.mse-include/types/readme.txt
new file mode 100644
index 000000000..487ed3aa3
--- /dev/null
+++ b/data/magic-modules.mse-include/types/readme.txt
@@ -0,0 +1,43 @@
+#### Consider using the Typelines module instead of this one
+
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this, unindented, before the card style section:
+include file: /magic-modules.mse-include/types/card_fields
+#### For DFC or TFC templates, instead override the faces_coordinates function, and use:
+include file: /magic-modules.mse-include/types/card_fields_dfc
+include file: /magic-modules.mse-include/types/card_fields_tfc
+
+#### Default Field Placement (@375x523, w=1 h=1)
+type:
+ left: 31w + 1.15*indicator_width
+ top: 300h
+ width: variable
+ height: 22h
+#### Customization
+#### Optionally, you can define which face of the card the type should snap to,
+#### by defining the following function in the init script:
+typeline_face_1 := { 1 }
+
+#### You can also adjust global alignment by defining the following functions, again in the init script,
+#### which must return an int corresponding to the number of pixels you want to shift the type by:
+
+#### To shift the type up/down:
+type_offset_top_1 := { 0 }
+
+#### To shift the type left/right:
+type_offset_left_1 := { 0 }
+
+#### To increase/decrease the width and height of the type:
+type_offset_size := { 0 }
+
+#### For DFC or TFC templates, use:
+type_offset_top_2 := { 0 }
+type_offset_left_2 := { 0 }
+type_offset_size_2 := { 0 }
+type_offset_top_3 := { 0 }
+type_offset_left_3 := { 0 }
+type_offset_size_3 := { 0 }
diff --git a/data/magic-modules.mse-include/watermarks/alara/bant.png b/data/magic-modules.mse-include/watermarks/alara/bant.png
new file mode 100644
index 000000000..d5f27338e
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/alara/bant.png differ
diff --git a/data/magic-modules.mse-include/watermarks/alara/bant_colored.png b/data/magic-modules.mse-include/watermarks/alara/bant_colored.png
new file mode 100644
index 000000000..363cb270d
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/alara/bant_colored.png differ
diff --git a/data/magic-modules.mse-include/watermarks/alara/esper.png b/data/magic-modules.mse-include/watermarks/alara/esper.png
new file mode 100644
index 000000000..78135b10c
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/alara/esper.png differ
diff --git a/data/magic-modules.mse-include/watermarks/alara/esper_colored.png b/data/magic-modules.mse-include/watermarks/alara/esper_colored.png
new file mode 100644
index 000000000..d4f039415
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/alara/esper_colored.png differ
diff --git a/data/magic-modules.mse-include/watermarks/alara/grixis.png b/data/magic-modules.mse-include/watermarks/alara/grixis.png
new file mode 100644
index 000000000..e17cf60ea
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/alara/grixis.png differ
diff --git a/data/magic-modules.mse-include/watermarks/alara/grixis_colored.png b/data/magic-modules.mse-include/watermarks/alara/grixis_colored.png
new file mode 100644
index 000000000..8e89921d2
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/alara/grixis_colored.png differ
diff --git a/data/magic-modules.mse-include/watermarks/alara/jund.png b/data/magic-modules.mse-include/watermarks/alara/jund.png
new file mode 100644
index 000000000..090d32de4
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/alara/jund.png differ
diff --git a/data/magic-modules.mse-include/watermarks/alara/jund_colored.png b/data/magic-modules.mse-include/watermarks/alara/jund_colored.png
new file mode 100644
index 000000000..a4c88b5ad
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/alara/jund_colored.png differ
diff --git a/data/magic-modules.mse-include/watermarks/alara/naya.png b/data/magic-modules.mse-include/watermarks/alara/naya.png
new file mode 100644
index 000000000..ad50a2f4a
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/alara/naya.png differ
diff --git a/data/magic-modules.mse-include/watermarks/alara/naya_colored.png b/data/magic-modules.mse-include/watermarks/alara/naya_colored.png
new file mode 100644
index 000000000..672f9d2d2
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/alara/naya_colored.png differ
diff --git a/data/magic-modules.mse-include/watermarks/capenna/brokers.png b/data/magic-modules.mse-include/watermarks/capenna/brokers.png
new file mode 100644
index 000000000..c357f1a2a
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/capenna/brokers.png differ
diff --git a/data/magic-modules.mse-include/watermarks/capenna/cabaretti.png b/data/magic-modules.mse-include/watermarks/capenna/cabaretti.png
new file mode 100644
index 000000000..f38c1869e
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/capenna/cabaretti.png differ
diff --git a/data/magic-modules.mse-include/watermarks/capenna/maestros.png b/data/magic-modules.mse-include/watermarks/capenna/maestros.png
new file mode 100644
index 000000000..a7b0a07fb
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/capenna/maestros.png differ
diff --git a/data/magic-modules.mse-include/watermarks/capenna/obscura.png b/data/magic-modules.mse-include/watermarks/capenna/obscura.png
new file mode 100644
index 000000000..507de752a
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/capenna/obscura.png differ
diff --git a/data/magic-modules.mse-include/watermarks/capenna/riveteers.png b/data/magic-modules.mse-include/watermarks/capenna/riveteers.png
new file mode 100644
index 000000000..ee6ea1e89
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/capenna/riveteers.png differ
diff --git a/data/magic-modules.mse-include/watermarks/card_fields b/data/magic-modules.mse-include/watermarks/card_fields
new file mode 100644
index 000000000..a295a153d
--- /dev/null
+++ b/data/magic-modules.mse-include/watermarks/card_fields
@@ -0,0 +1,13 @@
+card style:
+ watermark:
+ left: { text_style_field(watermark_text_field_1()).left - face_coordinates_map(watermark_face_1()).width/375*10 - watermark_offset_width_1() + watermark_offset_left_1() }
+ width: { text_style_field(watermark_text_field_1()).width + face_coordinates_map(watermark_face_1()).width/375*20 + watermark_offset_width_1()*2 }
+ top: { text_style_field(watermark_text_field_1()).top + face_coordinates_map(watermark_face_1()).height/523*3 - watermark_offset_height_1() + watermark_offset_top_1() }
+ height: { text_style_field(watermark_text_field_1()).height - face_coordinates_map(watermark_face_1()).height/523*6 + watermark_offset_height_1()*2 + (if is_stamped(field: watermark_stamp_field_1()) then watermark_offset_stamp_1() else 0) }
+ visible: { not watermark_disabled_1() }
+ alignment: middle center
+ popup style: in place
+ render style: image
+ include file: /magic.mse-game/watermarks/menu_choice_images
+ image: { watermark_scripts[card.watermark](face:watermark_face_1()) }
+ z index: 720
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/watermarks/card_fields_dfc b/data/magic-modules.mse-include/watermarks/card_fields_dfc
new file mode 100644
index 000000000..25d2d05a7
--- /dev/null
+++ b/data/magic-modules.mse-include/watermarks/card_fields_dfc
@@ -0,0 +1,14 @@
+include file: /magic-modules.mse-include/watermarks/card_fields
+card style:
+ watermark 2:
+ left: { text_style_field(watermark_text_field_2()).left - face_coordinates_map(watermark_face_2()).width/375*10 - watermark_offset_width_2() + watermark_offset_left_2() }
+ width: { text_style_field(watermark_text_field_2()).width + face_coordinates_map(watermark_face_2()).width/375*20 + watermark_offset_width_2()*2 }
+ top: { text_style_field(watermark_text_field_2()).top + face_coordinates_map(watermark_face_2()).height/523*3 - watermark_offset_height_2() + watermark_offset_top_2() }
+ height: { text_style_field(watermark_text_field_2()).height - face_coordinates_map(watermark_face_2()).height/523*6 + watermark_offset_height_2()*2 + (if is_stamped(field: watermark_stamp_field_2()) then watermark_offset_stamp_2() else 0) }
+ visible: { not watermark_disabled_2() }
+ alignment: middle center
+ popup style: in place
+ render style: image
+ include file: /magic.mse-game/watermarks/menu_choice_images
+ image: { watermark_scripts[card.watermark_2](face:watermark_face_2()) }
+ z index: 720
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/watermarks/card_fields_tfc b/data/magic-modules.mse-include/watermarks/card_fields_tfc
new file mode 100644
index 000000000..6fbb4c396
--- /dev/null
+++ b/data/magic-modules.mse-include/watermarks/card_fields_tfc
@@ -0,0 +1,14 @@
+include file: /magic-modules.mse-include/watermarks/card_fields_dfc
+card style:
+ watermark 3:
+ left: { text_style_field(watermark_text_field_3()).left - face_coordinates_map(watermark_face_3()).width/375*10 - watermark_offset_width_3() + watermark_offset_left_3() }
+ width: { text_style_field(watermark_text_field_3()).width + face_coordinates_map(watermark_face_3()).width/375*20 + watermark_offset_width_3()*2 }
+ top: { text_style_field(watermark_text_field_3()).top + face_coordinates_map(watermark_face_3()).height/523*3 - watermark_offset_height_3() + watermark_offset_top_3() }
+ height: { text_style_field(watermark_text_field_3()).height - face_coordinates_map(watermark_face_3()).height/523*6 + watermark_offset_height_3()*2 + (if is_stamped(field: watermark_stamp_field_3()) then watermark_offset_stamp_3() else 0) }
+ visible: { not watermark_disabled_3() }
+ alignment: middle center
+ popup style: in place
+ render style: image
+ include file: /magic.mse-game/watermarks/menu_choice_images
+ image: { watermark_scripts[card.watermark_3](face:watermark_face_3()) }
+ z index: 720
\ No newline at end of file
diff --git a/data/magic-watermarks.mse-include/watermark-names -alara b/data/magic-modules.mse-include/watermarks/choices
similarity index 63%
rename from data/magic-watermarks.mse-include/watermark-names -alara
rename to data/magic-modules.mse-include/watermarks/choices
index f9fc9510f..32d5acb66 100644
--- a/data/magic-watermarks.mse-include/watermark-names -alara
+++ b/data/magic-modules.mse-include/watermarks/choices
@@ -4,14 +4,6 @@
choice:
name: none
line below: true
-choice:
- name: ALR
- choice: ALRBant
- choice: ALREsper
- choice: ALRGrixis
- choice: ALRJund
- choice: ALRNaya
-
choice:
name: mana symbol
choice: white
@@ -20,7 +12,25 @@ choice:
choice: red
choice: green
choice: colorless
- choice: snow
+ choice:
+ name: snow
+ line below: true
+ choice:
+ name: old
+ choice: white
+ choice: blue
+ choice: black
+ choice: red
+ choice: green
+ choice: colorless
+ choice:
+ name: hi res
+ choice: white
+ choice: blue
+ choice: black
+ choice: red
+ choice: green
+ choice: colorless
choice:
name: transparent mana symbol
choice: white
@@ -28,6 +38,25 @@ choice:
choice: black
choice: red
choice: green
+ choice:
+ name: colorless
+ line below: true
+ choice:
+ name: old
+ choice: white
+ choice: blue
+ choice: black
+ choice: red
+ choice: green
+ choice: colorless
+ choice:
+ name: hi res
+ choice: white
+ choice: blue
+ choice: black
+ choice: red
+ choice: green
+ choice: colorless
choice:
name: guild symbol
choice: The Azorius Senate (W/U)
@@ -39,7 +68,9 @@ choice:
choice: The Izzet (U/R)
choice: The Golgari (B/G)
choice: The Boros Legion (R/W)
- choice: The Simic Combine (G/U)
+ choice:
+ name: The Simic Combine (G/U)
+ line below: true
choice:
name: originals
choice: The Azorius Senate (W/U)
@@ -52,6 +83,18 @@ choice:
choice: The Golgari (B/G)
choice: The Boros Legion (R/W)
choice: The Simic Combine (G/U)
+ choice:
+ name: ancients
+ choice: The Azorius Senate (W/U)
+ choice: House Dimir (U/B)
+ choice: The Cult of Rakdos (B/R)
+ choice: The Gruul Clans (R/G)
+ choice: The Selesnya Conclave (G/W)
+ choice: The Orzhov Syndicate (W/B)
+ choice: The Izzet (U/R)
+ choice: The Golgari (B/G)
+ choice: The Boros Legion (R/W)
+ choice: The Simic Combine (G/U)
choice:
name: faction symbol
choice: mirrodin
@@ -70,6 +113,13 @@ choice:
choice: Silumgar's Brood (UB)
choice: Kolaghan's Brood (BR)
choice: Atarka's Brood (RG)
+choice:
+ name: family symbol
+ choice: Brokers (GWU)
+ choice: Cabaretti (RGW)
+ choice: Maestros (UBR)
+ choice: Obscura (WUB)
+ choice: Riveteers (BRG)
choice:
name: unstable factions
choice: Order of the Widget
@@ -79,50 +129,56 @@ choice:
choice: Crossbreed Labs
choice:
name: colored xander hybrid mana
- choice: B/R
- choice: U/B
- choice: B/G
- choice: R/G
- choice: G/U
- choice: U/R
- choice: W/B
- choice: G/W
- choice: R/W
choice: W/U
+ choice: U/B
+ choice: B/R
+ choice: R/G
+ choice: G/W
+ choice: W/B
+ choice: U/R
+ choice: B/G
+ choice: R/W
+ choice: G/U
choice:
name: xander hybrid mana
- choice: B/R
- choice: U/B
- choice: B/G
- choice: R/G
- choice: G/U
- choice: U/R
- choice: W/B
- choice: G/W
- choice: R/W
choice: W/U
+ choice: U/B
+ choice: B/R
+ choice: R/G
+ choice: G/W
+ choice: W/B
+ choice: U/R
+ choice: B/G
+ choice: R/W
+ choice: G/U
choice:
name: future sight type symbols
- choice: artifact
choice: creature
+ choice: artifact
choice: enchantment
choice: instant
choice: land
choice: multiple
choice: planeswalker
choice: sorcery
+ choice: structure
choice:
name: other magic symbols
choice: aetherprint
+ choice: desparked
+ choice: story spotlight
choice: chaos symbol
choice: color pie
choice: conspiracy stamp
- choice: story spotlight
- choice: color spotlight
choice: jace consortium
+ choice: shooting star
choice: phyrexia
choice: seekers of carmot
choice: the thran
+ choice: foretell
+ choice:
+ name: judge academy
+ line below: true
choice:
name: innistrad provinces
choice: stensia
@@ -140,7 +196,9 @@ choice:
choice: Esper
choice: Grixis
choice: Jund
- choice: Naya
+ choice:
+ name: Naya
+ line below: true
choice:
name: colored
choice: Bant
@@ -148,7 +206,29 @@ choice:
choice: Grixis
choice: Jund
choice: Naya
-
+choice:
+ name: college symbols
+ choice: Silverquill
+ choice: Prismari
+ choice: Witherbloom
+ choice: Lorehold
+ choice: Quandrix
+choice:
+ name: universes beyond
+ choice: D&D
+ choice:
+ name: transformers
+ line below: true
+ choice:
+ name: ponies
+ choice: applejack
+ choice: pinkie pie
+ choice: fluttershy
+ choice: rainbow dash
+ choice: rarity
+ choice: twilight sparkle
+ choice: nightmare moon
+ choice: luna
choice:
name: custom watermark
choice: one
@@ -161,6 +241,7 @@ choice:
choice: eight
choice: nine
choice: ten
+ choice: card
choice:
name: set symbol
diff --git a/data/magic-modules.mse-include/watermarks/frazier/azorius.png b/data/magic-modules.mse-include/watermarks/frazier/azorius.png
new file mode 100644
index 000000000..a797a7a56
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/frazier/azorius.png differ
diff --git a/data/magic-modules.mse-include/watermarks/frazier/boros.png b/data/magic-modules.mse-include/watermarks/frazier/boros.png
new file mode 100644
index 000000000..2ec13fa3f
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/frazier/boros.png differ
diff --git a/data/magic-modules.mse-include/watermarks/frazier/dimir.png b/data/magic-modules.mse-include/watermarks/frazier/dimir.png
new file mode 100644
index 000000000..e44756606
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/frazier/dimir.png differ
diff --git a/data/magic-modules.mse-include/watermarks/frazier/golgari.png b/data/magic-modules.mse-include/watermarks/frazier/golgari.png
new file mode 100644
index 000000000..81c23b728
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/frazier/golgari.png differ
diff --git a/data/magic-modules.mse-include/watermarks/frazier/gruul.png b/data/magic-modules.mse-include/watermarks/frazier/gruul.png
new file mode 100644
index 000000000..b35d65984
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/frazier/gruul.png differ
diff --git a/data/magic-modules.mse-include/watermarks/frazier/izzet.png b/data/magic-modules.mse-include/watermarks/frazier/izzet.png
new file mode 100644
index 000000000..f0fcae5c8
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/frazier/izzet.png differ
diff --git a/data/magic-modules.mse-include/watermarks/frazier/orzhov.png b/data/magic-modules.mse-include/watermarks/frazier/orzhov.png
new file mode 100644
index 000000000..194d520b4
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/frazier/orzhov.png differ
diff --git a/data/magic-modules.mse-include/watermarks/frazier/rakdos.png b/data/magic-modules.mse-include/watermarks/frazier/rakdos.png
new file mode 100644
index 000000000..1584c025e
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/frazier/rakdos.png differ
diff --git a/data/magic-modules.mse-include/watermarks/frazier/selesnya.png b/data/magic-modules.mse-include/watermarks/frazier/selesnya.png
new file mode 100644
index 000000000..c86f87140
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/frazier/selesnya.png differ
diff --git a/data/magic-modules.mse-include/watermarks/frazier/simic.png b/data/magic-modules.mse-include/watermarks/frazier/simic.png
new file mode 100644
index 000000000..b7aacf27a
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/frazier/simic.png differ
diff --git a/data/magic-modules.mse-include/watermarks/future/artifact.png b/data/magic-modules.mse-include/watermarks/future/artifact.png
new file mode 100644
index 000000000..b54bb5680
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/future/artifact.png differ
diff --git a/data/magic-modules.mse-include/watermarks/future/creature.png b/data/magic-modules.mse-include/watermarks/future/creature.png
new file mode 100644
index 000000000..f230d4b66
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/future/creature.png differ
diff --git a/data/magic-modules.mse-include/watermarks/future/enchantment.png b/data/magic-modules.mse-include/watermarks/future/enchantment.png
new file mode 100644
index 000000000..f50aa903b
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/future/enchantment.png differ
diff --git a/data/magic-modules.mse-include/watermarks/future/instant.png b/data/magic-modules.mse-include/watermarks/future/instant.png
new file mode 100644
index 000000000..0ae6b8078
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/future/instant.png differ
diff --git a/data/magic-modules.mse-include/watermarks/future/land.png b/data/magic-modules.mse-include/watermarks/future/land.png
new file mode 100644
index 000000000..f8ce9e29b
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/future/land.png differ
diff --git a/data/magic-modules.mse-include/watermarks/future/multitype.png b/data/magic-modules.mse-include/watermarks/future/multitype.png
new file mode 100644
index 000000000..b66316c6e
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/future/multitype.png differ
diff --git a/data/magic-modules.mse-include/watermarks/future/planeswalker.png b/data/magic-modules.mse-include/watermarks/future/planeswalker.png
new file mode 100644
index 000000000..824b523f6
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/future/planeswalker.png differ
diff --git a/data/magic-modules.mse-include/watermarks/future/sorcery.png b/data/magic-modules.mse-include/watermarks/future/sorcery.png
new file mode 100644
index 000000000..34a61fa21
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/future/sorcery.png differ
diff --git a/data/magic-modules.mse-include/watermarks/future/structure.png b/data/magic-modules.mse-include/watermarks/future/structure.png
new file mode 100644
index 000000000..392090915
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/future/structure.png differ
diff --git a/data/magic-modules.mse-include/watermarks/innistrad/gavony.png b/data/magic-modules.mse-include/watermarks/innistrad/gavony.png
new file mode 100644
index 000000000..435c46551
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/innistrad/gavony.png differ
diff --git a/data/magic-modules.mse-include/watermarks/innistrad/kessig.png b/data/magic-modules.mse-include/watermarks/innistrad/kessig.png
new file mode 100644
index 000000000..5807e9378
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/innistrad/kessig.png differ
diff --git a/data/magic-modules.mse-include/watermarks/innistrad/nephalia.png b/data/magic-modules.mse-include/watermarks/innistrad/nephalia.png
new file mode 100644
index 000000000..25aeb04f7
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/innistrad/nephalia.png differ
diff --git a/data/magic-modules.mse-include/watermarks/innistrad/stensia.png b/data/magic-modules.mse-include/watermarks/innistrad/stensia.png
new file mode 100644
index 000000000..794e41179
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/innistrad/stensia.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_b.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_b.png
new file mode 100644
index 000000000..c381b8e96
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_b.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_b_big.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_b_big.png
new file mode 100644
index 000000000..bb2d35ada
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_b_big.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_b_old.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_b_old.png
new file mode 100644
index 000000000..b0f4e5484
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_b_old.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_c.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_c.png
new file mode 100644
index 000000000..c762a4c90
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_c.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_c_big.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_c_big.png
new file mode 100644
index 000000000..f97e30dd6
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_c_big.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_c_old.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_c_old.png
new file mode 100644
index 000000000..a25cf93c1
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_c_old.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_g.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_g.png
new file mode 100644
index 000000000..e696b7115
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_g.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_g_big.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_g_big.png
new file mode 100644
index 000000000..f746254ad
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_g_big.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_g_old.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_g_old.png
new file mode 100644
index 000000000..f8398a770
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_g_old.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_k.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_k.png
new file mode 100644
index 000000000..3b347dfa5
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_k.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_p.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_p.png
new file mode 100644
index 000000000..6b502aa57
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_p.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_r.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_r.png
new file mode 100644
index 000000000..db5c9d90d
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_r.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_r_big.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_r_big.png
new file mode 100644
index 000000000..ab94e8e23
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_r_big.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_r_old.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_r_old.png
new file mode 100644
index 000000000..316ec4e6e
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_r_old.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_s.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_s.png
new file mode 100644
index 000000000..95a8d3e54
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_s.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_u.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_u.png
new file mode 100644
index 000000000..c38c61043
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_u.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_u_big.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_u_big.png
new file mode 100644
index 000000000..176c80d2a
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_u_big.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_u_old.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_u_old.png
new file mode 100644
index 000000000..d0ac9ffd6
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_u_old.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_w.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_w.png
new file mode 100644
index 000000000..36cc60624
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_w.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_w_big.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_w_big.png
new file mode 100644
index 000000000..799942759
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_w_big.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mana symbols/watermark_w_old.png b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_w_old.png
new file mode 100644
index 000000000..875dc2acb
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mana symbols/watermark_w_old.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mirrodin/mirrodin.png b/data/magic-modules.mse-include/watermarks/mirrodin/mirrodin.png
new file mode 100644
index 000000000..524df27f9
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mirrodin/mirrodin.png differ
diff --git a/data/magic-modules.mse-include/watermarks/mirrodin/phyrexia.png b/data/magic-modules.mse-include/watermarks/mirrodin/phyrexia.png
new file mode 100644
index 000000000..72e8f22db
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/mirrodin/phyrexia.png differ
diff --git a/data/magic-modules.mse-include/watermarks/other/aetherprint.png b/data/magic-modules.mse-include/watermarks/other/aetherprint.png
new file mode 100644
index 000000000..2092fd4c7
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/other/aetherprint.png differ
diff --git a/data/magic-modules.mse-include/watermarks/other/chaos.png b/data/magic-modules.mse-include/watermarks/other/chaos.png
new file mode 100644
index 000000000..5d23cb2d5
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/other/chaos.png differ
diff --git a/data/magic-modules.mse-include/watermarks/other/colorpie.png b/data/magic-modules.mse-include/watermarks/other/colorpie.png
new file mode 100644
index 000000000..93141245f
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/other/colorpie.png differ
diff --git a/data/magic-modules.mse-include/watermarks/other/conspiracy_stamp.png b/data/magic-modules.mse-include/watermarks/other/conspiracy_stamp.png
new file mode 100644
index 000000000..95c0b660e
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/other/conspiracy_stamp.png differ
diff --git a/data/magic-modules.mse-include/watermarks/other/desparked.png b/data/magic-modules.mse-include/watermarks/other/desparked.png
new file mode 100644
index 000000000..a2c64aa1e
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/other/desparked.png differ
diff --git a/data/magic-modules.mse-include/watermarks/other/foretell.png b/data/magic-modules.mse-include/watermarks/other/foretell.png
new file mode 100644
index 000000000..2a5db4ed7
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/other/foretell.png differ
diff --git a/data/magic-modules.mse-include/watermarks/other/jace-consortium.png b/data/magic-modules.mse-include/watermarks/other/jace-consortium.png
new file mode 100644
index 000000000..2a0b28780
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/other/jace-consortium.png differ
diff --git a/data/magic-modules.mse-include/watermarks/other/phyrexia.png b/data/magic-modules.mse-include/watermarks/other/phyrexia.png
new file mode 100644
index 000000000..b1849bbb6
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/other/phyrexia.png differ
diff --git a/data/magic-modules.mse-include/watermarks/other/planeswalker.png b/data/magic-modules.mse-include/watermarks/other/planeswalker.png
new file mode 100644
index 000000000..ffa1bc099
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/other/planeswalker.png differ
diff --git a/data/magic-modules.mse-include/watermarks/other/seekersofcarmot.png b/data/magic-modules.mse-include/watermarks/other/seekersofcarmot.png
new file mode 100644
index 000000000..ccb7b8564
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/other/seekersofcarmot.png differ
diff --git a/data/magic-modules.mse-include/watermarks/other/thran.png b/data/magic-modules.mse-include/watermarks/other/thran.png
new file mode 100644
index 000000000..1fb25807f
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/other/thran.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ponies/applejack.png b/data/magic-modules.mse-include/watermarks/ponies/applejack.png
new file mode 100644
index 000000000..3575b1b4f
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ponies/applejack.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ponies/fluttershy.png b/data/magic-modules.mse-include/watermarks/ponies/fluttershy.png
new file mode 100644
index 000000000..fe80cd3a7
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ponies/fluttershy.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ponies/luna.png b/data/magic-modules.mse-include/watermarks/ponies/luna.png
new file mode 100644
index 000000000..2338bbd97
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ponies/luna.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ponies/nightmare moon.png b/data/magic-modules.mse-include/watermarks/ponies/nightmare moon.png
new file mode 100644
index 000000000..1c2b07651
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ponies/nightmare moon.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ponies/pinkie pie.png b/data/magic-modules.mse-include/watermarks/ponies/pinkie pie.png
new file mode 100644
index 000000000..75a2ae296
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ponies/pinkie pie.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ponies/rainbow dash.png b/data/magic-modules.mse-include/watermarks/ponies/rainbow dash.png
new file mode 100644
index 000000000..a2c110b83
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ponies/rainbow dash.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ponies/rarity.png b/data/magic-modules.mse-include/watermarks/ponies/rarity.png
new file mode 100644
index 000000000..55503baea
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ponies/rarity.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ponies/twilight sparkle.png b/data/magic-modules.mse-include/watermarks/ponies/twilight sparkle.png
new file mode 100644
index 000000000..64edf5396
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ponies/twilight sparkle.png differ
diff --git a/data/magic-modules.mse-include/watermarks/promo/judge_academy.png b/data/magic-modules.mse-include/watermarks/promo/judge_academy.png
new file mode 100644
index 000000000..6217dd20e
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/promo/judge_academy.png differ
diff --git a/data/magic-modules.mse-include/watermarks/promo/shooting_star.png b/data/magic-modules.mse-include/watermarks/promo/shooting_star.png
new file mode 100644
index 000000000..5fb7522f7
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/promo/shooting_star.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_azorius.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_azorius.png
new file mode 100644
index 000000000..1f0d20e5d
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_azorius.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_azorius2.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_azorius2.png
new file mode 100644
index 000000000..3115f04e9
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_azorius2.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_boros.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_boros.png
new file mode 100644
index 000000000..1a61c7fc1
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_boros.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_boros2.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_boros2.png
new file mode 100644
index 000000000..3a9c00a66
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_boros2.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_dimir.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_dimir.png
new file mode 100644
index 000000000..22a343367
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_dimir.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_dimir2.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_dimir2.png
new file mode 100644
index 000000000..3563a6cf4
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_dimir2.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_golgari.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_golgari.png
new file mode 100644
index 000000000..1d2f60796
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_golgari.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_golgari2.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_golgari2.png
new file mode 100644
index 000000000..ac00931ee
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_golgari2.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_gruul.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_gruul.png
new file mode 100644
index 000000000..432397ca1
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_gruul.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_gruul2.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_gruul2.png
new file mode 100644
index 000000000..e3e932bd5
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_gruul2.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_izzet.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_izzet.png
new file mode 100644
index 000000000..a01901016
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_izzet.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_izzet2.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_izzet2.png
new file mode 100644
index 000000000..70eae2d7d
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_izzet2.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_orzhov.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_orzhov.png
new file mode 100644
index 000000000..0f8779bb6
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_orzhov.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_orzhov2.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_orzhov2.png
new file mode 100644
index 000000000..d711a1902
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_orzhov2.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_rakados.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_rakados.png
new file mode 100644
index 000000000..dad723f55
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_rakados.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_rakados2.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_rakados2.png
new file mode 100644
index 000000000..5d5d794c3
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_rakados2.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_selesnya.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_selesnya.png
new file mode 100644
index 000000000..9472bedd6
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_selesnya.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_selesnya2.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_selesnya2.png
new file mode 100644
index 000000000..719e7f5d4
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_selesnya2.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_simic.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_simic.png
new file mode 100644
index 000000000..74ec00b39
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_simic.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ravnica/watermark_simic2.png b/data/magic-modules.mse-include/watermarks/ravnica/watermark_simic2.png
new file mode 100644
index 000000000..6f6a231b1
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ravnica/watermark_simic2.png differ
diff --git a/data/magic-modules.mse-include/watermarks/readme.txt b/data/magic-modules.mse-include/watermarks/readme.txt
new file mode 100644
index 000000000..90fa4de43
--- /dev/null
+++ b/data/magic-modules.mse-include/watermarks/readme.txt
@@ -0,0 +1,59 @@
+#### To use this include in a template, add the following in the template headers:
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+
+#### Also add this, unindented, before the card style section:
+include file: /magic-modules.mse-include/watermarks/card_fields
+#### For DFC or TFC templates, instead override the faces_coordinates function, and use:
+include file: /magic-modules.mse-include/watermarks/card_fields_dfc
+include file: /magic-modules.mse-include/watermarks/card_fields_tfc
+
+#### Default Field Placement (@375x523, w=1 h=1)
+set code:
+ left: text_left - 10w
+ top: text_top + 3h
+ width: text_width + 20w
+ height: text_height - 6h
+#### Customization
+#### Optionally, you can define which face of the card the watermark should snap to,
+#### by defining the following function in the init script:
+watermark_face_1 := { 1 }
+
+#### Similarly, you can define which textbox the watermark should snap to:
+#### 1 is for card.text, 2 for card.text_2, and 3 for card.text_3
+watermark_text_field_1 := { 1 }
+
+#### And which stamp field it should move out of the way for:
+watermark_stamp_field_1 := { 1 }
+
+#### You can also adjust global alignment by defining the following functions, again in the init script,
+#### which must return an int corresponding to the number of pixels you want to shift the watermark by:
+
+#### To shift the watermark up/down:
+watermark_offset_top_1 := { 0 }
+
+#### To shift the watermark left/right:
+watermark_offset_left_1 := { 0 }
+
+#### To increase/decrease the width and height of the watermark:
+watermark_offset_width_1 := { 0 }
+watermark_offset_height_1 := { 0 }
+
+#### To change by how much it moves when a stamp is present:
+watermark_offset_stamp_1 := { 0 }
+
+#### For DFC or TFC templates, use:
+watermark_text_field_2 := { 2 }
+watermark_stamp_field_2 := { 2 }
+watermark_offset_top_2 := { 0 }
+watermark_offset_left_2 := { 0 }
+watermark_offset_width_2 := { 0 }
+watermark_offset_height_2 := { 0 }
+watermark_text_field_3 := { 3 }
+watermark_stamp_field_3 := { 3 }
+watermark_offset_top_3 := { 0 }
+watermark_offset_left_3 := { 0 }
+watermark_offset_width_3 := { 0 }
+watermark_offset_height_3 := { 0 }
+etc...
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/alspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/alspotlight.png
new file mode 100644
index 000000000..3285841a3
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/alspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/aspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/aspotlight.png
new file mode 100644
index 000000000..ec3684cb4
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/aspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/blspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/blspotlight.png
new file mode 100644
index 000000000..e3eae8fd1
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/blspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/bspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/bspotlight.png
new file mode 100644
index 000000000..5cf7383b1
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/bspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/clspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/clspotlight.png
new file mode 100644
index 000000000..93e6029ca
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/clspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/cspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/cspotlight.png
new file mode 100644
index 000000000..2b58a15f5
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/cspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/glspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/glspotlight.png
new file mode 100644
index 000000000..ccfa8d3a6
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/glspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/gspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/gspotlight.png
new file mode 100644
index 000000000..3bfc51a9b
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/gspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/kspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/kspotlight.png
new file mode 100644
index 000000000..99ed331e6
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/kspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/mlspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/mlspotlight.png
new file mode 100644
index 000000000..8a0af3e4d
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/mlspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/mspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/mspotlight.png
new file mode 100644
index 000000000..c2e6cd8b2
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/mspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/pspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/pspotlight.png
new file mode 100644
index 000000000..09cfc5ff0
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/pspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/rlspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/rlspotlight.png
new file mode 100644
index 000000000..050471542
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/rlspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/rspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/rspotlight.png
new file mode 100644
index 000000000..13ee79490
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/rspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/ulspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/ulspotlight.png
new file mode 100644
index 000000000..1d28f563e
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/ulspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/uspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/uspotlight.png
new file mode 100644
index 000000000..6ab646896
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/uspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/wlspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/wlspotlight.png
new file mode 100644
index 000000000..44d684d54
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/wlspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/1024/wspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/1024/wspotlight.png
new file mode 100644
index 000000000..e42c1f2ba
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/1024/wspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/alspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/alspotlight.png
new file mode 100644
index 000000000..f2d6dbec8
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/alspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/aspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/aspotlight.png
new file mode 100644
index 000000000..6bbfd1e6b
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/aspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/blspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/blspotlight.png
new file mode 100644
index 000000000..271b4abf2
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/blspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/bspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/bspotlight.png
new file mode 100644
index 000000000..fbb34319c
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/bspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/clspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/clspotlight.png
new file mode 100644
index 000000000..b50958029
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/clspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/cspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/cspotlight.png
new file mode 100644
index 000000000..9626ce6c9
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/cspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/glspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/glspotlight.png
new file mode 100644
index 000000000..a7594557c
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/glspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/gspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/gspotlight.png
new file mode 100644
index 000000000..e6c7fec7a
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/gspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/kspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/kspotlight.png
new file mode 100644
index 000000000..3767ac1ae
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/kspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/mlspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/mlspotlight.png
new file mode 100644
index 000000000..873485f90
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/mlspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/mspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/mspotlight.png
new file mode 100644
index 000000000..c5b536dff
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/mspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/pspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/pspotlight.png
new file mode 100644
index 000000000..3df4354ba
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/pspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/rlspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/rlspotlight.png
new file mode 100644
index 000000000..2652edfba
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/rlspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/rspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/rspotlight.png
new file mode 100644
index 000000000..d609a0525
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/rspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/ulspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/ulspotlight.png
new file mode 100644
index 000000000..722c31731
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/ulspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/uspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/uspotlight.png
new file mode 100644
index 000000000..c5177e91e
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/uspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/wlspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/wlspotlight.png
new file mode 100644
index 000000000..30dad7985
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/wlspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/spotlight/wspotlight.png b/data/magic-modules.mse-include/watermarks/spotlight/wspotlight.png
new file mode 100644
index 000000000..00a8d2066
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/spotlight/wspotlight.png differ
diff --git a/data/magic-modules.mse-include/watermarks/strixhaven/lorehold.png b/data/magic-modules.mse-include/watermarks/strixhaven/lorehold.png
new file mode 100644
index 000000000..87648f4f6
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/strixhaven/lorehold.png differ
diff --git a/data/magic-modules.mse-include/watermarks/strixhaven/prismari.png b/data/magic-modules.mse-include/watermarks/strixhaven/prismari.png
new file mode 100644
index 000000000..d0976baab
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/strixhaven/prismari.png differ
diff --git a/data/magic-modules.mse-include/watermarks/strixhaven/quandrix.png b/data/magic-modules.mse-include/watermarks/strixhaven/quandrix.png
new file mode 100644
index 000000000..98f5a8173
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/strixhaven/quandrix.png differ
diff --git a/data/magic-modules.mse-include/watermarks/strixhaven/silverquill.png b/data/magic-modules.mse-include/watermarks/strixhaven/silverquill.png
new file mode 100644
index 000000000..ddc2d4e70
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/strixhaven/silverquill.png differ
diff --git a/data/magic-modules.mse-include/watermarks/strixhaven/witherbloom.png b/data/magic-modules.mse-include/watermarks/strixhaven/witherbloom.png
new file mode 100644
index 000000000..3062bdec2
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/strixhaven/witherbloom.png differ
diff --git a/data/magic-modules.mse-include/watermarks/styling_fields b/data/magic-modules.mse-include/watermarks/styling_fields
new file mode 100644
index 000000000..60f47fdc7
--- /dev/null
+++ b/data/magic-modules.mse-include/watermarks/styling_fields
@@ -0,0 +1,8 @@
+styling field:
+ type: choice
+ name: watermark render
+ choice: normal
+ choice: blend with colors
+ choice: shadow
+ choice: glow
+ description: Image needs to be 500x500 px or smaller to blend with card colors. For best results, use a solid black watermark on transparent background.
\ No newline at end of file
diff --git a/data/magic-modules.mse-include/watermarks/tarkir/abzan.png b/data/magic-modules.mse-include/watermarks/tarkir/abzan.png
new file mode 100644
index 000000000..cb414180a
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/tarkir/abzan.png differ
diff --git a/data/magic-modules.mse-include/watermarks/tarkir/atarka.png b/data/magic-modules.mse-include/watermarks/tarkir/atarka.png
new file mode 100644
index 000000000..b896ac826
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/tarkir/atarka.png differ
diff --git a/data/magic-modules.mse-include/watermarks/tarkir/dromoka.png b/data/magic-modules.mse-include/watermarks/tarkir/dromoka.png
new file mode 100644
index 000000000..078f68934
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/tarkir/dromoka.png differ
diff --git a/data/magic-modules.mse-include/watermarks/tarkir/jeskai.png b/data/magic-modules.mse-include/watermarks/tarkir/jeskai.png
new file mode 100644
index 000000000..2db6d3584
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/tarkir/jeskai.png differ
diff --git a/data/magic-modules.mse-include/watermarks/tarkir/kolaghan.png b/data/magic-modules.mse-include/watermarks/tarkir/kolaghan.png
new file mode 100644
index 000000000..897042699
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/tarkir/kolaghan.png differ
diff --git a/data/magic-modules.mse-include/watermarks/tarkir/mardu.png b/data/magic-modules.mse-include/watermarks/tarkir/mardu.png
new file mode 100644
index 000000000..dac7cd222
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/tarkir/mardu.png differ
diff --git a/data/magic-modules.mse-include/watermarks/tarkir/ojutai.png b/data/magic-modules.mse-include/watermarks/tarkir/ojutai.png
new file mode 100644
index 000000000..c26396449
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/tarkir/ojutai.png differ
diff --git a/data/magic-modules.mse-include/watermarks/tarkir/silumgar.png b/data/magic-modules.mse-include/watermarks/tarkir/silumgar.png
new file mode 100644
index 000000000..11e128bd6
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/tarkir/silumgar.png differ
diff --git a/data/magic-modules.mse-include/watermarks/tarkir/sultai.png b/data/magic-modules.mse-include/watermarks/tarkir/sultai.png
new file mode 100644
index 000000000..c829e0cb5
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/tarkir/sultai.png differ
diff --git a/data/magic-modules.mse-include/watermarks/tarkir/temur.png b/data/magic-modules.mse-include/watermarks/tarkir/temur.png
new file mode 100644
index 000000000..3170d86d3
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/tarkir/temur.png differ
diff --git a/data/magic-modules.mse-include/watermarks/theros/akros.png b/data/magic-modules.mse-include/watermarks/theros/akros.png
new file mode 100644
index 000000000..92f8e8ae9
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/theros/akros.png differ
diff --git a/data/magic-modules.mse-include/watermarks/theros/meletis.png b/data/magic-modules.mse-include/watermarks/theros/meletis.png
new file mode 100644
index 000000000..fd91c337f
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/theros/meletis.png differ
diff --git a/data/magic-modules.mse-include/watermarks/theros/setessa.png b/data/magic-modules.mse-include/watermarks/theros/setessa.png
new file mode 100644
index 000000000..06258f8db
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/theros/setessa.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ub/d&d.png b/data/magic-modules.mse-include/watermarks/ub/d&d.png
new file mode 100644
index 000000000..2c4b0fb92
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ub/d&d.png differ
diff --git a/data/magic-modules.mse-include/watermarks/ub/transformers.png b/data/magic-modules.mse-include/watermarks/ub/transformers.png
new file mode 100644
index 000000000..4a0efe134
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/ub/transformers.png differ
diff --git a/data/magic-modules.mse-include/watermarks/unstable/SNEAK.png b/data/magic-modules.mse-include/watermarks/unstable/SNEAK.png
new file mode 100644
index 000000000..88174f12c
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/unstable/SNEAK.png differ
diff --git a/data/magic-modules.mse-include/watermarks/unstable/crossbreed.png b/data/magic-modules.mse-include/watermarks/unstable/crossbreed.png
new file mode 100644
index 000000000..4b7769d7f
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/unstable/crossbreed.png differ
diff --git a/data/magic-modules.mse-include/watermarks/unstable/doom.png b/data/magic-modules.mse-include/watermarks/unstable/doom.png
new file mode 100644
index 000000000..74ce8357c
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/unstable/doom.png differ
diff --git a/data/magic-modules.mse-include/watermarks/unstable/explosioneers.png b/data/magic-modules.mse-include/watermarks/unstable/explosioneers.png
new file mode 100644
index 000000000..2ca57381e
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/unstable/explosioneers.png differ
diff --git a/data/magic-modules.mse-include/watermarks/unstable/widget.png b/data/magic-modules.mse-include/watermarks/unstable/widget.png
new file mode 100644
index 000000000..f0a8c594c
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/unstable/widget.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/bgmana.png b/data/magic-modules.mse-include/watermarks/xander/bgmana.png
new file mode 100644
index 000000000..66553780f
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/bgmana.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/bgmana_colored.png b/data/magic-modules.mse-include/watermarks/xander/bgmana_colored.png
new file mode 100644
index 000000000..3278571ef
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/bgmana_colored.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/brmana.png b/data/magic-modules.mse-include/watermarks/xander/brmana.png
new file mode 100644
index 000000000..9c5f7e17f
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/brmana.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/brmana_colored.png b/data/magic-modules.mse-include/watermarks/xander/brmana_colored.png
new file mode 100644
index 000000000..a8cbe42c0
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/brmana_colored.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/gumana.png b/data/magic-modules.mse-include/watermarks/xander/gumana.png
new file mode 100644
index 000000000..3a03388e9
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/gumana.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/gumana_colored.png b/data/magic-modules.mse-include/watermarks/xander/gumana_colored.png
new file mode 100644
index 000000000..cd9c6a250
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/gumana_colored.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/gwmana.png b/data/magic-modules.mse-include/watermarks/xander/gwmana.png
new file mode 100644
index 000000000..5b790b3a8
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/gwmana.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/gwmana_colored.png b/data/magic-modules.mse-include/watermarks/xander/gwmana_colored.png
new file mode 100644
index 000000000..7176e2783
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/gwmana_colored.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/rgmana.png b/data/magic-modules.mse-include/watermarks/xander/rgmana.png
new file mode 100644
index 000000000..dcf17baaf
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/rgmana.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/rgmana_colored.png b/data/magic-modules.mse-include/watermarks/xander/rgmana_colored.png
new file mode 100644
index 000000000..d8b7f5d28
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/rgmana_colored.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/rwmana.png b/data/magic-modules.mse-include/watermarks/xander/rwmana.png
new file mode 100644
index 000000000..a129382fb
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/rwmana.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/rwmana_colored.png b/data/magic-modules.mse-include/watermarks/xander/rwmana_colored.png
new file mode 100644
index 000000000..79be53900
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/rwmana_colored.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/ubmana.png b/data/magic-modules.mse-include/watermarks/xander/ubmana.png
new file mode 100644
index 000000000..4ce9139fb
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/ubmana.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/ubmana_colored.png b/data/magic-modules.mse-include/watermarks/xander/ubmana_colored.png
new file mode 100644
index 000000000..43e28a378
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/ubmana_colored.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/urmana.png b/data/magic-modules.mse-include/watermarks/xander/urmana.png
new file mode 100644
index 000000000..0418b1aa1
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/urmana.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/urmana_colored.png b/data/magic-modules.mse-include/watermarks/xander/urmana_colored.png
new file mode 100644
index 000000000..cd27c0a83
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/urmana_colored.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/wbmana.png b/data/magic-modules.mse-include/watermarks/xander/wbmana.png
new file mode 100644
index 000000000..30a885f8e
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/wbmana.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/wbmana_colored.png b/data/magic-modules.mse-include/watermarks/xander/wbmana_colored.png
new file mode 100644
index 000000000..42b13f7ef
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/wbmana_colored.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/wumana.png b/data/magic-modules.mse-include/watermarks/xander/wumana.png
new file mode 100644
index 000000000..2a0603c81
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/wumana.png differ
diff --git a/data/magic-modules.mse-include/watermarks/xander/wumana_colored.png b/data/magic-modules.mse-include/watermarks/xander/wumana_colored.png
new file mode 100644
index 000000000..b82ed2f9d
Binary files /dev/null and b/data/magic-modules.mse-include/watermarks/xander/wumana_colored.png differ
diff --git a/data/magic-new-doublefaced-sacrificer.mse-style/style b/data/magic-new-doublefaced-sacrificer.mse-style/style
index 1aafcc261..a7bce5fd5 100644
--- a/data/magic-new-doublefaced-sacrificer.mse-style/style
+++ b/data/magic-new-doublefaced-sacrificer.mse-style/style
@@ -77,7 +77,23 @@ init script:
}
card_shape := {"double faced planeswalker"}
-
+ faces_coordinates := {
+ [
+ [
+ left: 0,
+ top: 0,
+ width: 375,
+ height: 523
+ ],
+ [
+ left: 377,
+ top: 0,
+ width: 375,
+ height: 523
+ ]
+ ]
+ }
+
typesymbol_for :=
to_text +
replace@(match: "(Legendary|Basic|Snow|World| )", replace: "") +
diff --git a/data/magic-new-doublefaced-sparker.mse-style/style b/data/magic-new-doublefaced-sparker.mse-style/style
index 5bb6ab77e..0f221924b 100644
--- a/data/magic-new-doublefaced-sparker.mse-style/style
+++ b/data/magic-new-doublefaced-sparker.mse-style/style
@@ -77,7 +77,23 @@ init script:
}
card_shape := {"double faced planeswalker"}
-
+ faces_coordinates := {
+ [
+ [
+ left: 0,
+ top: 0,
+ width: 375,
+ height: 523
+ ],
+ [
+ left: 377,
+ top: 0,
+ width: 375,
+ height: 523
+ ]
+ ]
+ }
+
typesymbol_for :=
to_text +
replace@(match: "(Legendary|Basic|Snow|World| )", replace: "") +
diff --git a/data/magic-new-doublefaced.mse-style/style b/data/magic-new-doublefaced.mse-style/style
index 177d2ef78..f027409af 100644
--- a/data/magic-new-doublefaced.mse-style/style
+++ b/data/magic-new-doublefaced.mse-style/style
@@ -71,6 +71,22 @@ init script:
card_background2 := { color_background(type:"card2", base_hybrid:card_hybrid) }
card_ptbox2 := { color_background(type:"pt2", base_hybrid:pt_hybrid) }
card_shape := { "double faced" }
+ faces_coordinates := {
+ [
+ [
+ left: 0,
+ top: 0,
+ width: 375,
+ height: 523
+ ],
+ [
+ left: 377,
+ top: 0,
+ width: 375,
+ height: 523
+ ]
+ ]
+ }
############################################################## Set info fields
set info style:
diff --git a/data/magic-new-omega-doublefaced.mse-style/style b/data/magic-new-omega-doublefaced.mse-style/style
index 1212ae7b9..e47a9cfef 100644
--- a/data/magic-new-omega-doublefaced.mse-style/style
+++ b/data/magic-new-omega-doublefaced.mse-style/style
@@ -68,6 +68,22 @@ init script:
card_background2 := { color_background(type:"card2", base_hybrid:card_hybrid) }
card_ptbox2 := { color_background(type:"pt2", base_hybrid:pt_hybrid) }
card_shape := { "double faced" }
+ faces_coordinates := {
+ [
+ [
+ left: 0,
+ top: 0,
+ width: 375,
+ height: 523
+ ],
+ [
+ left: 377,
+ top: 0,
+ width: 375,
+ height: 523
+ ]
+ ]
+ }
############################################################## Set info fields
set info style:
diff --git a/data/magic-pride.mse-include/flags/omni.png b/data/magic-pride.mse-include/flags/omni.png
new file mode 100644
index 000000000..9abe74141
Binary files /dev/null and b/data/magic-pride.mse-include/flags/omni.png differ
diff --git a/data/magic-pride.mse-include/flags/polyamory.png b/data/magic-pride.mse-include/flags/polyamory.png
new file mode 100644
index 000000000..9df5c0425
Binary files /dev/null and b/data/magic-pride.mse-include/flags/polyamory.png differ
diff --git a/data/magic-pride.mse-include/include b/data/magic-pride.mse-include/include
index 358b00cae..36bef6083 100644
--- a/data/magic-pride.mse-include/include
+++ b/data/magic-pride.mse-include/include
@@ -1,6 +1,6 @@
mse version: 2.0.0
full name: Magic The Gathering, pride flags
-version: 2021-5-26
+version: 2024-05-22
# This file doesn't do anything, other files in this directory can be included
# in game/style files:
diff --git a/data/magic-pride.mse-include/pins b/data/magic-pride.mse-include/pins
index 7d96b52cc..c0506a8ef 100644
--- a/data/magic-pride.mse-include/pins
+++ b/data/magic-pride.mse-include/pins
@@ -10,6 +10,8 @@ choice: aro
choice: nonbinary
choice: agender
choice: genderfluid
+choice: polyamory
+choice: omni
choice:
name: rainbow
line below: true
diff --git a/data/magic-watermarks.mse-include/BUG.png b/data/magic-watermarks.mse-include/BUG.png
deleted file mode 100644
index 0c59ee8a3..000000000
Binary files a/data/magic-watermarks.mse-include/BUG.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/Discord.png b/data/magic-watermarks.mse-include/Discord.png
index 7a0b27a59..6f673279d 100644
Binary files a/data/magic-watermarks.mse-include/Discord.png and b/data/magic-watermarks.mse-include/Discord.png differ
diff --git a/data/magic-watermarks.mse-include/GWU.png b/data/magic-watermarks.mse-include/GWU.png
deleted file mode 100644
index cbdcafc62..000000000
Binary files a/data/magic-watermarks.mse-include/GWU.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/WBR.png b/data/magic-watermarks.mse-include/WBR.png
deleted file mode 100644
index f4cc1c529..000000000
Binary files a/data/magic-watermarks.mse-include/WBR.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/WUG.png b/data/magic-watermarks.mse-include/WUG.png
deleted file mode 100644
index cbdcafc62..000000000
Binary files a/data/magic-watermarks.mse-include/WUG.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/aetherprint.png b/data/magic-watermarks.mse-include/aetherprint.png
index 0340182b4..2092fd4c7 100644
Binary files a/data/magic-watermarks.mse-include/aetherprint.png and b/data/magic-watermarks.mse-include/aetherprint.png differ
diff --git a/data/magic-watermarks.mse-include/akros.png b/data/magic-watermarks.mse-include/akros.png
index 459be5b23..92f8e8ae9 100644
Binary files a/data/magic-watermarks.mse-include/akros.png and b/data/magic-watermarks.mse-include/akros.png differ
diff --git a/data/magic-watermarks.mse-include/capenna_brokers.png b/data/magic-watermarks.mse-include/capenna_brokers.png
new file mode 100644
index 000000000..c357f1a2a
Binary files /dev/null and b/data/magic-watermarks.mse-include/capenna_brokers.png differ
diff --git a/data/magic-watermarks.mse-include/capenna_cabaretti.png b/data/magic-watermarks.mse-include/capenna_cabaretti.png
new file mode 100644
index 000000000..f38c1869e
Binary files /dev/null and b/data/magic-watermarks.mse-include/capenna_cabaretti.png differ
diff --git a/data/magic-watermarks.mse-include/capenna_maestros.png b/data/magic-watermarks.mse-include/capenna_maestros.png
new file mode 100644
index 000000000..a7b0a07fb
Binary files /dev/null and b/data/magic-watermarks.mse-include/capenna_maestros.png differ
diff --git a/data/magic-watermarks.mse-include/capenna_obscura.png b/data/magic-watermarks.mse-include/capenna_obscura.png
new file mode 100644
index 000000000..507de752a
Binary files /dev/null and b/data/magic-watermarks.mse-include/capenna_obscura.png differ
diff --git a/data/magic-watermarks.mse-include/capenna_riveteers.png b/data/magic-watermarks.mse-include/capenna_riveteers.png
new file mode 100644
index 000000000..ee6ea1e89
Binary files /dev/null and b/data/magic-watermarks.mse-include/capenna_riveteers.png differ
diff --git a/data/magic-watermarks.mse-include/chaos.png b/data/magic-watermarks.mse-include/chaos.png
index fc113e956..5d23cb2d5 100644
Binary files a/data/magic-watermarks.mse-include/chaos.png and b/data/magic-watermarks.mse-include/chaos.png differ
diff --git a/data/magic-watermarks.mse-include/colorpie.png b/data/magic-watermarks.mse-include/colorpie.png
index 8f8693807..93141245f 100644
Binary files a/data/magic-watermarks.mse-include/colorpie.png and b/data/magic-watermarks.mse-include/colorpie.png differ
diff --git a/data/magic-watermarks.mse-include/d&d.png b/data/magic-watermarks.mse-include/d&d.png
new file mode 100644
index 000000000..2c4b0fb92
Binary files /dev/null and b/data/magic-watermarks.mse-include/d&d.png differ
diff --git a/data/magic-watermarks.mse-include/desparked.png b/data/magic-watermarks.mse-include/desparked.png
new file mode 100644
index 000000000..a2c64aa1e
Binary files /dev/null and b/data/magic-watermarks.mse-include/desparked.png differ
diff --git a/data/magic-watermarks.mse-include/foretell.png b/data/magic-watermarks.mse-include/foretell.png
index 65d93d61b..2a5db4ed7 100644
Binary files a/data/magic-watermarks.mse-include/foretell.png and b/data/magic-watermarks.mse-include/foretell.png differ
diff --git a/data/magic-watermarks.mse-include/futsymbol_artifact.png b/data/magic-watermarks.mse-include/futsymbol_artifact.png
index 50dea5b98..b54bb5680 100644
Binary files a/data/magic-watermarks.mse-include/futsymbol_artifact.png and b/data/magic-watermarks.mse-include/futsymbol_artifact.png differ
diff --git a/data/magic-watermarks.mse-include/futsymbol_creature.png b/data/magic-watermarks.mse-include/futsymbol_creature.png
index 2e91a82c4..f230d4b66 100644
Binary files a/data/magic-watermarks.mse-include/futsymbol_creature.png and b/data/magic-watermarks.mse-include/futsymbol_creature.png differ
diff --git a/data/magic-watermarks.mse-include/futsymbol_enchantment.png b/data/magic-watermarks.mse-include/futsymbol_enchantment.png
index 2ff4083c3..f50aa903b 100644
Binary files a/data/magic-watermarks.mse-include/futsymbol_enchantment.png and b/data/magic-watermarks.mse-include/futsymbol_enchantment.png differ
diff --git a/data/magic-watermarks.mse-include/futsymbol_instant.png b/data/magic-watermarks.mse-include/futsymbol_instant.png
index d83d4442f..0ae6b8078 100644
Binary files a/data/magic-watermarks.mse-include/futsymbol_instant.png and b/data/magic-watermarks.mse-include/futsymbol_instant.png differ
diff --git a/data/magic-watermarks.mse-include/futsymbol_land.png b/data/magic-watermarks.mse-include/futsymbol_land.png
index 49a8b1415..f8ce9e29b 100644
Binary files a/data/magic-watermarks.mse-include/futsymbol_land.png and b/data/magic-watermarks.mse-include/futsymbol_land.png differ
diff --git a/data/magic-watermarks.mse-include/futsymbol_multiple.png b/data/magic-watermarks.mse-include/futsymbol_multiple.png
index 65bd9c843..b66316c6e 100644
Binary files a/data/magic-watermarks.mse-include/futsymbol_multiple.png and b/data/magic-watermarks.mse-include/futsymbol_multiple.png differ
diff --git a/data/magic-watermarks.mse-include/futsymbol_planeswalker.png b/data/magic-watermarks.mse-include/futsymbol_planeswalker.png
index c3da2b5da..824b523f6 100644
Binary files a/data/magic-watermarks.mse-include/futsymbol_planeswalker.png and b/data/magic-watermarks.mse-include/futsymbol_planeswalker.png differ
diff --git a/data/magic-watermarks.mse-include/futsymbol_sorcery.png b/data/magic-watermarks.mse-include/futsymbol_sorcery.png
index 6d0880cb4..34a61fa21 100644
Binary files a/data/magic-watermarks.mse-include/futsymbol_sorcery.png and b/data/magic-watermarks.mse-include/futsymbol_sorcery.png differ
diff --git a/data/magic-watermarks.mse-include/futsymbol_structure.png b/data/magic-watermarks.mse-include/futsymbol_structure.png
index e75c6d5ac..392090915 100644
Binary files a/data/magic-watermarks.mse-include/futsymbol_structure.png and b/data/magic-watermarks.mse-include/futsymbol_structure.png differ
diff --git a/data/magic-watermarks.mse-include/gavony.png b/data/magic-watermarks.mse-include/gavony.png
index 8c4bd2b76..435c46551 100644
Binary files a/data/magic-watermarks.mse-include/gavony.png and b/data/magic-watermarks.mse-include/gavony.png differ
diff --git a/data/magic-watermarks.mse-include/gihana.png b/data/magic-watermarks.mse-include/gihana.png
deleted file mode 100644
index ea4fb8e52..000000000
Binary files a/data/magic-watermarks.mse-include/gihana.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/heavy-arrow.png b/data/magic-watermarks.mse-include/heavy-arrow.png
deleted file mode 100644
index f4cc1c529..000000000
Binary files a/data/magic-watermarks.mse-include/heavy-arrow.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/igloo.png b/data/magic-watermarks.mse-include/igloo.png
deleted file mode 100644
index cbdcafc62..000000000
Binary files a/data/magic-watermarks.mse-include/igloo.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/include b/data/magic-watermarks.mse-include/include
index 04d72d620..eebb8f024 100644
--- a/data/magic-watermarks.mse-include/include
+++ b/data/magic-watermarks.mse-include/include
@@ -1,7 +1,12 @@
-mse version: 2.0.0
-full name: Magic The Gathering, textbox watermarks
-version: 2016-03-13
+mse version: 2.0.0
+full name: Magic The Gathering, textbox watermarks
+version: 2024-01-29
+depends on:
+ package: magic.mse-game
+ version: 2014-06-25
-# This file doesn't do anything, other files in this directory can be included
-# in game/style files:
-# watermarks Includes references to the watermark images, to be used in a style file
+
+
+#### This file doesn't do anything.
+#### Other files in this directory can be included in game/style files.
+#### This include covers the watermarks in textboxes.
diff --git a/data/magic-watermarks.mse-include/judge_academy.png b/data/magic-watermarks.mse-include/judge_academy.png
new file mode 100644
index 000000000..6217dd20e
Binary files /dev/null and b/data/magic-watermarks.mse-include/judge_academy.png differ
diff --git a/data/magic-watermarks.mse-include/kessig.png b/data/magic-watermarks.mse-include/kessig.png
index c3409f5ac..5807e9378 100644
Binary files a/data/magic-watermarks.mse-include/kessig.png and b/data/magic-watermarks.mse-include/kessig.png differ
diff --git a/data/magic-watermarks.mse-include/meletis.png b/data/magic-watermarks.mse-include/meletis.png
index e539f786f..fd91c337f 100644
Binary files a/data/magic-watermarks.mse-include/meletis.png and b/data/magic-watermarks.mse-include/meletis.png differ
diff --git a/data/magic-watermarks.mse-include/nephalia.png b/data/magic-watermarks.mse-include/nephalia.png
index ca0081655..25aeb04f7 100644
Binary files a/data/magic-watermarks.mse-include/nephalia.png and b/data/magic-watermarks.mse-include/nephalia.png differ
diff --git a/data/magic-watermarks.mse-include/ponies_apples.png b/data/magic-watermarks.mse-include/ponies_apples.png
new file mode 100644
index 000000000..3575b1b4f
Binary files /dev/null and b/data/magic-watermarks.mse-include/ponies_apples.png differ
diff --git a/data/magic-watermarks.mse-include/ponies_balloons.png b/data/magic-watermarks.mse-include/ponies_balloons.png
new file mode 100644
index 000000000..75a2ae296
Binary files /dev/null and b/data/magic-watermarks.mse-include/ponies_balloons.png differ
diff --git a/data/magic-watermarks.mse-include/ponies_butterflies.png b/data/magic-watermarks.mse-include/ponies_butterflies.png
new file mode 100644
index 000000000..fe80cd3a7
Binary files /dev/null and b/data/magic-watermarks.mse-include/ponies_butterflies.png differ
diff --git a/data/magic-watermarks.mse-include/ponies_gems.png b/data/magic-watermarks.mse-include/ponies_gems.png
new file mode 100644
index 000000000..55503baea
Binary files /dev/null and b/data/magic-watermarks.mse-include/ponies_gems.png differ
diff --git a/data/magic-watermarks.mse-include/ponies_rainbow.png b/data/magic-watermarks.mse-include/ponies_rainbow.png
new file mode 100644
index 000000000..a2c110b83
Binary files /dev/null and b/data/magic-watermarks.mse-include/ponies_rainbow.png differ
diff --git a/data/magic-watermarks.mse-include/ponies_sparkles.png b/data/magic-watermarks.mse-include/ponies_sparkles.png
new file mode 100644
index 000000000..64edf5396
Binary files /dev/null and b/data/magic-watermarks.mse-include/ponies_sparkles.png differ
diff --git a/data/magic-watermarks.mse-include/ponies_waning_moon.png b/data/magic-watermarks.mse-include/ponies_waning_moon.png
new file mode 100644
index 000000000..1c2b07651
Binary files /dev/null and b/data/magic-watermarks.mse-include/ponies_waning_moon.png differ
diff --git a/data/magic-watermarks.mse-include/ponies_waxing_moon.png b/data/magic-watermarks.mse-include/ponies_waxing_moon.png
new file mode 100644
index 000000000..2338bbd97
Binary files /dev/null and b/data/magic-watermarks.mse-include/ponies_waxing_moon.png differ
diff --git a/data/magic-watermarks.mse-include/seekersofcarmot.png b/data/magic-watermarks.mse-include/seekersofcarmot.png
index 3ccc14a38..ccb7b8564 100644
Binary files a/data/magic-watermarks.mse-include/seekersofcarmot.png and b/data/magic-watermarks.mse-include/seekersofcarmot.png differ
diff --git a/data/magic-watermarks.mse-include/setessa.png b/data/magic-watermarks.mse-include/setessa.png
index ebc12c18b..06258f8db 100644
Binary files a/data/magic-watermarks.mse-include/setessa.png and b/data/magic-watermarks.mse-include/setessa.png differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-5dn.png b/data/magic-watermarks.mse-include/sets/Set-5dn.png
deleted file mode 100644
index a44631933..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-5dn.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-abur.png b/data/magic-watermarks.mse-include/sets/Set-abur.png
deleted file mode 100644
index 027293e43..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-abur.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-aer.png b/data/magic-watermarks.mse-include/sets/Set-aer.png
deleted file mode 100644
index 575b93d23..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-aer.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-akh.png b/data/magic-watermarks.mse-include/sets/Set-akh.png
deleted file mode 100644
index 3df3f7729..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-akh.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-ala.png b/data/magic-watermarks.mse-include/sets/Set-ala.png
deleted file mode 100644
index aaea33848..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-ala.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-all.png b/data/magic-watermarks.mse-include/sets/Set-all.png
deleted file mode 100644
index d467f47a7..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-all.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-apc.png b/data/magic-watermarks.mse-include/sets/Set-apc.png
deleted file mode 100644
index 26a21a508..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-apc.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-arb.png b/data/magic-watermarks.mse-include/sets/Set-arb.png
deleted file mode 100644
index f51a995e1..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-arb.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-arn.png b/data/magic-watermarks.mse-include/sets/Set-arn.png
deleted file mode 100644
index f296a8113..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-arn.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-avr.png b/data/magic-watermarks.mse-include/sets/Set-avr.png
deleted file mode 100644
index 41855fa4d..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-avr.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-bfz.png b/data/magic-watermarks.mse-include/sets/Set-bfz.png
deleted file mode 100644
index eca439614..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-bfz.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-bng.png b/data/magic-watermarks.mse-include/sets/Set-bng.png
deleted file mode 100644
index fef715054..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-bng.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-bok.png b/data/magic-watermarks.mse-include/sets/Set-bok.png
deleted file mode 100644
index ae97029d3..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-bok.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-c13.png b/data/magic-watermarks.mse-include/sets/Set-c13.png
deleted file mode 100644
index 3d6412cc2..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-c13.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-c14.png b/data/magic-watermarks.mse-include/sets/Set-c14.png
deleted file mode 100644
index 7efac633e..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-c14.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-c15.png b/data/magic-watermarks.mse-include/sets/Set-c15.png
deleted file mode 100644
index c7103d846..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-c15.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-c16.png b/data/magic-watermarks.mse-include/sets/Set-c16.png
deleted file mode 100644
index 2798a8124..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-c16.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-c17.png b/data/magic-watermarks.mse-include/sets/Set-c17.png
deleted file mode 100644
index d1054639c..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-c17.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-chk.png b/data/magic-watermarks.mse-include/sets/Set-chk.png
deleted file mode 100644
index 5a810748e..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-chk.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-cmd.png b/data/magic-watermarks.mse-include/sets/Set-cmd.png
deleted file mode 100644
index 55f74cbf6..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-cmd.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-cn2.png b/data/magic-watermarks.mse-include/sets/Set-cn2.png
deleted file mode 100644
index 3af3e7461..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-cn2.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-cns.png b/data/magic-watermarks.mse-include/sets/Set-cns.png
deleted file mode 100644
index 1d7dceff7..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-cns.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-con.png b/data/magic-watermarks.mse-include/sets/Set-con.png
deleted file mode 100644
index 708ddc562..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-con.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-csp.png b/data/magic-watermarks.mse-include/sets/Set-csp.png
deleted file mode 100644
index ac27ccc97..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-csp.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-dgm.png b/data/magic-watermarks.mse-include/sets/Set-dgm.png
deleted file mode 100644
index 9ea1d542b..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-dgm.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-dis.png b/data/magic-watermarks.mse-include/sets/Set-dis.png
deleted file mode 100644
index f6e01e4fb..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-dis.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-dka.png b/data/magic-watermarks.mse-include/sets/Set-dka.png
deleted file mode 100644
index 00058eb41..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-dka.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-drk.png b/data/magic-watermarks.mse-include/sets/Set-drk.png
deleted file mode 100644
index c602815f7..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-drk.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-dst.png b/data/magic-watermarks.mse-include/sets/Set-dst.png
deleted file mode 100644
index 29c256640..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-dst.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-dtk.png b/data/magic-watermarks.mse-include/sets/Set-dtk.png
deleted file mode 100644
index 71b529c05..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-dtk.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-emn.png b/data/magic-watermarks.mse-include/sets/Set-emn.png
deleted file mode 100644
index 37000c236..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-emn.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-eve.png b/data/magic-watermarks.mse-include/sets/Set-eve.png
deleted file mode 100644
index 191d7c75b..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-eve.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-exo.png b/data/magic-watermarks.mse-include/sets/Set-exo.png
deleted file mode 100644
index b03519549..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-exo.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-fem.png b/data/magic-watermarks.mse-include/sets/Set-fem.png
deleted file mode 100644
index 100af8d2d..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-fem.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-frf.png b/data/magic-watermarks.mse-include/sets/Set-frf.png
deleted file mode 100644
index 9c3b6f485..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-frf.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-fut.png b/data/magic-watermarks.mse-include/sets/Set-fut.png
deleted file mode 100644
index dd9818a43..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-fut.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-gpt.png b/data/magic-watermarks.mse-include/sets/Set-gpt.png
deleted file mode 100644
index bb1267fb8..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-gpt.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-gtc.png b/data/magic-watermarks.mse-include/sets/Set-gtc.png
deleted file mode 100644
index abdeb137e..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-gtc.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-hml.png b/data/magic-watermarks.mse-include/sets/Set-hml.png
deleted file mode 100644
index 80be29565..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-hml.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-hou.png b/data/magic-watermarks.mse-include/sets/Set-hou.png
deleted file mode 100644
index e320ccd0a..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-hou.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-ice.png b/data/magic-watermarks.mse-include/sets/Set-ice.png
deleted file mode 100644
index 5cedb98b1..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-ice.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-inv.png b/data/magic-watermarks.mse-include/sets/Set-inv.png
deleted file mode 100644
index 41afe479b..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-inv.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-isd.png b/data/magic-watermarks.mse-include/sets/Set-isd.png
deleted file mode 100644
index 670119ff8..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-isd.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-jou.png b/data/magic-watermarks.mse-include/sets/Set-jou.png
deleted file mode 100644
index 4fce0b1ba..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-jou.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-jud.png b/data/magic-watermarks.mse-include/sets/Set-jud.png
deleted file mode 100644
index 82a1b7f4c..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-jud.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-kld.png b/data/magic-watermarks.mse-include/sets/Set-kld.png
deleted file mode 100644
index b023a9ea0..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-kld.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-ktk.png b/data/magic-watermarks.mse-include/sets/Set-ktk.png
deleted file mode 100644
index 60f4bf19f..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-ktk.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-leg.png b/data/magic-watermarks.mse-include/sets/Set-leg.png
deleted file mode 100644
index 0a48aa2d0..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-leg.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-lgn.png b/data/magic-watermarks.mse-include/sets/Set-lgn.png
deleted file mode 100644
index 05f641c7c..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-lgn.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-lrw.png b/data/magic-watermarks.mse-include/sets/Set-lrw.png
deleted file mode 100644
index 7e1e161b5..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-lrw.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-m10.png b/data/magic-watermarks.mse-include/sets/Set-m10.png
deleted file mode 100644
index 541310c3b..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-m10.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-m11.png b/data/magic-watermarks.mse-include/sets/Set-m11.png
deleted file mode 100644
index 367976c8d..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-m11.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-m12.png b/data/magic-watermarks.mse-include/sets/Set-m12.png
deleted file mode 100644
index 2e956ed8a..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-m12.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-m13.png b/data/magic-watermarks.mse-include/sets/Set-m13.png
deleted file mode 100644
index 5a2670ea8..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-m13.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-m14.png b/data/magic-watermarks.mse-include/sets/Set-m14.png
deleted file mode 100644
index b54afe012..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-m14.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-m15.png b/data/magic-watermarks.mse-include/sets/Set-m15.png
deleted file mode 100644
index 7610299bd..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-m15.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-mbs.png b/data/magic-watermarks.mse-include/sets/Set-mbs.png
deleted file mode 100644
index 48704c299..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-mbs.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-mir.png b/data/magic-watermarks.mse-include/sets/Set-mir.png
deleted file mode 100644
index 4b75d0a98..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-mir.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-mmq.png b/data/magic-watermarks.mse-include/sets/Set-mmq.png
deleted file mode 100644
index 403039ba0..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-mmq.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-mor.png b/data/magic-watermarks.mse-include/sets/Set-mor.png
deleted file mode 100644
index 9236017ab..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-mor.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-mrd.png b/data/magic-watermarks.mse-include/sets/Set-mrd.png
deleted file mode 100644
index 610de447b..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-mrd.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-nem.png b/data/magic-watermarks.mse-include/sets/Set-nem.png
deleted file mode 100644
index c78463435..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-nem.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-nph.png b/data/magic-watermarks.mse-include/sets/Set-nph.png
deleted file mode 100644
index 814df3e7b..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-nph.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-ody.png b/data/magic-watermarks.mse-include/sets/Set-ody.png
deleted file mode 100644
index 83c1bd972..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-ody.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-ogw.png b/data/magic-watermarks.mse-include/sets/Set-ogw.png
deleted file mode 100644
index 50510af9b..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-ogw.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-ons.png b/data/magic-watermarks.mse-include/sets/Set-ons.png
deleted file mode 100644
index 7c7f62928..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-ons.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-ori.png b/data/magic-watermarks.mse-include/sets/Set-ori.png
deleted file mode 100644
index eac8e0756..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-ori.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-p02.png b/data/magic-watermarks.mse-include/sets/Set-p02.png
deleted file mode 100644
index 9ce6eb281..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-p02.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-pc2.png b/data/magic-watermarks.mse-include/sets/Set-pc2.png
deleted file mode 100644
index 7d0a573e1..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-pc2.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-pcy.png b/data/magic-watermarks.mse-include/sets/Set-pcy.png
deleted file mode 100644
index c20385bcd..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-pcy.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-plc.png b/data/magic-watermarks.mse-include/sets/Set-plc.png
deleted file mode 100644
index 9b6fefbd0..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-plc.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-pls.png b/data/magic-watermarks.mse-include/sets/Set-pls.png
deleted file mode 100644
index 97134ee21..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-pls.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-por.png b/data/magic-watermarks.mse-include/sets/Set-por.png
deleted file mode 100644
index 57069f774..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-por.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-ptk.png b/data/magic-watermarks.mse-include/sets/Set-ptk.png
deleted file mode 100644
index 315b8d026..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-ptk.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-rav.png b/data/magic-watermarks.mse-include/sets/Set-rav.png
deleted file mode 100644
index 373192f40..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-rav.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-rix.png b/data/magic-watermarks.mse-include/sets/Set-rix.png
deleted file mode 100644
index aa10f13c1..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-rix.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-roe.png b/data/magic-watermarks.mse-include/sets/Set-roe.png
deleted file mode 100644
index 4e430aa5a..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-roe.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-rtr.png b/data/magic-watermarks.mse-include/sets/Set-rtr.png
deleted file mode 100644
index 2d4ef656d..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-rtr.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-s99.png b/data/magic-watermarks.mse-include/sets/Set-s99.png
deleted file mode 100644
index 0dc156e31..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-s99.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-scg.png b/data/magic-watermarks.mse-include/sets/Set-scg.png
deleted file mode 100644
index ffaef6049..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-scg.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-shm.png b/data/magic-watermarks.mse-include/sets/Set-shm.png
deleted file mode 100644
index 2410e31f2..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-shm.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-soi.png b/data/magic-watermarks.mse-include/sets/Set-soi.png
deleted file mode 100644
index 729c22f89..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-soi.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-sok.png b/data/magic-watermarks.mse-include/sets/Set-sok.png
deleted file mode 100644
index b9fce6be2..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-sok.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-som.png b/data/magic-watermarks.mse-include/sets/Set-som.png
deleted file mode 100644
index 4b7c56020..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-som.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-sth.png b/data/magic-watermarks.mse-include/sets/Set-sth.png
deleted file mode 100644
index 5f3ef7217..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-sth.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-ths.png b/data/magic-watermarks.mse-include/sets/Set-ths.png
deleted file mode 100644
index 3457ddc48..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-ths.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-tmp.png b/data/magic-watermarks.mse-include/sets/Set-tmp.png
deleted file mode 100644
index 0a1846565..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-tmp.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-tor.png b/data/magic-watermarks.mse-include/sets/Set-tor.png
deleted file mode 100644
index 95db71169..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-tor.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-tsp.png b/data/magic-watermarks.mse-include/sets/Set-tsp.png
deleted file mode 100644
index 7ef14fe92..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-tsp.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-uds.png b/data/magic-watermarks.mse-include/sets/Set-uds.png
deleted file mode 100644
index f0265e60d..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-uds.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-ulg.png b/data/magic-watermarks.mse-include/sets/Set-ulg.png
deleted file mode 100644
index 65b45c95d..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-ulg.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-usg.png b/data/magic-watermarks.mse-include/sets/Set-usg.png
deleted file mode 100644
index d6e57f4f3..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-usg.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-vis.png b/data/magic-watermarks.mse-include/sets/Set-vis.png
deleted file mode 100644
index 308c0554a..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-vis.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-wth.png b/data/magic-watermarks.mse-include/sets/Set-wth.png
deleted file mode 100644
index 832cfcf66..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-wth.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-wwk.png b/data/magic-watermarks.mse-include/sets/Set-wwk.png
deleted file mode 100644
index 2fd7bc9e2..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-wwk.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-xln.png b/data/magic-watermarks.mse-include/sets/Set-xln.png
deleted file mode 100644
index 5348df88c..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-xln.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/Set-zen.png b/data/magic-watermarks.mse-include/sets/Set-zen.png
deleted file mode 100644
index 9de672aa3..000000000
Binary files a/data/magic-watermarks.mse-include/sets/Set-zen.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/amark.png b/data/magic-watermarks.mse-include/sets/amark.png
deleted file mode 100644
index 4f9227dd8..000000000
Binary files a/data/magic-watermarks.mse-include/sets/amark.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/bmark.png b/data/magic-watermarks.mse-include/sets/bmark.png
deleted file mode 100644
index 1a6aef0c0..000000000
Binary files a/data/magic-watermarks.mse-include/sets/bmark.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/cmark.png b/data/magic-watermarks.mse-include/sets/cmark.png
deleted file mode 100644
index be426c850..000000000
Binary files a/data/magic-watermarks.mse-include/sets/cmark.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/gmark.png b/data/magic-watermarks.mse-include/sets/gmark.png
deleted file mode 100644
index 70d49094e..000000000
Binary files a/data/magic-watermarks.mse-include/sets/gmark.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/mmark.png b/data/magic-watermarks.mse-include/sets/mmark.png
deleted file mode 100644
index 77c6b9188..000000000
Binary files a/data/magic-watermarks.mse-include/sets/mmark.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/rmark.png b/data/magic-watermarks.mse-include/sets/rmark.png
deleted file mode 100644
index 5d81a387b..000000000
Binary files a/data/magic-watermarks.mse-include/sets/rmark.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/umark.png b/data/magic-watermarks.mse-include/sets/umark.png
deleted file mode 100644
index c6cf8cade..000000000
Binary files a/data/magic-watermarks.mse-include/sets/umark.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/sets/wmark.png b/data/magic-watermarks.mse-include/sets/wmark.png
deleted file mode 100644
index 4229cd8b3..000000000
Binary files a/data/magic-watermarks.mse-include/sets/wmark.png and /dev/null differ
diff --git a/data/magic-watermarks.mse-include/shooting_star.png b/data/magic-watermarks.mse-include/shooting_star.png
new file mode 100644
index 000000000..5fb7522f7
Binary files /dev/null and b/data/magic-watermarks.mse-include/shooting_star.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/alspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/alspotlight.png
new file mode 100644
index 000000000..3285841a3
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/alspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/aspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/aspotlight.png
new file mode 100644
index 000000000..ec3684cb4
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/aspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/blspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/blspotlight.png
new file mode 100644
index 000000000..e3eae8fd1
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/blspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/bspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/bspotlight.png
new file mode 100644
index 000000000..5cf7383b1
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/bspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/clspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/clspotlight.png
new file mode 100644
index 000000000..93e6029ca
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/clspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/cspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/cspotlight.png
new file mode 100644
index 000000000..2b58a15f5
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/cspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/glspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/glspotlight.png
new file mode 100644
index 000000000..ccfa8d3a6
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/glspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/gspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/gspotlight.png
new file mode 100644
index 000000000..3bfc51a9b
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/gspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/kspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/kspotlight.png
new file mode 100644
index 000000000..99ed331e6
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/kspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/mlspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/mlspotlight.png
new file mode 100644
index 000000000..8a0af3e4d
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/mlspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/mspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/mspotlight.png
new file mode 100644
index 000000000..c2e6cd8b2
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/mspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/pspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/pspotlight.png
new file mode 100644
index 000000000..09cfc5ff0
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/pspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/rlspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/rlspotlight.png
new file mode 100644
index 000000000..050471542
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/rlspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/rspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/rspotlight.png
new file mode 100644
index 000000000..13ee79490
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/rspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/ulspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/ulspotlight.png
new file mode 100644
index 000000000..1d28f563e
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/ulspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/uspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/uspotlight.png
new file mode 100644
index 000000000..6ab646896
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/uspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/wlspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/wlspotlight.png
new file mode 100644
index 000000000..44d684d54
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/wlspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/spotlight/1024/wspotlight.png b/data/magic-watermarks.mse-include/spotlight/1024/wspotlight.png
new file mode 100644
index 000000000..e42c1f2ba
Binary files /dev/null and b/data/magic-watermarks.mse-include/spotlight/1024/wspotlight.png differ
diff --git a/data/magic-watermarks.mse-include/stensia.png b/data/magic-watermarks.mse-include/stensia.png
index 4114cdc12..794e41179 100644
Binary files a/data/magic-watermarks.mse-include/stensia.png and b/data/magic-watermarks.mse-include/stensia.png differ
diff --git a/data/magic-watermarks.mse-include/transformers.png b/data/magic-watermarks.mse-include/transformers.png
new file mode 100644
index 000000000..4a0efe134
Binary files /dev/null and b/data/magic-watermarks.mse-include/transformers.png differ
diff --git a/data/magic-watermarks.mse-include/unstable_SNEAK.png b/data/magic-watermarks.mse-include/unstable_SNEAK.png
index 9c0f90220..88174f12c 100644
Binary files a/data/magic-watermarks.mse-include/unstable_SNEAK.png and b/data/magic-watermarks.mse-include/unstable_SNEAK.png differ
diff --git a/data/magic-watermarks.mse-include/unstable_crossbreed.png b/data/magic-watermarks.mse-include/unstable_crossbreed.png
index c817e5634..4b7769d7f 100644
Binary files a/data/magic-watermarks.mse-include/unstable_crossbreed.png and b/data/magic-watermarks.mse-include/unstable_crossbreed.png differ
diff --git a/data/magic-watermarks.mse-include/unstable_doom.png b/data/magic-watermarks.mse-include/unstable_doom.png
index e8e01d875..74ce8357c 100644
Binary files a/data/magic-watermarks.mse-include/unstable_doom.png and b/data/magic-watermarks.mse-include/unstable_doom.png differ
diff --git a/data/magic-watermarks.mse-include/unstable_explosioneers.png b/data/magic-watermarks.mse-include/unstable_explosioneers.png
index ccee6cb3f..2ca57381e 100644
Binary files a/data/magic-watermarks.mse-include/unstable_explosioneers.png and b/data/magic-watermarks.mse-include/unstable_explosioneers.png differ
diff --git a/data/magic-watermarks.mse-include/unstable_widget.png b/data/magic-watermarks.mse-include/unstable_widget.png
index dd156bf0c..f0a8c594c 100644
Binary files a/data/magic-watermarks.mse-include/unstable_widget.png and b/data/magic-watermarks.mse-include/unstable_widget.png differ
diff --git a/data/magic-watermarks.mse-include/watermark-names b/data/magic-watermarks.mse-include/watermark-names
index a08b04eb4..35da22ba3 100644
--- a/data/magic-watermarks.mse-include/watermark-names
+++ b/data/magic-watermarks.mse-include/watermark-names
@@ -12,7 +12,25 @@ choice:
choice: red
choice: green
choice: colorless
- choice: snow
+ choice:
+ name: snow
+ line below: true
+ choice:
+ name: old
+ choice: white
+ choice: blue
+ choice: black
+ choice: red
+ choice: green
+ choice: colorless
+ choice:
+ name: hi res
+ choice: white
+ choice: blue
+ choice: black
+ choice: red
+ choice: green
+ choice: colorless
choice:
name: transparent mana symbol
choice: white
@@ -20,6 +38,25 @@ choice:
choice: black
choice: red
choice: green
+ choice:
+ name: colorless
+ line below: true
+ choice:
+ name: old
+ choice: white
+ choice: blue
+ choice: black
+ choice: red
+ choice: green
+ choice: colorless
+ choice:
+ name: hi res
+ choice: white
+ choice: blue
+ choice: black
+ choice: red
+ choice: green
+ choice: colorless
choice:
name: guild symbol
choice: The Azorius Senate (W/U)
@@ -31,7 +68,9 @@ choice:
choice: The Izzet (U/R)
choice: The Golgari (B/G)
choice: The Boros Legion (R/W)
- choice: The Simic Combine (G/U)
+ choice:
+ name: The Simic Combine (G/U)
+ line below: true
choice:
name: originals
choice: The Azorius Senate (W/U)
@@ -74,6 +113,13 @@ choice:
choice: Silumgar's Brood (UB)
choice: Kolaghan's Brood (BR)
choice: Atarka's Brood (RG)
+choice:
+ name: family symbol
+ choice: Brokers (GWU)
+ choice: Cabaretti (RGW)
+ choice: Maestros (UBR)
+ choice: Obscura (WUB)
+ choice: Riveteers (BRG)
choice:
name: unstable factions
choice: Order of the Widget
@@ -107,27 +153,32 @@ choice:
choice: W/U
choice:
name: future sight type symbols
- choice: artifact
choice: creature
+ choice: artifact
choice: enchantment
choice: instant
choice: land
choice: multiple
choice: planeswalker
choice: sorcery
+ choice: structure
choice:
name: other magic symbols
choice: aetherprint
+ choice: desparked
choice: chaos symbol
choice: color pie
choice: conspiracy stamp
choice: story spotlight
- choice: color spotlight
choice: jace consortium
+ choice: shooting star
choice: phyrexia
choice: seekers of carmot
choice: the thran
choice: foretell
+ choice:
+ name: judge academy
+ line below: true
choice:
name: innistrad provinces
choice: stensia
@@ -145,7 +196,9 @@ choice:
choice: Esper
choice: Grixis
choice: Jund
- choice: Naya
+ choice:
+ name: Naya
+ line below: true
choice:
name: colored
choice: Bant
@@ -160,6 +213,22 @@ choice:
choice: Witherbloom
choice: Lorehold
choice: Quandrix
+choice:
+ name: universes beyond
+ choice: D&D
+ choice:
+ name: transformers
+ line below: true
+ choice:
+ name: ponies
+ choice: applejack
+ choice: pinkie pie
+ choice: fluttershy
+ choice: rainbow dash
+ choice: rarity
+ choice: twilight sparkle
+ choice: nightmare moon
+ choice: luna
choice:
name: custom watermark
choice: one
diff --git a/data/magic-watermarks.mse-include/watermark_abzan.png b/data/magic-watermarks.mse-include/watermark_abzan.png
index b8b0265d8..cb414180a 100644
Binary files a/data/magic-watermarks.mse-include/watermark_abzan.png and b/data/magic-watermarks.mse-include/watermark_abzan.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_azorius.png b/data/magic-watermarks.mse-include/watermark_azorius.png
index b2ebbf1ef..1f0d20e5d 100644
Binary files a/data/magic-watermarks.mse-include/watermark_azorius.png and b/data/magic-watermarks.mse-include/watermark_azorius.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_b_big.png b/data/magic-watermarks.mse-include/watermark_b_big.png
new file mode 100644
index 000000000..bb2d35ada
Binary files /dev/null and b/data/magic-watermarks.mse-include/watermark_b_big.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_bant.png b/data/magic-watermarks.mse-include/watermark_bant.png
index 57580b08e..d5f27338e 100644
Binary files a/data/magic-watermarks.mse-include/watermark_bant.png and b/data/magic-watermarks.mse-include/watermark_bant.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_bgmana.png b/data/magic-watermarks.mse-include/watermark_bgmana.png
index 243649aad..66553780f 100644
Binary files a/data/magic-watermarks.mse-include/watermark_bgmana.png and b/data/magic-watermarks.mse-include/watermark_bgmana.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_boros.png b/data/magic-watermarks.mse-include/watermark_boros.png
index 3f3a02d5d..1a61c7fc1 100644
Binary files a/data/magic-watermarks.mse-include/watermark_boros.png and b/data/magic-watermarks.mse-include/watermark_boros.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_brmana.png b/data/magic-watermarks.mse-include/watermark_brmana.png
index 7d8b7db25..9c5f7e17f 100644
Binary files a/data/magic-watermarks.mse-include/watermark_brmana.png and b/data/magic-watermarks.mse-include/watermark_brmana.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_c.png b/data/magic-watermarks.mse-include/watermark_c.png
index f371c5e01..c762a4c90 100644
Binary files a/data/magic-watermarks.mse-include/watermark_c.png and b/data/magic-watermarks.mse-include/watermark_c.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_c_big.png b/data/magic-watermarks.mse-include/watermark_c_big.png
new file mode 100644
index 000000000..f97e30dd6
Binary files /dev/null and b/data/magic-watermarks.mse-include/watermark_c_big.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_c_old.png b/data/magic-watermarks.mse-include/watermark_c_old.png
new file mode 100644
index 000000000..a25cf93c1
Binary files /dev/null and b/data/magic-watermarks.mse-include/watermark_c_old.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_dimir.png b/data/magic-watermarks.mse-include/watermark_dimir.png
index 5241aaac8..22a343367 100644
Binary files a/data/magic-watermarks.mse-include/watermark_dimir.png and b/data/magic-watermarks.mse-include/watermark_dimir.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_dromoka.png b/data/magic-watermarks.mse-include/watermark_dromoka.png
index e403caa96..078f68934 100644
Binary files a/data/magic-watermarks.mse-include/watermark_dromoka.png and b/data/magic-watermarks.mse-include/watermark_dromoka.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_esper.png b/data/magic-watermarks.mse-include/watermark_esper.png
index fd7ae851b..78135b10c 100644
Binary files a/data/magic-watermarks.mse-include/watermark_esper.png and b/data/magic-watermarks.mse-include/watermark_esper.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_g_big.png b/data/magic-watermarks.mse-include/watermark_g_big.png
new file mode 100644
index 000000000..f746254ad
Binary files /dev/null and b/data/magic-watermarks.mse-include/watermark_g_big.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_golgari.png b/data/magic-watermarks.mse-include/watermark_golgari.png
index 36cf97120..1d2f60796 100644
Binary files a/data/magic-watermarks.mse-include/watermark_golgari.png and b/data/magic-watermarks.mse-include/watermark_golgari.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_grixis.png b/data/magic-watermarks.mse-include/watermark_grixis.png
index 2cc7611f5..e17cf60ea 100644
Binary files a/data/magic-watermarks.mse-include/watermark_grixis.png and b/data/magic-watermarks.mse-include/watermark_grixis.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_gruul.png b/data/magic-watermarks.mse-include/watermark_gruul.png
index 3acab5a29..432397ca1 100644
Binary files a/data/magic-watermarks.mse-include/watermark_gruul.png and b/data/magic-watermarks.mse-include/watermark_gruul.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_gumana.png b/data/magic-watermarks.mse-include/watermark_gumana.png
index c710e5277..3a03388e9 100644
Binary files a/data/magic-watermarks.mse-include/watermark_gumana.png and b/data/magic-watermarks.mse-include/watermark_gumana.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_gwmana.png b/data/magic-watermarks.mse-include/watermark_gwmana.png
index 8307bf643..5b790b3a8 100644
Binary files a/data/magic-watermarks.mse-include/watermark_gwmana.png and b/data/magic-watermarks.mse-include/watermark_gwmana.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_izzet.png b/data/magic-watermarks.mse-include/watermark_izzet.png
index 611b9b83b..a01901016 100644
Binary files a/data/magic-watermarks.mse-include/watermark_izzet.png and b/data/magic-watermarks.mse-include/watermark_izzet.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_izzet2.png b/data/magic-watermarks.mse-include/watermark_izzet2.png
index eb9d14664..5330d0cb1 100644
Binary files a/data/magic-watermarks.mse-include/watermark_izzet2.png and b/data/magic-watermarks.mse-include/watermark_izzet2.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_jeskai.png b/data/magic-watermarks.mse-include/watermark_jeskai.png
index 256226e31..2db6d3584 100644
Binary files a/data/magic-watermarks.mse-include/watermark_jeskai.png and b/data/magic-watermarks.mse-include/watermark_jeskai.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_jund.png b/data/magic-watermarks.mse-include/watermark_jund.png
index 38a5c2a6e..090d32de4 100644
Binary files a/data/magic-watermarks.mse-include/watermark_jund.png and b/data/magic-watermarks.mse-include/watermark_jund.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_kolaghan.png b/data/magic-watermarks.mse-include/watermark_kolaghan.png
index b4576c2f9..897042699 100644
Binary files a/data/magic-watermarks.mse-include/watermark_kolaghan.png and b/data/magic-watermarks.mse-include/watermark_kolaghan.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_mardu.png b/data/magic-watermarks.mse-include/watermark_mardu.png
index 4512198a9..dac7cd222 100644
Binary files a/data/magic-watermarks.mse-include/watermark_mardu.png and b/data/magic-watermarks.mse-include/watermark_mardu.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_naya.png b/data/magic-watermarks.mse-include/watermark_naya.png
index c6d9ec4d5..ad50a2f4a 100644
Binary files a/data/magic-watermarks.mse-include/watermark_naya.png and b/data/magic-watermarks.mse-include/watermark_naya.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_ojutai.png b/data/magic-watermarks.mse-include/watermark_ojutai.png
index 70b39f019..c26396449 100644
Binary files a/data/magic-watermarks.mse-include/watermark_ojutai.png and b/data/magic-watermarks.mse-include/watermark_ojutai.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_orzhov.png b/data/magic-watermarks.mse-include/watermark_orzhov.png
index f39b62f2b..0f8779bb6 100644
Binary files a/data/magic-watermarks.mse-include/watermark_orzhov.png and b/data/magic-watermarks.mse-include/watermark_orzhov.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_r_big.png b/data/magic-watermarks.mse-include/watermark_r_big.png
new file mode 100644
index 000000000..ab94e8e23
Binary files /dev/null and b/data/magic-watermarks.mse-include/watermark_r_big.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_rakados.png b/data/magic-watermarks.mse-include/watermark_rakados.png
index 6348d94fa..dad723f55 100644
Binary files a/data/magic-watermarks.mse-include/watermark_rakados.png and b/data/magic-watermarks.mse-include/watermark_rakados.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_rgmana.png b/data/magic-watermarks.mse-include/watermark_rgmana.png
index df64de28a..dcf17baaf 100644
Binary files a/data/magic-watermarks.mse-include/watermark_rgmana.png and b/data/magic-watermarks.mse-include/watermark_rgmana.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_rwmana.png b/data/magic-watermarks.mse-include/watermark_rwmana.png
index a23b599ab..a129382fb 100644
Binary files a/data/magic-watermarks.mse-include/watermark_rwmana.png and b/data/magic-watermarks.mse-include/watermark_rwmana.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_s.png b/data/magic-watermarks.mse-include/watermark_s.png
index 7aae11829..95a8d3e54 100644
Binary files a/data/magic-watermarks.mse-include/watermark_s.png and b/data/magic-watermarks.mse-include/watermark_s.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_selesnya.png b/data/magic-watermarks.mse-include/watermark_selesnya.png
index 325a6a3a6..9472bedd6 100644
Binary files a/data/magic-watermarks.mse-include/watermark_selesnya.png and b/data/magic-watermarks.mse-include/watermark_selesnya.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_silumgar.png b/data/magic-watermarks.mse-include/watermark_silumgar.png
index 9012aa9fe..11e128bd6 100644
Binary files a/data/magic-watermarks.mse-include/watermark_silumgar.png and b/data/magic-watermarks.mse-include/watermark_silumgar.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_simic.png b/data/magic-watermarks.mse-include/watermark_simic.png
index cc8675843..74ec00b39 100644
Binary files a/data/magic-watermarks.mse-include/watermark_simic.png and b/data/magic-watermarks.mse-include/watermark_simic.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_strix_lorehold.png b/data/magic-watermarks.mse-include/watermark_strix_lorehold.png
index 1fde061f5..87648f4f6 100644
Binary files a/data/magic-watermarks.mse-include/watermark_strix_lorehold.png and b/data/magic-watermarks.mse-include/watermark_strix_lorehold.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_strix_prismari.png b/data/magic-watermarks.mse-include/watermark_strix_prismari.png
index 3f2f79b91..d0976baab 100644
Binary files a/data/magic-watermarks.mse-include/watermark_strix_prismari.png and b/data/magic-watermarks.mse-include/watermark_strix_prismari.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_strix_quandrix.png b/data/magic-watermarks.mse-include/watermark_strix_quandrix.png
index e8a793192..98f5a8173 100644
Binary files a/data/magic-watermarks.mse-include/watermark_strix_quandrix.png and b/data/magic-watermarks.mse-include/watermark_strix_quandrix.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_strix_silverquill.png b/data/magic-watermarks.mse-include/watermark_strix_silverquill.png
index 53d1d09ea..ddc2d4e70 100644
Binary files a/data/magic-watermarks.mse-include/watermark_strix_silverquill.png and b/data/magic-watermarks.mse-include/watermark_strix_silverquill.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_strix_witherbloom.png b/data/magic-watermarks.mse-include/watermark_strix_witherbloom.png
index 43e038ac0..3062bdec2 100644
Binary files a/data/magic-watermarks.mse-include/watermark_strix_witherbloom.png and b/data/magic-watermarks.mse-include/watermark_strix_witherbloom.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_sultai.png b/data/magic-watermarks.mse-include/watermark_sultai.png
index 6bf63c366..c829e0cb5 100644
Binary files a/data/magic-watermarks.mse-include/watermark_sultai.png and b/data/magic-watermarks.mse-include/watermark_sultai.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_temur.png b/data/magic-watermarks.mse-include/watermark_temur.png
index e5c1d6f50..3170d86d3 100644
Binary files a/data/magic-watermarks.mse-include/watermark_temur.png and b/data/magic-watermarks.mse-include/watermark_temur.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_u_big.png b/data/magic-watermarks.mse-include/watermark_u_big.png
new file mode 100644
index 000000000..176c80d2a
Binary files /dev/null and b/data/magic-watermarks.mse-include/watermark_u_big.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_ubmana.png b/data/magic-watermarks.mse-include/watermark_ubmana.png
index a5170e894..4ce9139fb 100644
Binary files a/data/magic-watermarks.mse-include/watermark_ubmana.png and b/data/magic-watermarks.mse-include/watermark_ubmana.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_urmana.png b/data/magic-watermarks.mse-include/watermark_urmana.png
index 064983efb..0418b1aa1 100644
Binary files a/data/magic-watermarks.mse-include/watermark_urmana.png and b/data/magic-watermarks.mse-include/watermark_urmana.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_w_big.png b/data/magic-watermarks.mse-include/watermark_w_big.png
new file mode 100644
index 000000000..799942759
Binary files /dev/null and b/data/magic-watermarks.mse-include/watermark_w_big.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_wbmana.png b/data/magic-watermarks.mse-include/watermark_wbmana.png
index a1718be43..30a885f8e 100644
Binary files a/data/magic-watermarks.mse-include/watermark_wbmana.png and b/data/magic-watermarks.mse-include/watermark_wbmana.png differ
diff --git a/data/magic-watermarks.mse-include/watermark_wumana.png b/data/magic-watermarks.mse-include/watermark_wumana.png
index 7fc908785..2a0603c81 100644
Binary files a/data/magic-watermarks.mse-include/watermark_wumana.png and b/data/magic-watermarks.mse-include/watermark_wumana.png differ
diff --git a/data/magic-watermarks.mse-include/watermarks b/data/magic-watermarks.mse-include/watermarks
index 34ab6415e..d40635834 100644
--- a/data/magic-watermarks.mse-include/watermarks
+++ b/data/magic-watermarks.mse-include/watermarks
@@ -1,165 +1,203 @@
-# Watermark images
+# Watermark images for the main face
choice images:
- mana symbol white: /magic-watermarks.mse-include/watermark_w.png
- mana symbol blue: /magic-watermarks.mse-include/watermark_u.png
- mana symbol black: /magic-watermarks.mse-include/watermark_b.png
- mana symbol red: /magic-watermarks.mse-include/watermark_r.png
- mana symbol green: /magic-watermarks.mse-include/watermark_g.png
- mana symbol colorless: /magic-watermarks.mse-include/watermark_c.png
- mana symbol snow: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_s.png")
-
- transparent mana symbol white: script: set_alpha(alpha: 0.4, input:"/magic-watermarks.mse-include/watermark_w.png")
- transparent mana symbol blue: script: set_alpha(alpha: 0.4, input:"/magic-watermarks.mse-include/watermark_u.png")
- transparent mana symbol black: script: set_alpha(alpha: 0.4, input:"/magic-watermarks.mse-include/watermark_b.png")
- transparent mana symbol red: script: set_alpha(alpha: 0.4, input:"/magic-watermarks.mse-include/watermark_r.png")
- transparent mana symbol green: script: set_alpha(alpha: 0.4, input:"/magic-watermarks.mse-include/watermark_g.png")
+ mana symbol white: script: "/magic-watermarks.mse-include/watermark_w.png"
+ mana symbol blue: script: "/magic-watermarks.mse-include/watermark_u.png"
+ mana symbol black: script: "/magic-watermarks.mse-include/watermark_b.png"
+ mana symbol red: script: "/magic-watermarks.mse-include/watermark_r.png"
+ mana symbol green: script: "/magic-watermarks.mse-include/watermark_g.png"
+ mana symbol colorless: script: "/magic-watermarks.mse-include/watermark_c.png"
+ mana symbol snow: script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_s.png")
- guild symbol The Azorius Senate (W/U): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_azorius2.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_azorius2.png"))
- guild symbol House Dimir (U/B): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_dimir2.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_dimir2.png"))
- guild symbol The Cult of Rakdos (B/R): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_rakados2.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_rakados2.png"))
- guild symbol The Gruul Clans (R/G): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_gruul2.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_gruul2.png"))
- guild symbol The Selesnya Conclave (G/W): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_selesnya2.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_selesnya2.png"))
- guild symbol The Orzhov Syndicate (W/B): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_orzhov2.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_orzhov2.png"))
- guild symbol The Izzet (U/R): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_izzet2.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_izzet2.png"))
- guild symbol The Golgari (B/G): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_golgari2.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_golgari2.png"))
- guild symbol The Boros Legion (R/W): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_boros2.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_boros2.png"))
- guild symbol The Simic Combine (G/U): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_simic2.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_simic2.png"))
+ mana symbol old white: script: "/magic-watermarks.mse-include/watermark_w_old.png"
+ mana symbol old blue: script: "/magic-watermarks.mse-include/watermark_u_old.png"
+ mana symbol old black: script: "/magic-watermarks.mse-include/watermark_b_old.png"
+ mana symbol old red: script: "/magic-watermarks.mse-include/watermark_r_old.png"
+ mana symbol old green: script: "/magic-watermarks.mse-include/watermark_g_old.png"
+ mana symbol old colorless: script: "/magic-watermarks.mse-include/watermark_c_old.png"
- guild symbol originals The Azorius Senate (W/U): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_azorius.png")
- guild symbol originals House Dimir (U/B): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_dimir.png")
- guild symbol originals The Cult of Rakdos (B/R): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_rakados.png")
- guild symbol originals The Gruul Clans (R/G): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_gruul.png")
- guild symbol originals The Selesnya Conclave (G/W): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_selesnya.png")
- guild symbol originals The Orzhov Syndicate (W/B): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_orzhov.png")
- guild symbol originals The Izzet (U/R): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_izzet.png")
- guild symbol originals The Golgari (B/G): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_golgari.png")
- guild symbol originals The Boros Legion (R/W): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_boros.png")
- guild symbol originals The Simic Combine (G/U): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_simic.png")
+ mana symbol hi res white: script: "/magic-watermarks.mse-include/watermark_w_big.png"
+ mana symbol hi res blue: script: "/magic-watermarks.mse-include/watermark_u_big.png"
+ mana symbol hi res black: script: "/magic-watermarks.mse-include/watermark_b_big.png"
+ mana symbol hi res red: script: "/magic-watermarks.mse-include/watermark_r_big.png"
+ mana symbol hi res green: script: "/magic-watermarks.mse-include/watermark_g_big.png"
+ mana symbol hi res colorless: script: "/magic-watermarks.mse-include/watermark_c_big.png"
- guild symbol ancients The Azorius Senate (W/U): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-azorius.png")
- guild symbol ancients House Dimir (U/B): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-dimir.png")
- guild symbol ancients The Cult of Rakdos (B/R): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-rakdos.png")
- guild symbol ancients The Gruul Clans (R/G): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-gruul.png")
- guild symbol ancients The Selesnya Conclave (G/W): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-selesnya.png")
- guild symbol ancients The Orzhov Syndicate (W/B): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-orzhov.png")
- guild symbol ancients The Izzet (U/R): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-izzet.png")
- guild symbol ancients The Golgari (B/G): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-golgari.png")
- guild symbol ancients The Boros Legion (R/W): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-boros.png")
- guild symbol ancients The Simic Combine (G/U): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-simic.png")
+ transparent mana symbol white: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_w.png")
+ transparent mana symbol blue: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_u.png")
+ transparent mana symbol black: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_b.png")
+ transparent mana symbol red: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_r.png")
+ transparent mana symbol green: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_g.png")
- faction symbol mirrodin: script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_mirrodin.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_mirrodin.png"))
- faction symbol phyrexia: script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_phyrexia.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_phyrexia.png"))
+ transparent mana symbol old white: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_w_old.png")
+ transparent mana symbol old blue: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_u_old.png")
+ transparent mana symbol old black: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_b_old.png")
+ transparent mana symbol old red: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_r_old.png")
+ transparent mana symbol old green: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_g_old.png")
+ transparent mana symbol old colorless: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_c_old.png")
- clan symbol The Abzan Houses (WBG): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_abzan.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_abzan.png"))
- clan symbol The Jeskai Way (URW): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_jeskai.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_jeskai.png"))
- clan symbol The Sultai Brood (BGU): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_sultai.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_sultai.png"))
- clan symbol The Mardu Horde (RWB): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_mardu.png", h:300) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_mardu.png"))
- clan symbol The Temur Frontier (GUR): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_temur.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_temur.png"))
+ transparent mana symbol hi res white: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_w_big.png")
+ transparent mana symbol hi res blue: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_u_big.png")
+ transparent mana symbol hi res black: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_b_big.png")
+ transparent mana symbol hi res red: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_r_big.png")
+ transparent mana symbol hi res green: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_g_big.png")
+ transparent mana symbol hi res colorless: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_c_big.png")
- brood symbol Dromoka's Brood (GW): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_dromoka.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_dromoka.png"))
- brood symbol Ojutai's Brood (WU): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_ojutai.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_ojutai.png"))
- brood symbol Silumgar's Brood (UB): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_silumgar.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_silumgar.png"))
- brood symbol Kolaghan's Brood (BR): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_kolaghan.png", h:300) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_kolaghan.png"))
- brood symbol Atarka's Brood (RG): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_atarka.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_atarka.png"))
+ guild symbol The Azorius Senate (W/U): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_azorius2.png")
+ guild symbol House Dimir (U/B): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_dimir2.png")
+ guild symbol The Cult of Rakdos (B/R): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_rakados2.png")
+ guild symbol The Gruul Clans (R/G): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_gruul2.png")
+ guild symbol The Selesnya Conclave (G/W): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_selesnya2.png")
+ guild symbol The Orzhov Syndicate (W/B): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_orzhov2.png")
+ guild symbol The Izzet (U/R): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_izzet2.png")
+ guild symbol The Golgari (B/G): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_golgari2.png")
+ guild symbol The Boros Legion (R/W): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_boros2.png")
+ guild symbol The Simic Combine (G/U): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_simic2.png")
- unstable factions Order of the Widget: script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/unstable_widget.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/unstable_widget.png"))
- unstable factions Agents of S.N.E.A.K.: script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/unstable_SNEAK.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/unstable_SNEAK.png"))
- unstable factions League of Dastardly Doom: script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/unstable_doom.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/unstable_doom.png"))
- unstable factions Goblin Explosioneers: script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/unstable_explosioneers.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/unstable_explosioneers.png"))
- unstable factions Crossbreed Labs: script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/unstable_crossbreed.png") else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/unstable_crossbreed.png"))
-
- colored xander hybrid mana B/R: /magic-watermarks.mse-include/watermark_brmana_colored.png
- colored xander hybrid mana U/B: /magic-watermarks.mse-include/watermark_ubmana_colored.png
- colored xander hybrid mana B/G: /magic-watermarks.mse-include/watermark_bgmana_colored.png
- colored xander hybrid mana R/G: /magic-watermarks.mse-include/watermark_rgmana_colored.png
- colored xander hybrid mana G/U: /magic-watermarks.mse-include/watermark_gumana_colored.png
- colored xander hybrid mana U/R: /magic-watermarks.mse-include/watermark_urmana_colored.png
- colored xander hybrid mana W/B: /magic-watermarks.mse-include/watermark_wbmana_colored.png
- colored xander hybrid mana G/W: /magic-watermarks.mse-include/watermark_gwmana_colored.png
- colored xander hybrid mana R/W: /magic-watermarks.mse-include/watermark_rwmana_colored.png
- colored xander hybrid mana W/U: /magic-watermarks.mse-include/watermark_wumana_colored.png
-
- xander hybrid mana B/R: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_brmana.png")
- xander hybrid mana U/B: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_ubmana.png")
- xander hybrid mana B/G: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_bgmana.png")
- xander hybrid mana R/G: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_rgmana.png")
- xander hybrid mana G/U: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_gumana.png")
- xander hybrid mana U/R: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_urmana.png")
- xander hybrid mana W/B: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_wbmana.png")
- xander hybrid mana G/W: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_gwmana.png")
- xander hybrid mana R/W: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_rwmana.png")
- xander hybrid mana W/U: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_wumana.png")
+ guild symbol originals The Azorius Senate (W/U): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_azorius.png")
+ guild symbol originals House Dimir (U/B): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_dimir.png")
+ guild symbol originals The Cult of Rakdos (B/R): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_rakados.png")
+ guild symbol originals The Gruul Clans (R/G): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_gruul.png")
+ guild symbol originals The Selesnya Conclave (G/W): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_selesnya.png")
+ guild symbol originals The Orzhov Syndicate (W/B): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_orzhov.png")
+ guild symbol originals The Izzet (U/R): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_izzet.png")
+ guild symbol originals The Golgari (B/G): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_golgari.png")
+ guild symbol originals The Boros Legion (R/W): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_boros.png")
+ guild symbol originals The Simic Combine (G/U): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_simic.png")
- future sight type symbols artifact: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_artifact.png")
- future sight type symbols creature: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_creature.png")
- future sight type symbols enchantment: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_enchantment.png")
- future sight type symbols instant: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_instant.png")
- future sight type symbols land: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_land.png")
- future sight type symbols multiple: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_multiple.png")
- future sight type symbols planeswalker: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_planeswalker.png")
- future sight type symbols sorcery: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_sorcery.png")
+ guild symbol ancients The Azorius Senate (W/U): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark-frazier-azorius.png")
+ guild symbol ancients House Dimir (U/B): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark-frazier-dimir.png")
+ guild symbol ancients The Cult of Rakdos (B/R): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark-frazier-rakdos.png")
+ guild symbol ancients The Gruul Clans (R/G): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark-frazier-gruul.png")
+ guild symbol ancients The Selesnya Conclave (G/W): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark-frazier-selesnya.png")
+ guild symbol ancients The Orzhov Syndicate (W/B): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark-frazier-orzhov.png")
+ guild symbol ancients The Izzet (U/R): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark-frazier-izzet.png")
+ guild symbol ancients The Golgari (B/G): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark-frazier-golgari.png")
+ guild symbol ancients The Boros Legion (R/W): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark-frazier-boros.png")
+ guild symbol ancients The Simic Combine (G/U): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark-frazier-simic.png")
- other magic symbols aetherprint: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/aetherprint.png"))
- other magic symbols chaos symbol: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/chaos.png"))
- other magic symbols color pie: /magic-watermarks.mse-include/colorpie.png
- other magic symbols conspiracy stamp: script: set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/conspiracy_stamp.png")
- other magic symbols story spotlight: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/planeswalker.png"))
- other magic symbols color spotlight: script: spotlight_watermark_blend("/magic-watermarks.mse-include/planeswalker.png")
- other magic symbols jace consortium: script: spotlight_watermark_blend("/magic-watermarks.mse-include/jace-consortium.png")
- other magic symbols phyrexia: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/phyrexia.png"))
- other magic symbols seekers of carmot: script: spotlight_watermark_blend("/magic-watermarks.mse-include/seekersofcarmot.png,266,266")
- other magic symbols the thran: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/thran.png"))
- other magic symbols foretell: script: spotlight_watermark_blend("/magic-watermarks.mse-include/foretell.png", h:380)
-
- other magic symbols innistrad provinces stensia: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/stensia.png"))
- other magic symbols innistrad provinces kessig: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/kessig.png"))
- other magic symbols innistrad provinces gavony: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/gavony.png"))
- other magic symbols innistrad provinces nephalia: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/nephalia.png"))
-
- other magic symbols theros poleis akros: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/akros.png")
- other magic symbols theros poleis meletis: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/meletis.png")
- other magic symbols theros poleis setessa: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/setessa.png")
-
- alara symbols Bant: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_bant.png")
- alara symbols Esper: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_esper.png")
- alara symbols Grixis: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_grixis.png")
- alara symbols Jund: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_jund.png")
- alara symbols Naya: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_naya.png")
- alara symbols colored Bant: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_bant_colored.png")
- alara symbols colored Esper: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_esper_colored.png")
- alara symbols colored Grixis: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_grixis_colored.png")
- alara symbols colored Jund: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_jund_colored.png")
- alara symbols colored Naya: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_naya_colored.png")
-
- college symbols Silverquill: script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_strix_silverquill.png")
- college symbols Prismari: script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_strix_prismari.png")
- college symbols Witherbloom: script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_strix_witherbloom.png")
- college symbols Lorehold: script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_strix_lorehold.png")
- college symbols Quandrix: script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_strix_quandrix.png")
-
- custom watermark one: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_1()) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_1()))
- custom watermark two: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_2()) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_2()))
- custom watermark three: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_3()) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_3()))
- custom watermark four: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_4()) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_4()))
- custom watermark five: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_5()) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_5()))
- custom watermark six: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_6()) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_6()))
- custom watermark seven: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_7()) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_7()))
- custom watermark eight: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_8()) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_8()))
- custom watermark nine: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_9()) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_9()))
- custom watermark ten: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_10()) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_10()))
- custom watermark card: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_a()) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_a()))
-
- set symbol:
- { set_combine(combine:"shadow",
- set_alpha(
- alpha: 0.5,
- #symbol_variation(symbol: set.symbol, variation: "common")
- drop_shadow(offset_x: -0.01, offset_y: 0.03, blur_radius: 0.02, alpha: 1, color: rgb(0,0,0),
- enlarge(border_size: 0.03,
- symbol_variation(symbol: set.symbol, variation: "watermark")
- )
- )
- )
- )
- }
+ faction symbol mirrodin: script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_mirrodin.png")
+ faction symbol phyrexia: script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_phyrexia.png")
+
+ clan symbol The Abzan Houses (WBG): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_abzan.png")
+ clan symbol The Jeskai Way (URW): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_jeskai.png")
+ clan symbol The Sultai Brood (BGU): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_sultai.png")
+ clan symbol The Mardu Horde (RWB): script: watermark_blend(face:1, h: 400, "/magic-watermarks.mse-include/watermark_mardu.png")
+ clan symbol The Temur Frontier (GUR): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_temur.png")
+
+ brood symbol Dromoka's Brood (GW): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_dromoka.png")
+ brood symbol Ojutai's Brood (WU): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_ojutai.png")
+ brood symbol Silumgar's Brood (UB): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_silumgar.png")
+ brood symbol Kolaghan's Brood (BR): script: watermark_blend(face:1, h: 400, "/magic-watermarks.mse-include/watermark_kolaghan.png")
+ brood symbol Atarka's Brood (RG): script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_atarka.png")
+
+ family symbol Brokers (GWU): script: watermark_blend(face:1, "/magic-watermarks.mse-include/capenna_brokers.png")
+ family symbol Cabaretti (RGW): script: watermark_blend(face:1, "/magic-watermarks.mse-include/capenna_cabaretti.png")
+ family symbol Maestros (UBR): script: watermark_blend(face:1, "/magic-watermarks.mse-include/capenna_maestros.png")
+ family symbol Obscura (WUB): script: watermark_blend(face:1, "/magic-watermarks.mse-include/capenna_obscura.png")
+ family symbol Riveteers (BRG): script: watermark_blend(face:1, "/magic-watermarks.mse-include/capenna_riveteers.png")
+
+ unstable factions Order of the Widget: script: watermark_blend(face:1, "/magic-watermarks.mse-include/unstable_widget.png")
+ unstable factions Agents of S.N.E.A.K.: script: watermark_blend(face:1, "/magic-watermarks.mse-include/unstable_SNEAK.png")
+ unstable factions League of Dastardly Doom: script: watermark_blend(face:1, "/magic-watermarks.mse-include/unstable_doom.png")
+ unstable factions Goblin Explosioneers: script: watermark_blend(face:1, "/magic-watermarks.mse-include/unstable_explosioneers.png")
+ unstable factions Crossbreed Labs: script: watermark_blend(face:1, "/magic-watermarks.mse-include/unstable_crossbreed.png")
+
+ colored xander hybrid mana W/U: script: "/magic-watermarks.mse-include/watermark_wumana_colored.png"
+ colored xander hybrid mana U/B: script: "/magic-watermarks.mse-include/watermark_ubmana_colored.png"
+ colored xander hybrid mana B/R: script: "/magic-watermarks.mse-include/watermark_brmana_colored.png"
+ colored xander hybrid mana R/G: script: "/magic-watermarks.mse-include/watermark_rgmana_colored.png"
+ colored xander hybrid mana G/W: script: "/magic-watermarks.mse-include/watermark_gwmana_colored.png"
+ colored xander hybrid mana W/B: script: "/magic-watermarks.mse-include/watermark_wbmana_colored.png"
+ colored xander hybrid mana U/R: script: "/magic-watermarks.mse-include/watermark_urmana_colored.png"
+ colored xander hybrid mana B/G: script: "/magic-watermarks.mse-include/watermark_bgmana_colored.png"
+ colored xander hybrid mana R/W: script: "/magic-watermarks.mse-include/watermark_rwmana_colored.png"
+ colored xander hybrid mana G/U: script: "/magic-watermarks.mse-include/watermark_gumana_colored.png"
+
+ xander hybrid mana W/U: script: watermark_blend(face:1, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_wumana.png")
+ xander hybrid mana U/B: script: watermark_blend(face:1, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_ubmana.png")
+ xander hybrid mana B/R: script: watermark_blend(face:1, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_brmana.png")
+ xander hybrid mana R/G: script: watermark_blend(face:1, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_rgmana.png")
+ xander hybrid mana G/W: script: watermark_blend(face:1, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_gwmana.png")
+ xander hybrid mana W/B: script: watermark_blend(face:1, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_wbmana.png")
+ xander hybrid mana U/R: script: watermark_blend(face:1, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_urmana.png")
+ xander hybrid mana B/G: script: watermark_blend(face:1, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_bgmana.png")
+ xander hybrid mana R/W: script: watermark_blend(face:1, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_rwmana.png")
+ xander hybrid mana G/U: script: watermark_blend(face:1, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_gumana.png")
+
+ future sight type symbols artifact: script: watermark_blend(face:1, "/magic-watermarks.mse-include/futsymbol_artifact.png")
+ future sight type symbols creature: script: watermark_blend(face:1, "/magic-watermarks.mse-include/futsymbol_creature.png")
+ future sight type symbols enchantment: script: watermark_blend(face:1, "/magic-watermarks.mse-include/futsymbol_enchantment.png")
+ future sight type symbols instant: script: watermark_blend(face:1, "/magic-watermarks.mse-include/futsymbol_instant.png")
+ future sight type symbols land: script: watermark_blend(face:1, "/magic-watermarks.mse-include/futsymbol_land.png")
+ future sight type symbols multiple: script: watermark_blend(face:1, "/magic-watermarks.mse-include/futsymbol_multiple.png")
+ future sight type symbols planeswalker: script: watermark_blend(face:1, "/magic-watermarks.mse-include/futsymbol_planeswalker.png")
+ future sight type symbols sorcery: script: watermark_blend(face:1, "/magic-watermarks.mse-include/futsymbol_sorcery.png")
+ future sight type symbols structure: script: watermark_blend(face:1, "/magic-watermarks.mse-include/futsymbol_structure.png")
+
+ other magic symbols aetherprint: script: watermark_blend(face:1, h:500, l:317, "/magic-watermarks.mse-include/aetherprint.png")
+ other magic symbols desparked: script: watermark_blend(face:1, h:500, l:500, "/magic-watermarks.mse-include/desparked.png")
+ other magic symbols chaos symbol: script: watermark_blend(face:1, h:500, l:500, "/magic-watermarks.mse-include/chaos.png")
+ other magic symbols story spotlight: script: watermark_blend(face:1, h:500, l:500, "/magic-watermarks.mse-include/planeswalker.png")
+ other magic symbols color spotlight: script: watermark_blend(face:1, h:500, l:500, "/magic-watermarks.mse-include/planeswalker.png")
+ other magic symbols shooting star: script: watermark_blend(face:1, h:400, l:500, "/magic-watermarks.mse-include/shooting_star.png")
+ other magic symbols the thran: script: watermark_blend(face:1, h:240, l:163, "/magic-watermarks.mse-include/thran.png")
+ other magic symbols phyrexia: script: watermark_blend(face:1, h:217, l:115, "/magic-watermarks.mse-include/phyrexia.png")
+ other magic symbols color pie: script: watermark_blend(face:1, h:500, l:500, "/magic-watermarks.mse-include/colorpie.png")
+ other magic symbols judge academy: script: watermark_blend(face:1, h:500, l:500, "/magic-watermarks.mse-include/judge_academy.png")
+ other magic symbols foretell: script: watermark_blend(face:1, h:460, l:500, "/magic-watermarks.mse-include/foretell.png")
+ other magic symbols jace consortium: script: watermark_blend(face:1, h:500, l:500, "/magic-watermarks.mse-include/jace-consortium.png")
+ other magic symbols seekers of carmot: script: watermark_blend(face:1, h:500, l:500, "/magic-watermarks.mse-include/seekersofcarmot.png")
+ other magic symbols conspiracy stamp: script: set_alpha(alpha: 0.3, "/magic-watermarks.mse-include/conspiracy_stamp.png")
+
+ other magic symbols innistrad provinces stensia: script: watermark_blend(face:1, "/magic-watermarks.mse-include/stensia.png")
+ other magic symbols innistrad provinces kessig: script: watermark_blend(face:1, "/magic-watermarks.mse-include/kessig.png")
+ other magic symbols innistrad provinces gavony: script: watermark_blend(face:1, "/magic-watermarks.mse-include/gavony.png")
+ other magic symbols innistrad provinces nephalia: script: watermark_blend(face:1, "/magic-watermarks.mse-include/nephalia.png")
+
+ other magic symbols theros poleis akros: script: watermark_blend(face:1, "/magic-watermarks.mse-include/akros.png")
+ other magic symbols theros poleis meletis: script: watermark_blend(face:1, "/magic-watermarks.mse-include/meletis.png")
+ other magic symbols theros poleis setessa: script: watermark_blend(face:1, "/magic-watermarks.mse-include/setessa.png")
+
+ alara symbols Bant: script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_bant.png")
+ alara symbols Esper: script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_esper.png")
+ alara symbols Grixis: script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_grixis.png")
+ alara symbols Jund: script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_jund.png")
+ alara symbols Naya: script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_naya.png")
+
+ alara symbols colored Bant: script: set_combine(combine:"shadow", "/magic-watermarks.mse-include/watermark_bant_colored.png")
+ alara symbols colored Esper: script: set_combine(combine:"shadow", "/magic-watermarks.mse-include/watermark_esper_colored.png")
+ alara symbols colored Grixis: script: set_combine(combine:"shadow", "/magic-watermarks.mse-include/watermark_grixis_colored.png")
+ alara symbols colored Jund: script: set_combine(combine:"shadow", "/magic-watermarks.mse-include/watermark_jund_colored.png")
+ alara symbols colored Naya: script: set_combine(combine:"shadow", "/magic-watermarks.mse-include/watermark_naya_colored.png")
+
+ college symbols Silverquill: script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_strix_silverquill.png")
+ college symbols Prismari: script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_strix_prismari.png")
+ college symbols Witherbloom: script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_strix_witherbloom.png")
+ college symbols Lorehold: script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_strix_lorehold.png")
+ college symbols Quandrix: script: watermark_blend(face:1, "/magic-watermarks.mse-include/watermark_strix_quandrix.png")
+
+ universes beyond D&D: script: watermark_blend(face:1, "/magic-watermarks.mse-include/d&d.png")
+ universes beyond transformers: script: watermark_blend(face:1, "/magic-watermarks.mse-include/transformers.png")
+ universes beyond ponies applejack: script: watermark_blend(face:1, "/magic-watermarks.mse-include/ponies_apples.png")
+ universes beyond ponies pinkie pie: script: watermark_blend(face:1, "/magic-watermarks.mse-include/ponies_balloons.png")
+ universes beyond ponies fluttershy: script: watermark_blend(face:1, "/magic-watermarks.mse-include/ponies_butterflies.png")
+ universes beyond ponies rainbow dash: script: watermark_blend(face:1, "/magic-watermarks.mse-include/ponies_rainbow.png")
+ universes beyond ponies rarity: script: watermark_blend(face:1, "/magic-watermarks.mse-include/ponies_gems.png")
+ universes beyond ponies twilight sparkle: script: watermark_blend(face:1, "/magic-watermarks.mse-include/ponies_sparkles.png")
+ universes beyond ponies nightmare moon: script: watermark_blend(face:1, "/magic-watermarks.mse-include/ponies_waning_moon.png")
+ universes beyond ponies luna: script: watermark_blend(face:1, "/magic-watermarks.mse-include/ponies_waxing_moon.png")
+
+ custom watermark one: script: watermark_blend(face:1, custom_watermark_1())
+ custom watermark two: script: watermark_blend(face:1, custom_watermark_2())
+ custom watermark three: script: watermark_blend(face:1, custom_watermark_3())
+ custom watermark four: script: watermark_blend(face:1, custom_watermark_4())
+ custom watermark five: script: watermark_blend(face:1, custom_watermark_5())
+ custom watermark six: script: watermark_blend(face:1, custom_watermark_6())
+ custom watermark seven: script: watermark_blend(face:1, custom_watermark_7())
+ custom watermark eight: script: watermark_blend(face:1, custom_watermark_8())
+ custom watermark nine: script: watermark_blend(face:1, custom_watermark_9())
+ custom watermark ten: script: watermark_blend(face:1, custom_watermark_10())
+ custom watermark card: script: watermark_blend(face:1, custom_watermark_a())
+
+ set symbol: script: shadow_watermark_blend(symbol_variation(symbol: set.symbol, variation: "watermark"))
diff --git a/data/magic-watermarks.mse-include/watermarks - alara b/data/magic-watermarks.mse-include/watermarks - alara
deleted file mode 100644
index 42444aceb..000000000
--- a/data/magic-watermarks.mse-include/watermarks - alara
+++ /dev/null
@@ -1,153 +0,0 @@
-# Watermark images
-
-choice images:
- ALR ALRBant: script: alr_bant_blend()
- ALR ALREsper: script: alr_esper_blend()
- ALR ALRGrixis: script: alr_grixis_blend()
- ALR ALRJund: script: alr_jund_blend()
- ALR ALRNaya: script: alr_naya_blend()
-
- mana symbol white: /magic-watermarks.mse-include/watermark_w.png
- mana symbol blue: /magic-watermarks.mse-include/watermark_u.png
- mana symbol black: /magic-watermarks.mse-include/watermark_b.png
- mana symbol red: /magic-watermarks.mse-include/watermark_r.png
- mana symbol green: /magic-watermarks.mse-include/watermark_g.png
- mana symbol colorless: /magic-watermarks.mse-include/watermark_c.png
- mana symbol snow: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_s.png")
-
- transparent mana symbol white: script: set_alpha(alpha: 0.4, input:"/magic-watermarks.mse-include/watermark_w.png")
- transparent mana symbol blue: script: set_alpha(alpha: 0.4, input:"/magic-watermarks.mse-include/watermark_u.png")
- transparent mana symbol black: script: set_alpha(alpha: 0.4, input:"/magic-watermarks.mse-include/watermark_b.png")
- transparent mana symbol red: script: set_alpha(alpha: 0.4, input:"/magic-watermarks.mse-include/watermark_r.png")
- transparent mana symbol green: script: set_alpha(alpha: 0.4, input:"/magic-watermarks.mse-include/watermark_g.png")
-
- guild symbol The Azorius Senate (W/U): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_azorius2.png")
- guild symbol House Dimir (U/B): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_dimir2.png")
- guild symbol The Cult of Rakdos (B/R): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_rakados2.png")
- guild symbol The Gruul Clans (R/G): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_gruul2.png")
- guild symbol The Selesnya Conclave (G/W): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_selesnya2.png")
- guild symbol The Orzhov Syndicate (W/B): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_orzhov2.png")
- guild symbol The Izzet (U/R): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_izzet2.png")
- guild symbol The Golgari (B/G): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_golgari2.png")
- guild symbol The Boros Legion (R/W): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_boros2.png")
- guild symbol The Simic Combine (G/U): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_simic2.png")
-
- guild symbol originals The Azorius Senate (W/U): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_azorius.png")
- guild symbol originals House Dimir (U/B): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_dimir.png")
- guild symbol originals The Cult of Rakdos (B/R): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_rakados.png")
- guild symbol originals The Gruul Clans (R/G): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_gruul.png")
- guild symbol originals The Selesnya Conclave (G/W): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_selesnya.png")
- guild symbol originals The Orzhov Syndicate (W/B): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_orzhov.png")
- guild symbol originals The Izzet (U/R): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_izzet.png")
- guild symbol originals The Golgari (B/G): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_golgari.png")
- guild symbol originals The Boros Legion (R/W): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_boros.png")
- guild symbol originals The Simic Combine (G/U): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_simic.png")
-
- faction symbol mirrodin: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_mirrodin.png")
- faction symbol phyrexia: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_phyrexia.png")
-
- clan symbol The Abzan Houses (WBG): script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.65, input:"/magic-watermarks.mse-include/watermark_abzan.png"))
- clan symbol The Jeskai Way (URW): script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.65, input:"/magic-watermarks.mse-include/watermark_jeskai.png"))
- clan symbol The Sultai Brood (BGU): script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.65, input:"/magic-watermarks.mse-include/watermark_sultai.png"))
- clan symbol The Mardu Horde (RWB): script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.65, input:"/magic-watermarks.mse-include/watermark_mardu.png"))
- clan symbol The Temur Frontier (GUR): script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.65, input:"/magic-watermarks.mse-include/watermark_temur.png"))
-
- brood symbol Dromoka's Brood (GW): script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.65, input:"/magic-watermarks.mse-include/watermark_dromoka.png"))
- brood symbol Ojutai's Brood (WU): script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.65, input:"/magic-watermarks.mse-include/watermark_ojutai.png"))
- brood symbol Silumgar's Brood (UB): script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.65, input:"/magic-watermarks.mse-include/watermark_silumgar.png"))
- brood symbol Kolaghan's Brood (BR): script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.65, input:"/magic-watermarks.mse-include/watermark_kolaghan.png"))
- brood symbol Atarka's Brood (RG): script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.65, input:"/magic-watermarks.mse-include/watermark_atarka.png"))
-
- unstable factions Order of the Widget: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/unstable_widget.png"))
- unstable factions Agents of S.N.E.A.K.: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/unstable_SNEAK.png"))
- unstable factions League of Dastardly Doom: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/unstable_doom.png"))
- unstable factions Goblin Explosioneers: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/unstable_explosioneers.png"))
- unstable factions Crossbreed Labs: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/unstable_crossbreed.png"))
-
-
- colored xander hybrid mana B/R: /magic-watermarks.mse-include/watermark_brmana_colored.png
- colored xander hybrid mana U/B: /magic-watermarks.mse-include/watermark_ubmana_colored.png
- colored xander hybrid mana B/G: /magic-watermarks.mse-include/watermark_bgmana_colored.png
- colored xander hybrid mana R/G: /magic-watermarks.mse-include/watermark_rgmana_colored.png
- colored xander hybrid mana G/U: /magic-watermarks.mse-include/watermark_gumana_colored.png
- colored xander hybrid mana U/R: /magic-watermarks.mse-include/watermark_urmana_colored.png
- colored xander hybrid mana W/B: /magic-watermarks.mse-include/watermark_wbmana_colored.png
- colored xander hybrid mana G/W: /magic-watermarks.mse-include/watermark_gwmana_colored.png
- colored xander hybrid mana R/W: /magic-watermarks.mse-include/watermark_rwmana_colored.png
- colored xander hybrid mana W/U: /magic-watermarks.mse-include/watermark_wumana_colored.png
-
- xander hybrid mana B/R: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_brmana.png")
- xander hybrid mana U/B: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_ubmana.png")
- xander hybrid mana B/G: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_bgmana.png")
- xander hybrid mana R/G: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_rgmana.png")
- xander hybrid mana G/U: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_gumana.png")
- xander hybrid mana U/R: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_urmana.png")
- xander hybrid mana W/B: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_wbmana.png")
- xander hybrid mana G/W: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_gwmana.png")
- xander hybrid mana R/W: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_rwmana.png")
- xander hybrid mana W/U: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_wumana.png")
-
- future sight type symbols artifact: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_artifact.png")
- future sight type symbols creature: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_creature.png")
- future sight type symbols enchantment: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_enchantment.png")
- future sight type symbols instant: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_instant.png")
- future sight type symbols land: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_land.png")
- future sight type symbols multiple: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_multiple.png")
- future sight type symbols planeswalker: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_planeswalker.png")
- future sight type symbols sorcery: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_sorcery.png")
-
- other magic symbols aetherprint: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/aetherprint.png"))
- other magic symbols chaos symbol: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/chaos.png"))
- other magic symbols color pie: /magic-watermarks.mse-include/colorpie.png
- other magic symbols conspiracy stamp: script: set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/conspiracy_stamp.png")
- other magic symbols story spotlight: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/planeswalker.png"))
- other magic symbols color spotlight: script: spotlight_watermark_blend()
- other magic symbols jace consortium: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/jace-consortium.png"))
- other magic symbols phyrexia: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/phyrexia.png"))
- other magic symbols seekers of carmot: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/seekersofcarmot.png"))
- other magic symbols the thran: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/thran.png"))
-
- other magic symbols innistrad provinces stensia: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/stensia.png"))
- other magic symbols innistrad provinces kessig: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/kessig.png"))
- other magic symbols innistrad provinces gavony: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/gavony.png"))
- other magic symbols innistrad provinces nephalia: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/nephalia.png"))
-
- other magic symbols theros poleis akros: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/akros.png")
- other magic symbols theros poleis meletis: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/meletis.png")
- other magic symbols theros poleis setessa: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/setessa.png")
-
- alara symbols Bant: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_bant.png")
- alara symbols Esper: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_esper.png")
- alara symbols Grixis: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_grixis.png")
- alara symbols Jund: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_jund.png")
- alara symbols Naya: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_naya.png")
- alara symbols colored Bant: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_bant_colored.png")
- alara symbols colored Esper: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_esper_colored.png")
- alara symbols colored Grixis: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_grixis_colored.png")
- alara symbols colored Jund: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_jund_colored.png")
- alara symbols colored Naya: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_naya_colored.png")
-
- custom watermark one: script: set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_1()))
- custom watermark two: script: set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_2()))
- custom watermark three: script: set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_3()))
- custom watermark four: script: set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_4()))
- custom watermark five: script: set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_5()))
- custom watermark six: script: set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_6()))
- custom watermark seven: script: set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_7()))
- custom watermark eight: script: set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_8()))
- custom watermark nine: script: set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_9()))
- custom watermark ten: script: set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_10()))
-
- set symbol:
- { set_combine(combine:"shadow",
- set_alpha(
- alpha: 0.5,
- #symbol_variation(symbol: set.symbol, variation: "common")
- drop_shadow(offset_x: -0.01, offset_y: 0.03, blur_radius: 0.02, alpha: 1, color: rgb(0,0,0),
- enlarge(border_size: 0.03,
- symbol_variation(symbol: set.symbol, variation: "watermark")
- )
- )
- )
- )
- }
diff --git a/data/magic-watermarks.mse-include/watermarks_back b/data/magic-watermarks.mse-include/watermarks_back
index 9ada1957b..170e6ce4d 100644
--- a/data/magic-watermarks.mse-include/watermarks_back
+++ b/data/magic-watermarks.mse-include/watermarks_back
@@ -1,165 +1,203 @@
-# Watermark images
+# Watermark images for the second face
choice images:
- mana symbol white: /magic-watermarks.mse-include/watermark_w.png
- mana symbol blue: /magic-watermarks.mse-include/watermark_u.png
- mana symbol black: /magic-watermarks.mse-include/watermark_b.png
- mana symbol red: /magic-watermarks.mse-include/watermark_r.png
- mana symbol green: /magic-watermarks.mse-include/watermark_g.png
- mana symbol colorless: /magic-watermarks.mse-include/watermark_c.png
- mana symbol snow: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_s.png")
-
- transparent mana symbol white: script: set_alpha(alpha: 0.4, input:"/magic-watermarks.mse-include/watermark_w.png")
- transparent mana symbol blue: script: set_alpha(alpha: 0.4, input:"/magic-watermarks.mse-include/watermark_u.png")
- transparent mana symbol black: script: set_alpha(alpha: 0.4, input:"/magic-watermarks.mse-include/watermark_b.png")
- transparent mana symbol red: script: set_alpha(alpha: 0.4, input:"/magic-watermarks.mse-include/watermark_r.png")
- transparent mana symbol green: script: set_alpha(alpha: 0.4, input:"/magic-watermarks.mse-include/watermark_g.png")
+ mana symbol white: script: "/magic-watermarks.mse-include/watermark_w.png"
+ mana symbol blue: script: "/magic-watermarks.mse-include/watermark_u.png"
+ mana symbol black: script: "/magic-watermarks.mse-include/watermark_b.png"
+ mana symbol red: script: "/magic-watermarks.mse-include/watermark_r.png"
+ mana symbol green: script: "/magic-watermarks.mse-include/watermark_g.png"
+ mana symbol colorless: script: "/magic-watermarks.mse-include/watermark_c.png"
+ mana symbol snow: script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_s.png")
- guild symbol The Azorius Senate (W/U): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_azorius2.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_azorius2.png"))
- guild symbol House Dimir (U/B): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_dimir2.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_dimir2.png"))
- guild symbol The Cult of Rakdos (B/R): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_rakados2.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_rakados2.png"))
- guild symbol The Gruul Clans (R/G): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_gruul2.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_gruul2.png"))
- guild symbol The Selesnya Conclave (G/W): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_selesnya2.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_selesnya2.png"))
- guild symbol The Orzhov Syndicate (W/B): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_orzhov2.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_orzhov2.png"))
- guild symbol The Izzet (U/R): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_izzet2.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_izzet2.png"))
- guild symbol The Golgari (B/G): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_golgari2.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_golgari2.png"))
- guild symbol The Boros Legion (R/W): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_boros2.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_boros2.png"))
- guild symbol The Simic Combine (G/U): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_simic2.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_simic2.png"))
+ mana symbol old white: script: "/magic-watermarks.mse-include/watermark_w_old.png"
+ mana symbol old blue: script: "/magic-watermarks.mse-include/watermark_u_old.png"
+ mana symbol old black: script: "/magic-watermarks.mse-include/watermark_b_old.png"
+ mana symbol old red: script: "/magic-watermarks.mse-include/watermark_r_old.png"
+ mana symbol old green: script: "/magic-watermarks.mse-include/watermark_g_old.png"
+ mana symbol old colorless: script: "/magic-watermarks.mse-include/watermark_c_old.png"
- guild symbol originals The Azorius Senate (W/U): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_azorius.png")
- guild symbol originals House Dimir (U/B): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_dimir.png")
- guild symbol originals The Cult of Rakdos (B/R): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_rakados.png")
- guild symbol originals The Gruul Clans (R/G): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_gruul.png")
- guild symbol originals The Selesnya Conclave (G/W): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_selesnya.png")
- guild symbol originals The Orzhov Syndicate (W/B): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_orzhov.png")
- guild symbol originals The Izzet (U/R): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_izzet.png")
- guild symbol originals The Golgari (B/G): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_golgari.png")
- guild symbol originals The Boros Legion (R/W): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_boros.png")
- guild symbol originals The Simic Combine (G/U): script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_simic.png")
+ mana symbol hi res white: script: "/magic-watermarks.mse-include/watermark_w_big.png"
+ mana symbol hi res blue: script: "/magic-watermarks.mse-include/watermark_u_big.png"
+ mana symbol hi res black: script: "/magic-watermarks.mse-include/watermark_b_big.png"
+ mana symbol hi res red: script: "/magic-watermarks.mse-include/watermark_r_big.png"
+ mana symbol hi res green: script: "/magic-watermarks.mse-include/watermark_g_big.png"
+ mana symbol hi res colorless: script: "/magic-watermarks.mse-include/watermark_c_big.png"
- guild symbol ancients The Azorius Senate (W/U): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-azorius.png", face:card.card_color_2)
- guild symbol ancients House Dimir (U/B): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-dimir.png", face:card.card_color_2)
- guild symbol ancients The Cult of Rakdos (B/R): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-rakdos.png", face:card.card_color_2)
- guild symbol ancients The Gruul Clans (R/G): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-gruul.png", face:card.card_color_2)
- guild symbol ancients The Selesnya Conclave (G/W): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-selesnya.png", face:card.card_color_2)
- guild symbol ancients The Orzhov Syndicate (W/B): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-orzhov.png", face:card.card_color_2)
- guild symbol ancients The Izzet (U/R): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-izzet.png", face:card.card_color_2)
- guild symbol ancients The Golgari (B/G): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-golgari.png", face:card.card_color_2)
- guild symbol ancients The Boros Legion (R/W): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-boros.png", face:card.card_color_2)
- guild symbol ancients The Simic Combine (G/U): script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark-frazier-simic.png", face:card.card_color_2)
+ transparent mana symbol white: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_w.png")
+ transparent mana symbol blue: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_u.png")
+ transparent mana symbol black: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_b.png")
+ transparent mana symbol red: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_r.png")
+ transparent mana symbol green: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_g.png")
- faction symbol mirrodin: script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_mirrodin.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_mirrodin.png"))
- faction symbol phyrexia: script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_phyrexia.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_phyrexia.png"))
+ transparent mana symbol old white: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_w_old.png")
+ transparent mana symbol old blue: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_u_old.png")
+ transparent mana symbol old black: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_b_old.png")
+ transparent mana symbol old red: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_r_old.png")
+ transparent mana symbol old green: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_g_old.png")
+ transparent mana symbol old colorless: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_c_old.png")
- clan symbol The Abzan Houses (WBG): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_abzan.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_abzan.png"))
- clan symbol The Jeskai Way (URW): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_jeskai.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_jeskai.png"))
- clan symbol The Sultai Brood (BGU): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_sultai.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_sultai.png"))
- clan symbol The Mardu Horde (RWB): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_mardu.png", h:300, face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_mardu.png"))
- clan symbol The Temur Frontier (GUR): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_temur.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_temur.png"))
+ transparent mana symbol hi res white: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_w_big.png")
+ transparent mana symbol hi res blue: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_u_big.png")
+ transparent mana symbol hi res black: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_b_big.png")
+ transparent mana symbol hi res red: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_r_big.png")
+ transparent mana symbol hi res green: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_g_big.png")
+ transparent mana symbol hi res colorless: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_c_big.png")
- brood symbol Dromoka's Brood (GW): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_dromoka.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_dromoka.png"))
- brood symbol Ojutai's Brood (WU): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_ojutai.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_ojutai.png"))
- brood symbol Silumgar's Brood (UB): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_silumgar.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_silumgar.png"))
- brood symbol Kolaghan's Brood (BR): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_kolaghan.png", h:300, face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_kolaghan.png"))
- brood symbol Atarka's Brood (RG): script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_atarka.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/watermark_atarka.png"))
+ guild symbol The Azorius Senate (W/U): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_azorius2.png")
+ guild symbol House Dimir (U/B): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_dimir2.png")
+ guild symbol The Cult of Rakdos (B/R): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_rakados2.png")
+ guild symbol The Gruul Clans (R/G): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_gruul2.png")
+ guild symbol The Selesnya Conclave (G/W): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_selesnya2.png")
+ guild symbol The Orzhov Syndicate (W/B): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_orzhov2.png")
+ guild symbol The Izzet (U/R): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_izzet2.png")
+ guild symbol The Golgari (B/G): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_golgari2.png")
+ guild symbol The Boros Legion (R/W): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_boros2.png")
+ guild symbol The Simic Combine (G/U): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_simic2.png")
- unstable factions Order of the Widget: script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/unstable_widget.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/unstable_widget.png"))
- unstable factions Agents of S.N.E.A.K.: script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/unstable_SNEAK.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/unstable_SNEAK.png"))
- unstable factions League of Dastardly Doom: script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/unstable_doom.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/unstable_doom.png"))
- unstable factions Goblin Explosioneers: script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/unstable_explosioneers.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/unstable_explosioneers.png"))
- unstable factions Crossbreed Labs: script: if set.blend_with_colors then spotlight_watermark_blend("/magic-watermarks.mse-include/unstable_crossbreed.png", face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 0.35, input:"/magic-watermarks.mse-include/unstable_crossbreed.png"))
-
- colored xander hybrid mana B/R: /magic-watermarks.mse-include/watermark_brmana_colored.png
- colored xander hybrid mana U/B: /magic-watermarks.mse-include/watermark_ubmana_colored.png
- colored xander hybrid mana B/G: /magic-watermarks.mse-include/watermark_bgmana_colored.png
- colored xander hybrid mana R/G: /magic-watermarks.mse-include/watermark_rgmana_colored.png
- colored xander hybrid mana G/U: /magic-watermarks.mse-include/watermark_gumana_colored.png
- colored xander hybrid mana U/R: /magic-watermarks.mse-include/watermark_urmana_colored.png
- colored xander hybrid mana W/B: /magic-watermarks.mse-include/watermark_wbmana_colored.png
- colored xander hybrid mana G/W: /magic-watermarks.mse-include/watermark_gwmana_colored.png
- colored xander hybrid mana R/W: /magic-watermarks.mse-include/watermark_rwmana_colored.png
- colored xander hybrid mana W/U: /magic-watermarks.mse-include/watermark_wumana_colored.png
-
- xander hybrid mana B/R: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_brmana.png")
- xander hybrid mana U/B: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_ubmana.png")
- xander hybrid mana B/G: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_bgmana.png")
- xander hybrid mana R/G: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_rgmana.png")
- xander hybrid mana G/U: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_gumana.png")
- xander hybrid mana U/R: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_urmana.png")
- xander hybrid mana W/B: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_wbmana.png")
- xander hybrid mana G/W: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_gwmana.png")
- xander hybrid mana R/W: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_rwmana.png")
- xander hybrid mana W/U: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_wumana.png")
+ guild symbol originals The Azorius Senate (W/U): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_azorius.png")
+ guild symbol originals House Dimir (U/B): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_dimir.png")
+ guild symbol originals The Cult of Rakdos (B/R): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_rakados.png")
+ guild symbol originals The Gruul Clans (R/G): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_gruul.png")
+ guild symbol originals The Selesnya Conclave (G/W): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_selesnya.png")
+ guild symbol originals The Orzhov Syndicate (W/B): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_orzhov.png")
+ guild symbol originals The Izzet (U/R): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_izzet.png")
+ guild symbol originals The Golgari (B/G): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_golgari.png")
+ guild symbol originals The Boros Legion (R/W): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_boros.png")
+ guild symbol originals The Simic Combine (G/U): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_simic.png")
- future sight type symbols artifact: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_artifact.png")
- future sight type symbols creature: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_creature.png")
- future sight type symbols enchantment: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_enchantment.png")
- future sight type symbols instant: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_instant.png")
- future sight type symbols land: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_land.png")
- future sight type symbols multiple: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_multiple.png")
- future sight type symbols planeswalker: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_planeswalker.png")
- future sight type symbols sorcery: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/futsymbol_sorcery.png")
+ guild symbol ancients The Azorius Senate (W/U): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark-frazier-azorius.png")
+ guild symbol ancients House Dimir (U/B): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark-frazier-dimir.png")
+ guild symbol ancients The Cult of Rakdos (B/R): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark-frazier-rakdos.png")
+ guild symbol ancients The Gruul Clans (R/G): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark-frazier-gruul.png")
+ guild symbol ancients The Selesnya Conclave (G/W): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark-frazier-selesnya.png")
+ guild symbol ancients The Orzhov Syndicate (W/B): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark-frazier-orzhov.png")
+ guild symbol ancients The Izzet (U/R): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark-frazier-izzet.png")
+ guild symbol ancients The Golgari (B/G): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark-frazier-golgari.png")
+ guild symbol ancients The Boros Legion (R/W): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark-frazier-boros.png")
+ guild symbol ancients The Simic Combine (G/U): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark-frazier-simic.png")
- other magic symbols aetherprint: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/aetherprint.png"))
- other magic symbols chaos symbol: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/chaos.png"))
- other magic symbols color pie: /magic-watermarks.mse-include/colorpie.png
- other magic symbols conspiracy stamp: script: set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/conspiracy_stamp.png")
- other magic symbols story spotlight: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/planeswalker.png"))
- other magic symbols color spotlight: script: spotlight_watermark_blend("/magic-watermarks.mse-include/planeswalker.png", face:card.card_color_2)
- other magic symbols jace consortium: script: spotlight_watermark_blend("/magic-watermarks.mse-include/jace-consortium.png", face:card.card_color_2)
- other magic symbols phyrexia: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/phyrexia.png"))
- other magic symbols seekers of carmot: script: spotlight_watermark_blend("/magic-watermarks.mse-include/seekersofcarmot.png,266,266", face:card.card_color_2)
- other magic symbols the thran: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/thran.png"))
- other magic symbols foretell: script: spotlight_watermark_blend("/magic-watermarks.mse-include/foretell.png", h:380, face:card.card_color_2)
-
- other magic symbols innistrad provinces stensia: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/stensia.png"))
- other magic symbols innistrad provinces kessig: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/kessig.png"))
- other magic symbols innistrad provinces gavony: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/gavony.png"))
- other magic symbols innistrad provinces nephalia: script: set_combine(combine:"shadow", input:set_alpha(alpha: 0.3, input:"/magic-watermarks.mse-include/nephalia.png"))
-
- other magic symbols theros poleis akros: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/akros.png")
- other magic symbols theros poleis meletis: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/meletis.png")
- other magic symbols theros poleis setessa: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/setessa.png")
-
- alara symbols Bant: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_bant.png")
- alara symbols Esper: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_esper.png")
- alara symbols Grixis: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_grixis.png")
- alara symbols Jund: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_jund.png")
- alara symbols Naya: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_naya.png")
- alara symbols colored Bant: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_bant_colored.png")
- alara symbols colored Esper: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_esper_colored.png")
- alara symbols colored Grixis: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_grixis_colored.png")
- alara symbols colored Jund: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_jund_colored.png")
- alara symbols colored Naya: script: set_combine(combine:"shadow", input:"/magic-watermarks.mse-include/watermark_naya_colored.png")
-
- college symbols Silverquill: script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_strix_silverquill.png", face:card.card_color_2)
- college symbols Prismari: script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_strix_prismari.png", face:card.card_color_2)
- college symbols Witherbloom: script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_strix_witherbloom.png", face:card.card_color_2)
- college symbols Lorehold: script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_strix_lorehold.png", face:card.card_color_2)
- college symbols Quandrix: script: spotlight_watermark_blend("/magic-watermarks.mse-include/watermark_strix_quandrix.png", face:card.card_color_2)
-
- custom watermark one: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_1(), face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_1()))
- custom watermark two: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_2(), face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_2()))
- custom watermark three: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_3(), face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_3()))
- custom watermark four: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_4(), face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_4()))
- custom watermark five: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_5(), face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_5()))
- custom watermark six: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_6(), face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_6()))
- custom watermark seven: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_7(), face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_7()))
- custom watermark eight: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_8(), face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_8()))
- custom watermark nine: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_9(), face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_9()))
- custom watermark ten: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_10(), face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_10()))
- custom watermark card: script: if set.blend_with_colors then spotlight_watermark_blend(custom_watermark_b(), face:card.card_color_2) else set_combine(combine:"shadow", input:set_alpha(alpha: 1.0, input:custom_watermark_b()))
-
- set symbol:
- { set_combine(combine:"shadow",
- set_alpha(
- alpha: 0.5,
- #symbol_variation(symbol: set.symbol, variation: "common")
- drop_shadow(offset_x: -0.01, offset_y: 0.03, blur_radius: 0.02, alpha: 1, color: rgb(0,0,0),
- enlarge(border_size: 0.03,
- symbol_variation(symbol: set.symbol, variation: "watermark")
- )
- )
- )
- )
- }
+ faction symbol mirrodin: script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_mirrodin.png")
+ faction symbol phyrexia: script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_phyrexia.png")
+
+ clan symbol The Abzan Houses (WBG): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_abzan.png")
+ clan symbol The Jeskai Way (URW): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_jeskai.png")
+ clan symbol The Sultai Brood (BGU): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_sultai.png")
+ clan symbol The Mardu Horde (RWB): script: watermark_blend(face:2, h: 400, "/magic-watermarks.mse-include/watermark_mardu.png")
+ clan symbol The Temur Frontier (GUR): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_temur.png")
+
+ brood symbol Dromoka's Brood (GW): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_dromoka.png")
+ brood symbol Ojutai's Brood (WU): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_ojutai.png")
+ brood symbol Silumgar's Brood (UB): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_silumgar.png")
+ brood symbol Kolaghan's Brood (BR): script: watermark_blend(face:2, h: 400, "/magic-watermarks.mse-include/watermark_kolaghan.png")
+ brood symbol Atarka's Brood (RG): script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_atarka.png")
+
+ family symbol Brokers (GWU): script: watermark_blend(face:2, "/magic-watermarks.mse-include/capenna_brokers.png")
+ family symbol Cabaretti (RGW): script: watermark_blend(face:2, "/magic-watermarks.mse-include/capenna_cabaretti.png")
+ family symbol Maestros (UBR): script: watermark_blend(face:2, "/magic-watermarks.mse-include/capenna_maestros.png")
+ family symbol Obscura (WUB): script: watermark_blend(face:2, "/magic-watermarks.mse-include/capenna_obscura.png")
+ family symbol Riveteers (BRG): script: watermark_blend(face:2, "/magic-watermarks.mse-include/capenna_riveteers.png")
+
+ unstable factions Order of the Widget: script: watermark_blend(face:2, "/magic-watermarks.mse-include/unstable_widget.png")
+ unstable factions Agents of S.N.E.A.K.: script: watermark_blend(face:2, "/magic-watermarks.mse-include/unstable_SNEAK.png")
+ unstable factions League of Dastardly Doom: script: watermark_blend(face:2, "/magic-watermarks.mse-include/unstable_doom.png")
+ unstable factions Goblin Explosioneers: script: watermark_blend(face:2, "/magic-watermarks.mse-include/unstable_explosioneers.png")
+ unstable factions Crossbreed Labs: script: watermark_blend(face:2, "/magic-watermarks.mse-include/unstable_crossbreed.png")
+
+ colored xander hybrid mana W/U: script: "/magic-watermarks.mse-include/watermark_wumana_colored.png"
+ colored xander hybrid mana U/B: script: "/magic-watermarks.mse-include/watermark_ubmana_colored.png"
+ colored xander hybrid mana B/R: script: "/magic-watermarks.mse-include/watermark_brmana_colored.png"
+ colored xander hybrid mana R/G: script: "/magic-watermarks.mse-include/watermark_rgmana_colored.png"
+ colored xander hybrid mana G/W: script: "/magic-watermarks.mse-include/watermark_gwmana_colored.png"
+ colored xander hybrid mana W/B: script: "/magic-watermarks.mse-include/watermark_wbmana_colored.png"
+ colored xander hybrid mana U/R: script: "/magic-watermarks.mse-include/watermark_urmana_colored.png"
+ colored xander hybrid mana B/G: script: "/magic-watermarks.mse-include/watermark_bgmana_colored.png"
+ colored xander hybrid mana R/W: script: "/magic-watermarks.mse-include/watermark_rwmana_colored.png"
+ colored xander hybrid mana G/U: script: "/magic-watermarks.mse-include/watermark_gumana_colored.png"
+
+ xander hybrid mana W/U: script: watermark_blend(face:2, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_wumana.png")
+ xander hybrid mana U/B: script: watermark_blend(face:2, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_ubmana.png")
+ xander hybrid mana B/R: script: watermark_blend(face:2, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_brmana.png")
+ xander hybrid mana R/G: script: watermark_blend(face:2, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_rgmana.png")
+ xander hybrid mana G/W: script: watermark_blend(face:2, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_gwmana.png")
+ xander hybrid mana W/B: script: watermark_blend(face:2, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_wbmana.png")
+ xander hybrid mana U/R: script: watermark_blend(face:2, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_urmana.png")
+ xander hybrid mana B/G: script: watermark_blend(face:2, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_bgmana.png")
+ xander hybrid mana R/W: script: watermark_blend(face:2, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_rwmana.png")
+ xander hybrid mana G/U: script: watermark_blend(face:2, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_gumana.png")
+
+ future sight type symbols artifact: script: watermark_blend(face:2, "/magic-watermarks.mse-include/futsymbol_artifact.png")
+ future sight type symbols creature: script: watermark_blend(face:2, "/magic-watermarks.mse-include/futsymbol_creature.png")
+ future sight type symbols enchantment: script: watermark_blend(face:2, "/magic-watermarks.mse-include/futsymbol_enchantment.png")
+ future sight type symbols instant: script: watermark_blend(face:2, "/magic-watermarks.mse-include/futsymbol_instant.png")
+ future sight type symbols land: script: watermark_blend(face:2, "/magic-watermarks.mse-include/futsymbol_land.png")
+ future sight type symbols multiple: script: watermark_blend(face:2, "/magic-watermarks.mse-include/futsymbol_multiple.png")
+ future sight type symbols planeswalker: script: watermark_blend(face:2, "/magic-watermarks.mse-include/futsymbol_planeswalker.png")
+ future sight type symbols sorcery: script: watermark_blend(face:2, "/magic-watermarks.mse-include/futsymbol_sorcery.png")
+ future sight type symbols structure: script: watermark_blend(face:2, "/magic-watermarks.mse-include/futsymbol_structure.png")
+
+ other magic symbols aetherprint: script: watermark_blend(face:2, h:500, l:317, "/magic-watermarks.mse-include/aetherprint.png")
+ other magic symbols desparked: script: watermark_blend(face:2, h:500, l:500, "/magic-watermarks.mse-include/desparked.png")
+ other magic symbols chaos symbol: script: watermark_blend(face:2, h:500, l:500, "/magic-watermarks.mse-include/chaos.png")
+ other magic symbols story spotlight: script: watermark_blend(face:2, h:500, l:500, "/magic-watermarks.mse-include/planeswalker.png")
+ other magic symbols color spotlight: script: watermark_blend(face:2, h:500, l:500, "/magic-watermarks.mse-include/planeswalker.png")
+ other magic symbols shooting star: script: watermark_blend(face:2, h:400, l:500, "/magic-watermarks.mse-include/shooting_star.png")
+ other magic symbols the thran: script: watermark_blend(face:2, h:240, l:163, "/magic-watermarks.mse-include/thran.png")
+ other magic symbols phyrexia: script: watermark_blend(face:2, h:217, l:115, "/magic-watermarks.mse-include/phyrexia.png")
+ other magic symbols color pie: script: watermark_blend(face:2, h:500, l:500, "/magic-watermarks.mse-include/colorpie.png")
+ other magic symbols judge academy: script: watermark_blend(face:2, h:500, l:500, "/magic-watermarks.mse-include/judge_academy.png")
+ other magic symbols foretell: script: watermark_blend(face:2, h:460, l:500, "/magic-watermarks.mse-include/foretell.png")
+ other magic symbols jace consortium: script: watermark_blend(face:2, h:500, l:500, "/magic-watermarks.mse-include/jace-consortium.png")
+ other magic symbols seekers of carmot: script: watermark_blend(face:2, h:500, l:500, "/magic-watermarks.mse-include/seekersofcarmot.png")
+ other magic symbols conspiracy stamp: script: set_alpha(alpha: 0.3, "/magic-watermarks.mse-include/conspiracy_stamp.png")
+
+ other magic symbols innistrad provinces stensia: script: watermark_blend(face:2, "/magic-watermarks.mse-include/stensia.png")
+ other magic symbols innistrad provinces kessig: script: watermark_blend(face:2, "/magic-watermarks.mse-include/kessig.png")
+ other magic symbols innistrad provinces gavony: script: watermark_blend(face:2, "/magic-watermarks.mse-include/gavony.png")
+ other magic symbols innistrad provinces nephalia: script: watermark_blend(face:2, "/magic-watermarks.mse-include/nephalia.png")
+
+ other magic symbols theros poleis akros: script: watermark_blend(face:2, "/magic-watermarks.mse-include/akros.png")
+ other magic symbols theros poleis meletis: script: watermark_blend(face:2, "/magic-watermarks.mse-include/meletis.png")
+ other magic symbols theros poleis setessa: script: watermark_blend(face:2, "/magic-watermarks.mse-include/setessa.png")
+
+ alara symbols Bant: script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_bant.png")
+ alara symbols Esper: script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_esper.png")
+ alara symbols Grixis: script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_grixis.png")
+ alara symbols Jund: script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_jund.png")
+ alara symbols Naya: script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_naya.png")
+
+ alara symbols colored Bant: script: set_combine(combine:"shadow", "/magic-watermarks.mse-include/watermark_bant_colored.png")
+ alara symbols colored Esper: script: set_combine(combine:"shadow", "/magic-watermarks.mse-include/watermark_esper_colored.png")
+ alara symbols colored Grixis: script: set_combine(combine:"shadow", "/magic-watermarks.mse-include/watermark_grixis_colored.png")
+ alara symbols colored Jund: script: set_combine(combine:"shadow", "/magic-watermarks.mse-include/watermark_jund_colored.png")
+ alara symbols colored Naya: script: set_combine(combine:"shadow", "/magic-watermarks.mse-include/watermark_naya_colored.png")
+
+ college symbols Silverquill: script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_strix_silverquill.png")
+ college symbols Prismari: script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_strix_prismari.png")
+ college symbols Witherbloom: script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_strix_witherbloom.png")
+ college symbols Lorehold: script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_strix_lorehold.png")
+ college symbols Quandrix: script: watermark_blend(face:2, "/magic-watermarks.mse-include/watermark_strix_quandrix.png")
+
+ universes beyond D&D: script: watermark_blend(face:2, "/magic-watermarks.mse-include/d&d.png")
+ universes beyond transformers: script: watermark_blend(face:2, "/magic-watermarks.mse-include/transformers.png")
+ universes beyond ponies applejack: script: watermark_blend(face:2, "/magic-watermarks.mse-include/ponies_apples.png")
+ universes beyond ponies pinkie pie: script: watermark_blend(face:2, "/magic-watermarks.mse-include/ponies_balloons.png")
+ universes beyond ponies fluttershy: script: watermark_blend(face:2, "/magic-watermarks.mse-include/ponies_butterflies.png")
+ universes beyond ponies rainbow dash: script: watermark_blend(face:2, "/magic-watermarks.mse-include/ponies_rainbow.png")
+ universes beyond ponies rarity: script: watermark_blend(face:2, "/magic-watermarks.mse-include/ponies_gems.png")
+ universes beyond ponies twilight sparkle: script: watermark_blend(face:2, "/magic-watermarks.mse-include/ponies_sparkles.png")
+ universes beyond ponies nightmare moon: script: watermark_blend(face:2, "/magic-watermarks.mse-include/ponies_waning_moon.png")
+ universes beyond ponies luna: script: watermark_blend(face:2, "/magic-watermarks.mse-include/ponies_waxing_moon.png")
+
+ custom watermark one: script: watermark_blend(face:2, custom_watermark_1())
+ custom watermark two: script: watermark_blend(face:2, custom_watermark_2())
+ custom watermark three: script: watermark_blend(face:2, custom_watermark_3())
+ custom watermark four: script: watermark_blend(face:2, custom_watermark_4())
+ custom watermark five: script: watermark_blend(face:2, custom_watermark_5())
+ custom watermark six: script: watermark_blend(face:2, custom_watermark_6())
+ custom watermark seven: script: watermark_blend(face:2, custom_watermark_7())
+ custom watermark eight: script: watermark_blend(face:2, custom_watermark_8())
+ custom watermark nine: script: watermark_blend(face:2, custom_watermark_9())
+ custom watermark ten: script: watermark_blend(face:2, custom_watermark_10())
+ custom watermark card: script: watermark_blend(face:2, custom_watermark_a())
+
+ set symbol: script: shadow_watermark_blend(symbol_variation(symbol: set.symbol, variation: "watermark"))
diff --git a/data/magic-watermarks.mse-include/watermarks_third b/data/magic-watermarks.mse-include/watermarks_third
new file mode 100644
index 000000000..4c7ef026e
--- /dev/null
+++ b/data/magic-watermarks.mse-include/watermarks_third
@@ -0,0 +1,203 @@
+# Watermark images for the third face
+
+choice images:
+ mana symbol white: script: "/magic-watermarks.mse-include/watermark_w.png"
+ mana symbol blue: script: "/magic-watermarks.mse-include/watermark_u.png"
+ mana symbol black: script: "/magic-watermarks.mse-include/watermark_b.png"
+ mana symbol red: script: "/magic-watermarks.mse-include/watermark_r.png"
+ mana symbol green: script: "/magic-watermarks.mse-include/watermark_g.png"
+ mana symbol colorless: script: "/magic-watermarks.mse-include/watermark_c.png"
+ mana symbol snow: script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_s.png")
+
+ mana symbol old white: script: "/magic-watermarks.mse-include/watermark_w_old.png"
+ mana symbol old blue: script: "/magic-watermarks.mse-include/watermark_u_old.png"
+ mana symbol old black: script: "/magic-watermarks.mse-include/watermark_b_old.png"
+ mana symbol old red: script: "/magic-watermarks.mse-include/watermark_r_old.png"
+ mana symbol old green: script: "/magic-watermarks.mse-include/watermark_g_old.png"
+ mana symbol old colorless: script: "/magic-watermarks.mse-include/watermark_c_old.png"
+
+ mana symbol hi res white: script: "/magic-watermarks.mse-include/watermark_w_big.png"
+ mana symbol hi res blue: script: "/magic-watermarks.mse-include/watermark_u_big.png"
+ mana symbol hi res black: script: "/magic-watermarks.mse-include/watermark_b_big.png"
+ mana symbol hi res red: script: "/magic-watermarks.mse-include/watermark_r_big.png"
+ mana symbol hi res green: script: "/magic-watermarks.mse-include/watermark_g_big.png"
+ mana symbol hi res colorless: script: "/magic-watermarks.mse-include/watermark_c_big.png"
+
+ transparent mana symbol white: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_w.png")
+ transparent mana symbol blue: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_u.png")
+ transparent mana symbol black: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_b.png")
+ transparent mana symbol red: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_r.png")
+ transparent mana symbol green: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_g.png")
+
+ transparent mana symbol old white: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_w_old.png")
+ transparent mana symbol old blue: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_u_old.png")
+ transparent mana symbol old black: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_b_old.png")
+ transparent mana symbol old red: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_r_old.png")
+ transparent mana symbol old green: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_g_old.png")
+ transparent mana symbol old colorless: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_c_old.png")
+
+ transparent mana symbol hi res white: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_w_big.png")
+ transparent mana symbol hi res blue: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_u_big.png")
+ transparent mana symbol hi res black: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_b_big.png")
+ transparent mana symbol hi res red: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_r_big.png")
+ transparent mana symbol hi res green: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_g_big.png")
+ transparent mana symbol hi res colorless: script: set_alpha(alpha: 0.4, "/magic-watermarks.mse-include/watermark_c_big.png")
+
+ guild symbol The Azorius Senate (W/U): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_azorius2.png")
+ guild symbol House Dimir (U/B): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_dimir2.png")
+ guild symbol The Cult of Rakdos (B/R): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_rakados2.png")
+ guild symbol The Gruul Clans (R/G): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_gruul2.png")
+ guild symbol The Selesnya Conclave (G/W): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_selesnya2.png")
+ guild symbol The Orzhov Syndicate (W/B): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_orzhov2.png")
+ guild symbol The Izzet (U/R): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_izzet2.png")
+ guild symbol The Golgari (B/G): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_golgari2.png")
+ guild symbol The Boros Legion (R/W): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_boros2.png")
+ guild symbol The Simic Combine (G/U): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_simic2.png")
+
+ guild symbol originals The Azorius Senate (W/U): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_azorius.png")
+ guild symbol originals House Dimir (U/B): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_dimir.png")
+ guild symbol originals The Cult of Rakdos (B/R): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_rakados.png")
+ guild symbol originals The Gruul Clans (R/G): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_gruul.png")
+ guild symbol originals The Selesnya Conclave (G/W): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_selesnya.png")
+ guild symbol originals The Orzhov Syndicate (W/B): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_orzhov.png")
+ guild symbol originals The Izzet (U/R): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_izzet.png")
+ guild symbol originals The Golgari (B/G): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_golgari.png")
+ guild symbol originals The Boros Legion (R/W): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_boros.png")
+ guild symbol originals The Simic Combine (G/U): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_simic.png")
+
+ guild symbol ancients The Azorius Senate (W/U): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark-frazier-azorius.png")
+ guild symbol ancients House Dimir (U/B): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark-frazier-dimir.png")
+ guild symbol ancients The Cult of Rakdos (B/R): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark-frazier-rakdos.png")
+ guild symbol ancients The Gruul Clans (R/G): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark-frazier-gruul.png")
+ guild symbol ancients The Selesnya Conclave (G/W): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark-frazier-selesnya.png")
+ guild symbol ancients The Orzhov Syndicate (W/B): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark-frazier-orzhov.png")
+ guild symbol ancients The Izzet (U/R): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark-frazier-izzet.png")
+ guild symbol ancients The Golgari (B/G): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark-frazier-golgari.png")
+ guild symbol ancients The Boros Legion (R/W): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark-frazier-boros.png")
+ guild symbol ancients The Simic Combine (G/U): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark-frazier-simic.png")
+
+ faction symbol mirrodin: script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_mirrodin.png")
+ faction symbol phyrexia: script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_phyrexia.png")
+
+ clan symbol The Abzan Houses (WBG): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_abzan.png")
+ clan symbol The Jeskai Way (URW): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_jeskai.png")
+ clan symbol The Sultai Brood (BGU): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_sultai.png")
+ clan symbol The Mardu Horde (RWB): script: watermark_blend(face:3, h: 400, "/magic-watermarks.mse-include/watermark_mardu.png")
+ clan symbol The Temur Frontier (GUR): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_temur.png")
+
+ brood symbol Dromoka's Brood (GW): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_dromoka.png")
+ brood symbol Ojutai's Brood (WU): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_ojutai.png")
+ brood symbol Silumgar's Brood (UB): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_silumgar.png")
+ brood symbol Kolaghan's Brood (BR): script: watermark_blend(face:3, h: 400, "/magic-watermarks.mse-include/watermark_kolaghan.png")
+ brood symbol Atarka's Brood (RG): script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_atarka.png")
+
+ family symbol Brokers (GWU): script: watermark_blend(face:3, "/magic-watermarks.mse-include/capenna_brokers.png")
+ family symbol Cabaretti (RGW): script: watermark_blend(face:3, "/magic-watermarks.mse-include/capenna_cabaretti.png")
+ family symbol Maestros (UBR): script: watermark_blend(face:3, "/magic-watermarks.mse-include/capenna_maestros.png")
+ family symbol Obscura (WUB): script: watermark_blend(face:3, "/magic-watermarks.mse-include/capenna_obscura.png")
+ family symbol Riveteers (BRG): script: watermark_blend(face:3, "/magic-watermarks.mse-include/capenna_riveteers.png")
+
+ unstable factions Order of the Widget: script: watermark_blend(face:3, "/magic-watermarks.mse-include/unstable_widget.png")
+ unstable factions Agents of S.N.E.A.K.: script: watermark_blend(face:3, "/magic-watermarks.mse-include/unstable_SNEAK.png")
+ unstable factions League of Dastardly Doom: script: watermark_blend(face:3, "/magic-watermarks.mse-include/unstable_doom.png")
+ unstable factions Goblin Explosioneers: script: watermark_blend(face:3, "/magic-watermarks.mse-include/unstable_explosioneers.png")
+ unstable factions Crossbreed Labs: script: watermark_blend(face:3, "/magic-watermarks.mse-include/unstable_crossbreed.png")
+
+ colored xander hybrid mana W/U: script: "/magic-watermarks.mse-include/watermark_wumana_colored.png"
+ colored xander hybrid mana U/B: script: "/magic-watermarks.mse-include/watermark_ubmana_colored.png"
+ colored xander hybrid mana B/R: script: "/magic-watermarks.mse-include/watermark_brmana_colored.png"
+ colored xander hybrid mana R/G: script: "/magic-watermarks.mse-include/watermark_rgmana_colored.png"
+ colored xander hybrid mana G/W: script: "/magic-watermarks.mse-include/watermark_gwmana_colored.png"
+ colored xander hybrid mana W/B: script: "/magic-watermarks.mse-include/watermark_wbmana_colored.png"
+ colored xander hybrid mana U/R: script: "/magic-watermarks.mse-include/watermark_urmana_colored.png"
+ colored xander hybrid mana B/G: script: "/magic-watermarks.mse-include/watermark_bgmana_colored.png"
+ colored xander hybrid mana R/W: script: "/magic-watermarks.mse-include/watermark_rwmana_colored.png"
+ colored xander hybrid mana G/U: script: "/magic-watermarks.mse-include/watermark_gumana_colored.png"
+
+ xander hybrid mana W/U: script: watermark_blend(face:3, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_wumana.png")
+ xander hybrid mana U/B: script: watermark_blend(face:3, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_ubmana.png")
+ xander hybrid mana B/R: script: watermark_blend(face:3, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_brmana.png")
+ xander hybrid mana R/G: script: watermark_blend(face:3, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_rgmana.png")
+ xander hybrid mana G/W: script: watermark_blend(face:3, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_gwmana.png")
+ xander hybrid mana W/B: script: watermark_blend(face:3, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_wbmana.png")
+ xander hybrid mana U/R: script: watermark_blend(face:3, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_urmana.png")
+ xander hybrid mana B/G: script: watermark_blend(face:3, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_bgmana.png")
+ xander hybrid mana R/W: script: watermark_blend(face:3, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_rwmana.png")
+ xander hybrid mana G/U: script: watermark_blend(face:3, alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, "/magic-watermarks.mse-include/watermark_gumana.png")
+
+ future sight type symbols artifact: script: watermark_blend(face:3, "/magic-watermarks.mse-include/futsymbol_artifact.png")
+ future sight type symbols creature: script: watermark_blend(face:3, "/magic-watermarks.mse-include/futsymbol_creature.png")
+ future sight type symbols enchantment: script: watermark_blend(face:3, "/magic-watermarks.mse-include/futsymbol_enchantment.png")
+ future sight type symbols instant: script: watermark_blend(face:3, "/magic-watermarks.mse-include/futsymbol_instant.png")
+ future sight type symbols land: script: watermark_blend(face:3, "/magic-watermarks.mse-include/futsymbol_land.png")
+ future sight type symbols multiple: script: watermark_blend(face:3, "/magic-watermarks.mse-include/futsymbol_multiple.png")
+ future sight type symbols planeswalker: script: watermark_blend(face:3, "/magic-watermarks.mse-include/futsymbol_planeswalker.png")
+ future sight type symbols sorcery: script: watermark_blend(face:3, "/magic-watermarks.mse-include/futsymbol_sorcery.png")
+ future sight type symbols structure: script: watermark_blend(face:3, "/magic-watermarks.mse-include/futsymbol_structure.png")
+
+ other magic symbols aetherprint: script: watermark_blend(face:3, h:500, l:317, "/magic-watermarks.mse-include/aetherprint.png")
+ other magic symbols desparked: script: watermark_blend(face:3, h:500, l:500, "/magic-watermarks.mse-include/desparked.png")
+ other magic symbols chaos symbol: script: watermark_blend(face:3, h:500, l:500, "/magic-watermarks.mse-include/chaos.png")
+ other magic symbols story spotlight: script: watermark_blend(face:3, h:500, l:500, "/magic-watermarks.mse-include/planeswalker.png")
+ other magic symbols color spotlight: script: watermark_blend(face:3, h:500, l:500, "/magic-watermarks.mse-include/planeswalker.png")
+ other magic symbols shooting star: script: watermark_blend(face:3, h:400, l:500, "/magic-watermarks.mse-include/shooting_star.png")
+ other magic symbols the thran: script: watermark_blend(face:3, h:240, l:163, "/magic-watermarks.mse-include/thran.png")
+ other magic symbols phyrexia: script: watermark_blend(face:3, h:217, l:115, "/magic-watermarks.mse-include/phyrexia.png")
+ other magic symbols color pie: script: watermark_blend(face:3, h:500, l:500, "/magic-watermarks.mse-include/colorpie.png")
+ other magic symbols judge academy: script: watermark_blend(face:3, h:500, l:500, "/magic-watermarks.mse-include/judge_academy.png")
+ other magic symbols foretell: script: watermark_blend(face:3, h:460, l:500, "/magic-watermarks.mse-include/foretell.png")
+ other magic symbols jace consortium: script: watermark_blend(face:3, h:500, l:500, "/magic-watermarks.mse-include/jace-consortium.png")
+ other magic symbols seekers of carmot: script: watermark_blend(face:3, h:500, l:500, "/magic-watermarks.mse-include/seekersofcarmot.png")
+ other magic symbols conspiracy stamp: script: set_alpha(alpha: 0.3, "/magic-watermarks.mse-include/conspiracy_stamp.png")
+
+ other magic symbols innistrad provinces stensia: script: watermark_blend(face:3, "/magic-watermarks.mse-include/stensia.png")
+ other magic symbols innistrad provinces kessig: script: watermark_blend(face:3, "/magic-watermarks.mse-include/kessig.png")
+ other magic symbols innistrad provinces gavony: script: watermark_blend(face:3, "/magic-watermarks.mse-include/gavony.png")
+ other magic symbols innistrad provinces nephalia: script: watermark_blend(face:3, "/magic-watermarks.mse-include/nephalia.png")
+
+ other magic symbols theros poleis akros: script: watermark_blend(face:3, "/magic-watermarks.mse-include/akros.png")
+ other magic symbols theros poleis meletis: script: watermark_blend(face:3, "/magic-watermarks.mse-include/meletis.png")
+ other magic symbols theros poleis setessa: script: watermark_blend(face:3, "/magic-watermarks.mse-include/setessa.png")
+
+ alara symbols Bant: script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_bant.png")
+ alara symbols Esper: script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_esper.png")
+ alara symbols Grixis: script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_grixis.png")
+ alara symbols Jund: script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_jund.png")
+ alara symbols Naya: script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_naya.png")
+
+ alara symbols colored Bant: script: set_combine(combine:"shadow", "/magic-watermarks.mse-include/watermark_bant_colored.png")
+ alara symbols colored Esper: script: set_combine(combine:"shadow", "/magic-watermarks.mse-include/watermark_esper_colored.png")
+ alara symbols colored Grixis: script: set_combine(combine:"shadow", "/magic-watermarks.mse-include/watermark_grixis_colored.png")
+ alara symbols colored Jund: script: set_combine(combine:"shadow", "/magic-watermarks.mse-include/watermark_jund_colored.png")
+ alara symbols colored Naya: script: set_combine(combine:"shadow", "/magic-watermarks.mse-include/watermark_naya_colored.png")
+
+ college symbols Silverquill: script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_strix_silverquill.png")
+ college symbols Prismari: script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_strix_prismari.png")
+ college symbols Witherbloom: script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_strix_witherbloom.png")
+ college symbols Lorehold: script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_strix_lorehold.png")
+ college symbols Quandrix: script: watermark_blend(face:3, "/magic-watermarks.mse-include/watermark_strix_quandrix.png")
+
+ universes beyond D&D: script: watermark_blend(face:3, "/magic-watermarks.mse-include/d&d.png")
+ universes beyond transformers: script: watermark_blend(face:3, "/magic-watermarks.mse-include/transformers.png")
+ universes beyond ponies applejack: script: watermark_blend(face:3, "/magic-watermarks.mse-include/ponies_apples.png")
+ universes beyond ponies pinkie pie: script: watermark_blend(face:3, "/magic-watermarks.mse-include/ponies_balloons.png")
+ universes beyond ponies fluttershy: script: watermark_blend(face:3, "/magic-watermarks.mse-include/ponies_butterflies.png")
+ universes beyond ponies rainbow dash: script: watermark_blend(face:3, "/magic-watermarks.mse-include/ponies_rainbow.png")
+ universes beyond ponies rarity: script: watermark_blend(face:3, "/magic-watermarks.mse-include/ponies_gems.png")
+ universes beyond ponies twilight sparkle: script: watermark_blend(face:3, "/magic-watermarks.mse-include/ponies_sparkles.png")
+ universes beyond ponies nightmare moon: script: watermark_blend(face:3, "/magic-watermarks.mse-include/ponies_waning_moon.png")
+ universes beyond ponies luna: script: watermark_blend(face:3, "/magic-watermarks.mse-include/ponies_waxing_moon.png")
+
+ custom watermark one: script: watermark_blend(face:3, custom_watermark_1())
+ custom watermark two: script: watermark_blend(face:3, custom_watermark_2())
+ custom watermark three: script: watermark_blend(face:3, custom_watermark_3())
+ custom watermark four: script: watermark_blend(face:3, custom_watermark_4())
+ custom watermark five: script: watermark_blend(face:3, custom_watermark_5())
+ custom watermark six: script: watermark_blend(face:3, custom_watermark_6())
+ custom watermark seven: script: watermark_blend(face:3, custom_watermark_7())
+ custom watermark eight: script: watermark_blend(face:3, custom_watermark_8())
+ custom watermark nine: script: watermark_blend(face:3, custom_watermark_9())
+ custom watermark ten: script: watermark_blend(face:3, custom_watermark_10())
+ custom watermark card: script: watermark_blend(face:3, custom_watermark_a())
+
+ set symbol: script: shadow_watermark_blend(symbol_variation(symbol: set.symbol, variation: "watermark"))
diff --git a/data/magic-watermarks.mse-include/wolverine-claws.png b/data/magic-watermarks.mse-include/wolverine-claws.png
deleted file mode 100644
index 5564242aa..000000000
Binary files a/data/magic-watermarks.mse-include/wolverine-claws.png and /dev/null differ
diff --git a/data/magic.mse-game/card-symbols/alchemy old.png b/data/magic.mse-game/card-symbols/alchemy old.png
new file mode 100644
index 000000000..68a7090ad
Binary files /dev/null and b/data/magic.mse-game/card-symbols/alchemy old.png differ
diff --git a/data/magic.mse-game/card-symbols/alchemy.png b/data/magic.mse-game/card-symbols/alchemy.png
new file mode 100644
index 000000000..c18dff8e4
Binary files /dev/null and b/data/magic.mse-game/card-symbols/alchemy.png differ
diff --git a/data/magic.mse-game/card-symbols/menu_choice_images b/data/magic.mse-game/card-symbols/menu_choice_images
new file mode 100644
index 000000000..00a8640cc
--- /dev/null
+++ b/data/magic.mse-game/card-symbols/menu_choice_images
@@ -0,0 +1,5 @@
+choice images:
+ none: { "" }
+ tombstone: /magic.mse-game/card-symbols/tombstone.png
+ alchemy: /magic.mse-game/card-symbols/alchemy.png
+ alchemy old: /magic.mse-game/card-symbols/alchemy old.png
diff --git a/data/magic.mse-game/card-symbols/tombstone.png b/data/magic.mse-game/card-symbols/tombstone.png
new file mode 100644
index 000000000..056202d97
Binary files /dev/null and b/data/magic.mse-game/card-symbols/tombstone.png differ
diff --git a/data/magic.mse-game/card_fields b/data/magic.mse-game/card_fields
index c4d34f003..dfac518bc 100644
--- a/data/magic.mse-game/card_fields
+++ b/data/magic.mse-game/card_fields
@@ -1,53 +1,83 @@
############################################################## Card fields
+############################################################## Frame building modules
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
-############################# 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: adventure
- choice: aftermath
- choice: double faced
- choice: planeswalker
- choice: shifted
- choice: rulestip
- choice: leveler
- choice: augment
- choice: counter
- choice: checklist
- choice: emblem
- choice: masterpiece
- choice: nightbreak
- choice: plane card
- choice: saga
- script:
- stylesheet # updates when the style changes
- card_shape() # determined by the style
+############################################################## Automated fields
+############################################################## Card shape
card field:
type: text
- name: full name
- save value: false
+ name: shape
+ description: The overall shape of the card.
show statistics: false
+ save value: false
editable: false
- card list visible: true
- card list name: Name
- card list column: 1
+ card list name: Shape
+ card list column: 1610
+ card list width: 110
+ script:
+ stylesheet ### updates when the style changes
+ card_shape() ### determined by the style, by override
+### this value is used to determine the card's place in the set numbering
+### as well as how to count it in the stats page
+### it should always evaluate to one or more of these:
+### normal
+### planeswalker
+### adventure
+### leveler
+### battle
+### saga
+### class
+### flip
+### split
+### fuse
+### aftermath
+### double faced
+### modal
+### transform
+### shifted
+### plane card
+### heroes
+### token
+### emblem
+### counter
+### designation
+### rulestip
+### checklist
+
+############################################################## Special text
+### This is given to exporters to handle complicated rules text
+### In particular, things like Sagas that using styling data to determine their rules text
+### That exporters can't access
+card field:
+ type: text
+ name: special text
+ description: The full text for exporting.
+ show statistics: false
+ card list name: Special Text
+ card list column: 0780
card list width: 150
- description: The name of the card
- script: if has_two_names() then card.name + " // " + card.name_2 else card.name
-############################# Background stuff
+ script: special_text()
+card field:
+ type: text
+ name: special text 2
+ description: The second full text for exporting.
+ show statistics: false
+ card list name: Special Text 2
+ card list column: 0781
+ card list width: 150
+ script: special_text2()
+
+############################################################## Card border
card field:
type: color
name: border color
- default: set.border_color
+ description: The border of the card. Can be any solid color.
+ show statistics: false
+ card list name: Border
+ card list column: 1630
+ card list width: 100
choice:
name: black
color: rgb(0,0,0)
@@ -60,117 +90,50 @@ card field:
choice:
name: gold
color: rgb(200,180,0)
+ default: border_color_default()
+
+card field:
+ type: choice
+ name: corners
+ description: The shape of the corners of the card.
show statistics: false
- description: The border of the card; can be any solid color.
+ card list name: Corners
+ card list column: 1640
+ card list width: 100
+ include file: /magic-modules.mse-include/corners/choices
+ default: corners_default(value, margin_code: "corners1")
+card field:
+ type: choice
+ name: corners 2
+ description: The shape of the corners of the second face of the card.
+ show statistics: false
+ card list name: Corners 2
+ card list column: 1641
+ card list width: 100
+ include file: /magic-modules.mse-include/corners/choices
+ default: corners_default(value, margin_code: "corners2")
+card field:
+ type: choice
+ name: corners 3
+ description: The shape of the corners of the third face of the card.
+ show statistics: false
+ card list name: Corners 3
+ card list column: 1642
+ card list width: 100
+ include file: /magic-modules.mse-include/corners/choices
+ default: corners_default(value, margin_code: "corners3")
+
+############################################################## Card 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
- script: name_checker(value)
- description: The name of the card
-card field:
- type: text
- name: alias
- card list visible: false
- show statistics: false
- description: The alias 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
- show statistics: false
- description: The casting cost of the card
-card field:
- type: choice
- name: card symbol
- position hint: 10
- icon: stats/symbol.png
- choice: none
- choice: tombstone
- choice: alchemy
- choice: alchemy old
- show statistics: false
- description: Symbol for this card
-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: fortress
- 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
- choice: moon
- choice: eldrazi
- description: On transforming cards, is this the day or the night side?
- show statistics: false
-card field:
- type: multiple choice
- name: indicator
+ card list name: Color
+ card list column: 0400
+ card list width: 150
+ sort script: color_sort_script(card.card_color)
empty choice: colorless
choice: white
choice: blue
@@ -205,370 +168,17 @@ card field:
choice:
name: reversed
enabled: { card_color_color_count(card.card_color) >= 2 and not chosen(choice:"overlay",card.card_color) }
+ 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", margin_code: "color1")
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/type.png
- position hint: 30
- script: super_type_filter(value)
- show statistics: false
-card field:
- type: text
- name: sub type
- icon: stats/type.png
- position hint: 31
- show statistics: false
- 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
- choice: basic land
- choice: common
- choice: uncommon
- choice: rare
- choice: mythic rare
- choice: special
- choice: masterpiece
- initial: common
- card list visible: true
- card list column: 7
- description: The rarity of the card, to edit the symbol switch to the 'set info' tab
- show statistics: false
- icon: stats/rarity.png
- position hint: 100
- 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: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"text")
- 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
- position hint: 105
- script:
- if mainframe_walker() then
- mainframe_walker_text_script()
- else if alt_text() then
- alt_text_script()
- else
- combined_editor(field1: card.rule_text, separator: "\n", field2: card.flavor_text)
- description: The rules and flavor text for the card; use up and down arrows to switch
-######################### Watermark
-card field:
- type: choice
- name: watermark
- icon: stats/watermark.png
- position hint: 200
- include file: /magic-watermarks.mse-include/watermark-names
- show statistics: false
- description: A watermark for below the textbox, this can be a big mana symbol used on basic lands, or a guild symbol
-###############################Leveler textboxes
-card field:
- type: text
- name: level 0
- description: The zeroth level of a creature
- show statistics: false
-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: level 1
- description: The first level of a card
- show statistics: false
-card field:
- type: text
- name: level 1 text
- default: if transfer_levels() then card.rule_text else ""
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"lv1")
- show statistics: false
- multi line: true
- position hint: 110
- description: The first level text for the card
-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: level 2
- description: The second level of a card
- show statistics: false
-card field:
- type: text
- name: level 2 text
- default: if transfer_levels() then card.rule_text_2 else ""
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"lv2")
- show statistics: false
- multi line: true
- position hint: 120
- description: The second level text for the card
-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: level 3
- description: The third level of a card
- show statistics: false
-card field:
- type: text
- name: level 3 text
- default: card.rule_text_3
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"lv3")
- show statistics: false
- multi line: true
- position hint: 130
- description: The third level text for the card
-card field:
- type: text
- name: loyalty cost 4
- show statistics: false
- description: The loyalty cost for the fourth ability of a planeswalker
-card field:
- type: text
- name: level 4
- description: The fourth level of a card
- show statistics: false
-card field:
- type: text
- name: level 4 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"lv4")
- show statistics: false
- multi line: true
- position hint: 4
- description: The fourth level text for the card
-############################# Notes
-card field:
- type: text
- name: sorted notes
- multi line: true
- save value: false
- show statistics: false
- script: card.notes
- description: A mirror of card notes to make it sortable.
-card field:
- type: text
- name: custom index
- save value: false
- show statistics: false
- position hint: 900
- script: custom_index()
-############################# Loyalty
-card field:
- type: text
- name: loyalty
- icon: stats/loyalty.png
- position hint: 59
- show statistics: false
- description: The initial loyalty of a planeswalker
-card field:
- type: text
- name: loyalty cost 5
- show statistics: false
- description: The loyalty cost for the fifth ability of a planeswalker
-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
-############################# 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_partition_sort() + card_number_mom()
- 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: (if is_masterpiece() then set.masterpiece_set_code else set.set_code) + (if set.set_language != "" then " • " + set.set_language else "")
- show statistics: false
-card field:
- type: text
- name: card code text
- editable: true
- save value: true
- show statistics: false
-card field:
- type: text
- name: card code text 2
- default: card.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
- show statistics: false
-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 and set.automatic_copyright then
- set.copyright + " " + card.card_number
- else 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
-card field:
- type: choice
- name: card stamp
- choice: standard
- choice: none
- choice: acorn
- choice: universes beyond
- choice: alchemy
- choice: alchemy old
- choice: custom
- default: set.default_stamp
- show statistics: false
- description: The stamp style for this card.
-############################################################## 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/color.png
+ description: The second frame of the card, used to indicate card color.
+ show statistics: false
+ card list name: Color 2
+ card list column: 0401
+ card list width: 150
+ sort script: color_sort_script(card.card_color_2)
empty choice: colorless
choice: white
choice: blue
@@ -603,14 +213,17 @@ card field:
choice:
name: reversed
enabled: { card_color_color_count(card.card_color_2) >= 2 and not chosen(choice:"overlay",card.card_color_2) }
+ 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: "colorless", margin_code: "color2")
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: "colorless")
- show statistics: false
- description: The frame of a card
card field:
type: multiple choice
name: card color 3
- icon: stats/color.png
+ description: The third frame of the card, used to indicate card color.
+ show statistics: false
+ card list name: Color 3
+ card list column: 0402
+ card list width: 150
+ sort script: color_sort_script(card.card_color_3)
empty choice: colorless
choice: white
choice: blue
@@ -645,186 +258,437 @@ card field:
choice:
name: reversed
enabled: { card_color_color_count(card.card_color_3) >= 2 and not chosen(choice:"overlay",card.card_color_3) }
+ default: card_color(casting_cost: card.casting_cost_3, type: card.super_type_3, rules_text: card.rule_text_3, watermark: card.watermark_3, card_name: card.name_3, default: "colorless", margin_code: "color3")
script: card_color_filter(value)
- default: card_color(casting_cost: card.casting_cost_3, type: card.super_type_3, rules_text: card.rule_text_3, watermark: card.watermark_3, card_name: card.name_3, default: "colorless")
+card field:
+ type: multiple choice
+ name: card color 4
+ description: The fourth frame of the card, used to indicate card color.
show statistics: false
- description: The frame of a card
+ card list name: Color 4
+ card list column: 0403
+ card list width: 150
+ sort script: color_sort_script(card.card_color_4)
+ 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_4) >= 2 }
+ line below: true
+ choice:
+ name: horizontal
+ enabled: { card_color_color_count(card.card_color_4) >= 2 }
+ type: radio
+ choice:
+ name: vertical
+ enabled: { card_color_color_count(card.card_color_4) >= 2 }
+ type: radio
+ choice:
+ name: radial
+ enabled: { card_color_color_count(card.card_color_4) >= 2 }
+ type: radio
+ choice:
+ name: overlay
+ enabled: { card_color_color_count(card.card_color_4) == 2 and chosen(choice:"hybrid",card.card_color_4) }
+ type: radio
+ choice:
+ name: reversed
+ enabled: { card_color_color_count(card.card_color_4) >= 2 and not chosen(choice:"overlay",card.card_color_4) }
+ default: card_color(casting_cost: card.casting_cost_4, type: card.super_type_4, rules_text: card.rule_text_4, watermark: card.watermark_4, card_name: card.name_4, default: "colorless", margin_code: "color4")
+ script: card_color_filter(value)
+
+card field:
+ type: text
+ name: color category
+ description: The simplified color of the card, to make it sortable.
+ show statistics: false
+ save value: false
+ editable: false
+ card list name: Color Category
+ card list column: 0410
+ card list width: 90
+ script: remove_zwsp(color_category_statistic())
+
+card field:
+ type: text
+ name: exact color
+ description: The exact color of the card, to make it sortable.
+ show statistics: false
+ save value: false
+ editable: false
+ card list name: Exact Color
+ card list column: 0420
+ card list width: 100
+ script: remove_zwsp(prefixed_color_statistic())
+
+card field:
+ type: text
+ name: color identity
+ description: The color identity of the card, to make it sortable.
+ show statistics: false
+ save value: false
+ editable: false
+ card list name: Color Identity
+ card list column: 0430
+ card list width: 100
+ script: remove_zwsp(prefixed_color_identity_statistic())
+
+card field:
+ type: text
+ name: color count
+ description: The color count of the card, to make it sortable.
+ show statistics: false
+ save value: false
+ editable: false
+ card list name: Color Count
+ card list column: 0440
+ card list width: 40
+ script: remove_zwsp(color_count_statistic())
+
+############################################################## Name line
+############################################################## Card name
+card field:
+ type: text
+ name: full name
+ description: The full name of the card.
+ show statistics: false
+ save value: false
+ editable: false
+ card list visible: true
+ card list name: Name
+ card list column: 0010
+ card list width: 280
+ script: card_full_name()
+
+card field:
+ type: text
+ name: name
+ description: The name of the card.
+ show statistics: false
+ identifying: true
+ card list name: Name 1
+ card list column: 0020
+ card list width: 150
+ default: name_default(value, margin_code: "name1")
+ script: name_checker(value)
card field:
type: text
name: name 2
+ description: The second name of the card.
+ show statistics: false
identifying: true
- show statistics: false
- description: The second name of a card
-card field:
- type: text
- name: alias 2
- show statistics: false
- description: The second alias of a card
+ card list name: Name 2
+ card list column: 0021
+ card list width: 150
+ default: name_default(value, margin_code: "name2")
card field:
type: text
name: name 3
- identifying: true
+ description: The third name of the card.
show statistics: false
- description: The third name of a card
+ identifying: true
+ card list name: Name 3
+ card list column: 0022
+ card list width: 150
+ default: name_default(value, margin_code: "name3")
+card field:
+ type: text
+ name: name 4
+ description: The fourth name of the card.
+ show statistics: false
+ identifying: true
+ card list name: Name 4
+ card list column: 0023
+ card list width: 150
+ default: name_default(value, margin_code: "name4")
+
+card field:
+ type: text
+ name: alias
+ description: The alias of the card.
+ show statistics: false
+ card list name: Alias
+ card list column: 0030
+ card list width: 150
+card field:
+ type: text
+ name: alias 2
+ description: The second alias of the card.
+ show statistics: false
+ card list name: Alias 2
+ card list column: 0031
+ card list width: 150
card field:
type: text
name: alias 3
- identifying: true
+ description: The third alias of the card.
show statistics: false
- description: The third alias of a card
+ card list name: Alias 3
+ card list column: 0032
+ card list width: 150
+card field:
+ type: text
+ name: alias 4
+ description: The fourth alias of the card.
+ show statistics: false
+ card list name: Alias 4
+ card list column: 0033
+ card list width: 150
+
+############################################################## Casting cost
+card field:
+ type: text
+ name: casting cost
+ description: The casting cost of the card.
+ show statistics: false
+ card list visible: true
+ card list name: CC
+ card list column: 0100
+ card list alignment: right
+ card list width: 60
+ script: mana_filter(value)
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
+ description: The second casting cost of the card.
show statistics: false
- description: The casting cost of a card
+ card list name: CC 2
+ card list column: 0101
+ card list alignment: right
+ card list width: 60
+ script: mana_filter(value)
card field:
type: text
name: casting cost 3
- icon: stats/casting_cost.png
- script: mana_filter(value)
+ description: The third casting cost of the card.
show statistics: false
- description: The casting cost of a card
+ card list name: CC 3
+ card list column: 0102
+ card list alignment: right
+ card list width: 60
+ script: mana_filter(value)
+card field:
+ type: text
+ name: casting cost 4
+ description: The fourth casting cost of the card.
+ show statistics: false
+ card list name: CC 4
+ card list column: 0103
+ card list alignment: right
+ card list width: 60
+ script: mana_filter(value)
+
+card field:
+ type: text
+ name: cmc
+ description: The converted mana cost of the card.
+ show statistics: false
+ editable: false
+ card list visible: true
+ card list name: CMC
+ card list column: 0120
+ card list alignment: right
+ card list width: 40
+ script: cmc(card.casting_cost)
+
+############################################################## Nameline symbols
+############################################################## Tombstone/Alchemy
+card field:
+ type: choice
+ name: card symbol
+ description: The symbol of the card.
+ show statistics: false
+ card list name: Symbol
+ card list column: 0920
+ card list width: 100
+ include file: /magic-modules.mse-include/card-symbols/choices
card field:
type: choice
name: card symbol 2
- icon: stats/symbol.png
- choice: none
- choice: tombstone
- choice: alchemy
- choice: alchemy old
+ description: The second symbol of the card.
show statistics: false
- description: The card symbol of the card
+ card list name: Symbol 2
+ card list column: 0921
+ card list width: 100
+ include file: /magic-modules.mse-include/card-symbols/choices
card field:
type: choice
- name: type symbol 2
- default: typesymbol_type(type: card.super_type_2)
- card list visible: false
+ name: card symbol 3
+ description: The third symbol of the card.
show statistics: false
- choice: artifact
- choice: creature
- choice: enchantment
- choice: fortress
- choice: instant
- choice: land
- choice: multitype
- choice: planeswalker
- choice: sorcery
- choice: none
- description: The card type symbol for this card
+ card list name: Symbol 2
+ card list column: 0922
+ card list width: 100
+ include file: /magic-modules.mse-include/card-symbols/choices
+
+############################################################## Transform/Lesson
card field:
type: choice
- name: type symbol 3
- default: typesymbol_type(type: card.super_type_3)
- card list visible: false
+ name: transformation
+ description: The transformation symbol of the card.
show statistics: false
- choice: artifact
- choice: creature
- choice: enchantment
- choice: fotress
- choice: instant
- choice: land
- choice: multitype
- choice: planeswalker
- choice: sorcery
- choice: none
- description: The card type symbol for this card
+ card list name: Transform Symbol
+ card list column: 0940
+ card list width: 100
+ include file: /magic-modules.mse-include/symbols/choices
+ default: transform_symbol_default(value, margin_code:"transform1")
card field:
type: choice
name: transformation 2
- choice: night
- choice: day
- choice: moon
- choice: eldrazi
- description: On transforming cards, is this the day or the night side?
+ description: The second transformation symbol of the card.
show statistics: false
+ card list name: Transform Symbol 2
+ card list column: 0941
+ card list width: 100
+ include file: /magic-modules.mse-include/symbols/choices
+ default: transform_symbol_default(value, margin_code:"transform2")
card field:
type: choice
name: transformation 3
- choice: night
- choice: day
- description: On transforming cards, is this the day or the night side?
+ description: The third transformation symbol of the card.
show statistics: false
+ card list name: Transform Symbol 3
+ card list column: 0942
+ card list width: 100
+ include file: /magic-modules.mse-include/symbols/choices
+ default: transform_symbol_default(value, margin_code:"transform3")
+
+############################################################## Future Sight type symbols
+card field:
+ type: choice
+ name: type symbol
+ description: The card type symbol of the card.
+ show statistics: false
+ card list name: Type Symbol
+ card list column: 0230
+ card list width: 90
+ include file: /magic-modules.mse-include/symbols/choices
+ default: typesymbol_for(card.super_type)
+card field:
+ type: choice
+ name: type symbol 2
+ description: The second card type symbol of the card.
+ show statistics: false
+ card list name: Type Symbol 2
+ card list column: 0231
+ card list width: 90
+ include file: /magic-modules.mse-include/symbols/choices
+ default: typesymbol_for(card.super_type_2)
+card field:
+ type: choice
+ name: type symbol 3
+ description: The third card type symbol of the card.
+ show statistics: false
+ card list name: Type Symbol 3
+ card list column: 0232
+ card list width: 90
+ include file: /magic-modules.mse-include/symbols/choices
+ default: typesymbol_for(card.super_type_3)
+card field:
+ type: choice
+ name: type symbol 4
+ description: The fourth card type symbol of the card.
+ show statistics: false
+ card list name: Type Symbol 4
+ card list column: 0233
+ card list width: 90
+ include file: /magic-modules.mse-include/symbols/choices
+ default: typesymbol_for(card.super_type_4)
+
+############################################################## Card art
+card field:
+ type: image
+ name: image
+ description: The illustration of the card.
+ show statistics: false
+ card list allow: false
card field:
type: image
name: image 2
+ description: The second illustration of the card.
show statistics: false
- description: The image of the card
+ card list allow: false
+
+### Some templates used image 2 for popout art before
+### Ideally we should use these instead
card field:
- type: text
- name: super type 2
- icon: stats/type.png
+ type: image
+ name: mainframe image
+ description: An extra illustration of the card. Mainly used for popout art.
show statistics: false
- script: super_type_filter(value)
+ card list allow: false
card field:
- type: text
- name: sub type 2
- icon: stats/type.png
+ type: image
+ name: mainframe image 2
+ description: A second extra illustration of the card. Mainly used for popout art.
show statistics: false
- script: sub_type_filter(value, type:card.super_type_2)
+ card list allow: false
+
+############################################################## Typeline
+############################################################## Color indicator
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: text
- name: super type 3
- icon: stats/type.png
- show statistics: false
- script: super_type_filter(value)
-card field:
- type: text
- name: sub type 3
- icon: stats/type.png
- show statistics: false
- script: sub_type_filter(value, type:card.super_type_3)
-card field:
- type: text
- name: type 3
- save value: false
- script:
- combined_editor(
- field1: card.super_type_3,
- separator: language().type_separator,
- field2: card.sub_type_3,
- 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
- choice: masterpiece
- initial: common
- # Both rarities will be the same
- script: card.rarity
- editable: false
+ type: multiple choice
+ name: indicator
+ description: The color indicator dot of the card. Used to indicate card color on cards without casting cost.
show statistics: false
+ card list name: Indicator
+ card list column: 0460
+ card list width: 90
+ sort script: color_sort_script(card.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) }
+ default: card.card_color
+ script: card_color_filter(value)
card field:
type: multiple choice
name: indicator 2
+ description: The second color indicator dot of the card. Used to indicate card color on cards without casting cost.
+ show statistics: false
+ card list name: Indicator 2
+ card list column: 0461
+ card list width: 90
+ sort script: color_sort_script(card.indicator_2)
empty choice: colorless
choice: white
choice: blue
@@ -859,64 +723,444 @@ card field:
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
+ script: card_color_filter(value)
+card field:
+ type: multiple choice
+ name: indicator 3
+ description: The third color indicator dot of the card. Used to indicate card color on cards without casting cost.
show statistics: false
- description: The color indicator of the card, used to indicate card color.
+ card list name: Indicator 3
+ card list column: 0462
+ card list width: 90
+ sort script: color_sort_script(card.indicator_3)
+ 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_3) >= 2 }
+ line below: true
+ choice:
+ name: horizontal
+ enabled: { card_color_color_count(card.card_color_3) >= 2 }
+ type: radio
+ choice:
+ name: vertical
+ enabled: { card_color_color_count(card.card_color_3) >= 2 }
+ type: radio
+ choice:
+ name: radial
+ enabled: { card_color_color_count(card.card_color_3) >= 2 }
+ type: radio
+ choice:
+ name: overlay
+ enabled: { card_color_color_count(card.card_color_3) == 2 and chosen(choice:"hybrid",card.card_color_3) }
+ type: radio
+ choice:
+ name: reversed
+ enabled: { card_color_color_count(card.card_color_3) >= 2 and not chosen(choice:"overlay",card.card_color_3) }
+ default: card.card_color_3
+ script: card_color_filter(value)
+
+############################################################## Super type (includes card type)
+### These fields usually aren't used, see Combined type
+card field:
+ type: text
+ name: super type
+ description: The combined types and supertypes of the card.
+ show statistics: false
+ card list name: Super Type
+ card list column: 0260
+ card list width: 150
+ default: super_type_filter_default(value, margin_code: "supertype1")
+ script: super_type_filter(value, margin_code: "supertype1")
+card field:
+ type: text
+ name: super type 2
+ description: The second combined types and supertypes of the card.
+ show statistics: false
+ card list name: Super Type 2
+ card list column: 0261
+ card list width: 150
+ default: super_type_filter_default(value, margin_code: "supertype2")
+ script: super_type_filter(value, margin_code: "supertype2")
+card field:
+ type: text
+ name: super type 3
+ description: The third combined types and supertypes of the card.
+ show statistics: false
+ card list name: Super Type 3
+ card list column: 0262
+ card list width: 150
+ default: super_type_filter_default(value, margin_code: "supertype3")
+ script: super_type_filter(value, margin_code: "supertype3")
+card field:
+ type: text
+ name: super type 4
+ description: The fourth combined types and supertypes of the card.
+ show statistics: false
+ card list name: Super Type 4
+ card list column: 0263
+ card list width: 150
+ default: super_type_filter_default(value, margin_code: "supertype4")
+ script: super_type_filter(value, margin_code: "supertype4")
+
+############################################################## Sub type
+### These fields usually aren't used, see Combined type
+card field:
+ type: text
+ name: sub type
+ description: The combined subtypes of the card.
+ show statistics: false
+ card list name: Sub Type
+ card list column: 0280
+ card list width: 150
+ default: sub_type_filter_default(value, margin_code: "subtype1")
+ script: sub_type_filter(value, type:card.super_type, margin_code: "subtype1")
+card field:
+ type: text
+ name: sub type 2
+ description: The second combined subtypes of the card.
+ show statistics: false
+ card list name: Sub Type 2
+ card list column: 0281
+ card list width: 150
+ default: sub_type_filter_default(value, margin_code: "subtype2")
+ script: sub_type_filter(value, type:card.super_type_2, margin_code: "subtype2")
+card field:
+ type: text
+ name: sub type 3
+ description: The third combined subtypes of the card.
+ show statistics: false
+ card list name: Sub Type 3
+ card list column: 0282
+ card list width: 150
+ default: sub_type_filter_default(value, margin_code: "subtype3")
+ script: sub_type_filter(value, type:card.super_type_3, margin_code: "subtype3")
+card field:
+ type: text
+ name: sub type 4
+ description: The fourth combined subtypes of the card.
+ show statistics: false
+ card list name: Sub Type 4
+ card list column: 0283
+ card list width: 150
+ default: sub_type_filter_default(value, margin_code: "subtype4")
+ script: sub_type_filter(value, type:card.super_type_4, margin_code: "subtype4")
+
+############################################################## Combined type
+### Use combined_editor to edit two fields at once
+card field:
+ type: text
+ name: type
+ description: The combined subtypes, types and supertypes of the card.
+ show statistics: false
+ save value: false
+ card list visible: true
+ card list name: Type
+ card list column: 0200
+ card list width: 220
+ sort script: type_sort_script(super_type: card.super_type, sub_type: card.sub_type)
+ script:
+ combined_editor(
+ field1: card.super_type,
+ separator: language().type_separator,
+ field2: card.sub_type,
+ soft_before_empty: true,
+ hide_when_empty: true
+ )
+card field:
+ type: text
+ name: type 2
+ description: The second combined subtypes, types and supertypes of the card.
+ show statistics: false
+ save value: false
+ card list name: Type 2
+ card list column: 0201
+ card list width: 220
+ sort script: type_sort_script(super_type: card.super_type_2, sub_type: card.sub_type_2)
+ 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
+ )
+card field:
+ type: text
+ name: type 3
+ description: The third combined subtypes, types and supertypes of the card.
+ show statistics: false
+ save value: false
+ card list name: Type 3
+ card list column: 0202
+ card list width: 220
+ sort script: type_sort_script(super_type: card.super_type_3, sub_type: card.sub_type_3)
+ script:
+ combined_editor(
+ field1: card.super_type_3,
+ separator: language().type_separator,
+ field2: card.sub_type_3,
+ )
+card field:
+ type: text
+ name: type 4
+ description: The fourth combined subtypes, types and supertypes of the card.
+ show statistics: false
+ save value: false
+ card list name: Type 4
+ card list column: 0203
+ card list width: 220
+ sort script: type_sort_script(super_type: card.super_type_4, sub_type: card.sub_type_4)
+ script:
+ combined_editor(
+ field1: card.super_type_4,
+ separator: language().type_separator,
+ field2: card.sub_type_4,
+ soft_before_empty: true,
+ hide_when_empty: true
+ )
+
+############################################################## Rarity
+card field:
+ type: choice
+ name: rarity
+ description: The rarity of the card. To edit the symbol, switch to the 'set info' tab.
+ show statistics: false
+ card list visible: true
+ card list name: Rarity
+ card list column: 0500
+ card list width: 90
+ sort script: rarity_sort_script(card.rarity)
+ choice: basic land
+ choice: common
+ choice: uncommon
+ choice: rare
+ choice: mythic rare
+ choice: special
+ choice: masterpiece
+ initial: common
+card field:
+ type: choice
+ name: rarity 2
+ description: The second rarity of the card. To edit the symbol, switch to the 'set info' tab.
+ show statistics: false
+ card list name: Rarity 2
+ card list column: 0501
+ card list width: 90
+ sort script: rarity_sort_script(card.rarity_2)
+ choice: basic land
+ choice: common
+ choice: uncommon
+ choice: rare
+ choice: mythic rare
+ choice: special
+ choice: masterpiece
+ initial: common
+ default: card.rarity
+card field:
+ type: choice
+ name: rarity 3
+ description: The third rarity of the card. To edit the symbol, switch to the 'set info' tab.
+ show statistics: false
+ card list name: Rarity 3
+ card list column: 0502
+ card list width: 90
+ sort script: rarity_sort_script(card.rarity_3)
+ choice: basic land
+ choice: common
+ choice: uncommon
+ choice: rare
+ choice: mythic rare
+ choice: special
+ choice: masterpiece
+ initial: common
+ default: card.rarity
+
+############################################################## The text box
+############################################################## Chapter text
+### Special textboxes for easier automation of Saga/Class reminder text
+card field:
+ type: text
+ name: chapter text
+ description: The saga or class reminder text.
+ show statistics: false
+ multi line: true
+ card list name: Chapter Text
+ card list column: 0760
+ card list width: 150
+ default: chapter_text_filter_default(value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"chapter_text")
+ script: text_filter(value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"chapter_text")
+card field:
+ type: text
+ name: chapter text 2
+ description: The second saga or class reminder text.
+ show statistics: false
+ multi line: true
+ card list name: Chapter Text 2
+ card list column: 0761
+ card list width: 150
+ default: chapter_text_filter_default(value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"chapter_text2")
+ script: text_filter(value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"chapter_text2")
+
+############################################################## Rules text
+### The fields usually aren't used, see Combined text
+card field:
+ type: text
+ name: rule text
+ description: The rules text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Rule Text
+ card list column: 0700
+ card list width: 150
+ default: text_filter_default(value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"text")
+ script: text_filter(value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"text")
card field:
type: text
name: rule text 2
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"text2")
+ description: The second rules text of the card.
show statistics: false
multi line: true
- description: The rules text of the card
+ card list name: Rule Text 2
+ card list column: 0701
+ card list width: 150
+ default: text_filter_default(value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"text2")
+ script: text_filter(value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"text2")
card field:
type: text
name: rule text 3
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"text3")
+ description: The third rules text of the card.
show statistics: false
multi line: true
- description: The rules text of the card
+ card list name: Rule Text 3
+ card list column: 0702
+ card list width: 150
+ default: text_filter_default(value, card_name: if set.alias_as_cardname and card.alias_3 != "" then card.alias_3 else card.name_3, margin_code:"text3")
+ script: text_filter(value, card_name: if set.alias_as_cardname and card.alias_3 != "" then card.alias_3 else card.name_3, margin_code:"text3")
card field:
type: text
name: rule text 4
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"text4")
+ description: The fourth rules text of the card.
show statistics: false
multi line: true
- description: The rules text of the card
+ card list name: Rule Text 4
+ card list column: 0703
+ card list width: 150
+ default: text_filter_default(value, card_name: if set.alias_as_cardname and card.alias_4 != "" then card.alias_4 else card.name_4, margin_code:"text4")
+ script: text_filter(value, card_name: if set.alias_as_cardname and card.alias_4 != "" then card.alias_4 else card.name_4, margin_code:"text4")
+
+### 5 and 6 generally aren't used anymore, use level_text instead
card field:
type: text
name: rule text 5
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"text5")
+ description: The fifth rules text of the card.
show statistics: false
multi line: true
- description: The rules text of the card
+ card list name: Rule Text 5
+ card list column: 0704
+ card list width: 150
+ default: text_filter_default(value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"text5")
+ script: text_filter(value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"text5")
card field:
type: text
name: rule text 6
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"text6")
+ description: The sixth rules text of the card.
show statistics: false
multi line: true
- description: The rules text of the card
+ card list name: Rule Text 6
+ card list column: 0705
+ card list width: 150
+ default: text_filter_default(value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"text6")
+ script: text_filter(value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"text6")
+
+
+############################################################## Flavor text
+### The fields usually aren't used, see Combined text
+card field:
+ type: text
+ name: flavor text
+ description: The flavor text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Flavor Text
+ card list column: 0720
+ card list width: 150
+ default: flavor_text_filter_default(value, margin_code:"flavor_text")
+ script: flavor_text_filter(value, margin_code:"flavor_text")
card field:
type: text
name: flavor text 2
- script: flavor_text_filter(value)
- multi line: true
+ description: The second flavor text of the card.
show statistics: false
+ multi line: true
+ card list name: Flavor Text 2
+ card list column: 0721
+ card list width: 150
+ default: flavor_text_filter_default(value, margin_code:"flavor_text2")
+ script: flavor_text_filter(value, margin_code:"flavor_text2")
card field:
type: text
name: flavor text 3
- script: flavor_text_filter(value)
- multi line: true
+ description: The third flavor text of the card.
show statistics: false
+ multi line: true
+ card list name: Flavor Text 3
+ card list column: 0722
+ card list width: 150
+ default: flavor_text_filter_default(value, margin_code:"flavor_text3")
+ script: flavor_text_filter(value, margin_code:"flavor_text3")
+card field:
+ type: text
+ name: flavor text 4
+ description: The fourth flavor text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Flavor Text 4
+ card list column: 0723
+ card list width: 150
+ default: flavor_text_filter_default(value, margin_code:"flavor_text4")
+ script: flavor_text_filter(value, margin_code:"flavor_text4")
+############################################################## Combined text
+### Use combined_editor to edit two fields at once
+card field:
+ type: text
+ name: text
+ description: The rules and flavor text of the card. Use up and down arrows to switch between them.
+ show statistics: false
+ multi line: true
+ save value: false
+ card list name: Text
+ card list column: 0740
+ card list width: 150
+ script:
+ if mainframe_walker() then
+ mainframe_walker_text_script()
+ else if alt_text() then
+ alt_text_script()
+ else
+ combined_editor(field1: card.rule_text, separator: "\n", field2: card.flavor_text)
card field:
type: text
name: text 2
+ description: The second rules and flavor text of the card. Use up and down arrows to switch between them.
+ show statistics: false
multi line: true
save value: false
- show statistics: false
+ card list name: Text 2
+ card list column: 0741
+ card list width: 150
script:
if mainframe_walkerb() then
mainframe_walker_text_scriptb()
@@ -924,53 +1168,940 @@ card field:
alt_text_scriptb()
else
combined_editor(field1: card.rule_text_2, separator: "\n", field2: card.flavor_text_2)
- description: The rules and flavor text of the card
card field:
type: text
name: text 3
+ description: The third rules and flavor text of the card. Use up and down arrows to switch between them.
+ show statistics: false
multi line: true
save value: false
- show statistics: false
+ card list name: Text 3
+ card list column: 0742
+ card list width: 150
script:
- combined_editor(field1: card.rule_text_3, separator: "\n", field2: card.flavor_text_3)
- description: The rules and flavor text of the card
+ if mainframe_walkerc() then
+ mainframe_walker_text_scriptc()
+ else if alt_textc() then
+ alt_text_scriptc()
+ else
+ combined_editor(field1: card.rule_text_3, separator: "\n", field2: card.flavor_text_3)
+card field:
+ type: text
+ name: text 4
+ description: The fourth rules and flavor text of the card. Use up and down arrows to switch between them.
+ show statistics: false
+ multi line: true
+ save value: false
+ card list name: Text 4
+ card list column: 0743
+ card list width: 150
+ script:
+ if mainframe_walkerd() then
+ mainframe_walker_text_scriptd()
+ else if alt_textd() then
+ alt_text_scriptd()
+ else
+ combined_editor(field1: card.rule_text_4, separator: "\n", field2: card.flavor_text_4)
+
+############################################################## Watermarks
+card field:
+ type: choice
+ name: watermark
+ description: The watermark inside the textbox. Can be a big mana symbol used on basic lands, a guild symbol, etc..
+ show statistics: false
+ card list name: Watermark
+ card list column: 0900
+ card list width: 110
+ include file: /magic-modules.mse-include/watermarks/choices
card field:
type: choice
name: watermark 2
- include file: /magic-watermarks.mse-include/watermark-names
- icon: stats/watermark.png
+ description: The watermark inside the second textbox. Can be a big mana symbol used on basic lands, a guild symbol, etc..
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 list name: Watermark 2
+ card list column: 0901
+ card list width: 110
+ include file: /magic-modules.mse-include/watermarks/choices
card field:
type: choice
name: watermark 3
- include file: /magic-watermarks.mse-include/watermark-names
- icon: stats/watermark.png
+ description: The watermark inside the third textbox. Can be a big mana symbol used on basic lands, a guild symbol, etc..
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 list name: Watermark 3
+ card list column: 0902
+ card list width: 110
+ include file: /magic-modules.mse-include/watermarks/choices
+card field:
+ type: choice
+ name: watermark 4
+ description: The watermark inside the fourth textbox. Can be a big mana symbol used on basic lands, a guild symbol, etc..
+ show statistics: false
+ card list name: Watermark 4
+ card list column: 0903
+ card list width: 110
+ include file: /magic-modules.mse-include/watermarks/choices
+
+############################################################## Loyalty cost textboxes
+card field:
+ type: text
+ name: loyalty cost 1
+ description: The loyalty cost for the first ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 1
+ card list column: 0360
+ card list width: 40
+card field:
+ type: text
+ name: loyalty cost 2
+ description: The loyalty cost for the second ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 2
+ card list column: 0361
+ card list width: 40
+card field:
+ type: text
+ name: loyalty cost 3
+ description: The loyalty cost for the third ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 3
+ card list column: 0362
+ card list width: 40
+card field:
+ type: text
+ name: loyalty cost 4
+ description: The loyalty cost for the fourth ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 4
+ card list column: 0363
+ card list width: 40
+card field:
+ type: text
+ name: loyalty cost 5
+ description: The loyalty cost for the fifth ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 5
+ card list column: 0364
+ card list width: 40
+card field:
+ type: text
+ name: loyalty cost 6
+ description: The loyalty cost for the sixth ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 6
+ card list column: 0365
+ card list width: 40
+card field:
+ type: text
+ name: loyalty cost 7
+ description: The loyalty cost for the seventh ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 7
+ card list column: 0366
+ card list width: 40
+card field:
+ type: text
+ name: loyalty cost 8
+ description: The loyalty cost for the eighth ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 8
+ card list column: 0367
+ card list width: 40
+card field:
+ type: text
+ name: loyalty cost 9
+ description: The loyalty cost for the ninth ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 9
+ card list column: 0368
+ card list width: 40
+card field:
+ type: text
+ name: loyalty cost 10
+ description: The loyalty cost for the tenth ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 10
+ card list column: 0369
+ card list width: 40
+card field:
+ type: text
+ name: loyalty cost 11
+ description: The loyalty cost for the eleventh ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 11
+ card list column: 0370
+ card list width: 40
+card field:
+ type: text
+ name: loyalty cost 12
+ description: The loyalty cost for the twelfth ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 12
+ card list column: 0371
+ card list width: 40
+card field:
+ type: text
+ name: loyalty cost 13
+ description: The loyalty cost for the thirteenth ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 13
+ card list column: 0372
+ card list width: 40
+card field:
+ type: text
+ name: loyalty cost 14
+ description: The loyalty cost for the fourteenth ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 14
+ card list column: 0373
+ card list width: 40
+card field:
+ type: text
+ name: loyalty cost 15
+ description: The loyalty cost for the fifteenth ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 15
+ card list column: 0374
+ card list width: 40
+card field:
+ type: text
+ name: loyalty cost 16
+ description: The loyalty cost for the sixteenth ability of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost 16
+ card list column: 0375
+ card list width: 40
+
+card field:
+ type: text
+ name: loyalty
+ description: The initial loyalty of the planeswalker, or defense of the battle.
+ show statistics: false
+ card list name: Loyalty
+ card list column: 0350
+ card list width: 40
card field:
type: text
name: loyalty 2
- icon: stats/loyalty.png
+ description: The second initial loyalty of the planeswalker, or defense of the battle.
show statistics: false
- description: The initial loyalty of a planeswalker
+ card list name: Loyalty 2
+ card list column: 0351
+ card list width: 40
+card field:
+ type: text
+ name: loyalty 3
+ description: The third initial loyalty of the planeswalker, or defense of the battle.
+ show statistics: false
+ card list name: Loyalty 3
+ card list column: 0352
+ card list width: 40
+
+############################################################## Loyalty cost boxes
+card field:
+ type: multiple choice
+ name: loyalty cost box 1
+ description: The loyalty cost box for the first loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 1
+ card list column: 0380
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_1; loyalty_cost_box_default(value, margin_code: "loycost1")
+card field:
+ type: multiple choice
+ name: loyalty cost box 2
+ description: The loyalty cost box for the second loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 2
+ card list column: 0381
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_2; loyalty_cost_box_default(value, margin_code: "loycost2")
+card field:
+ type: multiple choice
+ name: loyalty cost box 3
+ description: The loyalty cost box for the third loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 3
+ card list column: 0382
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_3; loyalty_cost_box_default(value, margin_code: "loycost3")
+card field:
+ type: multiple choice
+ name: loyalty cost box 4
+ description: The loyalty cost box for the fourth loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 4
+ card list column: 0383
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_4; loyalty_cost_box_default(value, margin_code: "loycost4")
+card field:
+ type: multiple choice
+ name: loyalty cost box 5
+ description: The loyalty cost box for the fifth loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 5
+ card list column: 0384
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_5; loyalty_cost_box_default(value, margin_code: "loycost5")
+card field:
+ type: multiple choice
+ name: loyalty cost box 6
+ description: The loyalty cost box for the sixth loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 6
+ card list column: 0385
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_6; loyalty_cost_box_default(value, margin_code: "loycost6")
+card field:
+ type: multiple choice
+ name: loyalty cost box 7
+ description: The loyalty cost box for the seventh loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 7
+ card list column: 0386
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_7; loyalty_cost_box_default(value, margin_code: "loycost7")
+card field:
+ type: multiple choice
+ name: loyalty cost box 8
+ description: The loyalty cost box for the eighth loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 8
+ card list column: 0387
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_8; loyalty_cost_box_default(value, margin_code: "loycost8")
+card field:
+ type: multiple choice
+ name: loyalty cost box 9
+ description: The loyalty cost box for the ninth loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 9
+ card list column: 0388
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_9; loyalty_cost_box_default(value, margin_code: "loycost9")
+card field:
+ type: multiple choice
+ name: loyalty cost box 10
+ description: The loyalty cost box for the tenth loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 10
+ card list column: 0389
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_10; loyalty_cost_box_default(value, margin_code: "loycost10")
+card field:
+ type: multiple choice
+ name: loyalty cost box 11
+ description: The loyalty cost box for the eleventh loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 11
+ card list column: 0390
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_11; loyalty_cost_box_default(value, margin_code: "loycost11")
+card field:
+ type: multiple choice
+ name: loyalty cost box 12
+ description: The loyalty cost box for the twelfth loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 12
+ card list column: 0391
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_12; loyalty_cost_box_default(value, margin_code: "loycost12")
+card field:
+ type: multiple choice
+ name: loyalty cost box 13
+ description: The loyalty cost box for the thirteenth loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 13
+ card list column: 0392
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_13; loyalty_cost_box_default(value, margin_code: "loycost13")
+card field:
+ type: multiple choice
+ name: loyalty cost box 14
+ description: The loyalty cost box for the fourteenth loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 14
+ card list column: 0393
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_14; loyalty_cost_box_default(value, margin_code: "loycost14")
+card field:
+ type: multiple choice
+ name: loyalty cost box 15
+ description: The loyalty cost box for the fifteenth loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 15
+ card list column: 0394
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_15; loyalty_cost_box_default(value, margin_code: "loycost15")
+card field:
+ type: multiple choice
+ name: loyalty cost box 16
+ description: The loyalty cost box for the sixteenth loyalty cost of the planeswalker.
+ show statistics: false
+ card list name: Loyalty Cost Box 16
+ card list column: 0395
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices_cost
+ default: card.loyalty_cost_16; loyalty_cost_box_default(value, margin_code: "loycost16")
+
+card field:
+ type: multiple choice
+ name: loyalty box
+ description: The loyalty box for the first loyalty of the planeswalker, or defense of the battle.
+ show statistics: false
+ card list name: Loyalty Box
+ card list column: 0355
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices
+ default: card.loyalty; card.super_type; loyalty_box_default(value, margin_code: "loy1")
+card field:
+ type: multiple choice
+ name: loyalty box 2
+ description: The loyalty box for the second loyalty of the planeswalker, or defense of the battle.
+ show statistics: false
+ card list name: Loyalty Box 2
+ card list column: 0356
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices
+ default: card.loyalty_2; card.super_type_2; loyalty_box_default(value, margin_code: "loy2")
+card field:
+ type: multiple choice
+ name: loyalty box 3
+ description: The loyalty box for the third loyalty of the planeswalker, or defense of the battle.
+ show statistics: false
+ card list name: Loyalty Box 3
+ card list column: 0357
+ card list width: 80
+ include file: /magic-modules.mse-include/loyalty/choices
+ default: card.loyalty_3; card.super_type_3; loyalty_box_default(value, margin_code: "loy3")
+
+############################################################## Level text
+############################################################## "Level X" arrow textboxes
+### "level 0" is where a leveler box would go on the line that normally just has level up.
+### unfortunately that means level 0 is paired with level_1_text and so on
+### this is something that's not really feasible to correct
+card field:
+ type: text
+ name: level 0
+ description: The zeroth level of the card.
+ show statistics: false
+ card list name: Level 0
+ card list column: 0830
+ card list width: 100
+ default: level_filter_default(value, margin_code:"lv0")
+ script: level_filter(value, margin_code:"lv0")
+card field:
+ type: text
+ name: level 1
+ description: The first level of the card.
+ show statistics: false
+ card list name: Level 1
+ card list column: 0831
+ card list width: 100
+ default: level_filter_default(value, margin_code:"lv1")
+ script: level_filter(value, margin_code:"lv1")
+card field:
+ type: text
+ name: level 2
+ description: The second level of the card.
+ show statistics: false
+ card list name: Level 2
+ card list column: 0832
+ card list width: 100
+ default: level_filter_default(value, margin_code:"lv2")
+ script: level_filter(value, margin_code:"lv2")
+card field:
+ type: text
+ name: level 3
+ description: The third level of the card.
+ show statistics: false
+ card list name: Level 3
+ card list column: 0833
+ card list width: 100
+ default: level_filter_default(value, margin_code:"lv3")
+ script: level_filter(value, margin_code:"lv3")
+card field:
+ type: text
+ name: level 4
+ description: The fourth level of the card.
+ show statistics: false
+ card list name: Level 4
+ card list column: 0834
+ card list width: 100
+ default: level_filter_default(value, margin_code:"lv4")
+ script: level_filter(value, margin_code:"lv4")
+card field:
+ type: text
+ name: level 5
+ description: The fifth level of the card.
+ show statistics: false
+ card list name: Level 5
+ card list column: 0835
+ card list width: 100
+ default: level_filter_default(value, margin_code:"lv5")
+ script: level_filter(value, margin_code:"lv5")
+card field:
+ type: text
+ name: level 6
+ description: The sixth level of the card.
+ show statistics: false
+ card list name: Level 6
+ card list column: 0836
+ card list width: 100
+ default: level_filter_default(value, margin_code:"lv6")
+ script: level_filter(value, margin_code:"lv6")
+card field:
+ type: text
+ name: level 7
+ description: The seventh level of the card.
+ show statistics: false
+ card list name: Level 7
+ card list column: 0837
+ card list width: 100
+ default: level_filter_default(value, margin_code:"lv7")
+ script: level_filter(value, margin_code:"lv7")
+card field:
+ type: text
+ name: level 8
+ description: The eighth level of the card.
+ show statistics: false
+ card list name: Level 8
+ card list column: 0838
+ card list width: 100
+ default: level_filter_default(value, margin_code:"lv8")
+ script: level_filter(value, margin_code:"lv8")
+
+############################################################## Level/Planeswalker/Dungeon ability textboxes
+card field:
+ type: text
+ name: level 1 text
+ description: The first level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 1 text
+ card list column: 0800
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(1), margin_code:"lv1")
+ script: text_filter(value, card_name: card_name_for_level(1), margin_code:"lv1")
+card field:
+ type: text
+ name: level 2 text
+ description: The second level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 2 text
+ card list column: 0801
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(2), margin_code:"lv2")
+ script: text_filter(value, card_name: card_name_for_level(2), margin_code:"lv2")
+card field:
+ type: text
+ name: level 3 text
+ description: The third level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 3 text
+ card list column: 0802
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(3), margin_code:"lv3")
+ script: text_filter(value, card_name: card_name_for_level(3), margin_code:"lv3")
+card field:
+ type: text
+ name: level 4 text
+ description: The fourth level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 4 text
+ card list column: 0803
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(4), margin_code:"lv4")
+ script: text_filter(value, card_name: card_name_for_level(4), margin_code:"lv4")
+card field:
+ type: text
+ name: level 5 text
+ description: The fifth level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 5 text
+ card list column: 0804
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(5), margin_code:"lv5")
+ script: text_filter(value, card_name: card_name_for_level(5), margin_code:"lv5")
+card field:
+ type: text
+ name: level 6 text
+ description: The sixth level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 6 text
+ card list column: 0805
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(6), margin_code:"lv6")
+ script: text_filter(value, card_name: card_name_for_level(6), margin_code:"lv6")
+card field:
+ type: text
+ name: level 7 text
+ description: The seventh level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 7 text
+ card list column: 0806
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(7), margin_code:"lv7")
+ script: text_filter(value, card_name: card_name_for_level(7), margin_code:"lv7")
+card field:
+ type: text
+ name: level 8 text
+ description: The eighth level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 8 text
+ card list column: 0807
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(8), margin_code:"lv8")
+ script: text_filter(value, card_name: card_name_for_level(8), margin_code:"lv8")
+card field:
+ type: text
+ name: level 9 text
+ description: The ninth level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 9 text
+ card list column: 0808
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(9), margin_code:"lv9")
+ script: text_filter(value, card_name: card_name_for_level(9), margin_code:"lv9")
+card field:
+ type: text
+ name: level 10 text
+ description: The tenth level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 10 text
+ card list column: 0809
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(10), margin_code:"lv10")
+ script: text_filter(value, card_name: card_name_for_level(10), margin_code:"lv10")
+card field:
+ type: text
+ name: level 11 text
+ description: The eleventh level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 11 text
+ card list column: 0810
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(11), margin_code:"lv11")
+ script: text_filter(value, card_name: card_name_for_level(11), margin_code:"lv11")
+card field:
+ type: text
+ name: level 12 text
+ description: The twelfth level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 12 text
+ card list column: 0811
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(12), margin_code:"lv12")
+ script: text_filter(value, card_name: card_name_for_level(12), margin_code:"lv12")
+card field:
+ type: text
+ name: level 13 text
+ description: The thirteenth level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 13 text
+ card list column: 0812
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(13), margin_code:"lv13")
+ script: text_filter(value, card_name: card_name_for_level(13), margin_code:"lv13")
+card field:
+ type: text
+ name: level 14 text
+ description: The fourteenth level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 14 text
+ card list column: 0813
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(14), margin_code:"lv14")
+ script: text_filter(value, card_name: card_name_for_level(14), margin_code:"lv14")
+card field:
+ type: text
+ name: level 15 text
+ description: The fifteenth level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 15 text
+ card list column: 0814
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(15), margin_code:"lv15")
+ script: text_filter(value, card_name: card_name_for_level(15), margin_code:"lv15")
+card field:
+ type: text
+ name: level 16 text
+ description: The sixteenth level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 16 text
+ card list column: 0815
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(16), margin_code:"lv16")
+ script: text_filter(value, card_name: card_name_for_level(16), margin_code:"lv16")
+### These are only used by very large Dungeons
+card field:
+ type: text
+ name: level 17 text
+ description: The seventeenth level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 17 text
+ card list column: 0816
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(17), margin_code:"lv17")
+ script: text_filter(value, card_name: card_name_for_level(17), margin_code:"lv17")
+card field:
+ type: text
+ name: level 18 text
+ description: The eighteenth level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 18 text
+ card list column: 0817
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(18), margin_code:"lv18")
+ script: text_filter(value, card_name: card_name_for_level(18), margin_code:"lv18")
+card field:
+ type: text
+ name: level 19 text
+ description: The nineteenth level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 19 text
+ card list column: 0818
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(19), margin_code:"lv19")
+ script: text_filter(value, card_name: card_name_for_level(19), margin_code:"lv19")
+card field:
+ type: text
+ name: level 20 text
+ description: The twentieth level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 20 text
+ card list column: 0819
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(20), margin_code:"lv20")
+ script: text_filter(value, card_name: card_name_for_level(20), margin_code:"lv20")
+card field:
+ type: text
+ name: level 21 text
+ description: The twenty-first level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 21 text
+ card list column: 0820
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(21), margin_code:"lv21")
+ script: text_filter(value, card_name: card_name_for_level(21), margin_code:"lv21")
+card field:
+ type: text
+ name: level 22 text
+ description: The twenty-second level text of the card.
+ show statistics: false
+ multi line: true
+ card list name: Level 22 text
+ card list column: 0821
+ card list width: 150
+ default: text_filter_default(value, card_name: card_name_for_level(22), margin_code:"lv22")
+ script: text_filter(value, card_name: card_name_for_level(22), margin_code:"lv22")
+
+############################################################## PT
+############################################################## Power
+### These fields usually aren't used, see Combined PT
+card field:
+ type: text
+ name: power
+ description: The power of the creature.
+ show statistics: false
+ card list name: Power
+ card list column: 0320
+ card list width: 40
+ script: type_over_pt(value)
card field:
type: text
name: power 2
- icon: stats/power.png
+ description: The second power of the creature.
show statistics: false
+ card list name: Power 2
+ card list column: 0321
+ card list width: 40
script: type_over_pt(value)
- description: The power of a creature
+card field:
+ type: text
+ name: power 3
+ description: The third power of the creature.
+ show statistics: false
+ card list name: Power 3
+ card list column: 0322
+ card list width: 40
+ script: type_over_pt(value)
+card field:
+ type: text
+ name: power 4
+ description: The fourth power of the creature.
+ show statistics: false
+ card list name: Power 4
+ card list column: 0323
+ card list width: 40
+ script: type_over_pt(value)
+card field:
+ type: text
+ name: power 5
+ description: The fifth power of the creature.
+ show statistics: false
+ card list name: Power 5
+ card list column: 0324
+ card list width: 40
+ script: type_over_pt(value)
+card field:
+ type: text
+ name: power 6
+ description: The sixth power of the creature.
+ show statistics: false
+ card list name: Power 6
+ card list column: 0325
+ card list width: 40
+ script: type_over_pt(value)
+card field:
+ type: text
+ name: power 7
+ description: The seventh power of the creature.
+ show statistics: false
+ card list name: Power 7
+ card list column: 0326
+ card list width: 40
+ script: type_over_pt(value)
+card field:
+ type: text
+ name: power 8
+ description: The eighth power of the creature.
+ show statistics: false
+ card list name: Power 8
+ card list column: 0327
+ card list width: 40
+ script: type_over_pt(value)
+
+############################################################## Toughness
+### These fields usually aren't used, see Combined PT
+card field:
+ type: text
+ name: toughness
+ description: The toughness of the creature.
+ show statistics: false
+ card list name: Toughness
+ card list column: 0340
+ card list width: 40
card field:
type: text
name: toughness 2
- icon: stats/toughness.png
+ description: The second toughness of the creature.
show statistics: false
- description: The toughness of a creature
+ card list name: Toughness 2
+ card list column: 0341
+ card list width: 40
+card field:
+ type: text
+ name: toughness 3
+ description: The third toughness of the creature.
+ show statistics: false
+ card list name: Toughness 3
+ card list column: 0342
+ card list width: 40
+card field:
+ type: text
+ name: toughness 4
+ description: The fourth toughness of the creature.
+ show statistics: false
+ card list name: Toughness 4
+ card list column: 0343
+ card list width: 40
+card field:
+ type: text
+ name: toughness 5
+ description: The fifth toughness of the creature.
+ show statistics: false
+ card list name: Toughness 5
+ card list column: 0344
+ card list width: 40
+card field:
+ type: text
+ name: toughness 6
+ description: The sixth toughness of the creature.
+ show statistics: false
+ card list name: Toughness 6
+ card list column: 0345
+ card list width: 40
+card field:
+ type: text
+ name: toughness 7
+ description: The seventh toughness of the creature.
+ show statistics: false
+ card list name: Toughness 7
+ card list column: 0346
+ card list width: 40
+card field:
+ type: text
+ name: toughness 8
+ description: The eighth toughness of the creature.
+ show statistics: false
+ card list name: Toughness 8
+ card list column: 0347
+ card list width: 40
+
+############################################################## Combined PT
+### Use combined_editor to edit two fields at once
+card field:
+ type: text
+ name: pt
+ description: The combined power/toughness of the creature.
+ show statistics: false
+ save value: false
+ card list visible: true
+ card list name: P/T
+ card list column: 0300
+ card list width: 60
+ script:
+ combined_editor(
+ field1: card.power,
+ separator: language().pt_separator,
+ field2: card.toughness,
+ soft_before_empty: true,
+ hide_when_empty: true
+ )
card field:
type: text
name: pt 2
+ description: The second combined power/toughness of the creature.
+ show statistics: false
save value: false
+ card list name: P/T 2
+ card list column: 0301
+ card list width: 60
script:
combined_editor(
field1: card.power_2,
@@ -979,27 +2110,15 @@ card field:
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
+ description: The third combined power/toughness of the creature.
+ show statistics: false
save value: false
+ card list name: P/T 3
+ card list column: 0302
+ card list width: 60
script:
combined_editor(
field1: card.power_3,
@@ -1008,235 +2127,15 @@ card field:
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: illustrator 3
- icon: stats/illustrator.png
- default: set.artist
- show statistics: false
- description: The illustrator of the image
-card field:
- type: text
- name: copyright 3
- default: set.copyright
- show statistics: false
-card field:
- type: text
- name: copyright line 3
- save value: false
- show statistics: false
- script:
- if set.automatic_card_numbers then
- combined_editor(field1: card.copyright_3, separator: " ", field2: card.card_number)
- else
- forward_editor(field: card.copyright_3)
- description: The copyright and card number of the card
-card field:
- type: text
- name: set code 2
- editable: false
- save value: false
- script: (if is_masterpiece() then set.masterpiece_set_code else set.set_code) + (if set.set_language != "" then " • " + set.set_language else "")
- show statistics: false
-card field:
- type: text
- name: set code 3
- editable: false
- save value: false
- script: (if is_masterpiece() then set.masterpiece_set_code else set.set_code) + " • " + set.set_language
- show statistics: false
-########################back Leveler textboxes
-card field:
- type: text
- name: level 5 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"lv5")
- show statistics: false
- multi line: true
- description: The fifth level text for the card
-card field:
- type: text
- name: level 6 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"lv6")
- show statistics: false
- multi line: true
- description: The sixth level text for the card
-card field:
- type: text
- name: level 7 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"lv7")
- show statistics: false
- multi line: true
- description: The seventh level text for the card
-card field:
- type: text
- name: level 8 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"lv8")
- show statistics: false
- multi line: true
- description: The eighth level text for the card
-card field:
- type: text
- name: level 9 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"lv9")
- show statistics: false
- multi line: true
- description: The ninth level text for the card
-card field:
- type: text
- name: level 10 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"lv10")
- show statistics: false
- multi line: true
- description: The tenth level text for the card
-card field:
- type: text
- name: level 11 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"lv11")
- show statistics: false
- multi line: true
- description: The eleventh level text for the card
-card field:
- type: text
- name: level 12 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"lv12")
- show statistics: false
- multi line: true
- description: The twelvth level text for the card
-card field:
- type: text
- name: level 13 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"lv13")
- show statistics: false
- multi line: true
- description: The thirteenth level text for the card
-card field:
- type: text
- name: level 14 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"lv14")
- show statistics: false
- multi line: true
- description: The fourteenth level text for the card
-card field:
- type: text
- name: level 15 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"lv15")
- show statistics: false
- multi line: true
- description: The fifteenth level text for the card
-card field:
- type: text
- name: level 16 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"lv16")
- show statistics: false
- multi line: true
- description: The sixteenth level text for the card
-card field:
- type: text
- name: level 17 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"lv17")
- show statistics: false
- multi line: true
- description: The seventeenth level text for the card
-card field:
- type: text
- name: level 18 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"lv18")
- show statistics: false
- multi line: true
- description: The eighteenth level text for the card
-card field:
- type: text
- name: level 19 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"lv19")
- show statistics: false
- multi line: true
- description: The nineteenth level text for the card
-card field:
- type: text
- name: level 20 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"lv20")
- show statistics: false
- multi line: true
- description: The twentieth level text for the card
-card field:
- type: text
- name: level 21 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"lv21")
- show statistics: false
- multi line: true
- description: The twenty-first level text for the card
-card field:
- type: text
- name: level 22 text
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias != "" then card.alias else card.name, margin_code:"lv22")
- show statistics: false
- multi line: true
- description: The twenty-second level text for the card
-card field:
- type: text
- name: level 5
- description: The fifth level of a card
- show statistics: false
-card field:
- type: text
- name: level 6
- description: The sixth level of a card
- show statistics: false
-card field:
- type: text
- name: level 7
- description: The seventh level of a card
- show statistics: false
-card field:
- type: text
- name: level 8
- description: The eighth level of a card
- show statistics: false
-
-card field:
- type: text
- name: power 4
- icon: stats/power.png
- show statistics: false
- script: type_over_pt(value)
- description: The power of a creature
-card field:
- type: text
- name: toughness 4
- icon: stats/toughness.png
- show statistics: false
- description: The toughness of a creature
card field:
type: text
name: pt 4
+ description: The fourth combined power/toughness of the creature.
+ show statistics: false
save value: false
+ card list name: P/T 4
+ card list column: 0303
+ card list width: 60
script:
combined_editor(
field1: card.power_4,
@@ -1245,27 +2144,15 @@ card field:
soft_before_empty: true,
hide_when_empty: true
)
- card list width: 50
- card list name: P/T4
- show statistics: false
- description: Power/Toughness of a creature
-card field:
- type: text
- name: power 5
- icon: stats/power.png
- show statistics: false
- script: type_over_pt(value)
- description: The power of a creature
-card field:
- type: text
- name: toughness 5
- icon: stats/toughness.png
- show statistics: false
- description: The toughness of a creature
card field:
type: text
name: pt 5
+ description: The fifth combined power/toughness of the creature.
+ show statistics: false
save value: false
+ card list name: P/T 5
+ card list column: 0304
+ card list width: 60
script:
combined_editor(
field1: card.power_5,
@@ -1274,27 +2161,15 @@ card field:
soft_before_empty: true,
hide_when_empty: true
)
- card list width: 50
- card list name: P/T5
- show statistics: false
- description: Power/Toughness of a creature
-card field:
- type: text
- name: power 6
- icon: stats/power.png
- show statistics: false
- script: type_over_pt(value)
- description: The power of a creature
-card field:
- type: text
- name: toughness 6
- icon: stats/toughness.png
- show statistics: false
- description: The toughness of a creature
card field:
type: text
name: pt 6
+ description: The sixth combined power/toughness of the creature.
+ show statistics: false
save value: false
+ card list name: P/T 6
+ card list column: 0305
+ card list width: 60
script:
combined_editor(
field1: card.power_6,
@@ -1303,27 +2178,15 @@ card field:
soft_before_empty: true,
hide_when_empty: true
)
- card list width: 50
- card list name: P/T6
- show statistics: false
- description: Power/Toughness of a creature
-card field:
- type: text
- name: power 7
- icon: stats/power.png
- show statistics: false
- script: type_over_pt(value)
- description: The power of a creature
-card field:
- type: text
- name: toughness 7
- icon: stats/toughness.png
- show statistics: false
- description: The toughness of a creature
card field:
type: text
name: pt 7
+ description: The seventh combined power/toughness of the creature.
+ show statistics: false
save value: false
+ card list name: P/T 7
+ card list column: 0306
+ card list width: 60
script:
combined_editor(
field1: card.power_7,
@@ -1332,27 +2195,15 @@ card field:
soft_before_empty: true,
hide_when_empty: true
)
- card list width: 50
- card list name: P/T7
- show statistics: false
- description: Power/Toughness of a creature
-card field:
- type: text
- name: power 8
- icon: stats/power.png
- show statistics: false
- script: type_over_pt(value)
- description: The power of a creature
-card field:
- type: text
- name: toughness 8
- icon: stats/toughness.png
- show statistics: false
- description: The toughness of a creature
card field:
type: text
name: pt 8
+ description: The eighth combined power/toughness of the creature.
+ show statistics: false
save value: false
+ card list name: P/T 8
+ card list column: 0307
+ card list width: 60
script:
combined_editor(
field1: card.power_8,
@@ -1361,50 +2212,391 @@ card field:
soft_before_empty: true,
hide_when_empty: true
)
- card list width: 50
- card list name: P/T8
+
+############################################################## Separators
+card field:
+ type: choice
+ name: separator
+ description: The separator between blocks of text, such as the flavor bar.
show statistics: false
- description: Power/Toughness of a creature
+ card list name: Separator
+ card list column: 0910
+ card list width: 110
+ include file: /magic-modules.mse-include/separators/choices
+ default: separator_default(value, margin_code: "sep1")
+card field:
+ type: choice
+ name: separator 2
+ description: The second separator between blocks of text, such as the flavor bar.
+ show statistics: false
+ card list name: Separator 2
+ card list column: 0911
+ card list width: 110
+ include file: /magic-modules.mse-include/separators/choices
+ default: separator_default(value, margin_code: "sep2")
+card field:
+ type: choice
+ name: separator 3
+ description: The third separator between blocks of text, such as the flavor bar.
+ show statistics: false
+ card list name: Separator 3
+ card list column: 0912
+ card list width: 110
+ include file: /magic-modules.mse-include/separators/choices
+ default: separator_default(value, margin_code: "sep3")
+card field:
+ type: choice
+ name: separator 4
+ description: The fourth separator between blocks of text, such as the flavor bar.
+ show statistics: false
+ card list name: Separator 4
+ card list column: 0913
+ card list width: 110
+ include file: /magic-modules.mse-include/separators/choices
+ default: separator_default(value, margin_code: "sep4")
+card field:
+ type: choice
+ name: separator 5
+ description: The fifth separator between blocks of text, such as the flavor bar.
+ show statistics: false
+ card list name: Separator 5
+ card list column: 0914
+ card list width: 110
+ include file: /magic-modules.mse-include/separators/choices
+ default: separator_default(value, margin_code: "sep5")
+card field:
+ type: choice
+ name: separator 6
+ description: The sixth separator between blocks of text, such as the flavor bar.
+ show statistics: false
+ card list name: Separator 6
+ card list column: 0915
+ card list width: 110
+ include file: /magic-modules.mse-include/separators/choices
+ default: separator_default(value, margin_code: "sep6")
+card field:
+ type: choice
+ name: separator 7
+ description: The seventh separator between blocks of text, such as the flavor bar.
+ show statistics: false
+ card list name: Separator 7
+ card list column: 0916
+ card list width: 110
+ include file: /magic-modules.mse-include/separators/choices
+ default: separator_default(value, margin_code: "sep7")
+card field:
+ type: choice
+ name: separator 8
+ description: The eighth separator between blocks of text, such as the flavor bar.
+ show statistics: false
+ card list name: Separator 8
+ card list column: 0917
+ card list width: 110
+ include file: /magic-modules.mse-include/separators/choices
+ default: separator_default(value, margin_code: "sep8")
+
+############################################################## Holofoil stamps
+card field:
+ type: choice
+ name: card stamp
+ description: The hologram security stamp of the card.
+ show statistics: false
+ card list name: Stamp
+ card list column: 1000
+ card list width: 110
+ include file: /magic-modules.mse-include/stamps/card_choices
+ default: card_stamp_default(field:1, margin_code: "stamp1")
+card field:
+ type: choice
+ name: card stamp 2
+ description: The second hologram security stamp of the card.
+ show statistics: false
+ card list name: Stamp 2
+ card list column: 1001
+ card list width: 110
+ include file: /magic-modules.mse-include/stamps/card_choices
+ default: card_stamp_default(field:2, margin_code: "stamp2")
+card field:
+ type: choice
+ name: card stamp 3
+ description: The third hologram security stamp of the card.
+ show statistics: false
+ card list name: Stamp 3
+ card list column: 1002
+ card list width: 110
+ include file: /magic-modules.mse-include/stamps/card_choices
+ default: card_stamp_default(field:3, margin_code: "stamp3")
+
+
+############################################################## Punchout counter symbols
+card field:
+ type: choice
+ name: counter
+ description: The symbol for the first counter of the sheet.
+ show statistics: false
+ card list name: Counter
+ card list column: 1660
+ card list width: 100
+ include file: /magic-modules.mse-include/counters/choices
+ default: counter_default(value, margin_code: "counter")
+card field:
+ type: choice
+ name: counter 2
+ description: The symbol for the second counter of the sheet.
+ show statistics: false
+ card list name: Counter 2
+ card list column: 1661
+ card list width: 100
+ include file: /magic-modules.mse-include/counters/choices
+ default: counter_default(value, margin_code: "counter2")
+card field:
+ type: choice
+ name: counter 3
+ description: The symbol for the third counter of the sheet.
+ show statistics: false
+ card list name: Counter 3
+ card list column: 1662
+ card list width: 100
+ include file: /magic-modules.mse-include/counters/choices
+ default: counter_default(value, margin_code: "counter3")
+card field:
+ type: choice
+ name: counter 4
+ description: The symbol for the fourth counter of the sheet.
+ show statistics: false
+ card list name: Counter 4
+ card list column: 1663
+ card list width: 100
+ include file: /magic-modules.mse-include/counters/choices
+ default: counter_default(value, margin_code: "counter4")
+card field:
+ type: choice
+ name: counter 5
+ description: The symbol for the fifth counter of the sheet.
+ show statistics: false
+ card list name: Counter 5
+ card list column: 1664
+ card list width: 100
+ include file: /magic-modules.mse-include/counters/choices
+ default: counter_default(value, margin_code: "counter5")
+card field:
+ type: choice
+ name: counter 6
+ description: The symbol for the sixth counter of the sheet.
+ show statistics: false
+ card list name: Counter 6
+ card list column: 1665
+ card list width: 100
+ include file: /magic-modules.mse-include/counters/choices
+ default: counter_default(value, margin_code: "counter6")
+
+############################################################## Information below the textbox
+############################################################## Illustrator
card field:
type: text
- name: cmc
+ name: illustrator
+ description: The illustrator of the card. Default value can be changed on the 'set info' tab. Can also be used for flavor, mechanics or template credit.
show statistics: false
- position hint: 2
- script: cmc(card.casting_cost)
card list visible: true
- card list column: 3
- card list alignment: right
- card list width: 50
- card list name: CMC
- description: The converted mana cost of the card
-card field:
- type: image
- name: mainframe image
- show statistics: false
- description: An extra image of the card
-card field:
- type: image
- name: mainframe image 2
- show statistics: false
- description: An extra image of the card
+ card list name: Artist
+ card list column: 1100
+ card list width: 150
+ default: set.artist
card field:
type: text
- name: special text
+ name: illustrator 2
+ description: The second illustrator of the card. Default value can be changed on the 'set info' tab. Can also be used for flavor, mechanics or template credit.
show statistics: false
- script: special_text()
- save value: true
- description: Full text for exporting.
+ card list name: Artist 2
+ card list column: 1101
+ card list width: 150
+ default: set.artist
card field:
type: text
- name: special text 2
+ name: illustrator 3
+ description: The third illustrator of the card. Default value can be changed on the 'set info' tab. Can also be used for flavor, mechanics or template credit.
show statistics: false
- script: special_text2()
- save value: true
- description: Full text for exporting.
+ card list name: Artist 3
+ card list column: 1102
+ card list width: 150
+ default: set.artist
+
+card field:
+ type: choice
+ name: illustrator brush
+ description: The brush icon next to the illustrator name. Can also be used for flavor, mechanics or template credit.
+ show statistics: false
+ card list name: Credit Icon
+ card list column: 1110
+ card list width: 100
+ include file: /magic-modules.mse-include/information/choices
+ default: illustrator_brush_default(value, margin_code: "brush1")
+card field:
+ type: choice
+ name: illustrator brush 2
+ description: The brush icon next to the second illustrator name. Can also be used for flavor, mechanics or template credit.
+ show statistics: false
+ card list name: Credit Icon 2
+ card list column: 1111
+ card list width: 100
+ include file: /magic-modules.mse-include/information/choices
+ default: illustrator_brush_default(value, margin_code: "brush2")
+card field:
+ type: choice
+ name: illustrator brush 3
+ description: The brush icon next to the third illustrator name. Can also be used for flavor, mechanics or template credit.
+ show statistics: false
+ card list name: Credit Icon 3
+ card list column: 1112
+ card list width: 100
+ include file: /magic-modules.mse-include/information/choices
+ default: illustrator_brush_default(value, margin_code: "brush3")
+
+############################################################## Additional credit fields
+card field:
+ type: text
+ name: additional credit
+ description: Credit for other things like flavor or mechanics.
+ show statistics: false
+ card list name: Additional Credit
+ card list column: 1120
+ card list width: 150
+ default: additional_credit_default(value, margin_code: "addcredit1")
+card field:
+ type: text
+ name: additional credit 2
+ description: Second credit for other things like flavor or mechanics.
+ show statistics: false
+ card list name: Additional Credit 2
+ card list column: 1121
+ card list width: 150
+ default: additional_credit_default(value, margin_code: "addcredit2")
+card field:
+ type: text
+ name: additional credit 3
+ description: Third credit for other things like flavor or mechanics.
+ show statistics: false
+ card list name: Additional Credit 3
+ card list column: 1122
+ card list width: 150
+ default: additional_credit_default(value, margin_code: "addcredit3")
+card field:
+ type: text
+ name: additional credit 4
+ description: Fourth credit for other things like flavor or mechanics.
+ show statistics: false
+ card list name: Additional Credit 4
+ card list column: 1123
+ card list width: 150
+ default: additional_credit_default(value, margin_code: "addcredit4")
+card field:
+ type: text
+ name: additional credit 5
+ description: Fifth credit for other things like flavor or mechanics.
+ show statistics: false
+ card list name: Additional Credit 5
+ card list column: 1124
+ card list width: 150
+ default: additional_credit_default(value, margin_code: "addcredit5")
+
+card field:
+ type: choice
+ name: additional credit brush
+ description: The brush icon next to the additional credit.
+ show statistics: false
+ card list name: Additional Credit Icon
+ card list column: 1130
+ card list width: 100
+ choice: none
+ include file: /magic-modules.mse-include/information/choices
+ default: additional_credit_brush_default(value, margin_code: "addbrush1")
+card field:
+ type: choice
+ name: additional credit brush 2
+ description: The brush icon next to the second additional credit.
+ show statistics: false
+ card list name: Additional Credit Icon 2
+ card list column: 1131
+ card list width: 100
+ choice: none
+ include file: /magic-modules.mse-include/information/choices
+ default: additional_credit_brush_default(value, margin_code: "addbrush2")
+card field:
+ type: choice
+ name: additional credit brush 3
+ description: The brush icon next to the third additional credit.
+ show statistics: false
+ card list name: Additional Credit Icon 3
+ card list column: 1132
+ card list width: 100
+ choice: none
+ include file: /magic-modules.mse-include/information/choices
+ default: additional_credit_brush_default(value, margin_code: "addbrush3")
+card field:
+ type: choice
+ name: additional credit brush 4
+ description: The brush icon next to the fourth additional credit.
+ show statistics: false
+ card list name: Additional Credit Icon 4
+ card list column: 1133
+ card list width: 100
+ choice: none
+ include file: /magic-modules.mse-include/information/choices
+ default: additional_credit_brush_default(value, margin_code: "addbrush4")
+card field:
+ type: choice
+ name: additional credit brush 5
+ description: The brush icon next to the fifth additional credit.
+ show statistics: false
+ card list name: Additional Credit Icon 5
+ card list column: 1134
+ card list width: 100
+ choice: none
+ include file: /magic-modules.mse-include/information/choices
+ default: additional_credit_brush_default(value, margin_code: "addbrush5")
+
+############################################################## The List icon
+card field:
+ type: choice
+ name: the list icon
+ description: The icon placed on cards from The List.
+ show statistics: false
+ card list name: The List Icon
+ card list column: 1140
+ card list width: 100
+ include file: /magic-modules.mse-include/information/choices_the_list
+ default: the_list_icon_default(value, margin_code: "listicon1")
+card field:
+ type: choice
+ name: the list icon 2
+ description: The second icon placed on cards from The List.
+ show statistics: false
+ card list name: The List Icon 2
+ card list column: 1141
+ card list width: 100
+ include file: /magic-modules.mse-include/information/choices_the_list
+ default: the_list_icon_default(value, margin_code: "listicon2")
+card field:
+ type: choice
+ name: the list icon 3
+ description: The third icon placed on cards from The List.
+ show statistics: false
+ card list name: The List Icon 3
+ card list column: 1142
+ card list width: 100
+ include file: /magic-modules.mse-include/information/choices_the_list
+ default: the_list_icon_default(value, margin_code: "listicon3")
+
+############################################################## Partition selector
+### Usually this is layered on top of the automated card number
card field:
type: choice
name: partition select
+ description: The partition index for card sorting.
show statistics: false
+ card list name: Partition Select
+ card list column: 620
+ card list width: 100
choice:
name: before normal
choice: 0
@@ -1458,50 +2650,385 @@ card field:
choice: You can change the flip point in the Set tab if you need to
choice: with option "Last main partition", which defaults to M
initial: A
- description: The partition index for card sorting.
card field:
type: text
name: partition
- script: partition_index()
- save value: false
-card field:
- type: text
- name: time modified
+ description: The partition for card sorting.
show statistics: false
save value: false
- script: card.time_modified
+ card list name: Partition
+ card list column: 621
+ card list width: 100
+ script: partition_index()
+
+############################################################## Card number section
+############################################################## Card number
+card field:
+ type: text
+ name: card number
+ description: The cardnumber of the card.
+ show statistics: false
+ save value: false
+ editable: false
+ card list visible: true
+ card list name: #
+ card list column: 0600
+ card list alignment: right
+ card list width: 90
+ script: card_number() + "/" + card_count()
+ sort script: rarity_partition_sort() + card_number_mom()
+
+card field:
+ type: text
+ name: custom card number
+ description: The custom cardnumber of the card, defined by the user.
+ show statistics: false
+ card list name: Custom #
+ card list column: 0602
+ card list alignment: right
+ card list width: 90
+
+############################################################## Card code text
+card field:
+ type: text
+ name: card code text
+ description: Additional text next to the set code, written by the user.
+ show statistics: false
+ card list name: Code Text
+ card list column: 1420
+ card list width: 150
+card field:
+ type: text
+ name: card code text 2
+ description: Additional text next to the second set code, written by the user.
+ show statistics: false
+ card list name: Code Text 2
+ card list column: 1421
+ card list width: 150
+ default: card.card_code_text
+card field:
+ type: text
+ name: card code text 3
+ description: Additional text next to the third set code, written by the user.
+ show statistics: false
+ card list name: Code Text 3
+ card list column: 1422
+ card list width: 150
+ default: card.card_code_text
+
+############################################################## Combined card code
+card field:
+ type: text
+ name: card code
+ description: The combined rarity letter, card number and card code text.
+ show statistics: false
+ save value: false
+ card list name: Card Code
+ card list column: 1400
+ card list width: 150
+ script: card_code_script(value)
+card field:
+ type: text
+ name: card code 2
+ description: The second combined rarity letter, card number and card code text.
+ show statistics: false
+ save value: false
+ card list name: Card Code 2
+ card list column: 1401
+ card list width: 150
+ script: card_code_script2(value)
+card field:
+ type: text
+ name: card code 3
+ description: The third combined rarity letter, card number and card code text.
+ show statistics: false
+ save value: false
+ card list name: Card Code 3
+ card list column: 1402
+ card list width: 150
+ script: card_code_script3(value)
+
+############################################################## Set language
+card field:
+ type: text
+ name: set language
+ description: The two letter set language line. Default value can be changed on the 'set info' tab.
+ show statistics: false
+ save value: false
+ editable: false
+ card list name: Set Language
+ card list column: 1320
+ card list width: 150
+ script: set_language_script(value, margin_code:"setlang1")
+card field:
+ type: text
+ name: set language 2
+ description: The second two letter set language line. Default value can be changed on the 'set info' tab.
+ show statistics: false
+ save value: false
+ editable: false
+ card list name: Set Language 2
+ card list column: 1321
+ card list width: 150
+ script: set_language_script(value, margin_code:"setlang2")
+card field:
+ type: text
+ name: set language 3
+ description: The third two letter set language line. Default value can be changed on the 'set info' tab.
+ show statistics: false
+ save value: false
+ editable: false
+ card list name: Set Language 3
+ card list column: 1322
+ card list width: 150
+ script: set_language_script(value, margin_code:"setlang3")
+
+############################################################## Set code
+card field:
+ type: text
+ name: set code
+ description: The three letter set code and set language line. Default values can be changed on the 'set info' tab.
+ show statistics: false
+ save value: false
+ editable: false
+ card list name: Set Code
+ card list column: 1300
+ card list width: 150
+ script: set_code_script(value, margin_code:"setcode1")
+card field:
+ type: text
+ name: set code 2
+ description: The second three letter set code and set language line. Default values can be changed on the 'set info' tab.
+ show statistics: false
+ save value: false
+ editable: false
+ card list name: Set Code 2
+ card list column: 1301
+ card list width: 150
+ script: set_code_script(value, margin_code:"setcode2")
+card field:
+ type: text
+ name: set code 3
+ description: The third three letter set code and set language line. Default values can be changed on the 'set info' tab.
+ show statistics: false
+ save value: false
+ editable: false
+ card list name: Set Code 3
+ card list column: 1302
+ card list width: 150
+ script: set_code_script(value, margin_code:"setcode3")
+
+############################################################## Copyright lines
+############################################################## Basic copyright
+card field:
+ type: text
+ name: copyright
+ description: The copyright of the card. Default value can be changed on the 'set info' tab.
+ show statistics: false
+ card list name: ©
+ card list column: 1200
+ card list width: 150
+ default: copyright_default(value, margin_code:"copyright1")
+card field:
+ type: text
+ name: copyright 2
+ description: The second copyright of the card. Default value can be changed on the 'set info' tab.
+ show statistics: false
+ card list name: © 2
+ card list column: 1201
+ card list width: 150
+ default: copyright_default(value, margin_code:"copyright2")
+card field:
+ type: text
+ name: copyright 3
+ description: The third copyright of the card. Default value can be changed on the 'set info' tab.
+ show statistics: false
+ card list name: © 3
+ card list column: 1202
+ card list width: 150
+ default: copyright_default(value, margin_code:"copyright3")
+
+############################################################## Automated copyright
+card field:
+ type: text
+ name: auto copyright
+ description: A mirror of set.copyright that can be toggled on or off.
+ show statistics: false
+ save value: false
+ editable: false
+ card list visible: false
+ card list name: Auto ©
+ card list column: 1260
+ card list alignment: right
+ card list width: 90
+ script: set.copyright
+card field:
+ type: text
+ name: auto copyright 2
+ description: A second mirror of set.copyright that can be toggled on or off.
+ show statistics: false
+ save value: false
+ editable: false
+ card list visible: false
+ card list name: Auto © 2
+ card list column: 1261
+ card list alignment: right
+ card list width: 90
+ script: set.copyright
+card field:
+ type: text
+ name: auto copyright 3
+ description: A third mirror of set.copyright that can be toggled on or off.
+ show statistics: false
+ save value: false
+ editable: false
+ card list visible: false
+ card list name: Auto © 3
+ card list column: 1262
+ card list alignment: right
+ card list width: 90
+ script: set.copyright
+
+############################################################## Secondary copyright for Universes Beyond
+card field:
+ type: text
+ name: secondary copyright
+ description: The additional copyright of the card, on Universes Beyond cards.
+ show statistics: false
+ card list name: © B
+ card list column: 1220
+ card list width: 150
+ default: secondary_copyright_default(value, margin_code:"copyrightb1")
+card field:
+ type: text
+ name: secondary copyright 2
+ description: The second additional copyright of the card, on Universes Beyond cards.
+ show statistics: false
+ card list name: © B 2
+ card list column: 1221
+ card list width: 150
+ default: secondary_copyright_default(value, margin_code:"copyrightb2")
+card field:
+ type: text
+ name: secondary copyright 3
+ description: The third additional copyright of the card, on Universes Beyond cards.
+ show statistics: false
+ card list name: © B 3
+ card list column: 1222
+ card list width: 150
+ default: secondary_copyright_default(value, margin_code:"copyrightb3")
+
+############################################################## Old frame copyright line
+card field:
+ type: text
+ name: copyright line
+ description: The combined copyright and cardnumber of the card. Default value can be changed on the 'set info' tab.
+ show statistics: false
+ save value: false
+ card list name: © Line
+ card list column: 1240
+ card list width: 150
+ script:
+ if set.automatic_card_numbers and set.automatic_copyright then
+ set.copyright + " " + card.card_number
+ else if set.automatic_card_numbers then
+ combined_editor(field1: card.copyright, separator: " ", field2: card.card_number)
+ else
+ forward_editor(field: card.copyright)
+card field:
+ type: text
+ name: copyright line 2
+ description: The second combined copyright and cardnumber of the card. Default value can be changed on the 'set info' tab.
+ show statistics: false
+ save value: false
+ card list name: © Line 2
+ card list column: 1241
+ card list width: 150
+ script:
+ if set.automatic_card_numbers and set.automatic_copyright then
+ set.copyright + " " + card.card_number
+ else if set.automatic_card_numbers then
+ combined_editor(field1: card.copyright_2, separator: " ", field2: card.card_number)
+ else
+ forward_editor(field: card.copyright_2)
+card field:
+ type: text
+ name: copyright line 3
+ description: The third combined copyright and cardnumber of the card. Default value can be changed on the 'set info' tab.
+ show statistics: false
+ save value: false
+ card list name: © Line 3
+ card list column: 1242
+ card list width: 150
+ script:
+ if set.automatic_card_numbers and set.automatic_copyright then
+ set.copyright + " " + card.card_number
+ else if set.automatic_card_numbers then
+ combined_editor(field1: card.copyright_3, separator: " ", field2: card.card_number)
+ else
+ forward_editor(field: card.copyright_3)
+
+############################################################## Mirror fields for sorting
+card field:
+ type: text
+ name: sorted notes
+ description: A mirror of card notes, to make it sortable. Only updates on data reload.
+ show statistics: false
+ multi line: true
+ save value: false
+ editable: false
+ card list visible: true
+ card list name: Card Notes
+ card list column: 1500
+ card list width: 150
+ script: card.notes
+
+card field:
+ type: text
+ name: template
+ description: The template of the card, to make it sortable.
+ show statistics: false
+ save value: false
+ editable: false
+ card list name: Template
+ card list column: 1600
+ card list width: 100
+ script: stylesheet.short_name
+
card field:
type: text
name: time created
+ description: A mirror of time created, to make it sortable. Only updates on data reload.
show statistics: false
save value: false
+ editable: false
+ card list name: Time Created
+ card list column: 1710
+ card list width: 150
script: card.time_created
+
card field:
type: text
- name: chapter text
+ name: time modified
+ description: A mirror of time modified, to make it sortable. Only updates on data reload.
show statistics: false
- multi line: true
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name, margin_code:"unknown")
- default: if not a_saga() then "" else if card.rule_text != "" then card.rule_text else "(" + saga_reminder() + ")"
- description: The saga reminder text
+ save value: false
+ editable: false
+ card list name: Time Modified
+ card list column: 1720
+ card list width: 150
+ script: card.time_modified
+
card field:
type: text
- name: chapter text 2
+ name: custom index
+ description: Linked to set.custom_index. Allows for sorting based on multiple criteria.
show statistics: false
- multi line: true
- script: text_filter(input: value, card_name: if set.alias_as_cardname and card.alias_2 != "" then card.alias_2 else card.name_2, margin_code:"unknown")
- default: if not b_saga() then "" else "(" + saga_reminderb() + ")"
- description: The saga reminder text
-card field:
- type: choice
- name: card stamp 2
- choice: standard
- choice: none
- choice: acorn
- choice: universes beyond
- choice: alchemy
- choice: alchemy old
- choice: custom
- default: set.default_stamp
- show statistics: false
- description: The stamp style for this card.
+ save value: false
+ editable: false
+ card list visible: true
+ card list name: Custom Index
+ card list column: 9999
+ card list alignment: right
+ card list width: 50
+ script: custom_index()
diff --git a/data/magic.mse-game/corners/diagonal.png b/data/magic.mse-game/corners/diagonal.png
new file mode 100644
index 000000000..82b645cea
Binary files /dev/null and b/data/magic.mse-game/corners/diagonal.png differ
diff --git a/data/magic.mse-game/corners/menu_choice_images b/data/magic.mse-game/corners/menu_choice_images
new file mode 100644
index 000000000..6a9ce0232
--- /dev/null
+++ b/data/magic.mse-game/corners/menu_choice_images
@@ -0,0 +1,5 @@
+choice images:
+ none: /magic.mse-game/corners/none.png
+ rounded and antialiased: /magic.mse-game/corners/rounded_antialiased.png
+ rounded: /magic.mse-game/corners/rounded.png
+ diagonal: /magic.mse-game/corners/diagonal.png
\ No newline at end of file
diff --git a/data/magic.mse-game/corners/none.png b/data/magic.mse-game/corners/none.png
new file mode 100644
index 000000000..588e700e4
Binary files /dev/null and b/data/magic.mse-game/corners/none.png differ
diff --git a/data/magic.mse-game/corners/rounded.png b/data/magic.mse-game/corners/rounded.png
new file mode 100644
index 000000000..0469904c7
Binary files /dev/null and b/data/magic.mse-game/corners/rounded.png differ
diff --git a/data/magic.mse-game/corners/rounded_antialiased.png b/data/magic.mse-game/corners/rounded_antialiased.png
new file mode 100644
index 000000000..fedee9a47
Binary files /dev/null and b/data/magic.mse-game/corners/rounded_antialiased.png differ
diff --git a/data/magic.mse-game/counters/+1+1.png b/data/magic.mse-game/counters/+1+1.png
new file mode 100644
index 000000000..cfce40835
Binary files /dev/null and b/data/magic.mse-game/counters/+1+1.png differ
diff --git a/data/magic.mse-game/counters/-1-1.png b/data/magic.mse-game/counters/-1-1.png
new file mode 100644
index 000000000..fd3bde486
Binary files /dev/null and b/data/magic.mse-game/counters/-1-1.png differ
diff --git a/data/magic.mse-game/counters/acorn.png b/data/magic.mse-game/counters/acorn.png
new file mode 100644
index 000000000..29204d5a7
Binary files /dev/null and b/data/magic.mse-game/counters/acorn.png differ
diff --git a/data/magic.mse-game/counters/aether.png b/data/magic.mse-game/counters/aether.png
new file mode 100644
index 000000000..abe749a29
Binary files /dev/null and b/data/magic.mse-game/counters/aether.png differ
diff --git a/data/magic.mse-game/counters/arrow.png b/data/magic.mse-game/counters/arrow.png
new file mode 100644
index 000000000..2626d77f8
Binary files /dev/null and b/data/magic.mse-game/counters/arrow.png differ
diff --git a/data/magic.mse-game/counters/awakening.png b/data/magic.mse-game/counters/awakening.png
new file mode 100644
index 000000000..fe7773334
Binary files /dev/null and b/data/magic.mse-game/counters/awakening.png differ
diff --git a/data/magic.mse-game/counters/bounty.png b/data/magic.mse-game/counters/bounty.png
new file mode 100644
index 000000000..c614f12b1
Binary files /dev/null and b/data/magic.mse-game/counters/bounty.png differ
diff --git a/data/magic.mse-game/counters/charge.png b/data/magic.mse-game/counters/charge.png
new file mode 100644
index 000000000..0454aa898
Binary files /dev/null and b/data/magic.mse-game/counters/charge.png differ
diff --git a/data/magic.mse-game/counters/corpse.png b/data/magic.mse-game/counters/corpse.png
new file mode 100644
index 000000000..1477e9920
Binary files /dev/null and b/data/magic.mse-game/counters/corpse.png differ
diff --git a/data/magic.mse-game/counters/deathtouch alt.png b/data/magic.mse-game/counters/deathtouch alt.png
new file mode 100644
index 000000000..021fe5076
Binary files /dev/null and b/data/magic.mse-game/counters/deathtouch alt.png differ
diff --git a/data/magic.mse-game/counters/deathtouch.png b/data/magic.mse-game/counters/deathtouch.png
new file mode 100644
index 000000000..dde70c70a
Binary files /dev/null and b/data/magic.mse-game/counters/deathtouch.png differ
diff --git a/data/magic.mse-game/counters/defender.png b/data/magic.mse-game/counters/defender.png
new file mode 100644
index 000000000..e71eb5e0b
Binary files /dev/null and b/data/magic.mse-game/counters/defender.png differ
diff --git a/data/magic.mse-game/counters/doom.png b/data/magic.mse-game/counters/doom.png
new file mode 100644
index 000000000..b2d23f684
Binary files /dev/null and b/data/magic.mse-game/counters/doom.png differ
diff --git a/data/magic.mse-game/counters/double strike.png b/data/magic.mse-game/counters/double strike.png
new file mode 100644
index 000000000..c2abaafa6
Binary files /dev/null and b/data/magic.mse-game/counters/double strike.png differ
diff --git a/data/magic.mse-game/counters/egg.png b/data/magic.mse-game/counters/egg.png
new file mode 100644
index 000000000..e786f9e78
Binary files /dev/null and b/data/magic.mse-game/counters/egg.png differ
diff --git a/data/magic.mse-game/counters/energy.png b/data/magic.mse-game/counters/energy.png
new file mode 100644
index 000000000..c8ea4e790
Binary files /dev/null and b/data/magic.mse-game/counters/energy.png differ
diff --git a/data/magic.mse-game/counters/experience.png b/data/magic.mse-game/counters/experience.png
new file mode 100644
index 000000000..8909df947
Binary files /dev/null and b/data/magic.mse-game/counters/experience.png differ
diff --git a/data/magic.mse-game/counters/finality.png b/data/magic.mse-game/counters/finality.png
new file mode 100644
index 000000000..83ad098e4
Binary files /dev/null and b/data/magic.mse-game/counters/finality.png differ
diff --git a/data/magic.mse-game/counters/first strike.png b/data/magic.mse-game/counters/first strike.png
new file mode 100644
index 000000000..0cd228254
Binary files /dev/null and b/data/magic.mse-game/counters/first strike.png differ
diff --git a/data/magic.mse-game/counters/flame.png b/data/magic.mse-game/counters/flame.png
new file mode 100644
index 000000000..c85ab1df6
Binary files /dev/null and b/data/magic.mse-game/counters/flame.png differ
diff --git a/data/magic.mse-game/counters/flood.png b/data/magic.mse-game/counters/flood.png
new file mode 100644
index 000000000..8f6199dc8
Binary files /dev/null and b/data/magic.mse-game/counters/flood.png differ
diff --git a/data/magic.mse-game/counters/flying.png b/data/magic.mse-game/counters/flying.png
new file mode 100644
index 000000000..ef00d63fd
Binary files /dev/null and b/data/magic.mse-game/counters/flying.png differ
diff --git a/data/magic.mse-game/counters/goaded.png b/data/magic.mse-game/counters/goaded.png
new file mode 100644
index 000000000..3b63c9455
Binary files /dev/null and b/data/magic.mse-game/counters/goaded.png differ
diff --git a/data/magic.mse-game/counters/haste.png b/data/magic.mse-game/counters/haste.png
new file mode 100644
index 000000000..6cc6ff159
Binary files /dev/null and b/data/magic.mse-game/counters/haste.png differ
diff --git a/data/magic.mse-game/counters/hexproof alt.png b/data/magic.mse-game/counters/hexproof alt.png
new file mode 100644
index 000000000..d8c0d00ab
Binary files /dev/null and b/data/magic.mse-game/counters/hexproof alt.png differ
diff --git a/data/magic.mse-game/counters/hexproof.png b/data/magic.mse-game/counters/hexproof.png
new file mode 100644
index 000000000..b7786dc44
Binary files /dev/null and b/data/magic.mse-game/counters/hexproof.png differ
diff --git a/data/magic.mse-game/counters/indestructible.png b/data/magic.mse-game/counters/indestructible.png
new file mode 100644
index 000000000..ee08a4e0d
Binary files /dev/null and b/data/magic.mse-game/counters/indestructible.png differ
diff --git a/data/magic.mse-game/counters/lifelink alt.png b/data/magic.mse-game/counters/lifelink alt.png
new file mode 100644
index 000000000..40acf1bf0
Binary files /dev/null and b/data/magic.mse-game/counters/lifelink alt.png differ
diff --git a/data/magic.mse-game/counters/lifelink.png b/data/magic.mse-game/counters/lifelink.png
new file mode 100644
index 000000000..ae8e976ce
Binary files /dev/null and b/data/magic.mse-game/counters/lifelink.png differ
diff --git a/data/magic.mse-game/counters/lore.png b/data/magic.mse-game/counters/lore.png
new file mode 100644
index 000000000..30b578553
Binary files /dev/null and b/data/magic.mse-game/counters/lore.png differ
diff --git a/data/magic.mse-game/counters/menace.png b/data/magic.mse-game/counters/menace.png
new file mode 100644
index 000000000..63b6bc433
Binary files /dev/null and b/data/magic.mse-game/counters/menace.png differ
diff --git a/data/magic.mse-game/counters/menu_choice_images b/data/magic.mse-game/counters/menu_choice_images
new file mode 100644
index 000000000..db8f99f3c
--- /dev/null
+++ b/data/magic.mse-game/counters/menu_choice_images
@@ -0,0 +1,50 @@
+choice images:
+ none: /magic.mse-game/counters/none.png
+ custom: /magic.mse-game/counters/none.png
+ +1/+1: /magic.mse-game/counters/+1+1.png
+ -1/-1: /magic.mse-game/counters/-1-1.png
+ acorn: /magic.mse-game/counters/acorn.png
+ aether: /magic.mse-game/counters/aether.png
+ arrow: /magic.mse-game/counters/arrow.png
+ awakening: /magic.mse-game/counters/awakening.png
+ bounty: /magic.mse-game/counters/bounty.png
+ charge: /magic.mse-game/counters/charge.png
+ corpse: /magic.mse-game/counters/corpse.png
+ deathtouch alt: /magic.mse-game/counters/deathtouch alt.png
+ deathtouch: /magic.mse-game/counters/deathtouch.png
+ defender: /magic.mse-game/counters/defender.png
+ doom: /magic.mse-game/counters/doom.png
+ double strike: /magic.mse-game/counters/double strike.png
+ egg: /magic.mse-game/counters/egg.png
+ energy: /magic.mse-game/counters/energy.png
+ experience: /magic.mse-game/counters/experience.png
+ finality: /magic.mse-game/counters/finality.png
+ first strike: /magic.mse-game/counters/first strike.png
+ flame: /magic.mse-game/counters/flame.png
+ flood: /magic.mse-game/counters/flood.png
+ flying: /magic.mse-game/counters/flying.png
+ goaded: /magic.mse-game/counters/goaded.png
+ haste: /magic.mse-game/counters/haste.png
+ hexproof alt: /magic.mse-game/counters/hexproof alt.png
+ hexproof: /magic.mse-game/counters/hexproof.png
+ indestructible: /magic.mse-game/counters/indestructible.png
+ lifelink alt: /magic.mse-game/counters/lifelink alt.png
+ lifelink: /magic.mse-game/counters/lifelink.png
+ lore: /magic.mse-game/counters/lore.png
+ menace: /magic.mse-game/counters/menace.png
+ oil: /magic.mse-game/counters/oil.png
+ omen: /magic.mse-game/counters/omen.png
+ poison: /magic.mse-game/counters/poison.png
+ rad: /magic.mse-game/counters/rad.png
+ reach: /magic.mse-game/counters/reach.png
+ shield: /magic.mse-game/counters/shield.png
+ solved: /magic.mse-game/counters/solved.png
+ spore: /magic.mse-game/counters/spore.png
+ stun: /magic.mse-game/counters/stun.png
+ suspected: /magic.mse-game/counters/suspected.png
+ ticket: /magic.mse-game/counters/ticket.png
+ time: /magic.mse-game/counters/time.png
+ trample: /magic.mse-game/counters/trample.png
+ unlock: /magic.mse-game/counters/unlock.png
+ vigilance: /magic.mse-game/counters/vigilance.png
+ void: /magic.mse-game/counters/void.png
\ No newline at end of file
diff --git a/data/magic.mse-game/counters/none.png b/data/magic.mse-game/counters/none.png
new file mode 100644
index 000000000..51206bfd7
Binary files /dev/null and b/data/magic.mse-game/counters/none.png differ
diff --git a/data/magic.mse-game/counters/oil.png b/data/magic.mse-game/counters/oil.png
new file mode 100644
index 000000000..f48042bcc
Binary files /dev/null and b/data/magic.mse-game/counters/oil.png differ
diff --git a/data/magic.mse-game/counters/omen.png b/data/magic.mse-game/counters/omen.png
new file mode 100644
index 000000000..bf2bc4f80
Binary files /dev/null and b/data/magic.mse-game/counters/omen.png differ
diff --git a/data/magic.mse-game/counters/poison.png b/data/magic.mse-game/counters/poison.png
new file mode 100644
index 000000000..3a74fd515
Binary files /dev/null and b/data/magic.mse-game/counters/poison.png differ
diff --git a/data/magic.mse-game/counters/rad.png b/data/magic.mse-game/counters/rad.png
new file mode 100644
index 000000000..a92d9e3df
Binary files /dev/null and b/data/magic.mse-game/counters/rad.png differ
diff --git a/data/magic.mse-game/counters/reach.png b/data/magic.mse-game/counters/reach.png
new file mode 100644
index 000000000..2bcebbfa7
Binary files /dev/null and b/data/magic.mse-game/counters/reach.png differ
diff --git a/data/magic.mse-game/counters/shield.png b/data/magic.mse-game/counters/shield.png
new file mode 100644
index 000000000..e8af7a950
Binary files /dev/null and b/data/magic.mse-game/counters/shield.png differ
diff --git a/data/magic.mse-game/counters/solved.png b/data/magic.mse-game/counters/solved.png
new file mode 100644
index 000000000..1239cbb66
Binary files /dev/null and b/data/magic.mse-game/counters/solved.png differ
diff --git a/data/magic.mse-game/counters/spore.png b/data/magic.mse-game/counters/spore.png
new file mode 100644
index 000000000..05c09bb99
Binary files /dev/null and b/data/magic.mse-game/counters/spore.png differ
diff --git a/data/magic.mse-game/counters/stun.png b/data/magic.mse-game/counters/stun.png
new file mode 100644
index 000000000..cb46b3821
Binary files /dev/null and b/data/magic.mse-game/counters/stun.png differ
diff --git a/data/magic.mse-game/counters/suspected.png b/data/magic.mse-game/counters/suspected.png
new file mode 100644
index 000000000..0343d02d7
Binary files /dev/null and b/data/magic.mse-game/counters/suspected.png differ
diff --git a/data/magic.mse-game/counters/ticket.png b/data/magic.mse-game/counters/ticket.png
new file mode 100644
index 000000000..0817be5f5
Binary files /dev/null and b/data/magic.mse-game/counters/ticket.png differ
diff --git a/data/magic.mse-game/counters/time.png b/data/magic.mse-game/counters/time.png
new file mode 100644
index 000000000..9f01d2288
Binary files /dev/null and b/data/magic.mse-game/counters/time.png differ
diff --git a/data/magic.mse-game/counters/trample.png b/data/magic.mse-game/counters/trample.png
new file mode 100644
index 000000000..2e53f5382
Binary files /dev/null and b/data/magic.mse-game/counters/trample.png differ
diff --git a/data/magic.mse-game/counters/unlock.png b/data/magic.mse-game/counters/unlock.png
new file mode 100644
index 000000000..a55cf06dc
Binary files /dev/null and b/data/magic.mse-game/counters/unlock.png differ
diff --git a/data/magic.mse-game/counters/vigilance.png b/data/magic.mse-game/counters/vigilance.png
new file mode 100644
index 000000000..e53d4cd5c
Binary files /dev/null and b/data/magic.mse-game/counters/vigilance.png differ
diff --git a/data/magic.mse-game/counters/void.png b/data/magic.mse-game/counters/void.png
new file mode 100644
index 000000000..cb5997d19
Binary files /dev/null and b/data/magic.mse-game/counters/void.png differ
diff --git a/data/magic.mse-game/icons/center-1-line-text.png b/data/magic.mse-game/icons/center-1-line-text.png
new file mode 100644
index 000000000..61e1e9a80
Binary files /dev/null and b/data/magic.mse-game/icons/center-1-line-text.png differ
diff --git a/data/magic.mse-game/icons/center-2-line-text.png b/data/magic.mse-game/icons/center-2-line-text.png
new file mode 100644
index 000000000..79e640e83
Binary files /dev/null and b/data/magic.mse-game/icons/center-2-line-text.png differ
diff --git a/data/magic.mse-game/icons/center-3-line-text.png b/data/magic.mse-game/icons/center-3-line-text.png
new file mode 100644
index 000000000..294e33514
Binary files /dev/null and b/data/magic.mse-game/icons/center-3-line-text.png differ
diff --git a/data/magic.mse-game/icons/choice-if.png b/data/magic.mse-game/icons/choice-if.png
new file mode 100644
index 000000000..b71833d8d
Binary files /dev/null and b/data/magic.mse-game/icons/choice-if.png differ
diff --git a/data/magic.mse-game/icons/choice-no.png b/data/magic.mse-game/icons/choice-no.png
new file mode 100644
index 000000000..8ce4797dd
Binary files /dev/null and b/data/magic.mse-game/icons/choice-no.png differ
diff --git a/data/magic.mse-game/icons/choice-yes.png b/data/magic.mse-game/icons/choice-yes.png
new file mode 100644
index 000000000..b873f4f4d
Binary files /dev/null and b/data/magic.mse-game/icons/choice-yes.png differ
diff --git a/data/magic.mse-game/information/art.png b/data/magic.mse-game/information/art.png
new file mode 100644
index 000000000..91fbdbcf9
Binary files /dev/null and b/data/magic.mse-game/information/art.png differ
diff --git a/data/magic.mse-game/information/art_old.png b/data/magic.mse-game/information/art_old.png
new file mode 100644
index 000000000..476329b8d
Binary files /dev/null and b/data/magic.mse-game/information/art_old.png differ
diff --git a/data/magic.mse-game/information/flavor.png b/data/magic.mse-game/information/flavor.png
new file mode 100644
index 000000000..5b175b1ad
Binary files /dev/null and b/data/magic.mse-game/information/flavor.png differ
diff --git a/data/magic.mse-game/information/mechanics.png b/data/magic.mse-game/information/mechanics.png
new file mode 100644
index 000000000..f2f5b0168
Binary files /dev/null and b/data/magic.mse-game/information/mechanics.png differ
diff --git a/data/magic.mse-game/information/menu_choice_images b/data/magic.mse-game/information/menu_choice_images
new file mode 100644
index 000000000..66b0b17aa
--- /dev/null
+++ b/data/magic.mse-game/information/menu_choice_images
@@ -0,0 +1,11 @@
+choice images:
+ none: /magic.mse-game/information/none.png
+ art: /magic.mse-game/information/art.png
+ art old: /magic.mse-game/information/art_old.png
+ flavor: /magic.mse-game/information/flavor.png
+ mechanics: /magic.mse-game/information/mechanics.png
+ template: /magic.mse-game/information/template.png
+ wide art: /magic.mse-game/information/art.png
+ wide flavor: /magic.mse-game/information/flavor.png
+ wide mechanics: /magic.mse-game/information/mechanics.png
+ wide template: /magic.mse-game/information/template.png
\ No newline at end of file
diff --git a/data/magic.mse-game/information/menu_choice_images_the_list b/data/magic.mse-game/information/menu_choice_images_the_list
new file mode 100644
index 000000000..65bfdb7d1
--- /dev/null
+++ b/data/magic.mse-game/information/menu_choice_images_the_list
@@ -0,0 +1,3 @@
+choice images:
+ none: /magic.mse-game/information/none.png
+ the list: /magic.mse-game/information/the_list.png
\ No newline at end of file
diff --git a/data/magic.mse-game/information/none.png b/data/magic.mse-game/information/none.png
new file mode 100644
index 000000000..ecd2fd7ff
Binary files /dev/null and b/data/magic.mse-game/information/none.png differ
diff --git a/data/magic.mse-game/information/template.png b/data/magic.mse-game/information/template.png
new file mode 100644
index 000000000..58819b3f1
Binary files /dev/null and b/data/magic.mse-game/information/template.png differ
diff --git a/data/magic.mse-game/information/the_list.png b/data/magic.mse-game/information/the_list.png
new file mode 100644
index 000000000..3186e018b
Binary files /dev/null and b/data/magic.mse-game/information/the_list.png differ
diff --git a/data/magic.mse-game/language b/data/magic.mse-game/language
index 1e3eabe44..309ec049c 100644
--- a/data/magic.mse-game/language
+++ b/data/magic.mse-game/language
@@ -1323,7 +1323,7 @@ localized_phy_reminder :=
else if input == "ru" then russian_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple)
else if input == "ko" then korean_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple)
else if input == "zht" then chinese_traditional_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple)
- else english_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple))
+ else english_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple))
}
english_phy_reminder :=
{
diff --git a/data/magic.mse-game/language_map b/data/magic.mse-game/language_map
index 1d8c1d9b9..a9f61b6e8 100644
--- a/data/magic.mse-game/language_map
+++ b/data/magic.mse-game/language_map
@@ -60,10 +60,10 @@ languages := [
is_devoid : match@(match: "(?i)Fahl")
mana_symbol_production : remove_tag@(tag:"", match:"]*>[^<]+<\\/sym[^>]*>")
- gold_mana_production : remove_tag@(tag:"", match:"einer beliebigen Farbe|unterschiedlichen Farben|beliebigen Kombination von Farben")
+ gold_mana_production : remove_tag@(tag:"", match:"einer beliebigen Farbe|unterschiedlichen Farben|beliebigen Kombination von Farben")
chosen_mana_production : remove_tag@(tag:"", match:"jener Farbe|bestimmten Farben?")
- triggered_cost_filter : remove_tag@(tag:" ?(falls|wenn) ")
+ triggered_cost_filter : remove_tag@(tag:" ?(falls|wenn) ")
is_white : match@(match: "(?i)weiß(e|em|en|er|es)?")
is_blue : match@(match: "(?i)blau(e|em|en|er|es)?")
@@ -793,10 +793,10 @@ languages := [
is_devoid : match@(match: "(?i)Devoid")
mana_symbol_production : remove_tag@(tag:"", match:"]*>[^<]+<\\/sym[^>]*>")
- gold_mana_production : remove_tag@(tag:"", match:"(any( one)?|different|combination of) color")
+ gold_mana_production : remove_tag@(tag:"", match:"(any( one)?|different|combination of) color")
chosen_mana_production : remove_tag@(tag:"", match:"that color|chosen color")
- triggered_cost_filter : remove_tag@(tag:" ?(when|if|to) ")
+ triggered_cost_filter : remove_tag@(tag:" ?(when|if|to) ")
is_white : match@(match: "(?i)white")
is_blue : match@(match: "(?i)blue")
@@ -1542,10 +1542,10 @@ languages := [
is_devoid : match@(match: "(?i)Vacío")
mana_symbol_production : remove_tag@(tag:"", match:"]*>[^<]+<\\/sym[^>]*>")
- gold_mana_production : remove_tag@(tag:"", match:"cualquier (combinación de )?color|colores distintos")
+ gold_mana_production : remove_tag@(tag:"", match:"cualquier (combinación de )?color|colores distintos")
chosen_mana_production : remove_tag@(tag:"", match:"ese color|color(es)? elegido")
- triggered_cost_filter : remove_tag@(tag:" ?(si|cuando) ")
+ triggered_cost_filter : remove_tag@(tag:" ?(si|cuando) ")
is_white : match@(match: "(?i)blanc(o|a)")
is_blue : match@(match: "(?i)azul")
@@ -2261,10 +2261,10 @@ languages := [
is_devoid : match@(match: "(?i)Carence")
mana_symbol_production : remove_tag@(tag:"", match:"]*>[^<]+<\\/sym[^>]*>")
- gold_mana_production : remove_tag@(tag:"", match:"couleur de votre choix|couleurs différentes|combinaison de mana coloré de votre choix")
+ gold_mana_production : remove_tag@(tag:"", match:"couleur de votre choix|couleurs différentes|combinaison de mana coloré de votre choix")
chosen_mana_production : remove_tag@(tag:"", match:"cette couleur|couleurs? choisie")
- triggered_cost_filter : remove_tag@(tag:" ?(si|quand) ")
+ triggered_cost_filter : remove_tag@(tag:" ?(si|quand) ")
is_white : match@(match: "(?i)blanc(he)?")
is_blue : match@(match: "(?i)bleue?")
@@ -2983,10 +2983,10 @@ languages := [
is_devoid : match@(match: "(?i)Vacuità")
mana_symbol_production : remove_tag@(tag:"", match:"]*>[^<]+<\\/sym[^>]*>")
- gold_mana_production : remove_tag@(tag:"", match:"qualsiasi colore|colori diversi|qualsiasi combinazione di colori")
+ gold_mana_production : remove_tag@(tag:"", match:"qualsiasi colore|colori diversi|qualsiasi combinazione di colori")
chosen_mana_production : remove_tag@(tag:"", match:"quel colore|color[ei] scelt[oi]")
- triggered_cost_filter : remove_tag@(tag:" ?(se|quando) ")
+ triggered_cost_filter : remove_tag@(tag:" ?(se|quando) ")
is_white : match@(match: "(?i)bianc(o|a)")
is_blue : match@(match: "(?i)blu")
@@ -3704,10 +3704,10 @@ languages := [
is_devoid : match@(match: "(?i)欠色")
mana_symbol_production : remove_tag@(tag:"[^(\n|^).。]*を加える", match:"]*>[^<]+<\\/sym[^>]*>")
- gold_mana_production : remove_tag@(tag:"[^(\n|^).。]*を加える", match:"好きな色1色のマナ|異なる色のマナ|望む色の組み合わせのマナ")
+ gold_mana_production : remove_tag@(tag:"[^(\n|^).。]*を加える", match:"好きな色1色のマナ|異なる色のマナ|望む色の組み合わせのマナ")
chosen_mana_production : remove_tag@(tag:"[^(\n|^).。]*を加える", match:"その色のマナ|その選ばれた色のマナ")
- triggered_cost_filter : remove_tag@(tag:"(そうしたとき|そうしたなら)")
+ triggered_cost_filter : remove_tag@(tag:"(そうしたとき|そうしたなら)")
is_white : match@(match: "(?i)白")
is_blue : match@(match: "(?i)青")
@@ -4493,10 +4493,10 @@ languages := [
is_devoid : match@(match: "(?i)결여")
mana_symbol_production : remove_tag@(tag:"[^(\n|^).]* 추가한다", match:"]*>[^<]+<\\/sym[^>]*>")
- gold_mana_production : remove_tag@(tag:"[^(\n|^).]* 추가한다", match:"원하는 (한 가지 )?색의 마나 [두한] 개|서로 다른 색인 마나|원하는 색의 조합으로 마나")
+ gold_mana_production : remove_tag@(tag:"[^(\n|^).]* 추가한다", match:"원하는 (한 가지 )?색의 마나 [두한] 개|서로 다른 색인 마나|원하는 색의 조합으로 마나")
chosen_mana_production : remove_tag@(tag:"[^(\n|^).]* 추가한다", match:"그 색의|선택된 색의")
- triggered_cost_filter : remove_tag@(tag:" ?(그렇게 한다면|그렇게 할 때)")
+ triggered_cost_filter : remove_tag@(tag:" ?(그렇게 한다면|그렇게 할 때)")
is_white : match@(match: "(?i)백색")
is_blue : match@(match: "(?i)청색")
@@ -5171,10 +5171,10 @@ languages := [
is_devoid : match@(match: "(?i)Desprovido")
mana_symbol_production : remove_tag@(tag:"", match:"]*>[^<]+<\\/sym[^>]*>")
- gold_mana_production : remove_tag@(tag:"", match:"qualquer cor|cores diferentes")
+ gold_mana_production : remove_tag@(tag:"", match:"qualquer cor|cores diferentes")
chosen_mana_production : remove_tag@(tag:"", match:"daquela cor|cor(es)? escolhidas?")
- triggered_cost_filter : remove_tag@(tag:" ?(quando|se) ")
+ triggered_cost_filter : remove_tag@(tag:" ?(quando|se) ")
is_white : match@(match: "(?i)branc(o|a)")
is_blue : match@(match: "(?i)azul")
@@ -5890,10 +5890,10 @@ languages := [
is_devoid : match@(match: "(?i)Лишение")
mana_symbol_production : remove_tag@(tag:"", match:"]*>[^<]+<\\/sym[^>]*>")
- gold_mana_production : remove_tag@(tag:"", match:"любого цвета?|различных цветов")
+ gold_mana_production : remove_tag@(tag:"", match:"любого цвета?|различных цветов")
chosen_mana_production : remove_tag@(tag:"", match:"того цвета?|выбранн(ого|ый|ые) цвета?")
- triggered_cost_filter : remove_tag@(tag:" ?(когда|если) ")
+ triggered_cost_filter : remove_tag@(tag:" ?(когда|если) ")
is_white : match@(match: "(?i)бел\\w\{1,3\}")
is_blue : match@(match: "(?i)син\\w\{1,3\}")
@@ -6591,10 +6591,10 @@ languages := [
is_devoid : match@(match: "(?i)虚色")
mana_symbol_production : remove_tag@(tag:"", match:"]*>[^<]+<\\/sym[^>]*>")
- gold_mana_production : remove_tag@(tag:"", match:"意颜色的法术力|不同颜色的法术力|其颜色组合由你选择")
+ gold_mana_production : remove_tag@(tag:"", match:"意颜色的法术力|不同颜色的法术力|其颜色组合由你选择")
chosen_mana_production : remove_tag@(tag:"", match:"(选颜|该)色的法术力")
- triggered_cost_filter : remove_tag@(tag:"(当你如此作时|若你如此作)")
+ triggered_cost_filter : remove_tag@(tag:"(当你如此作时|若你如此作)")
is_white : match@(match: "(?i)白色")
is_blue : match@(match: "(?i)蓝色")
@@ -7294,10 +7294,10 @@ languages := [
is_devoid : match@(match: "(?i)虛色")
mana_symbol_production : remove_tag@(tag:"", match:"]*>[^<]+<\\/sym[^>]*>")
- gold_mana_production : remove_tag@(tag:"", match:"任意顏色的魔法力|不同顏色的魔法力|其顏色組合由你選擇")
+ gold_mana_production : remove_tag@(tag:"", match:"任意顏色的魔法力|不同顏色的魔法力|其顏色組合由你選擇")
chosen_mana_production : remove_tag@(tag:"", match:"(選顏|該)色的魔法力")
- triggered_cost_filter : remove_tag@(tag:"(當你如此作時|若你如此作)")
+ triggered_cost_filter : remove_tag@(tag:"(當你如此作時|若你如此作)")
is_white : match@(match: "(?i)白色")
is_blue : match@(match: "(?i)藍色")
diff --git a/data/magic.mse-game/loyalty/defense.png b/data/magic.mse-game/loyalty/defense.png
new file mode 100644
index 000000000..610f43cca
Binary files /dev/null and b/data/magic.mse-game/loyalty/defense.png differ
diff --git a/data/magic.mse-game/loyalty/loyalty cost +.png b/data/magic.mse-game/loyalty/loyalty cost +.png
new file mode 100644
index 000000000..c780f92f0
Binary files /dev/null and b/data/magic.mse-game/loyalty/loyalty cost +.png differ
diff --git a/data/magic.mse-game/loyalty/loyalty cost -.png b/data/magic.mse-game/loyalty/loyalty cost -.png
new file mode 100644
index 000000000..deeb88153
Binary files /dev/null and b/data/magic.mse-game/loyalty/loyalty cost -.png differ
diff --git a/data/magic.mse-game/loyalty/loyalty cost 0.png b/data/magic.mse-game/loyalty/loyalty cost 0.png
new file mode 100644
index 000000000..b839f2974
Binary files /dev/null and b/data/magic.mse-game/loyalty/loyalty cost 0.png differ
diff --git a/data/magic.mse-game/loyalty/loyalty cost anti ult.png b/data/magic.mse-game/loyalty/loyalty cost anti ult.png
new file mode 100644
index 000000000..7976eeda7
Binary files /dev/null and b/data/magic.mse-game/loyalty/loyalty cost anti ult.png differ
diff --git a/data/magic.mse-game/loyalty/loyalty cost shadow.png b/data/magic.mse-game/loyalty/loyalty cost shadow.png
new file mode 100644
index 000000000..656f1c5cc
Binary files /dev/null and b/data/magic.mse-game/loyalty/loyalty cost shadow.png differ
diff --git a/data/magic.mse-game/loyalty/loyalty cost ult.png b/data/magic.mse-game/loyalty/loyalty cost ult.png
new file mode 100644
index 000000000..0f7d1d9e2
Binary files /dev/null and b/data/magic.mse-game/loyalty/loyalty cost ult.png differ
diff --git a/data/magic.mse-game/loyalty/loyalty.png b/data/magic.mse-game/loyalty/loyalty.png
new file mode 100644
index 000000000..25c30aa4c
Binary files /dev/null and b/data/magic.mse-game/loyalty/loyalty.png differ
diff --git a/data/magic.mse-game/loyalty/menu_choice_images b/data/magic.mse-game/loyalty/menu_choice_images
new file mode 100644
index 000000000..0c79fb348
--- /dev/null
+++ b/data/magic.mse-game/loyalty/menu_choice_images
@@ -0,0 +1,5 @@
+choice images:
+ none: /magic.mse-game/loyalty/none.png
+ loyalty: /magic.mse-game/loyalty/loyalty.png
+ defense: /magic.mse-game/loyalty/defense.png
+ shadow: /magic.mse-game/loyalty/shadow.png
\ No newline at end of file
diff --git a/data/magic.mse-game/loyalty/menu_choice_images_cost b/data/magic.mse-game/loyalty/menu_choice_images_cost
new file mode 100644
index 000000000..58460a8d4
--- /dev/null
+++ b/data/magic.mse-game/loyalty/menu_choice_images_cost
@@ -0,0 +1,8 @@
+choice images:
+ none: /magic.mse-game/loyalty/none.png
+ anti ult: /magic.mse-game/loyalty/loyalty cost anti ult.png
+ +: /magic.mse-game/loyalty/loyalty cost +.png
+ 0: /magic.mse-game/loyalty/loyalty cost 0.png
+ -: /magic.mse-game/loyalty/loyalty cost -.png
+ ult: /magic.mse-game/loyalty/loyalty cost ult.png
+ shadow: /magic.mse-game/loyalty/loyalty cost shadow.png
\ No newline at end of file
diff --git a/data/magic.mse-game/loyalty/none.png b/data/magic.mse-game/loyalty/none.png
new file mode 100644
index 000000000..4a2ee7567
Binary files /dev/null and b/data/magic.mse-game/loyalty/none.png differ
diff --git a/data/magic.mse-game/loyalty/shadow.png b/data/magic.mse-game/loyalty/shadow.png
new file mode 100644
index 000000000..467c14000
Binary files /dev/null and b/data/magic.mse-game/loyalty/shadow.png differ
diff --git a/data/magic.mse-game/script b/data/magic.mse-game/script
index 2f90f7e7a..15b9493a2 100644
--- a/data/magic.mse-game/script
+++ b/data/magic.mse-game/script
@@ -1,75 +1,462 @@
-############################################################## Localization
+#### Localization
+#### Common files
+#### Versioning
+#### Common filters
+#### Utility scripts
+#### Card characteristics
+#### Sorting mana symbols
+#### Mainframe mana
+#### Determine card color
+#### Card number
+#### Statistics utilities
+#### Keyword utilities
+#### The text box
+#### Face code
+#### Level margins
+#### Saga witchery
+#### Typelines
+#### Modal DFC flag hints
+#### Flavor bar
+#### Watermarks
+#### Other scripted fields
+#### Custom corner symbols
+#### Custom fonts
+#### Custom rarity symbol
+#### Card column sorting
+#### Custom index
+#### Skeleton generator
+############################################################## Localization
include file: language
-
-# needed by all style files anyway
-include file: /magic-blends.mse-include/new-blends
+############################################################## Common files
include file: statistics_script
-
-############################################################## version check
-version_date := {"2024-05-10 Mainframe 1.3.a Showcase Catchup: Adventures"}
+include file: /magic-blends.mse-include/new-blends
+############################################################## Versioning
+version_date := {"2024-05-24 Mainframe 1.3.b Showcase Catchup: Include Modules"}
version := version_date
-############################################################## Sorting mana symbols
+############################################################## Common filters
+############################################################## Utility
+comma_count := filter_text@(match:",")
+semicolon_count := filter_text@(match:";")
-# correctly sort a mana symbol (no guild mana)
-mana_sort := sort_text@(order: "\\?XYZI[0123456789]VLHSFCAIE(WUBRG)")
-# correctly sort wedge mana
+split_comma := split_text@(match: " *, *")
+line_count := split_text@(match:"\n+",include_empty:false) + length
+
+word_count := break_text@(match:"[^[:space:]]+") + length
+
+has_png := contains@(match:".png")
+has_none := contains@(match: "none")
+
+remove_comma := replace@(match: ",", replace: "")
+long_dash := replace@(match:"-", replace:"—")
+softline_ripper := replace@(match:"?soft-line>", replace:"")
+un_png := replace@(match:".png", replace: "")
+to_title := replace@(match:"(^| )([A-z])([^ ]*)", replace:{_1+ to_upper(_2) + to_lower(_3)})
+to_sentence := replace@(match:"(^|\n)([A-z])([^\n]*)", replace:{_1+ to_upper(_2) + to_lower(_3)})
+remove_zwsp := replace@(match:"", replace:"")
+
+#### Replace spaces by a spacer
+separate_words := remove_tags + trim + replace@(match:" ", replace: {spacer})
+zwsp := "" # this is a zero-width space not blank
+
+############################################################## Type
+is_creature := match@(match: "(?i)Creature")
+is_creaturish := match@(match: "(?i)(Creature|Vehicle)")
+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_aura := match@(match: "(?i)Aura")
+is_spell := match@(match: "(?i)Instant|Sorcery")
+is_sorcery := match@(match: "(?i)Sorcery")
+is_instant := match@(match: "(?i)Instant")
+is_planeswalker := match@(match: "(?i)Planeswalker")
+is_legendary := match@(match: "(?i)Legendary")
+match_vehicle := contains@(match:"Vehicle")
+match_snow := contains@(match:"Snow")
+
+############################################################## Text
+is_modal := contains@(match:"")
+
+############################################################## Utility scripts
+reverse_elements := {for element from 1 to length(input) do input[length(input) - element] + " "}
+clamp := {
+ number := to_number(input)
+ if number < minimum then minimum
+ else if number > maximum then maximum
+ else number
+}
+round_up := {to_int(0.99999999999998+input)} #### 0.99999999999999 == 1, leave the 8
+round_near := {to_int(0.5+input)}
+#### reads from a comma separated list like an array
+pull_comma_array := {
+ array := split_text(input, match:divider)
+ length := length(comma_count(input))
+ ending := to_number(end)
+ if (cell >= (length + (1-ending)))
+ then default
+ else if array[cell] == "" or array[cell] == nil or array[cell] == "-"
+ then default
+ else array[cell]
+}@(default:0, end: 1, divider:",", cell:0)
+#### standard is pull_comma_array("X,Y,Z,", cell: 0)
+#### returns "X"
+#### ending true for coordinates (requires a final divider to ensure element is complete)
+#### ending false for moving (doesn't require divider, moving 1 then 11 is fine)
+#### divider is "," by default, can change
+#### can also add default to return in case of errors
+
+#### a workaround for the crop offset function that doesn't appear to work
+#### slice_crop(input:image, height:(final height), width:(final width), distance:(length from bottom to top of final image))
+slice_crop := {
+ img := flip_vertical(input)
+ img := crop(img, height:distance, width:width, offset_x:0, offset_y:0)
+ img := flip_vertical(img)
+ img
+ if(height != 0 and height != distance) then
+ img := crop(img, height:height, width:width, offset_x:0, offset_y:0)
+ img
+}@(height:0)
+#### a crop function that checks bounds first to avoid a crash
+crop_safe :=
+{
+ if offset_x < 0
+ or offset_y < 0
+ or width < 1
+ or height < 1
+ or offset_x + width > max_x
+ or offset_y + height > max_y
+ then ""
+ else crop(input, offset_x: offset_x, offset_y: offset_y, width: width, height: height)
+}
+#### pad a string from the front or back or both idk i'm not your dad
+fill_len := {
+ output := to_string(input)
+ if output == "" then output := "0"
+ fill := max(0,fill_to - length(output))
+ for x from 1 to fill do output := lead + output + follow;
+ output
+}@(fill_to:2, lead:"", follow:"")
+
+#### simple array join function
+join := {
+ if i >= length(input) then ""
+ else if i == length(input)-1 then input[i]
+ else input[i]+sep+join(input, i: i+1, sep: sep)
+}@(i: 0, sep:"")
+#### join array into list format
+join_list := {
+ string := ""
+ if length(input) == 2 then spacer := " "
+ if length(input) == 1 then closing := ""
+ for x from 0 to length(input)-1 do
+ string := string + (if x == length(input)-1 then closing else "") + input[x] + (if x == length(input)-1 then "" else spacer)
+ string
+}@(spacer:", ", closing:"and ")
+
+#### workarounds cause position() is broken for text arrays
+#### where reasonable, you can use position(of:["str"], in:[["list"], ["of"], ["str"]]) instead
+contains_element := {
+ if input == [] then false else length(filter_list(input, filter:{input == element})) > 0
+}
+ar_position := {
+ pos := -1
+ for x from 0 to length(in)-1 do (
+ if in[x] == of then pos := x;
+ )
+ pos
+}
+includes := {ar_position(of:input in:array) != -1}
+unique_elements := {
+ e1 := []
+ e2 := []
+ e1 := e1 + for x from 0 to length(of)-1 do if ar_position(of:of[x], in:from) == -1 then [of[x]]
+}
+
+#### This blends a map of images together
+#### i dont remember why
+#### i think i tested it for dungeons
+#### example img_map := ["up":"test/up.png" "down":"test/down.png" "left":"test/left.png" "right":"test/right.png"]
+multi_choice_image := {
+ #### input = option string
+ #### img_map = map of image links
+ coll := split_text(input, match:", ?")
+ imgs := for each x in coll do if img_map[x] or else false != false then [img_map[x]]
+ len := length(imgs)
+ if len == 0 then
+ ""
+ else if len == 1 then
+ imgs[0]
+ else if len == 2 then
+ combine_blend(image1:imgs[0] image2:imgs[1], combine:combine)
+ else mass_combine(imgs:imgs, combine:combine)
+
+}@(combine:"and")
+mass_combine := {
+ base := combine_blend(image1:imgs[0] image2:imgs[1], combine:combine)
+ for x from 2 to length(imgs)-1 do (
+ base := combine_blend(image1:base image2:imgs[x] combine:combine)
+ "" #### this is junk output so it doesn't try to add the images as strings
+ )
+ base
+}@(combine:"and")
+
+get_alpha_percentage :=
+{
+ alpha_value := if input == "" then default
+ else to_number(input) or else default
+ if alpha_value < 0 then 0.0
+ else if alpha_value <= 100 then alpha_value/100.0
+ else 1.0
+}
+
+
+############################################################## For the user
+#### Remove card codes
+cc_filter := replace@(match:"^[CURMSL][WUBRGMZACL][0-9]+ ?[-—]? ?", replace:"")
+has_alchemy := contains@(match:"alchemy")
+strip_card_codes := {
+ save := input
+ input := cc_filter(input)
+ input := if input == "" or input == " " then save else input
+ if atom and alch_compatible() and has_alchemy(card.card_symbol)
+ then "A-" + input
+ else input
+}@(atom:false)
+name_default := { "" }
+name_checker := {if not set.remove_card_codes then input else strip_card_codes(input)}
+
+#### Print fix
+rare_width := {
+ cw := card_style.rarity.content_width
+ cw := if cw > 44 then (if set.print_fix != "" then set.print_fix else 22) else if cw < 22 then 22 else cw
+ if card_style.rarity.width == 0 then 0 else cw
+}
+
+############################################################## Card characteristics
+############################################################## Name
+has_two_names := {
+ contains(card.shape, match:"adventure")
+ or contains(card.shape, match:"aftermath")
+ or contains(card.shape, match:"double faced")
+ or contains(card.shape, match:"flip")
+ or contains(card.shape, match:"split")
+}
+card_full_name := { if has_two_names() then card.name + " // " + card.name_2 else card.name }
+#### exportname
+exporter_name_filter := filter_text@(match:"!exporte?r?name [^\n!]+")
+exporter_name_grabber := replace@(match:"!exporte?r?name ", replace:"")
+export_name := { exporter_name_grabber(exporter_name_filter(card.notes)) }
+clean_name := remove_tags +
+ replace@(match:"(\n| +$|^ +)", replace:"") +
+ replace@(match:"’", replace:"'")
+
+card_name := {
+ test_name := export_name()
+ if test_name == "" then test_name := card.name
+ clean_name(test_name)
+}
+dfc_splitter_name := {
+ back_name := card.name_2
+ full_name := card_name()
+ if back_name != "" then full_name := full_name + "_" + clean_name(back_name)
+ full_name
+}
+############################################################## Special text
+special_text := { "" }
+special_text2 := { "" }
+transfer_levels := {true}
+transfer_levels_2 := {true}
+a_saga := {false}
+saga_reminder := { "As this Saga enters and after your draw step, add a lore counter. Sacrifice after III." }
+b_saga := {false}
+saga_reminderb := { "As this Saga enters and after your draw step, add a lore counter. Sacrifice after III." }
+is_mainframe := { false }
+mainframe_walker := {false}
+mainframe_walker_text_script := {combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text)}
+mainframe_walkerb := {false}
+mainframe_walker_text_scriptb := {combined_editor(field1: card.level_5_text, separator1: "\n", field2: card.level_6_text, separator2: "\n", field3: card.level_7_text)}
+mainframe_walkerc := {false}
+mainframe_walker_text_scriptc := {combined_editor(field1: card.level_9_text, separator1: "\n", field2: card.level_10_text, separator2: "\n", field3: card.level_11_text)}
+mainframe_walkerd := {false}
+mainframe_walker_text_scriptd := {combined_editor(field1: card.level_13_text, separator1: "\n", field2: card.level_14_text, separator2: "\n", field3: card.level_15_text)}
+alt_text := {false}
+alt_text_script := {false}
+alt_textb := {false}
+alt_text_scriptb := {false}
+alt_textc := {false}
+alt_text_scriptc := {false}
+alt_textd := {false}
+alt_text_scriptd := {false}
+
+############################################################## Shape
+#### Shape of cards, can be changed in style files
+card_shape := { "normal" }
+token_shape := {
+ case input of
+ "token": true,
+ "emblem": true,
+ "counter": true,
+ "rulestip": true,
+ "checklist": true,
+ else: false;
+}
+#### used by pack scripts
+is_token_card := { token_shape(card.shape) }
+is_shifted_card := { contains(card.shape, match:"shifted") }
+is_masterpiece := { card.rarity == "masterpiece" }
+is_promo := { false }
+rarity_field := { if input <= 1 then card.rarity else card["rarity_" + input] }
+is_rare :=
+{
+ rarity := rarity_field(field)
+ rarity == "rare" or rarity == "mythic rare" or rarity == "masterpiece"
+}@(field: 1)
+is_walker := { contains(card.super_type, match:"Planeswalker") }
+is_legend := { true } #### TODO ???
+############################################################## Identity
+#### 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.
+blank_indentity := {
+ case input of
+ "colorless": true,
+ "land": true,
+ "artifact": true,
+ else: false;
+}
+has_identity := {
+ 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")
+ if blank_indentity(card.indicator)
+ then false
+ else if card.indicator != default
+ then true
+ else if card.card_color != default
+ then true
+ else false
+}
+has_identity_2 := {
+ default := 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")
+ if blank_indentity(card.indicator)
+ then false
+ else if card.indicator_2 != default
+ then true
+ else if card.card_color_2 != default
+ then true
+ else false
+}
+has_identity_3 := {
+ default := card_color(casting_cost: card.casting_cost_3, rules_text: card.rule_text_3, type: card.super_type_3, watermark: card.watermark_3, card_name: card.name_3, default: "colorless")
+ if blank_indentity(card.indicator)
+ then false
+ else if card.indicator_3 != default
+ then true
+ else if card.card_color_3 != default
+ then true
+ else false
+}
+############################################################## Exporter utility
+exporter_num_filter := filter_text@(match:"!num [^\n!]+")
+exporter_num_grabber := replace@(match:"!num ", replace:"")
+trim_zeroes := replace@(match: "^00?", replace: "")+
+ replace@(match: "a?/[0-9b]+", replace: "")
+corrected_card_number := { if exporter_num_grabber(exporter_num_filter(card.notes)) != "" then exporter_num_grabber(exporter_num_filter(card.notes)) else if card.custom_card_number != "" then trim_zeroes(card.custom_card_number) else card_number() }
+
+############################################################## Sorting mana symbols
+#### correctly sort a mana symbol (no guild mana)
+mana_sort := sort_text@(order: "\\?XYZI[0123456789]VLHSFCAIE(WUBRG)")
+#### correctly sort wedge mana
mana_sort_wedge := sort_text@(order: "\\?XYZI[0123456789]VLHSFCAIE(WBGUR)")
+#### sort nothing
mana_unsort := sort_text@(order:"[/\\?XYZI0123456789VLHSCAIEWUBRG]")
-# correctly sort guild mana
+#### correctly sort guild mana
mana_sort_guild := sort_text@(order: "[\\?XYZI01234567890VLHSFCAIEWUBRG/|]") +
replace@(
- # No lookbehind :(
+ #### No lookbehind :(
#match: "(?($|[^/])",
replace: {sort_text(order:"in_place((WUBRG))")}
)
-mana_has_guild := match@(match: "[/|]") # Is there guild or half mana in the input?
+#### mana filter helpers
+mana_has_guild := match@(match: "[/|]") #### Is there guild or half mana in the input?
mana_is_wedge := { chosen(set.mana_cost_sorting, choice: "tarkir wedge sorting") and ( number_of_items(in: sort_text(order:"", input), filter: "") == 3 ) }
-mana_has_wedge := { mana_is_wedge() and (sort_text(order:"", input) == "WUR" or sort_text(order:"", input) == "WBR" or sort_text(order:"", input) == "WBG" or sort_text(order:"", input) == "UBG" or sort_text(order:"", input) == "URG")}
-# convert card.card_color to WUBRG
-card_color_to_letters := {
- color_string := trim_colors(input)
- out_string := (if contains(color_string, match:"white") then "W" else "")+(if contains(color_string, match:"blue") then "U" else "")+(if contains(color_string, match:"black") then "B" else "")+(if contains(color_string, match:"red") then "R" else "")+(if contains(color_string, match:"green") then "G" else "")
- out_string
+mana_has_wedge := {
+ wedge_check := sort_text(order:"", input)
+ mana_is_wedge() and (wedge_check == "WUR" or wedge_check == "WBR" or wedge_check == "WBG" or wedge_check == "UBG" or wedge_check == "URG")
}
-card_is_wedge := {
- color_string := card_color_to_letters(input)
- if color_string == "WUR" or color_string == "WBR" or color_string == "WBG" or color_string == "UBG" or color_string == "URG" then true else false
-}
-list_colors := {
- list := trim_colors(input)
- cc := length(comma_count(list))
- if cc == 1 then
- list := replace(list, match:", ", replace:" and ")
- if cc > 1 then
- list := replace(list, match:", ", replace:", and ", in_context:"[^ ]+$")
- list
-}
-# A mana cost can contain both normal and guild mana
+
+#### A mana cost can contain both normal and guild mana
mana_filter := to_upper + {
if chosen(set.mana_cost_sorting, choice: "unsorted") then mana_unsort()
else if mana_has_guild() then mana_sort_guild()
else if mana_has_wedge(input) then mana_sort_wedge(input)
else mana_sort()
}
-# Like mana filter, only also allow tap symbols:
+#### prevent infinite tap symbol glitch
tap_reduction :=
replace@(match:"T+", replace:"T")+
replace@(match:"Q+", replace:"Q")
-ticket_filter :=
+#### only allow tickets
ticket_isolate := filter_text@(match:"(TK)+")
+#### remove ticket Ts from tap filter
tap_filter := replace@(match:"(TK)+", replace:"")+
sort_text@(order: "")
-mana_filter_t := replace@( # Remove [] used for forcing mana symbols
+#### Like mana filter, only also allow tap symbols:
+mana_filter_t := replace@( #### Remove [] used for forcing mana symbols
match: "[\\[\\]]",
replace: ""
) + { tap_reduction(tap_filter()) + mana_filter() }
-############################################################## Determine card color
-# Names of colors
+card_is_wedge := {
+ color_string := card_color_to_letters(input)
+ if color_string == "WUR" or color_string == "WBR" or color_string == "WBG" or color_string == "UBG" or color_string == "URG" then true else false
+}
+
+############################################################## Symbol font defaults
+mana_t :=
+{
+ field := styling.tap_symbol or else "new"
+ if field == "diagonal T" then "older"
+ else if field == "old" then "old"
+ else "new"
+}
+guild_mana :=
+{
+ styling.use_guild_mana_symbols or else false
+}
+ancestral_mana :=
+{
+ field := styling.other_options or else nil
+ if field == nil then (styling.use_ancestral_mana_symbols or else false)
+ else contains(field, match:"ancestral generic")
+}
+white_text := { false }
+
+#### 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"
+ }
+
+
+############################################################## Mainframe mana
+use_v_mana := {contains(set.custom_mana_symbol_name, match:".png")}
+use_large_v_mana := { use_v_mana() and chosen(set.mana_symbol_options, choice:"enable in casting costs")}
+use_small_v_mana := { use_v_mana() and chosen(set.mana_symbol_options, choice:"enable in text boxes")}
+use_color_v_mana := { use_v_mana() and chosen(set.mana_symbol_options, choice:"colored mana symbols") and not use_hybrid_v_mana()}
+use_hybrid_v_mana := { use_v_mana() and chosen(set.mana_symbol_options, choice:"hybrid with colors")}
+v_mana_name := {if not use_v_mana() then "" else replace(set.custom_mana_symbol_name, match:"(.+/|\\.png)", replace:"")}
+v_mana_loc := {if not use_v_mana() then "" else replace(set.custom_mana_symbol_name, match:"{v_mana_name()}\\.png", replace:"")}
+v_mana_num := {max(to_number(set.number_hybrid_variants),0) or else -1}
+############################################################## Determine card color
+#### Names of colors
color_name := {
if input == "W" then "white"
else if input == "U" then "blue"
@@ -91,67 +478,67 @@ 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: "")
+#### color based on mana cost, input == a mana cost
+color_filter := sort_text@(order: "")
color_filterH := sort_text@(order: ">")
mana_to_color := {
- count := number_of_items(in: colors)
+ count := number_of_items(in: colors)
if hybrid == "" and contains(type, match:"Artifact") then
- # not a hybrid, but artifact
+ #### 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 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 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
+ #### 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 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 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
+ #### 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
+ #### 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 based on land text box, input == textbox contents
color_text_filter :=
- # remove activation costs
+ #### remove activation costs
replace@(
match: "]*>[^<]+]*>"
in_context: "(?ix) (\\n|^)[^:]*(,|:) | (pays?|additional|costs?)[ ]",
replace: ""
) +
- # keep only mana
+ #### keep only mana
filter_text@(match: "]*>([^<]+)") + color_filter;
-# get the land frame for a "WUBRG"-style input.
+#### get the land frame for a "WUBRG"-style input.
land_multicolor := {
- count := number_of_items(in: colors)
+ 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
+ #### 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"
@@ -160,65 +547,47 @@ land_to_color := {
else land_multicolor(colors:color_text_filter(input: rules))
}@(rules:card.rule_text)
-# Look for a CDA that defines colors
+#### Look for a CDA that defines colors
text_to_color := {
- # Note: running filter_text is quite slow, do a quick 'contains' check first
+ #### Note: running filter_text is quite slow, do a quick 'contains' check first
if contains(match: card_name + " is") 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]+>)* \\.")
- if text != "" then (
- if contains(text, match: "all colors") then (
- colors := "WUBRG"
- if land == "true" 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 == "true" then land_multicolor()
- else mana_to_color(hybrid: "")
- )
- )
- else ""
+ 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]+>)* \\.")
+ if text != "" then (
+ if contains(text, match: "all colors") then (
+ colors := "WUBRG"
+ if land == true 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 == true then land_multicolor()
+ else mana_to_color(hybrid: "")
+ )
+ )
+ else ""
)
else ""
}
-
-is_creature := match@(match: "(?i)Creature")
-is_creaturish := match@(match: "(?i)(Creature|Vehicle)")
-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_aura := match@(match: "(?i)Aura")
-is_spell := match@(match: "(?i)Instant|Sorcery")
-is_sorcery := match@(match: "(?i)Sorcery")
-is_instant := match@(match: "(?i)Instant")
-is_planeswalker := match@(match: "(?i)Planeswalker")
-is_legendary := match@(match: "(?i)Legendary")
-match_vehicle := contains@(match:"Vehicle")
-match_snow := contains@(match:"Snow")
-
-# The color of a card
+#### The color of a card
card_color := {
- # usually the color of mana
+ #### 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, rules:rules_text)
- else if mana_color == "colorless" and is_artifact(type) then "artifact"
- else if mana_color == "colorless" and contains(card.shape, match:"flip") then default
+ if mana_color == "colorless" and is_land (type) then land_to_color(watermark, rules:rules_text)
+ 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
};
-##todo check nil
-has_two_names := {contains(card.shape, match:"split") or contains(card.shape, match:"adventure") or contains(card.shape, match:"flip") or contains(card.shape, match:"double faced") or contains(card.shape, match:"aftermath")}
-# Number of colors in a card_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
+#### Clean up color field
card_color_filter := {
colors := card_color_color_count()
if colors > 2 then
@@ -233,44 +602,109 @@ card_color_filter := {
input := remove_choice(choice: "reversed")
input
}
-
+#### convert card color to "white, blue, and black" etc for reminder text
+list_colors := {
+ list := trim_colors(input)
+ cc := length(comma_count(list))
+ if cc == 1 then
+ list := replace(list, match:", ", replace:" and ")
+ if cc > 1 then
+ list := replace(list, match:", ", replace:", and ", in_context:"[^ ]+$")
+ list
+}
+#### convert card_color to WUBRG
+card_color_to_letters := {
+ color_string := trim_colors(input)
+ (if contains(color_string, match:"white") then "W" else "")
+ +(if contains(color_string, match:"blue") then "U" else "")
+ +(if contains(color_string, match:"black") then "B" else "")
+ +(if contains(color_string, match:"red") then "R" else "")
+ +(if contains(color_string, match:"green") then "G" else "")
+}
+card_color_field := { if input <= 1 then card.card_color else card["card_color_" + input] }
############################################################## Card number
-# exportname
-exporter_name_filter := filter_text@(match:"!exporte?r?name [^\n!]+")
-exporter_name_grabber := replace@(match:"!exporte?r?name ", replace:"")
-export_name := { exporter_name_grabber(exporter_name_filter(card.notes))}
-
-# Index for sorting, white cards are first, so white->A, blue->B, .. ,
-# The code consists of 3 parts:
-# color, shifted, split
+#### The code consists of 4 parts:
+#### partition, rarity tier, color, card name
+#### remove filler text from partition select
+partition_filter := replace@(match:"(before normal|after normal, main set|after main set|help.*) ?", replace:"")
+partition_index := {
+ ind := partition_filter(card.partition_select)
+ if ind == "" then ind := "A"
+ ind
+}
+#### determine if a card is "over-partition", ie should be excluded from the main set count
+over_partition := {
+ mn_pos := if set.last_main_partition == "" then "M" else to_upper(substring(set.last_main_partition, end:1))
+ partition_scores[partition_index()] > partition_scores[mn_pos]
+}
+partition_scores := [
+ 0:0, 1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7, 8:8, 9:9,
+ A:10, B:11, C:12, D:13, E:14, F:15, G:16, H:17, I:18,
+ J:19, K:20, L:21, M:22, N:23, O:24, P:25, Q:26, R:27,
+ S:28, T:29, U:30, V:31, W:32, X:33, Y:34, Z:35
+]
+#### MSE doesn't do "A" > "B" like some languages do
+#### Originally this put partition_index() and mn_pos in an array and sorted that
+#### but that crashed mse on startup once it was added to sort the card number column
+#### but you also couldn't use position() because it inherits order_by and filter from card_number()
+#### and MSE yells at you if you do that and you're not sorting a set
+#### and replacing them with nil doesn't work, it still complains if they're nil???
+#### so instead hard-coded map of indices
+#### you'll never catch me i'm behind seven workarounds
+
+#### Index for sorting, white cards are first, so white->A, blue->B, .. ,
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
+ (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 "An" at the beginning
- replace@(match: "^(The|An?) ", replace: "") +
- # Remove commas and apostrophes
- replace@(match: "(,|'|’)", replace: "") +
- # Remove bold and italic tags
- replace@(match: "(|||)", replace: "") +
- # Make lowercase
- to_lower
-
+#### 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: "")
+ 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)
+ )
+}
+is_null_cost := { input == "" or input == "0" }
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
+ 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: "")
@@ -303,51 +737,11 @@ multi_color_pair_sort := {
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: "")
- 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)
- )
-}
-token_shape := {
- case input of
- "token": true,
- "emblem": true,
- "counter": true,
- "rulestip": true,
- "checklist": true,
- else: false;
-}
+#### Sort the card into its rarity tier
+#### unsorted, regular cards, "after other cards" specials
+#### "separate numbering" specials, masterpieces
+#### tokens, emblems, rulestips, counters checklists
rarity_sort := {
if is_unsorted() then "R0"
else if card.shape == "token" then "T1"
@@ -355,44 +749,29 @@ rarity_sort := {
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 is_masterpiece() then "S2"
else if set.sort_special_rarity == "separate numbering" and card.rarity == "special" then "S1"
else if set.sort_special_rarity == "with the rest" or card.rarity != "special" then "R1"
else "R2"
}
+#### do this to accurate represent partition sorting for the card number sorting column
rarity_partition_sort := {
main := rarity_sort()
main.0 + partition_index() + main.1
}
-card_partition := {
- if styling.card_number_partition or else "" != ""
- then styling.card_number_partition
- else "A"
-}
-## MSE doesn't do "A" > "B" like some languages do
-## Originally this put partition_index() and mn_pos in an array and sorted that
-## but that crashed mse on startup once it was added to sort the card number column
-## but you also couldn't use position() because it inherits order_by and filter from card_number()
-## and MSE yells at you if you do that and you're not sorting a set
-## and replacing them with nil doesn't work, it still complains if they're nil???
-## so instead hard-coded map of indices
-## you'll never catch me i'm behind seven workarounds
-partition_scores := [
- 0:0, 1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7, 8:8, 9:9,
- A:10, B:11, C:12, D:13, E:14, F:15, G:16, H:17, I:18,
- J:19, K:20, L:21, M:22, N:23, O:24, P:25, Q:26, R:27,
- S:28, T:29, U:30, V:31, W:32, X:33, Y:34, Z:35
-]
-over_partition := {
- mn_pos := if set.last_main_partition == "" then "M" else to_upper(substring(set.last_main_partition, end:1))
- partition_scores[partition_index()] > partition_scores[mn_pos]
-}
-partition_filter := replace@(match:"(before normal|after normal, main set|after main set|secret|help.*) ?", replace:"")
-partition_index := {
- ind := partition_filter(card.partition_select)
- if ind == "" then ind := "A"
- ind
-}
+
+#### Process the name for sorting rules
+sort_name :=
+ #### Remove "The", "A", and "An" at the beginning
+ replace@(match: "^(The|An?) ", replace: "") +
+ #### Remove commas and apostrophes
+ replace@(match: "(,|'|’)", replace: "") +
+ #### Remove bold and italic tags
+ replace@(match: "(|||)", replace: "") +
+ #### Make lowercase
+ to_lower
+
+#### given a card, return the function that returns all other cards that impact its card number
set_filter := {
if is_unsorted() then
{ is_unsorted() }
@@ -413,9 +792,9 @@ set_filter := {
else
{ not is_unsorted() and not token_shape(card.shape) and card.rarity != "special" }
}
-## over-partition cards need to be counted during the card number count
-## but need to be skipped during the card count count
-## so this is a copy of set_filter but it skips over-partition cards
+#### over-partition cards need to be counted during the card number count
+#### but need to be skipped during the card count count
+#### so this is a copy of set_filter but it skips over-partition cards
set_filter_under_partition := {
if is_unsorted() then
{ is_unsorted() }
@@ -436,8 +815,11 @@ set_filter_under_partition := {
else
{ not is_unsorted() and not token_shape(card.shape) and card.rarity != "special" and not over_partition() }
}
+
+#### user configurable additions to the set totals
card_number_offset := {pull_comma_array(set.card_number_offsets, cell:0, end:false, default:0)}
set_number_offset := {pull_comma_array(set.card_number_offsets, cell:1, end:false, default:0)}
+#### the raw numbers, these aren't typically used directly
card_number := {
position (
of: card
@@ -449,16 +831,15 @@ card_number := {
card_count := {
number_of_items(in: set, filter: set_filter_under_partition()) + to_number(set_number_offset())
}
-
-#Starting with M15, zero digits in card numbers should be shown up to three.
+#### Starting with M15, pad the collector number to three digits
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() }
-#Starting with MOM, zero digits in card numbers should be shown up to four
+#### Starting with MOM, pad the collector number to four digits
card_number_mom := { (if card_number() < 1000 then "0" else "") + (if card_number() < 100 then "0" else "") + (if card_number() < 10 then "0" else "") + card_number() }
card_count_mom := { (if card_count() < 1000 then "0" else "") + (if card_count() < 100 then "0" else "") + (if card_count() < 10 then "0" else "") + card_count() }
use_auto_numbers := {set.automatic_card_numbers and not is_unsorted()}
-# Use this in templates so we don't have to update 700 templates the next time they change the ordering
+#### Use this in templates so we don't have to update 700 templates the next time they change the ordering
card_number_script_core := {
if not use_auto_numbers() then
combined_editor(field1: card.custom_card_number, separator: " " + rarity_code() + " ", field2: card.card_code_text)
@@ -476,250 +857,156 @@ card_number_script_core := {
forward_editor(prefix: card_number() + " " + rarity_code() + " ", field: card.card_code_text)
}
-# 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" }
-
-
-############################################################## 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
-
-trim_reminder_x := replace@(match: ". X can’t be 0.", replace: "")
-
-# If the 'input' parameter is a mana costs, then adds 'add'
-for_mana_costs := {
- if input.separator_before == "—" and contains(input.param, match: " ") then ( ##multi word
- if comma_count(input.param) == "," then ( ##two part
- if match(match: "^[VLHSCAIETKQ\\?XYZIWUBRG0-9/|]+,", input.param) then ##starts with mana
- "{add}{alternative_cost(input.param, trim:combined_cost, s:action)}" ##"add" mana
- else "{alternative_cost(input.param, trim:combined_cost, s:action)}{non}" ## else cost "non"
- ) else if contains(input.param, match: ",") then ( ##three+ parts
- if match(match: "^[VLHSCAIETKQ\\?XYZIWUBRG0-9/|]+,", input.param) then ##starts with mana
- "{add}{alternative_cost(input.param, trim:long_cost, s:action)}" ##"add" mana with long formatting
- else "{alternative_cost(input.param, trim:long_nomana_cost, s:action)}{non}" ## else cost "non" with long formatting
- ) else
- "{alternative_cost(input.param, s:action, trim:lower_first)}{non}" ##one, nonmana, part
- ) else if match(match: "^[VLHSCAIETKQ\\?XYZIWUBRG0-9/|]+$", input.param) then ##one word
- "{add}{input.param}" ##mana
- else
- "{alternative_cost(input.param, trim:combined_cost, s:action)}{non}" ##nonmana
-}@(non:" in addition to any other costs", action:false)
-
-# Convert extra costs
-long_cost := replace@(match:", [A-Z]", replace: { to_lower() } )
-long_nomana_cost := replace@(match:"[A-Z]", replace: { to_lower() })
-# Convert first character to lower case
-lower_first := replace@(match:"^[A-Z]", replace: { to_lower() })
-combined_cost := replace@(match:", [A-Z]", replace: { to_lower() })+
- replace@(match:",", replace:" and")+
- replace@(match:"^[VLHSCETKQ\\?XYZIWUBRG0-9/|]+", in_context: "(^|[[:space:]])(?![a-z])", replace: "&")+
- replace@(match:"^[A-Z]", replace: { to_lower() })
-alternative_cost := {
- input := trim(input)
- if s then
- input := actionize(input)
- input
-}@(trim: lower_first, s:false, trim:{input})
-actionize := replace@(match:"(activate|ante|cast|choose|create|destroy|discard|double|draw|exchange|exile|fight|mill|play|put|regenerate|return|reveal|sacrifice|shuffle|tap|untap|transform|vote|exert|pay)(?=($| |,|\\.))", replace:"\\1s")
- +replace@(match:"(attach)", replace:"\\1es")
- +replace@(match:"scry", replace:"scries")
- +replace@(match:"your", replace:"their")
-#
-protection_code := {
- output := if match(input, match:"(artifacts|creatures|enchantments|instants|lands|planeswalkers|sorceries|tribals|planes|schemes|emblems|conspiracies|^[A-Z]|^[^ ]* named)") then replace(input, match:"and from", replace:"or", in_context:" ")
- else if match(input, match:"^(converted|mana|power|toughness)") then "anything with " + replace(input, match:"and from", replace:"or", in_context:" ")
- else if contains(input, match:"the chosen player") then "anything " + replace(input, match:"the chosen", replace:"controlled by that")
- else if contains(input, match:"the chosen") then "anything with " + replace(input, match:"the chosen", replace:"that")
- else if contains(input, match:"all colors") then "anything " + replace(input, match:"all colors", replace:"that's white, blue, black, red, or green")
- else if match(input, match:"^you$") then "anything you control"
- else if match(input, match:"^its owner$") then "anything its owner controls"
- else if match(input, match:"^(each of )?your opponents$") then "anything " + replace(input, match:"(each of )?your opponents", replace:"controlled by those players")
- else if match(input, match:"(the|a) [^\n]* of your choice") then "anything " + replace(input, match:"(the|a) ([^\n]*) of your choice", replace:"of that \\2")
- else if input == "colorless" then "anything colorless"
- else "anything " + replace(english_singular(input), match:"and from", replace:"or", in_context:" ")
- output := " targeted, dealt damage, enchanted, equipped by " + output
- if match(output, match:"(artifacts|creatures|instants|lands|planeswalkers|sorceries|tribals|planes|schemes|emblems|conspiracies|by [A-Z])") and not match(output, match:"(enchantmentsAura|Curse)") then
- output := replace(output, match:", enchanted", replace:"")
- else output := output
- if match(output, match:"(enchantments|creatures|instants|lands|planeswalkers|sorceries|tribals|planes|schemes|emblems|conspiracies|by [A-Z])") and not match(output, match:"(artifacts|Equipment)") then
- output := replace(output, match:" equipped", replace:"")
- else output := output
- if match(output, match:"equipped by") then output := replace(output, match:"equipped by", replace:"or equipped by")
- else if match(output, match:"enchanted, by") then output := replace(output, match:"enchanted, by", replace:"or enchanted by")
- else if match(output, match:"dealt damage, by") then output := replace(output, match:"dealt damage, by", replace:"or dealt damage by")
+#### Determine a rarity code for M15 styles.
+rarity_code := {
+ if not set.rarity_codes then ""
+ else 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 ""
- if match(output, match:"^ targeted, or dealt damage by") then output := replace(output, match:"^ targeted, or dealt damage by", replace:" targeted or dealt damage by")
- if match(output, match:"anything [A-Z]") then output := replace(output, match:"anything ", replace:"")
- if match(output, match:"or les") then output := replace(output, match:"or les$", replace:"or less")
- if match(output, match:"(anything )?everything") then output := replace(output, match:"(anything )?everything", replace:"anything")
- output := (if self_pro_check(card.text) then "You can't be" else if is_spell(card.type) then "It can't be blocked," else if is_creaturish(card.type) then "This creature can't be blocked," else "This permanent can't be") + output
- output
}
-self_pro_check := match@(match:"You ha(ve|s) protection")
-craft_code := {
- [
- "en": {
- ## beginning
- rem := param2.value + ", Exile this artifact, Exile ";
-
- ## check if a number is given
- count := filter_text(param1.value, match:"^(one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen|twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety|[0-9]+)(-(one|two|three|four|five|six|seven|eight|nine))? (or more)?");
+is_unsorted := { false }
+############################################################## Statistics utilities
+#### Converted mana cost
+is_half_mana := match@(match: "1/2|[|][WUBRGS]")
+is_half_generic := match@(match: "1/2")
+is_colored_mana := match@(match: "[WUBRG]")
+only_numbers := filter_text@(match: "^[0123456789]+")
+cmc_split := break_text@(match: "(?ix) 1/2 | [|][WUBRGC] | TK | [0-9](/[WUBRGCVLHSCETQ2]) | [0-9]+(?!/[WUBRGCVLHSCETQ2]) | [WUBRGCVLHS0-9](/[WUBRGCVLHS])\{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
+ ))
+}
+mana_value := cmc
+#### 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: "^", replace: "")+
+ replace@(match: "[ ]+", in_context: "$", replace: "")
+remove_type := replace@(match: "(Artifact|Creature|Enchantment|Instant|Land|Planeswalker|Sorcery)", replace: "")+
+ replace@(match: "[ ]+", in_context: "^", replace: "")+
+ replace@(match: "[ ]+", in_context: "$", replace: "")
- ## replace trailing space
- count := trim(count)
-
- ## check how many commas are given
- commas := filter_text(param1.value, match:",");
-
- ## check if this starts with a vowel
- vowel := match(param1.value, match:"^[aeiouAEIOU]");
-
- ## if we have a comma separated list, use the number of elements as the count
- ## this doesn't support like, Craft with two Islands and two Mountains
- ## you've done that to yourself
- if commas != "" then count := english_number(length(commas)+1);
-
- ## unused style (craft with three)
- #### param1 == "three" count == "three"
- ## counting style (craft with one or more); (craft with six artifacts)
- #### param1 == "one or more" count == "one"; param1 == "six artifacts" count == "six"
- ## singular style (craft with creature)
- #### param1 == "creature" count == ""
- if count == param1.value then
- (
- ## Exile three other...
- rem := rem
- + param1.value
- + " other permanents you control and/or cards from your graveyard: "
- )
- else if count != "" then
- (
- ## Exile one or more from among...
- ## Exile the six from among...
- rem := rem
- + (if count == "one or more" then param1.value else "the " + count)
- + " from among other permanents you control and/or cards in your graveyard: "
- )
- else
- (
- ## Exile another creature you control or...
- rem := rem
- + "another " + param1.value + " you control or "
- + (if vowel then "an " else "a ") + param1.value + " card from your graveyard: "
- )
-
- ## ending and return
- rem := rem + "Return this card transformed under its owner's control. Craft only as a sorcery."
- rem
- },
- "de": {
- ## beginning
- rem := param2.value + ", schnicke dieses Artefakt ins Exil, schicke ";
-
- ## check if a number is given
- count := filter_text(param1.value, match:"^(zwanzig|dreiβig|vierzig|fünfzig|sechzig|siebzig|achtzig|neunzig|eine[mr]|eins?|zwei|drei|vier|fünf|sechs?|sieben|sieb|acht|neun|zehn|elf|zwölf|[0-9]+)(und)?(zehn|zwanzig|dreiβig|vierzig|fünfzig|sechzig|siebzig|achtzig|neunzig)?( oder mehr(eren)?)? ?");
-
- ## save the thing we're exiling
- target := trim(replace(param1.value, match:count, replace:""))
- alt_target := if length(target) > 15 then "Permanente" else target
-
- ## format count
- count := replace(count, match:"eine[mr]", replace:"eins")
- count := trim(count)
-
- ## check how many commas are given
- commas := filter_text(param1.value, match:",");
-
- ## check if this starts with a vowel
- vowel := match(target, match:"^[aäeiouüAÄEIOUÜ]");
-
- ## if we have a comma separated list, use the number of elements as the count
- ## this doesn't support eg Craft with two Islands and two Mountains
- ## you've done that to yourself
- if commas != "" then (
- count := german_number(length(commas)+2);
- alt_target := "Permanente"
- )
-
- ## unused style (craft with three)
- #### param1 == "three" count == "three"
- ## counting style (craft with one or more); (craft with six artifacts)
- #### param1 == "one or more" count == "one"; param1 == "six artifacts" count == "six"
- ## singular style (craft with creature)
- #### param1 == "creature" count == ""
-
- if count == param1.value then
- (
- ## Exile three other...
- rem := rem
- + param1.value
- + " weiteren Permanente, die du kontrollierst und/oder Karten aus deinem Friedhof ins Exil: "
- )
- else if count != "eins" then
- (
- ## with one or more...
- ## with four or more
- ## with two+...
- rem := rem
- + (
- if count == "eins oder mehreren" then "ein oder mehrere weitere "
- else if contains(count, match:"oder") then "die " + count + " weireren "
- else "die " + count + " oder mehr weiteren "
- ## todo this should list the denumbered param1.value instead
- )
- + alt_target
- + (if vowel then ", das du" else ", die du")
- + " kontrollierst und/oder Karten aus deinem Friedhof ins Exil: "
- )
- else
- (
- ## with einem Artefakt
- ## with einem Kreatur
- rem := rem
- + (if target == "Artefakt" then "ein weiteres " else "ein ")
- + target
- + ", "
- + (if vowel then "das du" else "die du")
- + " kontrollierst, oder "
- + (if vowel then "eines " else "eine ") + target
- + (if target == "Kreatur" then "en-karte" else "-karte")
- +" aus deinem Friedhof ins Exile: "
- )
-
- ## ending and return
- rem := rem + "Bringe diese Karte transformiert unter der Kontrolle ihres Besitzers ins Spiel zurück. Spiele Anfertigung wie eine Herexi."
- rem
- }
- ][lang_setting("code") or else "en"]()
+write_wubrg := {
+ (if match(input, match:"white") then "W" else "")+
+ (if match(input, match:"blue") then "U" else "")+
+ (if match(input, match:"black") then "B" else "")+
+ (if match(input, match:"red") then "R" else "")+
+ (if match(input, match:"green") then "G" else "")
+}
+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
+ ))
+}
+generic_mana := {to_number(
+ for each sym in cmc_split(to_text()) do (
+ numbers := only_numbers(sym)
+ if is_half_generic(sym) then 0.5
+ else if numbers != "" then to_int(numbers)
+ else 0 #### all other symbols are 1
+ ))
}
-long_dash := replace@(match:"-", replace:"—")
-
-# Utilities for keywords
-
-has_cc := { card.casting_cost != "" }
-
-has_pt := { card.power != "" or card.toughness != "" }
+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")
+ multi_color := count_chosen(choices:"white, blue, black, red, green")
+ if land then "land"
+ else if multi then "multicolor"
+ else if multi_color == 2 and chosen(choice:"artifact") then "hybrid" #### hybrid artifacts would show as their first color
+ 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
+}
+sparker_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")
+ multi_color := count_chosen(choices:"white, blue, black, red, green")
+ if land then "colorless"
+ else if multi then "multicolor"
+ else if multi_color >= 2 then "multicolor"
+ else if hybrid then "multicolor"
+ 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 "colorless"
+}
+############################################################## Keyword utilities
+trim_reminder_x := replace@(match: ". X can’t be 0.", replace: "")
+has_cc := { card.casting_cost != "" }
+has_pt := { card.power != "" or card.toughness != "" }
+is_spell := { contains(card.type, match:"Instant") or contains(card.type, match:"Sorcery") }
contains_target := match@(match:"(?i)([^a-z]|^)targets?([^a-z]|$)")
+is_targeted := { contains_target(card.rule_text) }
-is_spell := { contains(card.type, match:"Instant") or contains(card.type, match:"Sorcery") }
-
-is_targeted := { contains_target(card.rule_text) }
-
+#### convert color word to mana symbol
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]")
+#### convert number word to digit
+digital_number := {
+ input := replace(input, match:"up to ", replace:"")
+ result := input
+ two_part := filter_text(input, match:"(twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety)")
+ one_part := filter_text(input, match:"(zero|a|an|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen)\\b")
+ if two_part != "" and one_part != "" then
+ result := (digital_map[two_part] + digital_map[one_part]) or else input
+ else if two_part != "" then
+ result := digital_map[two_part] or else input
+ else if one_part != "" then
+ result := digital_map[input] or else input
+ result
+}
+#### convert once, twice, "[number] times" to digit
+iterate_digits := {
+ trimmed := iterate_fix(input)
+ if trimmed == "" then 1 else digital_map[trimmed] or else trimmed
+}
+iterate_fix := remove_tags
+ +replace@(match: "^\\.", replace:"")
+ +replace@(match: "^,", replace:"")
+ +replace@(match: "^[ ]", replace:"")
+ +replace@(match:" times", replace:"")
digital_map := [
"zero": 0,
"one": 1,
@@ -755,151 +1042,305 @@ digital_map := [
"eighty": 80,
"ninety": 90
]
-iterate_fix := remove_tags
- +replace@(match: "^\\.", replace:"")
- +replace@(match: "^,", replace:"")
- +replace@(match: "^[ ]", replace:"")
- +replace@(match:" times", replace:"")
-iterate_digits := {
- trimmed := iterate_fix(input)
- if trimmed == "" then 1 else digital_map[trimmed] or else trimmed
-}
-digital_number := {
- input := replace(input, match:"up to ", replace:"")
- result := input
- two_part := filter_text(input, match:"(twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety)")
- one_part := filter_text(input, match:"(zero|a|an|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen)\\b")
- if two_part != "" and one_part != "" then
- result := (digital_map[two_part] + digital_map[one_part]) or else input
- else if two_part != "" then
- result := digital_map[two_part] or else input
- else if one_part != "" then
- result := digital_map[input] or else input
- result
-}
-reverse_elements := {for element from 1 to length(input) do input[length(input) - element] + " "}
-######################## Level Margins
-#### these will be determined by the style affecting the margins and otherwise be 0
-margin_left := {0}
-margin_right := {0}
-margin_top := {0}
-remove_margins := replace@(
- match: "?margin:[0-9]+(:+[0-9]+)?(:+[0-9]+)?>",
- replace:""
-)
-##remove 0 margins and margins with no text
-cull_margins := replace@(match:"?margin:0(:+0)?(:+0)?>", replace:"")+
- replace@(match:"", replace:"")
-
-#### this gives a big array so we can grab_margins["lv1"] etc anywhere
-grab_margins := {[ lv1: [margin_left("lv1"), margin_right("lv1"), margin_top("lv1")],
- lv2: [margin_left("lv2"), margin_right("lv2"), margin_top("lv2")],
- lv3: [margin_left("lv3"), margin_right("lv3"), margin_top("lv3")],
- lv4: [margin_left("lv4"), margin_right("lv4"), margin_top("lv4")],
- lv5: [margin_left("lv5"), margin_right("lv5"), margin_top("lv5")],
- lv6: [margin_left("lv6"), margin_right("lv6"), margin_top("lv6")],
- lv7: [margin_left("lv7"), margin_right("lv7"), margin_top("lv7")],
- lv8: [margin_left("lv8"), margin_right("lv8"), margin_top("lv8")],
- text: [margin_left("text"), margin_right("text"), margin_top("text")],
- text2: [margin_left("text2"), margin_right("text2"), margin_top("text2")],
- text3: [margin_left("text3"), margin_right("text3"), margin_top("text3")],
- text4: [margin_left("text4"), margin_right("text4"), margin_top("text4")],
- text5: [margin_left("text5"), margin_right("text5"), margin_top("text5")],
- text6: [margin_left("text6"), margin_right("text6"), margin_top("text6")],
- unknown: [0,0,0]
-]}
-#### then with apply_margins(field, name:fieldname), add the margins into the text
-apply_margins := {
- margin_data := grab_margins()[name] or else [0,0,0]
- cull_margins("" + remove_margins(input) + "")
-}
-is_modal := contains@(match:"")
+#### If the 'input' parameter is a mana costs, then adds 'add'
+for_mana_costs := {
+ if input.separator_before == "—" and contains(input.param, match: " ") then ( #### multi word
+ if comma_count(input.param) == "," then ( #### two part
+ if match(match: "^[VLHSCAIETKQ\\?XYZIWUBRG0-9/|]+,", input.param) then #### starts with mana
+ "{add}{alternative_cost(input.param, trim:combined_cost, s:action)}" #### "add" mana
+ else "{alternative_cost(input.param, trim:combined_cost, s:action)}{non}" #### else cost "non"
+ ) else if contains(input.param, match: ",") then ( #### three+ parts
+ if match(match: "^[VLHSCAIETKQ\\?XYZIWUBRG0-9/|]+,", input.param) then #### starts with mana
+ "{add}{alternative_cost(input.param, trim:long_cost, s:action)}" #### "add" mana with long formatting
+ else "{alternative_cost(input.param, trim:long_nomana_cost, s:action)}{non}" #### else cost "non" with long formatting
+ ) else
+ "{alternative_cost(input.param, s:action, trim:lower_first)}{non}" #### one, nonmana, part
+ ) else if match(match: "^[VLHSCAIETKQ\\?XYZIWUBRG0-9/|]+$", input.param) then #### one word
+ "{add}{input.param}" #### mana
+ else
+ "{alternative_cost(input.param, trim:combined_cost, s:action)}{non}" #### nonmana
+}@(non:" in addition to any other costs", action:false, add:"")
-bump_text := {
- blocks := split_text(input, match:"\n");
- new_text := blocks[0];
- for x from 1 to length(blocks)-1 do new_text := new_text + "\n" + bumper(blocks[x])
- new_text
-}
-bumper := {
- #if this text isn't modal, at a 5 px margin
- if is_modal(input) then input else
- cull_margins("" + remove_margins(input) + "")
-
-}
-inserts_values := {
- split_text(set.inserts+";;;;;;;;;", match:";")
-}
-############################################################## 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
- (
- : # G: something
- | , # G, tap: something
- | [+][ ]?[ ]?— # Spree
- | or[ ] # Add X, Y, or Z.
- | [ ]to[ ]your # Add X, Y, or Z to your mana pool.
- | you[ ]get[ ] # You get E, you get TK
- | [ ]was[ ]spent # if G was spent to cast
- | [ ]can[ ]be[ ]paid
- | (pays?|additional|costs?|the|adds?|pay(ed)?[ ](with|using)) # pay X. creatures cost 1 less. pay an additional G.
- ([ ]either)? # pay either X or Y
- ([ ](]*>)?[-+=]?[VLHSCETKQ\\?XYZIEWUBRG0-9/|]+(]*>)?,)* # pay X, Y or Z
- ([ ](]*>)?[-+=]?[VLHSCETKQ\\?XYZIEWUBRG0-9/|]+(]*>)?[ ](and|or|and/or))* # pay X or Y
- [ ]
- (
- [,.)\"”]|$ # (end of word)
- | [ ][^ .,]*$ # still typing...
- | [ ]( or | and | in | less | more | to ) # or next word is ...
- )
- )
- | # keyword argument that is declared as mana
- | [ ]* # keyword argument that is declared as cost
- | , # keyword argument that is declared as cost
- ";
-mana_un_context := "(mana values? |converted mana costs? | life)"
+#### Convert extra costs
+long_cost := replace@(match:", [A-Z]", replace: { to_lower() } )
+long_nomana_cost := replace@(match:"[A-Z]", replace: { to_lower() })
+#### Convert first character to lower case
+lower_first := replace@(match:"^[A-Z]", replace: { to_lower() })
+combined_cost := replace@(match:", [A-Z]", replace: { to_lower() })+
+ replace@(match:",", replace:" and")+
+ replace@(match:"^[VLHSCETKQ\\?XYZIWUBRG0-9/|]+", in_context: "(^|[[:space:]])(?![a-z])", replace: "&")+
+ replace@(match:"^[A-Z]", replace: { to_lower() })
+alternative_cost := {
+ input := trim(input)
+ if s then
+ input := actionize(input)
+ input
+}@(trim: lower_first, s:false, trim:{input})
+actionize := replace@(match:"(activate|ante|cast|choose|create|destroy|discard|double|draw|exchange|exile|fight|mill|play|put|regenerate|return|reveal|sacrifice|shuffle|tap|untap|transform|vote|exert|pay)(?=($| |,|\\.))", replace:"\\1s")
+ +replace@(match:"(attach)", replace:"\\1es")
+ +replace@(match:"scry", replace:"scries")
+ +replace@(match:"your", replace:"their")
-# truncates the name of legends
-legend_filter := replace@(match:"(, | of | the | \"| “).*", replace: "" )
-
-# does this frame support Alchemy Rebalanced name symbol?
-alch_compatible := {false}
-
-# these are considered a correct 'word' for spellchecking in the text box:
-additional_text_words := match@(match:
- "(?ix)^(?: # match whole word
- ]*>.*?]*> # cardnames and stuff
- | [+-]?[0-9X]+ / [+-]?[0-9X]+ # '3/3', '+X/+X'
- )$")
-
-# the rule text filter
-# - adds mana symbols
-# - makes text in parentheses italic
-equip_filter :=
- replace@(match:"This creature", replace:"It")
- +replace@(match:"this creature", replace:"it")
+#### determine if a reminder text should refer to this card or that card
this_or_that := {
- this := "this"
- that := "that"
- type := input
- if input == "type" then type := to_lower(main_type(card.type))
- else if is_creaturish(card.type) then type := "creature"
- if type == "" then type := "permanent"
- if upper then (
- this := "This"
- that := "That"
- )
- if(type == "land" and not is_land(card.type)) then type := "permanent"
- this_that := this
- if ((input == "creature" and not is_creaturish(card.type)) or is_spell(card.type))
- then this_that := that
+ this := if upper then "This" else "this"
+ that := if upper then "That" else "that"
+ #### inherit type, creature override, or given type
+ type := if input == "type"
+ then to_lower(main_type(card.type))
+ else if input != "card" and is_creaturish(card.type)
+ then "creature"
+ else input;
+
+ this_that := if input == "creature" and not is_creaturish(card.type)
+ then that #### ex. "Equipped creature has wither."
+ else if is_spell(card.type) and not is_spell(type)
+ then that #### ex. "Target creature gains wither."
+ else this;
+
+ #### sanitize
+ type := if type == ""
+ then "permanent"
+ else if this_that == this and type == "artifact" and not is_artifact(card.type)
+ then "permanent" #### ex. an enchantment with crew
+ else if this_that == this and type == "land" and not is_land(card.type)
+ then "permanent" #### ex. an enchantment with hideaway before they changed it
+ else type;
+
this_that + " " + type
}@(upper:false)
-softline_ripper :=
- replace@(match:"?soft-line>", replace:"")
+
+############################################################## Complex reminder texts
+self_pro_check := match@(match:"You ha(ve|s) protection")
+protection_code := {
+ output := if match(input, match:"(artifacts|battles|creatures|enchantments|instants|kindreds|lands|planeswalkers|sorceries|planes|schemes|emblems|conspiracies|^[A-Z]|^[^ ]* named)") then replace(input, match:"and from", replace:"or", in_context:" ")
+ else if match(input, match:"^(converted|mana|power|toughness)") then "anything with " + replace(input, match:"and from", replace:"or", in_context:" ")
+ else if contains(input, match:"the chosen player") then "anything " + replace(input, match:"the chosen", replace:"controlled by that")
+ else if contains(input, match:"the chosen") then "anything with " + replace(input, match:"the chosen", replace:"that")
+ else if contains(input, match:"all colors") then "anything " + replace(input, match:"all colors", replace:"that's white, blue, black, red, or green")
+ else if match(input, match:"^you$") then "anything you control"
+ else if match(input, match:"^its owner$") then "anything its owner controls"
+ else if match(input, match:"^(each of )?your opponents$") then "anything " + replace(input, match:"(each of )?your opponents", replace:"controlled by those players")
+ else if match(input, match:"(the|a) [^\n]* of your choice") then "anything " + replace(input, match:"(the|a) ([^\n]*) of your choice", replace:"of that \\2")
+ else if input == "colorless" then "anything colorless"
+ else "anything " + replace(english_singular(input), match:"and from", replace:"or", in_context:" ")
+ output := " targeted, dealt damage, enchanted, equipped by " + output
+ if match(output, match:"(artifacts|creatures|instants|lands|planeswalkers|sorceries|tribals|planes|schemes|emblems|conspiracies|by [A-Z])") and not match(output, match:"(enchantmentsAura|Curse)") then
+ output := replace(output, match:", enchanted", replace:"")
+ else output := output
+ if match(output, match:"(enchantments|creatures|instants|lands|planeswalkers|sorceries|tribals|planes|schemes|emblems|conspiracies|by [A-Z])") and not match(output, match:"(artifacts|Equipment)") then
+ output := replace(output, match:" equipped", replace:"")
+ else output := output
+ if match(output, match:"equipped by") then output := replace(output, match:"equipped by", replace:"or equipped by")
+ else if match(output, match:"enchanted, by") then output := replace(output, match:"enchanted, by", replace:"or enchanted by")
+ else if match(output, match:"dealt damage, by") then output := replace(output, match:"dealt damage, by", replace:"or dealt damage by")
+ else ""
+ if match(output, match:"^ targeted, or dealt damage by") then output := replace(output, match:"^ targeted, or dealt damage by", replace:" targeted or dealt damage by")
+ if match(output, match:"anything [A-Z]") then output := replace(output, match:"anything ", replace:"")
+ if match(output, match:"or les") then output := replace(output, match:"or les$", replace:"or less")
+ if match(output, match:"(anything )?everything") then output := replace(output, match:"(anything )?everything", replace:"anything")
+ output := (if self_pro_check(card.text) then "You can't be" else if is_spell(card.type) then "It can't be blocked," else if is_creaturish(card.type) then "This creature can't be blocked," else "This permanent can't be") + output
+ output
+}
+phy_reminder := {
+ phy_match := filter_text(input, match:"(/[WUBRG])+", in_context:"H")
+ letters := split_text(phy_match, match:"/")
+ reminder_text := ""
+ if length(letters) == 2 then
+ reminder_text := "[H/" + letters[1] + "] can be paid with [" + letters[1] + "] or 2 life."
+ else if length(letters) > 2 then
+ reminder_text := "[H/" + letters[1] + "/" + letters[2] + "] can be paid with [" + letters[1] + "], " + "[" + letters[2] + "], or 2 life."
+ else
+ reminder_text := ""
+ reminder_text
+}
+#### includes localization ability
+craft_code := {
+ [
+ "en": {
+ #### beginning
+ rem := param2.value + ", Exile this artifact, Exile ";
+
+ #### check if a number is given
+ count := filter_text(param1.value, match:"^(one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen|twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety|[0-9]+)(-(one|two|three|four|five|six|seven|eight|nine))? (or more)?");
+
+ #### replace trailing space
+ count := trim(count)
+
+ #### check how many commas are given
+ commas := filter_text(param1.value, match:",");
+
+ #### check if this starts with a vowel
+ vowel := match(param1.value, match:"^[aeiouAEIOU]");
+
+ #### if we have a comma separated list, use the number of elements as the count
+ #### this doesn't support like, Craft with two Islands and two Mountains
+ #### you've done that to yourself
+ if commas != "" then count := english_number(length(commas)+1);
+
+ #### unused style (craft with three)
+ #### param1 == "three" count == "three"
+ #### counting style (craft with one or more); (craft with six artifacts)
+ #### param1 == "one or more" count == "one"; param1 == "six artifacts" count == "six"
+ #### singular style (craft with creature)
+ #### param1 == "creature" count == ""
+ if count == param1.value then
+ (
+ #### Exile three other...
+ rem := rem
+ + param1.value
+ + " other permanents you control and/or cards from your graveyard: "
+ )
+ else if count != "" then
+ (
+ #### Exile one or more from among...
+ #### Exile the six from among...
+ rem := rem
+ + (if count == "one or more" then param1.value else "the " + count)
+ + " from among other permanents you control and/or cards in your graveyard: "
+ )
+ else
+ (
+ #### Exile another creature you control or...
+ rem := rem
+ + "another " + param1.value + " you control or "
+ + (if vowel then "an " else "a ") + param1.value + " card from your graveyard: "
+ )
+
+ #### ending and return
+ rem := rem + "Return this card transformed under its owner's control. Craft only as a sorcery."
+ rem
+ },
+ "de": {
+ #### beginning
+ rem := param2.value + ", schnicke dieses Artefakt ins Exil, schicke ";
+
+ #### check if a number is given
+ count := filter_text(param1.value, match:"^(zwanzig|dreiβig|vierzig|fünfzig|sechzig|siebzig|achtzig|neunzig|eine[mr]|eins?|zwei|drei|vier|fünf|sechs?|sieben|sieb|acht|neun|zehn|elf|zwölf|[0-9]+)(und)?(zehn|zwanzig|dreiβig|vierzig|fünfzig|sechzig|siebzig|achtzig|neunzig)?( oder mehr(eren)?)? ?");
+
+ #### save the thing we're exiling
+ target := trim(replace(param1.value, match:count, replace:""))
+ alt_target := if length(target) > 15 then "Permanente" else target
+
+ #### format count
+ count := replace(count, match:"eine[mr]", replace:"eins")
+ count := trim(count)
+
+ #### check how many commas are given
+ commas := filter_text(param1.value, match:",");
+
+ #### check if this starts with a vowel
+ vowel := match(target, match:"^[aäeiouüAÄEIOUÜ]");
+
+ #### if we have a comma separated list, use the number of elements as the count
+ #### this doesn't support eg Craft with two Islands and two Mountains
+ #### you've done that to yourself
+ if commas != "" then (
+ count := german_number(length(commas)+2);
+ alt_target := "Permanente"
+ )
+
+ #### unused style (craft with three)
+ #### param1 == "three" count == "three"
+ #### counting style (craft with one or more); (craft with six artifacts)
+ #### param1 == "one or more" count == "one"; param1 == "six artifacts" count == "six"
+ #### singular style (craft with creature)
+ #### param1 == "creature" count == ""
+
+ if count == param1.value then
+ (
+ #### Exile three other...
+ rem := rem
+ + param1.value
+ + " weiteren Permanente, die du kontrollierst und/oder Karten aus deinem Friedhof ins Exil: "
+ )
+ else if count != "eins" then
+ (
+ #### with one or more...
+ #### with four or more
+ #### with two+...
+ rem := rem
+ + (
+ if count == "eins oder mehreren" then "ein oder mehrere weitere "
+ else if contains(count, match:"oder") then "die " + count + " weireren "
+ else "die " + count + " oder mehr weiteren "
+ #### todo this should list the denumbered param1.value instead
+ )
+ + alt_target
+ + (if vowel then ", das du" else ", die du")
+ + " kontrollierst und/oder Karten aus deinem Friedhof ins Exil: "
+ )
+ else
+ (
+ #### with einem Artefakt
+ #### with einem Kreatur
+ rem := rem
+ + (if target == "Artefakt" then "ein weiteres " else "ein ")
+ + target
+ + ", "
+ + (if vowel then "das du" else "die du")
+ + " kontrollierst, oder "
+ + (if vowel then "eines " else "eine ") + target
+ + (if target == "Kreatur" then "en-karte" else "-karte")
+ +" aus deinem Friedhof ins Exile: "
+ )
+
+ #### ending and return
+ rem := rem + "Bringe diese Karte transformiert unter der Kontrolle ihres Besitzers ins Spiel zurück. Spiele Anfertigung wie eine Herexi."
+ rem
+ }
+ ][lang_setting("code") or else "en"]()
+}
+############################################################## 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
+ (
+ : #### G: something
+ | , #### G, tap: something
+ | [+][ ]?[ ]?— #### Spree
+ | or[ ] #### Add X, Y, or Z.
+ | [ ]to[ ]your #### Add X, Y, or Z to your mana pool.
+ | you[ ]get[ ] #### You get E, you get TK
+ | [ ]was[ ]spent #### if G was spent to cast
+ | [ ]can[ ]be[ ]paid
+ | (pays?|additional|costs?|the|adds?|pay(ed)?[ ](with|using)) #### pay X. creatures cost 1 less. pay an additional G.
+ ([ ]either)? #### pay either X or Y
+ ([ ](]*>)?[-+=]?[VLHSCETKQ\\?XYZIEWUBRG0-9/|]+(]*>)?,)* #### pay X, Y or Z
+ ([ ](]*>)?[-+=]?[VLHSCETKQ\\?XYZIEWUBRG0-9/|]+(]*>)?[ ](and|or|and/or))* #### pay X or Y
+ [ ]
+ (
+ [,.)\"”]|$ #### (end of word)
+ | [ ][^ .,]*$ #### still typing...
+ | [ ]( or | and | in | less | more | to ) #### or next word is ...
+ )
+ )
+ | #### keyword argument that is declared as mana
+ | [ ]* #### keyword argument that is declared as cost
+ | , #### keyword argument that is declared as cost
+ ";
+#### remove false positives
+mana_un_context := "(mana values? |converted mana costs? | life)"
+
+#### atoms
+#### truncates the name of legends
+legend_filter := replace@(match:"(, | of | the | \"| “).*", replace: "" )
+#### does this frame support Alchemy Rebalanced mana symbol in names?
+alch_compatible := {false}
+#### set tab insert atoms
+inserts_values := { split_text(set.inserts+";;;;;;;;;", match:";") }
+inserts_count := { clamp(length(semicolon_count(set.inserts)), minimum:1, maximum:9) }
+
+#### these are considered a correct 'word' for spellchecking in the text box:
+additional_text_words := match@(match:
+ "(?ix)^(?: #### match whole word
+ ]*>.*?]*> #### cardnames and stuff
+ | [+-]?[0-9X]+ / [+-]?[0-9X]+ #### '3/3', '+X/+X'
+ )$")
+
+#### Automatically correct errant syntax
auto_correct :=
replace@(match:" it’s (controller|owner|power|toughness|converted|other)", replace:" its \\1")
+replace@(match:"Then, if" replace:"Then if")
@@ -908,21 +1349,23 @@ auto_correct :=
+replace@(match:"(ecomes?) the Monarch" replace:"\\1 the monarch")
+replace@(match:"does (combat|[X0-9]+) damage" replace:"deals \\1 damage")
+replace@(
- match: "(gains |gain |have |has )" # preceded by this
- + "()" # inside a kw
- + "([A-Z])" # match this
+ match: "(gains |gain |have |has )" #### preceded by this
+ + "()" #### inside a kw
+ + "([A-Z])" #### match this
replace: { _1 + _2 + to_lower(_3)})
+replace@(
- match: "([ ]*: |—| — )" # preceded by this
- + "([[:lower:]])" # match this
- + "(?![)])", # not followed by this
+ match: "([ ]*: |—| — )" #### preceded by this
+ + "([[:lower:]])" #### match this
+ + "(?![)])", #### not followed by this
replace: { _1 + to_upper(_2) })
+
+#### Automatically apply errata
auto_errata :=
replace@(match:"converted mana cost", replace:"mana value")
+replace@(match:"(?i)(Totem armor|Totembeistand|Armadura tótem|totémique|Armatura totem|Armadura de totem|族霊鎧|替身甲)", replace:{errata_map[_1] or else _1})
+replace@(match:"hen shuffle your library", replace:"hen shuffle")
+replace@(match:"this (?:ability )?(?:only )?(?:any ?time you could cast|as) a", in_context: "(Activate|Play) n? (instant|sorcery)", replace:"only as a")
-
+#### can be localized via errata_map
errata_map := [
"Totem armor": "Umbra armor",
"Totem Armor": "Umbra armor",
@@ -940,52 +1383,43 @@ errata_map := [
"Armadura de totem": "Armadura de sombra",
"armadura de totem": "armadura de sombra"
]
-ex_test := {
- expand_keywords(
- input,
- condition: {
- correct_case or (mode != "pseudo" and not used_placeholders)
- }
- default_expand: {
- chosen(choice:if correct_case or mode == "action" then mode else "lower case", set.automatic_reminder_text) and chosen(choice:mode, set.automatic_reminder_text)
- },
- combine: {
- keyword := "{keyword}"
- reminder := process_english_hints(if has_pt() then reminder else equip_filter(reminder))
- if mode == "pseudo" then "{keyword}"
- else keyword + if expand then " ({reminder})" else ""
-
- },
- margin_code: margin_code
- )
-}
+
+#### the rule text filter
+#### - adds reminder text
+#### - fills in CARDNAME and INSERT
+#### - adds mana symbols
+#### - makes text in parentheses italic
+#### - indents modals
+#### - runs auto correct/errata
+#### - spellchecks
+#### - margins aren't applied here; they're patched onto this by templates that use them
text_filter :=
- # step 1 : remove all automatic tags
+ #### step 1 : remove all automatic tags
remove_tag@(tag: "") +
- remove_tag@(tag: "") +
- remove_tag@(tag: "") +
+ remove_tag@(tag: "") +
+ remove_tag@(tag: "") +
remove_tag@(tag: "") +
remove_tag@(tag: "") +
remove_tag@(tag: "",
replace:"BOLDAROUND"
- )+
+ ) +
replace@(
match:"",
replace:"ITALAROUND"
- )+
+ ) +
replace@(
match:"",
replace:"SYMAROUND"
- )+
- # step 2 : reminder text for keywords
+ ) +
+ #### step 2a : reminder text for keywords
expand_keywords@(
condition: {
correct_case or (mode != "pseudo" and not used_placeholders)
@@ -994,79 +1428,80 @@ text_filter :=
chosen(choice:if correct_case or mode == "action" then mode else "lower case", set.automatic_reminder_text) and chosen(choice:mode, set.automatic_reminder_text)
},
combine: {
- keyword := "{keyword}"
+ keyword := "{keyword}"
reminder := process_english_hints(reminder)
if mode == "pseudo" then "{keyword}"
else keyword + if expand then " ({reminder})" else ""
- }) +
- # step 2ba : apply face_code
+ }
+ ) +
+ #### step 2b : apply face_code
replace@(
match: "face_(.*?)_end",
replace: {face_code(_1)}
- )+
- # step 2b : move action keywords' reminder text to the end of the line
+ ) +
+ #### step 2c : move action keywords' reminder text to the end of the line
replace@(
- match: "(]+> (?:(?!]+>]*>)([^\n]*)", #######removed "| ?]+> (?:(?!]+>]*>)([^\n]*)", #### removed "| ?]+> (?:(?!]+>]*>)([^\n]*?)(]+> (?:(?!]+>]*>)([^\n]*)",
replace: "\\2\\4\\3\\1"
- ) +
- # step 2c : allow a sentence after lowercase reminder text for equips etc.
+ ) +
+ #### step 2e : allow a sentence after lowercase reminder text for equips etc.
#replace@(
# match: "(]+>[a-z][^<]+)((?:(?!]*>)([^\n]+)$",
# replace: "\\1\\3\\2"
# ) +
- # step 2d : remove duplicate reminder text
+ #### step 2f : remove duplicate reminder text
replace@(
match: "(]*>[^)]+[)]]*>)([^\n]+)\\1"
replace: "\\2\\1"
- ) +
- # step 2e : combine reminder texts
+ ) +
+ #### step 2g : combine reminder texts
replace@(
match: "[)](]+>]>]+> )[(]"
replace: "\\1"
) +
- # step 2f : temp fix for formatting buttons
+ #### step 2h : temp fix for formatting buttons
replace@(
match:"BOLDAROUND",
replace:""
- )+
+ ) +
replace@(
match:"ITALAROUND",
replace:""
- )+
+ ) +
replace@(
match:"SYMAROUND",
replace:""
- )+
+ ) +
replace@(
match:"-\n-"
replace:"\n"
- )+
- # step 3a : expand shortcut word CARDNAME
+ ) +
+ #### step 3a : expand shortcut word CARDNAME
replace@(
- match: "CARDNAME>?",
- in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'|‘|-|—|/|)", # TODO: Allow any punctuation before
+ match: "CARDNAME>?", #### >? is here so after replacement, the mouse snaps to the end of
+ in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'|‘|-|—|/|)", #### TODO: Allow any punctuation before
replace: ""
- ) +
- # step 3b : expand shortcut word LEGENDNAME
+ ) +
+ #### step 3b : expand shortcut word LEGENDNAME
replace@(
match: "LEGENDNAME>?",
- in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'|‘|/|)", # TODO: Allow any punctuation before
+ in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'|‘|/|)", #### TODO: Allow any punctuation before
replace: ""
- ) +
- # step 3c : fill in atom fields
+ ) +
+ #### step 3c : fill in atom fields
tag_contents@(
tag: "",
- contents: { "" + (if card_name=="" then "CARDNAME" else strip_card_codes(card_name)) + "" }
- ) +
+ contents: { "" + (if card_name=="" then "CARDNAME" else strip_card_codes(card_name, atom:true)) + "" }
+ ) +
tag_contents@(
tag: "",
- contents: { "" + (if card_name=="" then "LEGENDNAME" else legend_filter(strip_card_codes(card_name))) + "" }
- ) +
+ contents: { "" + (if card_name=="" then "LEGENDNAME" else legend_filter(strip_card_codes(card_name, atom:true))) + "" }
+ ) +
replace@(
match: "INS([1-9])",
in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'|‘|/|)",
@@ -1074,59 +1509,73 @@ text_filter :=
) +
{
out := input
- for x from 1 to 9 do
+ for x from 1 to inserts_count() do
out := tag_contents(out,
tag: "",
contents: { "" + (if inserts_values()[x-1] == "" then "INS"+x else inserts_values()[x-1]) + "" }
)
out
} +
- # step 4 : explict non mana symbols
+ #### step 4 : explict non mana symbols
replace@(
match: "\\][-+=]?[VLHSCETQ\\?XYZIWUBRG0-9/|]+\\[",
- replace: {"" + mana_filter_t() + ""} ) +
- # step 5 : add mana & tap symbols
+ replace: {"" + mana_filter_t() + ""}
+ ) +
+ #### step 5 : add mana & tap symbols
replace@(
match: "(?" + _1 + ""} ) +
+ replace: {"" + _1 + ""}
+ ) +
replace@(
match: "\\b((TK)+)(T)?\\b",
in_context: mana_context,
- replace: {"" + _1 + "" + _3}) +
+ replace: {"" + _1 + "" + _3}
+ ) +
replace@(
match: "\\b[VLHSCETQ\\?XYZIWUBRG0-9/|]+\\b",
in_context: mana_context,
- replace: {"" + mana_filter_t() + ""} ) +
- # step 5b : remove false positive mana & tap symbols
+ replace: {"" + mana_filter_t() + ""}
+ ) +
+ #### step 5b : remove false positive mana & tap symbols
replace@(
match: "([VLHSCETQ\\?XYZIWUBRG0-9/|]+)",
in_context: mana_un_context,
- replace: "\\1" ) +
- # step 5c : add explicit mana symbols
+ replace: "\\1"
+ ) +
+ #### step 5c : add explicit mana symbols
replace@(
match: "\\[[-+=]?[VLHSCETQE\\?XYZIWUBRG0-9/|]+\\]",
- replace: {"" + mana_filter_t() + ""} ) +
- # step 6 : curly quotes
- {if set.curly_quotes then curly_quotes(input) else input} +
- # step 7 : italicize text in parenthesis
+ replace: {"" + mana_filter_t() + ""}
+ ) +
+ #### step 6 : curly quotes
+ {
+ if set.curly_quotes then curly_quotes(input) else input
+ } +
+ #### step 7 : italicize text in parenthesis
replace@(
- match: "[(]([^)\n]|[(][^)\n]*[)])*[)]?",
+ match: "[(]([^)\n]|[(][^)\n]*[)])*[)]?",
in_context: "(^|[[:space:]])|",
- replace: "&") +
- # step 7b : indent bullets
- replace@(
- match: "^(• |[+] ?)([^\n]+\n?)",
- replace: {"" + _1 + "" + _2 + ""}
- )+
- # step 7c : clean up modals
- {
+ replace: "&"
+ ) +
+ #### step 7b : indent bullets
+ replace@(
+ match: "^(• |[+] ?)([^\n]+\n?)",
+ replace: {"" + _1 + "" + _2 + ""}
+ ) +
+ #### step 7c : clean up modals
+ {
if is_modal(input)
then bump_text(softline_ripper(input))
else input
- }+
- # step 8 : automatic capitalization, but not after "("
- # step 9 : spellcheck
+ } +
+ #### 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.auto_correct then
auto_correct(input)
@@ -1137,7 +1586,7 @@ text_filter :=
auto_errata(input)
else input
} +
- {
+ {
if language().code == "ja" or language().code == "zht" or language().code == "zhs" then input
else if set.mark_errors then
check_spelling(
@@ -1145,840 +1594,157 @@ text_filter :=
extra_dictionary: "/magic.mse-game/dictionary/magic-words",
extra_match: additional_text_words
)
- else input
+ else input
}
-modal_lines := replace@(match:"?soft-line>", replace:"")
- +replace@(match:"(.+)", replace:"\\1")
-
-modal_text_filter := text_filter + modal_lines
-
-############################################################## Other boxes
-
-# the flavor text filter
-# - makes all text italic
+#### the flavor text filter
+#### - makes all text italic
+flavor_text_filter_default := { "" }
flavor_text_filter :=
- # step 1 : remove italic tags
- remove_tag@(tag: "") +
- # step 2 : surround by tags
+ #### step 1 : remove italic tags
+ remove_tag@(tag: "") +
+ #### step 2 : surround by tags
{ "" + input + "" } +
- # curly quotes
- {if set.curly_quotes then curly_quotes(input) else input} +
- # spellcheck
- { if set.mark_errors
- then check_spelling(language:language().spellcheck_code)
- else input
+ #### curly quotes
+ { if set.curly_quotes then curly_quotes(input) else input } +
+ #### 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: "{input}{tag}>"
+############################################################## Face code
+#### this is a workaround to let reminder code access the proper face of a card
+card_face := {
+ front := card[input]
+ back := if card[input+"_2"] or else "" != "" then card[input+"_2"] else card[input]
+ if match(margin_code, match:"(text[2456]|lv[5678])") then back else front
}
-
-split_at_spaces := split_text@(match: " +")
-remove_leading_spaces := replace@(match: "^ +", replace: "")
-remove_trailing_soft_tags := replace@(match: ".*?$", replace: "")
-replace_soft_tags := replace@(match: ".*?", replace: " ")
-sub_type_filter :=
-{
- subtype_separator := lang_setting("subtype_separator")
- code := lang_setting("code")
- input := remove_tag(input, tag: "" + sub_type + ""
- else "" + sub_type + ""
- ) else (
- ### Check for single word sub types
- split := split_at_spaces(input)
- input := if length(split) > 1 then replace(input, match: "^" + regex_escape(split.0), replace: "") else ""
- if i == 0 then "" + split.0 + ""
- else "" + split.0 + "")))
- )
- ### Add separators between types, keep additional spaces if there are more than one
- sub_types := replace(sub_types, match: "(]*>)( *)("
- else sub_types + "" + subtype_separator + ""
- ) else input ### Do nothing if we don't know the type
+face_code := {
+ face := ""
+ if margin_code == "text2" or margin_code == "lv5" or margin_code == "lv6" or margin_code == "lv7" or margin_code == "lv8" then face := "_2"
+ output := face_scripts[input](face) or else if_parse(input, face:face) or else input
+ output
}
-
-# 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 lang_setting(setting)(card.super_type) then "," + space_to_comma(to_text(card.sub_type)) else ""
+flip_face := {
+ if input == "_2" then "" else "_2"
}
-all_races := {
- for each card in set do
- if lang_setting("is_creature")(card.super_type) or lang_setting("is_kindred")(card.super_type) then
- "," + only_first(to_text(card.sub_type))
- else ""
+face_scripts := [
+ iscreature: {is_creature(card["type"+face])},
+ iscreaturish: {is_creaturish(card["type"+face])},
+ isenchantment: {is_enchantment(card["type"+face])},
+ isartifact: {is_artifact(card["type"+face])},
+ island: {is_land(card["type"+face])},
+ isspell: {is_spell(card["type"+face])},
+ istarget: {is_targeted(card["text"+face])},
+ subtypes: {separate_words(card["sub_type"+face], spacer: " ")}
+ contains: {
+ contains(card[field+face], match:query)
+ },
+ notcontains: {not contains(card[field+face], match:query)},
+ name: {card["name"+face]},
+ cost: {card["casting_cost"+face]},
+ altname: {card["name"+flip_face(face)]},
+ altcost: {card["casting_cost"+flip_face(face)]},
+]
+expand_facecodes := [
+ subtype: "sub_type",
+ castingcost: "casting_cost",
+ manacost: "casting_cost"
+]
+if_parse := replace@(
+ match: "if_(.*)_then_(.*)_else_(.*)",
+ replace: {if_scripts(_1, t:_2, f:_3)}
+)
+if_scripts := {
+ contCheck := split_text(input, match:"_")
+ func := contCheck[0]
+ field := ""
+ query := "^$"
+ if length(contCheck) == 3 then (
+ field := contCheck[0]
+ func := contCheck[1]
+ query := contCheck[2]
+ )
+ field := expand_facecodes[field] or else field
+ if face_scripts[func](face, field:field, query:query) or else false then t else f
}
-all_classes := {
- for each card in set do
- if lang_setting("is_creature")(card.super_type) then
- "," + space_to_comma(only_next(to_text(card.sub_type)))
- else ""
-}
-
-# Determine a rarity code for M15 styles.
-rarity_code := {
- if not set.rarity_codes then ""
- else 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_half_generic := match@(match: "1/2")
-is_colored_mana := match@(match: "[WUBRG]")
-only_numbers := filter_text@(match: "^[0123456789]+")
-cmc_split := break_text@(match: "(?ix) 1/2 | [|][WUBRGC] | TK | [0-9](/[WUBRGCVLHSCETQ2]) | [0-9]+(?!/[WUBRGCVLHSCETQ2]) | [WUBRGCVLHS0-9](/[WUBRGCVLHS])\{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
- ))
-}
-mana_value := cmc
-write_wubrg := {
- (if match(input, match:"white") then "W" else "")+
- (if match(input, match:"blue") then "U" else "")+
- (if match(input, match:"black") then "B" else "")+
- (if match(input, match:"red") then "R" else "")+
- (if match(input, match:"green") then "G" else "")
-}
-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
- ))
-}
-generic_mana := {to_number(
- for each sym in cmc_split(to_text()) do (
- numbers := only_numbers(sym)
- if is_half_generic(sym) then 0.5
- else if numbers != "" then to_int(numbers)
- else 0 # all other symbols are 1
- ))
-}
-
-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")
- multi_color := count_chosen(choices:"white, blue, black, red, green")
- if land then "land"
- else if multi then "multicolor"
- else if multi_color == 2 and chosen(choice:"artifact") then "hybrid" ##hybrid artifacts would show as their first color
- 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") }
-is_legend := { true }
-mainframe_walker := {false}
-mainframe_walker_text_script := {combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text)}
-mainframe_walkerb := {false}
-mainframe_walker_text_scriptb := {combined_editor(field1: card.level_5_text, separator1: "\n", field2: card.level_6_text, separator2: "\n", field3: card.level_7_text)}
-alt_text := {false}
-alt_text_script := {false}
-alt_textb := {false}
-alt_text_scriptb := {false}
-
-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: "^", replace: "")+
- replace@(match: "[ ]+", in_context: "$", replace: "")
-remove_type := replace@(match: "(Artifact|Creature|Enchantment|Instant|Land|Planeswalker|Sorcery)", replace: "")+
- replace@(match: "[ ]+", in_context: "^", replace: "")+
- replace@(match: "[ ]+", in_context: "$", replace: "")
-node_script := { if card.shape == "double faced" then "transform day" 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 ""
-}
-
-ancestral_mana := { card.pt != "" and card.pt == "" }
-is_unsorted := {"false"}
-special_text := { "" }
-special_text2 := { "" }
-exporter_name_filter := filter_text@(match:"!exporte?r?name [^\n!(]+")
-exporter_name_grabber := replace@(match:"!exporte?r?name ", replace:"")
-clean_name := remove_tags +
- replace@(match:"(\n| +$|^ +)", replace:"") +
- replace@(match:"’", replace:"'")
+############################################################## Level Margins
+#### these will be determined by the style affecting the margins and otherwise be 0
+margin_left := {0}
+margin_right := {0}
+margin_top := {0}
+remove_margins := replace@(
+ match: "?margin:[0-9]+(:+[0-9]+)?(:+[0-9]+)?>",
+ replace:""
+)
+#### remove 0 margins and margins with no text
+cull_margins := replace@(match:"?margin:0(:+0)?(:+0)?>", replace:"")+
+ replace@(match:"", replace:"")
-card_name := {
- test_name := exporter_name_grabber(exporter_name_filter(card.notes))
- if test_name == "" then test_name := card.name
- clean_name(test_name)
-}
-dfc_splitter_name := {
- back_name := card.name_2
- full_name := card_name()
- if back_name != "" then full_name := full_name + "_" + clean_name(back_name)
- full_name
-}
-exporter_num_filter := filter_text@(match:"!num [^\n!]+")
-exporter_num_grabber := replace@(match:"!num ", replace:"")
-trim_zeroes := replace@(match: "^00?", replace: "")+
- replace@(match: "a?/[0-9b]+", replace: "")
-corrected_card_number := { if exporter_num_grabber(exporter_num_filter(card.notes)) != "" then exporter_num_grabber(exporter_num_filter(card.notes)) else if card.custom_card_number != "" then trim_zeroes(card.custom_card_number) else card_number() }
-
-comma_count := filter_text@(match:",")
-round_up := {to_int(0.99999999999998+input)}
-round_near := {to_int(0.5+input)}
-to_title := replace@(match:"(^| )([A-z])([^ ]*)", replace:{_1+ to_upper(_2) + to_lower(_3)})
-to_sentence := replace@(match:"(^|\n)([A-z])([^\n]*)", replace:{_1+ to_upper(_2) + to_lower(_3)})
-join_arrays := {
- a1 + for x from 0 to length(a2)-1 do [a2[x]]
-}
-join_list := {
- string := ""
- if length(input) == 2 then spacer := " "
- if length(input) == 1 then closing := ""
- for x from 0 to length(input)-1 do
- string := string + (if x == length(input)-1 then closing else "") + input[x] + (if x == length(input)-1 then "" else spacer)
- string
-}@(spacer:", ", closing:"and ")
-join := {
- if i >= length(input) then ""
- else if i == length(input)-1 then input[i]
- else input[i]+sep+join(input, i: i+1, sep: sep)
-}@(i: 0, sep:"")
-
-# workaround cause position() is broken for text arrays
-contains_element := {
- if input == [] then false else length(filter_list(input, filter:{input == element})) > 0
-}
-ar_position := {
- pos := -1
- for x from 0 to length(in)-1 do (
- if in[x] == of then pos := x;
- )
- pos
-}
-unique_elements := {
- e1 := []
- e2 := []
- e1 := e1 + for x from 0 to length(of)-1 do if ar_position(of:of[x], in:from) == -1 then [of[x]]
-}
-includes := {ar_position(of:input in:array) != -1}
-
-pull_comma_array := {
- array := split_text(input, match:divider)
- length := length(comma_count(input))
- ending := to_number(end)
- if (cell >= (length + (1-ending)))
- then default
- else if array[cell] == "" or array[cell] == nil or array[cell] == "-"
- then default
- else array[cell]
-}@(default:0, end: 1, divider:",", cell:0)
-##todo check nil
-#### standard is pull_comma_array("X,Y,Z,", cell: 0)
-#### returns "X"
-#### ending true for coordinates (requires a final divider to ensure element is complete)
-#### ending false for moving (doesn't require divider, moving 1 then 11 is fine)
-#### divider is "," by default, can change
-#### can also add default to return in case of errors
-
-##a workaround for the crop offset function that doesn't appear to work
-##slice_chop(input:image, height:(final height), width:(final width), distance:(length from bottom to top of final image))
-slice_crop := {
- img := flip_vertical(input)
- img := crop(img, height:distance, width:width, offset_x:0, offset_y:0)
- img := flip_vertical(img)
- img
- if(height != 0 and height != distance) then
- img := crop(img, height:height, width:width, offset_x:0, offset_y:0)
- img
-}@(height:0)
-
-#juryrig fix for level defaults. janky because MSE hates {true}
-transfer_levels := {true}
-transfer_levels_2 := {true}
-a_saga := {false}
-saga_reminder := { "As this Saga enters and after your draw step, add a lore counter. Sacrifice after III." }
-b_saga := {false}
-saga_reminderb := { "As this Saga enters and after your draw step, add a lore counter. Sacrifice after III." }
-############################################################## Watermark Updates
-card_spotlight := { "/magic-mainframe-watermarks.mse-include/spotlight/" + card_new_color() + "spotlight.png" }
-custom_watermark_1 := { if set.custom_watermark_1 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_1 else "/magic-watermarks.mse-include/planeswalker.png" }
-custom_watermark_2 := { if set.custom_watermark_2 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_2 else "/magic-watermarks.mse-include/planeswalker.png" }
-custom_watermark_3 := { if set.custom_watermark_3 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_3 else "/magic-watermarks.mse-include/planeswalker.png" }
-custom_watermark_4 := { if set.custom_watermark_4 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_4 else "/magic-watermarks.mse-include/planeswalker.png" }
-custom_watermark_5 := { if set.custom_watermark_5 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_5 else "/magic-watermarks.mse-include/planeswalker.png" }
-custom_watermark_6 := { if set.custom_watermark_6 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_6 else "/magic-watermarks.mse-include/planeswalker.png" }
-custom_watermark_7 := { if set.custom_watermark_7 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_7 else "/magic-watermarks.mse-include/planeswalker.png" }
-custom_watermark_8 := { if set.custom_watermark_8 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_8 else "/magic-watermarks.mse-include/planeswalker.png" }
-custom_watermark_9 := { if set.custom_watermark_9 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_9 else "/magic-watermarks.mse-include/planeswalker.png" }
-custom_watermark_10 := { if set.custom_watermark_10 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_10 else "/magic-watermarks.mse-include/planeswalker.png" }
-custom_watermark_a := {"/magic-watermarks.mse-include/planeswalker.png"}
-custom_watermark_b := {"/magic-watermarks.mse-include/planeswalker.png"}
-############################################################## Flavor Bar Equation
-
-
-chop_top := {0}
-chop_bot := {0}
-bar_offset := {0}
-offset_lines := {0}
-chop_top2 := {0}
-chop_bot2 := {0}
-bar_offset2 := {0}
-offset_lines2 := {0}
-
-##### Set chop_top(), chop_bot(), bar_offset(), and offset_lines to 0 to reduce replacements in chopping frames
-##### Full equations to use in chopping templates below
-##### chop_top := {if styling.chop_top == "" then 0 else if comma_count(styling.chop_top) == "," or comma_count(styling.chop_top) == ",," then split_text(match:",", styling.chop_top).0 else styling.chop_top}
-##### chop_bot := {if comma_count(styling.chop_top) == ",," then split_text(match:",", styling.chop_top).1 else if styling.chop_bottom == "" then 0 else styling.chop_bottom}
-##### bar_offset := {if styling.flavor_bar_offset == "-" or styling.flavor_bar_offset == "+" then 0 else to_number(styling.flavor_bar_offset)}
-##### offset_lines := {offset_counter(styling.flavor_bar_offset)}
-
-top_of_textbox := {card_style.text.top }
-bottom_of_textbox := {card_style.text.bottom }
-top_of_textbox2 := {card_style.text_2.top }
-bottom_of_textbox2 := {card_style.text_2.bottom }
-offset_counter := {length(filter_text(input, match:"u")) - length(filter_text(input, match:"d"))}
-paragraph_count := filter_text@(match:"\n")
-hard_paragraph_count :=
- replace@(match:"\n", replace:"")+ #count hard breaks for their extra space
- filter_text@(match:"\n")
-soft_break_filter :=
- filter_text @(match:"<", in_context: "soft-line>") #count soft breaks for quotes
-word_split := split_text@(match:" ") #split words to better calculate line lengths
-small_filter := filter_text@(match:"[\\.,\\?!il’]") #grab the tiny characters
-fb_length := {length(input) - 0.3 * length(small_filter(input))}#reduce the effect of tiny characters
-calc_lines := { sum := 0 #estimate lines by character limit
- lines := 1 #minimum of 1
- for e from 0 to length(input)-1 do (
- sum := sum + fb_length(input[e]);
- if sum > char then ( #if new word is over the limit
- lines := lines + 1; #add new line
- sum := fb_length(input[e])) #reset the sum
- else
- sum := sum + 1; #else add it and a space to the sum
- )
- lines #return number of lines
-}
-lines_of_text := { #estimate lines in break blocks
- lines := 0 #further improves the previous eq
- for x from 0 to length(input)-1 do
- if input[x] or else "" != "" then #if the break isn't empty, check it
- lines := lines + calc_lines(word_split(input[x]), char:char)
- lines
-}
-flavor_text := {split_text(match:"\n", remove_tags(card.flavor_text+"\n"))} #remove tags, add \n so .1 doesn't explode
-hard_flavor_break := { if not contains(card.flavor_text, match:"\n") then 0 else if contains(card.flavor_text, match:"\n") then 0 else if lines_of_rules() >= 3 then -3 else -2}
-font_size := {min(14,round_near(card_style.text.content_height / card_style.text.content_lines) - 8)} #approximate font size
-adj_char_width := {7.35 * min(14, font_size()+0.95) / 14} #average char width, adjusted for font size
-char_per_line := {min(52,round_up(card_style.text.content_width / adj_char_width())+1.5)} #approximate character limit. very rarely over 52 but standard eq can reach 60+
-lines_of_flavor := {lines_of_text(flavor_text(), char:char_per_line())}
-lines_of_rules := { card_style.text.content_lines - lines_of_flavor() } #rules of lines for ratio weirdness
-line_height := {(card_style.text.content_height / card_style.text.content_lines)}
-padding_height := { 0.5*(bottom_of_textbox() - top_of_textbox() - card_style.text.content_height) } #space between top of textbox and text
-linebreak_height := { 2*length(hard_paragraph_count(card.rule_text)) }
-###correction for ratio of rules/flavor causing weirdness
-uneven_correction := { if lines_of_flavor() == 1 then max(4, (card_style.text.content_lines - (2*lines_of_flavor()))) else (card_style.text.content_lines - (2*lines_of_flavor())) }
-###add it all up
-###old_bar_equation is compatibilty for 2.0.0
-old_bar_equation := { top_of_textbox() + padding_height() + card_style.text.content_height - line_height()*(lines_of_flavor() + offset_lines()) + linebreak_height() - uneven_correction() + front_corr() + bar_offset() + hard_flavor_break() +1 }
-bar_equation := {if card_style.text.layout.blocks[1].bottom or else 0 > 0 then card_style.text.top + 0.5*(card_style.text.layout.blocks[0].bottom+card_style.text.layout.blocks[1].top) else old_bar_equation()}
-
-flavor_text2 := {split_text(match:"\n", remove_tags(card.flavor_text_2+"\n"))} #remove tags, add \n so .1 doesn't explode
-hard_flavor_break2 := { if not contains(card.flavor_text_2, match:"\n") then 0 else if contains(card.flavor_text_2, match:"\n") then 0 else if lines_of_rules2() >= 3 then -3 else -2}
-font_size2 := {min(14,round_near(card_style.text_2.content_height / card_style.text_2.content_lines) - 8)} #approximate font size
-adj_char_width2 := {7.35 * min(14, font_size2()+0.95) / 14} #average char width, adjusted for font size
-char_per_line2 := {min(52,round_up(card_style.text_2.content_width / adj_char_width2())+1.5)} #approximate character limit. very rarely over 52 but standard eq can reach 60+
-lines_of_flavor2 := {lines_of_text(flavor_text2(), char:char_per_line2())}
-lines_of_rules2 := { card_style.text_2.content_lines - lines_of_flavor2() } #rules of lines for ratio weirdness
-line_height2 := {(card_style.text_2.content_height / card_style.text_2.content_lines)}
-padding_height2 := { 0.5*(bottom_of_textbox2() - top_of_textbox2() - card_style.text_2.content_height) } #space between top of textbox and text
-linebreak_height2 := { 2*length(hard_paragraph_count(card.rule_text_2)) }
-###correction for ratio of rules/flavor causing weirdness
-uneven_correction2 := { if lines_of_flavor2() == 1 then max(4, (card_style.text_2.content_lines - (2*lines_of_flavor2()))) else (card_style.text_2.content_lines - (2*lines_of_flavor2())) }
-###add it all up
-old_bar_equation2 := { top_of_textbox2() + padding_height2() + card_style.text_2.content_height - line_height2()*(lines_of_flavor2() + offset_lines2()) + linebreak_height2() - uneven_correction2() + back_corr() + bar_offset2() + hard_flavor_break2() +1 }
-bar_equation2 := {if card_style.text_2.layout.blocks[0].bottom or else 0 > 0 then card_style.text_2.top + 0.5*(card_style.text_2.layout.blocks[0].bottom+card_style.text_2.layout.blocks[1].top) else old_bar_equation2()}
-
-##### long correction coefficient based off several sets of data
-front_corr := {correction_coeff(lof:lines_of_flavor(), lor:lines_of_rules(), lbh:linebreak_height())}
-back_corr := {correction_coeff(lof:lines_of_flavor2(), lor:lines_of_rules2(), lbh:linebreak_height2())}
-correction_coeff := {
- (if lor == 1 then
- (if lof == 1 then 3
- else if lof == 2 then 1
- else if lof == 3 then 1.5
- else if lof == 4 then 0
- else 5 - lof)
- else if lor == 2 and lbh == 2 then
- (if lof == 1 then 1
- else if lof == 2 then 1
- else if lof == 3 then 2
- else if lof == 4 then 2
- else 3)
- else if lor == 2 then
- (if lof == 1 then 1
- else if lof == 2 then 0
- else if lof == 3 then 0
- else if lof == 4 then 0
- else -1)
- else if lor == 3 and lbh == 2 then
- (if lof == 1 then 0
- else if lof == 2 then 0
- else if lof == 3 then 1
- else if lof == 4 then 1
- else 2)
- else if lor == 3 then
- (if lof == 1 then 0
- else if lof == 2 then -1
- else if lof == 3 then -0.5
- else if lof == 4 then -1
- else 0)
- else if lor == 4 and lbh == 2 then
- (-2 + lof)
- else if lor == 4 then
- (if lof == 1 then -1
- else if lof == 2 then 0
- else if lof == 3 then -0.5
- else -1)
- else if lor == 5 and lbh == 4 then
- (-5 + lof)
- else if lor == 5 and lbh == 2 then
- (-2 + lof)
- else if lor == 5 then
- (2 - lof)
- else if lor == 6 and lbh == 2 then
- (-1 - lof)
- else if lor == 6 then
- (2 - lof)
- else 0) + (if lbh >= 4 then 0.5*lbh-1)
-}
-######################## Modal DFC hints
-auto_flags := {true}
-front_modal_hint := {
- if not auto_flags() then ["", "", 10.5]
- else if remove_tags(card.sub_type_2) != "" then [card.sub_type_2, ""+card.casting_cost_2+"", 10.5]
- else if card.casting_cost_2 != "" then [main_type(card.super_type_2), ""+card.casting_cost_2+"", 10.5]
- else [main_type(card.super_type_2), mana_ability(card.rule_text_2), 10.5]
-}
-back_modal_hint := {
- if not auto_flags() then ["", "", 10.5]
- else if remove_tags(card.sub_type) != "" then [card.sub_type, ""+card.casting_cost+"", 10.5]
- else if card.casting_cost != "" then [main_type(card.super_type), ""+card.casting_cost+"", 10.5]
- else [main_type(card.super_type), mana_ability(card.rule_text), 10.5]
-}
-mana_ability := {
- abils := break_text(input, match:"(?sym(-auto)?>)?T(?sym(-auto)?>)?: Add (?sym(-auto)?>)?(W|U|B|R|G|C)(?sym(-auto)?>)?(, | or )?(?sym(-auto)?>)?(W|U|B|R|G|C)?(?sym(-auto)?>)?(, or )?(?sym(-auto)?>)?(W|U|B|R|G|C)?(?sym(-auto)?>)?.")
- abils[0] or else ""
-}
-main_type := {
- types := main_types(input)
- if length(types) == 0 then ""
- else if includes("Creature", array:types)
- then "Creature"
- else if includes("Land", array:types)
- then "Land"
- else types[0]
-}
-main_types := {
- types := break_text(input, match:"(Land|Instant|Sorcery|Artifact|Enchantment|Creature|Planeswalker)")
- types or else [""]
-}
-######################## Mainframe mana
-use_v_mana := {contains(set.custom_mana_symbol_name, match:".png")}
-use_large_v_mana := { use_v_mana() and chosen(set.mana_symbol_options, choice:"enable in casting costs")}
-use_small_v_mana := { use_v_mana() and chosen(set.mana_symbol_options, choice:"enable in text boxes")}
-use_color_v_mana := { use_v_mana() and chosen(set.mana_symbol_options, choice:"colored mana symbols") and not use_hybrid_v_mana()}
-use_hybrid_v_mana := { use_v_mana() and chosen(set.mana_symbol_options, choice:"hybrid with colors")}
-v_mana_name := {if not use_v_mana() then "" else replace(set.custom_mana_symbol_name, match:"(.+/|\\.png)", replace:"")}
-v_mana_loc := {if not use_v_mana() then "" else replace(set.custom_mana_symbol_name, match:"{v_mana_name()}\\.png", replace:"")}
-v_mana_num := {max(to_number(set.number_hybrid_variants),0) or else -1}
-
-ub_stamp := { card.card_stamp == "universes beyond" }
-use_custom_stamp := {contains(set.custom_stamp_name, match:".png")}
-c_stamp_name := {
- if not use_custom_stamp() then ""
- else if card.stamp == "custom" then set.custom_stamp_name
- else if card.stamp == "custom color" then replace(set.custom_stamp_name, match:"(.+/|\\.png)", replace:"")
- else ""
-}
-c_stamp_loc := {
- if card.stamp != "custom color" or not use_custom_stamp() then ""
- else replace(set.custom_stamp_name, match:"{c_stamp_name()}\\.png", replace:"")
+#### this gives a big array so we can grab_margins()["lv1"] etc anywhere
+grab_margins :=
+{[
+ lv1: [margin_left("lv1"), margin_right("lv1"), margin_top("lv1")],
+ lv2: [margin_left("lv2"), margin_right("lv2"), margin_top("lv2")],
+ lv3: [margin_left("lv3"), margin_right("lv3"), margin_top("lv3")],
+ lv4: [margin_left("lv4"), margin_right("lv4"), margin_top("lv4")],
+ lv5: [margin_left("lv5"), margin_right("lv5"), margin_top("lv5")],
+ lv6: [margin_left("lv6"), margin_right("lv6"), margin_top("lv6")],
+ lv7: [margin_left("lv7"), margin_right("lv7"), margin_top("lv7")],
+ lv8: [margin_left("lv8"), margin_right("lv8"), margin_top("lv8")],
+ lv9: [margin_left("lv9"), margin_right("lv9"), margin_top("lv9")],
+ lv10: [margin_left("lv10"), margin_right("lv10"), margin_top("lv10")],
+ lv11: [margin_left("lv11"), margin_right("lv11"), margin_top("lv11")],
+ lv12: [margin_left("lv12"), margin_right("lv12"), margin_top("lv12")],
+ lv13: [margin_left("lv13"), margin_right("lv13"), margin_top("lv13")],
+ lv14: [margin_left("lv14"), margin_right("lv14"), margin_top("lv14")],
+ lv15: [margin_left("lv15"), margin_right("lv15"), margin_top("lv15")],
+ lv16: [margin_left("lv16"), margin_right("lv16"), margin_top("lv16")],
+ lv17: [margin_left("lv17"), margin_right("lv17"), margin_top("lv17")],
+ lv18: [margin_left("lv18"), margin_right("lv18"), margin_top("lv18")],
+ lv19: [margin_left("lv19"), margin_right("lv19"), margin_top("lv19")],
+ lv20: [margin_left("lv20"), margin_right("lv20"), margin_top("lv20")],
+ lv21: [margin_left("lv21"), margin_right("lv21"), margin_top("lv21")],
+ lv22: [margin_left("lv22"), margin_right("lv22"), margin_top("lv22")],
+ text: [margin_left("text"), margin_right("text"), margin_top("text")],
+ text2: [margin_left("text2"), margin_right("text2"), margin_top("text2")],
+ text3: [margin_left("text3"), margin_right("text3"), margin_top("text3")],
+ text4: [margin_left("text4"), margin_right("text4"), margin_top("text4")],
+ text5: [margin_left("text5"), margin_right("text5"), margin_top("text5")],
+ text6: [margin_left("text6"), margin_right("text6"), margin_top("text6")],
+ flavor_text: [margin_left("flavor_text"), margin_right("flavor_text"), margin_top("flavor_text")],
+ flavor_text2: [margin_left("flavor_text2"), margin_right("flavor_text2"), margin_top("flavor_text2")],
+ flavor_text3: [margin_left("flavor_text3"), margin_right("flavor_text3"), margin_top("flavor_text3")],
+ flavor_text4: [margin_left("flavor_text4"), margin_right("flavor_text4"), margin_top("flavor_text4")],
+ combined_text: [margin_left("combined_text"), margin_right("combined_text"), margin_top("combined_text")],
+ combined_text2: [margin_left("combined_text2"), margin_right("combined_text2"), margin_top("combined_text2")],
+ combined_text3: [margin_left("combined_text3"), margin_right("combined_text3"), margin_top("combined_text3")],
+ combined_text4: [margin_left("combined_text4"), margin_right("combined_text4"), margin_top("combined_text4")],
+ chapter_text: [margin_left("chapter_text"), margin_right("chapter_text"), margin_top("chapter_text")],
+ chapter_text2: [margin_left("chapter_text2"), margin_right("chapter_text2"), margin_top("chapter_text2")],
+ unknown: [0,0,0]
+]}
+#### then with apply_margins(field, name:fieldname), add the margins into the text
+apply_margins := {
+ margin_data := grab_margins()[name] or else [0,0,0]
+ cull_margins("" + remove_margins(input) + "")
}
-searchPull := filter_text@(match:"search(name|mana|type|rules|flavor|text|notes)")
-searchSnip := replace@(match:"search(name|mana|type|rules|flavor|text|notes)_", replace:"")
-
-custom_index := {
- sortIndex := split_text(set.custom_index, match:",")
- for each field in sortIndex do
- applyIndex(to_lower(field))
- or else (
- searchIndex(to_lower(searchPull(field)), query:searchSnip(field))
- )
- or else ""
+bump_text := {
+ blocks := split_text(input, match:"\n");
+ new_text := blocks[0];
+ for x from 1 to length(blocks)-1 do new_text := new_text + "\n" + bumper(blocks[x])
+ new_text
}
-applyIndex := {
- [
- name: {
- fill_len(to_string(position (
- of: card
- in: set
- order_by: { sort_name(card.name) + sort_name(export_name())}
- filter: set_filter()
- )), lead:"0", fill_to:3)
- },
- alias: {
- fill_len(to_string(position (
- of: card
- in: set
- order_by: { sort_name(card.alias) + sort_name(export_name())}
- filter: set_filter()
- )), lead:"0", fill_to:3)
- }
- name2: {
- fill_len(to_string(position (
- of: card
- in: set
- order_by: { sort_name(card.name_2) + sort_name(export_name())}
- filter: set_filter()
- )), lead:"0", fill_to:3)
- },
- alias2: {
- fill_len(to_string(position (
- of: card
- in: set
- order_by: { sort_name(card.alias_2) + sort_name(export_name())}
- filter: set_filter()
- )), lead:"0", fill_to:3)
- }
- color: {fill_len(color_of_card(), lead:"A")},
- artist: {fill_len(substring(card.illustrator, end:7), follow:" ", fill_to:7)},
- artist2: {fill_len(substring(card.illustrator_2, end:7), follow:" ", fill_to:7)},
- design: {fill_len(substring(card.card_code_text, end:7), follow:" ", fill_to:7)},
- mv: {fill_len(to_string(cmc(card.casting_cost)), lead:"0")},
- "mana value": {fill_len(to_string(cmc(card.casting_cost)), lead:"0")},
- cmc: {fill_len(to_string(cmc(card.casting_cost)), lead:"0")},
- "converted mana cost": {fill_len(to_string(cmc(card.casting_cost)), lead:"0")},
- rarity: {index_of_rarity()},
- power: {fill_len(card.power, lead:"0")},
- toughness: {fill_len(card.toughness, lead:"0")},
- pt: {fill_len(card.power, lead:"0") + fill_len(card.toughness, lead:"0")},
- loyalty: {fill_len(card.loyalty, lead:"0")},
- type: {fill_len(filter_text(match:"[A-Z][A-Z]?[A-Z]?", filter_text(match:"[A-Z]", card.super_type)), follow:"0", fill_to:3)},
- hasrules: {if remove_tags(card.rule_text) != "" then "A" else "B"},
- hasflavor: {if remove_tags(card.flavor_text) != "" then "A" else "B"},
- hasrules2: {if remove_tags(card.rule_text_2) != "" then "A" else "B"},
- hasflavor2: {if remove_tags(card.flavor_text_2) != "" then "A" else "B"},
- ][input]()
+bumper := {
+ #### if this text isn't modal, add a 5 px margin
+ if is_modal(input) then input else
+ cull_margins("" + remove_margins(input) + "")
}
-searchIndex := {
- [
- searchname: { if contains(card.name, match:query) or contains(card.name_2, match:query) then "A" else "B"},
- searchmana: { if contains(card.casting_cost, match:query) or contains(card.casting_cost_2, match:query) then "A" else "B"},
- searchtype: { if contains(card.type, match:query) or contains(card.type_2, match:query) then "A" else "B"},
- searchrules: { if contains(card.rule_text, match:query) or contains(card.rule_text_2, match:query) then "A" else "B"},
- searchflavor: { if contains(card.flavor_text, match:query) or contains(card.flavor_text_2, match:query) then "A" else "B"},
- searchartist: { if contains(card.illustrator, match:query) or contains(card.illustrator_2, match:query) then "A" else "B"},
- searchdesign: { if contains(card.card_code_text, match:query) then "A" else "B"},
- searchtext: { if contains(card.text, match:query) or contains(card.text_2, match:query) then "A" else "B"},
- searchnotes: { if contains(card.notes, match:query) then "A" else "B"},
- unsearchname: { if contains(card.name, match:query) or contains(card.name_2, match:query) then "B" else "A"},
- unsearchmana: { if contains(card.casting_cost, match:query) or contains(card.casting_cost_2, match:query) then "B" else "A"},
- unsearchtype: { if contains(card.type, match:query) or contains(card.type_2, match:query) then "B" else "A"},
- unsearchrules: { if contains(card.rule_text, match:query) or contains(card.rule_text_2, match:query) then "B" else "A"},
- unsearchflavor: { if contains(card.flavor_text, match:query) or contains(card.flavor_text_2, match:query) then "B" else "A"},
- unsearchartist: { if contains(card.illustrator, match:query) or contains(card.illustrator_2, match:query) then "B" else "A"},
- unsearchdesign: { if contains(card.card_code_text, match:query) then "B" else "A"},
- unsearchtext: { if contains(card.text, match:query) or contains(card.text_2, match:query) then "B" else "A"},
- unsearchnotes: { if contains(card.notes, match:query) then "B" else "A"}
- ][input]()
-}
-index_of_rarity := {
- if card.rarity == "basic land" then "A"
- else if card.rarity == "common" then "C"
- else if card.rarity == "uncommon" then "D"
- else if card.rarity == "rare" then "E"
- else if card.rarity == "mythic rare" then "F"
- else if card.rarity == "special" then "G"
- else "J"
-}
-fill_len := {
- output := to_string(input)
- if output == "" then output := "0"
- fill := max(0,fill_to - length(output))
- for x from 1 to fill do output := lead + output + follow;
- output
-}@(fill_to:2, lead:"", follow:"")
-
-skeleton_commons := 19
-skeleton_uncommons := 11
-skeleton_rares := 7
-skeleton_mythics := 2
-skeleton_land_commons := 1
-skeleton_land_uncommons := 5
-skeleton_land_rares := 0
-skeleton_gold_commons := 0
-skeleton_gold_uncommons := 1
-skeleton_gold_rares := 1
-skeleton_shard_commons := 0
-skeleton_shard_uncommons := 0
-skeleton_shard_rares := 0
-skeleton_wedge_commons := 0
-skeleton_wedge_uncommons := 0
-skeleton_wedge_rares := 0
-skeleton_artifact_commons := 5
-skeleton_artifact_uncommons := 5
-skeleton_artifact_rares := 0
-skeleton_blank_commons := 0
-skeleton_blank_uncommons := 5
-skeleton_blank_rares := 8
-skeleton_blank_mythics := 5
-#### generates a set of CC00 Skeleton cards for each color
-#### by insertnamehere and cajun
-skeleton_runner := {
- cards:=[]
- for x from 0 to length(letter_list)-1 do
- (
- for y from 1 to count do
- if mana_list == "nope" then
- (cards := cards + [new_card([name:prefix+letter_list[x]+fill_len(y, lead:"0"), rarity:rarity, card_color:color_list[x], super_type:super_type])];)
- else
- (cards := cards + [new_card([name:prefix+letter_list[x]+fill_len(y, lead:"0"), rarity:rarity, super_type:super_type, casting_cost:mana_list[x]])];)
- )
- cards
-}@(count:1, rarity:"common", type:"", prefix:"C", super_type:"", color_list:["white", "blue", "black", "red", "green"], letter_list:["W", "U", "B", "R", "G"], mana_list:"nope")
-###outside to make singleton scripts easier
-blank_list_5 := ["","","","",""]
-blank_list_10 := ["","","","","","","","","",""]
-mana_list_ally := ["WU","UB","BR","RG","GW"]
-mana_list_enemy := ["WB","UR","BG","RW","GU"]
-mana_list_shard := ["WUB","UBR","BRG","RGW","GWU"]
-mana_list_wedge := ["WBG","URW","BGU","RWB","GUR"]
-skeleton_script := {
- cards := [];
- cards := cards + skeleton_runner(count:skeleton_commons);
- cards := cards + skeleton_runner(count:skeleton_uncommons, prefix:"U", rarity:"uncommon");
- cards := cards + skeleton_runner(count:skeleton_rares, prefix:"R", rarity:"rare");
- cards := cards + skeleton_runner(count:skeleton_mythics, prefix:"M", rarity:"mythic rare");
- cards := cards + skeleton_runner(count:skeleton_gold_commons, prefix:"CM", rarity:"common", letter_list:blank_list_10, mana_list:mana_list_ally+mana_list_enemy);
- cards := cards + skeleton_runner(count:skeleton_gold_uncommons, prefix:"UM", rarity:"uncommon", letter_list:blank_list_10, mana_list:mana_list_ally+mana_list_enemy);
- cards := cards + skeleton_runner(count:skeleton_gold_rares, prefix:"RM", rarity:"rare", letter_list:blank_list_10, mana_list:mana_list_ally+mana_list_enemy);
- cards := cards + skeleton_runner(count:skeleton_shard_commons, prefix:"CM", rarity:"common", letter_list:blank_list_5, mana_list:mana_list_shard);
- cards := cards + skeleton_runner(count:skeleton_shard_uncommons, prefix:"UM", rarity:"uncommon", letter_list:blank_list_5, mana_list:mana_list_shard);
- cards := cards + skeleton_runner(count:skeleton_shard_rares, prefix:"RM", rarity:"rare", letter_list:blank_list_5, mana_list:mana_list_shard);
- cards := cards + skeleton_runner(count:skeleton_wedge_commons, prefix:"CM", rarity:"common", letter_list:blank_list_5, mana_list:mana_list_wedge);
- cards := cards + skeleton_runner(count:skeleton_wedge_uncommons, prefix:"UM", rarity:"uncommon", letter_list:blank_list_5, mana_list:mana_list_wedge);
- cards := cards + skeleton_runner(count:skeleton_wedge_rares, prefix:"RM", rarity:"rare", letter_list:blank_list_5, mana_list:mana_list_wedge);
- for i from 1 to skeleton_artifact_commons do cards := cards + [new_card([name:"CA"+fill_len(i, lead:"0"), rarity:"common", super_type:"Artifact"])];
- for i from 1 to skeleton_artifact_uncommons do cards := cards + [new_card([name:"UA"+fill_len(i, lead:"0"), rarity:"uncommon", super_type:"Artifact"])];
- for i from 1 to skeleton_artifact_rares do cards := cards + [new_card([name:"RA"+fill_len(i, lead:"0"), rarity:"rare", super_type:"Artifact"])];
- for i from 1 to skeleton_land_commons do cards := cards + [new_card([name:"CL"+fill_len(i, lead:"0"), super_type:"Land", rarity:"common"])];
- for i from 1 to skeleton_land_uncommons do cards := cards + [new_card([name:"UL"+fill_len(i, lead:"0"), super_type:"Land", rarity:"uncommon"])];
- for i from 1 to skeleton_land_rares do cards := cards + [new_card([name:"RL"+fill_len(i, lead:"0"), super_type:"Land", rarity:"rare"])];
- for i from 1 to skeleton_blank_commons do cards := cards + [new_card([name:"CX"+fill_len(i, lead:"0"), rarity:"common"])];
- for i from 1 to skeleton_blank_uncommons do cards := cards + [new_card([name:"UX"+fill_len(i, lead:"0"), rarity:"uncommon"])];
- for i from 1 to skeleton_blank_rares do cards := cards + [new_card([name:"RX"+fill_len(i, lead:"0"), rarity:"rare"])];
- for i from 1 to skeleton_blank_mythics do cards := cards + [new_card([name:"MX"+fill_len(i, lead:"0"), rarity:"mythic rare"])];
- cards
-}
-skeleton_info := {
- trace("Set Skeleton Generator Help:"
- +"\nSet variables here to modify the Skeleton Add Cards script, for example 'skeleton_commons := 10'"
- +"\nCurrent variables:\n"
- +"skeleton_commons: " + skeleton_commons + " (of each color)\n"
- +"skeleton_uncommons: " + skeleton_uncommons + " (of each color)\n"
- +"skeleton_rares: " + skeleton_rares + " (of each color)\n"
- +"skeleton_mythics: " + skeleton_mythics + " (of each color)\n"
- +"skeleton_gold_commons: " + skeleton_gold_commons + " (of each color pair)\n"
- +"skeleton_gold_uncommons: " + skeleton_gold_uncommons + " (of each color pair)\n"
- +"skeleton_gold_rares: " + skeleton_gold_rares + " (of each color pair)\n"
- +"skeleton_artifact_commons: " + skeleton_artifact_commons + "\n"
- +"skeleton_artifact_uncommons: " + skeleton_artifact_uncommons + "\n"
- +"skeleton_artifact_rares: " + skeleton_artifact_rares + "\n"
- +"skeleton_land_commons: " + skeleton_land_commons + "\n"
- +"skeleton_land_uncommons: " + skeleton_land_uncommons + "\n"
- +"skeleton_land_rares: " + skeleton_land_rares + "\n"
- +"skeleton_blank_commons: " + skeleton_blank_commons + "\n"
- +"skeleton_blank_uncommons: " + skeleton_blank_uncommons + "\n"
- +"skeleton_blank_rares: " + skeleton_blank_rares + "\n"
- +"skeleton_blank_mythics: " + skeleton_blank_mythics + "\n"
- +"skeleton_shard_commons: " + skeleton_shard_commons + "\n"
- +"skeleton_shard_uncommons: " + skeleton_shard_uncommons + "\n"
- +"skeleton_shard_rares: " + skeleton_shard_rares + "\n"
- +"skeleton_wedge_commons: " + skeleton_wedge_commons + "\n"
- +"skeleton_wedge_uncommons: " + skeleton_wedge_uncommons + "\n"
- +"skeleton_wedge_rares: " + skeleton_wedge_rares)
-}
-##number of chapter symbols each chapter textbox has
-##example, symbols on abilities 2,2,3 returns [0,2,1]
+############################################################## Saga witchery
+#### number of chapter symbols each chapter textbox has
+#### example, symbols on abilities 2,2,3 returns [0,2,1]
saga_lore_count := {
one := 0
two := 0
@@ -1999,9 +1765,9 @@ saga_lore_count := {
else eight := eight +1
[one, two, three, four, five, six, seven]
}
-##index of given chapter number in above array
-##example, 2,2,3, returns 1,2,1
-##i tried to make this shorter but this is the only one that deigned to function
+#### index of given chapter number in above array
+#### example, 2,2,3, returns 1,2,1
+#### i tried to make this shorter but this is the only one that deigned to function
saga_ch_placement := {
box1 := 0
box2 := 0
@@ -2122,95 +1888,1945 @@ saga_ch_placement := {
)else (seven := seven)
[one, two, three, four, five, six, seven]
}
+############################################################## Typelines
+#### 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_default := { "" }
+super_type_filter := {
+ input := remove_tag(tag: "{input}{tag}>"
+}
-card_face := {
- front := card[input]
- back := if card[input+"_2"] or else "" != "" then card[input+"_2"] else card[input]
- if match(margin_code, match:"(text[2456]|lv[5678])") then back else front
+sub_type_filter_default := { "" }
+split_at_spaces := split_text@(match: " +")
+remove_leading_spaces := replace@(match: "^ +", replace: "")
+remove_trailing_soft_tags := replace@(match: ".*?$", replace: "")
+replace_soft_tags := replace@(match: ".*?", replace: " ")
+sub_type_filter :=
+{
+ subtype_separator := lang_setting("subtype_separator")
+ code := lang_setting("code")
+ input := remove_tag(input, tag: "" + sub_type + ""
+ else "" + sub_type + ""
+ ) else (
+ #### Check for single word sub types
+ split := split_at_spaces(input)
+ input := if length(split) > 1 then replace(input, match: "^" + regex_escape(split.0), replace: "") else ""
+ if i == 0 then "" + split.0 + ""
+ else "" + split.0 + "")))
+ )
+ #### Add separators between types, keep additional spaces if there are more than one
+ sub_types := replace(sub_types, match: "(]*>)( *)("
+ else sub_types + "" + subtype_separator + ""
+ ) else input #### Do nothing if we don't know the type
}
-cc_filter := replace@(match:"^[CURMSL][WUBRGMZACL][0-9]+ ?[-—]? ?", replace:"")
-strip_card_codes := {
- save := input
- input := cc_filter(input)
- input := if input == "" or input == " " then save else input
- if alch_compatible() and card.card_symbol == "alchemy"
- then "A-" + input
- else input
-}
-name_checker := {if not set.remove_card_codes then input else strip_card_codes(input)}
-face_code := {
- face := ""
- if margin_code == "text2" or margin_code == "lv5" or margin_code == "lv6" or margin_code == "lv7" or margin_code == "lv8" then face := "_2"
- output := face_scripts[input](face) or else if_parse(input, face:face) or else input
- output
+#### 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 lang_setting(setting)(card.super_type) then "," + space_to_comma(to_text(card.sub_type)) else ""
}
-flip_face := {
- if input == "_2" then "" else "_2"
+all_races := {
+ for each card in set do
+ if lang_setting("is_creature")(card.super_type) or lang_setting("is_kindred")(card.super_type) then
+ "," + only_first(to_text(card.sub_type))
+ else ""
}
-face_scripts := [
- iscreature: {is_creature(card["type"+face])},
- iscreaturish: {is_creaturish(card["type"+face])},
- isenchantment: {is_enchantment(card["type"+face])},
- isartifact: {is_artifact(card["type"+face])},
- island: {is_land(card["type"+face])},
- isspell: {is_spell(card["type"+face])},
- istarget: {is_targeted(card["text"+face])},
- subtypes: {separate_words(card["sub_type"+face], spacer: " ")}
- contains: {
- contains(card[field+face], match:query)
- },
- notcontains: {not contains(card[field+face], match:query)},
- name: {card["name"+face]},
- cost: {card["casting_cost"+face]},
- altname: {card["name"+flip_face(face)]},
- altcost: {card["casting_cost"+flip_face(face)]},
-]
-expand_facecodes := [
- subtype: "sub_type",
- castingcost: "casting_cost",
- manacost: "casting_cost"
-]
-if_parse := replace@(
- match: "if_(.*)_then_(.*)_else_(.*)",
- replace: {if_scripts(_1, t:_2, f:_3)}
-)
-if_scripts := {
- contCheck := split_text(input, match:"_")
- func := contCheck[0]
- field := ""
- query := "^$"
- if length(contCheck) == 3 then (
- field := contCheck[0]
- func := contCheck[1]
- query := contCheck[2]
+all_classes := {
+ for each card in set do
+ if lang_setting("is_creature")(card.super_type) then
+ "," + space_to_comma(only_next(to_text(card.sub_type)))
+ else ""
+}
+############################################################## Modal DFC flag hints
+auto_flags := {true}
+front_modal_hint := {
+ if not auto_flags() then ["", ""]
+ else if remove_tags(card.sub_type_2) != "" then [card.sub_type_2, ""+card.casting_cost_2+""]
+ else if card.casting_cost_2 != "" then [main_type(card.super_type_2), ""+card.casting_cost_2+""]
+ else [main_type(card.super_type_2), mana_ability(card.rule_text_2)]
+}
+back_modal_hint := {
+ if not auto_flags() then ["", ""]
+ else if remove_tags(card.sub_type) != "" then [card.sub_type, ""+card.casting_cost+""]
+ else if card.casting_cost != "" then [main_type(card.super_type), ""+card.casting_cost+""]
+ else [main_type(card.super_type), mana_ability(card.rule_text)]
+}
+mana_ability := {
+ abils := break_text(input, match:"(?sym(-auto)?>)?T(?sym(-auto)?>)?: Add (?sym(-auto)?>)?(W|U|B|R|G|C)(?sym(-auto)?>)?(, | or )?(?sym(-auto)?>)?(W|U|B|R|G|C)?(?sym(-auto)?>)?(, or )?(?sym(-auto)?>)?(W|U|B|R|G|C)?(?sym(-auto)?>)?.")
+ abils[0] or else ""
+}
+main_type := {
+ types := main_types(input)
+ if length(types) == 0 then ""
+ else if includes("Creature", array:types)
+ then "Creature"
+ else if includes("Land", array:types)
+ then "Land"
+ else types[0]
+}
+main_types := {
+ types := break_text(input, match:"(Land|Instant|Sorcery|Artifact|Enchantment|Creature|Planeswalker)")
+ types or else [""]
+}
+#### TODO we'll be able to remove this once transform corners are a card field
+node_script := { if card.shape == "double faced" then "transform day" else "none" }
+############################################################## Flavor bar
+bar_equation := {if card_style.text.layout.blocks[1].bottom or else 0 > 0 then card_style.text.top + 0.5*(card_style.text.layout.blocks[0].bottom+card_style.text.layout.blocks[1].top) else old_bar_equation()}
+bar_equation2 := {if card_style.text_2.layout.blocks[0].bottom or else 0 > 0 then card_style.text_2.top + 0.5*(card_style.text_2.layout.blocks[0].bottom+card_style.text_2.layout.blocks[1].top) else old_bar_equation2()}
+bar_equation3 := {if card_style.text_3.layout.blocks[0].bottom or else 0 > 0 then card_style.text_3.top + 0.5*(card_style.text_3.layout.blocks[0].bottom+card_style.text_3.layout.blocks[1].top) else old_bar_equation3()}
+#### As of MSE 2.1.2 ^that is all we need to do
+#### Previous versions needed the noise down below
+#### Which is kept for backwards compatibility
+#### And a record of the before times
+chop_top := {0}
+chop_bot := {0}
+bar_offset := {0}
+offset_lines := {0}
+chop_top2 := {0}
+chop_bot2 := {0}
+bar_offset2 := {0}
+offset_lines2 := {0}
+chop_top3 := {0}
+chop_bot3 := {0}
+bar_offset3 := {0}
+offset_lines3 := {0}
+
+#### Set chop_top(), chop_bot(), bar_offset(), and offset_lines to 0 to reduce replacements in chopping frames
+#### Full equations to use in chopping templates below
+## chop_top := {if styling.chop_top == "" then 0 else if comma_count(styling.chop_top) == "," or comma_count(styling.chop_top) == ",," then split_text(match:",", styling.chop_top).0 else styling.chop_top}
+## chop_bot := {if comma_count(styling.chop_top) == ",," then split_text(match:",", styling.chop_top).1 else if styling.chop_bottom == "" then 0 else styling.chop_bottom}
+## bar_offset := {if styling.flavor_bar_offset == "-" or styling.flavor_bar_offset == "+" then 0 else to_number(styling.flavor_bar_offset)}
+## offset_lines := {offset_counter(styling.flavor_bar_offset)}
+
+top_of_textbox := {card_style.text.top }
+bottom_of_textbox := {card_style.text.bottom }
+top_of_textbox2 := {card_style.text_2.top }
+bottom_of_textbox2 := {card_style.text_2.bottom }
+top_of_textbox3 := {card_style.text_3.top }
+bottom_of_textbox3 := {card_style.text_3.bottom }
+offset_counter := {length(filter_text(input, match:"u")) - length(filter_text(input, match:"d"))}
+paragraph_count := filter_text@(match:"\n")
+hard_paragraph_count :=
+ replace@(match:"\n", replace:"")+ #### count hard breaks for their extra space
+ filter_text@(match:"\n")
+soft_break_filter :=
+ filter_text @(match:"<", in_context: "soft-line>") #### count soft breaks for quotes
+word_split := split_text@(match:" ") #### split words to better calculate line lengths
+small_filter := filter_text@(match:"[\\.,\\?!il’]") #### grab the tiny characters
+fb_length := {length(input) - 0.3 * length(small_filter(input))}#### reduce the effect of tiny characters
+calc_lines := { sum := 0 #### estimate lines by character limit
+ lines := 1 #### minimum of 1
+ for e from 0 to length(input)-1 do (
+ sum := sum + fb_length(input[e]);
+ if sum > char then ( #### if new word is over the limit
+ lines := lines + 1; #### add new line
+ sum := fb_length(input[e])) #### reset the sum
+ else
+ sum := sum + 1; #### else add it and a space to the sum
)
- field := expand_facecodes[field] or else field
- if face_scripts[func](face, field:field, query:query) or else false then t else f
+ lines #### return number of lines
}
+lines_of_text := { #### estimate lines in break blocks
+ lines := 0 #### further improves the previous eq
+ for x from 0 to length(input)-1 do
+ if input[x] or else "" != "" then #### if the break isn't empty, check it
+ lines := lines + calc_lines(word_split(input[x]), char:char)
+ lines
+}
+flavor_text := {split_text(match:"\n", remove_tags(card.flavor_text+"\n"))} #### remove tags, add \n so .1 doesn't explode
+hard_flavor_break := { if not contains(card.flavor_text, match:"\n") then 0 else if contains(card.flavor_text, match:"\n") then 0 else if lines_of_rules() >= 3 then -3 else -2}
+font_size := {min(14,round_near(card_style.text.content_height / card_style.text.content_lines) - 8)} #### approximate font size
+adj_char_width := {7.35 * min(14, font_size()+0.95) / 14} #### average char width, adjusted for font size
+char_per_line := {min(52,round_up(card_style.text.content_width / adj_char_width())+1.5)} #### approximate character limit. very rarely over 52 but standard eq can reach 60+
+lines_of_flavor := {lines_of_text(flavor_text(), char:char_per_line())}
+lines_of_rules := { card_style.text.content_lines - lines_of_flavor() } #### rules of lines for ratio weirdness
+line_height := {(card_style.text.content_height / card_style.text.content_lines)}
+padding_height := { 0.5*(bottom_of_textbox() - top_of_textbox() - card_style.text.content_height) } #### space between top of textbox and text
+linebreak_height := { 2*length(hard_paragraph_count(card.rule_text)) }
+#### correction for ratio of rules/flavor causing weirdness
+uneven_correction := { if lines_of_flavor() == 1 then max(4, (card_style.text.content_lines - (2*lines_of_flavor()))) else (card_style.text.content_lines - (2*lines_of_flavor())) }
+#### add it all up
+#### old_bar_equation is compatibilty for 2.0.0
+old_bar_equation := { top_of_textbox() + padding_height() + card_style.text.content_height - line_height()*(lines_of_flavor() + offset_lines()) + linebreak_height() - uneven_correction() + front_corr() + bar_offset() + hard_flavor_break() +1 }
+
+flavor_text2 := {split_text(match:"\n", remove_tags(card.flavor_text_2+"\n"))} #### remove tags, add \n so .1 doesn't explode
+hard_flavor_break2 := { if not contains(card.flavor_text_2, match:"\n") then 0 else if contains(card.flavor_text_2, match:"\n") then 0 else if lines_of_rules2() >= 3 then -3 else -2}
+font_size2 := {min(14,round_near(card_style.text_2.content_height / card_style.text_2.content_lines) - 8)} #### approximate font size
+adj_char_width2 := {7.35 * min(14, font_size2()+0.95) / 14} #### average char width, adjusted for font size
+char_per_line2 := {min(52,round_up(card_style.text_2.content_width / adj_char_width2())+1.5)} #### approximate character limit. very rarely over 52 but standard eq can reach 60+
+lines_of_flavor2 := {lines_of_text(flavor_text2(), char:char_per_line2())}
+lines_of_rules2 := { card_style.text_2.content_lines - lines_of_flavor2() } #### rules of lines for ratio weirdness
+line_height2 := {(card_style.text_2.content_height / card_style.text_2.content_lines)}
+padding_height2 := { 0.5*(bottom_of_textbox2() - top_of_textbox2() - card_style.text_2.content_height) } #### space between top of textbox and text
+linebreak_height2 := { 2*length(hard_paragraph_count(card.rule_text_2)) }
+#### correction for ratio of rules/flavor causing weirdness
+uneven_correction2 := { if lines_of_flavor2() == 1 then max(4, (card_style.text_2.content_lines - (2*lines_of_flavor2()))) else (card_style.text_2.content_lines - (2*lines_of_flavor2())) }
+#### add it all up
+old_bar_equation2 := { top_of_textbox2() + padding_height2() + card_style.text_2.content_height - line_height2()*(lines_of_flavor2() + offset_lines2()) + linebreak_height2() - uneven_correction2() + back_corr() + bar_offset2() + hard_flavor_break2() +1 }
-white_text := {false}
-phy_reminder := {
- phy_match := filter_text(input, match:"(/[WUBRG])+", in_context:"H")
- letters := split_text(phy_match, match:"/")
- reminder_text := ""
- if length(letters) == 2 then
- reminder_text := "[H/" + letters[1] + "] can be paid with [" + letters[1] + "] or 2 life."
- else if length(letters) > 2 then
- reminder_text := "[H/" + letters[1] + "/" + letters[2] + "] can be paid with [" + letters[1] + "], " + "[" + letters[2] + "], or 2 life."
+flavor_text3 := {split_text(match:"\n", remove_tags(card.flavor_text_3+"\n"))} #### remove tags, add \n so .1 doesn't explode
+hard_flavor_break3 := { if not contains(card.flavor_text_3, match:"\n") then 0 else if contains(card.flavor_text_3, match:"\n") then 0 else if lines_of_rules3() >= 3 then -3 else -2}
+font_size3 := {min(14,round_near(card_style.text_3.content_height / card_style.text_3.content_lines) - 8)} #### approximate font size
+adj_char_width3 := {7.35 * min(14, font_size3()+0.95) / 14} #### average char width, adjusted for font size
+char_per_line3 := {min(52,round_up(card_style.text_3.content_width / adj_char_width3())+1.5)} #### approximate character limit. very rarely over 52 but standard eq can reach 60+
+lines_of_flavor3 := {lines_of_text(flavor_text3(), char:char_per_line3())}
+lines_of_rules3 := { card_style.text_3.content_lines - lines_of_flavor3() } #### rules of lines for ratio weirdness
+line_height3 := {(card_style.text_3.content_height / card_style.text_3.content_lines)}
+padding_height3 := { 0.5*(bottom_of_textbox3() - top_of_textbox3() - card_style.text_3.content_height) } #### space between top of textbox and text
+linebreak_height3 := { 2*length(hard_paragraph_count(card.rule_text_3)) }
+#### correction for ratio of rules/flavor causing weirdness
+uneven_correction3 := { if lines_of_flavor3() == 1 then max(4, (card_style.text_3.content_lines - (2*lines_of_flavor3()))) else (card_style.text_3.content_lines - (2*lines_of_flavor3())) }
+#### add it all up
+old_bar_equation3 := { top_of_textbox3() + padding_height3() + card_style.text_3.content_height - line_height3()*(lines_of_flavor3() + offset_lines3()) + linebreak_height3() - uneven_correction3() + third_corr() + bar_offset3() + hard_flavor_break3() +1 }
+
+#### long correction coefficient based off several sets of data
+front_corr := {correction_coeff(lof:lines_of_flavor(), lor:lines_of_rules(), lbh:linebreak_height())}
+back_corr := {correction_coeff(lof:lines_of_flavor2(), lor:lines_of_rules2(), lbh:linebreak_height2())}
+third_corr := {correction_coeff(lof:lines_of_flavor3(), lor:lines_of_rules3(), lbh:linebreak_height3())}
+correction_coeff := {
+ (if lor == 1 then
+ (if lof == 1 then 3
+ else if lof == 2 then 1
+ else if lof == 3 then 1.5
+ else if lof == 4 then 0
+ else 5 - lof)
+ else if lor == 2 and lbh == 2 then
+ (if lof == 1 then 1
+ else if lof == 2 then 1
+ else if lof == 3 then 2
+ else if lof == 4 then 2
+ else 3)
+ else if lor == 2 then
+ (if lof == 1 then 1
+ else if lof == 2 then 0
+ else if lof == 3 then 0
+ else if lof == 4 then 0
+ else -1)
+ else if lor == 3 and lbh == 2 then
+ (if lof == 1 then 0
+ else if lof == 2 then 0
+ else if lof == 3 then 1
+ else if lof == 4 then 1
+ else 2)
+ else if lor == 3 then
+ (if lof == 1 then 0
+ else if lof == 2 then -1
+ else if lof == 3 then -0.5
+ else if lof == 4 then -1
+ else 0)
+ else if lor == 4 and lbh == 2 then
+ (-2 + lof)
+ else if lor == 4 then
+ (if lof == 1 then -1
+ else if lof == 2 then 0
+ else if lof == 3 then -0.5
+ else -1)
+ else if lor == 5 and lbh == 4 then
+ (-5 + lof)
+ else if lor == 5 and lbh == 2 then
+ (-2 + lof)
+ else if lor == 5 then
+ (2 - lof)
+ else if lor == 6 and lbh == 2 then
+ (-1 - lof)
+ else if lor == 6 then
+ (2 - lof)
+ else 0) + (if lbh >= 4 then 0.5*lbh-1)
+}
+############################################################## Watermarks
+card_spotlight := { "/magic-mainframe-watermarks.mse-include/spotlight/" + card_new_color() + "spotlight.png" }
+custom_watermark_1 := { if set.custom_watermark_1 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_1 else "/magic-watermarks.mse-include/planeswalker.png" }
+custom_watermark_2 := { if set.custom_watermark_2 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_2 else "/magic-watermarks.mse-include/planeswalker.png" }
+custom_watermark_3 := { if set.custom_watermark_3 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_3 else "/magic-watermarks.mse-include/planeswalker.png" }
+custom_watermark_4 := { if set.custom_watermark_4 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_4 else "/magic-watermarks.mse-include/planeswalker.png" }
+custom_watermark_5 := { if set.custom_watermark_5 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_5 else "/magic-watermarks.mse-include/planeswalker.png" }
+custom_watermark_6 := { if set.custom_watermark_6 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_6 else "/magic-watermarks.mse-include/planeswalker.png" }
+custom_watermark_7 := { if set.custom_watermark_7 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_7 else "/magic-watermarks.mse-include/planeswalker.png" }
+custom_watermark_8 := { if set.custom_watermark_8 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_8 else "/magic-watermarks.mse-include/planeswalker.png" }
+custom_watermark_9 := { if set.custom_watermark_9 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_9 else "/magic-watermarks.mse-include/planeswalker.png" }
+custom_watermark_10 := { if set.custom_watermark_10 != "" then "/magic-watermarks.mse-include/" + set.custom_watermark_10 else "/magic-watermarks.mse-include/planeswalker.png" }
+custom_watermark_a := {"/magic-watermarks.mse-include/planeswalker.png"}
+custom_watermark_b := {"/magic-watermarks.mse-include/planeswalker.png"}
+invert_watermark := { false }
+invert_watermark2 := { false }
+invert_watermark3 := { false }
+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"
+}
+# Watermark images
+wm_directory := "/magic-modules.mse-include/watermarks/"
+watermark_scripts :=
+[
+ "none": { "" }
+
+ "mana symbol white": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_w.png") }
+ "mana symbol blue": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_u.png") }
+ "mana symbol black": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_b.png") }
+ "mana symbol red": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_r.png") }
+ "mana symbol green": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_g.png") }
+ "mana symbol colorless": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_c.png") }
+ "mana symbol snow": { watermark_blend(wm_directory + "mana symbols/watermark_s.png") }
+
+ "mana symbol old white": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_w_old.png") }
+ "mana symbol old blue": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_u_old.png") }
+ "mana symbol old black": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_b_old.png") }
+ "mana symbol old red": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_r_old.png") }
+ "mana symbol old green": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_g_old.png") }
+ "mana symbol old colorless": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_c_old.png") }
+
+ "mana symbol hi res white": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_w_big.png") }
+ "mana symbol hi res blue": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_u_big.png") }
+ "mana symbol hi res black": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_b_big.png") }
+ "mana symbol hi res red": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_r_big.png") }
+ "mana symbol hi res green": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_g_big.png") }
+ "mana symbol hi res colorless": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "mana symbols/watermark_c_big.png") }
+
+ "transparent mana symbol white": { watermark_blend(colored: true, alpha: 0.45, dark_alpha: 0.30, wm_directory + "mana symbols/watermark_w.png") }
+ "transparent mana symbol blue": { watermark_blend(colored: true, alpha: 0.35, dark_alpha: 0.30, wm_directory + "mana symbols/watermark_u.png") }
+ "transparent mana symbol black": { watermark_blend(colored: true, alpha: 0.30, dark_alpha: 0.45, wm_directory + "mana symbols/watermark_b.png") }
+ "transparent mana symbol red": { watermark_blend(colored: true, alpha: 0.35, dark_alpha: 0.30, wm_directory + "mana symbols/watermark_r.png") }
+ "transparent mana symbol green": { watermark_blend(colored: true, alpha: 0.35, dark_alpha: 0.30, wm_directory + "mana symbols/watermark_g.png") }
+
+ "transparent mana symbol old white": { watermark_blend(colored: true, alpha: 0.4, dark_alpha: 0.4, wm_directory + "mana symbols/watermark_w_old.png") }
+ "transparent mana symbol old blue": { watermark_blend(colored: true, alpha: 0.4, dark_alpha: 0.4, wm_directory + "mana symbols/watermark_u_old.png") }
+ "transparent mana symbol old black": { watermark_blend(colored: true, alpha: 0.4, dark_alpha: 0.4, wm_directory + "mana symbols/watermark_b_old.png") }
+ "transparent mana symbol old red": { watermark_blend(colored: true, alpha: 0.4, dark_alpha: 0.4, wm_directory + "mana symbols/watermark_r_old.png") }
+ "transparent mana symbol old green": { watermark_blend(colored: true, alpha: 0.4, dark_alpha: 0.4, wm_directory + "mana symbols/watermark_g_old.png") }
+ "transparent mana symbol old colorless": { watermark_blend(colored: true, alpha: 0.4, dark_alpha: 0.4, wm_directory + "mana symbols/watermark_c_old.png") }
+
+ "transparent mana symbol hi res white": { watermark_blend(colored: true, alpha: 0.4, dark_alpha: 0.4, wm_directory + "mana symbols/watermark_w_big.png") }
+ "transparent mana symbol hi res blue": { watermark_blend(colored: true, alpha: 0.4, dark_alpha: 0.4, wm_directory + "mana symbols/watermark_u_big.png") }
+ "transparent mana symbol hi res black": { watermark_blend(colored: true, alpha: 0.4, dark_alpha: 0.4, wm_directory + "mana symbols/watermark_b_big.png") }
+ "transparent mana symbol hi res red": { watermark_blend(colored: true, alpha: 0.4, dark_alpha: 0.4, wm_directory + "mana symbols/watermark_r_big.png") }
+ "transparent mana symbol hi res green": { watermark_blend(colored: true, alpha: 0.4, dark_alpha: 0.4, wm_directory + "mana symbols/watermark_g_big.png") }
+ "transparent mana symbol hi res colorless": { watermark_blend(colored: true, alpha: 0.4, dark_alpha: 0.4, wm_directory + "mana symbols/watermark_c_big.png") }
+
+ "guild symbol The Azorius Senate (W/U)": { watermark_blend(wm_directory + "ravnica/azorius2.png") }
+ "guild symbol House Dimir (U/B)": { watermark_blend(wm_directory + "ravnica/dimir2.png") }
+ "guild symbol The Cult of Rakdos (B/R)": { watermark_blend(wm_directory + "ravnica/rakados2.png") }
+ "guild symbol The Gruul Clans (R/G)": { watermark_blend(wm_directory + "ravnica/gruul2.png") }
+ "guild symbol The Selesnya Conclave (G/W)": { watermark_blend(wm_directory + "ravnica/selesnya2.png") }
+ "guild symbol The Orzhov Syndicate (W/B)": { watermark_blend(wm_directory + "ravnica/orzhov2.png") }
+ "guild symbol The Izzet (U/R)": { watermark_blend(wm_directory + "ravnica/izzet2.png") }
+ "guild symbol The Golgari (B/G)": { watermark_blend(wm_directory + "ravnica/golgari2.png") }
+ "guild symbol The Boros Legion (R/W)": { watermark_blend(wm_directory + "ravnica/boros2.png") }
+ "guild symbol The Simic Combine (G/U)": { watermark_blend(wm_directory + "ravnica/simic2.png") }
+
+ "guild symbol originals The Azorius Senate (W/U)": { watermark_blend(wm_directory + "ravnica/azorius.png") }
+ "guild symbol originals House Dimir (U/B)": { watermark_blend(wm_directory + "ravnica/dimir.png") }
+ "guild symbol originals The Cult of Rakdos (B/R)": { watermark_blend(wm_directory + "ravnica/rakados.png") }
+ "guild symbol originals The Gruul Clans (R/G)": { watermark_blend(wm_directory + "ravnica/gruul.png") }
+ "guild symbol originals The Selesnya Conclave (G/W)": { watermark_blend(wm_directory + "ravnica/selesnya.png") }
+ "guild symbol originals The Orzhov Syndicate (W/B)": { watermark_blend(wm_directory + "ravnica/orzhov.png") }
+ "guild symbol originals The Izzet (U/R)": { watermark_blend(wm_directory + "ravnica/izzet.png") }
+ "guild symbol originals The Golgari (B/G)": { watermark_blend(wm_directory + "ravnica/golgari.png") }
+ "guild symbol originals The Boros Legion (R/W)": { watermark_blend(wm_directory + "ravnica/boros.png") }
+ "guild symbol originals The Simic Combine (G/U)": { watermark_blend(wm_directory + "ravnica/simic.png") }
+
+ "guild symbol ancients The Azorius Senate (W/U)": { watermark_blend(wm_directory + "frazier/azorius.png") }
+ "guild symbol ancients House Dimir (U/B)": { watermark_blend(wm_directory + "frazier/dimir.png") }
+ "guild symbol ancients The Cult of Rakdos (B/R)": { watermark_blend(wm_directory + "frazier/rakdos.png") }
+ "guild symbol ancients The Gruul Clans (R/G)": { watermark_blend(wm_directory + "frazier/gruul.png") }
+ "guild symbol ancients The Selesnya Conclave (G/W)": { watermark_blend(wm_directory + "frazier/selesnya.png") }
+ "guild symbol ancients The Orzhov Syndicate (W/B)": { watermark_blend(wm_directory + "frazier/orzhov.png") }
+ "guild symbol ancients The Izzet (U/R)": { watermark_blend(wm_directory + "frazier/izzet.png") }
+ "guild symbol ancients The Golgari (B/G)": { watermark_blend(wm_directory + "frazier/golgari.png") }
+ "guild symbol ancients The Boros Legion (R/W)": { watermark_blend(wm_directory + "frazier/boros.png") }
+ "guild symbol ancients The Simic Combine (G/U)": { watermark_blend(wm_directory + "frazier/simic.png") }
+
+ "faction symbol mirrodin": { watermark_blend(wm_directory + "mirrodin/mirrodin.png") }
+ "faction symbol phyrexia": { watermark_blend(wm_directory + "mirrodin/phyrexia.png") }
+
+ "clan symbol The Abzan Houses (WBG)": { watermark_blend(wm_directory + "tarkir/abzan.png") }
+ "clan symbol The Jeskai Way (URW)": { watermark_blend(wm_directory + "tarkir/jeskai.png") }
+ "clan symbol The Sultai Brood (BGU)": { watermark_blend(wm_directory + "tarkir/sultai.png") }
+ "clan symbol The Mardu Horde (RWB)": { watermark_blend(h:400, wm_directory + "tarkir/mardu.png") }
+ "clan symbol The Temur Frontier (GUR)": { watermark_blend(wm_directory + "tarkir/temur.png") }
+
+ "brood symbol Dromoka's Brood (GW)": { watermark_blend(wm_directory + "tarkir/dromoka.png") }
+ "brood symbol Ojutai's Brood (WU)": { watermark_blend(wm_directory + "tarkir/ojutai.png") }
+ "brood symbol Silumgar's Brood (UB)": { watermark_blend(wm_directory + "tarkir/silumgar.png") }
+ "brood symbol Kolaghan's Brood (BR)": { watermark_blend(wm_directory + "tarkir/kolaghan.png", h:400) }
+ "brood symbol Atarka's Brood (RG)": { watermark_blend(wm_directory + "tarkir/atarka.png") }
+
+ "family symbol Brokers (GWU)": { watermark_blend(wm_directory + "capenna/brokers.png") }
+ "family symbol Cabaretti (RGW)": { watermark_blend(wm_directory + "capenna/cabaretti.png") }
+ "family symbol Maestros (UBR)": { watermark_blend(wm_directory + "capenna/maestros.png") }
+ "family symbol Obscura (WUB)": { watermark_blend(wm_directory + "capenna/obscura.png") }
+ "family symbol Riveteers (BRG)": { watermark_blend(wm_directory + "capenna/riveteers.png") }
+
+ "unstable factions Order of the Widget": { watermark_blend(wm_directory + "unstable/widget.png") }
+ "unstable factions Agents of S.N.E.A.K.": { watermark_blend(wm_directory + "unstable/SNEAK.png") }
+ "unstable factions League of Dastardly Doom": { watermark_blend(wm_directory + "unstable/doom.png") }
+ "unstable factions Goblin Explosioneers": { watermark_blend(wm_directory + "unstable/explosioneers.png") }
+ "unstable factions Crossbreed Labs": { watermark_blend(wm_directory + "unstable/crossbreed.png") }
+
+ "colored xander hybrid mana B/R": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "xander/brmana_colored.png") }
+ "colored xander hybrid mana U/B": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "xander/ubmana_colored.png") }
+ "colored xander hybrid mana B/G": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "xander/bgmana_colored.png") }
+ "colored xander hybrid mana R/G": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "xander/rgmana_colored.png") }
+ "colored xander hybrid mana G/U": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "xander/gumana_colored.png") }
+ "colored xander hybrid mana U/R": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "xander/urmana_colored.png") }
+ "colored xander hybrid mana W/B": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "xander/wbmana_colored.png") }
+ "colored xander hybrid mana G/W": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "xander/gwmana_colored.png") }
+ "colored xander hybrid mana R/W": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "xander/rwmana_colored.png") }
+ "colored xander hybrid mana W/U": { watermark_blend(colored: true, alpha: 1, dark_alpha: 1, wm_directory + "xander/wumana_colored.png") }
+
+ "xander hybrid mana B/R": { watermark_blend(alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, wm_directory + "xander/brmana.png") }
+ "xander hybrid mana U/B": { watermark_blend(alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, wm_directory + "xander/ubmana.png") }
+ "xander hybrid mana B/G": { watermark_blend(alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, wm_directory + "xander/bgmana.png") }
+ "xander hybrid mana R/G": { watermark_blend(alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, wm_directory + "xander/rgmana.png") }
+ "xander hybrid mana G/U": { watermark_blend(alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, wm_directory + "xander/gumana.png") }
+ "xander hybrid mana U/R": { watermark_blend(alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, wm_directory + "xander/urmana.png") }
+ "xander hybrid mana W/B": { watermark_blend(alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, wm_directory + "xander/wbmana.png") }
+ "xander hybrid mana G/W": { watermark_blend(alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, wm_directory + "xander/gwmana.png") }
+ "xander hybrid mana R/W": { watermark_blend(alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, wm_directory + "xander/rwmana.png") }
+ "xander hybrid mana W/U": { watermark_blend(alpha: 0.26, spotlight_alpha: 0.85, dark_alpha: 0.26, dark_spotlight_alpha: 0.85, h:266, l:266, wm_directory + "xander/wumana.png") }
+
+ "future sight type symbols artifact": { watermark_blend(wm_directory + "future/artifact.png") }
+ "future sight type symbols creature": { watermark_blend(wm_directory + "future/creature.png") }
+ "future sight type symbols enchantment": { watermark_blend(wm_directory + "future/enchantment.png") }
+ "future sight type symbols instant": { watermark_blend(wm_directory + "future/instant.png") }
+ "future sight type symbols land": { watermark_blend(wm_directory + "future/land.png") }
+ "future sight type symbols multiple": { watermark_blend(wm_directory + "future/multiple.png") }
+ "future sight type symbols planeswalker": { watermark_blend(wm_directory + "future/planeswalker.png") }
+ "future sight type symbols sorcery": { watermark_blend(wm_directory + "future/sorcery.png") }
+ "future sight type symbols structure": { watermark_blend(wm_directory + "future/structure.png") }
+
+ "other magic symbols chaos symbol": { watermark_blend(h:500, l:500, wm_directory + "other/chaos.png") }
+ "other magic symbols story spotlight": { watermark_blend(h:500, l:500, wm_directory + "other/planeswalker.png") }
+ "other magic symbols color spotlight": { watermark_blend(h:500, l:500, wm_directory + "other/planeswalker.png") }
+ "other magic symbols shooting star": { watermark_blend(h:400, l:500, wm_directory + "promo/shooting_star.png") }
+ "other magic symbols color pie": { watermark_blend(h:500, l:500, wm_directory + "other/colorpie.png") }
+ "other magic symbols judge academy": { watermark_blend(h:500, l:500, wm_directory + "promo/judge_academy.png") }
+ "other magic symbols foretell": { watermark_blend(h:460, l:500, wm_directory + "other/foretell.png") }
+ "other magic symbols jace consortium": { watermark_blend(h:500, l:500, wm_directory + "other/jace-consortium.png") }
+ "other magic symbols seekers of carmot": { watermark_blend(h:500, l:500, wm_directory + "other/seekersofcarmot.png") }
+ "other magic symbols desparked": { watermark_blend(h:500, l:500, wm_directory + "other/desparked.png") }
+ "other magic symbols aetherprint": { watermark_blend(alpha: 0.28, spotlight_alpha: 0.55, dark_alpha: 0.28, dark_spotlight_alpha: 0.5, h:500, l:317, wm_directory + "other/aetherprint.png") }
+ "other magic symbols phyrexia": { watermark_blend(alpha: 0.30, spotlight_alpha: 0.60, dark_alpha: 0.30, dark_spotlight_alpha: 0.5, h:217, l:115, wm_directory + "other/phyrexia.png") }
+ "other magic symbols the thran": { watermark_blend(alpha: 0.25, spotlight_alpha: 0.55, dark_alpha: 0.28, dark_spotlight_alpha: 0.4, h:240, l:163, wm_directory + "other/thran.png") }
+ "other magic symbols conspiracy stamp": { watermark_blend(colored: true, alpha: 0.35, dark_alpha: 0.25, wm_directory + "other/conspiracy_stamp.png") }
+
+ "other magic symbols innistrad provinces stensia": { watermark_blend(wm_directory + "innistrad/stensia.png") }
+ "other magic symbols innistrad provinces kessig": { watermark_blend(wm_directory + "innistrad/kessig.png") }
+ "other magic symbols innistrad provinces gavony": { watermark_blend(wm_directory + "innistrad/gavony.png") }
+ "other magic symbols innistrad provinces nephalia": { watermark_blend(wm_directory + "innistrad/nephalia.png") }
+
+ "other magic symbols theros poleis akros": { watermark_blend(wm_directory + "theros/akros.png") }
+ "other magic symbols theros poleis meletis": { watermark_blend(wm_directory + "theros/meletis.png") }
+ "other magic symbols theros poleis setessa": { watermark_blend(wm_directory + "theros/setessa.png") }
+
+ "alara symbols Bant": { watermark_blend(wm_directory + "alara/bant.png") }
+ "alara symbols Esper": { watermark_blend(wm_directory + "alara/esper.png") }
+ "alara symbols Grixis": { watermark_blend(wm_directory + "alara/grixis.png") }
+ "alara symbols Jund": { watermark_blend(wm_directory + "alara/jund.png") }
+ "alara symbols Naya": { watermark_blend(wm_directory + "alara/naya.png") }
+
+ "alara symbols colored Bant": { watermark_blend(colored: true, alpha: 0.25, dark_alpha: 0.25, wm_directory + "alara/bant_colored.png") }
+ "alara symbols colored Esper": { watermark_blend(colored: true, alpha: 0.25, dark_alpha: 0.40, wm_directory + "alara/esper_colored.png") }
+ "alara symbols colored Grixis": { watermark_blend(colored: true, alpha: 0.22, dark_alpha: 0.55, wm_directory + "alara/grixis_colored.png") }
+ "alara symbols colored Jund": { watermark_blend(colored: true, alpha: 0.25, dark_alpha: 0.40, wm_directory + "alara/jund_colored.png") }
+ "alara symbols colored Naya": { watermark_blend(colored: true, alpha: 0.25, dark_alpha: 0.30, wm_directory + "alara/naya_colored.png") }
+
+ "college symbols Silverquill": { watermark_blend(wm_directory + "strixhaven/silverquill.png") }
+ "college symbols Prismari": { watermark_blend(wm_directory + "strixhaven/prismari.png") }
+ "college symbols Witherbloom": { watermark_blend(wm_directory + "strixhaven/witherbloom.png") }
+ "college symbols Lorehold": { watermark_blend(wm_directory + "strixhaven/lorehold.png") }
+ "college symbols Quandrix": { watermark_blend(wm_directory + "strixhaven/quandrix.png") }
+
+ "universes beyond D&D": { watermark_blend(wm_directory + "ub/d&d.png") }
+ "universes beyond transformers": { watermark_blend(wm_directory + "ub/transformers.png") }
+ "universes beyond ponies applejack": { watermark_blend(wm_directory + "ponies/applejack.png") }
+ "universes beyond ponies pinkie pie": { watermark_blend(wm_directory + "ponies/pinkie pie.png") }
+ "universes beyond ponies fluttershy": { watermark_blend(wm_directory + "ponies/fluttershy.png") }
+ "universes beyond ponies rainbow dash": { watermark_blend(wm_directory + "ponies/rainbow dash.png") }
+ "universes beyond ponies rarity": { watermark_blend(wm_directory + "ponies/rarity.png") }
+ "universes beyond ponies twilight sparkle": { watermark_blend(wm_directory + "ponies/twilight sparkle.png") }
+ "universes beyond ponies nightmare moon": { watermark_blend(wm_directory + "ponies/nightmare moon.png") }
+ "universes beyond ponies luna": { watermark_blend(wm_directory + "ponies/luna.png") }
+
+ "custom watermark one": { watermark_blend(custom_watermark_1(), custom:true) }
+ "custom watermark two": { watermark_blend(custom_watermark_2(), custom:true) }
+ "custom watermark three": { watermark_blend(custom_watermark_3(), custom:true) }
+ "custom watermark four": { watermark_blend(custom_watermark_4(), custom:true) }
+ "custom watermark five": { watermark_blend(custom_watermark_5(), custom:true) }
+ "custom watermark six": { watermark_blend(custom_watermark_6(), custom:true) }
+ "custom watermark seven": { watermark_blend(custom_watermark_7(), custom:true) }
+ "custom watermark eight": { watermark_blend(custom_watermark_8(), custom:true) }
+ "custom watermark nine": { watermark_blend(custom_watermark_9(), custom:true) }
+ "custom watermark ten": { watermark_blend(custom_watermark_10(), custom:true) }
+ "custom watermark card": { watermark_blend(custom_watermark_a(), custom:true) }
+
+ "set symbol": { if (styling.watermark_render or else set.blend_with_colors) == "glow" then glow_watermark_blend(symbol_variation(symbol: set.symbol, variation: "watermark")) else shadow_watermark_blend(symbol_variation(symbol: set.symbol, variation: "watermark")) }
+]
+
+############################################################## Other scripted fields
+#### Dimensions of card faces, can be changed in style files
+faces_coordinates := {
+ [
+ [
+ left: 0,
+ top: 0,
+ width: stylesheet.card_width,
+ height: stylesheet.card_height
+ ]
+ ]
+}
+face_coordinates_string := {
+ fc := faces_coordinates()
+ for x from 0 to length(fc) - 1 do fc[x].left + "," + fc[x].top + "," + fc[x].width + "," + fc[x].height + ";"
+}
+face_coordinates_map := {
+ fc := faces_coordinates()
+ fc[input-1] or else [top: 0, left:0, width:0, height:0]
+}
+face_is_rotated :=
+{
+ map := face_coordinates_map(input)
+ map.width > map.height
+}
+############################################################## Information below the textbox
+############################################################## Global offsets
+#### To shift everything up/down:
+information_offset_top_1 := { 0 }
+#### To shift the card number, set code and artist credit left/right:
+information_codes_offset_left_1 := { 0 }
+#### To shift the actual copyright lines left/right:
+information_copyright_offset_right_1 := { 0 }
+#### To shift the copyright up/down on creatures/walkers, if the pt/loyalty box is very short/tall:
+information_copyright_offset_pt_top_1 := { 0 }
+#### To shift the secondary copyright left/right on creatures/walkers, if the pt/loyalty box is very narrow/wide:
+information_secondary_offset_pt_left_1 := { 0 }
+#### For the other faces on DFCs use:
+information_offset_top_2 := { 0 }
+information_codes_offset_left_2 := { 0 }
+information_copyright_offset_right_2 := { 0 }
+information_copyright_offset_pt_top_2 := { 0 }
+information_secondary_offset_pt_left_2 := { 0 }
+information_offset_top_3 := { 0 }
+information_codes_offset_left_3 := { 0 }
+information_copyright_offset_right_3 := { 0 }
+information_copyright_offset_pt_top_3 := { 0 }
+information_secondary_offset_pt_left_3 := { 0 }
+#### These work the same on 90° rotated cards, but you need to imagine the card is upright
+#### For DFC or TFC templates, dont forget to override the faces_coordinates function.
+#### You can disable the copyright on some of the faces,
+#### by adding the following functions in the init script:
+information_disabled_1 := { false }
+information_disabled_2 := { false }
+information_disabled_3 := { false }
+
+############################################################## Card code fields
+set_code_script :=
+{
+ code := if is_masterpiece() then set.masterpiece_set_code else set.set_code
+ if code == "" then set.set_language else (
+ brush := if margin_code == "setcode1" then card.additional_credit_brush
+ else if margin_code == "setcode2" then card.additional_credit_brush_4
+ else if margin_code == "setcode3" then card.additional_credit_brush_5
+ else "none"
+ if brush == "none" or (not set.adaptive_language_height)
+ then code + (if set.set_language != "" then " • " else "") + set.set_language
+ else code)
+}
+set_language_script :=
+{
+ set.set_language
+}
+#### a/b add-ons for DFCs
+card_number_tags := {
+ if contains(card.shape, match:"double")
+ then ["a", "b", "b"]
+ else ["", "", ""]
+}
+#### General card code handler
+card_code_script_core := {
+ if not use_auto_numbers() and set.card_number_style == "0001" then
+ ### R CUSTOM TEXT
+ combined_editor(prefix: rarity_code() + " ", field1: card.custom_card_number, separator: " ", field2: card_code_text)
+ else if not use_auto_numbers() then
+ ### CUSTOM R TEXT
+ combined_editor(field1: card.custom_card_number, separator: " " + rarity_code() + " ", field2: card_code_text)
+ else if set.card_number_style == "0001/0099" then
+ ### R 1000/1000 TEXT
+ forward_editor(prefix: rarity_code() + " " + card_number_mom() + tag + (if over_partition() and set.over_partition_display == "100" then "" else "/" + card_count_mom()) + " ", field: card_code_text)
+ else if set.card_number_style == "0001" then
+ ### R 1000 TEXT
+ forward_editor(prefix: rarity_code() + " " + card_number_mom() + tag + " ", field: card_code_text)
+ else if set.card_number_style == "001/099" then
+ ### 100/100 R TEXT
+ forward_editor(prefix: card_number_m15() + tag + (if over_partition() and set.over_partition_display == "100" then "" else "/" + card_count_m15()) + " " + rarity_code() + " ", field: card_code_text)
+ else if set.card_number_style == "001" then
+ ### 100 R TEXT
+ forward_editor(prefix: card_number_m15() + tag + " " + rarity_code() + " ", field: card_code_text)
+ else if set.card_number_style == "1/99" then
+ ### 1/99 R TEXT
+ forward_editor(prefix: card_number() + tag + (if over_partition() and set.over_partition_display == "100" then "" else "/" + card_count()) + " " + rarity_code() + " ", field: card_code_text)
else
- reminder_text := ""
- reminder_text
+ ### 1 R TEXT
+ forward_editor(prefix: card_number() + tag + " " + rarity_code() + " ", field: card_code_text)
+}@(tag: "")
+#### Card code script for individual faces
+card_code_script :=
+{
+ card_code_script_core(card_code_text: card.card_code_text, tag:card_number_tags()[0])
+}
+card_code_script2 :=
+{
+ card_code_script_core(card_code_text: card.card_code_text_2, tag:card_number_tags()[1])
+}
+card_code_script3 :=
+{
+ card_code_script_core(card_code_text: card.card_code_text_3, tag:card_number_tags()[2])
+}
+############################################################## Copyright fields
+copyright_default := { set.copyright }
+secondary_copyright_default := { set.secondary_copyright }
+############################################################## Additional credit fields
+illustrator_brush_default := { "art" }
+illustrator_brush_field := { if input <= 1 then card.illustrator_brush else card["illustrator_brush_" + input] }
+illustrator_brush_image :=
+{
+ shape := illustrator_brush_field(field)
+ image := "/magic-modules.mse-include/information/" + shape + ".png"
+ color := styling.copyright_text_color or else set.copyright_text_color
+ recolor_image(image, color: color)
+}
+additional_credit_default := { "" }
+additional_credit_brush_default := { "none" }
+additional_credit_brush_field := { if input <= 1 then card.additional_credit_brush else card["additional_credit_brush_" + input] }
+additional_credit_brush_image :=
+{
+ shape := additional_credit_brush_field(field)
+ image := "/magic-modules.mse-include/information/" + shape + ".png"
+ color := styling.copyright_text_color or else set.copyright_text_color
+ recolor_image(image, color: color)
+}
+############################################################## The List
+the_list_icon_default := { "none" }
+the_list_icon_field := { if input <= 1 then card.the_list_icon else card["the_list_icon_" + input] }
+the_list_icon_image :=
+{
+ shape := the_list_icon_field(field)
+ suffix := if shape == "the list" and face_coordinates_map(face).width != 375 and face_coordinates_map(face).width != 523 then " 750" else ""
+ image := "/magic-modules.mse-include/information/" + shape + suffix + ".png"
+ color := styling.copyright_text_color or else set.copyright_text_color
+ recolor_image(image, color: color)
}
-###### Print Fix
-rare_width := {
- cw := card_style.rarity.content_width
- cw := if cw > 44 then (if set.print_fix != "" then set.print_fix else 22) else if cw < 22 then 22 else cw
- if card_style.rarity.width == 0 then 0 else cw
+############################################################## Additional textboxes
+text_filter_default :=
+{
+ if transfer_levels() then
+ (
+ if margin_code == "lv1" then card.rule_text
+ else if margin_code == "lv2" then card.rule_text_2
+ else if margin_code == "lv3" then card.rule_text_3
+ else if margin_code == "lv4" then card.rule_text_4
+ else if margin_code == "lv5" then card.rule_text_5
+ else if margin_code == "lv6" then card.rule_text_6
+ else ""
+ )
+ else ""
+}
+text_style_field := { if input <= 1 then card_style.text else card_style["text_" + input] }
+
+############################################################## Saga/Class reminder
+chapter_text_filter_default :=
+{
+ if margin_code == "chapter_text" then (if not a_saga() then "" else if card.rule_text != "" then card.rule_text else "(" + saga_reminder() + ")")
+ else if margin_code == "chapter_text2" then (if not b_saga() then "" else "(" + saga_reminderb() + ")")
+ else ""
+}
+############################################################## Leveler textboxes
+level_filter_default := { "" }
+level_filter := { input }
+
+#### Correct the CARDNAME atom for levelers
+#### This can be overwritten for more complicated levelers
+#### Dungeons for example will overwrite with just {if set.alias_as_cardname and card.alias != "" then card.alias else card.name}
+card_name_for_level := {
+ lvl := if input < 5
+ then ""
+ else if input < 9
+ then "_2"
+ else if input < 13
+ then "_3"
+ else if input < 17
+ then "_4"
+ else ""
+ if set.alias_as_cardname and card["alias"+lvl] != "" then card["alias"+lvl] else card["name"+lvl]
}
-### Customize fonts
+############################################################## Border
+border_color_default := { set.border_color }
+
+corners_default := { set.corner_shape }
+corners_field := { if input <= 1 then card.corners else card["corners_" + input] }
+corners_image :=
+{
+ shape := corners_field(field)
+ color := if shape == "none" then card.border_color else rgb(255,255,255)
+ if shape == "invisible"
+ then "/magic-modules.mse-include/corners/invisible.png"
+ else recolor_image("/magic-modules.mse-include/corners/color.png", color: color)
+}
+corners_mask :=
+{
+ map := face_coordinates_map(face)
+ if map.width == 0 or map.height == 0 then "" else (
+ dimensions := map.width + "x" + map.height
+ dimensions := corners_possible_dimensions[dimensions] or else (if map.height > map.width then "1046x750" else "750x1046")
+ shape := corners_field(field)
+ shape := if shape == "none" or shape == "invisible" then "rounded" else shape
+ "/magic-modules.mse-include/corners/" + dimensions + " " + shape + ".png"
+ )
+}
+corners_possible_dimensions :=
+[
+ "375x523": "375x523"
+ "523x375": "523x375"
+ "646x902": "646x902"
+ "902x646": "902x646"
+ "744x1039": "744x1039"
+ "1039x744": "1039x744"
+ "750x1046": "750x1046"
+ "1046x750": "1046x750"
+]
+
+corners_disabled_1 := { false }
+corners_disabled_2 := { false }
+corners_disabled_3 := { false }
+
+############################################################## Punchout counters
+counter_default := { "+1/+1" }
+counter_field := { if input <= 1 then card.counter else card["counter_" + input] }
+counter_image :=
+{
+ shape := replace(counter_field(field), match: "/", replace: "")
+ if shape == "custom" then
+ (
+ path := styling["symbol_" + field + "_custom_image_location"]
+ or else styling["counter_symbol_" + field + "_custom_image_location"]
+ or else ""
+ if contains(path, match: ".png")
+ then "/magic-modules.mse-include/counters/" + path
+ else "/magic-modules.mse-include/counters/none.png"
+ )
+ else if shape == "none" then "/magic-modules.mse-include/counters/none.png"
+ else
+ (
+ color := styling.symbol_color
+ or else styling.counter_symbol_color
+ or else rgb(255,255,255)
+ recolor_image("/magic-modules.mse-include/counters/" + shape + ".png", color: color)
+ )
+}
+
+############################################################## Future Sight typesymbols
+typesymbol_for :=
+ to_text +
+ { lang_setting("remove_supertypes")(input) } +
+ { replace(match: lang_setting("supertype_separator"), replace: "") } +
+ {
+ if input == lang_setting("creature") then "creature"
+ else if input == lang_setting("sorcery") then "sorcery"
+ else if input == lang_setting("instant") then "instant"
+ else if input == lang_setting("artifact") then "artifact"
+ else if input == lang_setting("enchantment") then "enchantment"
+ else if input == lang_setting("land") then "land"
+ else if input == lang_setting("planeswalker") then "planeswalker"
+ else if input == lang_setting("battle") then "battle"
+ else if input == lang_setting("emblem") then "non standard emblem"
+ else if input == lang_setting("conspiracy") then "non standard conspiracy"
+ else if input == lang_setting("dungeon") then "non standard dungeon"
+ else if input == lang_setting("hero") then "non standard hero"
+ else if input == lang_setting("phenomenon") then "non standard phenomenon"
+ else if input == lang_setting("plane") then "non standard plane"
+ else if input == lang_setting("scheme") then "non standard scheme"
+ else if input == lang_setting("vanguard") then "non standard vanguard"
+ else "multitype"
+ }
+typesymbol_type := { typesymbol_for(type) }
+############################################################## Transform/Lesson symbols
+transform_symbol_default :=
+{
+ if margin_code == "transform1" then "none"
+ else if margin_code == "transform2" then "none"
+ else "none"
+}
+transform_symbol_field := { if input <= 1 then card.transformation else card["transformation_" + input] }
+transform_symbol_is_mirrored :=
+{
+ if input <= 1
+ then transform_symbol_mirrored_1()
+ else if input == 2
+ then transform_symbol_mirrored_2()
+ else transform_symbol_mirrored_3()
+}
+transform_symbol_image :=
+{
+ map := face_coordinates_map(face)
+ if map.width == 0 or map.height == 0
+ then ""
+ else (
+ shape := transform_symbol_field(face)
+ link := clean_transform_symbol_shape(shape)
+ if transform_symbol_is_mirrored(face) then link := flip_transform_symbol_shape(link)
+ if contains(link, match:"/default") then (
+ color := sparker_card_color(card_color_field(face))
+ link := replace(link, match:"/default", replace:"/"+color)
+ )
+ case shape of
+ "none": "",
+ "custom symbol one": custom_symbol_1(),
+ "custom symbol two": custom_symbol_2(),
+ "custom symbol three": custom_symbol_3(),
+ "custom symbol four": custom_symbol_4(),
+ else: "/magic-modules.mse-include/symbols/" + link + ".png";
+ )
+}
+clean_transform_symbol_shape :=
+ replace@(match: "modal front ", replace: "modalfront/") +
+ replace@(match: "modal back ", replace: "modalback/") +
+ replace@(match: "sparker [(]colored[)] ", replace: "sparker/") +
+ replace@(match: "extra |non standard ", replace: "")
+flip_transform_symbol_shape :=
+ replace@(match: "modalfront/", replace: "modalfrontflipped/") +
+ replace@(match: "modalback/", replace: "modalbackflipped/")
+
+#### General form
+transform_symbol_left :=
+{
+ map := face_coordinates_map(face)
+ mirrored := transform_symbol_is_mirrored(1)
+ if map.width > map.height then
+ (
+ if mirrored then map.left + 455 * map.width/523 + offset
+ else map.left + 52 * map.width/523 + offset
+ )
+ else
+ (
+ if mirrored then map.left + 319 * map.width/375 + offset
+ else map.left + 13 * map.width/375 + offset
+ )
+}
+transform_symbol_top :=
+{
+ map := face_coordinates_map(face)
+ if map.width > map.height then
+ map.top + 11 * map.height/375 + offset
+ else map.top + 19 * map.height/523 + offset
+}
+transform_symbol_width :=
+{
+ map := face_coordinates_map(face)
+ if map.width > map.height then
+ 43 * map.width/523 + offset
+ else 43 * map.width/375 + offset
+}
+transform_symbol_height :=
+{
+ map := face_coordinates_map(face)
+ if map.width > map.height then
+ 43 * map.height/375 + offset
+ else 43 * map.height/523 + offset
+}
+
+#### Specific faces
+transform_symbol_face_1 := { 1 }
+transform_symbol_disabled_1 := { false }
+transform_symbol_mirrored_1 := { false }
+transform_symbol_offset_top_1 := { 0 }
+transform_symbol_offset_left_1 := { 0 }
+transform_symbol_offset_width_1 := { 0 }
+transform_symbol_offset_height_1 := { 0 }
+transform_symbol_left_1 := { transform_symbol_left(face:transform_symbol_face_1(), offset:transform_symbol_offset_left_1()) }
+transform_symbol_top_1 := { transform_symbol_top(face:transform_symbol_face_1(), offset:transform_symbol_offset_top_1()) }
+transform_symbol_width_1 := { transform_symbol_width(face:transform_symbol_face_1(), offset:transform_symbol_offset_width_1()) }
+transform_symbol_height_1 := { transform_symbol_height(face:transform_symbol_face_1(), offset:transform_symbol_offset_height_1()) }
+
+transform_symbol_face_2 := { 2 }
+transform_symbol_disabled_2 := { false }
+transform_symbol_mirrored_2 := { false }
+transform_symbol_offset_top_2 := { 0 }
+transform_symbol_offset_left_2 := { 0 }
+transform_symbol_offset_width_2 := { 0 }
+transform_symbol_offset_height_2 := { 0 }
+transform_symbol_left_2 := { transform_symbol_left(face:transform_symbol_face_2(), offset:transform_symbol_offset_left_2()) }
+transform_symbol_top_2 := { transform_symbol_top(face:transform_symbol_face_2(), offset:transform_symbol_offset_top_2()) }
+transform_symbol_width_2 := { transform_symbol_width(face:transform_symbol_face_2(), offset:transform_symbol_offset_width_2()) }
+transform_symbol_height_2 := { transform_symbol_height(face:transform_symbol_face_2(), offset:transform_symbol_offset_height_2()) }
+
+transform_symbol_face_3 := { 3 }
+transform_symbol_disabled_3 := { false }
+transform_symbol_mirrored_3 := { false }
+transform_symbol_offset_top_3 := { 0 }
+transform_symbol_offset_left_3 := { 0 }
+transform_symbol_offset_width_3 := { 0 }
+transform_symbol_offset_height_3 := { 0 }
+transform_symbol_left_3 := { transform_symbol_left(face:transform_symbol_face_3(), offset:transform_symbol_offset_left_3()) }
+transform_symbol_top_3 := { transform_symbol_top(face:transform_symbol_face_3(), offset:transform_symbol_offset_top_3()) }
+transform_symbol_width_3 := { transform_symbol_width(face:transform_symbol_face_3(), offset:transform_symbol_offset_width_3()) }
+transform_symbol_height_3 := { transform_symbol_height(face:transform_symbol_face_3(), offset:transform_symbol_offset_height_3()) }
+
+############################################################## Tombstone/Alchemy symbols
+card_symbol_default := { "" }
+card_symbol_field := { if input <= 1 then card.card_symbol else card["card_symbol_" + input] }
+card_symbol_image := {
+ map := face_coordinates_map(face)
+ shape := card_symbol_field(face)
+ if shape == "none" or map.width == 0 or map.height == 0
+ then ""
+ else "/magic-modules.mse-include/card-symbols/" + shape + ".png"
+}
+
+card_symbol_left :=
+{
+ map := face_coordinates_map(face)
+ has_tr := (transform_symbol_field(face) != "none")
+ has_sym := (card_symbol_field(face) != "none")
+ default := if has_tr
+ then 8 + 18 + 28
+ else if has_sym
+ then 8 + 18
+ else 8
+ if map.width > map.height then map.left + default * map.width/523 + offset
+ else map.left + default * map.width/375 + offset
+}
+card_symbol_top :=
+{
+ map := face_coordinates_map(face)
+ if map.width > map.height then map.top + 21 * map.height/375 + offset
+ else map.top + 29 * map.height/523 + offset
+}
+card_symbol_width :=
+{
+ map := face_coordinates_map(face)
+ default := if card_symbol_field(face) == "none" then 9 else 23
+ if map.width > map.height then default * map.width/523 + offset
+ else default * map.width/375 + offset
+}
+card_symbol_height :=
+{
+ map := face_coordinates_map(face)
+ if map.width > map.height then 21 * map.height/375 + offset
+ else 21 * map.height/523 + offset
+}
+
+card_symbol_face_1 := { 1 }
+card_symbol_disabled_1 := { false }
+card_symbol_offset_top_1 := { 0 }
+card_symbol_offset_left_1 := { 0 }
+card_symbol_offset_width_1 := { 0 }
+card_symbol_offset_height_1 := { 0 }
+card_symbol_left_1 := { card_symbol_left( face:card_symbol_face_1(), offset:card_symbol_offset_left_1()) }
+card_symbol_top_1 := { card_symbol_top( face:card_symbol_face_1(), offset:card_symbol_offset_top_1()) }
+card_symbol_width_1 := { card_symbol_width( face:card_symbol_face_1(), offset:card_symbol_offset_width_1()) }
+card_symbol_height_1 := { card_symbol_height(face:card_symbol_face_1(), offset:card_symbol_offset_height_1()) }
+
+card_symbol_face_2 := { 2 }
+card_symbol_disabled_2 := { false }
+card_symbol_offset_top_2 := { 0 }
+card_symbol_offset_left_2 := { 0 }
+card_symbol_offset_width_2 := { 0 }
+card_symbol_offset_height_2 := { 0 }
+card_symbol_left_2 := { card_symbol_left( face:card_symbol_face_2(), offset:card_symbol_offset_left_2()) }
+card_symbol_top_2 := { card_symbol_top( face:card_symbol_face_2(), offset:card_symbol_offset_top_2()) }
+card_symbol_width_2 := { card_symbol_width( face:card_symbol_face_2(), offset:card_symbol_offset_width_2()) }
+card_symbol_height_2 := { card_symbol_height(face:card_symbol_face_2(), offset:card_symbol_offset_height_2()) }
+
+card_symbol_face_3 := { 3 }
+card_symbol_disabled_3 := { false }
+card_symbol_offset_top_3 := { 0 }
+card_symbol_offset_left_3 := { 0 }
+card_symbol_offset_width_3 := { 0 }
+card_symbol_offset_height_3 := { 0 }
+card_symbol_left_3 := { card_symbol_left( face:card_symbol_face_3(), offset:card_symbol_offset_left_3()) }
+card_symbol_top_3 := { card_symbol_top( face:card_symbol_face_3(), offset:card_symbol_offset_top_3()) }
+card_symbol_width_3 := { card_symbol_width( face:card_symbol_face_3(), offset:card_symbol_offset_width_3()) }
+card_symbol_height_3 := { card_symbol_height(face:card_symbol_face_3(), offset:card_symbol_offset_height_3()) }
+
+############################################################## Loyalty costs
+loyalty_clean_margin_code := replace@(match: "loy(cost)?", replace: "")
+loyalty_cost_field :=
+{
+ input := loyalty_clean_margin_code(input)
+ card["loyalty_cost_" + input]
+}
+loyalty_cost_box_field :=
+{
+ input := loyalty_clean_margin_code(input)
+ card["loyalty_cost_box_" + input]
+}
+loyalty_cost_box_default :=
+{
+ cost := loyalty_cost_field(margin_code)
+ if cost == "" then "none"
+ else if contains(cost, match: "+") then "+, shadow"
+ else if contains(cost, match: "-") then "-, shadow"
+ else "0, shadow"
+}
+loyalty_cost_box_image :=
+{
+ shape := remove_comma(loyalty_cost_box_field(input + (instance-1)*8))
+ if contains(shape, match: "none") then ""
+ else "/magic-modules.mse-include/loyalty/loyalty cost " + shape + ".png"
+}
+
+loyalty_field :=
+{
+ input := loyalty_clean_margin_code(input)
+ if input <= 1 then card.loyalty else card["loyalty_" + input]
+}
+loyalty_box_field :=
+{
+ input := loyalty_clean_margin_code(input)
+ if input <= 1 then card.loyalty_box else card["loyalty_box_" + input]
+}
+loyalty_box_default :=
+{
+ margin_code := loyalty_clean_margin_code(margin_code)
+ loyalty := loyalty_field(margin_code)
+ if loyalty == "" then "none" else (
+ type := if margin_code <= 1 then card.super_type else card["super_type_" + margin_code]
+ if lang_setting("is_battle")(type) or contains(card_shape(), match: "battle") then "defense"
+ else "loyalty")
+}
+loyalty_box_image :=
+{
+ shape := remove_comma(loyalty_box_field(instance))
+ if has_none(shape) then ""
+ else "/magic-modules.mse-include/loyalty/" + shape + ".png"
+}
+
+loyalty_face_1 := { 1 }
+loyalty_text_field_1 := { 1 }
+loyalty_stamp_field_1 := { 1 }
+
+loyalty_offset_top_1 := { 0 }
+loyalty_offset_left_1 := { 0 }
+loyalty_offset_width_1 := { 0 }
+loyalty_offset_height_1 := { 0 }
+
+loyalty_cost_offset_top_1 := { 0 }
+loyalty_cost_offset_left_1 := { 0 }
+loyalty_cost_offset_width_1 := { 0 }
+loyalty_cost_offset_height_1 := { 0 }
+
+loyalty_cost_offset_text_margin_1 := { 0 }
+
+loyalty_textbox_mask_1 :=
+{
+ if is_stamped(field: loyalty_stamp_field_1())
+ then "/magic-modules.mse-include/loyalty/default_textbox_stamp_mask.png"
+ else "/magic-modules.mse-include/loyalty/default_textbox_mask.png"
+}
+
+loyalty_face_2 := { 2 }
+loyalty_text_field_2 := { 2 }
+loyalty_stamp_field_2 := { 2 }
+
+loyalty_offset_top_2 := { 0 }
+loyalty_offset_left_2 := { 0 }
+loyalty_offset_width_2 := { 0 }
+loyalty_offset_height_2 := { 0 }
+
+loyalty_cost_offset_top_2 := { 0 }
+loyalty_cost_offset_left_2 := { 0 }
+loyalty_cost_offset_width_2 := { 0 }
+loyalty_cost_offset_height_2 := { 0 }
+
+loyalty_cost_offset_text_margin_2 := { 0 }
+
+loyalty_textbox_mask_2 :=
+{
+ if is_stamped(field: loyalty_stamp_field_2())
+ then "/magic-modules.mse-include/loyalty/default_textbox_stamp_mask.png"
+ else "/magic-modules.mse-include/loyalty/default_textbox_mask.png"
+}
+
+loyalty_face_3 := { 3 }
+loyalty_text_field_3 := { 3 }
+loyalty_stamp_field_3 := { 3 }
+
+loyalty_offset_top_3 := { 0 }
+loyalty_offset_left_3 := { 0 }
+loyalty_offset_width_3 := { 0 }
+loyalty_offset_height_3 := { 0 }
+
+loyalty_cost_offset_top_3 := { 0 }
+loyalty_cost_offset_left_3 := { 0 }
+loyalty_cost_offset_width_3 := { 0 }
+loyalty_cost_offset_height_3 := { 0 }
+
+loyalty_cost_offset_text_margin_3 := { 0 }
+
+loyalty_textbox_mask_3 :=
+{
+ if is_stamped(field: loyalty_stamp_field_3())
+ then "/magic-modules.mse-include/loyalty/default_textbox_stamp_mask.png"
+ else "/magic-modules.mse-include/loyalty/default_textbox_mask.png"
+}
+
+loyalty_face := { if instance <= 1 then loyalty_face_1() else if instance == 2 then loyalty_face_2() else loyalty_face_3() }
+loyalty_text_field := { if instance <= 1 then loyalty_text_field_1() else if instance == 2 then loyalty_text_field_2() else loyalty_text_field_3() }
+loyalty_stamp_field := { if instance <= 1 then loyalty_stamp_field_1() else if instance == 2 then loyalty_stamp_field_2() else loyalty_stamp_field_3() }
+
+loyalty_offset_top := { if instance <= 1 then loyalty_offset_top_1() else if instance == 2 then loyalty_offset_top_2() else loyalty_offset_top_3() }
+loyalty_offset_left := { if instance <= 1 then loyalty_offset_left_1() else if instance == 2 then loyalty_offset_left_2() else loyalty_offset_left_3() }
+loyalty_offset_width := { if instance <= 1 then loyalty_offset_width_1() else if instance == 2 then loyalty_offset_width_2() else loyalty_offset_width_3() }
+loyalty_offset_height := { if instance <= 1 then loyalty_offset_height_1() else if instance == 2 then loyalty_offset_height_2() else loyalty_offset_height_3() }
+
+loyalty_cost_offset_top := { if instance <= 1 then loyalty_cost_offset_top_1() else if instance == 2 then loyalty_cost_offset_top_2() else loyalty_cost_offset_top_3() }
+loyalty_cost_offset_left := { if instance <= 1 then loyalty_cost_offset_left_1() else if instance == 2 then loyalty_cost_offset_left_2() else loyalty_cost_offset_left_3() }
+loyalty_cost_offset_width := { if instance <= 1 then loyalty_cost_offset_width_1() else if instance == 2 then loyalty_cost_offset_width_2() else loyalty_cost_offset_width_3() }
+loyalty_cost_offset_height := { if instance <= 1 then loyalty_cost_offset_height_1() else if instance == 2 then loyalty_cost_offset_height_2() else loyalty_cost_offset_height_3() }
+
+loyalty_cost_offset_text_margin := { if instance <= 1 then loyalty_cost_offset_text_margin_1() else if instance == 2 then loyalty_cost_offset_text_margin_2() else loyalty_cost_offset_text_margin_3() }
+
+loyalty_textbox_mask := { if instance <= 1 then loyalty_textbox_mask_1() else if instance == 2 then loyalty_textbox_mask_2() else loyalty_textbox_mask_3() }
+
+#### All these functions are implicitly passed and passing the 'instance' argument:
+a_left := { face := loyalty_face(); face_coordinates_map(face).left }
+a_top := { face := loyalty_face(); face_coordinates_map(face).top }
+a_bottom := { face := loyalty_face(); face_coordinates_map(face).top + face_coordinates_map(face).height }
+a_width := { face := loyalty_face(); face_coordinates_map(face).width }
+a_height := { face := loyalty_face(); face_coordinates_map(face).height }
+r_width := { face := loyalty_face(); face_coordinates_map(face).width/375 }
+r_height := { face := loyalty_face(); face_coordinates_map(face).height/523 }
+
+to_744_width := { input/a_width()*744 }
+to_744_height := { input/a_height()*1039 }
+
+loyalty_left := { round_near((if contains(loyalty_box_field(instance), match: "defense") then 323 else 313) * r_width() + a_left() + loyalty_offset_left() - loyalty_offset_width()) }
+loyalty_top := { round_near(472 * r_height() + a_top() + loyalty_offset_top() - loyalty_offset_height()) }
+loyalty_width := { (if contains(loyalty_box_field(instance), match: "defense") then 20 else 40) * r_width() + 2*loyalty_offset_width() }
+loyalty_height := { 21 * r_height() + 2*loyalty_offset_height() }
+loyalty_font_size := { (if contains(loyalty_box_field(instance), match: "defense") then 15 else 17) * (21 * r_height() + 0.8*loyalty_offset_height())/21 }
+
+loyalty_box_left := { 301 * r_width() + a_left() + loyalty_offset_left() - loyalty_offset_width() }
+loyalty_box_top := { 457 * r_height() + a_top() + loyalty_offset_top() - loyalty_offset_height() }
+loyalty_box_width := { 64 * r_width() + 2*loyalty_offset_width() }
+loyalty_box_height := { 52.5 * r_height() + 2*loyalty_offset_height() }
+
+loyalty_cost_left := { round_near(loyalty_ability_left() - 24 * r_width() + loyalty_cost_offset_left() - loyalty_cost_offset_width()) }
+loyalty_cost_top := { round_near(loyalty_ability_center(input) - loyalty_cost_r_height()/2 + loyalty_cost_r_correction(input) + loyalty_cost_move(input) + loyalty_cost_offset_top() - loyalty_cost_offset_height()) }
+loyalty_cost_width := { loyalty_cost_r_width() + 2*loyalty_cost_offset_width() }
+loyalty_cost_height := { if loyalty_abilities_count() >= input then loyalty_cost_r_height() + 2*loyalty_cost_offset_height() else 0 }
+loyalty_cost_r_width := { 24 * r_width() }
+loyalty_cost_r_height := { 20 * r_height() }
+loyalty_cost_r_correction :=
+{
+ cost := card["loyalty_cost_box_" + input]
+ if contains(cost, match: "+") or contains(cost, match: "anti ult") then -1 * r_height()
+ else if contains(cost, match: "-") or contains(cost, match: "ult") then -5 * r_height()
+ else -3 * r_height()
+}
+loyalty_cost_font_size := { 13 * (loyalty_cost_r_height() + 0.8*loyalty_cost_offset_height())/20 }
+
+loyalty_cost_box_left := { loyalty_ability_left() - 36 * r_width() + loyalty_cost_offset_left() - loyalty_cost_offset_width() }
+loyalty_cost_box_top := { loyalty_ability_center(input) - loyalty_cost_box_r_height()/2 + loyalty_cost_move(input) + loyalty_cost_offset_top() - loyalty_cost_offset_height() }
+loyalty_cost_box_width := { loyalty_cost_box_r_width() + 2*loyalty_cost_offset_width() }
+loyalty_cost_box_height := { if loyalty_abilities_count() >= input then loyalty_cost_box_r_height() + 2*loyalty_cost_offset_height() else 0 }
+loyalty_cost_box_r_width := { 47 * r_width() }
+loyalty_cost_box_r_height := { 36 * r_height() }
+
+loyalty_colon_left := { round_near(loyalty_ability_left() + 9 * r_width() + loyalty_cost_offset_left() + loyalty_cost_offset_width()) }
+loyalty_colon_top := { round_near(loyalty_ability_center(input) - loyalty_colon_r_height()/2 + loyalty_colon_r_correction(input) + loyalty_cost_move(input) + loyalty_cost_offset_top() - loyalty_cost_offset_height()) }
+loyalty_colon_width := { loyalty_colon_r_width() }
+loyalty_colon_height := { loyalty_colon_r_height() }
+loyalty_colon_r_width := { 5 * r_width() }
+loyalty_colon_r_height := { 21 * r_height() }
+loyalty_colon_r_correction := { -3 * r_height() }
+loyalty_colon_font_size := { 13 * (loyalty_colon_r_height() + 2*loyalty_cost_offset_height())/21 }
+
+loyalty_stripe_separator_top := { (loyalty_ability_bottom(input) + loyalty_ability_top(input+1) - loyalty_stripe_separator_height())/2 + loyalty_separator_move(input) }
+loyalty_stripe_separator_height := { 8.06 * r_height() }
+
+loyalty_cost_move :=
+{
+ styling_field := if instance <= 1 then (styling.move_loyalty_costs or else "") else (styling["move_loyalty_costs_" + instance] or else "")
+ text := pull_comma_array(styling_field, cell:input-1, end:0, default:0)
+ if text == "-" then 0 else clamp(text, minimum: -300, maximum: 300)
+}
+loyalty_separator_move :=
+{
+ styling_field := if instance <= 1 then (styling.move_separators or else "") else (styling["move_separators_" + instance] or else "")
+ text := pull_comma_array(styling_field, cell:input-1, end:0, default:0)
+ if text == "-" then 0 else clamp(text, minimum: -300, maximum: 300)
+}
+
+loyalty_level_is_active :=
+{
+ number := to_int(replace(input, match: "lv", replace: "")) or else 999
+ if number > 24 then false else (
+ instance := if number < 9 then 1 else if number < 17 then 2 else 3
+ loyalty_abilities_count() >= (number mod 8))
+}
+loyalty_abilities_count :=
+{
+ styling_field := if instance <= 1 then (styling.number_of_textboxes or else "0") else (styling["number_of_textboxes_" + instance] or else "0")
+ to_int(styling_field)
+}
+
+loyalty_ability_left :=
+{
+ style_field := text_style_field(loyalty_text_field())
+ if style_field.left or else 0 > 0
+ then style_field.left
+ else stylesheet.card_width * 1.2
+}
+loyalty_ability_top :=
+{
+ style_field := text_style_field(loyalty_text_field())
+ if style_field.layout.blocks[input-1].bottom or else 0 > 0
+ then style_field.top + style_field.layout.blocks[input-1].top
+ else stylesheet.card_height * 1.2
+}
+loyalty_ability_center :=
+{
+ style_field := text_style_field(loyalty_text_field())
+ if style_field.layout.blocks[input-1].bottom or else 0 > 0
+ then style_field.top + style_field.layout.blocks[input-1].middle
+ else stylesheet.card_height * 1.2
+}
+loyalty_ability_bottom :=
+{
+ style_field := text_style_field(loyalty_text_field())
+ if style_field.layout.blocks[input-1].bottom or else 0 > 0
+ then style_field.top + style_field.layout.blocks[input-1].bottom
+ else stylesheet.card_height * 1.2
+}
+
+loyalty_stripe_separator_mask :=
+{
+ mask := loyalty_textbox_mask()
+ if mask == "/magic-modules.mse-include/loyalty/default_textbox_stamp_mask.png"
+ or mask == "/magic-modules.mse-include/loyalty/default_textbox_mask.png" then
+ (
+ crop_safe(
+ mask,
+ offset_x: 0,
+ offset_y: to_744_height(loyalty_stripe_separator_top(input) - a_top()),
+ width: 744,
+ height: to_744_height(loyalty_stripe_separator_height()),
+ max_x: 744,
+ max_y: 1039
+ )
+ )
+ else
+ (
+ crop_safe(
+ mask,
+ offset_x: 0,
+ offset_y: loyalty_stripe_separator_top(input) - a_top(),
+ width: a_width(),
+ height: loyalty_stripe_separator_height(),
+ max_x: a_width(),
+ max_y: a_height()
+ )
+ )
+}
+loyalty_stripe_mask :=
+{
+ mask := loyalty_textbox_mask()
+ if mask == "/magic-modules.mse-include/loyalty/default_textbox_stamp_mask.png"
+ or mask == "/magic-modules.mse-include/loyalty/default_textbox_mask.png" then
+ (
+ top := if input > 1 then loyalty_stripe_separator_top(2*input-2) + loyalty_stripe_separator_height() else a_top()
+ height := (if loyalty_abilities_count() >= 2*input then loyalty_stripe_separator_top(2*input-1) else a_bottom()) - top
+ top := to_744_height(top - a_top())
+ height := to_744_height(height)
+ crop_safe(
+ mask,
+ offset_x: 0,
+ offset_y: top,
+ width: 744,
+ height: height,
+ max_x: 744,
+ max_y: 1039
+ )
+ )
+ else
+ (
+ top := if input > 1 then loyalty_stripe_separator_top(2*input-2) + loyalty_stripe_separator_height() else a_top()
+ height := (if loyalty_abilities_count() >= 2*input then loyalty_stripe_separator_top(2*input-1) else a_bottom()) - top
+ top := top - a_top()
+ crop_safe(
+ mask,
+ offset_x: 0,
+ offset_y: top,
+ width: a_width(),
+ height: height,
+ max_x: a_width(),
+ max_y: a_height()
+ )
+ )
+}
+loyalty_stripe_separator_image :=
+{
+ color := if instance <= 1 then (styling.stripes_color or else rgb(255,255,255)) else (styling["stripes_color_" + instance] or else rgb(255,255,255))
+ alpha := if instance <= 1 then (styling.stripes_opacity_percentage or else "40") else (styling["stripes_opacity_percentage_" + instance] or else "40")
+ set_alpha(
+ recolor_image(
+ "/magic-modules.mse-include/loyalty/stripe_" + (if (input mod 2) == 0 then "top" else "bottom") + ".png",
+ color: color
+ ),
+ alpha: get_alpha_percentage(
+ alpha,
+ default: 40
+ )
+ )
+}
+loyalty_stripe_image :=
+{
+ color := if instance <= 1 then (styling.stripes_color or else rgb(255,255,255)) else (styling["stripes_color_" + instance] or else rgb(255,255,255))
+ alpha := if instance <= 1 then (styling.stripes_opacity_percentage or else "40") else (styling["stripes_opacity_percentage_" + instance] or else "40")
+ set_alpha(
+ recolor_image(
+ "/magic-modules.mse-include/loyalty/color.png",
+ color: color
+ ),
+ alpha: get_alpha_percentage(
+ alpha,
+ default: 40
+ )
+ )
+}
+loyalty_textbox_background_image :=
+{
+ color := if instance <= 1 then (styling.textbox_color or else rgb(255,255,255)) else (styling["textbox_color_" + instance] or else rgb(255,255,255))
+ alpha := if instance <= 1 then (styling.textbox_opacity_percentage or else "70") else (styling["textbox_opacity_percentage_" + instance] or else "70")
+ set_alpha(
+ recolor_image(
+ "/magic-modules.mse-include/loyalty/color.png",
+ color: color
+ ),
+ alpha: get_alpha_percentage(
+ alpha,
+ default: 70
+ )
+ )
+}
+
+############################################################## Separators
+separator_enable_level := { false }
+separator_default := { if set.use_flavor_bar then "flavor bar" else "none" }
+
+flavor_bar_left := { face_coordinates_map(input).left }
+flavor_bar_top :=
+{
+ style := if input <= 1 then card_style.text else card_style["text_" + input]
+ rule := if input <= 1 then card.rule_text else card["rule_text_" + input]
+ flavor := if input <= 1 then card.flavor_text else card["flavor_text_" + input]
+ disabled := if input <= 1 then flavor_bar_disabled_1() else if input == 2 then flavor_bar_disabled_2() else flavor_bar_disabled_3()
+ uninitialized := (style.layout.blocks[1].bottom or else 0) <= 0
+ if disabled
+ or rule == ""
+ or remove_tags(flavor) == ""
+ then stylesheet.card_height + 1
+ else if uninitialized
+ then (if input <= 1 then old_bar_equation() else if input == 2 then old_bar_equation2() else old_bar_equation3()) - flavor_bar_height(input)/2
+ else style.top + (style.layout.blocks[0].bottom + style.layout.blocks[1].top)/2 - flavor_bar_height(input)/2
+}
+flavor_bar_width := { face_coordinates_map(input).width }
+flavor_bar_height := { 24 * face_coordinates_map(input).height/1039 }
+
+flavor_bar_disabled_1 := { false }
+flavor_bar_offset_top_1 := { 0 }
+flavor_bar_offset_left_1 := { 0 }
+flavor_bar_offset_width_1 := { 0 }
+flavor_bar_offset_height_1 := { 0 }
+flavor_bar_disabled_2 := { false }
+flavor_bar_offset_top_2 := { 0 }
+flavor_bar_offset_left_2 := { 0 }
+flavor_bar_offset_width_2 := { 0 }
+flavor_bar_offset_height_2 := { 0 }
+flavor_bar_disabled_3 := { false }
+flavor_bar_offset_top_3 := { 0 }
+flavor_bar_offset_left_3 := { 0 }
+flavor_bar_offset_width_3 := { 0 }
+flavor_bar_offset_height_3 := { 0 }
+
+############################################################## Watermark offsets
+watermark_face_1 := { 1 }
+watermark_text_field_1 := { 1 }
+watermark_stamp_field_1 := { 1 }
+
+watermark_disabled_1 := { false }
+watermark_offset_top_1 := { 0 }
+watermark_offset_left_1 := { 0 }
+watermark_offset_width_1 := { 0 }
+watermark_offset_height_1 := { 0 }
+watermark_offset_stamp_1 := { 0 }
+
+watermark_face_2 := { 2 }
+watermark_text_field_2 := { 2 }
+watermark_stamp_field_2 := { 2 }
+
+watermark_disabled_2 := { false }
+watermark_offset_top_2 := { 0 }
+watermark_offset_left_2 := { 0 }
+watermark_offset_width_2 := { 0 }
+watermark_offset_height_2 := { 0 }
+watermark_offset_stamp_2 := { 0 }
+
+watermark_face_3 := { 3 }
+watermark_text_field_3 := { 3 }
+watermark_stamp_field_3 := { 3 }
+
+watermark_disabled_3 := { false }
+watermark_offset_top_3 := { 0 }
+watermark_offset_left_3 := { 0 }
+watermark_offset_width_3 := { 0 }
+watermark_offset_height_3 := { 0 }
+watermark_offset_stamp_3 := { 0 }
+
+############################################################## Color indicator offsets
+indicator_left :=
+{
+ map := face_coordinates_map(face)
+ if map.width > map.height then
+ map.left + 65 * map.width/523 + offset
+ else map.left + 31 * map.width/375 + offset
+}
+indicator_top :=
+{
+ map := face_coordinates_map(face)
+ if map.width > map.height then
+ map.top + 223 * map.height/375 + offset
+ else map.top + 301 * map.height/523 + offset
+}
+indicator_size :=
+{
+ map := face_coordinates_map(face)
+ 17 * min(map.width, map.height)/375 + offset
+}
+indicator_disabled_1 := { false }
+indicator_offset_top_1 := { 0 }
+indicator_offset_left_1 := { 0 }
+indicator_offset_size_1 := { 0 }
+indicator_left_1 := { indicator_left(face:typeline_face_1(), offset: indicator_offset_left_1()) }
+indicator_top_1 := { indicator_top(face:typeline_face_1(), offset: indicator_offset_top_1()) }
+indicator_size_1 := { indicator_size(face:typeline_face_1(), offset: indicator_offset_size_1()) }
+
+indicator_disabled_2 := { false }
+indicator_offset_top_2 := { 0 }
+indicator_offset_left_2 := { 0 }
+indicator_offset_size_2 := { 0 }
+indicator_left_2 := { indicator_left(face:typeline_face_2(), offset: indicator_offset_left_2()) }
+indicator_top_2 := { indicator_top(face:typeline_face_2(), offset: indicator_offset_top_2()) }
+indicator_size_2 := { indicator_size(face:typeline_face_2(), offset: indicator_offset_size_2()) }
+
+indicator_disabled_3 := { false }
+indicator_offset_top_3 := { 0 }
+indicator_offset_left_3 := { 0 }
+indicator_offset_size_3 := { 0 }
+indicator_left_3 := { indicator_left(face:typeline_face_3(), offset: indicator_offset_left_3()) }
+indicator_top_3 := { indicator_top(face:typeline_face_3(), offset: indicator_offset_top_3()) }
+indicator_size_3 := { indicator_size(face:typeline_face_3(), offset: indicator_offset_size_3()) }
+
+############################################################## Rarity offsets
+rarity_right :=
+{
+ map := face_coordinates_map(face)
+ user_offsets := styling.rarity_offsets or else ""
+ if map.width > map.height then
+ map.left + (483 * map.width/523) + offset + rarity_user_offset_left(user_offsets)
+ else map.left + (344 * map.width/375) + offset + rarity_user_offset_left(user_offsets)
+}
+rarity_top :=
+{
+ map := face_coordinates_map(face)
+ user_offsets := styling.rarity_offsets or else ""
+ if map.width > map.height then
+ map.top + 219 * map.height/375 + offset + rarity_user_offset_top(user_offsets)
+ else map.top + 297 * map.height/523 + offset + rarity_user_offset_top(user_offsets)
+}
+rarity_width :=
+{
+ map := face_coordinates_map(face)
+ user_offsets := styling.rarity_offsets or else ""
+ if map.width > map.height then
+ 44 * map.width/523 + offset + rarity_user_offset_top(user_offsets) + rarity_user_offset_width(user_offsets)
+ else 44 * map.width/375 + offset + rarity_user_offset_top(user_offsets) + rarity_user_offset_width(user_offsets)
+}
+rarity_height :=
+{
+ map := face_coordinates_map(face)
+ user_offsets := styling.rarity_offsets or else ""
+ if map.width > map.height then
+ 22 * map.height/375 + offset + rarity_user_offset_top(user_offsets) + rarity_user_offset_height(user_offsets)
+ else 22 * map.height/523 + offset + rarity_user_offset_top(user_offsets) + rarity_user_offset_height(user_offsets)
+}
+rarity_size :=
+{
+ map := face_coordinates_map(face)
+ user_offsets := styling.rarity_offsets or else ""
+ 24 * min(map.width, map.height)/375 + offset + 2*rarity_user_offset_size(user_offsets)
+}
+
+rarity_real_width := {
+ map := face_coordinates_map(face)
+ multi := if map.width > map.height then
+ map.height/375
+ else map.height/523
+ cw := if face > 1 then card_style["rarity_" + face].content_width else card_style.rarity.content_width
+ cwf := if cw > multi*44 then (if set.print_fix != "" then set.print_fix else multi*22) else if cw < multi*22 then multi*22 else cw
+ if not set.shorten_types_for_rarity or cw == 0 then 0 else cwf
+}
+
+rarity_disabled_1 := { false }
+rarity_offset_top_1 := { 0 }
+rarity_offset_left_1 := { 0 }
+rarity_offset_size_1 := { 0 }
+rarity_right_1 := { rarity_right(face:typeline_face_1(), offset:rarity_offset_left_1()) }
+rarity_top_1 := { rarity_top(face:typeline_face_1(), offset:rarity_offset_top_1()) }
+rarity_height_1 := { rarity_height(face:typeline_face_1(), offset:rarity_offset_size_1()) }
+rarity_width_1 := { rarity_width(face:typeline_face_1(), offset:rarity_offset_size_1()) }
+rarity_left_1 := { rarity_right_1() - rarity_real_width(face:typeline_face_1()) }
+
+rarity_disabled_2 := { false }
+rarity_offset_top_2 := { 0 }
+rarity_offset_left_2 := { 0 }
+rarity_offset_size_2 := { 0 }
+rarity_right_2 := { rarity_right(face:typeline_face_2(), offset:rarity_offset_left_2()) }
+rarity_top_2 := { rarity_top(face:typeline_face_2(), offset:rarity_offset_top_2()) }
+rarity_height_2 := { rarity_height(face:typeline_face_2(), offset:rarity_offset_size_2()) }
+rarity_width_2 := { rarity_width(face:typeline_face_2(), offset:rarity_offset_size_2()) }
+rarity_left_2 := { rarity_right_2() - rarity_real_width(face:typeline_face_2()) }
+
+rarity_disabled_3 := { false }
+rarity_offset_top_3 := { 0 }
+rarity_offset_left_3 := { 0 }
+rarity_offset_size_3 := { 0 }
+rarity_right_3 := { rarity_right(face:typeline_face_3(), offset:rarity_offset_left_3()) }
+rarity_top_3 := { rarity_top(face:typeline_face_3(), offset:rarity_offset_top_3()) }
+rarity_height_3 := { rarity_height(face:typeline_face_3(), offset:rarity_offset_size_3()) }
+rarity_width_3 := { rarity_width(face:typeline_face_3(), offset:rarity_offset_size_3()) }
+rarity_left_3 := { rarity_right_3() - rarity_real_width(face:typeline_face_3()) }
+
+rarity_user_offset_left := { split := split_comma(input); if length(split) > 0 and split.0 != "" and split.0 != "-" then clamp(split.0, maximum:500, minimum:-500) else 0 }
+rarity_user_offset_top := { split := split_comma(input); if length(split) > 1 and split.1 != "" and split.1 != "-" then clamp(split.1, maximum:500, minimum:-500) else 0 }
+rarity_user_offset_width := { split := split_comma(input); if length(split) > 2 and split.2 != "" and split.2 != "-" then clamp(split.2, maximum:500, minimum:-500) else 0 }
+rarity_user_offset_height := { split := split_comma(input); if length(split) > 3 and split.2 != "" and split.3 != "-" then clamp(split.3, maximum:500, minimum:-500) else 0 }
+
+############################################################## Type offsets
+
+type_indicator_shift :=
+{
+ if (not identity) or disabled
+ then 0
+ else offset
+}
+
+type_disabled_1 := { false }
+type_offset_top_1 := { 0 }
+type_offset_left_1 := { 0 }
+type_offset_right_1 := { 0 }
+type_offset_height_1 := { 0 }
+type_indicator_shift_1 := { type_indicator_shift(identity:has_identity(), offset:indicator_size_1()*1.15 + typeline_offset_height_1(), disabled:indicator_disabled_1()) }
+
+type_disabled_2 := { false }
+type_offset_top_2 := { 0 }
+type_offset_left_2 := { 0 }
+type_offset_right_2 := { 0 }
+type_offset_height_2 := { 0 }
+type_indicator_shift_2 := { type_indicator_shift(identity:has_identity_2(), offset:indicator_size_2()*1.15 + typeline_offset_height_2(), disabled:indicator_disabled_2()) }
+
+type_disabled_3 := { false }
+type_offset_top_3 := { 0 }
+type_offset_left_3 := { 0 }
+type_offset_right_3 := { 0 }
+type_offset_height_3 := { 0 }
+type_indicator_shift_3 := { type_indicator_shift(identity:has_identity_3(), offset:indicator_size_3()*1.15 + typeline_offset_height_3(), disabled:indicator_disabled_3()) }
+
+typeline_face_1 := { 1 }
+
+typeline_disabled_1 := { false }
+typeline_offset_top_1 := { 0 }
+typeline_offset_left_1 := { 0 }
+typeline_offset_width_1 := { 0 }
+typeline_offset_height_1 := { 0 }
+
+typeline_face_2 := { 2 }
+
+typeline_disabled_2 := { false }
+typeline_offset_top_2 := { 0 }
+typeline_offset_left_2 := { 0 }
+typeline_offset_width_2 := { 0 }
+typeline_offset_height_2 := { 0 }
+
+typeline_face_3 := { 3 }
+
+typeline_disabled_3 := { false }
+typeline_offset_top_3 := { 0 }
+typeline_offset_left_3 := { 0 }
+typeline_offset_width_3 := { 0 }
+typeline_offset_height_3 := { 0 }
+
+############################################################## Casting cost offsets
+casting_cost_right :=
+{
+ map := face_coordinates_map(face)
+ if map.width > map.height then
+ map.left + 485 * map.width/523 + offset
+ else map.left + 346 * map.width/375 + offset
+}
+casting_cost_top :=
+{
+ map := face_coordinates_map(face)
+ if map.width > map.height then
+ map.top + 19 * map.height/375 + offset
+ else map.top + 27 * map.height/523 + offset
+}
+casting_cost_width :=
+{
+ map := face_coordinates_map(face)
+ scale := min(map.width, map.height)/375
+ minimum := 30 * scale
+ buffer := 5 * scale
+ max(minimum, card_style.casting_cost.content_width) + buffer + offset
+}
+casting_cost_height :=
+{
+ map := face_coordinates_map(face)
+ 26 * min(map.width, map.height)/375 + offset
+}
+casting_cost_disabled_1 := { false }
+casting_cost_offset_top_1 := { 0 }
+casting_cost_offset_left_1 := { 0 }
+casting_cost_offset_width_1 := { 0 }
+casting_cost_offset_height_1 := { 0 }
+casting_cost_right_1 := { casting_cost_right(face:nameline_face_1(), offset:casting_cost_offset_left_1()) }
+casting_cost_top_1 := { casting_cost_top(face:nameline_face_1(), offset:casting_cost_offset_top_1()) }
+casting_cost_width_1 := { casting_cost_width(face:nameline_face_1(), offset:casting_cost_offset_width_1()) }
+casting_cost_height_1 := { casting_cost_height(face:nameline_face_1(), offset:casting_cost_offset_height_1()) }
+
+casting_cost_disabled_2 := { false }
+casting_cost_offset_top_2 := { 0 }
+casting_cost_offset_left_2 := { 0 }
+casting_cost_offset_width_2 := { 0 }
+casting_cost_offset_height_2 := { 0 }
+casting_cost_right_2 := { casting_cost_right(face:nameline_face_2(), offset:casting_cost_offset_left_2()) }
+casting_cost_top_2 := { casting_cost_top(face:nameline_face_2(), offset:casting_cost_offset_top_2()) }
+casting_cost_width_2 := { casting_cost_width(face:nameline_face_2(), offset:casting_cost_offset_width_2()) }
+casting_cost_height_2 := { casting_cost_height(face:nameline_face_2(), offset:casting_cost_offset_height_2()) }
+
+casting_cost_disabled_3 := { false }
+casting_cost_offset_top_3 := { 0 }
+casting_cost_offset_left_3 := { 0 }
+casting_cost_offset_width_3 := { 0 }
+casting_cost_offset_height_3 := { 0 }
+casting_cost_right_3 := { casting_cost_right(face:nameline_face_3(), offset:casting_cost_offset_left_3()) }
+casting_cost_top_3 := { casting_cost_top(face:nameline_face_3(), offset:casting_cost_offset_top_3()) }
+casting_cost_width_3 := { casting_cost_width(face:nameline_face_3(), offset:casting_cost_offset_width_3()) }
+casting_cost_height_3 := { casting_cost_height(face:nameline_face_3(), offset:casting_cost_offset_height_3()) }
+
+############################################################## Name offsets
+name_left :=
+{
+ map := face_coordinates_map(face)
+ if map.width > map.height then
+ map.left + 67 * map.width/523 + offset
+ else map.left + 32 * map.width/375 + offset
+}
+name_top :=
+{
+ map := face_coordinates_map(face)
+ if map.width > map.height then
+ map.top + 19 * map.height/375 + offset
+ else map.top + 27 * map.height/523 + offset
+}
+name_right :=
+{
+ map := face_coordinates_map(face)
+ casting_cost_width_1 := if card_style.casting_cost.content_width == 0 then 0 else card_style.casting_cost.content_width + 3 * min(map.width, map.height)/375
+ if map.width > map.height then
+ map.left + 482 * map.width/523 - casting_cost_width_1 + offset
+ else map.left + 341 * map.width/375 - casting_cost_width_1 + offset
+}
+name_height :=
+{
+ map := face_coordinates_map(face)
+ 26 * min(map.width, map.height)/375 + offset
+}
+
+name_transform_symbol_shift :=
+{
+ if transform_symbol_field(face) == "none" or disabled
+ then 0
+ else (
+ map := face_coordinates_map(face)
+ 29 * (min(map.width, map.height)/375) + offset
+ )
+}
+
+name_card_symbol_shift := {
+ if card_symbol_field(face) == "none" or disabled
+ then 0
+ else (
+ map := face_coordinates_map(face)
+ 18 * (min(map.width, map.height)/375) + offset
+ )
+}
+
+name_max_width_1 := { card_style.name.width }
+name_disabled_1 := { false }
+name_offset_top_1 := { 0 }
+name_offset_left_1 := { 0 }
+name_offset_right_1 := { 0 }
+name_offset_height_1 := { 0 }
+name_transform_symbol_offset_left_1 := { 0 }
+name_left_1 := { name_left(face:nameline_face_1(), offset:name_offset_left_1()) }
+name_top_1 := { name_top(face:nameline_face_1(), offset:name_offset_top_1()) }
+name_right_1 := { name_right(face:nameline_face_1(), offset:name_offset_right_1()) }
+name_height_1 := { name_height(face:nameline_face_1(), offset:name_offset_height_1()) }
+name_card_symbol_shift_1 := { name_card_symbol_shift(face:nameline_face_1(), offset:name_transform_symbol_offset_left_1(), disabled:card_symbol_disabled_1()) }
+name_transform_symbol_shift_1 := { name_transform_symbol_shift(face:nameline_face_1(), offset:name_transform_symbol_offset_left_1() + nameline_offset_height_1(), disabled:transform_symbol_disabled_1()) }
+
+name_disabled_2 := { false }
+name_offset_top_2 := { 0 }
+name_offset_left_2 := { 0 }
+name_offset_right_2 := { 0 }
+name_offset_height_2 := { 0 }
+name_transform_symbol_offset_left_2 := { 0 }
+name_max_width_2 := { card_style.name_2.width }
+name_left_2 := { name_left(face:nameline_face_2(), offset:name_offset_left_2()) }
+name_top_2 := { name_top(face:nameline_face_2(), offset:name_offset_top_2()) }
+name_right_2 := { name_right(face:nameline_face_2(), offset:name_offset_right_2()) }
+name_height_2 := { name_height(face:nameline_face_2(), offset:name_offset_height_2()) }
+name_card_symbol_shift_2 := { name_card_symbol_shift(face:nameline_face_2(), offset:name_transform_symbol_offset_left_2(), disabled:card_symbol_disabled_2()) }
+name_transform_symbol_shift_2 := { name_transform_symbol_shift(face:nameline_face_2(), offset:name_transform_symbol_offset_left_2() + nameline_offset_height_2(), disabled:transform_symbol_disabled_2()) }
+
+name_disabled_3 := { false }
+name_offset_top_3 := { 0 }
+name_offset_left_3 := { 0 }
+name_offset_right_3 := { 0 }
+name_offset_height_3 := { 0 }
+name_transform_symbol_offset_left_3 := { 0 }
+name_max_width_3 := { card_style.name_3.width }
+name_left_3 := { name_left(face:nameline_face_3(), offset:name_offset_left_3()) }
+name_top_3 := { name_top(face:nameline_face_3(), offset:name_offset_top_3()) }
+name_right_3 := { name_right(face:nameline_face_3(), offset:name_offset_right_3()) }
+name_height_3 := { name_height(face:nameline_face_3(), offset:name_offset_height_3()) }
+name_card_symbol_shift_3 := { name_card_symbol_shift(face:nameline_face_3(), offset:name_transform_symbol_offset_left_3(), disabled:card_symbol_disabled_3()) }
+name_transform_symbol_shift_3 := { name_transform_symbol_shift(face:nameline_face_3(), offset:name_transform_symbol_offset_left_3() + nameline_offset_height_3(), disabled:transform_symbol_disabled_3()) }
+
+############################################################## Nameline offsets
+nameline_face_1 := { 1 }
+nameline_disabled_1 := { false }
+nameline_offset_top_1 := { 0 }
+nameline_offset_left_1 := { 0 }
+nameline_offset_width_1 := { 0 }
+nameline_offset_height_1 := { 0 }
+
+nameline_face_2 := { 2 }
+nameline_disabled_2 := { false }
+nameline_offset_top_2 := { 0 }
+nameline_offset_left_2 := { 0 }
+nameline_offset_width_2 := { 0 }
+nameline_offset_height_2 := { 0 }
+
+nameline_face_3 := { 3 }
+nameline_disabled_3 := { false }
+nameline_offset_top_3 := { 0 }
+nameline_offset_left_3 := { 0 }
+nameline_offset_width_3 := { 0 }
+nameline_offset_height_3 := { 0 }
+
+############################################################## Stamps
+### The stamp to use if the user hasn't overwritten it for this card
+card_stamp_default := {
+ shape := styling.default_stamp or else set.default_stamp
+ stamp_behavior := styling.stamp_behavior or else set.stamp_behavior
+ if stamp_behavior == "default" then stamp_behavior := set.stamp_behavior
+ rare_face := is_rare(field:field)
+
+ stamp_behavior_checks[stamp_behavior](rare_face:rare_face, shape:shape)
+}@(field:1)
+### Map for easier checks than if/else or case
+stamp_behavior_checks := [
+ "All unstamped": {"none"},
+ "All holostamped": {shape},
+ "All flatstamped": {"flatstamped " + shape},
+ "Standard, rares holostamped": {
+ if rare_face then shape else "none"
+ },
+ "UB, rares holostamped, others flatstamped": {
+ if rare_face then shape else "flatstamped " + shape
+ }
+]
+### The image to use for custom stamp
+custom_stamp := {
+ flat := not is_foil_stamped(field:field)
+ if set.custom_stamp_name != "" and has_png(set.custom_stamp_name)
+ then "/magic-mainframe-extras.mse-include/" + un_png(set.custom_stamp_name) + (if flat then " flat" else "") + ".png"
+ else "/magic-modules.mse-include/stamps/375x523 " + (if flat then "flatstamped " else "") + "heart.png"
+}@(field:1)
+
+### The shape of the background stamp for templates
+### This can be overwritten to give a template a special stamp for the heart stamp, for example
+stamp_shape := {
+ case card_stamp_field(field) of
+ "universes beyond": "triangle",
+ "flatstamped universes beyond": "triangle",
+ "none": "none",
+ "custom": set.custom_stamp_shape,
+ "flatstamped custom": set.custom_stamp_shape,
+ else: "round";
+}@(field:1)
+
+### The card_stamp_X field for this face
+card_stamp_field := { if input <= 1 then card.card_stamp else card["card_stamp_" + input] }
+### Does this face have any stamp?
+is_stamped := { card_stamp_field(field) != "none" }@(field: 1)
+### Does this face have a foil stamp?
+is_foil_stamped := { not contains(card_stamp_field(field), match:"flatstamped") }@(field:1)
+
+### Determine the image for the stamp
+card_stamp_image :=
+{
+ if not is_stamped(field: field)
+ then ""
+ else (
+ map := face_coordinates_map(face)
+ if map.width == 0 or map.height == 0
+ then ""
+ else (
+ dimensions := map.width + "x" + map.height
+ dimensions := card_stamp_possible_dimensions[dimensions] or else (if map.width > map.height then "1039x744" else "744x1039")
+ shape := card_stamp_field(field)
+ if shape == "custom" or shape == "flatstamped custom"
+ then custom_stamp(field: field)
+ else "/magic-modules.mse-include/stamps/" + dimensions + " " + shape + ".png"
+ )
+ )
+}
+card_stamp_possible_dimensions :=
+[
+ "375x523": "375x523"
+ "523x375": "523x375"
+ "744x1039": "744x1039"
+ "1039x744": "1039x744"
+]
+### Offsets for the stamps module
+card_stamp_disabled_1 := { false }
+card_stamp_offset_top_1 := { 0 }
+card_stamp_offset_left_1 := { 0 }
+card_stamp_offset_width_1 := { 0 }
+card_stamp_offset_height_1 := { 0 }
+card_stamp_disabled_2 := { false }
+card_stamp_offset_top_2 := { 0 }
+card_stamp_offset_left_2 := { 0 }
+card_stamp_offset_width_2 := { 0 }
+card_stamp_offset_height_2 := { 0 }
+card_stamp_disabled_3 := { false }
+card_stamp_offset_top_3 := { 0 }
+card_stamp_offset_left_3 := { 0 }
+card_stamp_offset_width_3 := { 0 }
+card_stamp_offset_height_3 := { 0 }
+
+############################################################## Pinlines
+#### Face 1
+pinline_disabled_1 := { false }
+pinline_offset_left_1 := { 0 }
+pinline_offset_top_1 := { 0 }
+pinline_offset_width_1 := { 0 }
+pinline_offset_height_1 := { 0 }
+#### Face 2
+pinline_disabled_2 := { false }
+pinline_offset_left_2 := { 0 }
+pinline_offset_top_2 := { 0 }
+pinline_offset_width_2 := { 0 }
+pinline_offset_height_2 := { 0 }
+#### Face 3
+pinline_disabled_3 := { false }
+pinline_offset_left_3 := { 0 }
+pinline_offset_top_3 := { 0 }
+pinline_offset_width_3 := { 0 }
+pinline_offset_height_3 := { 0 }
+#### The primary image script. May apply a mask with set_mask to cut around art and other inner components
+pinline_image_1 := {""}
+pinline_image_2 := {""}
+pinline_image_3 := {""}
+#### The mask used within the image script
+pinline_inner_mask_1 := {""}
+pinline_inner_mask_2 := {""}
+pinline_inner_mask_3 := {""}
+#### The mask used on the actual field, allowing invisible parts to be clicked through
+pinline_mask_1 := {""}
+pinline_mask_2 := {""}
+pinline_mask_3 := {""}
+
+############################################################## Custom corner symbols
+custom_symbol_1 := { if set.custom_symbol_1 != "" then "/magic-modules.mse-include/symbols/" + set.custom_symbol_1 else "/magic-modules.mse-include/symbols/aetherprint.png" }
+custom_symbol_2 := { if set.custom_symbol_2 != "" then "/magic-modules.mse-include/symbols/" + set.custom_symbol_2 else "/magic-modules.mse-include/symbols/aetherprint.png" }
+custom_symbol_3 := { if set.custom_symbol_3 != "" then "/magic-modules.mse-include/symbols/" + set.custom_symbol_3 else "/magic-modules.mse-include/symbols/aetherprint.png" }
+custom_symbol_4 := { if set.custom_symbol_4 != "" then "/magic-modules.mse-include/symbols/" + set.custom_symbol_4 else "/magic-modules.mse-include/symbols/aetherprint.png" }
+############################################################## Custom fonts
swap_font := {styling.apply_custom_fonts or else false}
split_font := split_text@(match:";")
pop_font_name := {split_font(input).0 or else ""}
@@ -2218,7 +3834,7 @@ pop_font_size := {split_font(input).1 or else ""}
pop_font_color := {split_font(input).2 or else ""}
pop_font_vertical := {split_font(input).3 or else ""}
pop_font_italic := {split_font(input).4 or else ""}
-## General swap functions
+#### General swap functions
swap_font_name := {
if swap_font() then (
test := pop_font_name(src)
@@ -2267,7 +3883,7 @@ swap_font_italic := {
font_name
}
-## defaults, can be changed in style
+#### defaults, can be changed in style
swap_fonts_name_default := [
name: {"Beleren Bold"},
size: {16},
@@ -2282,6 +3898,13 @@ swap_fonts_name2_default := [
vertical: {0},
italic: {""}
]
+swap_fonts_name3_default := [
+ name: {"Beleren Bold"},
+ size: {16},
+ color: {"black"},
+ vertical: {0},
+ italic: {""}
+]
swap_fonts_type_default := [
name: {"Beleren Bold"},
size: {13},
@@ -2296,6 +3919,13 @@ swap_fonts_type2_default := [
vertical: {0},
italic: {""}
]
+swap_fonts_type3_default := [
+ name: {"Beleren Bold"},
+ size: {13},
+ color: {"white"},
+ vertical: {0},
+ italic: {""}
+]
swap_fonts_body_default := [
name: {"MPlantin"},
size: {13},
@@ -2310,14 +3940,16 @@ swap_fonts_pt_default := [
vertical: {0},
italic: {""}
]
-swap_fonts_name_src := {styling.custom_name_font or else ""}
-swap_fonts_name_src := {styling.custom_name_font or else ""}
-swap_fonts_name2_src := {styling.custom_name_2_font or else ""}
-swap_fonts_type_src := {styling.custom_type_font or else ""}
-swap_fonts_type2_src := {styling.custom_type_2_font or else ""}
-swap_fonts_body_src := {styling.custom_body_font or else ""}
-swap_fonts_pt_src := {styling.custom_pt_font or else ""}
-## specific swap functions
+swap_fonts_name_src := { styling.custom_name_font or else "" }
+swap_fonts_name_src := { styling.custom_name_font or else "" }
+swap_fonts_name2_src := { styling.custom_name_2_font or else "" }
+swap_fonts_name3_src := { styling.custom_name_3_font or else "" }
+swap_fonts_type_src := { styling.custom_type_font or else "" }
+swap_fonts_type2_src := { styling.custom_type_2_font or else "" }
+swap_fonts_type3_src := { styling.custom_type_3_font or else "" }
+swap_fonts_body_src := { styling.custom_body_font or else "" }
+swap_fonts_pt_src := { styling.custom_pt_font or else "" }
+#### specific swap functions
name_font := {
swap_font_name(
src: swap_fonts_name_src(),
@@ -2380,6 +4012,37 @@ name2_font_italic := {
)
}
+name3_font := {
+ swap_font_name(
+ src: swap_fonts_name3_src(),
+ font_name: swap_fonts_name3_default.name()
+ )
+}
+name3_font_size := {
+ swap_font_size(
+ src: swap_fonts_name3_src(),
+ font_size: swap_fonts_name3_default.size()
+ ) - shrink_name2()
+}
+name3_font_color := {
+ swap_font_color(
+ src: swap_fonts_name3_src(),
+ font_color: swap_fonts_name3_default.color()
+ )
+}
+name3_font_vertical := {
+ swap_font_vertical(
+ src: swap_fonts_name3_src(),
+ vertical: swap_fonts_name3_default.vertical()
+ )
+}
+name3_font_italic := {
+ swap_font_italic(
+ src: swap_fonts_name3_src(),
+ font_name: swap_fonts_name3_default.italic()
+ )
+}
+
type_font := {
swap_font_name(
src: swap_fonts_type_src(),
@@ -2442,6 +4105,37 @@ type2_font_italic := {
)
}
+type3_font := {
+ swap_font_name(
+ src: swap_fonts_type3_src(),
+ font_name: swap_fonts_type3_default.name()
+ )
+}
+type3_font_size := {
+ swap_font_size(
+ src: swap_fonts_type3_src(),
+ font_size: swap_fonts_type3_default.size()
+ ) - shrink_type2()
+}
+type3_font_color := {
+ swap_font_color(
+ src: swap_fonts_type3_src(),
+ font_color: swap_fonts_type3_default.color()
+ )
+}
+type3_font_vertical := {
+ swap_font_vertical(
+ src: swap_fonts_type3_src(),
+ vertical: swap_fonts_type3_default.vertical()
+ )
+}
+type3_font_italic := {
+ swap_font_italic(
+ src: swap_fonts_type3_src(),
+ font_name: swap_fonts_type3_default.italic()
+ )
+}
+
body_font := {
swap_font_name(
src: swap_fonts_body_src(),
@@ -2473,6 +4167,68 @@ body_font_italic := {
)
}
+body2_font := {
+ swap_font_name(
+ src: swap_fonts_body_src(),
+ font_name: swap_fonts_body_default.name()
+ )
+}
+body2_font_size := {
+ swap_font_size(
+ src: swap_fonts_body_src(),
+ font_size: swap_fonts_body_default.size()
+ )
+}
+body2_font_color := {
+ swap_font_color(
+ src: swap_fonts_body_src(),
+ font_color: swap_fonts_body_default.color()
+ )
+}
+body2_font_vertical := {
+ swap_font_vertical(
+ src: swap_fonts_body_src(),
+ vertical: swap_fonts_body_default.vertical()
+ )
+}
+body2_font_italic := {
+ swap_font_italic(
+ src: swap_fonts_body_src(),
+ font_name: swap_fonts_body_default.italic()
+ )
+}
+
+body3_font := {
+ swap_font_name(
+ src: swap_fonts_body_src(),
+ font_name: swap_fonts_body_default.name()
+ )
+}
+body3_font_size := {
+ swap_font_size(
+ src: swap_fonts_body_src(),
+ font_size: swap_fonts_body_default.size()
+ )
+}
+body3_font_color := {
+ swap_font_color(
+ src: swap_fonts_body_src(),
+ font_color: swap_fonts_body_default.color()
+ )
+}
+body3_font_vertical := {
+ swap_font_vertical(
+ src: swap_fonts_body_src(),
+ vertical: swap_fonts_body_default.vertical()
+ )
+}
+body3_font_italic := {
+ swap_font_italic(
+ src: swap_fonts_body_src(),
+ font_name: swap_fonts_body_default.italic()
+ )
+}
+
pt_font := {
swap_font_name(
src: swap_fonts_pt_src(),
@@ -2503,13 +4259,78 @@ pt_font_italic := {
font_name: swap_fonts_pt_default.italic()
)
}
-shrink_name := {0}
-shrink_type := {0}
+
+pt2_font := {
+ swap_font_name(
+ src: swap_fonts_pt_src(),
+ font_name: swap_fonts_pt_default.name()
+ )
+}
+pt2_font_size := {
+ swap_font_size(
+ src: swap_fonts_pt_src(),
+ font_size: swap_fonts_pt_default.size()
+ )
+}
+pt2_font_color := {
+ swap_font_color(
+ src: swap_fonts_pt_src(),
+ font_color: swap_fonts_pt_default.color()
+ )
+}
+pt2_font_vertical := {
+ swap_font_vertical(
+ src: swap_fonts_pt_src(),
+ vertical: swap_fonts_pt_default.vertical()
+ )
+}
+pt2_font_italic := {
+ swap_font_italic(
+ src: swap_fonts_pt_src(),
+ font_name: swap_fonts_pt_default.italic()
+ )
+}
+
+pt3_font := {
+ swap_font_name(
+ src: swap_fonts_pt_src(),
+ font_name: swap_fonts_pt_default.name()
+ )
+}
+pt3_font_size := {
+ swap_font_size(
+ src: swap_fonts_pt_src(),
+ font_size: swap_fonts_pt_default.size()
+ )
+}
+pt3_font_color := {
+ swap_font_color(
+ src: swap_fonts_pt_src(),
+ font_color: swap_fonts_pt_default.color()
+ )
+}
+pt3_font_vertical := {
+ swap_font_vertical(
+ src: swap_fonts_pt_src(),
+ vertical: swap_fonts_pt_default.vertical()
+ )
+}
+pt3_font_italic := {
+ swap_font_italic(
+ src: swap_fonts_pt_src(),
+ font_name: swap_fonts_pt_default.italic()
+ )
+}
+
+shrink_name := {0}
+shrink_type := {0}
shrink_name2 := {0}
shrink_type2 := {0}
-#### Customize rarity symbol
-alt_rarity := {styling.alt_rarity_color or else ""}
-use_alt_rarity := {alt_rarity() != ""}
+############################################################## Custom rarity symbol
+use_main_rarity := { contains(set.mainframe_rarity_name, match: ".png") }
+mainframe_rarity := {"/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + input + ".png"}
+alt_rarity := { styling.alt_rarity_color or else "" }
+use_alt_rarity := { alt_rarity() != "" }
alt_rarity_color := {
string := "83,67,53:177,150,131:0,0,0:0,0,0:0.07:"
src := alt_rarity()
@@ -2548,66 +4369,285 @@ alt_symbol := {
center_x:0.5, center_y:0.5, end_x:1, end_y:1
)
}
-
-
-
-# rough type_of script
-# fine for nil, boolean, color, date, string, number, and array
-# map and image are trickier
-# if you don't care about the difference use as normal, will return "map or image"
-# if you do, include key:"" parameter that's a key of the potential map
-# ex if you want to know if some_object is an image or [x:1]
-# use type_of(some_object, key:"x")
-type_of := {
- test := to_string(input) or else nil
- type := "idk"
- if test == "" and input == nil then type := "nil"
- else if test != nil and (input == true or input == false) then type := "boolean"
- else if (test != nil and test + 0 == input + 0) then (
- if to_color(test) or else nil == input
- then type := "color"
- else if to_date(test) or else nil == input
- then type := "date"
- else type := "string"
- )
- else if test != nil then type := "number"
- else if input[0] or else nil != nil then type := "array"
- else if key == "" then type := "map or image"
- else if input[key] or else nil == nil then type := "image"
- else type := "map"
- type
-}@(key:"")
-
-is_string := {
- test := to_string(input) or else nil
- if test == "" and input == nil then false
- else if test == nil then false
- else test == input
+############################################################## Card column sorting
+type_sort_script :=
+{
+ if set.alphabetical_type_column then super_type + " " + sub_type else
+ #### first sort by 5 broad categories
+ (
+ if is_tokenish_statistics(card.shape) then "4"
+ else if lang_setting("is_nonstandard")(super_type) then "3"
+ else if lang_setting("is_land")(super_type) then "0"
+ else if lang_setting("is_spell")(super_type) then "2"
+ else "1" #### nonland permanents
+ ) +
+
+ #### then check if creature
+ (if lang_setting("is_creature")(super_type) then "0" else "1") +
+
+ #### then sort by type, no need to re-check for land or creature
+ (if lang_setting("is_sorcery")(super_type) then "1" else "0") +
+ (if lang_setting("is_instant")(super_type) then "1" else "0") +
+ (if lang_setting("is_planeswalker")(super_type) then "1" else "0") +
+ (if lang_setting("is_battle")(super_type) then "1" else "0") +
+ (if lang_setting("is_enchantment")(super_type) then "1" else "0") +
+ (if lang_setting("is_artifact")(super_type) then "1" else "0") +
+
+ (if contains(card.shape, match: "rulestip") then "1" else "0") +
+ (if contains(card.shape, match: "checklist") then "1" else "0") +
+ (if lang_setting("is_token")(super_type)
+ or contains(card.shape, match: "token") then "1" else "0") +
+ (if lang_setting("is_emblem")(super_type)
+ or contains(card.shape, match: "emblem") then "1" else "0") +
+ (if contains(card.shape, match: "counter") then "1" else "0") +
+ (if contains(card.shape, match: "designation") then "1" else "0") +
+ (if lang_setting("is_conspiracy")(super_type) then "1" else "0") +
+ (if lang_setting("is_dungeon")(super_type) then "1" else "0") +
+ (if lang_setting("is_phenomenon")(super_type) then "1" else "0") +
+ (if lang_setting("is_plane")(super_type) then "1" else "0") +
+ (if lang_setting("is_scheme")(super_type) then "1" else "0") +
+ (if lang_setting("is_vanguard")(super_type) then "1" else "0") +
+ (if lang_setting("is_hero")(super_type) then "1" else "0") +
+
+ #### then sort by super type
+ (if lang_setting("is_ongoing")(super_type) then "1" else "0") +
+ (if lang_setting("is_basic")(super_type) then "1" else "0") +
+ (if lang_setting("is_legendary")(super_type) then "1" else "0") +
+ (if lang_setting("is_world")(super_type) then "1" else "0") +
+ (if lang_setting("is_snow")(super_type) then "1" else "0") +
+ (if lang_setting("is_kindred")(super_type) then "1" else "0") +
+
+ #### then sort by sub type
+ to_text(sub_type)
}
-# mapping := ["up":"test/up.png" "down":"test/down.png" "left":"test/left.png" "right":"test/right.png"]
-multi_choice_image := {
- ## input = option string
- ##img_map = map of image links
- coll := split_text(input, match:", ?")
- imgs := for each x in coll do if img_map[x] or else false != false then [img_map[x]]
- len := length(imgs)
- if len == 0 then
- ""
- else if len == 1 then
- imgs[0]
- else if len == 2 then
- combine_blend(image1:imgs[0] image2:imgs[1], combine:combine)
- else mass_combine(imgs:imgs, combine:combine)
-
-}@(combine:"and")
-mass_combine := {
- base := combine_blend(image1:imgs[0] image2:imgs[1], combine:combine)
- for x from 2 to length(imgs)-1 do (
- base := combine_blend(image1:base image2:imgs[x] combine:combine)
- "" # this is junk output so it doesn't try to add the images as strings
- )
- base
-}@(combine:"and")
+color_sort_script :=
+{
+ if chosen(input, choice:"land") then "0" + prefixed_color_identity_statistic() + input
+ else "1" + prefixed_color_statistic() + input
+}
-zwsp := ""
+rarity_sort_script :=
+{
+ if input == "basic land" then "0"
+ else if input == "common" then "1"
+ else if input == "uncommon" then "2"
+ else if input == "rare" then "3"
+ else if input == "mythic rare" then "4"
+ else if input == "masterpiece" then "5"
+ else "6"
+}
+############################################################## Custom index
+search_pull := filter_text@(match:"search(name|mana|type|rules|flavor|text|notes)")
+search_snip := replace@(match:"search(name|mana|type|rules|flavor|text|notes)_", replace:"")
+
+custom_index := {
+ sorting_index := split_text(set.custom_index, match:",")
+ for each field in sorting_index do
+ apply_index(to_lower(field))
+ or else (
+ search_index(to_lower(search_pull(field)), query:search_snip(field))
+ )
+ or else ""
+}
+apply_index := {
+ [
+ name: {
+ fill_len(to_string(position (
+ of: card
+ in: set
+ order_by: { sort_name(card.name) + sort_name(export_name())}
+ filter: set_filter()
+ )), lead:"0", fill_to:3)
+ },
+ alias: {
+ fill_len(to_string(position (
+ of: card
+ in: set
+ order_by: { sort_name(card.alias) + sort_name(export_name())}
+ filter: set_filter()
+ )), lead:"0", fill_to:3)
+ }
+ name2: {
+ fill_len(to_string(position (
+ of: card
+ in: set
+ order_by: { sort_name(card.name_2) + sort_name(export_name())}
+ filter: set_filter()
+ )), lead:"0", fill_to:3)
+ },
+ alias2: {
+ fill_len(to_string(position (
+ of: card
+ in: set
+ order_by: { sort_name(card.alias_2) + sort_name(export_name())}
+ filter: set_filter()
+ )), lead:"0", fill_to:3)
+ }
+ color: {fill_len(color_of_card(), lead:"A")},
+ "color category": {
+ indexes := [[lang_setting("colorless")], [lang_setting("white")], [lang_setting("blue")], [lang_setting("black")], [lang_setting("red")], [lang_setting("green")], [lang_setting("purple")], [lang_setting("pink")], [lang_setting("yellow")], [lang_setting("orange")], [lang_setting("brown")], [lang_setting("multicolor")], [lang_setting("hybrid")]]
+ fill_len(position(of:[card.color_category], in:indexes, lead:"0", fill_to:2))
+ },
+ "exact color": {
+ fill_len(card.exact_color, lead:"X", fill_to:5)
+ },
+ "color identity": {
+ fill_len(card.color_identity, lead:"X", fill_to:5)
+ },
+ "color count": {card.color_count},
+ "time created": {card.time_created},
+ "created": {card.time_created},
+ "time modified": {card.time_modified},
+ "modified": {card.time_modified},
+ "template": {fill_len(substring(card.template, begin:0, end:9), follow:" ", fill_to:10)},
+ artist: {fill_len(substring(card.illustrator, end:7), follow:" ", fill_to:7)},
+ artist2: {fill_len(substring(card.illustrator_2, end:7), follow:" ", fill_to:7)},
+ design: {fill_len(substring(card.card_code_text, end:7), follow:" ", fill_to:7)},
+ mv: {fill_len(to_string(cmc(card.casting_cost)), lead:"0")},
+ "mana value": {fill_len(to_string(cmc(card.casting_cost)), lead:"0")},
+ cmc: {fill_len(to_string(cmc(card.casting_cost)), lead:"0")},
+ "converted mana cost": {fill_len(to_string(cmc(card.casting_cost)), lead:"0")},
+ rarity: {index_of_rarity()},
+ power: {fill_len(card.power, lead:"0")},
+ toughness: {fill_len(card.toughness, lead:"0")},
+ pt: {fill_len(card.power, lead:"0") + fill_len(card.toughness, lead:"0")},
+ loyalty: {fill_len(card.loyalty, lead:"0")},
+ type: {fill_len(filter_text(match:"[A-Z][A-Z]?[A-Z]?", filter_text(match:"[A-Z]", card.super_type)), follow:"0", fill_to:3)},
+ hasrules: {if remove_tags(card.rule_text) != "" then "A" else "B"},
+ hasflavor: {if remove_tags(card.flavor_text) != "" then "A" else "B"},
+ hasrules2: {if remove_tags(card.rule_text_2) != "" then "A" else "B"},
+ hasflavor2: {if remove_tags(card.flavor_text_2) != "" then "A" else "B"},
+ ][input]()
+}
+search_index := {
+ [
+ searchname: { if contains(card.name, match:query) or contains(card.name_2, match:query) then "A" else "B"},
+ searchmana: { if contains(card.casting_cost, match:query) or contains(card.casting_cost_2, match:query) then "A" else "B"},
+ searchtype: { if contains(card.type, match:query) or contains(card.type_2, match:query) then "A" else "B"},
+ searchrules: { if contains(card.rule_text, match:query) or contains(card.rule_text_2, match:query) then "A" else "B"},
+ searchflavor: { if contains(card.flavor_text, match:query) or contains(card.flavor_text_2, match:query) then "A" else "B"},
+ searchartist: { if contains(card.illustrator, match:query) or contains(card.illustrator_2, match:query) then "A" else "B"},
+ searchdesign: { if contains(card.card_code_text, match:query) then "A" else "B"},
+ searchtext: { if contains(card.text, match:query) or contains(card.text_2, match:query) then "A" else "B"},
+ searchnotes: { if contains(card.notes, match:query) then "A" else "B"},
+ unsearchname: { if contains(card.name, match:query) or contains(card.name_2, match:query) then "B" else "A"},
+ unsearchmana: { if contains(card.casting_cost, match:query) or contains(card.casting_cost_2, match:query) then "B" else "A"},
+ unsearchtype: { if contains(card.type, match:query) or contains(card.type_2, match:query) then "B" else "A"},
+ unsearchrules: { if contains(card.rule_text, match:query) or contains(card.rule_text_2, match:query) then "B" else "A"},
+ unsearchflavor: { if contains(card.flavor_text, match:query) or contains(card.flavor_text_2, match:query) then "B" else "A"},
+ unsearchartist: { if contains(card.illustrator, match:query) or contains(card.illustrator_2, match:query) then "B" else "A"},
+ unsearchdesign: { if contains(card.card_code_text, match:query) then "B" else "A"},
+ unsearchtext: { if contains(card.text, match:query) or contains(card.text_2, match:query) then "B" else "A"},
+ unsearchnotes: { if contains(card.notes, match:query) then "B" else "A"}
+ ][input]()
+}
+index_of_rarity := {
+ if card.rarity == "basic land" then "A"
+ else if card.rarity == "common" then "C"
+ else if card.rarity == "uncommon" then "D"
+ else if card.rarity == "rare" then "E"
+ else if card.rarity == "mythic rare" then "F"
+ else if card.rarity == "special" then "G"
+ else "J"
+}
+############################################################## Skeleton generator
+skeleton_commons := 19
+skeleton_uncommons := 11
+skeleton_rares := 7
+skeleton_mythics := 2
+skeleton_land_commons := 1
+skeleton_land_uncommons := 5
+skeleton_land_rares := 0
+skeleton_gold_commons := 0
+skeleton_gold_uncommons := 1
+skeleton_gold_rares := 1
+skeleton_shard_commons := 0
+skeleton_shard_uncommons := 0
+skeleton_shard_rares := 0
+skeleton_wedge_commons := 0
+skeleton_wedge_uncommons := 0
+skeleton_wedge_rares := 0
+skeleton_artifact_commons := 5
+skeleton_artifact_uncommons := 5
+skeleton_artifact_rares := 0
+skeleton_blank_commons := 0
+skeleton_blank_uncommons := 5
+skeleton_blank_rares := 8
+skeleton_blank_mythics := 5
+#### generates a set of CCXX Skeleton cards for each color
+#### by insertnamehere and cajun
+skeleton_runner := {
+ cards := []
+ for x from 0 to length(letter_list)-1 do
+ (
+ for y from 1 to count do
+ if mana_list == "nope" then
+ (cards := cards + [new_card([name:prefix+letter_list[x]+fill_len(y, lead:"0"), rarity:rarity, card_color:color_list[x], super_type:super_type])];)
+ else
+ (cards := cards + [new_card([name:prefix+letter_list[x]+fill_len(y, lead:"0"), rarity:rarity, super_type:super_type, casting_cost:mana_list[x]])];)
+ )
+ cards
+}@(count:1, rarity:"common", type:"", prefix:"C", super_type:"", color_list:["white", "blue", "black", "red", "green"], letter_list:["W", "U", "B", "R", "G"], mana_list:"nope")
+#### outside to make singleton scripts easier
+blank_list_5 := ["","","","",""]
+blank_list_10 := ["","","","","","","","","",""]
+mana_list_ally := ["WU","UB","BR","RG","GW"]
+mana_list_enemy := ["WB","UR","BG","RW","GU"]
+mana_list_shard := ["WUB","UBR","BRG","RGW","GWU"]
+mana_list_wedge := ["WBG","URW","BGU","RWB","GUR"]
+skeleton_script := {
+ cards := [];
+ cards := cards + skeleton_runner(count:skeleton_commons);
+ cards := cards + skeleton_runner(count:skeleton_uncommons, prefix:"U", rarity:"uncommon");
+ cards := cards + skeleton_runner(count:skeleton_rares, prefix:"R", rarity:"rare");
+ cards := cards + skeleton_runner(count:skeleton_mythics, prefix:"M", rarity:"mythic rare");
+ cards := cards + skeleton_runner(count:skeleton_gold_commons, prefix:"CM", rarity:"common", letter_list:blank_list_10, mana_list:mana_list_ally+mana_list_enemy);
+ cards := cards + skeleton_runner(count:skeleton_gold_uncommons, prefix:"UM", rarity:"uncommon", letter_list:blank_list_10, mana_list:mana_list_ally+mana_list_enemy);
+ cards := cards + skeleton_runner(count:skeleton_gold_rares, prefix:"RM", rarity:"rare", letter_list:blank_list_10, mana_list:mana_list_ally+mana_list_enemy);
+ cards := cards + skeleton_runner(count:skeleton_shard_commons, prefix:"CM", rarity:"common", letter_list:blank_list_5, mana_list:mana_list_shard);
+ cards := cards + skeleton_runner(count:skeleton_shard_uncommons, prefix:"UM", rarity:"uncommon", letter_list:blank_list_5, mana_list:mana_list_shard);
+ cards := cards + skeleton_runner(count:skeleton_shard_rares, prefix:"RM", rarity:"rare", letter_list:blank_list_5, mana_list:mana_list_shard);
+ cards := cards + skeleton_runner(count:skeleton_wedge_commons, prefix:"CM", rarity:"common", letter_list:blank_list_5, mana_list:mana_list_wedge);
+ cards := cards + skeleton_runner(count:skeleton_wedge_uncommons, prefix:"UM", rarity:"uncommon", letter_list:blank_list_5, mana_list:mana_list_wedge);
+ cards := cards + skeleton_runner(count:skeleton_wedge_rares, prefix:"RM", rarity:"rare", letter_list:blank_list_5, mana_list:mana_list_wedge);
+ for i from 1 to skeleton_artifact_commons do cards := cards + [new_card([name:"CA"+fill_len(i, lead:"0"), rarity:"common", super_type:"Artifact"])];
+ for i from 1 to skeleton_artifact_uncommons do cards := cards + [new_card([name:"UA"+fill_len(i, lead:"0"), rarity:"uncommon", super_type:"Artifact"])];
+ for i from 1 to skeleton_artifact_rares do cards := cards + [new_card([name:"RA"+fill_len(i, lead:"0"), rarity:"rare", super_type:"Artifact"])];
+ for i from 1 to skeleton_land_commons do cards := cards + [new_card([name:"CL"+fill_len(i, lead:"0"), super_type:"Land", rarity:"common"])];
+ for i from 1 to skeleton_land_uncommons do cards := cards + [new_card([name:"UL"+fill_len(i, lead:"0"), super_type:"Land", rarity:"uncommon"])];
+ for i from 1 to skeleton_land_rares do cards := cards + [new_card([name:"RL"+fill_len(i, lead:"0"), super_type:"Land", rarity:"rare"])];
+ for i from 1 to skeleton_blank_commons do cards := cards + [new_card([name:"CX"+fill_len(i, lead:"0"), rarity:"common"])];
+ for i from 1 to skeleton_blank_uncommons do cards := cards + [new_card([name:"UX"+fill_len(i, lead:"0"), rarity:"uncommon"])];
+ for i from 1 to skeleton_blank_rares do cards := cards + [new_card([name:"RX"+fill_len(i, lead:"0"), rarity:"rare"])];
+ for i from 1 to skeleton_blank_mythics do cards := cards + [new_card([name:"MX"+fill_len(i, lead:"0"), rarity:"mythic rare"])];
+ cards
+}
+skeleton_info := {
+ trace("Set Skeleton Generator Help:"
+ +"\nSet variables here to modify the Skeleton Add Cards script, for example 'skeleton_commons := 10'"
+ +"\nCurrent variables:\n"
+ +"skeleton_commons: " + skeleton_commons + " (of each color)\n"
+ +"skeleton_uncommons: " + skeleton_uncommons + " (of each color)\n"
+ +"skeleton_rares: " + skeleton_rares + " (of each color)\n"
+ +"skeleton_mythics: " + skeleton_mythics + " (of each color)\n"
+ +"skeleton_gold_commons: " + skeleton_gold_commons + " (of each color pair)\n"
+ +"skeleton_gold_uncommons: " + skeleton_gold_uncommons + " (of each color pair)\n"
+ +"skeleton_gold_rares: " + skeleton_gold_rares + " (of each color pair)\n"
+ +"skeleton_artifact_commons: " + skeleton_artifact_commons + "\n"
+ +"skeleton_artifact_uncommons: " + skeleton_artifact_uncommons + "\n"
+ +"skeleton_artifact_rares: " + skeleton_artifact_rares + "\n"
+ +"skeleton_land_commons: " + skeleton_land_commons + "\n"
+ +"skeleton_land_uncommons: " + skeleton_land_uncommons + "\n"
+ +"skeleton_land_rares: " + skeleton_land_rares + "\n"
+ +"skeleton_blank_commons: " + skeleton_blank_commons + "\n"
+ +"skeleton_blank_uncommons: " + skeleton_blank_uncommons + "\n"
+ +"skeleton_blank_rares: " + skeleton_blank_rares + "\n"
+ +"skeleton_blank_mythics: " + skeleton_blank_mythics + "\n"
+ +"skeleton_shard_commons: " + skeleton_shard_commons + "\n"
+ +"skeleton_shard_uncommons: " + skeleton_shard_uncommons + "\n"
+ +"skeleton_shard_rares: " + skeleton_shard_rares + "\n"
+ +"skeleton_wedge_commons: " + skeleton_wedge_commons + "\n"
+ +"skeleton_wedge_uncommons: " + skeleton_wedge_uncommons + "\n"
+ +"skeleton_wedge_rares: " + skeleton_wedge_rares)
+}
diff --git a/data/magic.mse-game/set_fields b/data/magic.mse-game/set_fields
index 70a0e8ce0..ba7d1e301 100644
--- a/data/magic.mse-game/set_fields
+++ b/data/magic.mse-game/set_fields
@@ -18,6 +18,10 @@ set field:
set field:
type: text
name: copyright
+set field:
+ type: text
+ name: secondary copyright
+ description: Typically for Universes Beyond sets.
set field:
type: text
name: set code
@@ -29,179 +33,23 @@ set field:
set field:
type: text
name: masterpiece set code
- description: The letter code for masterpieces, typically MSP
+ description: The letter code for Masterpiece rarity cards.
set field:
type: symbol
name: symbol
- description: The symbol for this set, double click to edit
+ 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: boolean
- name: shorten types for rarity
- description: Makes the typeline not run into the rarity symbol. Disable if you don't use rarity symbols.
+ description: The symbol for this sets Masterpiece rarity cards, click to edit.
+
set field:
type: info
- name: Watermark links
-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: text
- name: custom watermark 6
- description: Set this image in magic-watermarks.mse-include as Custom Watermark 6
-set field:
- type: text
- name: custom watermark 7
- description: Set this image in magic-watermarks.mse-include as Custom Watermark 7
-set field:
- type: text
- name: custom watermark 8
- description: Set this image in magic-watermarks.mse-include as Custom Watermark 8
-set field:
- type: text
- name: custom watermark 9
- description: Set this image in magic-watermarks.mse-include as Custom Watermark 9
-set field:
- type: text
- name: custom watermark 10
- description: Set this image in magic-watermarks.mse-include as Custom Watermark 10
-set field:
- type: boolean
- name: blend with colors
- initial: no
- description: Only works for 500x500 px watermarks. For best results, use a solid black watermark. Blend watermarks with card colors instead of a solid color.
-set field:
- type: info
- name: Defaults and Automation
-set field:
- type: text
- name: inserts
- description: List of strings, separated by ;, that replaces INS1, INS2, ... INS9. May need to reload MSE for changes to take effect.
-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(200,200,200)
- 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, lower case
- # Convert from older mse versions
- script:
- if value == "yes" then "old, core, expert, custom, lower case"
- 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: choice
- name: card number style
- description: What style of automatic card numbers should be used?
- choice: 0001
- choice: 001/099
- choice: 001
- choice: 1/99
- choice: 1
- choice: 0001/0099
-set field:
- type: text
- name: last main partition
- description: Card Number Partitions after this one aren't counted as the main part of the set, ex "301" or "301/300" rather than "301/900". Default is M.
-set field:
- type: choice
- name: over partition display
- description: How to display card numbers larger than the main set?
- choice: 100
- choice: 100/099
-set field:
- type: text
- name: card number offsets
- description: Add this number to the card numbers. Formatted as "start,total"
-set field:
- type: boolean
- name: automatic copyright
- description: Should the copyright line above be shown on the cards?
-set field:
- type: boolean
- name: rarity codes
- description: Show rarity codes on M15 frames?
-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: choice
- name: mana cost sorting
- description: Should mana costs be sorted by Tarkir standard (WBG), Apocalypse standard (BGW), or left unsorted?
- choice: tarkir wedge sorting
- choice: apocalypse wedge sorting
- choice: unsorted
- #typo that stood for way too long
- script:
- if value == "apocalype wedge sorting" then "apocalypse wedge sorting" else value
+ name: Language
set field:
type: choice
name: card language
- description: Language for the cards
+ description: Language for the cards.
choice: English
choice: English (British)
choice: English (Canadian)
@@ -231,13 +79,83 @@ set field:
initial: no
set field:
type: boolean
- name: remove card codes
- description: Remove card codes from all card names.
- initial: no
+ name: curly quotes
+ description: converts quotes to curly quotes.
+set field:
+ type: boolean
+ name: alphabetical type column
+ description: Sorts the type column alphabetically including supertypes. Disable to sort by card type.
+
+
+set field:
+ type: info
+ name: Defaults and Automation
+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, lower case
+ # Convert from older mse versions
+ script:
+ if value == "yes" then "old, core, expert, custom, lower case"
+ 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: choice
+ name: mana cost sorting
+ description: Should mana costs be sorted by Tarkir standard (WBG), Apocalypse standard (BGW), or left unsorted?
+ choice: tarkir wedge sorting
+ choice: apocalypse wedge sorting
+ choice: unsorted
+ #typo that stood for way too long
+ script:
+ if value == "apocalype wedge sorting" then "apocalypse wedge sorting" else value
+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(200,200,200)
+ choice:
+ name: gold
+ color: rgb(200,180,0)
+set field:
+ type: choice
+ name: corner shape
+ description: The default shape of corners for cards. Not universally supported yet.
+ include file: /magic-modules.mse-include/corners/choices
+set field:
+ type: color
+ name: copyright text color
+ description: The default color for set code, artist credit and copyright. Not universally supported yet.
+ choice:
+ name: white
+ color: rgb(255,255,255)
+ choice:
+ name: black
+ color: rgb(0,0,0)
+set field:
+ type: text
+ name: inserts
+ description: List of strings, separated by ;, that replaces INS1, INS2, ... INS9. May need to reload MSE for changes to take effect.
set field:
type: boolean
name: alias as cardname
- description: Replaces CARDNAME with a card's alias instead of card name.
+ description: Replaces CARDNAME with a card's alias instead of its main name.
set field:
type: choice
name: use gradient multicolor
@@ -246,11 +164,194 @@ set field:
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
+set field:
+ type: choice
+ name: use blended watermarks
+ choice: blend with colors
+ choice: shadow
+ choice: glow
+ choice: no
+ description: Blend the default watermarks with the card color, with a dropshadow, or unblended.
set field:
type: boolean
- name: wedge mana costs
- description: Depreciated. Should three color mana costs sort in wedge order like in Khans block?
+ name: shorten types for rarity
+ description: Makes the typeline not run into the rarity symbol. Disable if you don't use rarity symbols.
+set field:
+ type: boolean
+ name: inverted common symbol
+ description: Should the common rarity symbol be inverted, like in Coldsnap?
initial: no
+set field:
+ type: boolean
+ name: rarity codes
+ description: Show rarity codes on M15 frames?
+set field:
+ type: boolean
+ name: automatic copyright
+ description: Should the copyright line above be shown on the cards?
+set field:
+ type: boolean
+ name: adaptive language height
+ description: Should the language code be pushed down when the card has multiple credit lines?
+ initial: no
+set field:
+ type: boolean
+ name: remove card codes
+ description: Remove card codes from all card names. THIS CANNOT BE UNDONE, if you save it is permanent.
+ initial: no
+
+
+set field:
+ type: info
+ name: Card Numbering
+set field:
+ type: boolean
+ name: automatic card numbers
+ description: Should card numbers be shown on the cards?
+set field:
+ type: choice
+ name: card number style
+ description: What style of automatic card numbers should be used? Not universally supported yet.
+ choice: 0001
+ choice: 001/099
+ choice: 001
+ choice: 1/99
+ choice: 1
+ choice: 0001/0099
+set field:
+ type: text
+ name: last main partition
+ description: Card Number Partitions after this one aren't counted as the main part of the set, ex "301" or "301/300" rather than "301/900". Default is M.
+set field:
+ type: choice
+ name: over partition display
+ description: How to display card numbers larger than the main set?
+ choice: 100
+ choice: 100/099
+set field:
+ type: text
+ name: card number offsets
+ description: Add this number to the card numbers. Formatted as "start,total"
+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: info
+ name: Card stamps. Not universally supported yet.
+set field:
+ type: choice
+ name: default stamp
+ include file: /magic-modules.mse-include/stamps/set_choices
+ description: The default stamp setup to use on supported frames.
+set field:
+ type: choice
+ name: stamp behavior
+ include file: /magic-modules.mse-include/stamps/behavior_choices
+ initial: Standard, rares holostamped
+ description: How should stamps behave across rarities?
+set field:
+ type: text
+ name: custom stamp name
+ description: Set this image in magic-mainframe-extras.mse-include as Custom Stamp, such as "examples/stamp/heart.png". For flat stamps, name the image like "heart flat.png"
+set field:
+ type: choice
+ name: custom stamp shape
+ description: What backing shape should be used for the Custom Stamp?
+ choice: round
+ choice: triangle
+
+
+set field:
+ type: info
+ name: Watermark links
+set field:
+ type: text
+ name: custom watermark 1
+ description: Set this image in magic-watermarks.mse-include as Custom Watermark 1. If smaller than 500x500, add ";length;height;" to the end, ex ".png;400;400;"
+set field:
+ type: text
+ name: custom watermark 2
+ description: Set this image in magic-watermarks.mse-include as Custom Watermark 2. If smaller than 500x500, add ";length;height;" to the end, ex ".png;400;400;"
+set field:
+ type: text
+ name: custom watermark 3
+ description: Set this image in magic-watermarks.mse-include as Custom Watermark 3. If smaller than 500x500, add ";length;height;" to the end, ex ".png;400;400;"
+set field:
+ type: text
+ name: custom watermark 4
+ description: Set this image in magic-watermarks.mse-include as Custom Watermark 4. If smaller than 500x500, add ";length;height;" to the end, ex ".png;400;400;"
+set field:
+ type: text
+ name: custom watermark 5
+ description: Set this image in magic-watermarks.mse-include as Custom Watermark 5. If smaller than 500x500, add ";length;height;" to the end, ex ".png;400;400;"
+set field:
+ type: text
+ name: custom watermark 6
+ description: Set this image in magic-watermarks.mse-include as Custom Watermark 6. If smaller than 500x500, add ";length;height;" to the end, ex ".png;400;400;"
+set field:
+ type: text
+ name: custom watermark 7
+ description: Set this image in magic-watermarks.mse-include as Custom Watermark 7. If smaller than 500x500, add ";length;height;" to the end, ex ".png;400;400;"
+set field:
+ type: text
+ name: custom watermark 8
+ description: Set this image in magic-watermarks.mse-include as Custom Watermark 8. If smaller than 500x500, add ";length;height;" to the end, ex ".png;400;400;"
+set field:
+ type: text
+ name: custom watermark 9
+ description: Set this image in magic-watermarks.mse-include as Custom Watermark 9. If smaller than 500x500, add ";length;height;" to the end, ex ".png;400;400;"
+set field:
+ type: text
+ name: custom watermark 10
+ description: Set this image in magic-watermarks.mse-include as Custom Watermark 10. If smaller than 500x500, add ";length;height;" to the end, ex ".png;400;400;"
+set field:
+ type: choice
+ name: blend with colors
+ choice: yes
+ choice: no
+ choice: shadow
+ choice: glow
+ initial: no
+ description: For 500x500 px watermarks or smaller. Blend watermarks with card colors instead of a solid color. For best results, use a solid black watermark.
+
+
+set field:
+ type: info
+ name: Symbol links
+set field:
+ type: text
+ name: custom symbol 1
+ description: Set this image in magic-symbols.mse-include as Custom Symbol 1
+set field:
+ type: text
+ name: custom symbol 2
+ description: Set this image in magic-symbols.mse-include as Custom Symbol 2
+set field:
+ type: text
+ name: custom symbol 3
+ description: Set this image in magic-symbols.mse-include as Custom Symbol 3
+set field:
+ type: text
+ name: custom symbol 4
+ description: Set this image in magic-symbols.mse-include as Custom Symbol 4
+
+
set field:
type: info
name: Statistics
@@ -298,6 +399,8 @@ set field:
type: text
name: global_variable_average_opening_hand
script: global_variable_average_opening_hand_statistic()
+
+
set field:
type: info
name: Mainframe Template Options
@@ -309,21 +412,6 @@ set field:
type: boolean
name: use flavor bar
description: Enables the flavor bar on Mainframe templates.
-set field:
- type: choice
- name: default stamp
- choice: standard
- choice: none
- choice: acorn
- choice: universes beyond
- choice: alchemy
- choice: alchemy old
- choice: custom
- description: The default stamp setup to use. Only works on new cards, not supported on all frames.
-set field:
- type: text
- name: custom stamp name
- description: The filename of the custom stamp image in magic-mainframe-extras
set field:
type: boolean
name: auto legends
@@ -439,7 +527,7 @@ default set style:
name: watermark
border radius: 0.10
fill type: solid
- fill color: rgb(255,255,255)
+ fill color: rgb(0,0,0)
border color: rgba(0,0,0,0)
masterpiece symbol:
max aspect ratio: 2.5
@@ -487,6 +575,13 @@ default set style:
fill type: solid
fill color: rgb(255,255,255)
border color: rgba(0,0,0,0)
+ corner shape:
+ render style: both
+ choice images:
+ rounded and antialiased: /magic.mse-game/corners/rounded_antialiased.png
+ rounded: /magic.mse-game/corners/rounded.png
+ diagonal: /magic.mse-game/corners/diagonal.png
+ none: /magic.mse-game/corners/none.png
automatic reminder text:
render style: checklist
direction: vertical
@@ -526,9 +621,20 @@ default set style:
default stamp:
render style: both
choice images:
- standard: /magic.mse-game/stamps/foil.png
- acorn: /magic.mse-game/stamps/acorn.png
- universes beyond: /magic.mse-game/stamps/ub.png
- alchemy: /magic.mse-game/stamps/alchemy.png
- alchemy old: /magic.mse-game/stamps/alchemy_old.png
- custom: {if contains(set.custom_stamp_name, match:".png") then "/magic-mainframe-extras.mse-include/"+set.custom_stamp_name else ""}
+ standard: /magic.mse-game/stamps/oval.png
+ none: /magic.mse-game/stamps/none.png
+ acorn: /magic.mse-game/stamps/acorn.png
+ heart: /magic.mse-game/stamps/heart.png
+ universes beyond: /magic.mse-game/stamps/ub.png
+ alchemy: /magic.mse-game/stamps/alchemy.png
+ alchemy old: /magic.mse-game/stamps/alchemy_old.png
+ custom: /magic.mse-game/stamps/heart.png
+ stamp behavior:
+ render style: both
+ choice images:
+ All holostamped: /magic.mse-game/stamps/oval.png
+ Standard, rares holostamped: /magic.mse-game/stamps/nonfoil.png
+ UB, rares holostamped, others flatstamped: /magic.mse-game/stamps/onlyrare.png
+ All flatstamped: /magic.mse-game/stamps/flat_oval.png
+ All unstamped: /magic.mse-game/stamps/none.png
+
diff --git a/data/magic.mse-game/stamps/alchemy.png b/data/magic.mse-game/stamps/alchemy.png
index 0572c18c3..66396eb8b 100644
Binary files a/data/magic.mse-game/stamps/alchemy.png and b/data/magic.mse-game/stamps/alchemy.png differ
diff --git a/data/magic.mse-game/stamps/alchemy_old.png b/data/magic.mse-game/stamps/alchemy_old.png
index 5f27a01b6..1b3bb8a05 100644
Binary files a/data/magic.mse-game/stamps/alchemy_old.png and b/data/magic.mse-game/stamps/alchemy_old.png differ
diff --git a/data/magic.mse-game/stamps/flat_acorn.png b/data/magic.mse-game/stamps/flat_acorn.png
new file mode 100644
index 000000000..32970ca31
Binary files /dev/null and b/data/magic.mse-game/stamps/flat_acorn.png differ
diff --git a/data/magic.mse-game/stamps/flat_alchemy.png b/data/magic.mse-game/stamps/flat_alchemy.png
new file mode 100644
index 000000000..1e7b5c182
Binary files /dev/null and b/data/magic.mse-game/stamps/flat_alchemy.png differ
diff --git a/data/magic.mse-game/stamps/flat_alchemy_old.png b/data/magic.mse-game/stamps/flat_alchemy_old.png
new file mode 100644
index 000000000..261c5ada8
Binary files /dev/null and b/data/magic.mse-game/stamps/flat_alchemy_old.png differ
diff --git a/data/magic.mse-game/stamps/flat_heart.png b/data/magic.mse-game/stamps/flat_heart.png
new file mode 100644
index 000000000..72695e911
Binary files /dev/null and b/data/magic.mse-game/stamps/flat_heart.png differ
diff --git a/data/magic.mse-game/stamps/flat_oval.png b/data/magic.mse-game/stamps/flat_oval.png
new file mode 100644
index 000000000..a2a1636d1
Binary files /dev/null and b/data/magic.mse-game/stamps/flat_oval.png differ
diff --git a/data/magic.mse-game/stamps/flat_ub.png b/data/magic.mse-game/stamps/flat_ub.png
new file mode 100644
index 000000000..b34457937
Binary files /dev/null and b/data/magic.mse-game/stamps/flat_ub.png differ
diff --git a/data/magic.mse-game/stamps/foil.png b/data/magic.mse-game/stamps/foil.png
deleted file mode 100644
index 6bd390401..000000000
Binary files a/data/magic.mse-game/stamps/foil.png and /dev/null differ
diff --git a/data/magic.mse-game/stamps/heart.png b/data/magic.mse-game/stamps/heart.png
new file mode 100644
index 000000000..ce4863ee8
Binary files /dev/null and b/data/magic.mse-game/stamps/heart.png differ
diff --git a/data/magic.mse-game/stamps/menu_choice_images b/data/magic.mse-game/stamps/menu_choice_images
new file mode 100644
index 000000000..134d43817
--- /dev/null
+++ b/data/magic.mse-game/stamps/menu_choice_images
@@ -0,0 +1,16 @@
+choice images:
+ none: /magic.mse-game/stamps/none.png
+ standard: /magic.mse-game/stamps/oval.png
+ acorn: /magic.mse-game/stamps/acorn.png
+ heart: /magic.mse-game/stamps/heart.png
+ universes beyond: /magic.mse-game/stamps/ub.png
+ alchemy: /magic.mse-game/stamps/alchemy.png
+ alchemy old: /magic.mse-game/stamps/alchemy_old.png
+ custom: { custom_stamp() }
+ flatstamped standard: /magic.mse-game/stamps/flat_oval.png
+ flatstamped acorn: /magic.mse-game/stamps/flat_acorn.png
+ flatstamped heart: /magic.mse-game/stamps/flat_heart.png
+ flatstamped universes beyond: /magic.mse-game/stamps/flat_ub.png
+ flatstamped alchemy: /magic.mse-game/stamps/flat_alchemy.png
+ flatstamped alchemy old: /magic.mse-game/stamps/flat_alchemy_old.png
+ flatstamped custom: { custom_stamp() }
\ No newline at end of file
diff --git a/data/magic.mse-game/stamps/none.png b/data/magic.mse-game/stamps/none.png
new file mode 100644
index 000000000..0f41f887f
Binary files /dev/null and b/data/magic.mse-game/stamps/none.png differ
diff --git a/data/magic.mse-game/stamps/nonfoil.png b/data/magic.mse-game/stamps/nonfoil.png
new file mode 100644
index 000000000..f9f44fa8c
Binary files /dev/null and b/data/magic.mse-game/stamps/nonfoil.png differ
diff --git a/data/magic.mse-game/stamps/onlyrare.png b/data/magic.mse-game/stamps/onlyrare.png
new file mode 100644
index 000000000..41d9e2f7c
Binary files /dev/null and b/data/magic.mse-game/stamps/onlyrare.png differ
diff --git a/data/magic.mse-game/stamps/oval.png b/data/magic.mse-game/stamps/oval.png
new file mode 100644
index 000000000..b4282575d
Binary files /dev/null and b/data/magic.mse-game/stamps/oval.png differ
diff --git a/data/magic.mse-game/statistics_script b/data/magic.mse-game/statistics_script
index 2698d9200..506dfce7e 100644
--- a/data/magic.mse-game/statistics_script
+++ b/data/magic.mse-game/statistics_script
@@ -177,11 +177,11 @@ distil_color_words_statistic :=
{
colors := ""
if lang_setting("is_colorless")() then colors := colors + "C"
- if lang_setting("is_white")() then colors := colors + "W"
- if lang_setting("is_blue")() then colors := colors + "U"
- if lang_setting("is_black")() then colors := colors + "B"
- if lang_setting("is_red")() then colors := colors + "R"
- if lang_setting("is_green")() then colors := colors + "G"
+ if lang_setting("is_white")() then colors := colors + "W"
+ if lang_setting("is_blue")() then colors := colors + "U"
+ if lang_setting("is_black")() then colors := colors + "B"
+ if lang_setting("is_red")() then colors := colors + "R"
+ if lang_setting("is_green")() then colors := colors + "G"
if length(colors) > 1 and colors.0 == "C" then substring(colors, begin: 1) else colors
}
@@ -253,7 +253,7 @@ face_omniverse_color_statistic :=
if chosen(choice: "land") then all_en_space_statistic(lang_setting("land"))
else if chosen(choice: "multicolor") then all_en_space_statistic(lang_setting("multicolor"))
else if count_chosen(choices: "white, blue, black, red, green, pink, purple, yellow, orange, brown") == 2
- and chosen(choice: "artifact") then all_en_space_statistic(lang_setting("hybrid")) ##hybrid artifacts would show as their first color
+ and chosen(choice: "artifact") then all_en_space_statistic(lang_setting("hybrid")) ##hybrid artifacts would show as their first color
else if chosen(choice: "hybrid") then all_en_space_statistic(lang_setting("hybrid"))
else if (chosen(choice: "artifact")
and not ( chosen(choice: "white")
@@ -265,7 +265,7 @@ face_omniverse_color_statistic :=
or chosen(choice: "purple")
or chosen(choice: "yellow")
or chosen(choice: "orange")
- or chosen(choice: "brown"))) then all_en_space_statistic(lang_setting("artifact"))
+ or chosen(choice: "brown"))) then all_en_space_statistic(lang_setting("artifact"))
else if chosen(choice: "white") then all_en_space_statistic(lang_setting("white"))
else if chosen(choice: "blue") then all_en_space_statistic(lang_setting("blue"))
else if chosen(choice: "black") then all_en_space_statistic(lang_setting("black"))
@@ -461,14 +461,14 @@ face_mana_production_list_statistic :=
# the mana symbols we can produce
produced_symbols := wubrgc_break_statistic(lang_setting("mana_symbol_production")(combined_text))
- (if lang_setting("is_plains")(sub) or contains_element(produced_symbols, element:"W") then ",W" else "") +
- (if lang_setting("is_island")(sub) or contains_element(produced_symbols, element:"U") then ",U" else "") +
- (if lang_setting("is_swamp")(sub) or contains_element(produced_symbols, element:"B") then ",B" else "") +
- (if lang_setting("is_mountain")(sub) or contains_element(produced_symbols, element:"R") then ",R" else "") +
- (if lang_setting("is_forest")(sub) or contains_element(produced_symbols, element:"G") then ",G" else "") +
- (if lang_setting("is_wastes")(name) or contains_element(produced_symbols, element:"C") then ",C" else "") +
+ (if lang_setting("is_plains")(sub) or contains_element(produced_symbols, element:"W") then ",W" else "") +
+ (if lang_setting("is_island")(sub) or contains_element(produced_symbols, element:"U") then ",U" else "") +
+ (if lang_setting("is_swamp")(sub) or contains_element(produced_symbols, element:"B") then ",B" else "") +
+ (if lang_setting("is_mountain")(sub) or contains_element(produced_symbols, element:"R") then ",R" else "") +
+ (if lang_setting("is_forest")(sub) or contains_element(produced_symbols, element:"G") then ",G" else "") +
+ (if lang_setting("is_wastes")(name) or contains_element(produced_symbols, element:"C") then ",C" else "") +
(if can_Any then ","+all_en_space_statistic(lang_setting("mana_any")) else "") +
- (if can_Chosen then ","+all_en_space_statistic(lang_setting("mana_chosen")) else "")
+ (if can_Chosen then ","+all_en_space_statistic(lang_setting("mana_chosen")) else "")
}
# Word counting
@@ -673,7 +673,7 @@ format_average_statistic :=
rarity_statistic :=
{
if is_tokenish_statistics(card.shape) or lang_setting("is_token")(card.super_type) then all_en_space_statistic(lang_setting("token"))
- else if lang_setting("is_land")(card.super_type) and lang_setting("is_basic")(card.super_type) then all_en_space_statistic(lang_setting("basic_land"))
+ else if lang_setting("is_land")(card.super_type) and lang_setting("is_basic")(card.super_type) then all_en_space_statistic(lang_setting("basic_land"))
else all_en_space_statistic(lang_setting(replace_space_statistic(card.rarity)))
}
is_tokenish_statistics :=
@@ -822,18 +822,18 @@ detect_custom_creature_subtypes_statistic :=
for a from 0 to 1 do (
subtypes := if a == 1 then face_detect_custom_subtypes_statistic(c.sub_type_2) else face_detect_custom_subtypes_statistic(c.sub_type)
super := if a == 1 then c.super_type_2 else c.super_type
- is_creature := lang_setting("is_creature")(super) or lang_setting("is_kindred")(super)
- is_artifact := lang_setting("is_artifact")(super)
- is_enchantment := lang_setting("is_enchantment")(super)
- is_land := lang_setting("is_land")(super)
- is_just_creature := is_creature and not is_artifact and not is_enchantment and not is_land
+ is_creature := lang_setting("is_creature")(super) or lang_setting("is_kindred")(super)
+ is_artifact := lang_setting("is_artifact")(super)
+ is_enchantment := lang_setting("is_enchantment")(super)
+ is_land := lang_setting("is_land")(super)
+ is_just_creature := is_creature and not is_artifact and not is_enchantment and not is_land
for each s in subtypes do (
# is this a canon type?
- has_creature := if is_creature then contains(creature_subtypes_statistic(), match:s+";") else false
+ has_creature := if is_creature then contains(creature_subtypes_statistic(), match:s+";") else false
if not has_creature then (
- if is_just_creature then creature_hard := creature_hard + [s]
- else if not is_creature then noncreature_hard := noncreature_hard + [s]
- else creature_soft := creature_soft + [s]
+ if is_just_creature then creature_hard := creature_hard + [s]
+ else if not is_creature then noncreature_hard := noncreature_hard + [s]
+ else creature_soft := creature_soft + [s]
)
"" ## dummy return, otherwise it tries to concat scripts and explodes
)
@@ -878,36 +878,36 @@ detect_custom_subtypes_statistic :=
for a from 0 to 1 do (
subtypes := if a == 1 then face_detect_custom_subtypes_statistic(c.sub_type_2) else face_detect_custom_subtypes_statistic(c.sub_type)
super := if a == 1 then c.super_type_2 else c.super_type
- is_creature := lang_setting("is_creature")(super) or lang_setting("is_kindred")(super)
- is_artifact := lang_setting("is_artifact")(super)
- is_enchantment := lang_setting("is_enchantment")(super)
- is_land := lang_setting("is_land")(super)
+ is_creature := lang_setting("is_creature")(super) or lang_setting("is_kindred")(super)
+ is_artifact := lang_setting("is_artifact")(super)
+ is_enchantment := lang_setting("is_enchantment")(super)
+ is_land := lang_setting("is_land")(super)
is_spell := lang_setting("is_spell")(super)
is_walker := lang_setting("is_planeswalker")(super) or lang_setting("is_emblem")(super)
is_battle := lang_setting("is_battle")(super)
- is_just_creature := is_creature and not is_artifact and not is_enchantment and not is_land
- is_just_artifact := is_artifact and not is_creature and not is_enchantment and not is_land
- is_just_enchantment := is_enchantment and not is_creature and not is_artifact and not is_land
- is_just_land := is_land and not is_creature and not is_artifact and not is_enchantment
+ is_just_creature := is_creature and not is_artifact and not is_enchantment and not is_land
+ is_just_artifact := is_artifact and not is_creature and not is_enchantment and not is_land
+ is_just_enchantment := is_enchantment and not is_creature and not is_artifact and not is_land
+ is_just_land := is_land and not is_creature and not is_artifact and not is_enchantment
for each s in subtypes do (
# is this a canon type?
- has_creature := if is_creature then contains(creature_subtypes_statistic(), match:s+";") else false
+ has_creature := if is_creature then contains(creature_subtypes_statistic(), match:s+";") else false
has_artifact := if is_artifact then contains(artifact_subtypes_statistic(), match:s+";") else false
has_enchantment := if is_enchantment then contains(enchantment_subtypes_statistic(), match:s+";") else false
- has_land := if is_land then contains(land_subtypes_statistic(), match:s+";") else false
- has_spell := if is_spell then contains(spell_subtypes_statistic(), match:s+";") else false
+ has_land := if is_land then contains(land_subtypes_statistic(), match:s+";") else false
+ has_spell := if is_spell then contains(spell_subtypes_statistic(), match:s+";") else false
has_walker := if is_walker then contains(planeswalker_subtypes_statistic(), match:s+";") else false
has_battle := if is_battle then contains(battle_subtypes_statistic(), match:s+";") else false
if not has_creature and not has_artifact and not has_enchantment and not has_land and not has_walker and not has_battle and not has_spell then (
- if is_just_creature then creature_hard := creature_hard + [s]
- else if is_just_artifact then artifact_hard := artifact_hard + [s]
- else if is_just_enchantment then enchantment_hard := enchantment_hard + [s]
- else if is_just_land then land_hard := land_hard + [s]
- else if is_walker then walker_soft := walker_soft + [s]
- else if is_battle then battle_soft := battle_soft + [s]
- else if is_spell then spell_hard := spell_hard + [s]
- else if not is_creature then noncreature_hard := noncreature_hard + [s]
- else unknown_sub_types := unknown_sub_types + [s]
+ if is_just_creature then creature_hard := creature_hard + [s]
+ else if is_just_artifact then artifact_hard := artifact_hard + [s]
+ else if is_just_enchantment then enchantment_hard := enchantment_hard + [s]
+ else if is_just_land then land_hard := land_hard + [s]
+ else if is_walker then walker_soft := walker_soft + [s]
+ else if is_battle then battle_soft := battle_soft + [s]
+ else if is_spell then spell_hard := spell_hard + [s]
+ else if not is_creature then noncreature_hard := noncreature_hard + [s]
+ else unknown_sub_types := unknown_sub_types + [s]
)
"" ## dummy return, otherwise it tries to concat scripts and explodes
)
@@ -950,14 +950,14 @@ detect_custom_subtypes_statistic :=
creature_hard := sort_list(creature_hard, remove_duplicates:true)
final := "\n"
- if length(creature_hard) > 0 then final := final + "Custom Creature Types:\n" + join(creature_hard, sep:"\n") + "\n\n";
- if length(artifact_hard) > 0 then final := final + "Custom Artifact Types:\n" + join(artifact_hard, sep:"\n") + "\n\n";
- if length(enchantment_hard) > 0 then final := final + "Custom Enchantment Types:\n" + join(enchantment_hard, sep:"\n") + "\n\n";
- if length(land_hard) > 0 then final := final + "Custom Land Types:\n" + join(land_hard, sep:"\n") + "\n\n";
- if length(spell_hard) > 0 then final := final + "Custom Spell Types:\n" + join(spell_hard, sep:"\n") + "\n\n";
- if length(walker_soft) > 0 then final := final + "Custom Planeswalker Types:\n" + join(walker_soft, sep:"\n") + "\n\n";
- if length(battle_soft) > 0 then final := final + "Custom Battle Types:\n" + join(battle_soft, sep:"\n") + "\n\n";
- if length(undetermined_types) > 0 then final := final + "Custom Unknown Types:\n" + join(undetermined_types, sep:"\n") + "\n\n";
+ if length(creature_hard) > 0 then final := final + "Custom Creature Types:\n" + join(creature_hard, sep:"\n") + "\n\n";
+ if length(artifact_hard) > 0 then final := final + "Custom Artifact Types:\n" + join(artifact_hard, sep:"\n") + "\n\n";
+ if length(enchantment_hard) > 0 then final := final + "Custom Enchantment Types:\n" + join(enchantment_hard, sep:"\n") + "\n\n";
+ if length(land_hard) > 0 then final := final + "Custom Land Types:\n" + join(land_hard, sep:"\n") + "\n\n";
+ if length(spell_hard) > 0 then final := final + "Custom Spell Types:\n" + join(spell_hard, sep:"\n") + "\n\n";
+ if length(walker_soft) > 0 then final := final + "Custom Planeswalker Types:\n" + join(walker_soft, sep:"\n") + "\n\n";
+ if length(battle_soft) > 0 then final := final + "Custom Battle Types:\n" + join(battle_soft, sep:"\n") + "\n\n";
+ if length(undetermined_types) > 0 then final := final + "Custom Unknown Types:\n" + join(undetermined_types, sep:"\n") + "\n\n";
trace(final)
""
@@ -1159,7 +1159,7 @@ power_statistic :=
fields := ["power"] + if not check_2_statistic() then []
else if contains(card.shape, match: "flip")
or contains(card.shape, match: "split")
- or contains(card.shape, match: "aftermath") then ["power_2"]
+ or contains(card.shape, match: "aftermath") then ["power_2"]
else if contains(card.shape, match: "double faced") then (if contains((card.styling or else styling).front_style or else "", match: "leveler") then ["power_4"] else ["power_2"])
else []
count := length(fields) - 1
@@ -1171,7 +1171,7 @@ toughness_statistic :=
fields := ["toughness"] + if not check_2_statistic() then []
else if contains(card.shape, match: "flip")
or contains(card.shape, match: "split")
- or contains(card.shape, match: "aftermath") then ["toughness_2"]
+ or contains(card.shape, match: "aftermath") then ["toughness_2"]
else if contains(card.shape, match: "double faced") then (if contains((card.styling or else styling).front_style or else "", match: "leveler") then ["toughness_4"] else ["toughness_2"])
else []
count := length(fields) - 1
diff --git a/data/magic.mse-game/symbols/aetherprint.png b/data/magic.mse-game/symbols/aetherprint.png
new file mode 100644
index 000000000..ec415104a
Binary files /dev/null and b/data/magic.mse-game/symbols/aetherprint.png differ
diff --git a/data/magic.mse-game/symbols/artifact.png b/data/magic.mse-game/symbols/artifact.png
new file mode 100644
index 000000000..8049126bf
Binary files /dev/null and b/data/magic.mse-game/symbols/artifact.png differ
diff --git a/data/magic.mse-game/symbols/battle.png b/data/magic.mse-game/symbols/battle.png
new file mode 100644
index 000000000..7283773f9
Binary files /dev/null and b/data/magic.mse-game/symbols/battle.png differ
diff --git a/data/magic.mse-game/symbols/blank.png b/data/magic.mse-game/symbols/blank.png
new file mode 100644
index 000000000..78e7a05f7
Binary files /dev/null and b/data/magic.mse-game/symbols/blank.png differ
diff --git a/data/magic.mse-game/symbols/bro war.png b/data/magic.mse-game/symbols/bro war.png
new file mode 100644
index 000000000..365436e46
Binary files /dev/null and b/data/magic.mse-game/symbols/bro war.png differ
diff --git a/data/magic.mse-game/symbols/closed fan.png b/data/magic.mse-game/symbols/closed fan.png
new file mode 100644
index 000000000..21d7846e7
Binary files /dev/null and b/data/magic.mse-game/symbols/closed fan.png differ
diff --git a/data/magic.mse-game/symbols/comedy.png b/data/magic.mse-game/symbols/comedy.png
new file mode 100644
index 000000000..93cbc9076
Binary files /dev/null and b/data/magic.mse-game/symbols/comedy.png differ
diff --git a/data/magic.mse-game/symbols/compass.png b/data/magic.mse-game/symbols/compass.png
new file mode 100644
index 000000000..ca5488dd0
Binary files /dev/null and b/data/magic.mse-game/symbols/compass.png differ
diff --git a/data/magic.mse-game/symbols/conspiracy.png b/data/magic.mse-game/symbols/conspiracy.png
new file mode 100644
index 000000000..ccef9bb08
Binary files /dev/null and b/data/magic.mse-game/symbols/conspiracy.png differ
diff --git a/data/magic.mse-game/symbols/creature.png b/data/magic.mse-game/symbols/creature.png
new file mode 100644
index 000000000..8f91ebab4
Binary files /dev/null and b/data/magic.mse-game/symbols/creature.png differ
diff --git a/data/magic.mse-game/symbols/day.png b/data/magic.mse-game/symbols/day.png
new file mode 100644
index 000000000..635cc2360
Binary files /dev/null and b/data/magic.mse-game/symbols/day.png differ
diff --git a/data/magic.mse-game/symbols/dungeon.png b/data/magic.mse-game/symbols/dungeon.png
new file mode 100644
index 000000000..02eebf29c
Binary files /dev/null and b/data/magic.mse-game/symbols/dungeon.png differ
diff --git a/data/magic.mse-game/symbols/eldrazi.png b/data/magic.mse-game/symbols/eldrazi.png
new file mode 100644
index 000000000..180d5ad16
Binary files /dev/null and b/data/magic.mse-game/symbols/eldrazi.png differ
diff --git a/data/magic.mse-game/symbols/enchantment.png b/data/magic.mse-game/symbols/enchantment.png
new file mode 100644
index 000000000..6cea60c56
Binary files /dev/null and b/data/magic.mse-game/symbols/enchantment.png differ
diff --git a/data/magic.mse-game/symbols/hero.png b/data/magic.mse-game/symbols/hero.png
new file mode 100644
index 000000000..f3de68de2
Binary files /dev/null and b/data/magic.mse-game/symbols/hero.png differ
diff --git a/data/magic.mse-game/symbols/instant.png b/data/magic.mse-game/symbols/instant.png
new file mode 100644
index 000000000..700614a37
Binary files /dev/null and b/data/magic.mse-game/symbols/instant.png differ
diff --git a/data/magic.mse-game/symbols/land.png b/data/magic.mse-game/symbols/land.png
new file mode 100644
index 000000000..1ff42646c
Binary files /dev/null and b/data/magic.mse-game/symbols/land.png differ
diff --git a/data/magic.mse-game/symbols/lesson.png b/data/magic.mse-game/symbols/lesson.png
new file mode 100644
index 000000000..71228aa5d
Binary files /dev/null and b/data/magic.mse-game/symbols/lesson.png differ
diff --git a/data/magic.mse-game/symbols/menu_choice_images b/data/magic.mse-game/symbols/menu_choice_images
new file mode 100644
index 000000000..eeee96256
--- /dev/null
+++ b/data/magic.mse-game/symbols/menu_choice_images
@@ -0,0 +1,75 @@
+choice images:
+ none: { "" }
+
+ day: /magic.mse-game/symbols/day.png
+ night: /magic.mse-game/symbols/night.png
+ moon: /magic.mse-game/symbols/moon.png
+ eldrazi: /magic.mse-game/symbols/eldrazi.png
+ compass: /magic.mse-game/symbols/compass.png
+ closed fan: /magic.mse-game/symbols/closed fan.png
+ open fan: /magic.mse-game/symbols/open fan.png
+ meld: /magic.mse-game/symbols/bro war.png
+ lesson: /magic.mse-game/symbols/lesson.png
+ specialized: /magic.mse-game/symbols/specialized.png
+ front triangle: /magic.mse-game/symbols/triangle.png
+ back triangle: /magic.mse-game/symbols/triangle inverted.png
+ aetherprint: /magic.mse-game/symbols/aetherprint.png
+ sparker: /magic.mse-game/symbols/sparker.png
+
+ sparker (colored) default: /magic.mse-game/symbols/sparker.png
+ sparker (colored) white: /magic.mse-game/symbols/sparker/white.png
+ sparker (colored) blue: /magic.mse-game/symbols/sparker/blue.png
+ sparker (colored) black: /magic.mse-game/symbols/sparker/black.png
+ sparker (colored) red: /magic.mse-game/symbols/sparker/red.png
+ sparker (colored) green: /magic.mse-game/symbols/sparker/green.png
+ sparker (colored) multicolor: /magic.mse-game/symbols/sparker/multicolor.png
+ sparker (colored) colorless: /magic.mse-game/symbols/sparker/colorless.png
+ sparker (colored) artifact: /magic.mse-game/symbols/sparker/artifact.png
+
+ modal front default: /magic.mse-game/symbols/modalfront/colorless.png
+ modal front white: /magic.mse-game/symbols/modalfront/white.png
+ modal front blue: /magic.mse-game/symbols/modalfront/blue.png
+ modal front black: /magic.mse-game/symbols/modalfront/black.png
+ modal front red: /magic.mse-game/symbols/modalfront/red.png
+ modal front green: /magic.mse-game/symbols/modalfront/green.png
+ modal front multicolor: /magic.mse-game/symbols/modalfront/multicolor.png
+ modal front colorless: /magic.mse-game/symbols/modalfront/colorless.png
+ modal front artifact: /magic.mse-game/symbols/modalfront/artifact.png
+
+ modal back default: /magic.mse-game/symbols/modalback/colorless.png
+ modal back white: /magic.mse-game/symbols/modalback/white.png
+ modal back blue: /magic.mse-game/symbols/modalback/blue.png
+ modal back black: /magic.mse-game/symbols/modalback/black.png
+ modal back red: /magic.mse-game/symbols/modalback/red.png
+ modal back green: /magic.mse-game/symbols/modalback/green.png
+ modal back multicolor: /magic.mse-game/symbols/modalback/multicolor.png
+ modal back colorless: /magic.mse-game/symbols/modalback/colorless.png
+ modal back artifact: /magic.mse-game/symbols/modalback/artifact.png
+
+ multitype: /magic.mse-game/symbols/multitype.png
+ artifact: /magic.mse-game/symbols/artifact.png
+ battle: /magic.mse-game/symbols/battle.png
+ creature: /magic.mse-game/symbols/creature.png
+ enchantment: /magic.mse-game/symbols/enchantment.png
+ instant: /magic.mse-game/symbols/instant.png
+ land: /magic.mse-game/symbols/land.png
+ planeswalker: /magic.mse-game/symbols/planeswalker.png
+ sorcery: /magic.mse-game/symbols/sorcery.png
+ fortress: /magic.mse-game/symbols/structure.png
+
+ non standard emblem: /magic.mse-game/symbols/aetherprint.png
+ non standard conspiracy: /magic.mse-game/symbols/conspiracy.png
+ non standard dungeon: /magic.mse-game/symbols/dungeon.png
+ non standard hero: /magic.mse-game/symbols/hero.png
+ non standard phenomenon: /magic.mse-game/symbols/phenomenon.png
+ non standard plane: /magic.mse-game/symbols/plane.png
+ non standard scheme: /magic.mse-game/symbols/scheme.png
+ non standard vanguard: /magic.mse-game/symbols/vanguard.png
+
+ extra comedy: /magic.mse-game/symbols/comedy.png
+ extra tragedy: /magic.mse-game/symbols/tragedy.png
+
+ custom symbol one: { custom_symbol_1() }
+ custom symbol two: { custom_symbol_2() }
+ custom symbol three: { custom_symbol_3() }
+ custom symbol four: { custom_symbol_4() }
diff --git a/data/magic.mse-game/symbols/modalback/artifact.png b/data/magic.mse-game/symbols/modalback/artifact.png
new file mode 100644
index 000000000..28d6be387
Binary files /dev/null and b/data/magic.mse-game/symbols/modalback/artifact.png differ
diff --git a/data/magic.mse-game/symbols/modalback/black.png b/data/magic.mse-game/symbols/modalback/black.png
new file mode 100644
index 000000000..fdf5b277c
Binary files /dev/null and b/data/magic.mse-game/symbols/modalback/black.png differ
diff --git a/data/magic.mse-game/symbols/modalback/blue.png b/data/magic.mse-game/symbols/modalback/blue.png
new file mode 100644
index 000000000..a76a8388b
Binary files /dev/null and b/data/magic.mse-game/symbols/modalback/blue.png differ
diff --git a/data/magic.mse-game/symbols/modalback/colorless.png b/data/magic.mse-game/symbols/modalback/colorless.png
new file mode 100644
index 000000000..4bb9dc014
Binary files /dev/null and b/data/magic.mse-game/symbols/modalback/colorless.png differ
diff --git a/data/magic.mse-game/symbols/modalback/green.png b/data/magic.mse-game/symbols/modalback/green.png
new file mode 100644
index 000000000..4ff236679
Binary files /dev/null and b/data/magic.mse-game/symbols/modalback/green.png differ
diff --git a/data/magic.mse-game/symbols/modalback/multicolor.png b/data/magic.mse-game/symbols/modalback/multicolor.png
new file mode 100644
index 000000000..f26030366
Binary files /dev/null and b/data/magic.mse-game/symbols/modalback/multicolor.png differ
diff --git a/data/magic.mse-game/symbols/modalback/red.png b/data/magic.mse-game/symbols/modalback/red.png
new file mode 100644
index 000000000..6b36c506f
Binary files /dev/null and b/data/magic.mse-game/symbols/modalback/red.png differ
diff --git a/data/magic.mse-game/symbols/modalback/white.png b/data/magic.mse-game/symbols/modalback/white.png
new file mode 100644
index 000000000..e20426b61
Binary files /dev/null and b/data/magic.mse-game/symbols/modalback/white.png differ
diff --git a/data/magic.mse-game/symbols/modalfront/artifact.png b/data/magic.mse-game/symbols/modalfront/artifact.png
new file mode 100644
index 000000000..ac7928b97
Binary files /dev/null and b/data/magic.mse-game/symbols/modalfront/artifact.png differ
diff --git a/data/magic.mse-game/symbols/modalfront/black.png b/data/magic.mse-game/symbols/modalfront/black.png
new file mode 100644
index 000000000..409feeab1
Binary files /dev/null and b/data/magic.mse-game/symbols/modalfront/black.png differ
diff --git a/data/magic.mse-game/symbols/modalfront/blue.png b/data/magic.mse-game/symbols/modalfront/blue.png
new file mode 100644
index 000000000..75f091db6
Binary files /dev/null and b/data/magic.mse-game/symbols/modalfront/blue.png differ
diff --git a/data/magic.mse-game/symbols/modalfront/colorless.png b/data/magic.mse-game/symbols/modalfront/colorless.png
new file mode 100644
index 000000000..6964beac8
Binary files /dev/null and b/data/magic.mse-game/symbols/modalfront/colorless.png differ
diff --git a/data/magic.mse-game/symbols/modalfront/green.png b/data/magic.mse-game/symbols/modalfront/green.png
new file mode 100644
index 000000000..208964376
Binary files /dev/null and b/data/magic.mse-game/symbols/modalfront/green.png differ
diff --git a/data/magic.mse-game/symbols/modalfront/multicolor.png b/data/magic.mse-game/symbols/modalfront/multicolor.png
new file mode 100644
index 000000000..af2d7913e
Binary files /dev/null and b/data/magic.mse-game/symbols/modalfront/multicolor.png differ
diff --git a/data/magic.mse-game/symbols/modalfront/red.png b/data/magic.mse-game/symbols/modalfront/red.png
new file mode 100644
index 000000000..2c683827d
Binary files /dev/null and b/data/magic.mse-game/symbols/modalfront/red.png differ
diff --git a/data/magic.mse-game/symbols/modalfront/white.png b/data/magic.mse-game/symbols/modalfront/white.png
new file mode 100644
index 000000000..ce73bc10b
Binary files /dev/null and b/data/magic.mse-game/symbols/modalfront/white.png differ
diff --git a/data/magic.mse-game/symbols/moon.png b/data/magic.mse-game/symbols/moon.png
new file mode 100644
index 000000000..d1f0ed24c
Binary files /dev/null and b/data/magic.mse-game/symbols/moon.png differ
diff --git a/data/magic.mse-game/symbols/multitype.png b/data/magic.mse-game/symbols/multitype.png
new file mode 100644
index 000000000..7bb2c1205
Binary files /dev/null and b/data/magic.mse-game/symbols/multitype.png differ
diff --git a/data/magic.mse-game/symbols/night.png b/data/magic.mse-game/symbols/night.png
new file mode 100644
index 000000000..c16782cac
Binary files /dev/null and b/data/magic.mse-game/symbols/night.png differ
diff --git a/data/magic.mse-game/symbols/open fan.png b/data/magic.mse-game/symbols/open fan.png
new file mode 100644
index 000000000..e9e9c8f80
Binary files /dev/null and b/data/magic.mse-game/symbols/open fan.png differ
diff --git a/data/magic.mse-game/symbols/phenomenon.png b/data/magic.mse-game/symbols/phenomenon.png
new file mode 100644
index 000000000..d331c70e0
Binary files /dev/null and b/data/magic.mse-game/symbols/phenomenon.png differ
diff --git a/data/magic.mse-game/symbols/plane.png b/data/magic.mse-game/symbols/plane.png
new file mode 100644
index 000000000..831b15171
Binary files /dev/null and b/data/magic.mse-game/symbols/plane.png differ
diff --git a/data/magic.mse-game/symbols/planeswalker.png b/data/magic.mse-game/symbols/planeswalker.png
new file mode 100644
index 000000000..2e40fc734
Binary files /dev/null and b/data/magic.mse-game/symbols/planeswalker.png differ
diff --git a/data/magic.mse-game/symbols/scheme.png b/data/magic.mse-game/symbols/scheme.png
new file mode 100644
index 000000000..9e216be15
Binary files /dev/null and b/data/magic.mse-game/symbols/scheme.png differ
diff --git a/data/magic.mse-game/symbols/sorcery.png b/data/magic.mse-game/symbols/sorcery.png
new file mode 100644
index 000000000..06e096265
Binary files /dev/null and b/data/magic.mse-game/symbols/sorcery.png differ
diff --git a/data/magic.mse-game/symbols/sparker.png b/data/magic.mse-game/symbols/sparker.png
new file mode 100644
index 000000000..ebfacf121
Binary files /dev/null and b/data/magic.mse-game/symbols/sparker.png differ
diff --git a/data/magic.mse-game/symbols/sparker/artifact.png b/data/magic.mse-game/symbols/sparker/artifact.png
new file mode 100644
index 000000000..43ae992a6
Binary files /dev/null and b/data/magic.mse-game/symbols/sparker/artifact.png differ
diff --git a/data/magic.mse-game/symbols/sparker/black.png b/data/magic.mse-game/symbols/sparker/black.png
new file mode 100644
index 000000000..7c629b7d9
Binary files /dev/null and b/data/magic.mse-game/symbols/sparker/black.png differ
diff --git a/data/magic.mse-game/symbols/sparker/blue.png b/data/magic.mse-game/symbols/sparker/blue.png
new file mode 100644
index 000000000..5ec9feba9
Binary files /dev/null and b/data/magic.mse-game/symbols/sparker/blue.png differ
diff --git a/data/magic.mse-game/symbols/sparker/colorless.png b/data/magic.mse-game/symbols/sparker/colorless.png
new file mode 100644
index 000000000..b90c4b280
Binary files /dev/null and b/data/magic.mse-game/symbols/sparker/colorless.png differ
diff --git a/data/magic.mse-game/symbols/sparker/green.png b/data/magic.mse-game/symbols/sparker/green.png
new file mode 100644
index 000000000..780cd6182
Binary files /dev/null and b/data/magic.mse-game/symbols/sparker/green.png differ
diff --git a/data/magic.mse-game/symbols/sparker/multicolor.png b/data/magic.mse-game/symbols/sparker/multicolor.png
new file mode 100644
index 000000000..d3df00e6c
Binary files /dev/null and b/data/magic.mse-game/symbols/sparker/multicolor.png differ
diff --git a/data/magic.mse-game/symbols/sparker/red.png b/data/magic.mse-game/symbols/sparker/red.png
new file mode 100644
index 000000000..f1396c2b1
Binary files /dev/null and b/data/magic.mse-game/symbols/sparker/red.png differ
diff --git a/data/magic.mse-game/symbols/sparker/white.png b/data/magic.mse-game/symbols/sparker/white.png
new file mode 100644
index 000000000..d58eea64b
Binary files /dev/null and b/data/magic.mse-game/symbols/sparker/white.png differ
diff --git a/data/magic.mse-game/symbols/specialized.png b/data/magic.mse-game/symbols/specialized.png
new file mode 100644
index 000000000..da42bf346
Binary files /dev/null and b/data/magic.mse-game/symbols/specialized.png differ
diff --git a/data/magic.mse-game/symbols/structure.png b/data/magic.mse-game/symbols/structure.png
new file mode 100644
index 000000000..8747aeedd
Binary files /dev/null and b/data/magic.mse-game/symbols/structure.png differ
diff --git a/data/magic.mse-game/symbols/tragedy.png b/data/magic.mse-game/symbols/tragedy.png
new file mode 100644
index 000000000..7a253aaeb
Binary files /dev/null and b/data/magic.mse-game/symbols/tragedy.png differ
diff --git a/data/magic.mse-game/symbols/triangle inverted.png b/data/magic.mse-game/symbols/triangle inverted.png
new file mode 100644
index 000000000..93ae2eb5d
Binary files /dev/null and b/data/magic.mse-game/symbols/triangle inverted.png differ
diff --git a/data/magic.mse-game/symbols/triangle.png b/data/magic.mse-game/symbols/triangle.png
new file mode 100644
index 000000000..02cd25ebd
Binary files /dev/null and b/data/magic.mse-game/symbols/triangle.png differ
diff --git a/data/magic.mse-game/symbols/vanguard.png b/data/magic.mse-game/symbols/vanguard.png
new file mode 100644
index 000000000..93a420235
Binary files /dev/null and b/data/magic.mse-game/symbols/vanguard.png differ
diff --git a/data/magic.mse-game/watermarks/Discord.png b/data/magic.mse-game/watermarks/Discord.png
new file mode 100644
index 000000000..ac15c6a42
Binary files /dev/null and b/data/magic.mse-game/watermarks/Discord.png differ
diff --git a/data/magic.mse-game/watermarks/aetherprint.png b/data/magic.mse-game/watermarks/aetherprint.png
new file mode 100644
index 000000000..7ff74b7ff
Binary files /dev/null and b/data/magic.mse-game/watermarks/aetherprint.png differ
diff --git a/data/magic.mse-game/watermarks/akros.png b/data/magic.mse-game/watermarks/akros.png
new file mode 100644
index 000000000..eac51687b
Binary files /dev/null and b/data/magic.mse-game/watermarks/akros.png differ
diff --git a/data/magic.mse-game/watermarks/capenna_brokers.png b/data/magic.mse-game/watermarks/capenna_brokers.png
new file mode 100644
index 000000000..bac5748cc
Binary files /dev/null and b/data/magic.mse-game/watermarks/capenna_brokers.png differ
diff --git a/data/magic.mse-game/watermarks/capenna_cabaretti.png b/data/magic.mse-game/watermarks/capenna_cabaretti.png
new file mode 100644
index 000000000..90d1ffa8e
Binary files /dev/null and b/data/magic.mse-game/watermarks/capenna_cabaretti.png differ
diff --git a/data/magic.mse-game/watermarks/capenna_maestros.png b/data/magic.mse-game/watermarks/capenna_maestros.png
new file mode 100644
index 000000000..8d30fcc07
Binary files /dev/null and b/data/magic.mse-game/watermarks/capenna_maestros.png differ
diff --git a/data/magic.mse-game/watermarks/capenna_obscura.png b/data/magic.mse-game/watermarks/capenna_obscura.png
new file mode 100644
index 000000000..76e67b54a
Binary files /dev/null and b/data/magic.mse-game/watermarks/capenna_obscura.png differ
diff --git a/data/magic.mse-game/watermarks/capenna_riveteers.png b/data/magic.mse-game/watermarks/capenna_riveteers.png
new file mode 100644
index 000000000..62556783d
Binary files /dev/null and b/data/magic.mse-game/watermarks/capenna_riveteers.png differ
diff --git a/data/magic.mse-game/watermarks/chaos.png b/data/magic.mse-game/watermarks/chaos.png
new file mode 100644
index 000000000..5c61f3378
Binary files /dev/null and b/data/magic.mse-game/watermarks/chaos.png differ
diff --git a/data/magic.mse-game/watermarks/colorpie.png b/data/magic.mse-game/watermarks/colorpie.png
new file mode 100644
index 000000000..68aa55415
Binary files /dev/null and b/data/magic.mse-game/watermarks/colorpie.png differ
diff --git a/data/magic.mse-game/watermarks/conspiracy_stamp.png b/data/magic.mse-game/watermarks/conspiracy_stamp.png
new file mode 100644
index 000000000..42f53eac9
Binary files /dev/null and b/data/magic.mse-game/watermarks/conspiracy_stamp.png differ
diff --git a/data/magic.mse-game/watermarks/d&d.png b/data/magic.mse-game/watermarks/d&d.png
new file mode 100644
index 000000000..61732c0f3
Binary files /dev/null and b/data/magic.mse-game/watermarks/d&d.png differ
diff --git a/data/magic.mse-game/watermarks/desparked.png b/data/magic.mse-game/watermarks/desparked.png
new file mode 100644
index 000000000..109a9d667
Binary files /dev/null and b/data/magic.mse-game/watermarks/desparked.png differ
diff --git a/data/magic.mse-game/watermarks/foretell.png b/data/magic.mse-game/watermarks/foretell.png
new file mode 100644
index 000000000..3154d3c3a
Binary files /dev/null and b/data/magic.mse-game/watermarks/foretell.png differ
diff --git a/data/magic.mse-game/watermarks/futsymbol_artifact.png b/data/magic.mse-game/watermarks/futsymbol_artifact.png
new file mode 100644
index 000000000..49ce72bfa
Binary files /dev/null and b/data/magic.mse-game/watermarks/futsymbol_artifact.png differ
diff --git a/data/magic.mse-game/watermarks/futsymbol_creature.png b/data/magic.mse-game/watermarks/futsymbol_creature.png
new file mode 100644
index 000000000..abc29e2e5
Binary files /dev/null and b/data/magic.mse-game/watermarks/futsymbol_creature.png differ
diff --git a/data/magic.mse-game/watermarks/futsymbol_enchantment.png b/data/magic.mse-game/watermarks/futsymbol_enchantment.png
new file mode 100644
index 000000000..3eba45052
Binary files /dev/null and b/data/magic.mse-game/watermarks/futsymbol_enchantment.png differ
diff --git a/data/magic.mse-game/watermarks/futsymbol_instant.png b/data/magic.mse-game/watermarks/futsymbol_instant.png
new file mode 100644
index 000000000..ac8aa4f43
Binary files /dev/null and b/data/magic.mse-game/watermarks/futsymbol_instant.png differ
diff --git a/data/magic.mse-game/watermarks/futsymbol_land.png b/data/magic.mse-game/watermarks/futsymbol_land.png
new file mode 100644
index 000000000..850b15388
Binary files /dev/null and b/data/magic.mse-game/watermarks/futsymbol_land.png differ
diff --git a/data/magic.mse-game/watermarks/futsymbol_multiple.png b/data/magic.mse-game/watermarks/futsymbol_multiple.png
new file mode 100644
index 000000000..4d23f9a48
Binary files /dev/null and b/data/magic.mse-game/watermarks/futsymbol_multiple.png differ
diff --git a/data/magic.mse-game/watermarks/futsymbol_planeswalker.png b/data/magic.mse-game/watermarks/futsymbol_planeswalker.png
new file mode 100644
index 000000000..7d9adb42c
Binary files /dev/null and b/data/magic.mse-game/watermarks/futsymbol_planeswalker.png differ
diff --git a/data/magic.mse-game/watermarks/futsymbol_sorcery.png b/data/magic.mse-game/watermarks/futsymbol_sorcery.png
new file mode 100644
index 000000000..4f66d46ea
Binary files /dev/null and b/data/magic.mse-game/watermarks/futsymbol_sorcery.png differ
diff --git a/data/magic.mse-game/watermarks/futsymbol_structure.png b/data/magic.mse-game/watermarks/futsymbol_structure.png
new file mode 100644
index 000000000..1d6cd49fa
Binary files /dev/null and b/data/magic.mse-game/watermarks/futsymbol_structure.png differ
diff --git a/data/magic.mse-game/watermarks/gavony.png b/data/magic.mse-game/watermarks/gavony.png
new file mode 100644
index 000000000..f9cf37eee
Binary files /dev/null and b/data/magic.mse-game/watermarks/gavony.png differ
diff --git a/data/magic.mse-game/watermarks/jace-consortium.png b/data/magic.mse-game/watermarks/jace-consortium.png
new file mode 100644
index 000000000..c0732bd37
Binary files /dev/null and b/data/magic.mse-game/watermarks/jace-consortium.png differ
diff --git a/data/magic.mse-game/watermarks/judge_academy.png b/data/magic.mse-game/watermarks/judge_academy.png
new file mode 100644
index 000000000..bbbdcfbc3
Binary files /dev/null and b/data/magic.mse-game/watermarks/judge_academy.png differ
diff --git a/data/magic.mse-game/watermarks/kessig.png b/data/magic.mse-game/watermarks/kessig.png
new file mode 100644
index 000000000..64375e558
Binary files /dev/null and b/data/magic.mse-game/watermarks/kessig.png differ
diff --git a/data/magic.mse-game/watermarks/meletis.png b/data/magic.mse-game/watermarks/meletis.png
new file mode 100644
index 000000000..4d0c8a929
Binary files /dev/null and b/data/magic.mse-game/watermarks/meletis.png differ
diff --git a/data/magic.mse-game/watermarks/menu_choice_images b/data/magic.mse-game/watermarks/menu_choice_images
new file mode 100644
index 000000000..9ed10fc38
--- /dev/null
+++ b/data/magic.mse-game/watermarks/menu_choice_images
@@ -0,0 +1,202 @@
+choice images:
+ none: /magic.mse-game/watermarks/none.png
+
+ mana symbol white: /magic.mse-game/watermarks/watermark_w.png
+ mana symbol blue: /magic.mse-game/watermarks/watermark_u.png
+ mana symbol black: /magic.mse-game/watermarks/watermark_b.png
+ mana symbol red: /magic.mse-game/watermarks/watermark_r.png
+ mana symbol green: /magic.mse-game/watermarks/watermark_g.png
+ mana symbol colorless: /magic.mse-game/watermarks/watermark_c.png
+ mana symbol snow: /magic.mse-game/watermarks/watermark_s.png
+
+ mana symbol old white: /magic.mse-game/watermarks/watermark_w_old.png
+ mana symbol old blue: /magic.mse-game/watermarks/watermark_u_old.png
+ mana symbol old black: /magic.mse-game/watermarks/watermark_b_old.png
+ mana symbol old red: /magic.mse-game/watermarks/watermark_r_old.png
+ mana symbol old green: /magic.mse-game/watermarks/watermark_g_old.png
+ mana symbol old colorless: /magic.mse-game/watermarks/watermark_c_old.png
+
+ mana symbol hi res white: /magic.mse-game/watermarks/watermark_w_big.png
+ mana symbol hi res blue: /magic.mse-game/watermarks/watermark_u_big.png
+ mana symbol hi res black: /magic.mse-game/watermarks/watermark_b_big.png
+ mana symbol hi res red: /magic.mse-game/watermarks/watermark_r_big.png
+ mana symbol hi res green: /magic.mse-game/watermarks/watermark_g_big.png
+ mana symbol hi res colorless: /magic.mse-game/watermarks/watermark_c_big.png
+
+ transparent mana symbol white: /magic.mse-game/watermarks/watermark_w.png
+ transparent mana symbol blue: /magic.mse-game/watermarks/watermark_u.png
+ transparent mana symbol black: /magic.mse-game/watermarks/watermark_b.png
+ transparent mana symbol red: /magic.mse-game/watermarks/watermark_r.png
+ transparent mana symbol green: /magic.mse-game/watermarks/watermark_g.png
+
+ transparent mana symbol old white: /magic.mse-game/watermarks/watermark_w_old.png
+ transparent mana symbol old blue: /magic.mse-game/watermarks/watermark_u_old.png
+ transparent mana symbol old black: /magic.mse-game/watermarks/watermark_b_old.png
+ transparent mana symbol old red: /magic.mse-game/watermarks/watermark_r_old.png
+ transparent mana symbol old green: /magic.mse-game/watermarks/watermark_g_old.png
+ transparent mana symbol old colorless: /magic.mse-game/watermarks/watermark_c_old.png
+
+ transparent mana symbol hi res white: /magic.mse-game/watermarks/watermark_w_big.png
+ transparent mana symbol hi res blue: /magic.mse-game/watermarks/watermark_u_big.png
+ transparent mana symbol hi res black: /magic.mse-game/watermarks/watermark_b_big.png
+ transparent mana symbol hi res red: /magic.mse-game/watermarks/watermark_r_big.png
+ transparent mana symbol hi res green: /magic.mse-game/watermarks/watermark_g_big.png
+ transparent mana symbol hi res colorless: /magic.mse-game/watermarks/watermark_c_big.png
+
+ guild symbol The Azorius Senate (W/U): /magic.mse-game/watermarks/watermark_azorius2.png
+ guild symbol House Dimir (U/B): /magic.mse-game/watermarks/watermark_dimir2.png
+ guild symbol The Cult of Rakdos (B/R): /magic.mse-game/watermarks/watermark_rakados2.png
+ guild symbol The Gruul Clans (R/G): /magic.mse-game/watermarks/watermark_gruul2.png
+ guild symbol The Selesnya Conclave (G/W): /magic.mse-game/watermarks/watermark_selesnya2.png
+ guild symbol The Orzhov Syndicate (W/B): /magic.mse-game/watermarks/watermark_orzhov2.png
+ guild symbol The Izzet (U/R): /magic.mse-game/watermarks/watermark_izzet2.png
+ guild symbol The Golgari (B/G): /magic.mse-game/watermarks/watermark_golgari2.png
+ guild symbol The Boros Legion (R/W): /magic.mse-game/watermarks/watermark_boros2.png
+ guild symbol The Simic Combine (G/U): /magic.mse-game/watermarks/watermark_simic2.png
+
+ guild symbol originals The Azorius Senate (W/U): /magic.mse-game/watermarks/watermark_azorius.png
+ guild symbol originals House Dimir (U/B): /magic.mse-game/watermarks/watermark_dimir.png
+ guild symbol originals The Cult of Rakdos (B/R): /magic.mse-game/watermarks/watermark_rakados.png
+ guild symbol originals The Gruul Clans (R/G): /magic.mse-game/watermarks/watermark_gruul.png
+ guild symbol originals The Selesnya Conclave (G/W): /magic.mse-game/watermarks/watermark_selesnya.png
+ guild symbol originals The Orzhov Syndicate (W/B): /magic.mse-game/watermarks/watermark_orzhov.png
+ guild symbol originals The Izzet (U/R): /magic.mse-game/watermarks/watermark_izzet.png
+ guild symbol originals The Golgari (B/G): /magic.mse-game/watermarks/watermark_golgari.png
+ guild symbol originals The Boros Legion (R/W): /magic.mse-game/watermarks/watermark_boros.png
+ guild symbol originals The Simic Combine (G/U): /magic.mse-game/watermarks/watermark_simic.png
+
+ guild symbol ancients The Azorius Senate (W/U): /magic.mse-game/watermarks/watermark-frazier-azorius.png
+ guild symbol ancients House Dimir (U/B): /magic.mse-game/watermarks/watermark-frazier-dimir.png
+ guild symbol ancients The Cult of Rakdos (B/R): /magic.mse-game/watermarks/watermark-frazier-rakdos.png
+ guild symbol ancients The Gruul Clans (R/G): /magic.mse-game/watermarks/watermark-frazier-gruul.png
+ guild symbol ancients The Selesnya Conclave (G/W): /magic.mse-game/watermarks/watermark-frazier-selesnya.png
+ guild symbol ancients The Orzhov Syndicate (W/B): /magic.mse-game/watermarks/watermark-frazier-orzhov.png
+ guild symbol ancients The Izzet (U/R): /magic.mse-game/watermarks/watermark-frazier-izzet.png
+ guild symbol ancients The Golgari (B/G): /magic.mse-game/watermarks/watermark-frazier-golgari.png
+ guild symbol ancients The Boros Legion (R/W): /magic.mse-game/watermarks/watermark-frazier-boros.png
+ guild symbol ancients The Simic Combine (G/U): /magic.mse-game/watermarks/watermark-frazier-simic.png
+
+ faction symbol mirrodin: /magic.mse-game/watermarks/watermark_mirrodin.png
+ faction symbol phyrexia: /magic.mse-game/watermarks/watermark_phyrexia.png
+
+ clan symbol The Abzan Houses (WBG): /magic.mse-game/watermarks/watermark_abzan.png
+ clan symbol The Jeskai Way (URW): /magic.mse-game/watermarks/watermark_jeskai.png
+ clan symbol The Sultai Brood (BGU): /magic.mse-game/watermarks/watermark_sultai.png
+ clan symbol The Mardu Horde (RWB): /magic.mse-game/watermarks/watermark_mardu.png
+ clan symbol The Temur Frontier (GUR): /magic.mse-game/watermarks/watermark_temur.png
+
+ brood symbol Dromoka's Brood (GW): /magic.mse-game/watermarks/watermark_dromoka.png
+ brood symbol Ojutai's Brood (WU): /magic.mse-game/watermarks/watermark_ojutai.png
+ brood symbol Silumgar's Brood (UB): /magic.mse-game/watermarks/watermark_silumgar.png
+ brood symbol Kolaghan's Brood (BR): /magic.mse-game/watermarks/watermark_kolaghan.png
+ brood symbol Atarka's Brood (RG): /magic.mse-game/watermarks/watermark_atarka.png
+
+ family symbol Brokers (GWU): /magic.mse-game/watermarks/capenna_brokers.png
+ family symbol Cabaretti (RGW): /magic.mse-game/watermarks/capenna_cabaretti.png
+ family symbol Maestros (UBR): /magic.mse-game/watermarks/capenna_maestros.png
+ family symbol Obscura (WUB): /magic.mse-game/watermarks/capenna_obscura.png
+ family symbol Riveteers (BRG): /magic.mse-game/watermarks/capenna_riveteers.png
+
+ unstable factions Order of the Widget: /magic.mse-game/watermarks/unstable_widget.png
+ unstable factions Agents of S.N.E.A.K.: /magic.mse-game/watermarks/unstable_SNEAK.png
+ unstable factions League of Dastardly Doom: /magic.mse-game/watermarks/unstable_doom.png
+ unstable factions Goblin Explosioneers: /magic.mse-game/watermarks/unstable_explosioneers.png
+ unstable factions Crossbreed Labs: /magic.mse-game/watermarks/unstable_crossbreed.png
+
+ colored xander hybrid mana W/U: /magic.mse-game/watermarks/watermark_wumana_colored.png
+ colored xander hybrid mana U/B: /magic.mse-game/watermarks/watermark_ubmana_colored.png
+ colored xander hybrid mana B/R: /magic.mse-game/watermarks/watermark_brmana_colored.png
+ colored xander hybrid mana R/G: /magic.mse-game/watermarks/watermark_rgmana_colored.png
+ colored xander hybrid mana G/W: /magic.mse-game/watermarks/watermark_gwmana_colored.png
+ colored xander hybrid mana W/B: /magic.mse-game/watermarks/watermark_wbmana_colored.png
+ colored xander hybrid mana U/R: /magic.mse-game/watermarks/watermark_urmana_colored.png
+ colored xander hybrid mana B/G: /magic.mse-game/watermarks/watermark_bgmana_colored.png
+ colored xander hybrid mana R/W: /magic.mse-game/watermarks/watermark_rwmana_colored.png
+ colored xander hybrid mana G/U: /magic.mse-game/watermarks/watermark_gumana_colored.png
+
+ xander hybrid mana W/U: /magic.mse-game/watermarks/watermark_wumana.png
+ xander hybrid mana U/B: /magic.mse-game/watermarks/watermark_ubmana.png
+ xander hybrid mana B/R: /magic.mse-game/watermarks/watermark_brmana.png
+ xander hybrid mana R/G: /magic.mse-game/watermarks/watermark_rgmana.png
+ xander hybrid mana G/W: /magic.mse-game/watermarks/watermark_gwmana.png
+ xander hybrid mana W/B: /magic.mse-game/watermarks/watermark_wbmana.png
+ xander hybrid mana U/R: /magic.mse-game/watermarks/watermark_urmana.png
+ xander hybrid mana B/G: /magic.mse-game/watermarks/watermark_bgmana.png
+ xander hybrid mana R/W: /magic.mse-game/watermarks/watermark_rwmana.png
+ xander hybrid mana G/U: /magic.mse-game/watermarks/watermark_gumana.png
+
+ future sight type symbols artifact: /magic.mse-game/watermarks/futsymbol_artifact.png
+ future sight type symbols creature: /magic.mse-game/watermarks/futsymbol_creature.png
+ future sight type symbols enchantment: /magic.mse-game/watermarks/futsymbol_enchantment.png
+ future sight type symbols instant: /magic.mse-game/watermarks/futsymbol_instant.png
+ future sight type symbols land: /magic.mse-game/watermarks/futsymbol_land.png
+ future sight type symbols multiple: /magic.mse-game/watermarks/futsymbol_multiple.png
+ future sight type symbols planeswalker: /magic.mse-game/watermarks/futsymbol_planeswalker.png
+ future sight type symbols sorcery: /magic.mse-game/watermarks/futsymbol_sorcery.png
+ future sight type symbols structure: /magic.mse-game/watermarks/futsymbol_structure.png
+
+ other magic symbols aetherprint: /magic.mse-game/watermarks/aetherprint.png
+ other magic symbols desparked: /magic.mse-game/watermarks/desparked.png
+ other magic symbols chaos symbol: /magic.mse-game/watermarks/chaos.png
+ other magic symbols story spotlight: /magic.mse-game/watermarks/planeswalker.png
+ other magic symbols shooting star: /magic.mse-game/watermarks/shooting_star.png
+ other magic symbols the thran: /magic.mse-game/watermarks/thran.png
+ other magic symbols phyrexia: /magic.mse-game/watermarks/phyrexia.png
+ other magic symbols color pie: /magic.mse-game/watermarks/colorpie.png
+ other magic symbols judge academy: /magic.mse-game/watermarks/judge_academy.png
+ other magic symbols foretell: /magic.mse-game/watermarks/foretell.png
+ other magic symbols jace consortium: /magic.mse-game/watermarks/jace-consortium.png
+ other magic symbols seekers of carmot: /magic.mse-game/watermarks/seekersofcarmot.png
+ other magic symbols conspiracy stamp: /magic.mse-game/watermarks/conspiracy_stamp.png
+
+ other magic symbols innistrad provinces stensia: /magic.mse-game/watermarks/stensia.png
+ other magic symbols innistrad provinces kessig: /magic.mse-game/watermarks/kessig.png
+ other magic symbols innistrad provinces gavony: /magic.mse-game/watermarks/gavony.png
+ other magic symbols innistrad provinces nephalia: /magic.mse-game/watermarks/nephalia.png
+
+ other magic symbols theros poleis akros: /magic.mse-game/watermarks/akros.png
+ other magic symbols theros poleis meletis: /magic.mse-game/watermarks/meletis.png
+ other magic symbols theros poleis setessa: /magic.mse-game/watermarks/setessa.png
+
+ alara symbols Bant: /magic.mse-game/watermarks/watermark_bant.png
+ alara symbols Esper: /magic.mse-game/watermarks/watermark_esper.png
+ alara symbols Grixis: /magic.mse-game/watermarks/watermark_grixis.png
+ alara symbols Jund: /magic.mse-game/watermarks/watermark_jund.png
+ alara symbols Naya: /magic.mse-game/watermarks/watermark_naya.png
+
+ alara symbols colored Bant: /magic.mse-game/watermarks/watermark_bant_colored.png
+ alara symbols colored Esper: /magic.mse-game/watermarks/watermark_esper_colored.png
+ alara symbols colored Grixis: /magic.mse-game/watermarks/watermark_grixis_colored.png
+ alara symbols colored Jund: /magic.mse-game/watermarks/watermark_jund_colored.png
+ alara symbols colored Naya: /magic.mse-game/watermarks/watermark_naya_colored.png
+
+ college symbols Silverquill: /magic.mse-game/watermarks/watermark_strix_silverquill.png
+ college symbols Prismari: /magic.mse-game/watermarks/watermark_strix_prismari.png
+ college symbols Witherbloom: /magic.mse-game/watermarks/watermark_strix_witherbloom.png
+ college symbols Lorehold: /magic.mse-game/watermarks/watermark_strix_lorehold.png
+ college symbols Quandrix: /magic.mse-game/watermarks/watermark_strix_quandrix.png
+
+ universes beyond D&D: /magic.mse-game/watermarks/d&d.png
+ universes beyond transformers: /magic.mse-game/watermarks/transformers.png
+ universes beyond ponies applejack: /magic.mse-game/watermarks/ponies_apples.png
+ universes beyond ponies pinkie pie: /magic.mse-game/watermarks/ponies_balloons.png
+ universes beyond ponies fluttershy: /magic.mse-game/watermarks/ponies_butterflies.png
+ universes beyond ponies rarity: /magic.mse-game/watermarks/ponies_gems.png
+ universes beyond ponies rainbow dash: /magic.mse-game/watermarks/ponies_rainbow.png
+ universes beyond ponies twilight sparkle: /magic.mse-game/watermarks/ponies_sparkles.png
+ universes beyond ponies nightmare moon: /magic.mse-game/watermarks/ponies_waning_moon.png
+ universes beyond ponies luna: /magic.mse-game/watermarks/ponies_waxing_moon.png
+
+ custom watermark one: script: watermark_blend(face:1, custom_watermark_1())
+ custom watermark two: script: watermark_blend(face:1, custom_watermark_2())
+ custom watermark three: script: watermark_blend(face:1, custom_watermark_3())
+ custom watermark four: script: watermark_blend(face:1, custom_watermark_4())
+ custom watermark five: script: watermark_blend(face:1, custom_watermark_5())
+ custom watermark six: script: watermark_blend(face:1, custom_watermark_6())
+ custom watermark seven: script: watermark_blend(face:1, custom_watermark_7())
+ custom watermark eight: script: watermark_blend(face:1, custom_watermark_8())
+ custom watermark nine: script: watermark_blend(face:1, custom_watermark_9())
+ custom watermark ten: script: watermark_blend(face:1, custom_watermark_10())
+ custom watermark card: script: watermark_blend(face:1, custom_watermark_a())
+
+ set symbol: script: shadow_watermark_blend(symbol_variation(symbol: set.symbol, variation: "watermark"))
\ No newline at end of file
diff --git a/data/magic.mse-game/watermarks/nephalia.png b/data/magic.mse-game/watermarks/nephalia.png
new file mode 100644
index 000000000..4d6ac46b4
Binary files /dev/null and b/data/magic.mse-game/watermarks/nephalia.png differ
diff --git a/data/magic.mse-game/watermarks/none.png b/data/magic.mse-game/watermarks/none.png
new file mode 100644
index 000000000..fbef096a3
Binary files /dev/null and b/data/magic.mse-game/watermarks/none.png differ
diff --git a/data/magic.mse-game/watermarks/phyrexia.png b/data/magic.mse-game/watermarks/phyrexia.png
new file mode 100644
index 000000000..0299dd7f1
Binary files /dev/null and b/data/magic.mse-game/watermarks/phyrexia.png differ
diff --git a/data/magic.mse-game/watermarks/planeswalker.png b/data/magic.mse-game/watermarks/planeswalker.png
new file mode 100644
index 000000000..e2bbab670
Binary files /dev/null and b/data/magic.mse-game/watermarks/planeswalker.png differ
diff --git a/data/magic.mse-game/watermarks/ponies_apples.png b/data/magic.mse-game/watermarks/ponies_apples.png
new file mode 100644
index 000000000..63c429a83
Binary files /dev/null and b/data/magic.mse-game/watermarks/ponies_apples.png differ
diff --git a/data/magic.mse-game/watermarks/ponies_balloons.png b/data/magic.mse-game/watermarks/ponies_balloons.png
new file mode 100644
index 000000000..857176e50
Binary files /dev/null and b/data/magic.mse-game/watermarks/ponies_balloons.png differ
diff --git a/data/magic.mse-game/watermarks/ponies_butterflies.png b/data/magic.mse-game/watermarks/ponies_butterflies.png
new file mode 100644
index 000000000..9958d9e96
Binary files /dev/null and b/data/magic.mse-game/watermarks/ponies_butterflies.png differ
diff --git a/data/magic.mse-game/watermarks/ponies_gems.png b/data/magic.mse-game/watermarks/ponies_gems.png
new file mode 100644
index 000000000..a0607b21e
Binary files /dev/null and b/data/magic.mse-game/watermarks/ponies_gems.png differ
diff --git a/data/magic.mse-game/watermarks/ponies_rainbow.png b/data/magic.mse-game/watermarks/ponies_rainbow.png
new file mode 100644
index 000000000..bba182d16
Binary files /dev/null and b/data/magic.mse-game/watermarks/ponies_rainbow.png differ
diff --git a/data/magic.mse-game/watermarks/ponies_sparkles.png b/data/magic.mse-game/watermarks/ponies_sparkles.png
new file mode 100644
index 000000000..0a2b5d6d8
Binary files /dev/null and b/data/magic.mse-game/watermarks/ponies_sparkles.png differ
diff --git a/data/magic.mse-game/watermarks/ponies_waning_moon.png b/data/magic.mse-game/watermarks/ponies_waning_moon.png
new file mode 100644
index 000000000..9bd7e716b
Binary files /dev/null and b/data/magic.mse-game/watermarks/ponies_waning_moon.png differ
diff --git a/data/magic.mse-game/watermarks/ponies_waxing_moon.png b/data/magic.mse-game/watermarks/ponies_waxing_moon.png
new file mode 100644
index 000000000..fa06ddf84
Binary files /dev/null and b/data/magic.mse-game/watermarks/ponies_waxing_moon.png differ
diff --git a/data/magic.mse-game/watermarks/seekersofcarmot.png b/data/magic.mse-game/watermarks/seekersofcarmot.png
new file mode 100644
index 000000000..f75ff463d
Binary files /dev/null and b/data/magic.mse-game/watermarks/seekersofcarmot.png differ
diff --git a/data/magic.mse-game/watermarks/setessa.png b/data/magic.mse-game/watermarks/setessa.png
new file mode 100644
index 000000000..eb7236c0f
Binary files /dev/null and b/data/magic.mse-game/watermarks/setessa.png differ
diff --git a/data/magic.mse-game/watermarks/shooting_star.png b/data/magic.mse-game/watermarks/shooting_star.png
new file mode 100644
index 000000000..0a5f58c26
Binary files /dev/null and b/data/magic.mse-game/watermarks/shooting_star.png differ
diff --git a/data/magic.mse-game/watermarks/stensia.png b/data/magic.mse-game/watermarks/stensia.png
new file mode 100644
index 000000000..3301769b1
Binary files /dev/null and b/data/magic.mse-game/watermarks/stensia.png differ
diff --git a/data/magic.mse-game/watermarks/thran.png b/data/magic.mse-game/watermarks/thran.png
new file mode 100644
index 000000000..00b873b28
Binary files /dev/null and b/data/magic.mse-game/watermarks/thran.png differ
diff --git a/data/magic.mse-game/watermarks/transformers.png b/data/magic.mse-game/watermarks/transformers.png
new file mode 100644
index 000000000..b3cfdf727
Binary files /dev/null and b/data/magic.mse-game/watermarks/transformers.png differ
diff --git a/data/magic.mse-game/watermarks/unstable_SNEAK.png b/data/magic.mse-game/watermarks/unstable_SNEAK.png
new file mode 100644
index 000000000..f27004908
Binary files /dev/null and b/data/magic.mse-game/watermarks/unstable_SNEAK.png differ
diff --git a/data/magic.mse-game/watermarks/unstable_crossbreed.png b/data/magic.mse-game/watermarks/unstable_crossbreed.png
new file mode 100644
index 000000000..f23fb10be
Binary files /dev/null and b/data/magic.mse-game/watermarks/unstable_crossbreed.png differ
diff --git a/data/magic.mse-game/watermarks/unstable_doom.png b/data/magic.mse-game/watermarks/unstable_doom.png
new file mode 100644
index 000000000..4dc1f8b4b
Binary files /dev/null and b/data/magic.mse-game/watermarks/unstable_doom.png differ
diff --git a/data/magic.mse-game/watermarks/unstable_explosioneers.png b/data/magic.mse-game/watermarks/unstable_explosioneers.png
new file mode 100644
index 000000000..ca4e000a2
Binary files /dev/null and b/data/magic.mse-game/watermarks/unstable_explosioneers.png differ
diff --git a/data/magic.mse-game/watermarks/unstable_widget.png b/data/magic.mse-game/watermarks/unstable_widget.png
new file mode 100644
index 000000000..89ac6f70e
Binary files /dev/null and b/data/magic.mse-game/watermarks/unstable_widget.png differ
diff --git a/data/magic.mse-game/watermarks/watermark-frazier-azorius.png b/data/magic.mse-game/watermarks/watermark-frazier-azorius.png
new file mode 100644
index 000000000..7aa3e4aa3
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark-frazier-azorius.png differ
diff --git a/data/magic.mse-game/watermarks/watermark-frazier-boros.png b/data/magic.mse-game/watermarks/watermark-frazier-boros.png
new file mode 100644
index 000000000..bcbd3bc4b
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark-frazier-boros.png differ
diff --git a/data/magic.mse-game/watermarks/watermark-frazier-dimir.png b/data/magic.mse-game/watermarks/watermark-frazier-dimir.png
new file mode 100644
index 000000000..4d5638872
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark-frazier-dimir.png differ
diff --git a/data/magic.mse-game/watermarks/watermark-frazier-golgari.png b/data/magic.mse-game/watermarks/watermark-frazier-golgari.png
new file mode 100644
index 000000000..a0522bd8f
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark-frazier-golgari.png differ
diff --git a/data/magic.mse-game/watermarks/watermark-frazier-gruul.png b/data/magic.mse-game/watermarks/watermark-frazier-gruul.png
new file mode 100644
index 000000000..3570d98ab
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark-frazier-gruul.png differ
diff --git a/data/magic.mse-game/watermarks/watermark-frazier-izzet.png b/data/magic.mse-game/watermarks/watermark-frazier-izzet.png
new file mode 100644
index 000000000..64d4b1bc6
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark-frazier-izzet.png differ
diff --git a/data/magic.mse-game/watermarks/watermark-frazier-orzhov.png b/data/magic.mse-game/watermarks/watermark-frazier-orzhov.png
new file mode 100644
index 000000000..f79677d7b
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark-frazier-orzhov.png differ
diff --git a/data/magic.mse-game/watermarks/watermark-frazier-rakdos.png b/data/magic.mse-game/watermarks/watermark-frazier-rakdos.png
new file mode 100644
index 000000000..1dcb48e02
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark-frazier-rakdos.png differ
diff --git a/data/magic.mse-game/watermarks/watermark-frazier-selesnya.png b/data/magic.mse-game/watermarks/watermark-frazier-selesnya.png
new file mode 100644
index 000000000..3946c762d
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark-frazier-selesnya.png differ
diff --git a/data/magic.mse-game/watermarks/watermark-frazier-simic.png b/data/magic.mse-game/watermarks/watermark-frazier-simic.png
new file mode 100644
index 000000000..3add3fd85
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark-frazier-simic.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_abzan.png b/data/magic.mse-game/watermarks/watermark_abzan.png
new file mode 100644
index 000000000..a6a81877d
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_abzan.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_atarka.png b/data/magic.mse-game/watermarks/watermark_atarka.png
new file mode 100644
index 000000000..d4f2181b8
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_atarka.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_azorius.png b/data/magic.mse-game/watermarks/watermark_azorius.png
new file mode 100644
index 000000000..e507c0bd1
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_azorius.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_azorius2.png b/data/magic.mse-game/watermarks/watermark_azorius2.png
new file mode 100644
index 000000000..4c88f8c24
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_azorius2.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_b.png b/data/magic.mse-game/watermarks/watermark_b.png
new file mode 100644
index 000000000..89edfc42f
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_b.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_b_big.png b/data/magic.mse-game/watermarks/watermark_b_big.png
new file mode 100644
index 000000000..90f06badd
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_b_big.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_b_old.png b/data/magic.mse-game/watermarks/watermark_b_old.png
new file mode 100644
index 000000000..12eb7c6ab
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_b_old.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_bant.png b/data/magic.mse-game/watermarks/watermark_bant.png
new file mode 100644
index 000000000..572e29ad4
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_bant.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_bant_colored.png b/data/magic.mse-game/watermarks/watermark_bant_colored.png
new file mode 100644
index 000000000..86e42c45b
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_bant_colored.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_bgmana.png b/data/magic.mse-game/watermarks/watermark_bgmana.png
new file mode 100644
index 000000000..6555dd729
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_bgmana.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_bgmana_colored.png b/data/magic.mse-game/watermarks/watermark_bgmana_colored.png
new file mode 100644
index 000000000..0ae2cac63
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_bgmana_colored.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_boros.png b/data/magic.mse-game/watermarks/watermark_boros.png
new file mode 100644
index 000000000..a36f168ee
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_boros.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_boros2.png b/data/magic.mse-game/watermarks/watermark_boros2.png
new file mode 100644
index 000000000..0bbd683cc
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_boros2.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_brmana.png b/data/magic.mse-game/watermarks/watermark_brmana.png
new file mode 100644
index 000000000..d95710630
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_brmana.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_brmana_colored.png b/data/magic.mse-game/watermarks/watermark_brmana_colored.png
new file mode 100644
index 000000000..42720c84d
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_brmana_colored.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_c.png b/data/magic.mse-game/watermarks/watermark_c.png
new file mode 100644
index 000000000..53403fac1
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_c.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_c_big.png b/data/magic.mse-game/watermarks/watermark_c_big.png
new file mode 100644
index 000000000..413643c2d
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_c_big.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_c_old.png b/data/magic.mse-game/watermarks/watermark_c_old.png
new file mode 100644
index 000000000..d053f2961
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_c_old.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_dimir.png b/data/magic.mse-game/watermarks/watermark_dimir.png
new file mode 100644
index 000000000..c1e3b60ff
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_dimir.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_dimir2.png b/data/magic.mse-game/watermarks/watermark_dimir2.png
new file mode 100644
index 000000000..f591369e6
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_dimir2.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_dromoka.png b/data/magic.mse-game/watermarks/watermark_dromoka.png
new file mode 100644
index 000000000..f404d63c4
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_dromoka.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_esper.png b/data/magic.mse-game/watermarks/watermark_esper.png
new file mode 100644
index 000000000..438a003b8
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_esper.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_esper_colored.png b/data/magic.mse-game/watermarks/watermark_esper_colored.png
new file mode 100644
index 000000000..7d57d0026
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_esper_colored.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_g.png b/data/magic.mse-game/watermarks/watermark_g.png
new file mode 100644
index 000000000..03e62c8df
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_g.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_g_big.png b/data/magic.mse-game/watermarks/watermark_g_big.png
new file mode 100644
index 000000000..1d5615f16
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_g_big.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_g_old.png b/data/magic.mse-game/watermarks/watermark_g_old.png
new file mode 100644
index 000000000..17fbda0ce
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_g_old.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_golgari.png b/data/magic.mse-game/watermarks/watermark_golgari.png
new file mode 100644
index 000000000..976e75b2a
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_golgari.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_golgari2.png b/data/magic.mse-game/watermarks/watermark_golgari2.png
new file mode 100644
index 000000000..95b6a014a
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_golgari2.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_grixis.png b/data/magic.mse-game/watermarks/watermark_grixis.png
new file mode 100644
index 000000000..cb144c6b0
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_grixis.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_grixis_colored.png b/data/magic.mse-game/watermarks/watermark_grixis_colored.png
new file mode 100644
index 000000000..b5792e7ea
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_grixis_colored.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_gruul.png b/data/magic.mse-game/watermarks/watermark_gruul.png
new file mode 100644
index 000000000..7b9fb347e
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_gruul.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_gruul2.png b/data/magic.mse-game/watermarks/watermark_gruul2.png
new file mode 100644
index 000000000..ede47398d
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_gruul2.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_gumana.png b/data/magic.mse-game/watermarks/watermark_gumana.png
new file mode 100644
index 000000000..2e48e96f3
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_gumana.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_gumana_colored.png b/data/magic.mse-game/watermarks/watermark_gumana_colored.png
new file mode 100644
index 000000000..243006136
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_gumana_colored.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_gwmana.png b/data/magic.mse-game/watermarks/watermark_gwmana.png
new file mode 100644
index 000000000..73a8f8b64
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_gwmana.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_gwmana_colored.png b/data/magic.mse-game/watermarks/watermark_gwmana_colored.png
new file mode 100644
index 000000000..8cac3cb10
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_gwmana_colored.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_izzet.png b/data/magic.mse-game/watermarks/watermark_izzet.png
new file mode 100644
index 000000000..8fc2d9857
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_izzet.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_izzet2.png b/data/magic.mse-game/watermarks/watermark_izzet2.png
new file mode 100644
index 000000000..24f20d38b
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_izzet2.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_jeskai.png b/data/magic.mse-game/watermarks/watermark_jeskai.png
new file mode 100644
index 000000000..7accd2c14
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_jeskai.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_jund.png b/data/magic.mse-game/watermarks/watermark_jund.png
new file mode 100644
index 000000000..ecf140a97
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_jund.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_jund_colored.png b/data/magic.mse-game/watermarks/watermark_jund_colored.png
new file mode 100644
index 000000000..ccc11dcaf
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_jund_colored.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_kolaghan.png b/data/magic.mse-game/watermarks/watermark_kolaghan.png
new file mode 100644
index 000000000..2ffd5bf02
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_kolaghan.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_mardu.png b/data/magic.mse-game/watermarks/watermark_mardu.png
new file mode 100644
index 000000000..314a340f7
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_mardu.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_mirrodin.png b/data/magic.mse-game/watermarks/watermark_mirrodin.png
new file mode 100644
index 000000000..67ee5c1e4
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_mirrodin.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_naya.png b/data/magic.mse-game/watermarks/watermark_naya.png
new file mode 100644
index 000000000..4abc88bc4
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_naya.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_naya_colored.png b/data/magic.mse-game/watermarks/watermark_naya_colored.png
new file mode 100644
index 000000000..d8f61ecc9
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_naya_colored.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_ojutai.png b/data/magic.mse-game/watermarks/watermark_ojutai.png
new file mode 100644
index 000000000..0c5096a4c
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_ojutai.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_orzhov.png b/data/magic.mse-game/watermarks/watermark_orzhov.png
new file mode 100644
index 000000000..a28a527c6
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_orzhov.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_orzhov2.png b/data/magic.mse-game/watermarks/watermark_orzhov2.png
new file mode 100644
index 000000000..46e4a91ae
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_orzhov2.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_phyrexia.png b/data/magic.mse-game/watermarks/watermark_phyrexia.png
new file mode 100644
index 000000000..87fb6c6d5
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_phyrexia.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_r.png b/data/magic.mse-game/watermarks/watermark_r.png
new file mode 100644
index 000000000..b6f597b56
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_r.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_r_big.png b/data/magic.mse-game/watermarks/watermark_r_big.png
new file mode 100644
index 000000000..1219b637a
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_r_big.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_r_old.png b/data/magic.mse-game/watermarks/watermark_r_old.png
new file mode 100644
index 000000000..eba184908
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_r_old.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_rakados.png b/data/magic.mse-game/watermarks/watermark_rakados.png
new file mode 100644
index 000000000..f6700a7f1
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_rakados.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_rakados2.png b/data/magic.mse-game/watermarks/watermark_rakados2.png
new file mode 100644
index 000000000..67f92f0a9
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_rakados2.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_rgmana.png b/data/magic.mse-game/watermarks/watermark_rgmana.png
new file mode 100644
index 000000000..b5eb78efa
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_rgmana.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_rgmana_colored.png b/data/magic.mse-game/watermarks/watermark_rgmana_colored.png
new file mode 100644
index 000000000..a45ca035f
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_rgmana_colored.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_rwmana.png b/data/magic.mse-game/watermarks/watermark_rwmana.png
new file mode 100644
index 000000000..e92313d05
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_rwmana.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_rwmana_colored.png b/data/magic.mse-game/watermarks/watermark_rwmana_colored.png
new file mode 100644
index 000000000..8f7f8b0ea
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_rwmana_colored.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_s.png b/data/magic.mse-game/watermarks/watermark_s.png
new file mode 100644
index 000000000..eb0aef050
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_s.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_selesnya.png b/data/magic.mse-game/watermarks/watermark_selesnya.png
new file mode 100644
index 000000000..119412c6a
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_selesnya.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_selesnya2.png b/data/magic.mse-game/watermarks/watermark_selesnya2.png
new file mode 100644
index 000000000..4dfd50b59
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_selesnya2.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_silumgar.png b/data/magic.mse-game/watermarks/watermark_silumgar.png
new file mode 100644
index 000000000..2fca3b99a
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_silumgar.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_simic.png b/data/magic.mse-game/watermarks/watermark_simic.png
new file mode 100644
index 000000000..f70603880
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_simic.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_simic2.png b/data/magic.mse-game/watermarks/watermark_simic2.png
new file mode 100644
index 000000000..dad9bba59
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_simic2.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_strix_lorehold.png b/data/magic.mse-game/watermarks/watermark_strix_lorehold.png
new file mode 100644
index 000000000..98a38a4ca
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_strix_lorehold.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_strix_prismari.png b/data/magic.mse-game/watermarks/watermark_strix_prismari.png
new file mode 100644
index 000000000..ed1a6284b
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_strix_prismari.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_strix_quandrix.png b/data/magic.mse-game/watermarks/watermark_strix_quandrix.png
new file mode 100644
index 000000000..f6d3a0687
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_strix_quandrix.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_strix_silverquill.png b/data/magic.mse-game/watermarks/watermark_strix_silverquill.png
new file mode 100644
index 000000000..5b2a418dd
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_strix_silverquill.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_strix_witherbloom.png b/data/magic.mse-game/watermarks/watermark_strix_witherbloom.png
new file mode 100644
index 000000000..cc1bd58cf
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_strix_witherbloom.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_sultai.png b/data/magic.mse-game/watermarks/watermark_sultai.png
new file mode 100644
index 000000000..57c54496a
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_sultai.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_temur.png b/data/magic.mse-game/watermarks/watermark_temur.png
new file mode 100644
index 000000000..1b5f11ee5
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_temur.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_u.png b/data/magic.mse-game/watermarks/watermark_u.png
new file mode 100644
index 000000000..5bb262ebd
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_u.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_u_big.png b/data/magic.mse-game/watermarks/watermark_u_big.png
new file mode 100644
index 000000000..0abc28a40
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_u_big.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_u_old.png b/data/magic.mse-game/watermarks/watermark_u_old.png
new file mode 100644
index 000000000..7db5ec276
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_u_old.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_ubmana.png b/data/magic.mse-game/watermarks/watermark_ubmana.png
new file mode 100644
index 000000000..b8ec5c6ed
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_ubmana.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_ubmana_colored.png b/data/magic.mse-game/watermarks/watermark_ubmana_colored.png
new file mode 100644
index 000000000..87f4495e3
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_ubmana_colored.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_urmana.png b/data/magic.mse-game/watermarks/watermark_urmana.png
new file mode 100644
index 000000000..35e0a7144
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_urmana.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_urmana_colored.png b/data/magic.mse-game/watermarks/watermark_urmana_colored.png
new file mode 100644
index 000000000..a9c533eef
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_urmana_colored.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_w.png b/data/magic.mse-game/watermarks/watermark_w.png
new file mode 100644
index 000000000..3db3fef4d
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_w.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_w_big.png b/data/magic.mse-game/watermarks/watermark_w_big.png
new file mode 100644
index 000000000..eb8c492e2
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_w_big.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_w_old.png b/data/magic.mse-game/watermarks/watermark_w_old.png
new file mode 100644
index 000000000..eb731e32a
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_w_old.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_wbmana.png b/data/magic.mse-game/watermarks/watermark_wbmana.png
new file mode 100644
index 000000000..fb4d129eb
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_wbmana.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_wbmana_colored.png b/data/magic.mse-game/watermarks/watermark_wbmana_colored.png
new file mode 100644
index 000000000..14b84b935
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_wbmana_colored.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_wumana.png b/data/magic.mse-game/watermarks/watermark_wumana.png
new file mode 100644
index 000000000..b796cf975
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_wumana.png differ
diff --git a/data/magic.mse-game/watermarks/watermark_wumana_colored.png b/data/magic.mse-game/watermarks/watermark_wumana_colored.png
new file mode 100644
index 000000000..efa2193ef
Binary files /dev/null and b/data/magic.mse-game/watermarks/watermark_wumana_colored.png differ
diff --git a/magicseteditor 213.exe b/magicseteditor 213.exe
new file mode 100644
index 000000000..458e41bfd
Binary files /dev/null and b/magicseteditor 213.exe differ