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" }