diff --git a/data/magic-m15-aetherdrift-full-art-basics.mse-style/card.png b/data/magic-m15-aetherdrift-full-art-basics.mse-style/card.png
new file mode 100644
index 000000000..7fa7144ad
Binary files /dev/null and b/data/magic-m15-aetherdrift-full-art-basics.mse-style/card.png differ
diff --git a/data/magic-m15-aetherdrift-full-art-basics.mse-style/card_sample.png b/data/magic-m15-aetherdrift-full-art-basics.mse-style/card_sample.png
new file mode 100644
index 000000000..5096c57b0
Binary files /dev/null and b/data/magic-m15-aetherdrift-full-art-basics.mse-style/card_sample.png differ
diff --git a/data/magic-m15-aetherdrift-full-art-basics.mse-style/image_mask.png b/data/magic-m15-aetherdrift-full-art-basics.mse-style/image_mask.png
new file mode 100644
index 000000000..3b8771b3c
Binary files /dev/null and b/data/magic-m15-aetherdrift-full-art-basics.mse-style/image_mask.png differ
diff --git a/data/magic-m15-aetherdrift-full-art-basics.mse-style/mask_stamp_background_border.png b/data/magic-m15-aetherdrift-full-art-basics.mse-style/mask_stamp_background_border.png
new file mode 100644
index 000000000..97e9436bc
Binary files /dev/null and b/data/magic-m15-aetherdrift-full-art-basics.mse-style/mask_stamp_background_border.png differ
diff --git a/data/magic-m15-aetherdrift-full-art-basics.mse-style/mask_stamp_background_border_triangle.png b/data/magic-m15-aetherdrift-full-art-basics.mse-style/mask_stamp_background_border_triangle.png
new file mode 100644
index 000000000..1fe47d046
Binary files /dev/null and b/data/magic-m15-aetherdrift-full-art-basics.mse-style/mask_stamp_background_border_triangle.png differ
diff --git a/data/magic-m15-aetherdrift-full-art-basics.mse-style/style b/data/magic-m15-aetherdrift-full-art-basics.mse-style/style
new file mode 100644
index 000000000..051f740de
--- /dev/null
+++ b/data/magic-m15-aetherdrift-full-art-basics.mse-style/style
@@ -0,0 +1,342 @@
+mse version: 2.5.0
+game: magic
+short name: DFT Basics
+full name: Aetherdrift Full Art
+icon: card_sample.png
+position hint: 099
+
+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-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:
+ swap_fonts_type_default :=
+ [
+ name: {"Beleren Bold"},
+ size: {26.5},
+ color: { "white" },
+ vertical: {0},
+ italic: {""}
+ ]
+
+ typeline_offset_top_1 := { 294 }
+ typeline_offset_left_1 := { 77 }
+ typeline_offset_width_1 := { -77 }
+ transform_symbol_disabled_1 := { true }
+ card_symbol_disabled_1 := { true }
+ swap_fonts_name_default :=
+ [
+ name: {"Beleren Bold"},
+ size: {30.0},
+ color: { "white" },
+ vertical: {0},
+ italic: {""}
+ ]
+
+ two_types := { styling.second_land_type != "none" }
+
+ card_symbol :=
+ {
+ first := "symbol/" + type_to_letter_map[styling.land_type] + ".png"
+ if not two_types() then first else (
+ second := "symbol/" + type_to_letter_map[styling.second_land_type] + ".png"
+ linear_blend(
+ image1: first,
+ image2: second,
+ x1: 0.49, y1: 0,
+ x2: 0.51, y2: 0
+ ))
+ }
+
+ card_full_name := { value }
+ card_full_name_default := { type_to_name_map[styling.land_type + "," + styling.second_land_type] }
+ name_default := { type_to_name_map[styling.land_type + "," + styling.second_land_type] }
+
+ super_type_filter_default := { (if two_types() then "" else "Basic ") + "Land" }
+ sub_type_filter_default :=
+ {
+ base := to_title(styling.land_type) + (if two_types() then " " + to_title(styling.second_land_type) else "")
+ if base == "Wastes" then "" else base
+ }
+
+ border_color_default := { rgb(246,193,19) }
+
+ type_to_name_map :=
+ [
+ "plains,none": "Plains",
+ "island,none": "Island",
+ "swamp,none": "Swamp",
+ "mountain,none": "Mountain",
+ "forest,none": "Forest",
+ "wastes,none": "Wastes",
+
+ "plains,wastes": "Wasted Plains",
+ "island,wastes": "Wasted Island",
+ "swamp,wastes": "Wasted Swamp",
+ "mountain,wastes": "Wasted Mountain",
+ "forest,wastes": "Wasted Forest",
+ "wastes,wastes": "Wastes",
+
+ "plains,plains": "Plains",
+ "island,plains": "Tundra",
+ "swamp,plains": "Scrubland",
+ "mountain,plains": "Plateau",
+ "forest,plains": "Savannah",
+ "wastes,plains": "Wasted Plains",
+
+ "plains,island": "Tundra",
+ "island,island": "Island",
+ "swamp,island": "Underground Sea",
+ "mountain,island": "Volcanic Island",
+ "forest,island": "Tropical Island",
+ "wastes,island": "Wasted Island",
+
+ "plains,swamp": "Scrubland",
+ "island,swamp": "Underground Sea",
+ "swamp,swamp": "Swamp",
+ "mountain,swamp": "Badlands",
+ "forest,swamp": "Bayou",
+ "wastes,swamp": "Wasted Swamp",
+
+ "plains,mountain": "Plateau",
+ "island,mountain": "Volcanic Island",
+ "swamp,mountain": "Badlands",
+ "mountain,mountain": "Mountain",
+ "forest,mountain": "Taiga",
+ "wastes,mountain": "Wasted Mountain",
+
+ "plains,forest": "Savannah",
+ "island,forest": "Tropical Island",
+ "swamp,forest": "Bayou",
+ "mountain,forest": "Taiga",
+ "forest,forest": "Forest",
+ "wastes,forest": "Wasted Forest"
+ ]
+ type_to_letter_map :=
+ [
+ plains: "w",
+ island: "u",
+ swamp: "b",
+ mountain: "r",
+ forest: "g",
+ wastes: "c",
+ none: "none"
+ ]
+ type_to_color_map :=
+ [
+ plains: ", white",
+ island: ", blue",
+ swamp: ", black",
+ mountain: ", red",
+ forest: ", green",
+ wastes: "",
+ none: ", none"
+ ]
+
+ is_promo := { styling.promo }
+
+ is_unsorted := { styling.remove_from_autocount }
+
+ popout_left := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.0 != "" then clamp(split.0, minimum: -500, maximum: 800) else 0 }
+ popout_top := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.1 != "" then clamp(split.1, minimum: -500, maximum: 1100) else 0 }
+ popout_width := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.2 != "" then clamp(split.2, minimum: 0, maximum: 1500) else 0 }
+ popout_height := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.3 != "" then clamp(split.3, minimum: 0, maximum: 2000) else 0 }
+
+ art_left := { if styling.stretch_art_to_whole_card then 0 else if styling.border != "yes" then 0 else 30 }
+ art_top := { if styling.stretch_art_to_whole_card then 0 else if styling.border != "yes" then 0 else 30 }
+ art_width := { if styling.stretch_art_to_whole_card then stylesheet.card_width else if styling.border != "yes" then stylesheet.card_width else 684 }
+ art_bottom := { if styling.stretch_art_to_whole_card then stylesheet.card_height + 1 else if styling.border != "no" then 954 else stylesheet.card_height + 1 }
+ 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: choice
+ name: land type
+ description: What type is this card?
+ choice: plains
+ choice: island
+ choice: swamp
+ choice: mountain
+ choice: forest
+ choice: wastes
+ initial: plains
+styling field:
+ type: choice
+ name: second land type
+ description: What type is this card?
+ choice:
+ name: none
+ line below: true
+ choice: plains
+ choice: island
+ choice: swamp
+ choice: mountain
+ choice: forest
+ choice: wastes
+ initial: none
+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
+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: black
+
+############################################################## 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/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: 100
+ visible: { styling.border != "no" }
+ mask: { "/magic-modules.mse-include/borders/744x1039/m15/full_art/" + (if styling.border == "yes" then "base.png" else "borderless.png") }
+ ############################# Image
+ image:
+ left: { art_left() }
+ width: { art_width() }
+ top: { art_top() }
+ bottom: { art_bottom() }
+ z index: 0
+ mask: { art_mask() }
+ mainframe image:
+ left: { popout_left() }
+ top: { popout_top() }
+ width: { popout_width() }
+ height: { popout_height() }
+ z index: 1010
+
+############################################################## Extra card fields
+
+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: symbol
+ editable: false
+ save value: false
+ show statistics: false
+ choice: symbol
+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: foil layer
+ editable: false
+ save value: false
+ show statistics: false
+ choice: foil layer
+
+extra card style:
+ card stamp border:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 110
+ visible: { styling.border != "no" and is_stamped() }
+ mask: { if card.card_stamp == "universes beyond" then "mask_stamp_background_border_triangle.png" else "mask_stamp_background_border.png" }
+ card background:
+ left: 0
+ top: 0
+ width: 744
+ height: 1039
+ z index: 200
+ render style: image
+ image: card.png
+ symbol:
+ left: 32
+ top: 868
+ width: 81
+ height: 81
+ z index: 210
+ render style: image
+ image: { card_symbol() }
+ 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-aetherdrift-full-art-basics.mse-style/symbol/b.png b/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/b.png
new file mode 100644
index 000000000..4b37b49de
Binary files /dev/null and b/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/b.png differ
diff --git a/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/c.png b/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/c.png
new file mode 100644
index 000000000..7719c2c81
Binary files /dev/null and b/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/c.png differ
diff --git a/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/g.png b/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/g.png
new file mode 100644
index 000000000..c7991ed40
Binary files /dev/null and b/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/g.png differ
diff --git a/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/r.png b/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/r.png
new file mode 100644
index 000000000..ce1421acb
Binary files /dev/null and b/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/r.png differ
diff --git a/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/u.png b/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/u.png
new file mode 100644
index 000000000..1f60f6bde
Binary files /dev/null and b/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/u.png differ
diff --git a/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/w.png b/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/w.png
new file mode 100644
index 000000000..7fc801dcf
Binary files /dev/null and b/data/magic-m15-aetherdrift-full-art-basics.mse-style/symbol/w.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/border_mask.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/border_mask.png
new file mode 100644
index 000000000..26d0ec11d
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/border_mask.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/border_mask_borderless.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/border_mask_borderless.png
new file mode 100644
index 000000000..116726f21
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/border_mask_borderless.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/border_stamp_mask.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/border_stamp_mask.png
new file mode 100644
index 000000000..55f19173a
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/border_stamp_mask.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/card.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/card.png
new file mode 100644
index 000000000..4297933aa
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/card.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/card_borderless.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/card_borderless.png
new file mode 100644
index 000000000..4643a97cb
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/card_borderless.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/card_sample.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/card_sample.png
new file mode 100644
index 000000000..d5180232f
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/card_sample.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/card_tall.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/card_tall.png
new file mode 100644
index 000000000..0c5ff62ae
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/card_tall.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/card_tall_borderless.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/card_tall_borderless.png
new file mode 100644
index 000000000..c29627679
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/card_tall_borderless.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/image_mask.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/image_mask.png
new file mode 100644
index 000000000..f5322153b
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/image_mask.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/image_mask_borderless.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/image_mask_borderless.png
new file mode 100644
index 000000000..a75042669
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/image_mask_borderless.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/image_mask_tall.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/image_mask_tall.png
new file mode 100644
index 000000000..2be44870d
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/image_mask_tall.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/image_mask_tall_borderless.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/image_mask_tall_borderless.png
new file mode 100644
index 000000000..9fe677ed4
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/image_mask_tall_borderless.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost + shadow.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost + shadow.png
new file mode 100644
index 000000000..0c8535fc1
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost + shadow.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost +.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost +.png
new file mode 100644
index 000000000..c8d7572ac
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost +.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost - shadow.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost - shadow.png
new file mode 100644
index 000000000..d9ca5c32b
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost - shadow.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost -.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost -.png
new file mode 100644
index 000000000..a68516f68
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost -.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost 0 shadow.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost 0 shadow.png
new file mode 100644
index 000000000..ee38c8cf7
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost 0 shadow.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost 0.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost 0.png
new file mode 100644
index 000000000..fdac64f5a
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty cost 0.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty shadow.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty shadow.png
new file mode 100644
index 000000000..86b2fb83b
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty shadow.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty.png
new file mode 100644
index 000000000..61013c9af
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/loyalty.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/nonstamp.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/nonstamp.png
new file mode 100644
index 000000000..51836e2e3
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/nonstamp.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/style b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/style
new file mode 100644
index 000000000..012ac86c0
--- /dev/null
+++ b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/style
@@ -0,0 +1,354 @@
+mse version: 2.5.0
+game: magic
+short name: First-Place PW
+full name: Aetherdrift 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:
+ swap_fonts_body_default :=
+ [
+ name: {"MPlantin"},
+ size: {26.0},
+ color: {styling.rule_text_color},
+ vertical: {0},
+ italic: {"MPlantin-Italic"}
+ ]
+
+ move_typeline := { if use_tall_walker_frame_1() then 70 else 0 }
+
+ typeline_offset_top_1 := { - move_typeline() }
+ swap_fonts_type_default :=
+ [
+ name: {"Beleren Bold"},
+ size: {26.0},
+ color: {"white"},
+ vertical: {0},
+ italic: {""}
+ ]
+
+ transform_symbol_disabled_1 := { true }
+ card_symbol_offset_top_1 := { 1 }
+ card_symbol_offset_left_1 := { 1 }
+ nameline_offset_top_1 := { 1 }
+ nameline_offset_top_1 := { -15 }
+ swap_fonts_name_default :=
+ [
+ name: {"Beleren Bold"},
+ size: {30.0},
+ color: {"white"},
+ vertical: {0},
+ italic: {""}
+ ]
+
+ is_promo := { styling.promo }
+ is_unsorted := { styling.remove_from_autocount }
+
+ 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, minimum: -500, maximum: 1500) else 0 }
+ popout_top := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.1 != "" then clamp(split.1, minimum: -500, maximum: 2000) else 0 }
+ popout_width := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.2 != "" then clamp(split.2, minimum: 0, maximum: 1500) else 0 }
+ popout_height := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.3 != "" then clamp(split.3, minimum: 0, maximum: 2000) else 0 }
+
+ art_left := { if styling.stretch_art_to_whole_card or contains(styling.layout, match: "extended art") then 0 else if use_tall_walker_frame_1() then 54 else 53 }
+ art_top := { if styling.stretch_art_to_whole_card or contains(styling.layout, match: "extended art") then 0 else if use_tall_walker_frame_1() then 106 else 106 }
+ art_width := { if styling.stretch_art_to_whole_card or contains(styling.layout, match: "extended art") then stylesheet.card_width else if use_tall_walker_frame_1() then 635 else 637 }
+ art_height := { if styling.stretch_art_to_whole_card or contains(styling.layout, match: "extended art") then stylesheet.card_height else if use_tall_walker_frame_1() then 398 else 468 }
+
+ art_mask :=
+ {
+ base := "image_mask" +
+ (if use_tall_walker_frame_1() then "_tall" else "") +
+ (if contains(styling.layout, match: "extended art") then "_borderless" else "") +
+ ".png"
+ crop(base, offset_x: art_left(), offset_y: art_top(), width: art_width(), height: art_height())
+ }
+
+ border_color_default := { rgb(246,193,19) }
+
+ loyalty_boxes_image_folder := { "/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/loyalty/" }
+
+ loyalty_cost_offset_text_margin_1 := { 9 }
+
+ 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 "") +
+ (if is_stamped() then "_stamp" else "") +
+ ".png"
+ }
+
+ 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
+styling field:
+ type: choice
+ name: layout
+ description: What should the shape of the card be?
+ choice: normal
+ choice: extended art
+ #choice: rude riders extended art
+ initial: normal
+
+include file: /magic-modules.mse-include/loyalty/styling_formatting
+
+styling field:
+ type: text
+ name: textbox opacity percentage
+ description: Set the opacity percentage for textboxes. Opaque is 100, transparent is 0, default is 0.
+styling field:
+ type: color
+ name: textbox color
+ description: Use the specified color for the textbox background.
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ choice:
+ name: white
+ color: rgb(255,255,255)
+ initial: rgb(255,255,255)
+styling field:
+ type: text
+ name: stripes opacity percentage
+ description: Set the opacity percentage for stripes separating abilities. Opaque is 100, transparent is 0, default is 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: color
+ name: rule text color
+ description: Use the specified color for the rule text.
+ choice:
+ name: black
+ color: rgb(0,0,0)
+ choice:
+ name: white
+ color: rgb(255,255,255)
+ initial: rgb(255,255,255)
+
+include file: /magic-modules.mse-include/texts/styling_fields
+
+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: 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: black
+
+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/typelines/card_fields
+
+include file: /magic-modules.mse-include/namelines/card_fields
+
+card style:
+ ############################# Background stuff
+ border color:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 200
+ mask: { if contains(styling.layout, match: "extended art") then "border_mask_borderless.png" else "border_mask.png" }
+ ############################# Image
+ image:
+ left: { art_left() }
+ top: { art_top() }
+ width: { art_width() }
+ height: { art_height() }
+ 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: 97
+ top: { 653 - move_typeline() + chop_top() + (if is_stamped() then 4 else 0) + body_font_vertical() }
+ right: { 677 - chop_right() }
+ bottom: { 947 - chop_bottom() - if is_stamped() then 7 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: 2.2
+ 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: 12
+ color: { body_font_color() }
+ symbol font:
+ name: { styling.text_box_mana_symbols }
+ size: { body_font_size() }
+ scale down to: 12
+
+############################################################## 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: card stamp rim
+ script: card.card_color
+ editable: false
+ save value: false
+ show statistics: false
+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: 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: 220
+ render style: image
+ image:
+ script:
+ "card" +
+ (if use_tall_walker_frame_1() then "_tall" else "") +
+ (if contains(styling.layout, match: "extended art") then "_borderless" else "") +
+ ".png"
+ card stamp rim:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 230
+ visible: { not is_stamped() }
+ render style: image
+ image: nonstamp.png
+ card stamp border:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 210
+ visible: { is_stamped() and not contains(styling.layout, match: "extended art") }
+ mask: border_stamp_mask.png
+ 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-aetherdrift-first-place-walker.mse-style/textbox_mask.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/textbox_mask.png
new file mode 100644
index 000000000..c349083c3
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/textbox_mask.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/textbox_mask_stamp.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/textbox_mask_stamp.png
new file mode 100644
index 000000000..53aee4892
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/textbox_mask_stamp.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/textbox_mask_tall.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/textbox_mask_tall.png
new file mode 100644
index 000000000..8ff91fa5a
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/textbox_mask_tall.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/textbox_mask_tall_stamp.png b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/textbox_mask_tall_stamp.png
new file mode 100644
index 000000000..0c16c8e92
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place-walker.mse-style/textbox_mask_tall_stamp.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/border_mask.png b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/border_mask.png
new file mode 100644
index 000000000..7d113bc06
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/border_mask.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/border_mask_borderless.png b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/border_mask_borderless.png
new file mode 100644
index 000000000..4f6506d0a
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/border_mask_borderless.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/border_stamp_mask.png b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/border_stamp_mask.png
new file mode 100644
index 000000000..55f19173a
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/border_stamp_mask.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/card.png b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/card.png
new file mode 100644
index 000000000..fa685b087
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/card.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/card_borderless.png b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/card_borderless.png
new file mode 100644
index 000000000..cc0e97814
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/card_borderless.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/card_sample.png b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/card_sample.png
new file mode 100644
index 000000000..471dd60d4
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/card_sample.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/crown.png b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/crown.png
new file mode 100644
index 000000000..73af7c119
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/crown.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/foil_mask.png b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/foil_mask.png
new file mode 100644
index 000000000..6e973a6d5
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/foil_mask.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/foil_mask_crown.png b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/foil_mask_crown.png
new file mode 100644
index 000000000..994e3662e
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/foil_mask_crown.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/foil_mask_pt.png b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/foil_mask_pt.png
new file mode 100644
index 000000000..4461bf3da
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/foil_mask_pt.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/foil_mask_stamp.png b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/foil_mask_stamp.png
new file mode 100644
index 000000000..54e49f548
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/foil_mask_stamp.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/image_mask.png b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/image_mask.png
new file mode 100644
index 000000000..7749c7735
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/image_mask.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/image_mask_borderless.png b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/image_mask_borderless.png
new file mode 100644
index 000000000..3610a8a00
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/image_mask_borderless.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/pt.png b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/pt.png
new file mode 100644
index 000000000..70f6c1d55
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/pt.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/stamp.png b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/stamp.png
new file mode 100644
index 000000000..5863cbdae
Binary files /dev/null and b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/stamp.png differ
diff --git a/data/magic-m15-showcase-aetherdrift-first-place.mse-style/style b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/style
new file mode 100644
index 000000000..22e197390
--- /dev/null
+++ b/data/magic-m15-showcase-aetherdrift-first-place.mse-style/style
@@ -0,0 +1,362 @@
+mse version: 2.5.0
+game: magic
+short name: First-Place
+full name: Aetherdrift 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 }
+
+ type_offset_top_1 := { -1 }
+ rarity_offset_top_1 := { 3 }
+
+ 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"}
+ ]
+
+ 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 4 else 0 }
+
+ border_color_default := { rgb(246,193,19) }
+
+ #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 then 0 else if contains(styling.layout, match: "extended art") then 0 else 58 }
+ art_top := { if styling.stretch_art_to_whole_card then 0 else if contains(styling.layout, match: "extended art") then 0 else 118 }
+ art_width := { if styling.stretch_art_to_whole_card then stylesheet.card_width else if contains(styling.layout, match: "extended art") then stylesheet.card_width else 627 }
+ art_height := { if styling.stretch_art_to_whole_card then stylesheet.card_height else if contains(styling.layout, match: "extended art") then 918 else 459 }
+
+ art_mask :=
+ {
+ base := if contains(styling.layout, match: "extended art") then "image_mask_borderless.png" else "image_mask.png"
+ crop(base, offset_x: art_left(), offset_y: art_top(), width: art_width(), height: art_height())
+ }
+
+############################################################## 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
+styling field:
+ type: choice
+ name: layout
+ description: What should the shape of the card be?
+ choice: normal
+ choice: extended art
+ #choice: rude riders extended art
+ initial: normal
+
+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: 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: 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: black
+
+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
+ mask: { if contains(styling.layout, match: "extended art") then "border_mask_borderless.png" else "border_mask.png" }
+ ############################# Image
+ image:
+ left: { art_left() }
+ top: { art_top() }
+ width: { art_width() }
+ height: { art_height() }
+ 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: { 666 + chop_top() + (if is_stamped() then 3 else 0) + body_font_vertical() }
+ right: 678
+ bottom: { 948 - chop_bot() - if is_stamped() then 6 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:
+ 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: 591
+ top: { 931 + 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: card stamp rim
+ script: card.card_color
+ editable: false
+ save value: false
+ show statistics: false
+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: 210
+ render style: image
+ image: { if contains(styling.layout, match: "extended art") then "card_borderless.png" else "card.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 rim:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 330
+ visible: { is_stamped() }
+ render style: image
+ image: stamp.png
+ card stamp border:
+ left: 0
+ top: 0
+ width: { stylesheet.card_width }
+ height: { stylesheet.card_height }
+ z index: 310
+ visible: { is_stamped() }
+ mask: border_stamp_mask.png
+ 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-modules.mse-include/loyalty/loyalty.png b/data/magic-modules.mse-include/loyalty/loyalty.png
index 7096ecff9..02e68a5c7 100644
Binary files a/data/magic-modules.mse-include/loyalty/loyalty.png and b/data/magic-modules.mse-include/loyalty/loyalty.png differ
diff --git a/data/magic-modules.mse-include/loyalty/readme.txt b/data/magic-modules.mse-include/loyalty/readme.txt
index 686c46553..0bd1c5c20 100644
--- a/data/magic-modules.mse-include/loyalty/readme.txt
+++ b/data/magic-modules.mse-include/loyalty/readme.txt
@@ -68,3 +68,13 @@ loyalty_textbox_mask_1 :=
then "/magic-modules.mse-include/loyalty/default_textbox_stamp_mask.png"
else "/magic-modules.mse-include/loyalty/default_textbox_mask.png"
}
+
+#### To change the default transparency percentage for the stripes and textboxes:
+loyalty_stripe_alpha_default := { 40 }
+loyalty_textbox_background_alpha_default := { 70 }
+
+#### To change the folder from which the ability box images are taken:
+#### You must write the path of the folder starting from the data folder
+#### The image files must have the same names as the ones in the default folder (/magic-modules.mse-include/loyalty/)
+#### You can omit some images and it will use the default ones instead
+loyalty_boxes_image_folder := { "/magic-modules.mse-include/loyalty/" }
diff --git a/data/magic-modules.mse-include/loyalty/styling_formatting b/data/magic-modules.mse-include/loyalty/styling_formatting
index 99c5c88d9..f512f6fc3 100644
--- a/data/magic-modules.mse-include/loyalty/styling_formatting
+++ b/data/magic-modules.mse-include/loyalty/styling_formatting
@@ -15,7 +15,7 @@ styling field:
styling field:
type: choice
name: use tall frame
- description: Determines when to use the tall frame.
+ description: Determines when to use the tall frame. Default uses the tall frame when there are four abilities or more.
choice: default
choice: always
choice: never
diff --git a/data/magic-modules.mse-include/loyalty/styling_formatting_dfc b/data/magic-modules.mse-include/loyalty/styling_formatting_dfc
index 42fce9d1d..505d8b35a 100644
--- a/data/magic-modules.mse-include/loyalty/styling_formatting_dfc
+++ b/data/magic-modules.mse-include/loyalty/styling_formatting_dfc
@@ -15,7 +15,7 @@ styling field:
styling field:
type: choice
name: use tall frame 2
- description: Determines when to use the tall frame.
+ description: Determines when to use the tall frame. Default uses the tall frame when there are four abilities or more.
choice: default
choice: always
choice: never
diff --git a/data/magic.mse-game/script b/data/magic.mse-game/script
index c37afb6b1..6cd6364ed 100644
--- a/data/magic.mse-game/script
+++ b/data/magic.mse-game/script
@@ -51,6 +51,7 @@ has_png := contains@(match:".png")
has_none := contains@(match: "none")
starts_vowel := match@(match:"[aâäàáeêëèéiîïìíoôöòóuûüùúAÂÄÀÁEÊËÈÉIÎÏÌÍOÔÖÒÓUÛÜÙÚ]")
+ends_dash := match@(match: "/$")
remove_comma := replace@(match: ",", replace: "")
long_dash := replace@(match:"-", replace:"—")
@@ -3430,11 +3431,17 @@ loyalty_cost_box_default :=
else if contains(cost, match: "-") then "-, shadow"
else "0, shadow"
}
+loyalty_boxes_image_folder := { "/magic-modules.mse-include/loyalty/" }
loyalty_cost_box_image :=
{
shape := remove_comma(loyalty_cost_box_field(input + (instance-1)*8))
if contains(shape, match: "none") then ""
- else "/magic-modules.mse-include/loyalty/loyalty cost " + shape + ".png"
+ else (
+ folder := loyalty_boxes_image_folder()
+ if not ends_dash(folder) then folder := folder + "/"
+ name := "loyalty cost " + shape + ".png"
+ path := folder + name
+ if exists_in_package(path) then path else "/magic-modules.mse-include/loyalty/" + name)
}
loyalty_field :=
@@ -3460,7 +3467,12 @@ loyalty_box_image :=
{
shape := remove_comma(loyalty_box_field(instance))
if has_none(shape) then ""
- else "/magic-modules.mse-include/loyalty/" + shape + ".png"
+ else (
+ folder := loyalty_boxes_image_folder()
+ if not ends_dash(folder) then folder := folder + "/"
+ name := shape + ".png"
+ path := folder + name
+ if exists_in_package(path) then path else "/magic-modules.mse-include/loyalty/" + name)
}
loyalty_face_1 := { 1 }
@@ -3747,10 +3759,11 @@ loyalty_stripe_mask :=
)
)
}
+loyalty_stripe_alpha_default := { "40" }
loyalty_stripe_separator_image :=
{
color := if instance <= 1 then (styling.stripes_color or else rgb(255,255,255)) else (styling["stripes_color_" + instance] or else rgb(255,255,255))
- alpha := if instance <= 1 then (styling.stripes_opacity_percentage or else "40") else (styling["stripes_opacity_percentage_" + instance] or else "40")
+ alpha := if instance <= 1 then (styling.stripes_opacity_percentage or else loyalty_stripe_alpha_default()) else (styling["stripes_opacity_percentage_" + instance] or else loyalty_stripe_alpha_default())
set_alpha(
recolor_image(
"/magic-modules.mse-include/loyalty/stripe_" + (if (input mod 2) == 0 then "top" else "bottom") + ".png",
@@ -3758,14 +3771,14 @@ loyalty_stripe_separator_image :=
),
alpha: get_alpha_percentage(
alpha,
- default: 40
+ default: loyalty_stripe_alpha_default()
)
)
}
loyalty_stripe_image :=
{
color := if instance <= 1 then (styling.stripes_color or else rgb(255,255,255)) else (styling["stripes_color_" + instance] or else rgb(255,255,255))
- alpha := if instance <= 1 then (styling.stripes_opacity_percentage or else "40") else (styling["stripes_opacity_percentage_" + instance] or else "40")
+ alpha := if instance <= 1 then (styling.stripes_opacity_percentage or else loyalty_stripe_alpha_default()) else (styling["stripes_opacity_percentage_" + instance] or else loyalty_stripe_alpha_default())
set_alpha(
recolor_image(
"/magic-modules.mse-include/loyalty/color.png",
@@ -3773,14 +3786,15 @@ loyalty_stripe_image :=
),
alpha: get_alpha_percentage(
alpha,
- default: 40
+ default: loyalty_stripe_alpha_default()
)
)
}
+loyalty_textbox_background_alpha_default := { "70" }
loyalty_textbox_background_image :=
{
color := if instance <= 1 then (styling.textbox_color or else rgb(255,255,255)) else (styling["textbox_color_" + instance] or else rgb(255,255,255))
- alpha := if instance <= 1 then (styling.textbox_opacity_percentage or else "70") else (styling["textbox_opacity_percentage_" + instance] or else "70")
+ alpha := if instance <= 1 then (styling.textbox_opacity_percentage or else loyalty_textbox_background_alpha_default()) else (styling["textbox_opacity_percentage_" + instance] or else loyalty_textbox_background_alpha_default())
set_alpha(
recolor_image(
"/magic-modules.mse-include/loyalty/color.png",
@@ -3788,7 +3802,7 @@ loyalty_textbox_background_image :=
),
alpha: get_alpha_percentage(
alpha,
- default: 70
+ default: loyalty_textbox_background_alpha_default()
)
)
}