diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/border_mask.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/border_mask.png
new file mode 100644
index 000000000..3e6820ad8
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/border_mask.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/border_mask_borderless.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/border_mask_borderless.png
new file mode 100644
index 000000000..ab48dedff
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/border_mask_borderless.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/border_stamp_mask.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/border_stamp_mask.png
new file mode 100644
index 000000000..be379d19a
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/border_stamp_mask.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card.png
new file mode 100644
index 000000000..2ced1c928
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_mask.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_mask.png
new file mode 100644
index 000000000..de42bbdab
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_mask.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_sample.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_sample.png
new file mode 100644
index 000000000..7245bf249
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_sample.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_stamp_mask.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_stamp_mask.png
new file mode 100644
index 000000000..6bc72fd92
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_stamp_mask.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_tall.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_tall.png
new file mode 100644
index 000000000..04b02e287
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_tall.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_tall_mask.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_tall_mask.png
new file mode 100644
index 000000000..89ad337dc
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_tall_mask.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_tall_stamp_mask.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_tall_stamp_mask.png
new file mode 100644
index 000000000..38d1cdf23
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/card_tall_stamp_mask.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/crown.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/crown.png
new file mode 100644
index 000000000..52a41e553
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/crown.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/image_mask.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/image_mask.png
new file mode 100644
index 000000000..c10560252
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/image_mask.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/image_tall_mask.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/image_tall_mask.png
new file mode 100644
index 000000000..c9812f3e5
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/image_tall_mask.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost + shadow.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost + shadow.png
new file mode 100644
index 000000000..d806f0cd9
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost + shadow.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost +.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost +.png
new file mode 100644
index 000000000..0c83e694b
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost +.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost - shadow.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost - shadow.png
new file mode 100644
index 000000000..d6dc644eb
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost - shadow.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost -.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost -.png
new file mode 100644
index 000000000..fa984682c
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost -.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost 0 shadow.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost 0 shadow.png
new file mode 100644
index 000000000..31a986905
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost 0 shadow.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost 0.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost 0.png
new file mode 100644
index 000000000..e3c42e672
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty cost 0.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty shadow.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty shadow.png
new file mode 100644
index 000000000..3e2865723
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty shadow.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty.png
new file mode 100644
index 000000000..7e5cf16f6
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/loyalty.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/namebox.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/namebox.png
new file mode 100644
index 000000000..35e4ab8cf
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/namebox.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/style b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/style
new file mode 100644
index 000000000..480f14a6a
--- /dev/null
+++ b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/style
@@ -0,0 +1,417 @@
+mse version: 2.5.0
+game: magic
+short name: Ghostfire PW
+full name: Tarkir Showcase
+icon: card_sample.png
+position hint: 095
+
+version: 2024-10-01
+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-10-01
+depends on:
+ package: magic-mainframe-extras.mse-include
+ version: 2007-09-23
+
+card width: 744
+card height: 1039
+card dpi: 297
+
+### blanks by GenevensiS
+### code by GenevensiS
+
+############################################################## Extra scripts
+
+init script:
+ transform_symbol_disabled_1 := { true }
+ casting_cost_offset_top_1 := { 1 }
+
+ swap_fonts_pt_default :=
+ [
+ name: {"Beleren Bold"},
+ size: {30.0},
+ color: {"white"},
+ vertical: {0},
+ italic: {"Beleren Bold"}
+ ]
+
+ swap_fonts_body_default :=
+ [
+ name: {"MPlantin"},
+ size: {28.0},
+ color: {"white"},
+ vertical: {0},
+ italic: {"MPlantin-Italic"}
+ ]
+
+ move_typeline := { if use_tall_walker_frame_1() then 37 else 0 }
+
+ typeline_offset_top_1 := { -50 - move_typeline() }
+ rarity_offset_top_1 := { 1 }
+ swap_fonts_type_default :=
+ [
+ name: {"Beleren Bold"},
+ size: {25.5},
+ color: {"white"},
+ vertical: {0},
+ italic: {""}
+ ]
+
+ swap_fonts_name_default :=
+ [
+ name: {"Beleren Bold"},
+ size: {29.0},
+ color: {"white"},
+ vertical: {0},
+ italic: {""}
+ ]
+
+ card_stamp_offset_top_1 := { if stamp_shape() == "triangle" then 0 else -4 }
+
+ invert_watermark_1 := { true }
+
+ #foil_mask_added_sections := {
+ # output := []
+ # if card.pt != "" then output := output + ["foil_mask_pt.png"]
+ # if is_crowned() then output := output + ["foil_mask_crown.png"]
+ # output
+ #}@(face:1)
+ #foil_mask_removed_sections := {
+ # output := []
+ # if is_stamped() then output := output + ["foil_mask_stamp.png"]
+ # output
+ #}@(face:1)
+
+ 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] != "" and split[0] != "-" then clamp(split[0], maximum:500, minimum:-500) else 0 }
+ chop_bottom := { split := split_comma(styling.chop_text_box); if length(split) > 1 and split[1] != "" and split[1] != "-" then clamp(split[1], maximum:500, minimum:-500) else 0 }
+ chop_right := { split := split_comma(styling.chop_text_box); if length(split) > 2 and split[2] != "" and split[2] != "-" then clamp(split[2], maximum:500, minimum:-500) else 0 }
+
+ popout_left := { split := split_comma(styling.popout_art_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_art_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_art_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_art_coordinates); if length(split) > 3 and split.3 != "" then clamp(split.3, maximum: 2000, minimum: 0) else 0 }
+
+ art_left := { if styling.stretch_art_to_whole_card or styling.border != "yes" then 0 else 38 }
+ art_top := { if styling.stretch_art_to_whole_card or styling.border != "yes" then 0 else 39 }
+ art_width := { if styling.stretch_art_to_whole_card or styling.border != "yes" then stylesheet.card_width else 668 }
+ art_bottom := { if styling.stretch_art_to_whole_card or styling.border == "no" then stylesheet.card_height else 926 }
+
+ art_mask :=
+ {
+ base := "image" + (if use_tall_walker_frame_1() then "_tall" else "") + "_mask.png"
+ crop(base, offset_x: art_left(), offset_y: art_top(), width: art_width(), height: art_bottom() - art_top())
+ }
+
+ loyalty_boxes_image_folder := { "/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/loyalty/" }
+
+ loyalty_stripe_alpha_default := { 0 }
+ loyalty_textbox_background_alpha_default := { 0 }
+
+ loyalty_textbox_mask_1 :=
+ {
+ "textbox_mask" +
+ (if use_tall_walker_frame_1() then "_tall" else "") +
+ ".png"
+ }
+
+ loyalty_cost_offset_text_margin_1 := { -31 }
+
+ loyalty_cost_offset_left_1 := { 39 }
+
+ loyalty_offset_left_1 := { -4 }
+ loyalty_offset_top_1 := { -4 }
+
+ include file: /magic-modules.mse-include/loyalty/init_script
+
+############################################################## Extra style options
+
+styling field:
+ type: text
+ name: popout art 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 art 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
+
+include file: /magic-modules.mse-include/loyalty/styling_formatting
+
+include file: /magic-modules.mse-include/texts/styling_fields
+
+styling field:
+ type: text
+ name: stripes opacity percentage
+ description: Set the opacity percentage for stripes separating abilities. Opaque is 100, transparent is 0, default is 0.
+styling field:
+ type: color
+ name: stripes color
+ description: Use the specified color for the textbox background.
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ choice:
+ name: white
+ color: rgb(255,255,255)
+ initial: rgb(255,255,255)
+styling field:
+ type: text
+ name: nameline opacity percentage
+ description: Set the opacity percentage for the nameline. Opaque is 100, transparent is 0. Default is 60.
+styling field:
+ type: text
+ name: typeline opacity percentage
+ description: Set the opacity percentage for the typeline. Opaque is 100, transparent is 0. Default is 60.
+styling field:
+ type: text
+ name: textbox opacity percentage
+ description: Set the opacity percentage for the rules textbox. Opaque is 100, transparent is 0. Default is 60.
+styling field:
+ type: choice
+ name: legend crown
+ description: Use the legend crown?
+ choice: yes
+ choice: if legendary
+ choice: no
+ initial: no
+
+include file: /magic-modules.mse-include/rarities/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
+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: white
+ choice: black
+ initial: white
+
+include file: /magic-modules.mse-include/symbol-fonts/styling_fields
+
+include file: /magic-modules.mse-include/fonts/styling_fields
+
+############################################################## Card fields
+
+include file: /magic-modules.mse-include/loyalty/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
+
+include file: /magic-modules.mse-include/namelines/card_fields
+
+include file: /magic-modules.mse-include/typelines/card_fields
+
+card style:
+ ############################# 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 == "only copyright" then "border_mask_borderless.png" else "border_mask.png" }
+ ############################# 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
+ ############################# Text box
+ text:
+ left: 66
+ top: { 610 - move_typeline() + chop_top() + body_font_vertical() }
+ right: 678
+ bottom: { 905 - 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
+ padding left: 38
+ 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"
+ font:
+ 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
+
+############################################################## Extra card fields
+
+extra card field:
+ type: choice
+ name: card background
+ editable: false
+ save value: false
+ show statistics: false
+ choice: card background
+extra card field:
+ type: choice
+ name: crown
+ editable: false
+ save value: false
+ show statistics: false
+ choice: crown
+extra card field:
+ type: color
+ name: card stamp border
+ script: card.border_color
+ editable: false
+ save value: false
+ show statistics: false
+extra card field:
+ type: choice
+ name: namebox
+ editable: false
+ save value: false
+ show statistics: false
+ choice: namebox
+extra card field:
+ type: choice
+ name: typebox
+ editable: false
+ save value: false
+ show statistics: false
+ choice: typebox
+extra card field:
+ type: choice
+ name: textbox
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox
+extra card field:
+ type: choice
+ name: foil layer
+ editable: false
+ save value: false
+ show statistics: false
+ choice: foil layer
+
+extra card style:
+ card background:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 230
+ render style: image
+ image: { "card" + (if use_tall_walker_frame_1() then "_tall" else "") + ".png" }
+ mask: { "card" + (if use_tall_walker_frame_1() then "_tall" else "") + (if is_stamped() then "_stamp" else "") + "_mask.png" }
+ crown:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 800
+ visible: { is_crowned() }
+ render style: image
+ image: crown.png
+ card stamp border:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 310
+ visible: { is_stamped() and styling.border != "no" }
+ mask: border_stamp_mask.png
+ namebox:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 220
+ render style: image
+ image: { set_alpha("namebox.png", alpha: get_alpha_percentage(styling.nameline_opacity_percentage, default: 60)) }
+ typebox:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 220
+ render style: image
+ image: { set_alpha("typebox" + (if use_tall_walker_frame_1() then "_tall" else "") + ".png", alpha: get_alpha_percentage(styling.typeline_opacity_percentage, default: 60)) }
+ textbox:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 220
+ render style: image
+ image: { set_alpha("textbox" + (if use_tall_walker_frame_1() then "_tall" else "") + ".png", alpha: get_alpha_percentage(styling.textbox_opacity_percentage, default: 60)) }
+ 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-tarkir-ghostfire-walker.mse-style/textbox.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/textbox.png
new file mode 100644
index 000000000..bfdb1268f
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/textbox.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/textbox_mask.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/textbox_mask.png
new file mode 100644
index 000000000..f148e3e42
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/textbox_mask.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/textbox_mask_tall.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/textbox_mask_tall.png
new file mode 100644
index 000000000..3ed370f72
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/textbox_mask_tall.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/textbox_tall.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/textbox_tall.png
new file mode 100644
index 000000000..6517d10c2
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/textbox_tall.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/typebox.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/typebox.png
new file mode 100644
index 000000000..8a15ab2f7
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/typebox.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/typebox_tall.png b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/typebox_tall.png
new file mode 100644
index 000000000..3d845b652
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire-walker.mse-style/typebox_tall.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire.mse-style/border_mask.png b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/border_mask.png
new file mode 100644
index 000000000..3e6820ad8
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/border_mask.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire.mse-style/border_mask_borderless.png b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/border_mask_borderless.png
new file mode 100644
index 000000000..ab48dedff
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/border_mask_borderless.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire.mse-style/border_stamp_mask.png b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/border_stamp_mask.png
new file mode 100644
index 000000000..be379d19a
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/border_stamp_mask.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire.mse-style/card.png b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/card.png
new file mode 100644
index 000000000..2ced1c928
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/card.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire.mse-style/card_mask.png b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/card_mask.png
new file mode 100644
index 000000000..de42bbdab
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/card_mask.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire.mse-style/card_sample.png b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/card_sample.png
new file mode 100644
index 000000000..f9c35e93c
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/card_sample.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire.mse-style/card_stamp_mask.png b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/card_stamp_mask.png
new file mode 100644
index 000000000..6bc72fd92
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/card_stamp_mask.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire.mse-style/crown.png b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/crown.png
new file mode 100644
index 000000000..52a41e553
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/crown.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire.mse-style/image_mask.png b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/image_mask.png
new file mode 100644
index 000000000..c10560252
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/image_mask.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire.mse-style/namebox.png b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/namebox.png
new file mode 100644
index 000000000..5202fad4d
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/namebox.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire.mse-style/pt.png b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/pt.png
new file mode 100644
index 000000000..28e7240bb
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/pt.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire.mse-style/style b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/style
new file mode 100644
index 000000000..5130be85a
--- /dev/null
+++ b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/style
@@ -0,0 +1,403 @@
+mse version: 2.5.0
+game: magic
+short name: Ghostfire
+full name: Tarkir Showcase
+icon: card_sample.png
+position hint: 095
+
+version: 2024-10-01
+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-10-01
+depends on:
+ package: magic-mainframe-extras.mse-include
+ version: 2007-09-23
+
+card width: 744
+card height: 1039
+card dpi: 297
+
+### blanks by GenevensiS
+### code by GenevensiS
+
+############################################################## Extra scripts
+
+init script:
+ transform_symbol_disabled_1 := { true }
+ casting_cost_offset_top_1 := { 1 }
+
+ swap_fonts_pt_default :=
+ [
+ name: {"Beleren Bold"},
+ size: {30.0},
+ color: {"white"},
+ vertical: {0},
+ italic: {"Beleren Bold"}
+ ]
+
+ swap_fonts_body_default :=
+ [
+ name: {"MPlantin"},
+ size: {28.0},
+ color: {"white"},
+ vertical: {0},
+ italic: {"MPlantin-Italic"}
+ ]
+
+ typeline_offset_top_1 := { -50 }
+ rarity_offset_top_1 := { 1 }
+ swap_fonts_type_default :=
+ [
+ name: {"Beleren Bold"},
+ size: {25.5},
+ color: {"white"},
+ vertical: {0},
+ italic: {""}
+ ]
+
+ swap_fonts_name_default :=
+ [
+ name: {"Beleren Bold"},
+ size: {29.0},
+ color: {"white"},
+ vertical: {0},
+ italic: {""}
+ ]
+
+ card_stamp_offset_top_1 := { if stamp_shape() == "triangle" then 0 else -4 }
+
+ invert_watermark_1 := { true }
+
+ #foil_mask_added_sections := {
+ # output := []
+ # if card.pt != "" then output := output + ["foil_mask_pt.png"]
+ # if is_crowned() then output := output + ["foil_mask_crown.png"]
+ # output
+ #}@(face:1)
+ #foil_mask_removed_sections := {
+ # output := []
+ # if is_stamped() then output := output + ["foil_mask_stamp.png"]
+ # output
+ #}@(face:1)
+
+ 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_art_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_art_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_art_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_art_coordinates); if length(split) > 3 and split.3 != "" then clamp(split.3, maximum: 2000, minimum: 0) else 0 }
+
+ art_left := { if styling.stretch_art_to_whole_card or styling.border != "yes" then 0 else 38 }
+ art_top := { if styling.stretch_art_to_whole_card or styling.border != "yes" then 0 else 39 }
+ art_width := { if styling.stretch_art_to_whole_card or styling.border != "yes" then stylesheet.card_width else 668 }
+ art_bottom := { if styling.stretch_art_to_whole_card or styling.border == "no" then stylesheet.card_height else 926 }
+
+ art_mask :=
+ {
+ crop("image_mask.png", offset_x: art_left(), offset_y: art_top(), width: art_width(), height: art_bottom() - art_top())
+ }
+
+############################################################## Extra style options
+
+styling field:
+ type: text
+ name: popout art 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 art 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
+
+include file: /magic-modules.mse-include/texts/styling_fields
+
+styling field:
+ type: text
+ name: nameline opacity percentage
+ description: Set the opacity percentage for the nameline. Opaque is 100, transparent is 0. Default is 60.
+styling field:
+ type: text
+ name: typeline opacity percentage
+ description: Set the opacity percentage for the typeline. Opaque is 100, transparent is 0. Default is 60.
+styling field:
+ type: text
+ name: textbox opacity percentage
+ description: Set the opacity percentage for the rules textbox. Opaque is 100, transparent is 0. Default is 60.
+styling field:
+ type: choice
+ name: legend crown
+ description: Use the legend crown?
+ choice: yes
+ choice: if legendary
+ choice: no
+ initial: no
+
+include file: /magic-modules.mse-include/rarities/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
+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: white
+ choice: black
+ initial: white
+
+include file: /magic-modules.mse-include/symbol-fonts/styling_fields
+
+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
+
+include file: /magic-modules.mse-include/separators/card_fields
+
+include file: /magic-modules.mse-include/namelines/card_fields
+
+include file: /magic-modules.mse-include/typelines/card_fields
+
+card style:
+ ############################# 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 == "only copyright" then "border_mask_borderless.png" else "border_mask.png" }
+ ############################# 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
+ ############################# Text box
+ text:
+ left: 66
+ top: { 610 + chop_top() + body_font_vertical() }
+ right: 678
+ bottom: { 905 - 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:
+ 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"
+ font:
+ 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:
+ left: 590
+ top: { 917 + pt_font_vertical() }
+ width: 99
+ height: 46
+ z index: 900
+ alignment: center middle shrink-overflow
+ font:
+ name: { pt_font() }
+ size: { pt_font_size() }
+ color: { pt_font_color() }
+ separator color: red
+
+############################################################## Extra card fields
+
+extra card field:
+ type: choice
+ name: card background
+ editable: false
+ save value: false
+ show statistics: false
+ choice: card background
+extra card field:
+ type: choice
+ name: crown
+ editable: false
+ save value: false
+ show statistics: false
+ choice: crown
+extra card field:
+ type: choice
+ name: pt box
+ editable: false
+ save value: false
+ show statistics: false
+ choice: pt box
+extra card field:
+ type: color
+ name: card stamp border
+ script: card.border_color
+ editable: false
+ save value: false
+ show statistics: false
+extra card field:
+ type: choice
+ name: namebox
+ editable: false
+ save value: false
+ show statistics: false
+ choice: namebox
+extra card field:
+ type: choice
+ name: typebox
+ editable: false
+ save value: false
+ show statistics: false
+ choice: typebox
+extra card field:
+ type: choice
+ name: textbox
+ editable: false
+ save value: false
+ show statistics: false
+ choice: textbox
+extra card field:
+ type: choice
+ name: foil layer
+ editable: false
+ save value: false
+ show statistics: false
+ choice: foil layer
+
+extra card style:
+ card background:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 230
+ render style: image
+ image: card.png
+ mask: { if is_stamped() then "card_stamp_mask.png" else "card_mask.png" }
+ pt box:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 840
+ visible: { card.pt != "" }
+ render style: image
+ image: pt.png
+ crown:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 800
+ visible: { is_crowned() }
+ render style: image
+ image: crown.png
+ card stamp border:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 310
+ visible: { is_stamped() and styling.border != "no" }
+ mask: border_stamp_mask.png
+ namebox:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 220
+ render style: image
+ image: { set_alpha("namebox.png", alpha: get_alpha_percentage(styling.nameline_opacity_percentage, default: 60)) }
+ typebox:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 220
+ render style: image
+ image: { set_alpha("typebox.png", alpha: get_alpha_percentage(styling.typeline_opacity_percentage, default: 60)) }
+ textbox:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 220
+ render style: image
+ image: { set_alpha("textbox.png", alpha: get_alpha_percentage(styling.textbox_opacity_percentage, default: 60)) }
+ 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-tarkir-ghostfire.mse-style/textbox.png b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/textbox.png
new file mode 100644
index 000000000..f40a6b619
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/textbox.png differ
diff --git a/data/magic-m15-showcase-tarkir-ghostfire.mse-style/typebox.png b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/typebox.png
new file mode 100644
index 000000000..bdf1f262d
Binary files /dev/null and b/data/magic-m15-showcase-tarkir-ghostfire.mse-style/typebox.png differ