diff --git a/Magic - Fonts/template specific fonts/Magic - Playtest/MyriadPro-Bold-Italic.ttf b/Magic - Fonts/template specific fonts/Magic - Playtest/MyriadPro-Bold-Italic.ttf
new file mode 100644
index 0000000000..74db5cda8a
Binary files /dev/null and b/Magic - Fonts/template specific fonts/Magic - Playtest/MyriadPro-Bold-Italic.ttf differ
diff --git a/Magic - Fonts/template specific fonts/Magic - Playtest/MyriadPro-Bold.ttf b/Magic - Fonts/template specific fonts/Magic - Playtest/MyriadPro-Bold.ttf
new file mode 100644
index 0000000000..b00b0cd922
Binary files /dev/null and b/Magic - Fonts/template specific fonts/Magic - Playtest/MyriadPro-Bold.ttf differ
diff --git a/Magic - Fonts/template specific fonts/Magic - Playtest/MyriadPro-CondIt.OTF b/Magic - Fonts/template specific fonts/Magic - Playtest/MyriadPro-CondIt.OTF
new file mode 100644
index 0000000000..d537b000be
Binary files /dev/null and b/Magic - Fonts/template specific fonts/Magic - Playtest/MyriadPro-CondIt.OTF differ
diff --git a/Magic - Fonts/template specific fonts/Magic - Playtest/MyriadPro-Regular.ttf b/Magic - Fonts/template specific fonts/Magic - Playtest/MyriadPro-Regular.ttf
new file mode 100644
index 0000000000..bcf2901fe8
Binary files /dev/null and b/Magic - Fonts/template specific fonts/Magic - Playtest/MyriadPro-Regular.ttf differ
diff --git a/Magic - Fonts/template specific fonts/Magic - Playtest/times.ttf b/Magic - Fonts/template specific fonts/Magic - Playtest/Times New Roman.ttf
similarity index 100%
rename from Magic - Fonts/template specific fonts/Magic - Playtest/times.ttf
rename to Magic - Fonts/template specific fonts/Magic - Playtest/Times New Roman.ttf
diff --git a/data/magic-m15-ixalan-full-art-basics.mse-style/style b/data/magic-m15-ixalan-full-art-basics.mse-style/style
index 415b2370e6..f12668a1ae 100644
--- a/data/magic-m15-ixalan-full-art-basics.mse-style/style
+++ b/data/magic-m15-ixalan-full-art-basics.mse-style/style
@@ -158,7 +158,8 @@ init script:
t1 := land_type_1()
t2 := land_type_2()
t3 := if t1 == "none" then t2 else t1
- if t1 != "none" and t2 != "none" then linear_blend(
+ if t1 == "none" and t2 == "none" then ""
+ else if t1 != "none" and t2 != "none" then linear_blend(
image1: "symbol/" + type_to_letter_map[t1] + ".png",
image2: "symbol/" + type_to_letter_map[t2] + ".png",
x1: 0.49, y1: 0,
@@ -375,7 +376,7 @@ extra card style:
width: 211
height: 24
z index: 3000
- visible: { not two_types() and not styling.hide_basic_land_text }
+ visible: { land_type_1() != "none" and not two_types() and not styling.hide_basic_land_text }
render style: image
image: { "basic_land/" + type_to_letter_map[land_type_1()] + ".png" }
foil layer:
diff --git a/data/magic-m15-showcase-japan.mse-style/border_border_mask.png b/data/magic-m15-showcase-japan.mse-style/border_border_mask.png
new file mode 100644
index 0000000000..cbd550a6c9
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/border_border_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/border_borderless_mask.png b/data/magic-m15-showcase-japan.mse-style/border_borderless_mask.png
new file mode 100644
index 0000000000..e62aa7c00c
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/border_borderless_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/border_card_mask.png b/data/magic-m15-showcase-japan.mse-style/border_card_mask.png
new file mode 100644
index 0000000000..3a367d9b38
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/border_card_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/border_crown_mask.png b/data/magic-m15-showcase-japan.mse-style/border_crown_mask.png
new file mode 100644
index 0000000000..97d6ca4418
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/border_crown_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/border_nonpt_mask.png b/data/magic-m15-showcase-japan.mse-style/border_nonpt_mask.png
new file mode 100644
index 0000000000..23f849b6ff
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/border_nonpt_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/border_nonstamp_mask.png b/data/magic-m15-showcase-japan.mse-style/border_nonstamp_mask.png
new file mode 100644
index 0000000000..5a6e0ef633
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/border_nonstamp_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/border_pt_background_mask.png b/data/magic-m15-showcase-japan.mse-style/border_pt_background_mask.png
new file mode 100644
index 0000000000..a0df88a860
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/border_pt_background_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/border_pt_mask.png b/data/magic-m15-showcase-japan.mse-style/border_pt_mask.png
new file mode 100644
index 0000000000..eb670ef150
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/border_pt_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/border_stamp_background_mask.png b/data/magic-m15-showcase-japan.mse-style/border_stamp_background_mask.png
new file mode 100644
index 0000000000..2bd5271d56
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/border_stamp_background_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/border_stamp_mask.png b/data/magic-m15-showcase-japan.mse-style/border_stamp_mask.png
new file mode 100644
index 0000000000..b43c2d0581
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/border_stamp_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/border_stamptriangle_background_mask.png b/data/magic-m15-showcase-japan.mse-style/border_stamptriangle_background_mask.png
new file mode 100644
index 0000000000..2493278061
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/border_stamptriangle_background_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/border_stamptriangle_mask.png b/data/magic-m15-showcase-japan.mse-style/border_stamptriangle_mask.png
new file mode 100644
index 0000000000..630a3d5e1b
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/border_stamptriangle_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/border_typeline_mask.png b/data/magic-m15-showcase-japan.mse-style/border_typeline_mask.png
new file mode 100644
index 0000000000..ac228a666b
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/border_typeline_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/card.png b/data/magic-m15-showcase-japan.mse-style/card.png
new file mode 100644
index 0000000000..e0e3de17a7
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/card.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/card_mask.png b/data/magic-m15-showcase-japan.mse-style/card_mask.png
new file mode 100644
index 0000000000..fcd2938652
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/card_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/card_sample.png b/data/magic-m15-showcase-japan.mse-style/card_sample.png
new file mode 100644
index 0000000000..fd483cd5ab
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/card_sample.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/crown.png b/data/magic-m15-showcase-japan.mse-style/crown.png
new file mode 100644
index 0000000000..aba717a865
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/crown.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/image_mask.png b/data/magic-m15-showcase-japan.mse-style/image_mask.png
new file mode 100644
index 0000000000..16a67521e9
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/image_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/image_typeline_mask.png b/data/magic-m15-showcase-japan.mse-style/image_typeline_mask.png
new file mode 100644
index 0000000000..141a1eb742
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/image_typeline_mask.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/nonpt.png b/data/magic-m15-showcase-japan.mse-style/nonpt.png
new file mode 100644
index 0000000000..9f481e54e2
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/nonpt.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/nonstamp.png b/data/magic-m15-showcase-japan.mse-style/nonstamp.png
new file mode 100644
index 0000000000..3994207781
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/nonstamp.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/pt.png b/data/magic-m15-showcase-japan.mse-style/pt.png
new file mode 100644
index 0000000000..5e7245d8d4
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/pt.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/stamp.png b/data/magic-m15-showcase-japan.mse-style/stamp.png
new file mode 100644
index 0000000000..10005c9436
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/stamp.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/stamptriangle.png b/data/magic-m15-showcase-japan.mse-style/stamptriangle.png
new file mode 100644
index 0000000000..8437ef9080
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/stamptriangle.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/style b/data/magic-m15-showcase-japan.mse-style/style
new file mode 100644
index 0000000000..ff9f7ebf18
--- /dev/null
+++ b/data/magic-m15-showcase-japan.mse-style/style
@@ -0,0 +1,578 @@
+mse version: 2.6.0
+game: magic
+short name: Japan
+full name: Japan Showcase
+icon: card_sample.png
+position hint: 014000
+installer group: magic/M15 Frames/Booster Fun/Japan
+
+
+version: 2024-05-20
+depends on:
+ package: magic.mse-game
+ version: 2014-06-25
+depends on:
+ package: magic-mana-large.mse-symbol-font
+ version: 2007-09-23
+depends on:
+ package: magic-mana-small.mse-symbol-font
+ version: 2007-09-23
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+depends on:
+ package: magic-mainframe-extras.mse-include
+ version: 2007-09-23
+
+card width: 744
+card height: 1039
+card dpi: 297.6
+
+### blanks by GenevensiS
+### code by GenevensiS
+
+############################################################## Extra scripts
+
+init script:
+ swap_fonts_pt_default :=
+ [
+ name: {"Beleren Bold"},
+ size: {30.0},
+ color: {"white"},
+ vertical: {0},
+ italic: {"Beleren Bold"}
+ ]
+
+ swap_fonts_body_default :=
+ [
+ name: {"MPlantin"},
+ size: {23.0},
+ color: {"white"},
+ vertical: {0},
+ italic: {"MPlantin-Italic"}
+ ]
+
+ typeline_offset_top_1 := { 50 }
+ typeline_offset_left_1 := { 1 }
+ typeline_offset_width_1 := { -2 }
+ indicator_offset_top_1 := { -1 }
+ rarity_offset_left_1 := { -2 }
+ typeline_character_limit := 36
+ swap_fonts_type_default :=
+ [
+ name: {"Beleren Bold"},
+ size: { 25.0 - max(0, (length(to_text(card.type)) - typeline_character_limit) / 3) },
+ color: {"white"},
+ vertical: {0},
+ italic: {""}
+ ]
+
+ alias_offset_top_1 := { 1 }
+ alias_offset_left_1 := { -16 }
+ alias_offset_height_1 := { -4 }
+ alias_offset_width_1 := { -6 }
+ transform_symbol_disabled_1 := { true }
+ swap_fonts_name_default :=
+ [
+ name: {"Beleren Bold"},
+ size: {29.0},
+ color: {"white"},
+ vertical: {0},
+ italic: {""}
+ ]
+
+ invert_watermark_1 := { true }
+
+ template_prefix :=
+ [
+ identity: "/magic-modules.mse-include/indicators/",
+ identity2: "/magic-modules.mse-include/indicators/",
+ ]
+ template_suffix :=
+ [
+ identity: "identity.png",
+ identity2: "identity.png",
+ ]
+
+ color_name_map :=
+ [
+ w: "white",
+ u: "blue",
+ b: "black",
+ r: "red",
+ g: "green",
+ c: "colorless",
+ a: "artifact"
+ m: "gold"
+ ]
+
+ normal_template := { template_prefix[type] + input + template_suffix[type] }
+ normal_land_template := { template_prefix[type] + (if input == "a" then "c" else input) + template_suffix[type] }
+
+ template := { if contains(type, match: "identity") then normal_template() else complete_card_image(input) }
+ land_template := { if contains(type, match: "identity") then normal_land_template() else complete_card_image(input) }
+
+ card_background := { color_background(input: card.card_color, type: "card", base_hybrid: card_hybrid, multicolor_blend: "white", hybrid_blend: "white", artifact_blend: "white") }
+
+ is_promo := { styling.promo }
+
+ is_unsorted := { styling.remove_from_autocount }
+
+ is_crowned := { styling.legend_crown == "yes" or (styling.legend_crown == "if legendary" and lang_setting("is_legendary")(card.super_type)) }
+
+ chop_top := { split := split_comma(styling.chop_text_box); if length(split) > 0 and split.0 != "" then clamp(split.0, maximum: 1500, minimum: -1500) else 0 }
+ chop_bot := { split := split_comma(styling.chop_text_box); if length(split) > 1 and split.1 != "" then clamp(split.1, maximum: 1500, minimum: -1500) else 0 }
+
+ popout_left := { split := split_comma(styling.popout_image_coordinates); if length(split) > 3 and split.0 != "" then clamp(split.0, maximum: 1500, minimum: -500) else 0 }
+ popout_top := { split := split_comma(styling.popout_image_coordinates); if length(split) > 3 and split.1 != "" then clamp(split.1, maximum: 2000, minimum: -500) else 0 }
+ popout_width := { split := split_comma(styling.popout_image_coordinates); if length(split) > 3 and split.2 != "" then clamp(split.2, maximum: 1500, minimum: 0) else 0 }
+ popout_height := { split := split_comma(styling.popout_image_coordinates); if length(split) > 3 and split.3 != "" then clamp(split.3, maximum: 2000, minimum: 0) else 0 }
+
+ art_left := { if styling.border == "yes" and not styling.stretch_image_to_whole_card then 28 else 0 }
+ art_top := { if styling.border == "yes" and not styling.stretch_image_to_whole_card then 29 else 0 }
+ art_width := { if styling.border == "yes" and not styling.stretch_image_to_whole_card then 688 else stylesheet.card_width }
+ art_bottom := { if styling.stretch_image_to_whole_card or styling.border == "no" or styling.border == "fade" then stylesheet.card_height else 958 }
+
+ 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"
+ then "middle center"
+ else "middle left"
+ }
+
+ move_typeline :=
+ {
+ to_number_lax(styling.move_typeline)
+ }
+
+ card_mask :=
+ {
+ type_mask := crop("typeline_mask.png", offset_x: 0, offset_y: 400-move_typeline(), width: 744, height: 1039)
+ combine_blend(image1: "card_mask.png", image2: type_mask, combine: "add")
+ }
+
+ art_mask :=
+ {
+ type_mask := crop("image_typeline_mask.png", offset_x: 0, offset_y: 400-move_typeline(), width: 744, height: 1039)
+ crop(combine_blend(image1: "image_mask.png", image2: type_mask, combine: "subtract"), offset_x: art_left(), offset_y: art_top(), width: art_width(), height: art_bottom() - art_top())
+ }
+
+ card_border_mask :=
+ {
+ base_mask := if is_crowned() then "border_crown_mask.png" else "border_card_mask.png"
+ type_mask := crop("border_typeline_mask.png", offset_x: 0, offset_y: 400-move_typeline(), width: 744, height: 1039)
+ stamp_mask := if not is_stamped() then "border_nonstamp_mask.png" else if stamp_shape() == "triangle" then "border_stamptriangle_mask.png" else "border_stamp_mask.png"
+ stamp_back_mask := if stamp_shape() == "triangle" then "border_stamptriangle_background_mask.png" else "border_stamp_background_mask.png"
+ pt_mask := if card.pt != "" then "border_pt_mask.png" else "border_nonpt_mask.png"
+ pt_back_mask := "border_pt_background_mask.png"
+ crown_mask := "border_crown_mask.png"
+
+ result := combine_blend(image1: base_mask, image2: stamp_mask, combine: "add")
+ result := combine_blend(image1: result, image2: type_mask, combine: "add")
+ result := combine_blend(image1: result, image2: pt_mask, combine: "add")
+ if is_stamped() and styling.border != "no" then result := combine_blend(image1: result, image2: stamp_back_mask, combine: "add")
+ if card.pt != "" and styling.border != "no" then result := combine_blend(image1: result, image2: pt_back_mask, combine: "add")
+ result
+ }
+
+ complete_card_image :=
+ {
+ base_mask := if is_crowned() then "crown.png" else "card.png"
+ type_mask := crop("typeline.png", offset_x: 0, offset_y: 400-move_typeline(), width: 744, height: 1039)
+ stamp_mask := if not is_stamped() then "nonstamp.png" else if stamp_shape() == "triangle" then "stamptriangle.png" else "stamp.png"
+ pt_mask := if card.pt != "" then "pt.png" else "nonpt.png"
+
+ result := insert_image(base_image: base_mask, inserted_image: stamp_mask, offset_x: 0, offset_y: 0)
+ result := insert_image(base_image: result, inserted_image: type_mask, offset_x: 0, offset_y: 0)
+ result := insert_image(base_image: result, inserted_image: pt_mask, offset_x: 0, offset_y: 0)
+ recolor_image(result, color: styling[color_name_map[input] + "_color"])
+ }
+
+############################################################## Extra style options
+
+styling field:
+ type: text
+ name: popout image coordinates
+ description: The coordinates for the popout image field, formatted as "left,top,width,height". Used to make the illustration jump in front of the frame.
+styling field:
+ type: boolean
+ name: stretch image to whole card
+ description: Make the image span the whole card instead of just the visible part. Use this to help make popout effects.
+ initial: no
+
+styling field:
+ type: color
+ name: white color
+ description: Use the specified color for white cards.
+ choice:
+ name: canon
+ color: rgb(241,242,236)
+ initial: rgb(241,242,236)
+styling field:
+ type: color
+ name: blue color
+ description: Use the specified color for blue cards.
+ choice:
+ name: canon
+ color: rgb(2,119,177)
+ initial: rgb(2,119,177)
+styling field:
+ type: color
+ name: black color
+ description: Use the specified color for black cards.
+ choice:
+ name: canon
+ color: rgb(57,54,48)
+ initial: rgb(57,54,48)
+styling field:
+ type: color
+ name: red color
+ description: Use the specified color for red cards.
+ choice:
+ name: canon
+ color: rgb(230,77,52)
+ initial: rgb(230,77,52)
+styling field:
+ type: color
+ name: green color
+ description: Use the specified color for green cards.
+ choice:
+ name: canon
+ color: rgb(14,116,70)
+ initial: rgb(14,116,70)
+styling field:
+ type: color
+ name: gold color
+ description: Use the specified color for gold cards.
+ choice:
+ name: canon
+ color: rgb(219,209,84)
+ initial: rgb(219,209,84)
+styling field:
+ type: color
+ name: artifact color
+ description: Use the specified color for artifact cards.
+ choice:
+ name: canon
+ color: rgb(90,140,160)
+ initial: rgb(90,140,160)
+styling field:
+ type: color
+ name: colorless color
+ description: Use the specified color for colorless cards.
+ choice:
+ name: canon
+ color: rgb(153,138,125)
+ initial: rgb(153,138,125)
+styling field:
+ type: slider
+ name: move typeline
+ description: Move the typeline up or down
+ minimum: -400
+ maximum: 210
+ initial: 0
+
+include file: /magic-modules.mse-include/texts/styling_fields
+
+styling field:
+ type: choice
+ name: legend crown
+ description: Use the legend crown?
+ choice: yes
+ choice: if legendary
+ choice: no
+ initial: if legendary
+
+include file: /magic-modules.mse-include/rarities/styling_fields
+
+include file: /magic-modules.mse-include/indicators/styling_fields
+
+include file: /magic-modules.mse-include/watermarks/styling_fields
+
+styling field:
+ type: package choice
+ name: overlay
+ description: Should there be an overlay applied, such as foil?
+ match: magic-overlay-*.mse-include
+ required: false
+styling field:
+ type: choice
+ name: border
+ description: Use a border?
+ choice: yes
+ choice: only copyright
+ choice: no
+ initial: yes
+
+include file: /magic-modules.mse-include/information/styling_fields
+
+styling field:
+ type: package choice
+ name: casting cost mana symbols
+ description: Mana symbols used for casting cost, name, banner, fuse and transformation reminder.
+ match: magic-mana-*.mse-symbol-font
+ initial: magic-mana-small.mse-symbol-font
+styling field:
+ type: package choice
+ name: text box mana symbols
+ description: Mana symbols used inside rule text.
+ match: magic-mana-*.mse-symbol-font
+ initial: magic-mana-small.mse-symbol-font
+styling field:
+ type: boolean
+ name: use ancestral mana symbols
+ description: Enables ancestral's modified generic mana.
+ initial: no
+styling field:
+ type: boolean
+ name: use guild mana symbols
+ description: Use the Ravnica guild symbols instead of the official half/half circles for hybrid mana.
+ initial: no
+styling field:
+ type: choice
+ name: tap symbol
+ description: What tap and untap symbols should be used on cards?
+ choice: modern
+ choice: old
+ choice: diagonal T
+ initial: modern
+styling style:
+ use ancestral mana symbols:
+ choice images:
+ yes: /magic-modules.mse-include/symbol-fonts/generic_ancestral.png
+ no: /magic-modules.mse-include/symbol-fonts/generic_normal.png
+ use guild mana symbols:
+ choice images:
+ yes: /magic-modules.mse-include/symbol-fonts/hybrid_guild.png
+ no: /magic-modules.mse-include/symbol-fonts/hybrid_normal.png
+ tap symbol:
+ render style: both
+ choice images:
+ modern: /magic-modules.mse-include/symbol-fonts/tap_new.png
+ old: /magic-modules.mse-include/symbol-fonts/tap_old.png
+ diagonal T: /magic-modules.mse-include/symbol-fonts/tap_older.png
+
+include file: /magic-modules.mse-include/fonts/styling_fields
+
+############################################################## Card fields
+
+include file: /magic-modules.mse-include/information/card_fields
+
+include file: /magic-modules.mse-include/stamps/card_fields
+
+include file: /magic-modules.mse-include/corners/card_fields
+
+include file: /magic-modules.mse-include/watermarks/card_fields
+
+card style:
+ ############################# Background stuff
+ 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() }
+ stroke color: rgba(0,0,0,255)
+ stroke radius: 2.5
+ stroke blur: 0.55
+ z index: 900
+ alias:
+ left: { alias_left_1() }
+ top: { alias_top_1() + alias_offset_text(face:1) + alias_offset_text_top_1() }
+ width: { alias_width_1() }
+ height: { alias_height_1() }
+ angle: { alias_angle_1() }
+ alignment: middle left shrink-overflow
+ z index: 900
+ font:
+ name: MPlantin-Italic
+ size: { alias_font_size(face:1) + 1 }
+ style: bold
+ weight: bold
+ color: white
+ stroke color: rgba(0,0,0,255)
+ stroke radius: 2.5
+ stroke blur: 0.55
+ casting cost:
+ right: { casting_cost_right_1() + casting_cost_transform_symbol_shift_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: { casting_cost_font() }
+ italic name: { casting_cost_font_italic() }
+ size: { casting_cost_font_size() }
+ color: { casting_cost_font_color() }
+ stroke color: rgba(0,0,0,255)
+ stroke radius: 2.5
+ stroke blur: 0.55
+ symbol font:
+ name: { styling.casting_cost_mana_symbols or else "magic-mana-large" }
+ size: { casting_cost_font_size() }
+ stroke color: rgba(0,0,0,255)
+ stroke radius: 2.5
+ stroke blur: 0.55
+ z index: 920
+ ############################# Background stuff
+ border color:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 200
+ visible: { styling.border != "no" }
+ mask: { if styling.border == "yes" then "border_border_mask.png" else "border_borderless_mask.png" }
+ card color:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 210
+ popup style: in place
+ render style: image
+ image: { card_background() }
+ mask: { card_mask() }
+ ############################# Image
+ image:
+ left: { art_left() }
+ top: { art_top() }
+ width: { art_width() }
+ bottom: { art_bottom() }
+ z index: 100
+ mask: { art_mask() }
+ mainframe image:
+ left: { popout_left() }
+ top: { popout_top() }
+ width: { popout_width() }
+ height: { popout_height() }
+ z index: 1010
+ ############################# Typeline
+ 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() + move_typeline() }
+ 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() }
+ stroke color: rgba(0,0,0,255)
+ stroke radius: 2.5
+ stroke blur: 0.55
+ separator color: red
+ rarity:
+ right: { rarity_right_1() + typeline_offset_left_1() + typeline_offset_width_1() }
+ top: { rarity_top_1() + typeline_offset_top_1() + move_typeline() }
+ 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
+ indicator:
+ left: { indicator_left_1() + typeline_offset_left_1() }
+ top: { indicator_top_1() + typeline_offset_top_1() + move_typeline() }
+ 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: { module_identity(card.indicator) }
+ ############################# Text box
+ text:
+ left: 65
+ top: { 702 + chop_top() + (if is_stamped() then 4 else 0) + body_font_vertical() + move_typeline() }
+ right: 679
+ bottom: { 952 - chop_bot() - if is_stamped() then 8 else 0 }
+ z index: 900
+ line height hard: { if is_modal(card.rule_text) then 0.9 else 1.2 }
+ line height line: 1.5
+ line height soft: 0.9
+ line height hard max: { if is_modal(card.rule_text) then 1.0 else 1.3 }
+ line height line max: 1.6
+ alignment: { alignment_script() }
+ font:
+ name: { body_font() }
+ italic name: { body_font_italic() }
+ size: { body_font_size() }
+ scale down to: 7
+ color: { body_font_color() }
+ stroke color: rgba(0,0,0,255)
+ stroke radius: 2.5
+ stroke blur: 0.55
+ symbol font:
+ name: { styling.text_box_mana_symbols }
+ size: { body_font_size() }
+ scale down to: 7
+ stroke color: rgba(0,0,0,255)
+ stroke radius: 2.5
+ stroke blur: 0.55
+ ############################# PT
+ pt:
+ left: 596
+ top: { 932 + pt_font_vertical() }
+ width: 92
+ height: 45
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { pt_font() }
+ size: { pt_font_size() }
+ color: { pt_font_color() }
+ stroke color: { if styling.border == "no" then rgba(0,0,0,255) else rgba(0,0,0,0) }
+ stroke radius: 2.5
+ stroke blur: 0.55
+ separator color: red
+
+############################################################## Extra card fields
+
+extra card field:
+ type: color
+ name: card border
+ editable: false
+ save value: false
+ show statistics: false
+ script: card.border_color
+extra card field:
+ type: choice
+ name: foil layer
+ editable: false
+ save value: false
+ show statistics: false
+ choice: foil layer
+
+extra card style:
+ card border:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 220
+ mask: { card_border_mask() }
+ foil layer:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 1050
+ visible: { styling.overlay != "none" and styling.overlay != "" }
+ render style: image
+ image: { if styling.overlay == "" then "" else styling.overlay + "/overlay.png" }
diff --git a/data/magic-m15-showcase-japan.mse-style/typeline.png b/data/magic-m15-showcase-japan.mse-style/typeline.png
new file mode 100644
index 0000000000..70ea221b5a
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/typeline.png differ
diff --git a/data/magic-m15-showcase-japan.mse-style/typeline_mask.png b/data/magic-m15-showcase-japan.mse-style/typeline_mask.png
new file mode 100644
index 0000000000..85a1ee040c
Binary files /dev/null and b/data/magic-m15-showcase-japan.mse-style/typeline_mask.png differ
diff --git a/data/magic-m15-showcase-tarkir-dragon-wing.mse-style/style b/data/magic-m15-showcase-tarkir-dragon-wing.mse-style/style
index ebaec6dd34..6bd7452546 100644
--- a/data/magic-m15-showcase-tarkir-dragon-wing.mse-style/style
+++ b/data/magic-m15-showcase-tarkir-dragon-wing.mse-style/style
@@ -82,7 +82,7 @@ init script:
och := card_hybrid_2
card_hybrid_2 :=
{
- if mode != "mask" then och
+ if mode != "mask" then och()
else masked_blend(mask: "special_blend_card.png", dark: template(colors.0), light: template(colors.1))
}
horizontal_card_hybrid :=
diff --git a/data/magic-mana-none.mse-symbol-font/symbol-font b/data/magic-mana-none.mse-symbol-font/symbol-font
new file mode 100644
index 0000000000..74029697c2
--- /dev/null
+++ b/data/magic-mana-none.mse-symbol-font/symbol-font
@@ -0,0 +1,8 @@
+mse version: 2.6.0
+version: 2026-04-22
+short name: None
+installer group: magic/Mana Symbols/None
+position hint: -10000
+
+image font size: 135
+horizontal space: 2
diff --git a/data/magic-playtest.mse-style/border_card.png b/data/magic-playtest.mse-style/border_card.png
new file mode 100644
index 0000000000..367bc601c6
Binary files /dev/null and b/data/magic-playtest.mse-style/border_card.png differ
diff --git a/data/magic-playtest.mse-style/border_pt.png b/data/magic-playtest.mse-style/border_pt.png
new file mode 100644
index 0000000000..76920d4c33
Binary files /dev/null and b/data/magic-playtest.mse-style/border_pt.png differ
diff --git a/data/magic-playtest.mse-style/border_type.png b/data/magic-playtest.mse-style/border_type.png
new file mode 100644
index 0000000000..64a04bb1c6
Binary files /dev/null and b/data/magic-playtest.mse-style/border_type.png differ
diff --git a/data/magic-playtest.mse-style/build.bat b/data/magic-playtest.mse-style/build.bat
deleted file mode 100644
index e2da2a56c6..0000000000
--- a/data/magic-playtest.mse-style/build.bat
+++ /dev/null
@@ -1,7 +0,0 @@
-cd ..
-
-cd ..
-
-mse --create-installer magic-playtest.mse-style magic.mse-game magic-blends.mse-include
-
-ren "magic-playtest.mse-installer" "Magic - Playtest.mse-installer"
\ No newline at end of file
diff --git a/data/magic-playtest.mse-style/card-sample.png b/data/magic-playtest.mse-style/card-sample.png
deleted file mode 100644
index 675d3ef9f4..0000000000
Binary files a/data/magic-playtest.mse-style/card-sample.png and /dev/null differ
diff --git a/data/magic-playtest.mse-style/card.png b/data/magic-playtest.mse-style/card.png
index 77f4bf8055..e246d7e66b 100644
Binary files a/data/magic-playtest.mse-style/card.png and b/data/magic-playtest.mse-style/card.png differ
diff --git a/data/magic-playtest.mse-style/card2.png b/data/magic-playtest.mse-style/card2.png
deleted file mode 100644
index c9f3e91d09..0000000000
Binary files a/data/magic-playtest.mse-style/card2.png and /dev/null differ
diff --git a/data/magic-playtest.mse-style/card_sample.png b/data/magic-playtest.mse-style/card_sample.png
new file mode 100644
index 0000000000..99f1736530
Binary files /dev/null and b/data/magic-playtest.mse-style/card_sample.png differ
diff --git a/data/magic-playtest.mse-style/confidential.png b/data/magic-playtest.mse-style/confidential.png
new file mode 100644
index 0000000000..840e855d27
Binary files /dev/null and b/data/magic-playtest.mse-style/confidential.png differ
diff --git a/data/magic-playtest.mse-style/fonts/MyriadPro-Bold-Italic.ttf b/data/magic-playtest.mse-style/fonts/MyriadPro-Bold-Italic.ttf
new file mode 100644
index 0000000000..74db5cda8a
Binary files /dev/null and b/data/magic-playtest.mse-style/fonts/MyriadPro-Bold-Italic.ttf differ
diff --git a/data/magic-playtest.mse-style/fonts/MyriadPro-Bold.ttf b/data/magic-playtest.mse-style/fonts/MyriadPro-Bold.ttf
new file mode 100644
index 0000000000..b00b0cd922
Binary files /dev/null and b/data/magic-playtest.mse-style/fonts/MyriadPro-Bold.ttf differ
diff --git a/data/magic-playtest.mse-style/fonts/MyriadPro-CondIt.OTF b/data/magic-playtest.mse-style/fonts/MyriadPro-CondIt.OTF
new file mode 100644
index 0000000000..d537b000be
Binary files /dev/null and b/data/magic-playtest.mse-style/fonts/MyriadPro-CondIt.OTF differ
diff --git a/data/magic-playtest.mse-style/fonts/MyriadPro-Regular.ttf b/data/magic-playtest.mse-style/fonts/MyriadPro-Regular.ttf
new file mode 100644
index 0000000000..bcf2901fe8
Binary files /dev/null and b/data/magic-playtest.mse-style/fonts/MyriadPro-Regular.ttf differ
diff --git a/data/magic-playtest.mse-style/fonts/Times New Roman.ttf b/data/magic-playtest.mse-style/fonts/Times New Roman.ttf
new file mode 100644
index 0000000000..eaf5e11645
Binary files /dev/null and b/data/magic-playtest.mse-style/fonts/Times New Roman.ttf differ
diff --git a/data/magic-playtest.mse-style/pt.png b/data/magic-playtest.mse-style/pt.png
new file mode 100644
index 0000000000..1f6ba7d1fc
Binary files /dev/null and b/data/magic-playtest.mse-style/pt.png differ
diff --git a/data/magic-playtest.mse-style/style b/data/magic-playtest.mse-style/style
index 4ca3133f7e..2150f69ea5 100644
--- a/data/magic-playtest.mse-style/style
+++ b/data/magic-playtest.mse-style/style
@@ -1,25 +1,156 @@
-mse version: 2.0.0
-game: magic
-short name: Playtest
-full name: Playtest Card
-installer group: magic/playtest style
-icon: card-sample.png
-position hint: 999
+mse version: 2.6.0
+game: magic
+short name: Playtest Main
+full name: Proxy Card
+icon: card_sample.png
+position hint: 032000
+installer group: magic/M15 Frames/Uncommon/Playtest Main
-version: 2018-02-22
+
+version: 2026-04-22
+depends on:
+ package: magic.mse-game
+ version: 2007-12-29
depends on:
- package: magic.mse-game
- version: 2007-12-29
+ package: magic-modules.mse-include
+ version: 2024-05-20
-card background: white
-card width: 338
-card height: 497
-card dpi: 138
+card background: white
+card width: 650
+card height: 986
+card dpi: 300
############################################################## Extra scripts
init script:
+ swap_fonts_pt_default :=
+ [
+ name: {"MyriadPro-Bold"},
+ size: {30.0},
+ color: {"black"},
+ vertical: {0},
+ italic: {"MyriadPro-Bold-Italic"}
+ ]
+
+ swap_fonts_body_default :=
+ [
+ name: {"MyriadPro-Regular"},
+ size: {26.0},
+ color: {"black"},
+ vertical: {0},
+ italic: {"MyriadPro-CondIt"}
+ ]
+
+ typeline_offset_top_1 := { -83 }
+ typeline_offset_left_1 := { -8 }
+ typeline_offset_width_1 := { 16 }
+ indicator_offset_top_1 := { -1 }
+ rarity_offset_left_1 := { -2 }
+ typeline_character_limit := 30
+ swap_fonts_type_default :=
+ [
+ name: {"MyriadPro-Regular"},
+ size: { 28.0 - max(0, (length(to_text(card.type)) - typeline_character_limit) / 3) },
+ color: {"black"},
+ vertical: {0},
+ italic: {"MyriadPro-CondIt"}
+ ]
+
+ nameline_offset_top_1 := { -7 }
+ nameline_offset_left_1 := { -9 }
+ nameline_offset_height_1 := { 2 }
+ nameline_offset_width_1 := { 12 }
+ casting_cost_offset_top_1 := { 2 }
+ transform_symbol_disabled_1 := { true }
+ swap_fonts_name_default :=
+ [
+ name: {"MyriadPro-Bold"},
+ size: {30.0},
+ color: {"black"},
+ vertical: {0},
+ italic: {"MyriadPro-Bold-Italic"}
+ ]
+
+ information_offset_top_1 := { 16 }
+ information_secondary_shift_with_pt_1 := { false }
+
+ template_prefix :=
+ [
+ identity: "/magic-modules.mse-include/indicators/",
+ identity2: "/magic-modules.mse-include/indicators/",
+ ]
+ template_suffix :=
+ [
+ identity: "identity.png",
+ identity2: "identity.png",
+ ]
+
+ color_name_map :=
+ [
+ w: "white",
+ u: "blue",
+ b: "black",
+ r: "red",
+ g: "green",
+ c: "colorless",
+ a: "artifact"
+ m: "gold"
+ ]
+
+ normal_template := { template_prefix[type] + input + template_suffix[type] }
+ normal_land_template := { template_prefix[type] + (if input == "a" then "c" else input) + template_suffix[type] }
+
+ template := { if contains(type, match: "identity") then normal_template() else complete_card_image(input) }
+ land_template := { if contains(type, match: "identity") then normal_land_template() else complete_card_image(input) }
+
+ card_background := { color_background(input: card.card_color, type: "card", base_hybrid: card_hybrid, multicolor_blend: "white", hybrid_blend: "white", artifact_blend: "white") }
+
+ is_promo := { styling.promo }
+
+ is_unsorted := { styling.remove_from_autocount }
+
+ is_crowned := { styling.legend_crown == "yes" or (styling.legend_crown == "if legendary" and lang_setting("is_legendary")(card.super_type)) }
+
+ chop_top := { split := split_comma(styling.chop_text_box); if length(split) > 0 and split.0 != "" then clamp(split.0, maximum: 1500, minimum: -1500) else 0 }
+ chop_bot := { split := split_comma(styling.chop_text_box); if length(split) > 1 and split.1 != "" then clamp(split.1, maximum: 1500, minimum: -1500) else 0 }
+
+ art_left := { 40 }
+ art_top := { 110 }
+ art_width := { 570 }
+ art_bottom := { 454 + move_typeline() }
+
+ 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"
+ then "middle center"
+ else "middle left"
+ }
+
+ move_typeline :=
+ {
+ to_number_lax(styling.move_typeline)
+ }
+
+ border_mask :=
+ {
+ result := insert_image(base_image: "border_card.png", inserted_image: "border_type.png", offset_x: 38, offset_y: 454 + move_typeline())
+ if card.pt != "" then result := insert_image(base_image: result, inserted_image: "border_pt.png", offset_x: 489, offset_y: 877)
+ result
+ }
+
+ complete_card_image :=
+ {
+ result := insert_image(base_image: "card.png", inserted_image: "type.png", offset_x: 38, offset_y: 455 + move_typeline())
+ if card.pt != "" then result := insert_image(base_image: result, inserted_image: "pt.png", offset_x: 490, offset_y: 877)
+ recolor_image(result, color: styling[color_name_map[input] + "_color"])
+ }
+
# Script for the sort code field.
- playtest_rarity_code :={
+ playtest_rarity_code :=
+ {
rarity := card.rarity
if rarity == "basic land" then "B"
else if rarity == "common" then "C"
@@ -29,7 +160,8 @@ init script:
else if rarity == "special" then "S"
else "C"
}
- playtest_color_code := {
+ playtest_color_code :=
+ {
casting_cost := card.casting_cost
card_color := card.card_color
colors := sort_text(casting_cost, order: "")
@@ -44,10 +176,13 @@ init script:
else if chosen(choice:"land", card_color) then "L"
else "A"
}
- playtest_sort_code := { set.title + " - " + playtest_rarity_code () + playtest_color_code() + ", " + playtest_code_number()
+ playtest_sort_code :=
+ {
+ (if set.title != "" then set.title + " - " else "") + playtest_rarity_code () + playtest_color_code() + ", " + playtest_code_number()
}
- playtest_rarity_filter :={
+ playtest_rarity_filter :=
+ {
rarity := card.rarity
if rarity == "basic land" then {card.rarity == "basic land"}
else if rarity == "common" then {card.rarity == "common"}
@@ -57,7 +192,8 @@ init script:
else {card.rarity == "special"}
}
- playtest_color_filter :={
+ playtest_color_filter :=
+ {
casting_cost := card.casting_cost
card_color := card.card_color
card_type := card.type
@@ -73,223 +209,439 @@ init script:
else { contains(card.card_color, match:"artifact") or contains(card.card_color, match:"colorless") }
}
- playtest_code_number := {
- position (
+ playtest_code_number :=
+ {
+ position(
of: card
in: set
order_by: { to_string(card.time_created,format:"%S%M%H%d%m%y") }
filter: playtest_color_filter()
) + 1
}
+
############################################################## Extra style options
styling field:
- type: choice
- name: frame style
- description: Should the frame be totally blank, or read MTG Confidential?
- initial: blank
- choice: blank
- choice: mtg confidential
+ type: boolean
+ name: confidential
+ description: Should the frame have the "Confidential" text?
+ initial: no
+styling field:
+ type: boolean
+ name: art
+ description: Should the frame have an illustration?
+ initial: no
+styling field:
+ type: boolean
+ name: code
+ description: Should the frame show its playtest code?
+ initial: yes
+styling field:
+ type: boolean
+ name: time created
+ description: Should the frame show when it was created / modified?
+ initial: yes
+styling field:
+ type: color
+ name: white color
+ description: Use the specified color for white cards.
+ choice:
+ name: canon
+ color: rgb(241,242,236)
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ initial: rgb(241,242,236)
+styling field:
+ type: color
+ name: blue color
+ description: Use the specified color for blue cards.
+ choice:
+ name: canon
+ color: rgb(2,119,177)
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ initial: rgb(2,119,177)
+styling field:
+ type: color
+ name: black color
+ description: Use the specified color for black cards.
+ choice:
+ name: canon
+ color: rgb(57,54,48)
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ initial: rgb(57,54,48)
+styling field:
+ type: color
+ name: red color
+ description: Use the specified color for red cards.
+ choice:
+ name: canon
+ color: rgb(230,77,52)
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ initial: rgb(230,77,52)
+styling field:
+ type: color
+ name: green color
+ description: Use the specified color for green cards.
+ choice:
+ name: canon
+ color: rgb(14,116,70)
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ initial: rgb(14,116,70)
+styling field:
+ type: color
+ name: gold color
+ description: Use the specified color for gold cards.
+ choice:
+ name: canon
+ color: rgb(219,209,84)
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ initial: rgb(219,209,84)
+styling field:
+ type: color
+ name: artifact color
+ description: Use the specified color for artifact cards.
+ choice:
+ name: canon
+ color: rgb(90,140,160)
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ initial: rgb(90,140,160)
+styling field:
+ type: color
+ name: colorless color
+ description: Use the specified color for colorless cards.
+ choice:
+ name: canon
+ color: rgb(153,138,125)
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ initial: rgb(153,138,125)
+styling field:
+ type: slider
+ name: move typeline
+ description: Move the typeline up or down
+ minimum: -300
+ maximum: 300
+ initial: 0
+
+include file: /magic-modules.mse-include/texts/styling_fields
+
+include file: /magic-modules.mse-include/rarities/styling_fields
+
+include file: /magic-modules.mse-include/indicators/styling_fields
+
+include file: /magic-modules.mse-include/watermarks/styling_fields
+
+styling field:
+ type: package choice
+ name: overlay
+ description: Should there be an overlay applied, such as foil?
+ match: magic-overlay-*.mse-include
+ required: false
+
+styling field:
+ type: boolean
+ name: remove from autocount
+ description: Removes the automatic card number for specific cards, to allow for overcounted cards like in Planeswalker Decks.
+ initial: no
+styling field:
+ type: boolean
+ name: promo
+ description: Is this card a promo card, with the "P" rarity?
+ initial: no
+styling field:
+ type: color
+ name: copyright text color
+ description: Color of the copyright, illustrator, card number, and set code text.
+ choice: black
+ choice: white
+
+styling field:
+ type: package choice
+ name: casting cost mana symbols
+ description: Mana symbols used for casting cost, name, banner, fuse and transformation reminder.
+ match: magic-mana-*.mse-symbol-font
+ initial: magic-mana-ravnica-dossier.mse-symbol-font
+styling field:
+ type: package choice
+ name: text box mana symbols
+ description: Mana symbols used inside rule text.
+ match: magic-mana-*.mse-symbol-font
+ initial: magic-mana-ravnica-dossier.mse-symbol-font
+styling field:
+ type: boolean
+ name: use ancestral mana symbols
+ description: Enables ancestral's modified generic mana.
+ initial: no
+styling field:
+ type: boolean
+ name: use guild mana symbols
+ description: Use the Ravnica guild symbols instead of the official half/half circles for hybrid mana.
+ initial: no
+styling field:
+ type: choice
+ name: tap symbol
+ description: What tap and untap symbols should be used on cards?
+ choice: modern
+ choice: old
+ choice: diagonal T
+ initial: modern
styling style:
- frame style:
- render style: both
+ use ancestral mana symbols:
+ choice images:
+ yes: /magic-modules.mse-include/symbol-fonts/generic_ancestral.png
+ no: /magic-modules.mse-include/symbol-fonts/generic_normal.png
+ use guild mana symbols:
choice images:
- blank: card2.png
- mtg confidential: card.png
+ yes: /magic-modules.mse-include/symbol-fonts/hybrid_guild.png
+ no: /magic-modules.mse-include/symbol-fonts/hybrid_normal.png
+ tap symbol:
+ render style: both
+ choice images:
+ modern: /magic-modules.mse-include/symbol-fonts/tap_new.png
+ old: /magic-modules.mse-include/symbol-fonts/tap_old.png
+ diagonal T: /magic-modules.mse-include/symbol-fonts/tap_older.png
+
+include file: /magic-modules.mse-include/fonts/styling_fields
+
############################################################## Card fields
+
+include file: /magic-modules.mse-include/namelines/card_fields
+
+include file: /magic-modules.mse-include/information/card_fields
+
+include file: /magic-modules.mse-include/watermarks/card_fields
+
card style:
############################# Background stuff
border color:
- left: 0
- top : 0
- width: 338
- height: 497
- radius: 18
- left width: 17
- right width: 17
- top width: 17
- bottom width: 18
- z index: -1
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 0
+ mask: { border_mask() }
card color:
- left: 0
- top: 0
- width: 338
- height: 497
- z index: -2
- render style: image
- popup style: in place
- image:
- script:
- if styling.frame_style == "blank" then "card2.png"
- else "card.png"
-
- ############################# Name line
- name:
- left: 29
- top : 29
- right: { 317 - card_style.casting_cost.content_width }
- height: 23
- alignment: bottom shrink-overflow
- padding bottom: 0
- z index: 1
- font:
- name: Times New Roman
- size: 18
- weight: bold
- color: rgb(0,0,0)
- casting cost:
- right: 317
- top : 29
- width: { max(30, card_style.casting_cost.content_width) + 5 }
- height: 23
- alignment: bottom right
- font:
- name: Times New Roman
- size: 18
- z index: 2
- padding top: 0
-
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 100
+ popup style: in place
+ render style: image
+ image: { card_background() }
############################# Image
-
- ############################# Card type
-
+ image:
+ left: { art_left() }
+ top: { art_top() }
+ width: { art_width() }
+ bottom: { art_bottom() }
+ z index: 200
+ visible: { styling.art }
+ ############################# Typeline
type:
- left: 29
- top : 202
- width: 215
- height: 20
- alignment: top shrink-overflow
- z index: 1
- padding top: 2
+ 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() + move_typeline() }
+ right: { min(rarity_left_1() + type_offset_right_1() + typeline_offset_left_1() + typeline_offset_width_1() - typeline_offset_height_1(), 604) }
+ 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: Times New Roman
- size: 15
- color: rgb(0,0,0)
- separator color: rgb(128,128,128)
-
+ name: { type_font() }
+ italic name: { type_font_italic() }
+ size: { type_font_size() }
+ color: { type_font_color() }
+ separator color: red
rarity:
- right: 296
- top : 203
- width: 44
- height: 22
- z index: 1
- choice images:
- # Images based on the set symbol
- basic land: script: symbol_variation(symbol: set.symbol, variation: "common")
- common: script: symbol_variation(symbol: set.symbol, variation: "common")
- uncommon: script: symbol_variation(symbol: set.symbol, variation: "common")
- rare: script: symbol_variation(symbol: set.symbol, variation: "common")
- mythic rare: script: symbol_variation(symbol: set.symbol, variation: "common")
- special: script: symbol_variation(symbol: set.symbol, variation: "common")
- masterpiece: script: symbol_variation(symbol: set.masterpiece_symbol, variation: "common")
-
+ right: { rarity_right_1() + typeline_offset_left_1() + typeline_offset_width_1() }
+ top: { rarity_top_1() + typeline_offset_top_1() + move_typeline() }
+ 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
+ indicator:
+ left: { indicator_left_1() + typeline_offset_left_1() }
+ top: { indicator_top_1() + typeline_offset_top_1() + move_typeline() }
+ width: { indicator_size_1() + typeline_offset_height_1() }
+ height: { indicator_size_1() + typeline_offset_height_1() }
+ z index: 800
+ render style: image
+ visible: { styling.color_indicator_dot }
+ image: { module_identity(card.indicator) }
############################# Text box
text:
- left: 29
- top : 252
- width: 283
- height: 165
+ left: 50
+ top: { 553 + chop_top() + body_font_vertical() + move_typeline() }
+ right: 600
+ bottom: { 857 - chop_bot() }
+ z index: 900
+ line height hard: { if is_modal(card.rule_text) then 0.9 else 1.2 }
+ line height line: 1.5
+ line height soft: 0.9
+ line height hard max: { if is_modal(card.rule_text) then 1.0 else 1.3 }
+ line height line max: 1.6
+ alignment: { alignment_script() }
font:
- name: Times New Roman
- italic name: Times New Roman
- size: 15
- scale down to: 6
- color: rgb(0,0,0)
- alignment: middle left
- z index: 2
- padding left: 6
- padding top: 2
- padding right: 4
- padding bottom: 2
- line height hard: 1.2
- line height line: 1.5
-
-
+ name: { body_font() }
+ italic name: { body_font_italic() }
+ size: { body_font_size() }
+ scale down to: 7
+ color: { body_font_color() }
+ symbol font:
+ name: { styling.text_box_mana_symbols }
+ size: { body_font_size() }
+ scale down to: 7
############################# PT
pt:
- z index: 4
- left: 256
- top: 443
- width: 60
- height: 28
- alignment: center middle
- font:
- name: Times New Roman
- size: 17
- weight: bold
- color: rgb(0,0,0)
- separator color: rgb(200,0,0)
-
- ############################# Card sorting / numbering
- ############################# Copyright stuff
- copyright line:
- z index: 4
- left: 29
- right: 256
- height: 20
- top: 453
- alignment: left middle shrink-overflow
+ left: 510
+ top: { 878 + pt_font_vertical() }
+ width: 91
+ height: 45
+ z index: 900
+ alignment: center middle shrink-overflow
font:
- name: Times New Roman
- size: 10
- scale down to: 4
- weight: bold
+ name: { pt_font() }
+ size: { pt_font_size() }
+ color: { pt_font_color() }
+ separator color: red
############################################################## Extra card fields
extra card field:
- type: text
- name: created
- editable: false
- script: "Time Created: " + to_string(card.time_created,format:"%y-%m-%d, %H:%M:%S")
- save value: false
+ type: text
+ name: test card text
+ default: "TEST CARD - Not for constructed play"
extra card field:
- type: text
- name: modified
- editable: false
- script: "Time Modified: " + to_string(card.time_modified,format:"%y-%m-%d, %H:%M:%S")
- save value: false
+ type: text
+ name: sort code
+ save value: false
+ editable: false
+ script: playtest_sort_code()
extra card field:
- type: text
- name: sort code
- save value: false
- editable: false
- script: playtest_sort_code()
+ type: text
+ name: created
+ editable: false
+ save value: false
+ script: "Time Created: " + to_string(card.time_created,format:"%y-%m-%d, %H:%M:%S")
+extra card field:
+ type: text
+ name: modified
+ editable: false
+ save value: false
+ script: "Time Modified: " + to_string(card.time_modified,format:"%y-%m-%d, %H:%M:%S")
+extra card field:
+ type: choice
+ name: confidential
+ editable: false
+ save value: false
+ show statistics: false
+ choice: confidential
+extra card field:
+ type: choice
+ name: foil layer
+ editable: false
+ save value: false
+ show statistics: false
+ choice: foil layer
+
extra card style:
sort code:
- left: 20
- top: 140
- width: 298
- height: 20
- z index: 2
- alignment: center middle shrink-overflow
+ left: 50
+ top: 110
+ width: 500
+ height: 50
+ z index: 900
+ alignment: left middle shrink-overflow
+ visible: { styling.code }
font:
- name: Times New Roman
- size: 14
- scale down to: 6
- weight: bold
- color: rgb(0,0,0)
+ name: Times New Roman
+ size: 28
+ scale down to: 6
+ weight: bold
+ color: rgb(0,0,0)
+ stroke color: { if styling.art then rgba(255,255,255,255) else rgba(0,0,0,0) }
+ stroke radius: 2
+ stroke blur: 0.55
created:
- left: 20
- top: 80
- width: 298
- height: 20
- z index: 2
- alignment: center middle shrink-overflow
+ left: 50
+ top: { 170 - if styling.code then 0 else 60 }
+ width: 500
+ height: 50
+ z index: 900
+ alignment: left middle shrink-overflow
+ visible: { styling.time_created }
font:
- name: Times New Roman
- size: 14
- scale down to: 6
- weight: bold
- color: rgb(0,0,0)
+ name: Times New Roman
+ size: 28
+ scale down to: 6
+ weight: bold
+ color: rgb(0,0,0)
+ stroke color: { if styling.art then rgba(255,255,255,255) else rgba(0,0,0,0) }
+ stroke radius: 2
+ stroke blur: 0.55
modified:
- left: 20
- top: 110
- width: 298
- height: 20
- z index: 2
- alignment: center middle shrink-overflow
+ left: 50
+ top: { 220 - if styling.code then 0 else 60 }
+ width: 500
+ height: 50
+ z index: 900
+ alignment: left middle shrink-overflow
+ visible: { styling.time_created }
+ font:
+ name: Times New Roman
+ size: 28
+ scale down to: 6
+ weight: bold
+ color: rgb(0,0,0)
+ stroke color: { if styling.art then rgba(255,255,255,255) else rgba(0,0,0,0) }
+ stroke radius: 2
+ stroke blur: 0.55
+ foil layer:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 1050
+ visible: { styling.overlay != "none" and styling.overlay != "" }
+ render style: image
+ image: { if styling.overlay == "" then "" else styling.overlay + "/overlay.png" }
+ confidential:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ #left: 18
+ #top: { 518 + move_typeline() }
+ #width: 614
+ #bottom: 895
+ z index: 850
+ visible: { styling.confidential }
+ render style: image
+ image: confidential.png
+ test card text:
+ left: 48
+ top: { 878 + body_font_vertical() }
+ width: 433
+ height: 45
+ z index: 900
+ alignment: left middle shrink-overflow
font:
- name: Times New Roman
- size: 14
- scale down to: 6
- weight: bold
- color: rgb(0,0,0)
+ name: { body_font() }
+ size: { body_font_size() - 4 }
+ color: { body_font_color() }
+ separator color: red
diff --git a/data/magic-playtest.mse-style/type.png b/data/magic-playtest.mse-style/type.png
new file mode 100644
index 0000000000..e74f295a42
Binary files /dev/null and b/data/magic-playtest.mse-style/type.png differ
diff --git a/data/magic-source-material.mse-style/border_borderless_mask.png b/data/magic-source-material.mse-style/border_borderless_mask.png
new file mode 100644
index 0000000000..ea3affc92d
Binary files /dev/null and b/data/magic-source-material.mse-style/border_borderless_mask.png differ
diff --git a/data/magic-source-material.mse-style/border_extended_mask.png b/data/magic-source-material.mse-style/border_extended_mask.png
new file mode 100644
index 0000000000..cbd550a6c9
Binary files /dev/null and b/data/magic-source-material.mse-style/border_extended_mask.png differ
diff --git a/data/magic-source-material.mse-style/border_fade_mask.png b/data/magic-source-material.mse-style/border_fade_mask.png
new file mode 100644
index 0000000000..9e84819bb1
Binary files /dev/null and b/data/magic-source-material.mse-style/border_fade_mask.png differ
diff --git a/data/magic-source-material.mse-style/border_stamp_mask.png b/data/magic-source-material.mse-style/border_stamp_mask.png
new file mode 100644
index 0000000000..61ab86f384
Binary files /dev/null and b/data/magic-source-material.mse-style/border_stamp_mask.png differ
diff --git a/data/magic-source-material.mse-style/border_stamptriangle_mask.png b/data/magic-source-material.mse-style/border_stamptriangle_mask.png
new file mode 100644
index 0000000000..15d9a672cc
Binary files /dev/null and b/data/magic-source-material.mse-style/border_stamptriangle_mask.png differ
diff --git a/data/magic-source-material.mse-style/card_mask.png b/data/magic-source-material.mse-style/card_mask.png
new file mode 100644
index 0000000000..a7d616d42b
Binary files /dev/null and b/data/magic-source-material.mse-style/card_mask.png differ
diff --git a/data/magic-source-material.mse-style/card_sample.png b/data/magic-source-material.mse-style/card_sample.png
new file mode 100644
index 0000000000..4dbdcc747c
Binary files /dev/null and b/data/magic-source-material.mse-style/card_sample.png differ
diff --git a/data/magic-source-material.mse-style/style b/data/magic-source-material.mse-style/style
new file mode 100644
index 0000000000..7bb34df145
--- /dev/null
+++ b/data/magic-source-material.mse-style/style
@@ -0,0 +1,477 @@
+mse version: 2.6.0
+game: magic
+short name: Source Material
+full name: Full Art Borderless
+icon: card_sample.png
+position hint: 000060
+installer group: magic/Standard Frames/Art Upload
+
+
+version: 2024-05-20
+depends on:
+ package: magic.mse-game
+ version: 2014-06-25
+depends on:
+ package: magic-mana-large.mse-symbol-font
+ version: 2007-09-23
+depends on:
+ package: magic-mana-small.mse-symbol-font
+ version: 2007-09-23
+depends on:
+ package: magic-modules.mse-include
+ version: 2024-05-20
+depends on:
+ package: magic-mainframe-extras.mse-include
+ version: 2007-09-23
+
+card width: 744
+card height: 1039
+card dpi: 297
+
+### code by GenevensiS
+
+############################################################## Extra scripts
+
+init script:
+ swap_fonts_pt_default :=
+ [
+ name: {"Beleren Bold"},
+ size: {30.0},
+ color: {"white"},
+ vertical: {0},
+ italic: {"Beleren Bold"}
+ ]
+
+ swap_fonts_body_default :=
+ [
+ name: {"MPlantin"},
+ size: {23.0},
+ color: {"white"},
+ vertical: {0},
+ italic: {"MPlantin-Italic"}
+ ]
+
+ typeline_offset_left_1 := { 1 }
+ typeline_offset_width_1 := { -2 }
+ indicator_offset_top_1 := { -1 }
+ rarity_offset_left_1 := { -2 }
+ typeline_character_limit := 36
+ swap_fonts_type_default :=
+ [
+ name: {"Beleren Bold"},
+ size: { 25.0 - max(0, (length(to_text(card.type)) - typeline_character_limit) / 3) },
+ color: {"white"},
+ vertical: {0},
+ italic: {""}
+ ]
+
+ alias_offset_top_1 := { 1 }
+ alias_offset_left_1 := { -16 }
+ alias_offset_height_1 := { -4 }
+ alias_offset_width_1 := { -6 }
+ transform_symbol_disabled_1 := { true }
+ swap_fonts_name_default :=
+ [
+ name: {"Beleren Bold"},
+ size: {29.0},
+ color: {"white"},
+ vertical: {0},
+ italic: {""}
+ ]
+
+ information_secondary_shift_with_pt_1 := { false }
+
+ invert_watermark_1 := { true }
+
+ template_prefix :=
+ [
+ identity: "/magic-modules.mse-include/indicators/",
+ identity2: "/magic-modules.mse-include/indicators/",
+ ]
+ template_suffix :=
+ [
+ identity: "identity.png",
+ identity2: "identity.png",
+ ]
+
+ color_name_map :=
+ [
+ w: "white",
+ u: "blue",
+ b: "black",
+ r: "red",
+ g: "green",
+ c: "colorless",
+ a: "artifact"
+ m: "gold"
+ ]
+
+ normal_template := { template_prefix[type] + input + template_suffix[type] }
+ normal_land_template := { template_prefix[type] + (if input == "a" then "c" else input) + template_suffix[type] }
+
+ template := { if contains(type, match: "identity") then normal_template() else complete_card_image(input) }
+ land_template := { if contains(type, match: "identity") then normal_land_template() else complete_card_image(input) }
+
+ card_background := { color_background(input: card.card_color, type: "card", base_hybrid: card_hybrid, multicolor_blend: "white", hybrid_blend: "white", artifact_blend: "white") }
+
+ is_promo := { styling.promo }
+
+ is_unsorted := { styling.remove_from_autocount }
+
+ is_crowned := { styling.legend_crown == "yes" or (styling.legend_crown == "if legendary" and lang_setting("is_legendary")(card.super_type)) }
+
+ chop_top := { split := split_comma(styling.chop_text_box); if length(split) > 0 and split.0 != "" then clamp(split.0, maximum: 1500, minimum: -1500) else 0 }
+ chop_bot := { split := split_comma(styling.chop_text_box); if length(split) > 1 and split.1 != "" then clamp(split.1, maximum: 1500, minimum: -1500) else 0 }
+
+ popout_left := { split := split_comma(styling.popout_image_coordinates); if length(split) > 3 and split.0 != "" then clamp(split.0, maximum: 1500, minimum: -500) else 0 }
+ popout_top := { split := split_comma(styling.popout_image_coordinates); if length(split) > 3 and split.1 != "" then clamp(split.1, maximum: 2000, minimum: -500) else 0 }
+ popout_width := { split := split_comma(styling.popout_image_coordinates); if length(split) > 3 and split.2 != "" then clamp(split.2, maximum: 1500, minimum: 0) else 0 }
+ popout_height := { split := split_comma(styling.popout_image_coordinates); if length(split) > 3 and split.3 != "" then clamp(split.3, maximum: 2000, minimum: 0) else 0 }
+
+ art_left := { if styling.border == "yes" and not styling.stretch_image_to_whole_card then 28 else 0 }
+ art_top := { if styling.border == "yes" and not styling.stretch_image_to_whole_card then 29 else 0 }
+ art_width := { if styling.border == "yes" and not styling.stretch_image_to_whole_card then 688 else stylesheet.card_width }
+ art_bottom := { if styling.stretch_image_to_whole_card or styling.border == "no" or styling.border == "fade" then stylesheet.card_height else 965 }
+
+ 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"
+ then "middle center"
+ else "top left"
+ }
+
+ move_typeline :=
+ {
+ to_number_lax(styling.move_typeline)
+ }
+
+############################################################## Extra style options
+
+styling field:
+ type: text
+ name: popout image coordinates
+ description: The coordinates for the popout image field, formatted as "left,top,width,height". Used to make the illustration jump in front of the frame.
+styling field:
+ type: boolean
+ name: stretch image to whole card
+ description: Make the image span the whole card instead of just the visible part. Use this to help make popout effects.
+ initial: no
+styling field:
+ type: slider
+ name: move typeline
+ description: Move the typeline up or down
+ minimum: -400
+ maximum: 210
+ initial: 0
+
+include file: /magic-modules.mse-include/texts/styling_fields
+
+styling field:
+ type: boolean
+ name: hide name
+ initial: no
+ description: Hide the name text?
+styling field:
+ type: boolean
+ name: hide type
+ initial: no
+ description: Hide the type text?
+styling field:
+ type: boolean
+ name: hide rarity
+ initial: yes
+ description: Hide the rarity symbol?
+
+include file: /magic-modules.mse-include/rarities/styling_fields
+
+include file: /magic-modules.mse-include/indicators/styling_fields
+
+include file: /magic-modules.mse-include/watermarks/styling_fields
+
+styling field:
+ type: package choice
+ name: overlay
+ description: Should there be an overlay applied, such as foil?
+ match: magic-overlay-*.mse-include
+ required: false
+styling field:
+ type: choice
+ name: border
+ description: Use a border?
+ choice: yes
+ choice: only copyright
+ choice: fade
+ choice: no
+ initial: only copyright
+
+include file: /magic-modules.mse-include/information/styling_fields
+
+styling field:
+ type: package choice
+ name: casting cost mana symbols
+ description: Mana symbols used for casting cost, name, banner, fuse and transformation reminder.
+ match: magic-mana-*.mse-symbol-font
+ initial: magic-mana-small.mse-symbol-font
+styling field:
+ type: package choice
+ name: text box mana symbols
+ description: Mana symbols used inside rule text.
+ match: magic-mana-*.mse-symbol-font
+ initial: magic-mana-small.mse-symbol-font
+styling field:
+ type: boolean
+ name: use ancestral mana symbols
+ description: Enables ancestral's modified generic mana.
+ initial: no
+styling field:
+ type: boolean
+ name: use guild mana symbols
+ description: Use the Ravnica guild symbols instead of the official half/half circles for hybrid mana.
+ initial: no
+styling field:
+ type: choice
+ name: tap symbol
+ description: What tap and untap symbols should be used on cards?
+ choice: modern
+ choice: old
+ choice: diagonal T
+ initial: modern
+styling style:
+ use ancestral mana symbols:
+ choice images:
+ yes: /magic-modules.mse-include/symbol-fonts/generic_ancestral.png
+ no: /magic-modules.mse-include/symbol-fonts/generic_normal.png
+ use guild mana symbols:
+ choice images:
+ yes: /magic-modules.mse-include/symbol-fonts/hybrid_guild.png
+ no: /magic-modules.mse-include/symbol-fonts/hybrid_normal.png
+ tap symbol:
+ render style: both
+ choice images:
+ modern: /magic-modules.mse-include/symbol-fonts/tap_new.png
+ old: /magic-modules.mse-include/symbol-fonts/tap_old.png
+ diagonal T: /magic-modules.mse-include/symbol-fonts/tap_older.png
+
+include file: /magic-modules.mse-include/fonts/styling_fields
+
+############################################################## Card fields
+
+include file: /magic-modules.mse-include/information/card_fields
+
+include file: /magic-modules.mse-include/stamps/card_fields
+
+include file: /magic-modules.mse-include/corners/card_fields
+
+include file: /magic-modules.mse-include/watermarks/card_fields
+
+card style:
+ ############################# Background stuff
+ 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: { if styling.hide_name then rgba(0,0,0,0) else name_font_color() }
+ stroke color: { if styling.hide_name then rgba(0,0,0,0) else rgba(0,0,0,255) }
+ stroke radius: 2.5
+ stroke blur: 0.55
+ z index: 900
+ alias:
+ left: { alias_left_1() }
+ top: { alias_top_1() + alias_offset_text(face:1) + alias_offset_text_top_1() }
+ width: { alias_width_1() }
+ height: { alias_height_1() }
+ angle: { alias_angle_1() }
+ alignment: middle left shrink-overflow
+ z index: 900
+ font:
+ name: MPlantin-Italic
+ size: { alias_font_size(face:1) + 1 }
+ style: bold
+ weight: bold
+ color: white
+ stroke color: rgba(0,0,0,255)
+ stroke radius: 2.5
+ stroke blur: 0.55
+ casting cost:
+ right: { casting_cost_right_1() + casting_cost_transform_symbol_shift_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: { casting_cost_font() }
+ italic name: { casting_cost_font_italic() }
+ size: { casting_cost_font_size() }
+ color: { casting_cost_font_color() }
+ stroke color: rgba(0,0,0,255)
+ stroke radius: 2.5
+ stroke blur: 0.55
+ symbol font:
+ name: { styling.casting_cost_mana_symbols or else "magic-mana-large" }
+ size: { casting_cost_font_size() }
+ stroke color: rgba(0,0,0,255)
+ stroke radius: 2.5
+ stroke blur: 0.55
+ z index: 920
+ ############################# Background stuff
+ border color:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 200
+ visible: { styling.border != "no" }
+ mask: { "border_" + (if styling.border == "only copyright" then "borderless_" else if styling.border == "fade" then "fade_" else "extended_") + "mask.png" }
+ card color:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 210
+ popup style: in place
+ render style: image
+ mask: card_mask.png
+ ############################# Image
+ image:
+ left: { art_left() }
+ top: { art_top() }
+ width: { art_width() }
+ bottom: { art_bottom() }
+ z index: 100
+ mainframe image:
+ left: { popout_left() }
+ top: { popout_top() }
+ width: { popout_width() }
+ height: { popout_height() }
+ z index: 1010
+ ############################# Typeline
+ 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() + move_typeline() }
+ 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: { if styling.hide_type then rgba(0,0,0,0) else type_font_color() }
+ stroke color: { if styling.hide_type then rgba(0,0,0,0) else rgba(0,0,0,255) }
+ stroke radius: 2.5
+ stroke blur: 0.55
+ separator color: red
+ rarity:
+ right: { rarity_right_1() + typeline_offset_left_1() + typeline_offset_width_1() }
+ top: { rarity_top_1() + typeline_offset_top_1() + move_typeline() }
+ width: { rarity_width_1() + typeline_offset_height_1() }
+ height: { rarity_height_1() + typeline_offset_height_1() }
+ z index: 950
+ alignment: middle right
+ visible: { not styling.hide_rarity }
+ render style: image
+ include file: /magic-modules.mse-include/rarities/choice_images
+ indicator:
+ left: { indicator_left_1() + typeline_offset_left_1() }
+ top: { indicator_top_1() + typeline_offset_top_1() + move_typeline() }
+ 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: { module_identity(card.indicator) }
+ ############################# Text box
+ text:
+ left: 65
+ top: { 652 + chop_top() + (if is_stamped() then 4 else 0) + body_font_vertical() + move_typeline() }
+ right: 679
+ bottom: { 952 - chop_bot() - if is_stamped() then 8 else 0 }
+ z index: 900
+ line height hard: { if is_modal(card.rule_text) then 0.9 else 1.2 }
+ line height line: 1.5
+ line height soft: 0.9
+ line height hard max: { if is_modal(card.rule_text) then 1.0 else 1.3 }
+ line height line max: 1.6
+ alignment: { alignment_script() }
+ font:
+ name: { body_font() }
+ italic name: { body_font_italic() }
+ size: { body_font_size() }
+ scale down to: 7
+ color: { body_font_color() }
+ stroke color: rgba(0,0,0,255)
+ stroke radius: 2.5
+ stroke blur: 0.55
+ symbol font:
+ name: { styling.text_box_mana_symbols }
+ size: { body_font_size() }
+ scale down to: 7
+ stroke color: rgba(0,0,0,255)
+ stroke radius: 2.5
+ stroke blur: 0.55
+ ############################# PT
+ pt:
+ left: 593
+ top: { 910 + pt_font_vertical() }
+ width: 92
+ height: 45
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { pt_font() }
+ size: { pt_font_size() }
+ color: { pt_font_color() }
+ stroke color: rgba(0,0,0,255)
+ stroke radius: 2.5
+ stroke blur: 0.55
+ separator color: red
+
+############################################################## Extra card fields
+
+extra card field:
+ type: choice
+ name: foil layer
+ editable: false
+ save value: false
+ show statistics: false
+ choice: foil layer
+extra card field:
+ type: color
+ name: stamp border
+ script: card.border_color
+ editable: false
+ save value: false
+ show statistics: false
+
+extra card style:
+ foil layer:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 1050
+ visible: { styling.overlay != "none" and styling.overlay != "" }
+ render style: image
+ image: { if styling.overlay == "" then "" else styling.overlay + "/overlay.png" }
+ stamp border:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 210
+ visible: { (styling.border == "only copyright" or styling.border == "yes") and is_stamped() }
+ mask: { if stamp_shape() == "triangle" then "border_stamptriangle_mask.png" else "border_stamp_mask.png" }