Files
magic-set-editor-fork/data/magic-m15-saga.mse-style/style
2026-03-29 18:59:00 +02:00

1483 lines
47 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
mse version: 2.0.0
game: magic
short name: M15 Sagas
full name: Saga, Class, Case
installer group: magic/m15 style/sagas
icon: card-sample.png
position hint: 010
version: 2024-09-23
depends on:
package: magic.mse-game
version: 2014-06-25
depends on:
package: magic-modules.mse-include
version: 2024-10-01
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-mainframe-extras.mse-include
version: 2018-01-01
card width: 375
card height: 523
card dpi: 150
############################################################## Extra scripts
init script:
# Should hybrids have a grey name?
mask_hybrid_with_land := { styling.grey_hybrid_name }
template_prefix := [
card: "/magic-modules.mse-include/cards/375 m15 saga/"
pt: "/magic-modules.mse-include/pts/375 m15/"
mark: "bookmark/"
nyx:"/magic-modules.mse-include/trims/nyx/",
snow:"/magic-modules.mse-include/trims/snow/",
beyond:"/magic-modules.mse-include/trims/beyond/",
crown:"/magic-modules.mse-include/crowns/375/",
star: "/magic-modules.mse-include/trims/star/",
identity: "/magic-modules.mse-include/indicators/"
]
template_suffix := [
card: "card.jpg"
snow:"snow.png"
pt:"pt.png"
mark: "mark.png"
stamp: "stamp.png"
nyx:"nyx.png"
beyond:"beyond.png"
crown:"crown.png"
star: "star.png"
identity: "identity.png"
]
template := {
if type_name(harder_script[type] or else nil) != type_name(nil)
then harder_script[type](input, land:false)
else template_prefix[type] + input + template_suffix[type]
}
land_template := {
if type_name(harder_script[type] or else nil) != type_name(nil)
then harder_script[type](input, land:true)
else template_prefix[type] + (if input == "a" then "c" else input) + (if landless(type) then "" else "l") + template_suffix[type]
}
# Use land templates for previews because they show more contrast
hybrid_previews := "land,hybrid"
landless := { landless_ar[input] or else false }
landless_ar := [
nyx: true,
crown: true,
star:true
]
watermark_include := "/magic-modules.mse-include/watermarks"
is_unsorted := {styling.remove_from_autocount}
# Use the normal tap symbol
mana_t := {
if styling.tap_symbol == "old" then "old"
else if styling.tap_symbol == "diagonal T" then "older"
else "new"
}
# Use guild mana symbols?
guild_mana := { styling.use_guild_mana_symbols }
paintbrush_color := {
if to_int(card.border_color) < 96 then "white" else "black"
}
# Loyalty cost arrows
loyalty_image := {
if contains(input, match: "+") then "loyalty up"
else if contains(input, match: "-") then "loyalty down"
else "loyalty naught"
}
card_shape := { if contains(styling.other_options, match: "class") then "class" else "saga" }
# Is the card a promo card?
is_promo := { styling.promo }
starting_loyalty := {chosen(styling.other_options, choice:"use starting loyalty")}
split_12 := {to_number(pull_comma_array(styling.chapter_divider_coordinates, cell:0, end:true, default:(if one_box() then 437 else if two_boxes() then 296 else if four_boxes() then 225 else 249)))}
split_23 := {to_number(pull_comma_array(styling.chapter_divider_coordinates, cell:1, end:true, default:(if one_box() then 437 else if two_boxes() then 437 else if four_boxes() then 296 else 343)))}
split_34 := {to_number(pull_comma_array(styling.chapter_divider_coordinates, cell:2, end:true, default:(if one_box() then 437 else if three_boxes() then 437 else if four_boxes() then 367 else 437)))}
coords_map := [
1: {[card_style.level_1_text.top, card_style.level_1_text.bottom-card_style.level_1_text.top]},
2: {[card_style.level_2_text.top, card_style.level_2_text.bottom-card_style.level_2_text.top]},
3: {[card_style.level_3_text.top, card_style.level_3_text.bottom-card_style.level_3_text.top]},
4: {[card_style.level_4_text.top, card_style.level_4_text.bottom-card_style.level_4_text.top]},
5: {[card_style.level_5_text.top, card_style.level_5_text.bottom-card_style.level_5_text.top]}
]
auto_snap := {
snap_array := split_comma(styling.snap_chapter_to_box)
abil := to_number(pull_comma_array(styling.snap_chapter_to_box, cell:input-1, end:false)) ###textbox to snap to
if abil == 0 then 600 else snap_calc(input, snap_array:snap_array, abil:abil)
}
snap_calc := {
out := 0
abil_array := saga_lore_count(snap_array) ###chapters in each box
ch_count := abil_array[abil-1] ###chapters in this box
self_index := saga_ch_placement(snap_array)[input-1] ###input's index
box_deets := coords_map[abil]() ###[top, height]
remain := box_deets[1] - 30*ch_count ###remaining space after chapter hexes
excess := remain - 10*(ch_count-1) ###remaining after 10px gaps
if excess >= 0 then out := box_deets[0] + excess/2 + 40*(self_index-1) ###top + buffer*index + hex*index-1
else ( ###may not be enough room to ten-gap the middle
inner_gap := 10
squeeze := 0
outer_gap := (remain - inner_gap * (ch_count-1))/2
if outer_gap < -6 then (
squeeze := 2*(outer_gap+6)/(ch_count-1);
outer_gap := -6
)
inner_gap := inner_gap + squeeze
out := box_deets[0] + outer_gap + (self_index-1)*(30+inner_gap)
)
out
}
snapping_chapters := {
splits := split_comma(styling.snap_chapter_to_box)
len := length(splits)
if styling.snap_chapter_to_box == ""
then 0
else if splits[len-1] == ""
then len - 1
else len
}
chapter0 := { if styling.reminder_coordinate != "" then max(60,min(to_number(styling.reminder_coordinate),438)) else 155}
chapter1 := { if snapping_chapters() > 0 then auto_snap(1) else to_number(pull_comma_array(styling.chapter_number_coordinates, cell:0, end:true, default:(if two_boxes() then 183 else 185))) }
chapter2 := { if snapping_chapters() > 1 then auto_snap(2) else to_number(pull_comma_array(styling.chapter_number_coordinates, cell:1, end:true, default:(if two_boxes() then 223 else 279))) }
chapter3 := { if snapping_chapters() > 2 then auto_snap(3) else to_number(pull_comma_array(styling.chapter_number_coordinates, cell:2, end:true, default:(if two_boxes() then 329 else 373))) }
chapter4 := { if snapping_chapters() > 3 then auto_snap(4) else to_number(pull_comma_array(styling.chapter_number_coordinates, cell:3, end:true, default:600)) }
chapter5 := { if snapping_chapters() > 4 then auto_snap(5) else to_number(pull_comma_array(styling.chapter_number_coordinates, cell:4, end:true, default:600)) }
chapter6 := { if snapping_chapters() > 5 then auto_snap(6) else to_number(pull_comma_array(styling.chapter_number_coordinates, cell:5, end:true, default:600)) }
chapter_custom := { if snapping_chapters() > 6 then auto_snap(7) else to_number(pull_comma_array(styling.custom_chapter_coordinate, cell:0, end:false, default:600)) }
custom_chapter_node := {if contains(styling.custom_chapter_location, match:".png") then "/magic-mainframe-extras.mse-include/" + styling.custom_chapter_location else "chapter6.png"}
custom_name := {if styling.custom_chapter_name == "" then "C" else styling.custom_chapter_name}
comma_count := filter_text@(match:",")
shrink_type := {if styling.shrink_typeline_text != "" then to_int(styling.shrink_typeline_text) else 0 }
shrink_name := {if styling.shrink_name_text != "" then to_int(styling.shrink_name_text) else 0 }
text_size := { 13 -(if styling.separated_text_size == "" then 0 else to_number(styling.separated_text_size))}
build_array := {
if input > 523 or input < 0 then 0
else if four_boxes() and input +17 >= (if split_34() != "" then split_34() else 600) then 4
else if (four_boxes() or three_boxes()) and input +17 >= (if split_23() != "" then split_23() else 343) then 3
else if not one_box() and input +17 >= (if split_12() != "" then split_12() else 249) then 2
else if input +17 <= (if split_12() != "" then split_12() else 249) then 1
else 0
}
alt_leaders := {
alt := ["I,","II,","III,","IV,","V,","VI,"]
if match(card.notes, match:"!altleader [^,]+,") then
alt := break_text(split_text(card.notes, match:"!altleader ").1, match:"[^,]+,")
alt
}
level_leader := {
alt := alt_leaders()
(if build_array((if chapter1() != "" then chapter1() else 185)) == input then alt.0 + " " else "")
+(if build_array((if chapter2() != "" then chapter2() else 279)) == input then alt.1 + " " else "")
+(if build_array((if chapter3() != "" then chapter3() else 373)) == input then alt.2 + " " else "")
+(if build_array((if chapter4() != "" then chapter4() else 600)) == input then alt.3 + " " else "")
+(if build_array((if chapter5() != "" then chapter5() else 600)) == input then alt.4 + " " else "")
+(if build_array((if chapter6() != "" then chapter6() else 600)) == input then alt.5 + " " else "")
+(if build_array((if chapter_custom() != "" then chapter_custom() else 600)) == input then custom_name() + ", " else "")
}
end_leader := replace@(match:", $", replace:" — ")
special_text := {
if is_class() then
(
(if card.chapter_text == "" then saga_reminder() else card.chapter_text)
+(if card.level_1_text != "" then "\n" + card.level_1_text)
+(if card.level_2_text != "" then "\n" + card.level_9_text + (if card.level_2 == "" then " Level 2" else " " + card.level_2) + "\n" + card.level_2_text)
+(if card.level_3_text != "" then "\n" + card.level_10_text + (if card.level_3 == "" then " Level 3" else " " + card.level_3) + "\n" + card.level_3_text)
+(if card.level_4_text != "" then "\n" + card.level_11_text + (if card.level_4 == "" then " Level 4" else " " + card.level_4) + "\n" + card.level_4_text)
)
else if is_case() then (
card.level_1_text + "\n"
+card.level_2_text + "\n"
+card.level_3_text
)
else
(
card.chapter_text
+(if card.level_1_text != "" then "\n" + end_leader(level_leader(1)) + card.level_1_text)
+(if card.level_2_text != "" then "\n" + end_leader(level_leader(2)) + card.level_2_text)
+(if card.level_3_text != "" then "\n" + end_leader(level_leader(3)) + card.level_3_text)
+(if card.level_4_text != "" then "\n" + end_leader(level_leader(4)) + card.level_4_text)
)
}
saga_rules_text := { chapter3() + "|" + (if split_12() != "" then split_12() else 249) + "|" + (if split_23() != "" then split_23() else 343) }
one_box := {styling.chapter_textboxes == "one" }
two_boxes := {styling.chapter_textboxes == "two" }
three_boxes := {styling.chapter_textboxes == "three" or comma_count(styling.chapter_divider_coordinates) == ",,"}
four_boxes := {styling.chapter_textboxes == "four" or comma_count(styling.chapter_divider_coordinates) == ",,,"}
use_main_rarity := { contains(set.mainframe_rarity_name, match: ".png")}
un_png := replace@(match:".png", replace: "")
a_saga := {true}
saga_reminder := { if styling.alternate_reminder != "" then styling.alternate_reminder else if is_class() then "Gain the next level as a sorcery to add its ability." else "As this Saga enters and after your draw step, add a lore counter. Sacrifice after III." }
is_class := {contains(styling.other_options, match:"class") or lang_setting("is_class")(remove_tags(card.sub_type))}
is_case := {contains(styling.other_options, match:"case") or lang_setting("is_case")(remove_tags(card.sub_type))}
is_saga := {not is_class() and not is_case()}
un_marked := {is_class() or is_case() or contains(styling.other_options, match:"remove bookmark")}
is_legend := { auto_legend() }
is_vehicle := { auto_vehicle() or contains(styling.other_options, match:"vehicle") }
is_nyx := { auto_nyx() or contains(styling.other_options, match:"nyx") }
is_snow := { auto_snow() or contains(styling.other_options, match:"snow") }
auto_legend := { set.auto_legends and lang_setting("is_legendary")(card.super_type) }
auto_vehicle := { contains(styling.auto_frames, match:"vehicle") and lang_setting("is_vehicle")(card.sub_type) }
auto_nyx := {
is_ench := lang_setting("is_enchantment")(card.super_type)
if not is_ench
then false ## not an enchantment
else if not set.auto_nyx
then false ## set auto disabled
else if not chosen(styling.auto_frames, choice:"nyx")
then false ## style auto disabled
else true ## auto nyx
}
auto_snow := { contains(styling.auto_frames, match:"snow") and lang_setting("is_snow")(card.super_type) }
is_beyond := {
chosen(styling.other_options, choice:"universes beyond")
or (chosen(styling.auto_frames, choice:"universes beyond") and (card.card_stamp == "universes beyond" or card.card_stamp == "flatstamped universes beyond"))
}
nyx_background := { color_background(type:"nyx", base_hybrid:card_hybrid) }
snow_background := { color_background(type:"snowtexture", base_hybrid:card_hybrid) }
bookmark_background := { color_background(type:"mark", base_hybrid:card_hybrid) }
beyond_background := { color_background(type:"beyond", base_hybrid:card_hybrid, folder:template_prefix["beyond"]) }
crown_background := { color_background(type:"crown", base_hybrid: card_hybrid)}
custom_border_blend := { color_background(type:"custom_border", base_hybrid:card_hybrid) }
alt_loc := { if styling.replacement_chapter_location != "" then styling.replacement_chapter_location else "no"}
alt_chapters := { (if match(styling.replacement_chapter_location, match:"/$") then "/magic-mainframe-extras.mse-include/" + styling.replacement_chapter_location else "") + "chapter" + input + ".png"}
alt_text := {is_class() or is_case()}
alt_text_script := {
if is_class()
then combined_editor(field1: card.chapter_text, separator1:"<line>\n</line>", field2: card.level_1_text, separator2: "<line>\n</line>", field3: card.level_2_text, separator3: "<line>\n</line>", field4: card.level_3_text, separator4: "<line>\n</line>", field5: card.level_4_text)
else combined_editor(field1: card.level_1_text, separator1:"<line>\n</line>", field2: card.level_2_text, separator2: "<line>\n</line>", field3: card.level_3_text)
}
lev0 := {
if card_style.text.layout.separator[0] or else 0 > 0 then card_style.text.top+card_style.text.layout.separator[0]-1 else 600
}
lev2 := {
if card_style.text.layout.separator[1] or else 0 > 0 then card_style.text.top+card_style.text.layout.separator[1]-13 else 600
}
lev3 := {
if card_style.text.layout.separator[2] or else 0 > 0 then card_style.text.top+card_style.text.layout.separator[2]-13 else 600
}
lev4 := {
if card_style.text.layout.separator[3] or else 0 > 0 then card_style.text.top+card_style.text.layout.separator[3]-13 else 600
}
text_filter := text_filter + {apply_margins(input, name:margin_code)} + {add_spacers(input, name:margin_code)}
margin_top := {
if is_saga() then 0 else if input == "lv2" or (input == "lv3" and card.level_3_text != "") or (input == "lv4" and card.level_4_text != "") then 30 else 0
}
###add blank spaces to inner levels so they still are clickable while "empty"
add_spacers := { if input == "" and (margin_code == "lv1" or margin_code == "lv2" or margin_code == "lv3") then "" else input}
class_bar := {
if styling.class_levels == "custom" and has_png(styling.custom_class_bar)
then "/magic-mainframe-extras.mse-include/" + styling.custom_class_bar
else if styling.class_levels == "line"
then "levelline.png"
else if styling.class_levels == "cyber"
then "levelcyber.png"
else if styling.class_levels == "unnotched"
then "levelbar.png"
else "level.png"
}
level_label_font_size := {
if styling.level_label_font_size != "" then styling.level_label_font_size else 11
}
custom_border_image := {
src := styling.custom_border_source
ps := split_text(src, match:"-color-")
if length(ps) > 1 then
"/magic-mainframe-extras.mse-include/" + ps[0] + input + (if land then "l" else "") + ps[1]
else
"/magic-mainframe-extras.mse-include/" + src
}
is_custom := {contains(styling.other_options, match:"custom border") and contains(styling.custom_border_source, match:".png")}
# this goes at the very end
harder_script := [
crown: module_crown_template,
custom_border: custom_border_image,
alt_nyx: alt_nyx_template
]
############################################################## Set info fields
set info style:
symbol:
variation:
name: invertedcommon
border radius: 0.10
fill type: solid
fill color: rgb(255,255,255)
border color: rgb(0,0,0)
############################################################## Extra style options
styling field:
type: choice
name: chapter textboxes
description: How many textboxes does this Saga have?
choice: one
choice: two
choice: three
choice: four
initial: three
styling field:
type: text
name: snap chapter to box
description: Sets the chapter symbols to the given textbox, fo example "1,1,2," for I, II - Ability 1; III - Ability 2
styling field:
type: text
name: chapter divider coordinates
description: Sets the position of the chapter breaks. Formatted as "1,2," Defaults are "296," for two "249,343," for three and "225,296,367," for four.
styling field:
type: text
name: reminder coordinate
description: Sets the position of the chapter breaks. Formatted as "1,2," Defaults are "296," for two "249,343," for three and "225,296,367," for four.
styling field:
type: text
name: separated text size
description: Use to standardize the font size of separated abilities. Default is size 13.
styling field:
type: text
name: reminder text size
description: Use to give the reminder text a different font size from the main abilities. Default is size 13.
styling field:
type: text
name: alternate reminder
description: Change the reminder text that is generated for new cards
styling field:
type: text
name: custom chapter location
description: The location of the custom chapter symbol inside magic-mainframe-extras
styling field:
type: text
name: custom chapter name
description: Set how this symbol will be called in text exports (ie I, II...). Default is C.
styling field:
type: multiple choice
name: auto frames
description: Automatically applies frames for multi-typed enchantments, snow, or Vehicles.
choice: nyx
choice: vehicle
choice: snow
choice: universes beyond
initial: nyx, vehicle, snow, universes beyond
styling field:
type: multiple choice
name: other options
choice: nyx
choice: vehicle
choice: snow
choice: class
choice: case
choice: universes beyond
choice: custom border
choice: use starting loyalty
choice: remove bookmark
styling field:
type: text
name: custom border source
description: Use this file from magic-mainframe-extras as a custom vehicle-like frame. if colored, name images like "wborder.png" and put "-color-border.png" here.
styling field:
type: choice
name: class levels
description: Which type of level bar should classes use?
choice: notched
choice: unnotched
choice: line
choice: cyber
choice: custom
styling field:
type: text
name: custom class bar
description: Location of 158x25 image in magic-mainframe-extras to use as class bars
styling field:
type: text
name: shrink name text
description: Reduces the name text N points.
styling field:
type: text
name: shrink typeline text
description: Reduces the typeline text N points.
styling field:
type: text
name: level label font size
description: The font size for the class level labels. Default is 11.
styling field:
type: text
name: popout image style
description: The styling instructions for the popout image field, formatted as "left,top,width,height,". The text MUST end with a comma.
styling field:
type: choice
name: legend crown
choice: standard
choice: nyx
choice: companion
choice: custom
description: The type of legend crown to use for this card.
styling field:
type: text
name: custom crown location
description: location of custom legend crown images in magic-mainframe-extras
styling field:
type: text
name: replacement chapter location
description: location of replacement chapter symbols in magic-mainframe-extras, formatted as "folder/"
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: text
name: chapter number coordinates
description: Sets the chapter symbols at the given height. Formatted as "1,2,3," Defaults are "183,223,329," for two and "185,279,373," for three. Use 40px offset.
styling field:
type: text
name: custom chapter coordinate
description: Set the custom symbol at the given height
styling field:
type: boolean
name: wider watermarks
description: Use the full watermark size for custom full-size backgrounds.
initial: no
include file: /magic-modules.mse-include/rarities/styling_fields
styling field:
type: boolean
name: grey hybrid name
description: Use a grey background for the name and type line on hybrid cards. This is done on real cards.
styling field:
type: boolean
name: use guild mana symbols
description: Use the Ravnica guild symbols instead of the official half/half circles for hybrid mana.
initial: no
styling field:
type: package choice
name: casting cost mana symbols
match: magic-mana-*.mse-symbol-font
initial: magic-mana-large.mse-symbol-font
styling field:
type: package choice
name: text box mana symbols
match: magic-mana-*.mse-symbol-font
initial: magic-mana-small.mse-symbol-font
styling field:
type: choice
name: tap symbol
description: What tap and untap symbols should be used on cards?
initial: modern
choice: modern
choice: old
choice: diagonal T
styling field:
type: choice
name: center text
description: When to center text (short text only means only on one-line cards with no flavor text)
choice: always
choice: short text only
choice: never
initial: never
styling field:
type: boolean
name: promo
description: Is this card a promo card, with the "P" rarity?
initial: no
styling field:
type: boolean
name: inverted common symbol
description: Should the common rarity symbol be inverted, like in Coldsnap?
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 style:
use guild mana symbols:
choice images:
yes: /magic-mana-small.mse-symbol-font/mana_guild_rg.png
no: /magic-mana-small.mse-symbol-font/mana_rg.png
tap symbol:
render style: both
choice images:
modern: /magic-mana-large.mse-symbol-font/mana_t.png
old: /magic-mana-large.mse-symbol-font/mana_t_old.png
diagonal T: /magic-mana-large.mse-symbol-font/mana_t_older.png
center text:
render style: both
choice images:
always: /magic.mse-game/icons/center-all-text.png
short text only: /magic.mse-game/icons/center-short-text.png
never: /magic.mse-game/icons/center-no-text.png
inverted common symbol:
choice images:
no: { symbol_variation(symbol: set.symbol, variation: "common") }
yes: { symbol_variation(symbol: set.symbol, variation: "invertedcommon") }
auto frames:
render style: checklist
direction: vertical
other options:
render style: checklist
direction: vertical
############################################################## Card fields
include file: /magic-modules.mse-include/corners/card_fields
include file: /magic-modules.mse-include/information/card_fields
include file: /magic-modules.mse-include/card-symbols/card_fields
include file: /magic-modules.mse-include/stamps/card_fields
card style:
############################# Background stuff
border color:
left: 0
top : 0
width: 375
height: 523
radius: 18
left width: 17
right width: 17
top width: 17
bottom width: 18
z index: 500
mask: { (if is_legend() then "crown_border" else "border_mask") + (if card.border_color == rgb(200,200,200) then "_silver" else "") + ".png" }
card color:
left: 0
top: 0
width: 375
height: 523
z index: 100
render style: image
popup style: in place
image: { module_card() }
############################# Name line
name:
left: { if card.card_symbol=="none" then 32 else 50 }
top: 30
right: { 341 - card_style.casting_cost.content_width }
height: { 23- (0.5 * shrink_name())}
alignment: bottom shrink-overflow
padding bottom: 0
z index: 900
font:
name: Beleren Bold
size: {16 - shrink_name()}
color: black
casting cost:
right: 346
top: 29
width: { max(30, card_style.casting_cost.content_width) + 5 }
height: 23
alignment: middle right
font:
name: MPlantin
size: 15
symbol font:
name: { styling.casting_cost_mana_symbols }
size: 15
alignment: middle right
always symbol: true
z index: 920
padding top: 0
level 9 text:
left: 190
width: {if not is_class() or card.level_2_text == "" then 0 else 80}
top: {lev2()+4}
height: 20
z index: 900
font:
name: MPlantin
size: 12
symbol font:
name: magic-mana-small
size: 12
alignment: middle left
level 2:
left: 270
width: {if not is_class() or card.level_2_text == "" then 0 else 70}
top: {lev2()+3}
height: 20
z index: 900
font:
name: MPlantin
size: {level_label_font_size()}
weight: bold
symbol font:
name: magic-mana-small
size: {level_label_font_size()}
alignment: middle right
level 10 text:
left: 190
width: {if not is_class() or card.level_3_text == "" then 0 else 80}
top: {lev3()+4}
height: 20
z index: 900
font:
name: MPlantin
size: 12
symbol font:
name: magic-mana-small
size: 12
alignment: middle left
level 3:
left: 270
width: {if not is_class() or card.level_3_text == "" then 0 else 70}
top: {lev3()+3}
height: 20
z index: 900
font:
name: MPlantin
size: {level_label_font_size()}
weight: bold
symbol font:
name: magic-mana-small
size: {level_label_font_size()}
alignment: middle right
level 11 text:
left: 190
width: {if not is_class() or card.level_4_text == "" then 0 else 80}
top: {lev4()+4}
height: 20
z index: 900
font:
name: MPlantin
size: 12
symbol font:
name: magic-mana-small
size: 12
alignment: middle left
level 4:
left: 270
width: {if not is_class() or card.level_4_text == "" then 0 else 70}
top: {lev4()+3}
height: 20
z index: 900
font:
name: MPlantin
size: {level_label_font_size()}
weight: bold
symbol font:
name: magic-mana-small
size: {level_label_font_size()}
alignment: middle right
card symbol:
left: {if card.card_symbol=="none" then 20 else 28}
top : 31
height: 21
width: 23
z index: 810
render style: image
include file: /magic.mse-game/card-symbols/menu_choice_images
image: { card_symbol_image(face: 1) }
############################# Image
image:
left: {if is_saga() then 188 else 29}
top: 59
width: 157
height: 379
z index: 200
mainframe image:
left: {if comma_count(styling.popout_image_style) == ",,,," then split_text(match:",", styling.popout_image_style).0 else "0"}
top: {if comma_count(styling.popout_image_style) == ",,,," then split_text(match:",", styling.popout_image_style).1 else "0"}
width: {if comma_count(styling.popout_image_style) == ",,,," then split_text(match:",", styling.popout_image_style).2 else "0"}
height: {if comma_count(styling.popout_image_style) == ",,,," then split_text(match:",", styling.popout_image_style).3 else "0"}
z index: 1010
############################# Card type
indicator:
left: 30
top: 449
width: 17
height: 17
z index: 810
render style: image
visible: { has_identity()}
image: { module_identity() }
type:
left: { if has_identity() then "53" else "33" }
top: { 444 + shrink_type() }
width: { 309 - rare_width() }
height: { 20 - shrink_type() }
alignment: top shrink-overflow
z index: 900
padding top: 2
font:
name: Beleren Bold
size: { 13 - shrink_type() }
color: black
separator color: red
rarity:
right: 345
top: 445
width: 42
height: 21
z index: 950
render style: image
alignment: middle right
include file: /magic-modules.mse-include/rarities/choice_images
############################# Text box
watermark:
left: { (if styling.wider_watermarks then 29 else 45)+(if is_saga() then 0 else 158)}
top: 60
width: { if styling.wider_watermarks then 157 else 133 }
height: 378
z index: 720
render style: image
popup style: in place
alignment: middle center
include file: /magic.mse-game/watermarks/menu_choice_images
image: { watermark_image_1() }
text:
left: 188
top: 60
width: {if is_saga() then 0 else 153}
bottom: 437
z index: 900
font:
name: MPlantin
italic name: MPlantin-Italic
size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 }
scale down to: 6
color: black
symbol font:
name: { styling.text_box_mana_symbols }
size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 }
alignment:
script:
if (styling.center_text == "short text only" and
not contains(match:"\n", card.rule_text) and
card_style.text.content_lines <= 2) or
styling.center_text == "always"
then "middle center"
else "middle left"
padding left: 3
padding right: 1
line height hard: {if is_modal(card.rule_text) then 0.9 else 1.2 }
line height line: 1.5
line height soft: 0.85
line height hard max: {if is_modal(card.rule_text) then 1.0 else 1.3 }
line height line max: 1.6
chapter text:
left: {30+(if is_class() then 158 else 0)}
top: 60
width: {if is_case() then 0 else 153}
bottom: {if un_marked() then 60 else chapter0()}
z index: 900
font:
name: MPlantin
italic name: MPlantin-Italic
size: { if styling.reminder_text_size != "" then styling.reminder_text_size else if styling.separated_text_size != "" then styling.separated_text_size else 13 }
scale down to: 6
color: black
symbol font:
name: { styling.text_box_mana_symbols }
size: { if styling.reminder_text_size != "" then styling.reminder_text_size else if styling.separated_text_size != "" then styling.separated_text_size else 13 }
alignment:
script:
if (styling.center_text == "short text only" and
not contains(match:"\n", card.chapter_text) and
card_style.text.chapter_text.content_lines <= 2) or
styling.center_text == "always"
then "middle center"
else "middle left"
mask: {if un_marked() then "" else crop(to_image("textmask.png"), height:chapter0()-60, width:153, offset_x:0, offset_y:0)}
padding left: 3
padding right: 1
line height hard: 1.2
line height line: 1.5
line height soft: 0.85
line height hard max: 1.3
line height line max: 1.6
############################# Levels
level 1 text:
left: {if un_marked() then 30 else 45}
top: { if un_marked() then 60 else chapter0()}
width: { if is_class() or is_case() then 0 else if un_marked() then 153 else 138}
bottom: { if split_12() == "" then 249 else split_12() }
font:
name: MPlantin
italic name: MPlantin-Italic
size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 }
scale down to: 6
color: black
symbol font:
name: { styling.text_box_mana_symbols }
size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 }
alignment:
script:
if (styling.center_text == "short text only" and
not contains(match:"\n", card.level_1_text) and
card_style.level_1_text.content_lines <= 2) or
styling.center_text == "always"
then "middle center"
else "middle left"
z index: 900
padding left: 6
padding right: 4
padding top: 3
padding bottom: 3
line height hard: {if is_modal(card.level_1_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.level_1_text) then 0.9 else 1.3 }
line height line max: 1.6
level 2 text:
left: {if un_marked() then 30 else 45}
top: { if split_12() == "" then 249 else split_12() }
width: { if is_class() or is_case() then 0 else if un_marked() then 153 else 138}
bottom: { if split_23() == "" then 343 else split_23() }
font:
name: MPlantin
italic name: MPlantin-Italic
size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 }
scale down to: 6
color: black
symbol font:
name: { styling.text_box_mana_symbols }
size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 }
alignment:
script:
if (styling.center_text == "short text only" and
not contains(match:"\n", card.level_2_text) and
card_style.level_2_text.content_lines <= 2) or
styling.center_text == "always"
then "middle center"
else "middle left"
z index: 900
padding left: 6
padding right: 4
padding top: 3
padding bottom: 3
line height hard: {if is_modal(card.level_2_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.level_2_text) then 0.9 else 1.3 }
line height line max: 1.6
level 3 text:
left: {if un_marked() then 30 else 45}
top: { if split_23() == "" then 343 else split_23() }
width: { if is_class() or is_case() then 0 else if un_marked() then 153 else 138}
bottom: {if split_34() == "" then 437 else split_34() }
font:
name: MPlantin
italic name: MPlantin-Italic
size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 }
scale down to: 6
color: black
symbol font:
name: { styling.text_box_mana_symbols }
size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 }
alignment:
script:
if (styling.center_text == "short text only" and
not contains(match:"\n", card.level_3_text) and
card_style.level_3_text.content_lines <= 2) or
styling.center_text == "always"
then "middle center"
else "middle left"
z index: 900
padding left: 6
padding right: 4
padding top: 3
padding bottom: 3
line height hard: {if is_modal(card.level_3_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.level_3_text) then 0.9 else 1.3 }
line height line max: 1.6
level 4 text:
left: {if un_marked() then 30 else 45}
top: {if split_34() == "" then 437 else split_34() }
width: { if is_class() then 0 else if un_marked() then 153 else 138}
bottom: 437
font:
name: MPlantin
italic name: MPlantin-Italic
size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 }
scale down to: 6
color: black
symbol font:
name: { styling.text_box_mana_symbols }
size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 }
alignment:
script:
if (styling.center_text == "short text only" and
not contains(match:"\n", card.level_4_text) and
card_style.level_4_text.content_lines <= 2) or
styling.center_text == "always"
then "middle center"
else "middle left"
z index: 900
padding left: 6
padding right: 4
padding top: 3
padding bottom: 3
line height hard: {if is_modal(card.level_4_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.level_4_text) then 0.9 else 1.3 }
line height line max: 1.6
############################# PT
pt:
z index: 900
left: 286
top: 469
width: {if starting_loyalty() then 0 else 60}
height: 28
alignment: center middle shrink-overflow
font:
name: Beleren Bold
size: 16
color: black
separator color: red
loyalty:
z index: 900
left: 326
top: 468
width: {if starting_loyalty() then 13.16 else 0}
height: 34.63
alignment: center middle
font:
name: Beleren Bold
size: 14
color: white
############################################################## Extra card fields
extra card field:
type: choice
name: pt box
script: card.card_color
editable: false
save value: false
extra card field:
type: choice
name: loyalty box
editable: false
choice: loyalty
save value: false
extra card field:
type: choice
name: stamp backing
choice: stamp
editable: false
save value: false
extra card field:
type: choice
name: foil layer
choice: foil
save value: false
editable: false
extra card field:
type: choice
name: clear frame
choice: frame
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: bookmark
script: card.card_color
editable: false
save value: false
extra card field:
type: choice
name: chapter 1
choice: chapter
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: chapter 2
choice: chapter
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: chapter 3
choice: chapter
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: chapter 4
choice: chapter
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: chapter 5
choice: chapter
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: chapter 6
choice: chapter
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: chapter custom
choice: chapter
editable: false
save value: false
show statistics: false
extra card field:
type: text
name: filler text
editable: true
save value: true
show statistics: false
multi line: true
script:
forward_editor(field: card.special_text)
special_text()
extra card field:
type: choice
name: linebreak 1
choice: line
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: linebreak 2
choice: line
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: linebreak 3
choice: line
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: linebreak 4
choice: line
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: linebreak 5
choice: line
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: linebreak 6
choice: line
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: linebreak 7
choice: line
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: snow overlay
choice: snow
save value: false
editable: false
script: card.card_color
extra card field:
type: choice
name: vehicle overlay
choice: car door
save value: false
editable: false
extra card field:
type: choice
name: nyx overlay
choice: nyx
save value: false
editable: false
script: card.card_color
extra card field:
type: choice
name: crown
script: card.card_color
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: stripe
choice: stripe
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: paper
choice: paper
editable: false
save value: false
show statistics: false
extra card field:
type: text
name: default level 2
script: "Level 2"
editable: false
save value: false
show statistics: false
extra card field:
type: text
name: default level 3
script: "Level 3"
editable: false
save value: false
show statistics: false
extra card field:
type: text
name: default level 4
script: "Level 4"
editable: false
save value: false
show statistics: false
extra card field:
type: choice
name: custom overlay
script: card.card_color
save value: false
editable: false
extra card field:
type: choice
name: ub tweaker
choice: white
save value: false
editable: false
extra card field:
type: choice
name: ub overlay
script: card.card_color
editable: false
save value: false
extra card style:
pt box:
left: 273
top: 466
width: 81
height: 42
z index: 840
visible: { card.pt != "" and not starting_loyalty() }
render style: image
image: { module_ptbox() }
loyalty box:
right: 362
top: 466
width: 60
height: 38
z index: 840
render style: image
visible: { starting_loyalty() and card.loyalty != "" }
choice images:
loyalty: loyalty.png
stamp backing:
left: 165
top: 472
width: 46
height: 26
z index: 850
visible: { card.card_stamp != "none" }
render style: image
image: { "/magic-modules.mse-include/stamps/backs/" + (if stamp_shape(field:1) == "triangle" then "triangle_stamp.png" else "stamp.png") }
foil layer:
left: 0
top : 0
width: 375
height: 523
z index: 1050
render style: image
image: {if styling.overlay == "" then nil else styling.overlay + "/overlay.png"}
chapter 1:
left: 14
top: { if chapter1() == "" then 185 else chapter1() }
width: 30
height: 34
render style: image
z index: 840
image: {alt_chapters("1")}
visible: {not un_marked()}
chapter 2:
left: 14
top: { if chapter2() == "" then 279 else chapter2() }
width: 30
height: 34
render style: image
z index: 840
image: {alt_chapters("2")}
visible: {not un_marked()}
chapter 3:
left: 14
top: { if chapter3() == "" then 373 else chapter3() }
width: 30
height: 34
render style: image
z index: 840
image: {alt_chapters("3")}
visible: {not un_marked()}
chapter 4:
left: 14
top: { if chapter4() == "" then 600 else chapter4() }
width: 30
height: 34
render style: image
z index: 840
image: {alt_chapters("4")}
visible: {not un_marked()}
chapter 5:
left: 14
top: { if chapter5() == "" then 600 else chapter5() }
width: 30
height: 34
render style: image
z index: 840
image: {alt_chapters("5")}
visible: {not un_marked()}
chapter 6:
left: 14
top: { if chapter6() == "" then 600 else chapter6() }
width: 30
height: 34
render style: image
z index: 840
image: {alt_chapters("6")}
visible: {not un_marked()}
chapter custom:
left: 14
top: { if chapter_custom() == "" then 600 else chapter_custom() }
width: 30
height: 34
render style: image
z index: 840
image: {custom_chapter_node()}
visible: {not un_marked()}
linebreak 1:
left: {30+(if is_class() or is_case() then 158 else 0)}
top: {if is_class() or is_case() then lev0() else chapter0()}
width: 156
height: {if is_case() or is_class() then 2 else 3}
render style: image
z index: 720
image: {if is_case() then "bar.png" else if is_class() then class_bar() else "line.png"}
visible: {(is_class() and card.chapter_text != "" and card.level_1_text != "") or is_case() or not un_marked()}
linebreak 2:
left: {30+if is_class() or is_case() then 158 else 0}
top: {if is_class() or is_case() then lev2() else if split_12() == "" then 248 else split_12()-1}
width: {if is_class() and card.level_2_text == "" then 0 else 156}
height: {if is_class() or is_case() then 25 else 3}
render style: image
z index: 720
image: {if is_case() then "levelline.png" else if is_class() then class_bar() else "line.png"}
linebreak 3:
left: {30+if is_class() then 158 else 0}
top: {if is_class() then lev3() else if split_23() == "" then 342 else split_23()-1}
width: {if is_class() and card.level_3_text == "" then 0 else 156}
height: {if is_class() then 25 else 3}
render style: image
z index: 720
image: {if is_class() then class_bar() else "line.png"}
visible: {three_boxes() or four_boxes() and not is_case()}
linebreak 4:
left: {30+if is_class() then 158 else 0}
top: {if is_class() then lev4() else if split_34() == "" then 600 else split_34()-1}
width: {if is_class() and card.level_4_text == "" then 0 else 156}
height: {if is_class() then 25 else 3}
render style: image
z index: 720
image: {if is_class() then class_bar() else "line.png"}
visible: {is_class() or four_boxes() and not is_case()}
linebreak 5:
left: {30+if is_class() then 158 else 0}
top: {to_number(pull_comma_array(styling.chapter_divider_coordinates, cell:3, end:true, default:600))}
width: 156
height: 3
render style: image
z index: 720
image: line.png
visible: {four_boxes()}
linebreak 6:
left: {30+if is_class() then 158 else 0}
top: {to_number(pull_comma_array(styling.chapter_divider_coordinates, cell:4, end:true, default:600))}
width: 156
height: 3
render style: image
z index: 720
image: line.png
visible: {four_boxes()}
linebreak 7:
left: {30+if is_class() then 158 else 0}
top: {to_number(pull_comma_array(styling.chapter_divider_coordinates, cell:5, end:true, default:600))}
width: 156
height: 3
render style: image
z index: 720
image: line.png
visible: {four_boxes()}
nyx overlay:
left: 0
top: 0
width: 375
height: 523
render style: image
image: {module_nyx()}
z index: 330
visible: {is_nyx()}
mask: {"trim_masks/" + (if is_vehicle() or is_snow() then "double_") + "mask.png"}
custom overlay:
left: 0
top: 0
width: 375
height: 523
render style: image
image: { custom_border_blend() }
z index: 320
visible: {is_custom()}
mask: {"trim_masks/" + (if is_vehicle() or is_snow() then "double_") + "mask.png"}
snow overlay:
left: 0
top: 0
width: 375
height: 523
render style: image
image: {module_snow()}
z index: 310
visible: {is_snow()}
mask: trim_masks/mask.png
vehicle overlay:
left: 0
top: 0
width: 375
height: 523
render style: image
image: { if is_beyond() then "/magic-modules.mse-include/trims/" + (if is_beyond() then "beyond/vbeyond.png" else "vehicle.png") }
mask: trim_masks/mask.png
z index: 300
visible: {is_vehicle()}
crown:
left: 0
top: 0
width: 375
height: 523
render style: image
image: {module_crown()}
z index: 840
visible: {is_legend()}
mask: {"crown_masks/" + (if is_saga() then "saga.png" else "class.png")}
bookmark:
left: 15
top: 60
width: 27
height: 372
render style: image
image: {bookmark_background()}
z index: 810
visible: {not un_marked()}
stripe:
left: 15
top: 60
width: 27
height: 372
render style: image
image: bookmark/stripe.png
z index: 820
visible: {length(write_wubrg(card.card_color))==2 and not un_marked()}
paper:
left: {if is_saga() then 28 else 186}
top: 58
width: 160
height: 380
z index: 210
render style: image
image: paper.png
default level 2:
left: 270
width: {if not is_class() or (is_class() and card.level_2_text == "") then 0 else 70}
top: {lev2()+3}
height: 20
z index: 7
font:
name: MPlantin
size: 11
weight: bold
symbol font:
name: magic-mana-small
size: 11
alignment: middle right
visible: {is_class() and card.level_2 == ""}
default level 3:
left: 270
width: {if not is_class() or (is_class() and card.level_3_text == "") then 0 else 70}
top: {lev3()+3}
height: 20
z index: 7
font:
name: MPlantin
size: 11
weight: bold
symbol font:
name: magic-mana-small
size: 11
alignment: middle right
visible: {is_class() and card.level_3 == ""}
default level 4:
left: 270
width: {if not is_class() or (is_class() and card.level_4_text == "") then 0 else 70}
top: {lev4()+3}
height: 20
z index: 7
font:
name: MPlantin
size: 11
weight: bold
symbol font:
name: magic-mana-small
size: 11
alignment: middle right
visible: {is_class() and card.level_4 == ""}
ub tweaker:
left: 0
top: 0
width: 375
height: 523
z index: 110
render style: image
visible: { is_beyond() }
image: { card_background() }
mask: {invert_image(template_prefix["card"] + "hybrid_blend_card.png") }
ub overlay:
left: 0
top: 0
width: 375
height: 523
z index: 290
render style: image
image: { beyond_background() }
mask: beyond_mask.png
visible: { is_beyond() }