Files

2716 lines
89 KiB
Plaintext
Raw Permalink 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.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
mse version: 2.1.2
game: magic
short name: Gen Walker
full name: Hi-Res
icon: card_sample.png
position hint: 077
version: 2022-02-22
depends on:
package: magic.mse-game
version: 2020-04-25
depends on:
package: magic-mainframe-extras.mse-include
version: 2001-01-01
depends on:
package: magic-modules.mse-include
version: 2024-10-01
depends on:
package: magic-mana-large.mse-symbol-font
version: 2001-01-01
depends on:
package: magic-mana-small.mse-symbol-font
version: 2001-01-01
depends on:
package: magic-mana-genevensis-large.mse-symbol-font
version: 2022-02-22
depends on:
package: magic-mana-genevensis-small.mse-symbol-font
version: 2022-02-22
depends on:
package: magic-genevensis-00-main.mse-style
version: 2022-02-22
depends on:
package: magic-genevensis-70-token.mse-style
version: 2022-02-22
card width: 750
card height: 1046
card dpi: 300
############################################################## Extra scripts
init script:
card_shape := { "planeswalker" }
corners_default := { "diagonal" }
swap_font := { true }
swap_fonts_name_src := { styling.name_font }
swap_fonts_name_default :=
[
name: {"Beleren Bold"},
size: {32},
color: {"black"},
vertical: {0},
italic: {""}
]
swap_fonts_type_src := { styling.type_font }
swap_fonts_type_default :=
[
name: {"Beleren Bold"},
size: {25},
color: {"black"},
vertical: {0},
italic: {""}
]
swap_fonts_body_src := { styling.text_font }
swap_fonts_body_default :=
[
name: {"MPlantin"},
size: {font_size()},
color: {"black"},
vertical: {0},
italic: {"MPlantin-Italic"}
]
swap_fonts_pt_src := { styling.PT_font }
swap_fonts_pt_default :=
[
name: {"Beleren Bold"},
size: {32},
color: {"black"},
vertical: {0},
italic: {""}
]
swap_fonts_pt2_src := { styling.loyalty_font }
swap_fonts_pt2_default :=
[
name: {"Beleren Bold"},
size: {32},
color: {"black"},
vertical: {0},
italic: {""}
]
swap_fonts_name2_src := { styling.alias_font }
swap_fonts_name2_default :=
[
name: {"Beleren Bold"},
size: {18},
color: {"black"},
vertical: {0},
italic: {""}
]
swap_fonts_name3_src := { styling.auxiliary_font }
swap_fonts_name3_default :=
[
name: {"Beleren Bold"},
size: {30},
color: {"black"},
vertical: {0},
italic: {""}
]
mana_sort := sort_text@(order: "\\?XYZI[0123456789]VLHFDSCAIEP(WUBRG)")
mana_sort_wedge := sort_text@(order: "\\?XYZI[0123456789]VLHFDSCAIEP(WBGUR)")
mana_unsort := sort_text@(order: "[/\\?XYZI0123456789VLHFDSCAIEPWUBRG]")
mana_sort_guild := sort_text@(order: "[\\?XYZI01234567890VLHFDSCAIEPWUBRG/|]") +
replace@(
match: "./.|././.|./././.|.[|]",
in_context: "(^|[^/])<match>($|[^/])",
replace: {sort_text(order:"in_place(P(WUBRG))")}
)
is_unsorted :=
{
styling.remove_from_autocount
}
shrink_reminder :=
{
if styling.shrink_transformation_reminder_text == "-" then 0
else clamp(to_int(styling.shrink_transformation_reminder_text), minimum: -40, maximum: 25) or else 0
}
has_extended_art :=
{
chosen(styling.extended_art, choice: "yes")
or
(
chosen(styling.extended_art, choice: "if land")
and (lang_setting("is_land")(card.super_type) or lang_setting("is_plane")(card.super_type))
)
}
has_crown :=
{
chosen(styling.legend_crown, choice: "normal")
or
(
chosen(styling.legend_crown, choice: "normal if legendary")
and lang_setting("is_legendary")(card.super_type)
)
}
has_special_crown :=
{
chosen(styling.legend_crown, choice: "special")
or
(
chosen(styling.legend_crown, choice: "special if legendary")
and lang_setting("is_legendary")(card.super_type)
)
}
has_leaf :=
{
if has_special_crown() then false
else if chosen(styling.land_leaf, choice: "yes") then true
else if (
chosen(styling.land_leaf , choice: "if land")
and (lang_setting("is_land")(card.super_type) or lang_setting("is_plane")(card.super_type))
) then true
else false
}
has_symbol :=
{
not (styling.symbol == "none")
}
has_custom_rarity :=
{
contains(set.mainframe_rarity_name, match: ".png")
}
un_png := replace@(match:".png", replace: "")
proper_order :=
{
if input == "gr" then "rg"
else if input == "bu" then "ub"
else if input == "uw" then "wu"
else if input == "ru" then "ur"
else if input == "gb" then "bg"
else if input == "rb" then "br"
else if input == "ug" then "gu"
else if input == "wg" then "gw"
else if input == "bw" then "wb"
else if input == "wr" then "rw"
else input
}
color_to_base_prefix :=
{
initial_prefix :=
(if contains(card.casting_cost, match: "P") then "s" else "") +
(if chosen(choice: "white", card.card_color) or contains(card.casting_cost, match: "W") then "w" else "") +
(if chosen(choice: "blue", card.card_color) or contains(card.casting_cost, match: "U") then "u" else "") +
(if chosen(choice: "black", card.card_color) or contains(card.casting_cost, match: "B") then "b" else "") +
(if chosen(choice: "red", card.card_color) or contains(card.casting_cost, match: "R") then "r" else "") +
(if chosen(choice: "green", card.card_color) or contains(card.casting_cost, match: "G") then "g" else "")
ordered_prefix := proper_order(initial_prefix)
if chosen(choice: "reversed", card.card_color) then reverse(ordered_prefix)
else ordered_prefix
}
color_to_unforced_prefix :=
{
prefix := color_to_base_prefix()
if chosen(choice: "artifact", card.card_color) then "a"
else if length(prefix) > 2 then "m"
else if chosen(choice: "multicolor", card.card_color) and not styling.force_hybrid_frame then "m"
else if length(prefix) == 0 then (if chosen(choice: "multicolor", card.card_color) then "m" else "c" )
else prefix
}
left_forced_prefix :=
{
if chosen(choice: "white", styling.force_left_color) then "w"
else if chosen(choice: "blue", styling.force_left_color) then "u"
else if chosen(choice: "black", styling.force_left_color) then "b"
else if chosen(choice: "red", styling.force_left_color) then "r"
else if chosen(choice: "green", styling.force_left_color) then "g"
else if chosen(choice: "artifact", styling.force_left_color) then "a"
else if chosen(choice: "gold", styling.force_left_color) then "m"
else if chosen(choice: "colorless", styling.force_left_color) then "c"
else if chosen(choice: "purple", styling.force_left_color) then "s"
else ""
}
right_forced_prefix :=
{
if chosen(choice: "white", styling.force_right_color) then "w"
else if chosen(choice: "blue", styling.force_right_color) then "u"
else if chosen(choice: "black", styling.force_right_color) then "b"
else if chosen(choice: "red", styling.force_right_color) then "r"
else if chosen(choice: "green", styling.force_right_color) then "g"
else if chosen(choice: "artifact", styling.force_right_color) then "a"
else if chosen(choice: "gold", styling.force_right_color) then "m"
else if chosen(choice: "colorless", styling.force_right_color) then "c"
else if chosen(choice: "purple", styling.force_right_color) then "s"
else ""
}
color_to_prefix :=
{
unforced_prefix := color_to_unforced_prefix()
left_forced := left_forced_prefix()
right_forced := right_forced_prefix()
left_prefix := if length(left_forced) == 0 then unforced_prefix.0 else left_forced
right_prefix := if length(right_forced) == 0 then reverse(unforced_prefix).0 else right_forced
if left_prefix == right_prefix then left_prefix else left_prefix + right_prefix
}
copyright_color :=
{
right_color := reverse(color_to_prefix()).0
if right_color == "w" then rgb(236,211,123)
else if right_color == "u" then rgb(055,119,186)
else if right_color == "b" then rgb(120,120,120)
else if right_color == "r" then rgb(161,037,030)
else if right_color == "g" then rgb(049,108,043)
else if right_color == "a" then rgb(116,153,169)
else if right_color == "m" then rgb(191,128,000)
else if right_color == "c" then rgb(131,114,103)
else if right_color == "s" then rgb(150,103,192)
else rgb(255,255,255)
}
border :=
{
"/magic-genevensis-00-main.mse-style/borders/" +
input + "_border.png"
}
image :=
{
"/magic-genevensis-00-main.mse-style/elements/" +
input + "/" +
( if side == "left" then color_to_prefix().0 else if side == "right" then reverse(color_to_prefix()).0 else color_to_prefix() ) +
input + ".png"
}
frame_image :=
{
image(( if has_extended_art() then "puma" else "" ) + "walker" + styling.taller_textboxes, side: "both")
}
color_indicator_dot_image :=
{
prefix := color_to_base_prefix()
count := length(prefix)
if count == 0 then "/magic-genevensis-00-main.mse-style/elements/identity/cidentity.png"
else if count == 1 then "/magic-genevensis-00-main.mse-style/elements/identity/" + prefix.0 + "identity.png"
else if count == 2 then masked_blend(
light: "/magic-genevensis-00-main.mse-style/elements/identity/" + prefix.0 + "identity.png",
dark: "/magic-genevensis-00-main.mse-style/elements/identity/" + prefix.1 + "identity.png",
mask: "/magic-genevensis-00-main.mse-style/imask_21.png")
else if count == 3 then masked_blend(
light: masked_blend(
light: "/magic-genevensis-00-main.mse-style/elements/identity/" + prefix.0 + "identity.png",
dark: "/magic-genevensis-00-main.mse-style/elements/identity/" + prefix.1 + "identity.png",
mask: "/magic-genevensis-00-main.mse-style/imask_31.png"),
dark: "/magic-genevensis-00-main.mse-style/elements/identity/" + prefix.2 + "identity.png",
mask: "/magic-genevensis-00-main.mse-style/imask_32.png")
else if count == 4 then masked_blend(
light: masked_blend(
light: masked_blend(
light: "/magic-genevensis-00-main.mse-style/elements/identity/" + prefix.0 + "identity.png",
dark: "/magic-genevensis-00-main.mse-style/elements/identity/" + prefix.1 + "identity.png",
mask: "/magic-genevensis-00-main.mse-style/imask_41.png"),
dark: "/magic-genevensis-00-main.mse-style/elements/identity/" + prefix.2 + "identity.png",
mask: "/magic-genevensis-00-main.mse-style/imask_42.png"),
dark: "/magic-genevensis-00-main.mse-style/elements/identity/" + prefix.3 + "identity.png",
mask: "/magic-genevensis-00-main.mse-style/imask_43.png")
else masked_blend(
light: masked_blend(
light: masked_blend(
light: masked_blend(
light: "/magic-genevensis-00-main.mse-style/elements/identity/" + prefix.0 + "identity.png",
dark: "/magic-genevensis-00-main.mse-style/elements/identity/" + prefix.1 + "identity.png",
mask: "/magic-genevensis-00-main.mse-style/imask_51.png"),
dark: "/magic-genevensis-00-main.mse-style/elements/identity/" + prefix.2 + "identity.png",
mask: "/magic-genevensis-00-main.mse-style/imask_52.png"),
dark: "/magic-genevensis-00-main.mse-style/elements/identity/" + prefix.3 + "identity.png",
mask: "/magic-genevensis-00-main.mse-style/imask_53.png"),
dark: "/magic-genevensis-00-main.mse-style/elements/identity/" + prefix.4 + "identity.png",
mask: "/magic-genevensis-00-main.mse-style/imask_54.png")
}
symbol_map :=
[
"1 triangle" : "symbol1triangle"
"1 triangle flipped" : "symbol1triangleflipped"
"2 triangles" : "symbol2triangle"
"compass" : "symbolcompass"
"land" : "symbolland"
"rising" : "symbolrising"
"risen" : "symbolrisen"
"closed fan" : "symbolclosedfan"
"open fan" : "symbolopenfan"
"sun / day" : "symbolsun"
"moon / night" : "symbolmoon"
"eldrazi" : "symboleldrazi"
"brother's war" : "symbolbrowar"
"arena" : "symbolarena"
"acorn" : "symbolacorn"
"swap" : "symbolswap"
"tombstone" : "symboltomb"
"multitype" : "symbolmultitype"
"structure" : "symbolstructure"
"creature" : "symbolcreature"
"planeswalker" : "symbolplaneswalker"
"instant" : "symbolinstant"
"sorcery" : "symbolsorcery"
"artifact" : "symbolartifact"
"enchantment" : "symbolenchantment"
"lesson" : "symbollesson"
"custom" : "symbolcustom"
]
symbol_image :=
{
name := symbol_map[styling.symbol] or else ""
image(name, side: "left")
}
reminder_image :=
{
if styling.transformation_reminder == "notch" then image("remindernotchright" + (if card.pt == "" and card.loyalty == "" then "low" else "") + "transparent", side: "right")
else image("reminderwalker" + styling.transformation_reminder, side: "both")
}
pt_image :=
{
image("walkerpt", side: "right")
}
opacity_watermark_image :=
{
image := if styling.watermark == "setsymbol" or styling.watermark == "setsymbol" or styling.watermark == "'setsymbol'" then set_symbol_image()
else if contains(match: ".png", styling.watermark) then ("/magic-mainframe-extras.mse-include/" + styling.watermark)
else ""
if styling.watermark_opacity_percentage == "" then image
else set_alpha(image, alpha: get_alpha(styling.watermark_opacity_percentage, default: 100))
}
watermark_left := { 219 - type_shift()/2 }
watermark_top := { 653 - type_shift() }
watermark_size := { 312 + type_shift() }
set_symbol_image :=
{
image := symbol_variation(symbol: set.symbol, variation: "watermark")
enlarged_image := enlarge(border_size: 0.03, image)
shadow_image := drop_shadow(offset_x: -0.01, offset_y: 0.03, blur_radius: 0.02, alpha: 1, color: rgb(0,0,0), enlarged_image)
set_combine(combine:"shadow", shadow_image)
}
crown_image :=
{
name := "crown" + (if has_special_crown() then "special" else "")
image(name, side: "both")
}
leaf_image :=
{
name := "leafwalker"
image(name, side: "both")
}
leaf_bottom_image :=
{
name := "leafwalkerbottom"
image(name, side: "both")
}
legend_leaf_image :=
{
name := "legendleaf"
image(name, side: "both")
}
insignia_image :=
{
name := "insignia" + styling.insignia
image(name, side: "both")
}
illustrator_brush_image :=
{
recolor_image("/magic-genevensis-00-main.mse-style/illustrator_brush_" + input + ".png", color: if styling.illustrator_text_color == rgb(255,254,255) then copyright_color() else styling.illustrator_text_color )
}
opacity_textbox_image :=
{
base_image := if styling.textbox_color == rgb(255,254,255) then crop_safe(image("walkertextbox" + styling.taller_textboxes, side: "both"), left: 0, top: textbox_top(), width: 750, height: textbox_height())
else if styling.textbox_color == rgb(255,255,254) then crop_safe(image("walkertextbox" + styling.taller_textboxes + "light", side: "both"), left: 0, top: textbox_top(), width: 750, height: textbox_height())
else recolor_image("textbox_background.png", color: styling.textbox_color)
set_alpha(base_image, alpha: get_alpha(styling.textbox_opacity_percentage, default: 70))
}
opacity_namebox_image :=
{
set_alpha(image("name", side: "both"), alpha: get_alpha(styling.namebox_opacity_percentage, default: 100))
}
opacity_typebox_image :=
{
set_alpha(image("type", side: "both"), alpha: get_alpha(styling.typebox_opacity_percentage, default: 100))
}
get_alpha :=
{
alpha_value := if input == "" then default
else to_number(input) or else default
if alpha_value < 0 then 0.0
else if alpha_value <= 100 then alpha_value/100.0
else 1.0
}
mainframe_walker :=
{
true
}
mainframe_walker_text_script :=
{
count := abilities_count()
if count == 6 then 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, separator3: "<line>\n</line>", field4: card.level_4_text, separator4: "<line>\n</line>", field5: card.level_5_text, separator5: "<line>\n</line>", field6: card.level_6_text)
else if count == 5 then 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, separator3: "<line>\n</line>", field4: card.level_4_text, separator4: "<line>\n</line>", field5: card.level_5_text)
else if count == 4 then 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, separator3: "<line>\n</line>", field4: card.level_4_text)
else if count == 3 then 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)
else if count == 2 then combined_editor(field1: card.level_1_text, separator1: "<line>\n</line>", field2: card.level_2_text)
else forward_editor(field: card.level_1_text)
}
margin_left :=
{
if input == "lv1" then (if card.loyalty_cost_1 == "" then 0 else 400)
else if input == "lv2" then (if card.loyalty_cost_2 == "" then 0 else 400)
else if input == "lv3" then (if card.loyalty_cost_3 == "" then 0 else 400)
else if input == "lv4" then (if card.loyalty_cost_4 == "" then 0 else 400)
else if input == "lv5" then (if card.loyalty_cost_5 == "" then 0 else 400)
else if input == "lv6" then (if card.loyalty_cost_6 == "" then 0 else 400)
else 0
}
text_filter := text_filter + {apply_margins(input, name:margin_code)} + {add_spacers(input, name:margin_code)}
add_spacers :=
{
#The 'then ""' has a zero-width space inside
if input == "" and level_is_active(name) then ""
else input
}
level_is_active :=
{
if input == "lv6" then abilities_count() >= 6
else if input == "lv5" then abilities_count() >= 5
else if input == "lv4" then abilities_count() >= 4
else if input == "lv3" then abilities_count() >= 3
else if input == "lv2" then abilities_count() >= 2
else true
}
ability_top :=
{
if card_style.text.layout.blocks[input].bottom or else 0 > 0 then to_int(card_style.text.top) + to_int(card_style.text.layout.blocks[input].top)
else 1200
}
ability_center :=
{
if card_style.text.layout.blocks[input].bottom or else 0 > 0 then to_int(card_style.text.top) + to_int(card_style.text.layout.blocks[input].middle)
else 1200
}
ability_bottom :=
{
if card_style.text.layout.blocks[input].bottom or else 0 > 0 then to_int(card_style.text.top) + to_int(card_style.text.layout.blocks[input].bottom)
else 1200
}
abilities_count :=
{
if styling.number_of_textboxes == "three" then 3
else if styling.number_of_textboxes == "four" then 4
else if styling.number_of_textboxes == "two" then 2
else if styling.number_of_textboxes == "five" then 5
else if styling.number_of_textboxes == "one" then 1
else 6
}
is_ult :=
{
value := to_int(card["loyalty_cost_" + input]) or else 0
if (to_int(card.loyalty_cost_6) or else 0) < value then false
else if (to_int(card.loyalty_cost_5) or else 0) < value then false
else if (to_int(card.loyalty_cost_4) or else 0) < value then false
else if (to_int(card.loyalty_cost_3) or else 0) < value then false
else if (to_int(card.loyalty_cost_2) or else 0) < value then false
else if (to_int(card.loyalty_cost_1) or else 0) < value then false
else true
}
loyal_move := { clamp((to_int(pull_comma_array(styling.move_loyalty_costs, cell:input-1, end:0, default:0)) or else 0), minimum: -700, maximum: 700) }
separator_move := { clamp((to_int(pull_comma_array(styling.move_separators, cell:input-1, end:0, default:0)) or else 0), minimum: -500, maximum: 500) }
chop_top := { clamp((to_int(pull_comma_array(styling.chop_textbox, cell:0, end:0, default:0)) or else 0), minimum: -500, maximum: 500) }
chop_bot := { clamp((to_int(pull_comma_array(styling.chop_textbox, cell:1, end:0, default:0)) or else 0), minimum: -500, maximum: 500) }
chop_right := { clamp((to_int(pull_comma_array(styling.chop_textbox, cell:2, end:0, default:0)) or else 0), minimum: -500, maximum: 500) }
chop_rarity_top := { clamp((to_int(pull_comma_array(styling.shrink_rarity_symbol, cell:0, end:0, default:0)) or else 0), minimum: -500, maximum: 500) }
chop_rarity_bot := { clamp((to_int(pull_comma_array(styling.shrink_rarity_symbol, cell:1, end:0, default:0)) or else 0), minimum: -500, maximum: 500) }
chop_rarity_left := { clamp((to_int(pull_comma_array(styling.shrink_rarity_symbol, cell:2, end:0, default:0)) or else 0), minimum: -500, maximum: 500) }
chop_rarity_right := { clamp((to_int(pull_comma_array(styling.shrink_rarity_symbol, cell:3, end:0, default:0)) or else 0), minimum: -500, maximum: 500) }
textbox_top := { 653 - type_shift() }
textbox_height := { 393 + type_shift() }
stripe_top := { -to_int(( -ability_bottom(input-1) - ability_top(input) )/2) - 6 - ( -separator_move(input)) }
image_left := { if has_extended_art() or styling.stretch_image_to_whole_card then 0 else if get_alpha(styling.namebox_opacity_percentage, default: 100) < 1.0 then 45 else 54 }
image_right :=
{
if has_extended_art() or styling.stretch_image_to_whole_card then 750
else if styling.transformation_reminder == "notch" then (if card.pt == "" and card.loyalty == "" then 709 else 711)
else if get_alpha(styling.namebox_opacity_percentage, default: 100) < 1.0 then 705
else 696
}
image_width := { image_right() - image_left() }
image_top := { if styling.stretch_image_to_whole_card then 0 else if get_alpha(styling.namebox_opacity_percentage, default: 100) < 1.0 then 50 else 114 }
image_bottom :=
{
if styling.stretch_image_to_whole_card then 1046
else if get_alpha(styling.textbox_opacity_percentage, default: 70) < 1.0 then 972
else if get_alpha(styling.typebox_opacity_percentage, default: 100) < 1.0 then 652
else 583
}
image_height := { image_bottom() - image_top() }
current_mask :=
{
frame := if has_extended_art() then "extended_"
else "bordered_"
notch := if styling.transformation_reminder != "notch" then "none_"
else if card.pt == "" and card.loyalty == "" then "low_"
else if card.pt != "" and card.loyalty != "" then "high_"
else "mid_"
type := styling.taller_textboxes
"mask/" + frame + notch + type + ".png"
}
alt_rarity :=
{
styling.alt_rarity_color != ""
}
alt_symbol :=
{
string := if match(styling.alt_rarity_color, match:":$") then styling.alt_rarity_color else "83,67,53:177,150,131:0,0,0:0,0,0:0.07:"
colons := length(filter_text(string, match:":"))
color := split_text(string, match:",|:")
splits := split_text(string, match:":")
if colons == 4 then color := split_text(string+"0.07:", match:",|:")
else if colons == 3 then color := split_text(string+splits[2]+"0.07:", match:",|:")
else if colons == 2 then color := split_text(string+"0,0,0:0,0,0:0.07:", match:",|:")
else if colons == 1 then color := split_text(string+splits[0]+":0,0,0:0,0,0:0.07:", match:",|:")
symbol_variation(symbol:set.symbol, border_radius: color.12, fill_type: "linear gradient", fill_color_1: rgb(color.0, color.1, color.2), fill_color_2: rgb(color.3, color.4, color.5), border_color_1: rgb(color.6, color.7, color.8), border_color_2: rgb(color.9, color.10, color.11), center_x:0.5, center_y:0.5, end_x:1, end_y:1)
}
popout_left := { split := split_comma(styling.popout_image_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_image_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_image_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_image_coordinates); if length(split) > 3 and split.3 != "" then clamp(split.3, minimum: 0, maximum: 2000) else 0 }
split_comma := split_text@(match: " *, *")
nameline_left_margin :=
{
if has_symbol() then 51 else 0
}
nameline_right_margin :=
{
if card.casting_cost != "" then (card_style.casting_cost.content_width + 8) else 0
}
name_margin :=
{
name_left_margin := nameline_left_margin()
name_right_margin := nameline_right_margin()
if name_left_margin > name_right_margin then name_left_margin else name_right_margin
}
typeline_left_margin :=
{
if has_identity() then 39 else 0
}
typeline_right_margin :=
{
if set.shorten_types_for_rarity then (60 - chop_rarity_left()) else 0
}
type_margin :=
{
type_left_margin := typeline_left_margin()
type_right_margin := typeline_right_margin()
if type_left_margin > type_right_margin then type_left_margin else type_right_margin
}
type_shift :=
{
if styling.taller_textboxes == "tallest" then 90
else if styling.taller_textboxes == "taller" then 60
else if styling.taller_textboxes == "tall" then 30
else 0
}
font_size :=
{
count := abilities_count()
if count == 6 then 22
else if count == 5 then 23
else if count == 4 then 24
else if count == 3 then 26
else 28
}
vorthos_default :=
{
actual_set_code := if is_masterpiece() then set.masterpiece_set_code else set.set_code
set.set_language + (if actual_set_code != "" and set.set_language != "" then " • " else "") + actual_set_code
}
fuse_image :=
{
other_prefix := ( if contains(styling.fuse, match: "white") then "w"
else if contains(styling.fuse, match: "blue") then "u"
else if contains(styling.fuse, match: "black") then "b"
else if contains(styling.fuse, match: "red") then "r"
else if contains(styling.fuse, match: "green") then "g"
else if contains(styling.fuse, match: "artifact") then "a"
else if contains(styling.fuse, match: "gold") then "m"
else if contains(styling.fuse, match: "colorless") then "c"
else "s" )
own_prefix := if contains(styling.fuse, match: "right") then reverse(color_to_prefix()).0 else color_to_prefix().0
prefix := if own_prefix == other_prefix then own_prefix
else if contains(styling.fuse, match: "right") then (own_prefix + other_prefix)
else (other_prefix + own_prefix)
size := fuse_image_size()
"/magic-genevensis-00-main.mse-style/elements/fuse" + size + "/" + prefix + "fuse" + size + ".png"
}
fuse_image_size :=
{
text_size := length(remove_tags(card.rule_text_3))
if text_size > 9 then "long" else if text_size < 7 then "short" else "medium"
}
crop_safe :=
{
if left < 0
or top < 0
or width <= 0
or height <= 0
or left + width > 750
or top + height > 1046
then ""
else crop(input, offset_x: left, offset_y: top, width: width, height: height)
}
clamp :=
{
if input < minimum then minimum
else if input > maximum then maximum
else input
}
############################################################## Set info fields
set info style:
symbol:
variation:
name: basic land
border radius: 0.07
fill type: linear gradient
fill color 1: rgb(116,186,112)
fill color 2: rgb(38,90,30)
border color 1: rgb(0, 0, 0)
border color 2: rgb(0, 0, 0)
#fill color 1: rgb(183, 151, 213)
#fill color 2: rgb(121, 80, 163)
#border color 1: rgb(0, 0, 0)
#border color 2: rgb(0, 0, 0)
set info style:
symbol:
variation:
name: common
border radius: 0.07
fill type: solid
fill color: rgb(0,0,0)
border color: rgb(255,255,255)
set info style:
symbol:
variation:
name: invertedcommon
border radius: 0.07
fill type: linear gradient
fill color 1: rgb(255, 255, 255)
fill color 2: rgb(215, 215, 215)
border color 1: rgb(0, 0, 0)
border color 2: rgb(0, 0, 0)
set info style:
symbol:
variation:
name: uncommon
border radius: 0.07
fill type: linear gradient
fill color 1: rgb(224, 224, 224)
fill color 2: rgb(84, 84, 84)
border color 1: rgb(0, 0, 0)
border color 2: rgb(0, 0, 0)
set info style:
symbol:
variation:
name: rare
border radius: 0.07
fill type: linear gradient
fill color 1: rgb(214, 196, 94)
fill color 2: rgb(95, 84, 40)
border color 1: rgb(0, 0, 0)
border color 2: rgb(0, 0, 0)
set info style:
symbol:
variation:
name: mythic rare
border radius: 0.07
fill type: linear gradient
fill color 1: rgb(245, 148, 31)
fill color 2: rgb(186, 45, 38)
border color 1: rgb(0, 0, 0)
border color 2: rgb(0, 0, 0)
set info style:
symbol:
variation:
name: masterpiece
border radius: 0.07
fill type: linear gradient
fill color 1: rgb(194, 22, 3)
fill color 2: rgb(139, 0, 0)
border color 1: rgb(0, 0, 0)
border color 2: rgb(0, 0, 0)
set info style:
symbol:
variation:
name: purple
border radius: 0.07
fill type: linear gradient
fill color 1: rgb(180,0,245)
fill color 2: rgb(100, 0, 165)
border color 1: rgb(0, 0, 0)
border color 2: rgb(0, 0, 0)
############################################################## Extra style options
styling field:
type: boolean
name: center name
description: Center the name text on the card?
# localized caption:
# fr: Centrer le nom
# localized description:
# fr: Aligner le nom au milieu de la carte?
initial: no
styling field:
type: text
name: namebox opacity percentage
description: Set the opacity percentage for the nameline box. Opaque is 100, transparent is 0, default is 100.
# localized caption:
# fr: Pourcentage d'opacité du nom
# localized description:
# fr: Complètement opaque: 100. Complètement transparent: 0. Valeur par défaut: 100.
styling field:
type: boolean
name: center type
description: Center the type text on the card?
# localized caption:
# fr: Centrer le type
# localized description:
# fr: Aligner le type au milieu de la carte?
initial: no
styling field:
type: text
name: typebox opacity percentage
description: Set the opacity percentage for the typeline box. Opaque is 100, transparent is 0, default is 100.
# localized caption:
# fr: Pourcentage d'opacité du type
# localized description:
# fr: Complètement opaque: 100. Complètement transparent: 0. Valeur par défaut: 100.
styling field:
type: choice
name: number of textboxes
description: Number of textboxes for abilities and passives. Modify content of textboxes if this has trouble updating after being changed.
# localized caption:
# fr: Nombre d'abilités
# localized description:
# fr: Combien d'abilités et/ou de passifs sont sur la carte? (Modifiez le contenu des boites de texte si elles ne se mettent pas à jour de suite.)
choice: one
choice: two
choice: three
choice: four
choice: five
choice: six
initial: three
styling field:
type: choice
name: taller textboxes
description: Increase the height of the textbox.
# localized caption:
# fr: Taille de la boite de text
# localized description:
# fr: Augmenter la taille de la boite du text de règles.
choice: normal
choice: tall
choice: taller
choice: tallest
initial: normal
styling field:
type: choice
name: stripes
description: Should there be gray lines separating abilities?
# localized caption:
# fr: Rayures
# localized description:
# fr: Utiliser des rayures grises pour séparer les abilités?
choice: normal
choice: line
choice: none
initial: normal
styling field:
type: text
name: move separators
description: Moves the limits between abilities down by this many pixels. Use negatives to move up. Formatted as "1,2,3,4,5"
# localized caption:
# fr: Déplacer les séparations
# localized description:
# fr: Déplacer les limites entre les abilités vers le bas de N pixels. Utilisez des négatifs pour déplacer vers le haut. Format: "1,2,3,4,5"
styling field:
type: text
name: move loyalty costs
description: Moves loyalty costs down by this many pixels. Use negatives to move up. Formatted as "1,2,3,4,5,6"
# localized caption:
# fr: Déplacer les coûts de loyauté
# localized description:
# fr: Déplacer les coûts de loyauté vers le bas de N pixels. Utilisez des négatifs pour déplacer vers le haut. Format: "1,2,3,4,5,6"
styling field:
type: text
name: chop textbox
description: Chops the top, bottom, and right edges of the rule textbox by this many pixels. Formatted as "1,2,3"
# localized caption:
# fr: Tronquer le texte de règles
# localized description:
# fr: Réduire la taille du haut, du bas, et de la droite de la zone du texte de règles de N pixels. Format: "1,2,3"
styling field:
type: text
name: textbox opacity percentage
description: Set the opacity percentage for textboxes and stripes. Opaque is 100, transparent is 0, default is 70.
# localized caption:
# fr: Pourcentage d'opacité de l'arrière-plan du texte
# localized description:
# fr: Complètement opaque: 100. Complètement transparent: 0. Valeur par défaut: 70.
styling field:
type: color
name: textbox color
description: Use the specified color for the textbox background.
# localized caption:
# fr: Couleur de l'arrière-plan du texte
# localized description:
# fr: Utiliser la couleur spécifiée pour l'arrière-plan du texte.
choice:
name: black
color: rgb(0,0,0)
choice:
name: white
color: rgb(255,255,255)
choice:
name: use card color (light)
color: rgb(255,255,254)
choice:
name: use card color (dark)
color: rgb(255,254,255)
initial: white
styling field:
type: choice
name: extended art
description: Should the illustration extend to the edge of the card? Disables the insignia.
# localized caption:
# fr: Illustration étendue
# localized description:
# fr: Étirer l'illustration jusqu'aux bords de la carte? Désactive l'insigne.
choice: yes
choice: if land
choice: no
initial: no
styling field:
type: text
name: popout image coordinates
description: The coordinates for the popout image field, formatted as "left,top,width,height". Used to make the illustration jump in front of the frame.
# localized caption:
# en: popout art coordinates
# fr: Coordonée de l'image superposée
# localized description:
# fr: Rajoute un champ d'illustration supplémentaire aux coordonées spécifiées. Formatté ainsi: "gauche,droite,largeur,longueur". Permet à l'illustration de passer devant le cadre de la carte.
styling field:
type: boolean
name: stretch image to whole card
description: Enable to make the illustration cover the entire card. Helps make extended popout art.
# localized caption:
# en: Stretch art to whole card
# fr: Illustration non confinée
# localized description:
# fr: Si activé, l'illustration s'étend sur toute la carte. Combiné à un masque personnalisé, cela permet à l'illustration de passer devant le cadre de la carte.
initial: no
styling field:
type: text
name: custom mask
description: The file name of a '.png' image inside /magic-mainframe-extras.mse-include/ used as a custom mask for illustration popout effects. (Alternative to popout image coordinates.)
# localized caption:
# fr: Masque personnalisé
# localized description:
# fr: Le chemin d'une image '.png' à utiliser comme masque de l'illustration.
styling field:
type: text
name: watermark
description: The name of a '.png' image inside the /magic-mainframe-extras.mse-include/ folder. Dimensions can be anything, but native is 312x312. Alternatively, write 'setsymbol' to use the set symbol instead.
# localized caption:
# fr: Filigrane
# localized description:
# fr: Le chemin d'une image '.png' située dans le dossier /magic-mainframe-extras.mse-include/. Alternativement, écrivez 'setsymbol' pour utiliser le symbole du Set comme filigrane.
styling field:
type: text
name: watermark opacity percentage
description: Set the opacity percentage for watermark. Opaque is 100, transparent is 0. Leave blank to use image opacity.
# localized caption:
# fr: Pourcentage d'opacité du filigrane
# localized description:
# fr: Complètement opaque: 100. Complètement transparent: 0. Laissez vide pour utiliser l'opacité native du filigrane.
styling field:
type: choice
name: legend crown
description: Is the legend crown visible? Special crown disables the land leaf and the insignia.
# localized caption:
# fr: Couronne légendaire
# localized description:
# fr: La couronne légendaire est-elle visible? La couronne spéciale désactive l'insigne.
choice: special
choice: special if legendary
choice: normal
choice: normal if legendary
choice: none
initial: normal if legendary
styling field:
type: choice
name: land leaf
description: Is the land leaf visible? Disabled by the special crown.
# localized caption:
# fr: Feuille de terrain
# localized description:
# fr: La feuille de terrain est-elle visible?
choice: yes
choice: if land
choice: no
initial: if land
styling field:
type: choice
name: insignia
description: Is an insignia visible? Disabled by extended art and special crown.
# localized caption:
# fr: Insigne
# localized description:
# fr: L'insigne est-elle visible? Désactivé par l'illustration étendue et la couronne spéciale.
choice: none
choice: lieutenant
choice: commander
initial: none
styling field:
type: choice
name: symbol
description: Use a symbol next to the card's name?
# localized caption:
# fr: Symbole
# localized description:
# fr: Utiliser un symbole à côté du nom de la carte?
choice: none
choice: 1 triangle
choice: 1 triangle flipped
choice: 2 triangles
choice: compass
choice: land
choice: rising
choice: risen
choice: closed fan
choice: open fan
choice: sun / day
choice: moon / night
choice: eldrazi
choice: brother's war
choice: arena
choice: acorn
choice: swap
choice: tombstone
choice: lesson
choice: multitype
choice: structure
choice: creature
choice: planeswalker
choice: instant
choice: sorcery
choice: artifact
choice: enchantment
choice: custom
initial: none
styling field:
type: choice
name: transformation reminder
description: Use a text field to remind some info of the other side?
# localized caption:
# fr: Rappel de transformation
# localized description:
# fr: Utiliser un champ de texte pour rappeler certaines informations du dos de la carte?
choice: none
choice: short
choice: medium
choice: long
choice: notch
initial: none
styling field:
type: text
name: shrink transformation reminder text
description: Reduces the reminder text's font size by this many points.
# localized caption:
# fr: Rapetisser le text de rappel
# localized description:
# fr: Réduire la taille du text de rappel de N points.
styling field:
type: choice
name: fuse
description: Use a textbox overlapping two cards? Choose the color of the other card. Write the entire text on both cards.
# localized caption:
# fr: Fusion
# localized description:
# fr: Utiliser un champ de texte commun à deux cartes? Choisissez la couleur de l'autre carte. Écrivez l'entièreté du texte sur chaque carte.
choice: none
choice: left, mixed with white
choice: left, mixed with blue
choice: left, mixed with black
choice: left, mixed with red
choice: left, mixed with green
choice: left, mixed with artifact
choice: left, mixed with gold
choice: left, mixed with colorless
choice: left, mixed with purple
choice: right, mixed with white
choice: right, mixed with blue
choice: right, mixed with black
choice: right, mixed with red
choice: right, mixed with green
choice: right, mixed with artifact
choice: right, mixed with gold
choice: right, mixed with colorless
choice: right, mixed with purple
initial: none
styling field:
type: boolean
name: banner
description: Use a text field to write info on the left of the card?
# localized caption:
# fr: Bannière
# localized description:
# fr: Utiliser un champ de texte sur la gauche de la carte?
initial: no
styling field:
type: text
name: alt rarity color
description: Use a custom color for the rarity symbol. Formatted as "R1,G1,B1:R2,G2,B2:R3,G3,B3:R4,G4,B4:br:". 1 and 2 are fill colors, 3 and 4 border colors, br is the border radius. Must end with :
# localized caption:
# fr: Couleur de rareté
# localized description:
# fr: Utiliser une couleur personnalisée pour le symbole de rareté? Format: "R1,G1,B1:R2,G2,B2:R3,G3,B3:R4,G4,B4:br:". 1 et 2 sont les couleurs de remplissage, 3 et 4 sont les couleur de bordure, br est la taille de bordure. Doit finir par :
styling field:
type: boolean
name: inverted common symbol
description: Use the color inverted common rarity symbol, like in Coldsnap?
# localized caption:
# fr: Couleur des courantes inversée
# localized description:
# fr: Utiliser des couleurs inversées pour le symbole de rareté des cartes courantes, comme dans l'extension 'Coldsnap'?
initial: no
styling field:
type: text
name: shrink rarity symbol
description: Shrinks the top, bottom, left, and right edges of the rarity symbol by this many pixels. Use negatives to enlarge. Formatted as "1,2,3,4"
# localized caption:
# fr: Rapetisser la rareté
# localized description:
# fr: Réduire la taille du haut, du bas, de la gauche, et de la droite du symbole de rareté. Utilisez des négatifs pour agrandir. Format: "1,2,3,4"
styling field:
type: choice
name: force left color
description: Use a specified color for the left half of the frame.
# localized caption:
# fr: Forcer la couleur gauche
# localized description:
# fr: Utiliser la couleur spécifiée pour la moitié gauche de la carte.
choice: none
choice: white
choice: blue
choice: black
choice: red
choice: green
choice: artifact
choice: gold
choice: colorless
choice: purple
initial: none
styling field:
type: choice
name: force right color
description: Use a specified color for the right half of the frame.
# localized caption:
# fr: Forcer la couleur droite
# localized description:
# fr: Utiliser la couleur spécifiée pour la moitié droite de la carte.
choice: none
choice: white
choice: blue
choice: black
choice: red
choice: green
choice: artifact
choice: gold
choice: colorless
choice: purple
initial: none
styling field:
type: boolean
name: force hybrid frame
description: Use a hybrid 2-color frame instead of a gold frame even if the casting cost has no hybrid mana?
# localized caption:
# fr: Forcer les couleurs hybrides
# localized description:
# fr: Utiliser un cadre hybride à deux couleurs au lieu d'un cadre doré, même si la carte n'a pas de mana hybride dans son coût de lancement?
initial: yes
styling field:
type: color
name: illustrator text color
description: Use the specified color for the illustrator, copyright, and vorthos text.
# localized caption:
# fr: Couleur du copyright
# localized description:
# fr: Utiliser la couleur spécifiée pour le nom de l'artiste et les lignes de copyright.
choice:
name: black
color: rgb(0,0,0)
choice:
name: white
color: rgb(255,255,255)
choice:
name: use card color
color: rgb(255,254,255)
initial: white
styling field:
type: boolean
name: remove from autocount
description: Remove this card from the automatic card count, to allow for overcounted cards, like in Planeswalker Decks?
# localized caption:
# fr: Retirer du compte
# localized description:
# fr: Ne pas compter cette carte dans la numérotation du Set?
initial: no
styling field:
type: boolean
name: use guild mana symbols
description: Use the Ravnica guild symbols instead of the official half/half circles for hybrid mana?
# localized caption:
# fr: Mana de guilde
# localized description:
# fr: Utiliser les symboles de guildes au lieu des symboles moitié/moitié pour le mana hybride?
initial: no
styling field:
type: package choice
name: casting cost mana symbols
description: Mana symbols used for casting cost, name, banner, fuse and transformation reminder.
# localized caption:
# fr: Symboles des coûts
# localized description:
# fr: Les symboles à utiliser dans le coût de lancement, le nom, la bannière, la fusion, et le rappel de transformation.
match: magic-mana-*.mse-symbol-font
initial: magic-mana-genevensis-large.mse-symbol-font
styling field:
type: package choice
name: text box mana symbols
description: Mana symbols used for rule text.
# localized caption:
# fr: Symboles des textes
# localized description:
# fr: Les symboles à utiliser dans le texte de règles.
match: magic-mana-*.mse-symbol-font
initial: magic-mana-genevensis-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: text
name: name font
description: Formatted as "font name;font size;font color;vertical offset;italic font name" last 4 are optional. Color can be a name or R,G,B,A numbers. Hover your mouse over the font file to see it's details, it's Title is it's name.
# localized caption:
# fr: Police du nom
# localized description:
# fr: Format: "nom de la police;taille;couleur;décalage vertical;nom de la police italique". Les 4 derniers sont optionnels. Format couleur: "R,G,B,A". Survolez le fichier de police avec la souris pour voir son titre, qui est son nom.
styling field:
type: text
name: type font
description: Formatted as "font name;font size;font color;vertical offset;italic font name" last 4 are optional. Color can be a name or R,G,B,A numbers. Hover your mouse over the font file to see it's details, and write it's Title here.
# localized caption:
# fr: Police du type
# localized description:
# fr: Format: "nom de la police;taille;couleur;décalage vertical;nom de la police italique". Les 4 derniers sont optionnels. Format couleur: "R,G,B,A". Survolez le fichier de police avec la souris pour voir son titre, qui est son nom.
styling field:
type: text
name: text font
description: Formatted as "font name;font size;font color;vertical offset;italic font name" last 4 are optional. Color can be a name or R,G,B,A numbers. Hover your mouse over the font file to see it's details, and write it's Title here.
# localized caption:
# fr: Police du texte des règles
# localized description:
# fr: Format: "nom de la police;taille;couleur;décalage vertical;nom de la police italique". Les 4 derniers sont optionnels. Format couleur: "R,G,B,A". Survolez le fichier de police avec la souris pour voir son titre, qui est son nom.
styling field:
type: text
name: loyalty font
description: Formatted as "font name;font size;font color;vertical offset;italic font name" last 4 are optional. Color can be a name or R,G,B,A numbers. Hover your mouse over the font file to see it's details, and write it's Title here.
# localized caption:
# fr: Police de loyauté
# localized description:
# fr: Format: "nom de la police;taille;couleur;décalage vertical;nom de la police italique". Les 4 derniers sont optionnels. Format couleur: "R,G,B,A". Survolez le fichier de police avec la souris pour voir son titre, qui est son nom.
styling field:
type: text
name: PT font
description: Formatted as "font name;font size;font color;vertical offset;italic font name" last 4 are optional. Color can be a name or R,G,B,A numbers. Hover your mouse over the font file to see it's details, and write it's Title here.
# localized caption:
# fr: Police de force et endurance
# localized description:
# fr: Format: "nom de la police;taille;couleur;décalage vertical;nom de la police italique". Les 4 derniers sont optionnels. Format couleur: "R,G,B,A". Survolez le fichier de police avec la souris pour voir son titre, qui est son nom.
styling field:
type: text
name: alias font
description: Formatted as "font name;font size;font color;vertical offset;italic font name" last 4 are optional. Color can be a name or R,G,B,A numbers. Hover your mouse over the font file to see it's details, and write it's Title here.
# localized caption:
# fr: Police de l'alias
# localized description:
# fr: Format: "nom de la police;taille;couleur;décalage vertical;nom de la police italique". Les 4 derniers sont optionnels. Format couleur: "R,G,B,A". Survolez le fichier de police avec la souris pour voir son titre, qui est son nom.
styling field:
type: text
name: auxiliary font
description: Font used for the transformation reminder, fuse, choice bar and banner. Formatted as "font name;font size;font color;vertical offset;italic font name" last 4 are optional. Color can be a name or R,G,B,A numbers.
# localized caption:
# fr: Police auxiliaire
# localized description:
# fr: Police utilisée pour la bannière, la fusion, la barre de choix et le rappel de transformation. Format: "nom de la police;taille;couleur;décalage vertical;nom de la police italique". Les 4 derniers sont optionnels. Format couleur: "R,G,B,A".
styling style:
use guild mana symbols:
render style: both
choice images:
yes: /magic-mana-genevensis-large.mse-symbol-font/mana_guild_wu.png
no: /magic-mana-genevensis-large.mse-symbol-font/mana_bi_wu.png
inverted common symbol:
choice images:
no: { symbol_variation(symbol: set.symbol, variation: "common") }
yes: { symbol_variation(symbol: set.symbol, variation: "invertedcommon") }
############################################################## Card fields
include file: /magic-modules.mse-include/corners/card_fields
card style:
############################# Background
card color:
left: 0
top: 0
width: 750
height: 1046
z index: -20
render style: image
popup style: in place
image: { frame_image() }
#mask: { (if has_extended_art() then "puma_" else "") + styling.taller_textboxes + "_mask.png" }
############################# Name line
name:
left: { 64 + (if styling.center_name then name_margin() else nameline_left_margin()) }
top: { 55 + name_font_vertical() }
right: { 686 - (if styling.center_name then name_margin() else nameline_right_margin()) }
height: 48
alignment: { if styling.center_name then "center middle shrink-overflow" else "left middle shrink-overflow" }
z index: 42
font:
name: { name_font() }
italic name: { name_font_italic() }
size: { name_font_size() }
color: { name_font_color() }
symbol font:
name: { styling.casting_cost_mana_symbols }
size: { name_font_size() }
casting cost:
right: 687
top: 55
width: { max(60, card_style.casting_cost.content_width) + 10 }
height: 48
alignment: middle right
font:
name: { body_font() }
size: 32
symbol font:
name: { styling.casting_cost_mana_symbols }
size: 32
always symbol: true
z index: 42
alias:
left: 149
top: { 117 + name2_font_vertical() }
width: 452
height: 24
alignment: center middle shrink-overflow
z index: 42
font:
name: { name2_font() }
italic name: { name2_font_italic() }
size: { name2_font_size() }
color: { name2_font_color() }
############################# Image
image:
left: { image_left() }
top: { image_top() }
width: { image_width() }
height: { image_height() }
z index: -10
mask: { crop_safe(current_mask(), width: image_width(), height: image_height(), left: image_left(), top: image_top()) }
mainframe image:
left: { popout_left() }
top: { popout_top() }
width: { popout_width() }
height: { popout_height() }
z index: 2000
############################# Card type
type:
left: { 73 + (if styling.center_type then type_margin() else (typeline_left_margin() - (if (styling.taller_textboxes == "taller" or styling.taller_textboxes == "tallest") and styling.banner then -10 else 0))) }
top: { 596 - type_shift() + type_font_vertical() }
right: { 677 - (if styling.center_type then type_margin() else typeline_right_margin()) }
height: 44
alignment: { if styling.center_type then "center middle shrink-overflow" else "left middle shrink-overflow" }
z index: 42
font:
name: { type_font() }
italic name: { type_font_italic() }
size: { type_font_size() }
color: { type_font_color() }
separator color: red
rarity:
left: { 620 - (-chop_rarity_left()) }
width: { 60 - chop_rarity_right() - chop_rarity_left() }
top: { 588 - (-chop_rarity_top()) - type_shift() }
bottom: { 648 - chop_rarity_bot() - type_shift() }
z index: 40
render style: image
choice images:
basic land:
script:
if has_custom_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "c.png"
else if alt_rarity() then alt_symbol()
else symbol_variation(symbol: set.symbol, variation: "basic land")
common:
script:
if has_custom_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "c.png"
else if alt_rarity() then alt_symbol()
else if styling.inverted_common_symbol then symbol_variation(symbol: set.symbol, variation: "invertedcommon")
else symbol_variation(symbol: set.symbol, variation: "common")
uncommon:
script:
if has_custom_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "u.png"
else if alt_rarity() then alt_symbol()
else symbol_variation(symbol: set.symbol, variation: "uncommon")
rare:
script:
if has_custom_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "r.png"
else if alt_rarity() then alt_symbol()
else symbol_variation(symbol: set.symbol, variation: "rare")
mythic rare:
script:
if has_custom_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "m.png"
else if alt_rarity() then alt_symbol()
else symbol_variation(symbol: set.symbol, variation: "mythic rare")
masterpiece:
script:
if has_custom_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "mp.png"
else if alt_rarity() then alt_symbol()
else symbol_variation(symbol: set.symbol, variation: "masterpiece")
special:
script:
if has_custom_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "s.png"
else if alt_rarity() then alt_symbol()
else symbol_variation(symbol: set.symbol, variation: "purple")
############################# Text boxes
text:
left: 73
top: { 661 - (-chop_top()) - type_shift() + body_font_vertical() }
width: { 604 - chop_right() }
bottom: { 953 - chop_bot() - ( if styling.transformation_reminder != "none" and styling.transformation_reminder != "notch" then 15 else 0 ) }
font:
name: { body_font() }
italic name: { body_font_italic() }
size: { body_font_size() }
color: { body_font_color() }
scale down to: 12
symbol font:
name: { styling.text_box_mana_symbols }
size: { body_font_size() }
scale down to: 12
alignment: middle left
mask: { if card.loyalty != "" then ( if card.pt != "" then "text_mask_both.png" else "text_mask.png" ) else ( if card.pt != "" then "text_mask.png" else "" ) }
z index: 44
line height hard: 1.2
line height line: 1.5
line height soft: { if abilities_count() == 4 then 0.87 else 0.9 }
line height hard max: 1.4
line height line max: 2.2
rule text 3:
left: { (if contains(styling.fuse, match: "right") then 750 else 0) - (if length(remove_tags(card.rule_text_3)) > 9 then 22 else 0) - 128 + 36 }
top: { 521 + name3_font_vertical() }
width: { if styling.fuse != "none" then (if length(remove_tags(card.rule_text_3)) > 9 then 228 else 184) else 0 }
height: 54
z index: 160
alignment: center middle shrink-overflow
font:
name: { name3_font() }
italic name: { name3_font_italic() }
size: { name3_font_size() }
color: { name3_font_color() }
scale down to: 12
symbol font:
name: { styling.text_box_mana_symbols }
size: { name3_font_size() }
scale down to: 12
############################# Loyalty
loyalty:
z index: 46
left: { if card.pt == "" then 625 else 661 }
top: { (if card.pt == "" then 942 else 886) + pt2_font_vertical() }
width: 34
height: 68
alignment: center middle shrink-overflow
font:
name: { pt2_font() }
italic name: { pt2_font_italic() }
size: { pt2_font_size() }
color: { pt2_font_color() }
loyalty cost 1:
z index: 46
left: 36
top: { ability_center(0) - 18 - ( -loyal_move(1)) + pt2_font_vertical() * 22/32 }
width: 35
height: 37
alignment: center middle shrink-overflow
font:
name: { pt2_font() }
italic name: { pt2_font_italic() }
size: { pt2_font_size() * 22/32 }
color: { pt2_font_color() }
loyalty cost 2:
z index: 46
left: 36
top: { ability_center(1) - 18 - ( -loyal_move(2)) + pt2_font_vertical() * 22/32 }
width: { if abilities_count() >= 2 then 35 else 0 }
height: 37
alignment: center middle shrink-overflow
font:
name: { pt2_font() }
italic name: { pt2_font_italic() }
size: { pt2_font_size() * 22/32 }
color: { pt2_font_color() }
loyalty cost 3:
z index: 46
left: 36
top: { ability_center(2) - 18 - ( -loyal_move(3)) + pt2_font_vertical() * 22/32 }
width: { if abilities_count() >= 3 then 35 else 0 }
height: 37
alignment: center middle shrink-overflow
font:
name: { pt2_font() }
italic name: { pt2_font_italic() }
size: { pt2_font_size() * 22/32 }
color: { pt2_font_color() }
loyalty cost 4:
z index: 46
left: 36
top: { ability_center(3) - 18 - ( -loyal_move(4)) + pt2_font_vertical() * 22/32 }
width: { if abilities_count() >= 4 then 35 else 0 }
height: 37
alignment: center middle shrink-overflow
font:
name: { pt2_font() }
italic name: { pt2_font_italic() }
size: { pt2_font_size() * 22/32 }
color: { pt2_font_color() }
loyalty cost 5:
z index: 46
left: 36
top: { ability_center(4) - 18 - ( -loyal_move(5)) + pt2_font_vertical() * 22/32 }
width: { if abilities_count() >= 5 then 35 else 0 }
height: 37
alignment: center middle shrink-overflow
font:
name: { pt2_font() }
italic name: { pt2_font_italic() }
size: { pt2_font_size() * 22/32 }
color: { pt2_font_color() }
loyalty cost 6:
z index: 46
left: 36
top: { ability_center(5) - 18 - ( -loyal_move(6)) + pt2_font_vertical() * 22/32 }
width: { if abilities_count() >= 6 then 35 else 0 }
height: 37
alignment: center middle shrink-overflow
font:
name: { pt2_font() }
italic name: { pt2_font_italic() }
size: { pt2_font_size() * 22/32 }
color: { pt2_font_color() }
############################# PT
pt:
z index: 46
left: 552
top: { (if card.pt == "" then 890 else 950) + pt_font_vertical() }
width: 120
height: 56
alignment: center middle shrink-overflow
font:
name: { pt_font() }
italic name: { pt_font_italic() }
size: { pt_font_size() }
color: { pt_font_color() }
scale down to: 12
separator color: red
############################# Copyright stuff
illustrator:
left: 225
top: 1013
width: 300
height: 20
z index: 110
alignment: top center
font:
name: Beleren Small Caps Bold
size: 17
color: { if styling.illustrator_text_color == rgb(255,254,255) then copyright_color() else styling.illustrator_text_color }
############################################################## Extra card fields
extra card field:
type: text
name: card code
save value: false
script:
card_number := if set.automatic_card_numbers and not styling.remove_from_autocount then (card_number_m15() + " ") else ""
if length(card_number) == 4 then card_number := "0" + card_number
if set.automatic_copyright then combined_editor(prefix: card_number, field1: card.copyright, separator1: if card.copyright == "" then "" else " ", field2: card.card_code_text)
else forward_editor(prefix: card_number, field: card.card_code_text)
description: Card number and copyright, the default value can be changed on the 'set info' tab
extra card field:
type: choice
name: image copy
editable: false
save value: false
choice: image copy
extra card field:
type: choice
name: transformation symbol
editable: false
save value: false
choice: transformation symbol
extra card field:
type: choice
name: transformation reminder
editable: false
save value: false
choice: transformation reminder
extra card field:
type: text
name: transformation reminder text
save value: true
extra card field:
type: choice
name: transformation reminder pt paste
editable: false
save value: false
choice: transformation reminder pt paste
extra card field:
type: choice
name: alias box
editable: false
save value: false
choice: alias box
extra card field:
type: text
name: ascend
save value: true
script: replace(value, match: " ", replace: "")
extra card field:
type: choice
name: ascend box
editable: false
save value: false
choice: ascend box
extra card field:
type: choice
name: color indicator dot
editable: false
save value: false
choice: color indicator dot
extra card field:
type: choice
name: illustrator brush
editable: false
save value: false
choice: illustrator brush
extra card field:
type: choice
name: illustrator brush 2
editable: false
save value: false
choice: illustrator brush 2
extra card field:
type: text
name: vorthos box
save value: true
default: vorthos_default()
description: Vorthos box of this card, set code and set language, the default value can be changed on the 'set info' tab
extra card field:
type: choice
name: loyalty box
editable: false
save value: false
choice: loyalty
extra card field:
type: choice
name: loyalty cost box 1
editable: false
save value: false
choice: loyalty cost box 1
extra card field:
type: choice
name: loyalty cost box 2
editable: false
save value: false
choice: loyalty cost box 2
extra card field:
type: choice
name: loyalty cost box 3
editable: false
save value: false
choice: loyalty cost box 3
extra card field:
type: choice
name: loyalty cost box 4
editable: false
save value: false
choice: loyalty cost box 4
extra card field:
type: choice
name: loyalty cost box 5
editable: false
save value: false
choice: loyalty cost box 5
extra card field:
type: choice
name: loyalty cost box 6
editable: false
save value: false
choice: loyalty cost box 6
extra card field:
type: text
name: colon 1
editable: false
save value: false
script: ":"
extra card field:
type: text
name: colon 2
editable: false
save value: false
script: ":"
extra card field:
type: text
name: colon 3
editable: false
save value: false
script: ":"
extra card field:
type: text
name: colon 4
editable: false
save value: false
script: ":"
extra card field:
type: text
name: colon 5
editable: false
save value: false
script: ":"
extra card field:
type: text
name: colon 6
editable: false
save value: false
script: ":"
extra card field:
type: choice
name: pt box
editable: false
save value: false
choice: pt box
extra card field:
type: choice
name: watermark image
editable: false
save value: false
show statistics: false
choice: watermark image
extra card field:
type: choice
name: textbox stripe separator 1
editable: false
save value: false
choice: textbox stripe separator 1
extra card field:
type: choice
name: textbox stripe separator 2
editable: false
save value: false
choice: textbox stripe separator 2
extra card field:
type: choice
name: textbox stripe separator 3
editable: false
save value: false
choice: textbox stripe separator 3
extra card field:
type: choice
name: textbox stripe separator 4
editable: false
save value: false
choice: textbox stripe separator 4
extra card field:
type: choice
name: textbox stripe separator 5
editable: false
save value: false
choice: textbox stripe separator 5
extra card field:
type: choice
name: textbox background
editable: false
save value: false
show statistics: false
choice: textbox background
extra card field:
type: choice
name: textbox stripe 1
editable: false
save value: false
show statistics: false
choice: textbox stripe 1
extra card field:
type: choice
name: textbox stripe 2
editable: false
save value: false
show statistics: false
choice: textbox stripe 2
extra card field:
type: choice
name: textbox stripe 3
editable: false
save value: false
show statistics: false
choice: textbox stripe 3
extra card field:
type: choice
name: namebox background
editable: false
save value: false
show statistics: false
choice: namebox background
extra card field:
type: choice
name: typebox background
editable: false
save value: false
show statistics: false
choice: typebox background
extra card field:
type: choice
name: crown
editable: false
save value: false
show statistics: false
choice: crown
extra card field:
type: choice
name: leaf
editable: false
save value: false
show statistics: false
choice: leaf
extra card field:
type: choice
name: leaf bottom
editable: false
save value: false
show statistics: false
choice: leaf bottom
extra card field:
type: choice
name: legend leaf
editable: false
save value: false
show statistics: false
choice: legend leaf
extra card field:
type: choice
name: insignia
editable: false
save value: false
show statistics: false
choice: insignia
extra card field:
type: choice
name: fuse box
editable: false
save value: false
show statistics: false
choice: fuse box
extra card field:
type: color
name: card color border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: crown border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: leaf border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: leaf bottom border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: legend leaf border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: insignia border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: symbol border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: color indicator dot border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: transformation reminder border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: transformation reminder pt paste border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: alias box border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: ascend box border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: loyalty border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: loyalty cost 1 border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: loyalty cost 2 border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: loyalty cost 3 border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: loyalty cost 4 border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: loyalty cost 5 border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: loyalty cost 6 border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: pt border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: color
name: fuse box border
editable: false
save value: false
show statistics: false
script: set.border_color
extra card field:
type: choice
name: pride pin
choice: none
choice: lesbian
choice: gay
choice: bi
choice: trans
choice: pan
choice: ace
choice: aro
choice: nonbinary
choice: agender
choice: genderfluid
choice: cis
choice: straight
choice: rainbow
initial: none
save value: true
editable: true
extra card style:
card code:
left: 58
top: 1016
right: { 328 - ( card_style.illustrator.content_width / 2 ) }
height: 20
z index: 110
alignment: top left shrink-overflow
font:
name: Beleren Small Caps Bold
size: 15
color: { if styling.illustrator_text_color == rgb(255,254,255) then copyright_color() else styling.illustrator_text_color }
image copy:
left: { if has_extended_art() or styling.stretch_image_to_whole_card then 0 else 54 }
top: { if styling.stretch_image_to_whole_card then 0 else 114 }
width: { if has_extended_art() or styling.stretch_image_to_whole_card then 750 else 642 }
height: { if styling.stretch_image_to_whole_card then 1046 else 858 }
z index: 1000
visible: { contains(styling.custom_mask, match: ".png") }
render style: image
image: { card.image }
mask: { "/magic-mainframe-extras.mse-include/" + styling.custom_mask }
transformation symbol:
left: 35
top: 45
height: 78
width: 73
z index: 8
visible: { has_symbol() }
render style: image
image: { symbol_image() }
transformation reminder:
left: { if styling.transformation_reminder == "notch" then 687 else 0 }
top: { if styling.transformation_reminder == "notch" then (if card.loyalty == "" then (if card.pt == "" then 900 else 875) else (if card.pt == "" then 875 else 815)) else if styling.transformation_reminder == "short" then 926 else 911 }
height: { if styling.transformation_reminder == "notch" then 56 else if styling.transformation_reminder == "short" then 91 else 103 }
width: { if styling.transformation_reminder == "notch" then 53 else if styling.transformation_reminder == "short" then 258 else if styling.transformation_reminder == "medium" then 376 else 494 }
z index: 40
visible: { styling.transformation_reminder != "none" }
render style: image
image: { reminder_image() }
transformation reminder text:
left: { if styling.transformation_reminder == "notch" then 619 else if styling.transformation_reminder == "short" then 4 else 22 }
top: { (if styling.transformation_reminder == "notch" then (if card.loyalty == "" then (if card.pt == "" then 906 else 888) else (if card.pt == "" then 888 else 828)) else 947) + name3_font_vertical() }
height: { if styling.transformation_reminder == "notch" then 30 else 60 }
width: { if styling.transformation_reminder == "notch" then 75 else if styling.transformation_reminder == "short" then 191 else if styling.transformation_reminder == "medium" then 294 else if styling.transformation_reminder == "long" then 404 else 0 }
z index: 50
font:
name: { if styling.auxiliary_font == "" then (if styling.transformation_reminder == "notch" then "ModMatrix" else "Beleren Bold") else name3_font() }
italic name: { if styling.auxiliary_font == "" then (if styling.transformation_reminder == "notch" then "ModMatrix" else "Beleren Bold") else name3_font_italic() }
size: { name3_font_size() - (if styling.transformation_reminder == "notch" then 3 else 0) - shrink_reminder() }
color: { name3_font_color() }
symbol font:
name: { styling.casting_cost_mana_symbols }
size: { name3_font_size() - (if styling.transformation_reminder == "notch" then 3 else 0) - shrink_reminder() }
alignment: { if styling.transformation_reminder == "notch" then "right middle" else "center middle shrink-overflow" }
transformation reminder pt paste:
left: 456
top: 945
height: 58
width: 76
z index: 42
visible: { styling.transformation_reminder == "long" and card.pt != ""}
render style: image
image: { image("reminderwalkerlongptpaste", side: "right") }
alias box:
left: 110
top: 112
height: 47
width: 530
z index: 4
visible: { card.alias != ""}
render style: image
image: { image("alias", side: "both") }
ascend:
left: 18
top: { 147 + name3_font_vertical() }
width: { if styling.banner then 50 else 0 }
height: 424
direction: vertical
z index: 12
alignment: center middle
font:
name: { name3_font() }
italic name: { name3_font_italic() }
size: { name3_font_size() - 12 }
color: { name3_font_color() }
scale down to: 12
symbol font:
name: { styling.casting_cost_mana_symbols }
size: { name3_font_size() - 12 }
scale down to: 12
ascend box:
left: 9
top: 117
height: 462
width: 68
z index: 10
visible: { styling.banner }
render style: image
image: { image("ascend", side: "left") }
color indicator dot:
left: { 66 - (if (styling.taller_textboxes == "taller" or styling.taller_textboxes == "tallest") and styling.banner then -10 else 0) }
top: { 597 - type_shift() }
width: 42
height: 42
z index: 40
visible: { has_identity() }
render style: image
image: { color_indicator_dot_image() }
illustrator brush:
left: { 334 - ( card_style.illustrator.content_width / 2 ) }
top: 1017
width: 36
height: 18
z index: 110
render style: image
image: { illustrator_brush_image("1") }
illustrator brush 2:
left: { 380 - ( -card_style.illustrator.content_width / 2 ) }
top: 1017
width: 36
height: 18
z index: 110
render style: image
image: { illustrator_brush_image("2") }
vorthos box:
left: { 422 - ( -card_style.illustrator.content_width / 2 ) }
right: 692
top: 1016
height: 20
z index: 110
alignment: top right shrink-overflow
font:
name: Beleren Small Caps Bold
size: 15
color: { if styling.illustrator_text_color == rgb(255,254,255) then copyright_color() else styling.illustrator_text_color }
loyalty box:
right: 750
top: { if card.pt == "" then 934 else 868 }
width: { if card.pt == "" then 193 else 124 }
height: { if card.pt == "" then 89 else 112 }
z index: 32
visible: { card.loyalty != "" }
render style: image
image: { image("loy" + ( if card.pt == "" then "" else "top" ), side: "right") }
loyalty cost box 1:
left: 0
top: { ability_center(0) - 40 - ( -loyal_move(1)) }
width: 90
height: 126
z index: 26
visible: { card.loyalty_cost_1 != "" }
render style: image
image: { image( (if contains(card.loyalty_cost_1, match: "+") then "loyup" else if contains(card.loyalty_cost_1, match: "-") then (if is_ult(1) then "loydown2" else "loydown1") else "loynaught"), side: "left") }
loyalty cost box 2:
left: 0
top: { ability_center(1) - 40 - ( -loyal_move(2)) }
width: 90
height: 126
z index: 28
visible: { card.loyalty_cost_2 != "" and abilities_count() >= 2 }
render style: image
image: { image( (if contains(card.loyalty_cost_2, match: "+") then "loyup" else if contains(card.loyalty_cost_2, match: "-") then (if is_ult(2) then "loydown2" else "loydown1") else "loynaught"), side: "left") }
loyalty cost box 3:
left: 0
top: { ability_center(2) - 40 - ( -loyal_move(3)) }
width: 90
height: 126
z index: 30
visible: { card.loyalty_cost_3 != "" and abilities_count() >= 3 }
render style: image
image: { image( (if contains(card.loyalty_cost_3, match: "+") then "loyup" else if contains(card.loyalty_cost_3, match: "-") then (if is_ult(3) then "loydown2" else "loydown1") else "loynaught"), side: "left") }
loyalty cost box 4:
left: 0
top: { ability_center(3) - 40 - ( -loyal_move(4)) }
width: 90
height: 126
z index: 32
visible: { card.loyalty_cost_4 != "" and abilities_count() >= 4 }
render style: image
image: { image( (if contains(card.loyalty_cost_4, match: "+") then "loyup" else if contains(card.loyalty_cost_4, match: "-") then (if is_ult(4) then "loydown2" else "loydown1") else "loynaught"), side: "left") }
loyalty cost box 5:
left: 0
top: { ability_center(4) - 40 - ( -loyal_move(5)) }
width: 90
height: 126
z index: 34
visible: { card.loyalty_cost_5 != "" and abilities_count() >= 5 }
render style: image
image: { image( (if contains(card.loyalty_cost_5, match: "+") then "loyup" else if contains(card.loyalty_cost_5, match: "-") then (if is_ult(5) then "loydown2" else "loydown1") else "loynaught"), side: "left") }
loyalty cost box 6:
left: 0
top: { ability_center(5) - 40 - ( -loyal_move(6)) }
width: 90
height: 126
z index: 36
visible: { card.loyalty_cost_6 != "" and abilities_count() >= 6 }
render style: image
image: { image( (if contains(card.loyalty_cost_6, match: "+") then "loyup" else if contains(card.loyalty_cost_6, match: "-") then (if is_ult(6) then "loydown2" else "loydown1") else "loynaught"), side: "left") }
colon 1:
left: 92
top: { ability_center(0) - 38 - ( -loyal_move(1)) }
width: 17
height: 70
z index: 32
visible: { card.loyalty_cost_1 != "" }
font:
name: { if styling.name_font == "" then "Beleren Bold" else styling.name_font }
size: 25
color: black
alignment: center middle
colon 2:
left: 92
top: { ability_center(1) - 38 - ( -loyal_move(2)) }
width: 17
height: 70
z index: 32
visible: { card.loyalty_cost_2 != "" and abilities_count() >= 2 }
font:
name: { if styling.name_font == "" then "Beleren Bold" else styling.name_font }
size: 25
color: black
alignment: center middle
colon 3:
left: 92
top: { ability_center(2) - 38 - ( -loyal_move(3)) }
width: 17
height: 70
z index: 32
visible: { card.loyalty_cost_3 != "" and abilities_count() >= 3 }
font:
name: { if styling.name_font == "" then "Beleren Bold" else styling.name_font }
size: 25
color: black
alignment: center middle
colon 4:
left: 92
top: { ability_center(3) - 38 - ( -loyal_move(4)) }
width: 17
height: 70
z index: 32
visible: { card.loyalty_cost_4 != "" and abilities_count() >= 4 }
font:
name: { if styling.name_font == "" then "Beleren Bold" else styling.name_font }
size: 25
color: black
alignment: center middle
colon 5:
left: 92
top: { ability_center(4) - 38 - ( -loyal_move(5)) }
width: 17
height: 70
z index: 32
visible: { card.loyalty_cost_5 != "" and abilities_count() >= 5 }
font:
name: { if styling.name_font == "" then "Beleren Bold" else styling.name_font }
size: 25
color: black
alignment: center middle
colon 6:
left: 92
top: { ability_center(5) - 38 - ( -loyal_move(6)) }
width: 17
height: 70
z index: 32
visible: { card.loyalty_cost_6 != "" and abilities_count() >= 6 }
font:
name: { if styling.name_font == "" then "Beleren Bold" else styling.name_font }
size: 25
color: black
alignment: center middle
pt box:
left: 492
top: 939
width: 221
height: 76
z index: 30
visible: { card.pt != "" }
render style: image
image: { pt_image() }
watermark image:
left: { watermark_left() }
top: { watermark_top() }
width: { watermark_size() }
height: { watermark_size() }
z index: 24
render style: image
image: { opacity_watermark_image() }
mask: { size := watermark_size(); crop_safe(current_mask(), width: size, height: size, left: watermark_left(), top: watermark_top()) }
namebox background:
left: 45
width: 660
top: 50
height: 63
z index: 0
render style: image
image: { opacity_namebox_image() }
mask: name_mask.png
typebox background:
left: 55
width: 640
top: { 584 - type_shift() }
height: 68
z index: 8
render style: image
image: { opacity_typebox_image() }
mask: type_mask.png
textbox background:
left: 0
width: 750
top: { textbox_top() }
height: { textbox_height() }
z index: -5
render style: image
image: { opacity_textbox_image() }
mask: { crop_safe(current_mask(), left: 0, top: textbox_top(), width: 750, height: textbox_height()) }
textbox stripe separator 1:
left: 0
width: 750
top: { stripe_top(1) }
height: 16
z index: -4
visible: { styling.stripes != "none" and abilities_count() >= 2 }
render style: image
image: { set_alpha(recolor_image("stripe_" + styling.stripes + "_bot.png", color: styling.textbox_color), alpha: 0.35) }
mask: { crop_safe(current_mask(), left: 0, top: stripe_top(1), width: 750, height: 16) }
textbox stripe separator 2:
left: 0
width: 750
top: { stripe_top(2) }
height: 16
z index: -4
visible: { styling.stripes != "none" and abilities_count() >= 3 }
render style: image
image: { set_alpha(recolor_image("stripe_" + styling.stripes + "_top.png", color: styling.textbox_color), alpha: 0.35) }
mask: { crop_safe(current_mask(), left: 0, top: stripe_top(2), width: 750, height: 16) }
textbox stripe separator 3:
left: 0
width: 750
top: { stripe_top(3) }
height: 16
z index: -4
visible: { styling.stripes != "none" and abilities_count() >= 4 }
render style: image
image: { set_alpha(recolor_image("stripe_" + styling.stripes + "_bot.png", color: styling.textbox_color), alpha: 0.35) }
mask: { crop_safe(current_mask(), left: 0, top: stripe_top(3), width: 750, height: 16) }
textbox stripe separator 4:
left: 0
width: 750
top: { stripe_top(4) }
height: 16
z index: -4
visible: { styling.stripes != "none" and abilities_count() >= 5 }
render style: image
image: { set_alpha(recolor_image("stripe_" + styling.stripes + "_top.png", color: styling.textbox_color), alpha: 0.35) }
mask: { crop_safe(current_mask(), left: 0, top: stripe_top(4), width: 750, height: 16) }
textbox stripe separator 5:
left: 0
width: 750
top: { stripe_top(5) }
height: 16
z index: -4
visible: { styling.stripes != "none" and abilities_count() >= 6 }
render style: image
image: { set_alpha(recolor_image("stripe_" + styling.stripes + "_bot.png", color: styling.textbox_color), alpha: 0.35) }
mask: { crop_safe(current_mask(), left: 0, top: stripe_top(5), width: 750, height: 16) }
textbox stripe 1:
left: 0
width: 750
top: { 653 - type_shift() }
bottom: { stripe_top(1) }
z index: -4
visible: { styling.stripes != "none" and abilities_count() >= 2 }
render style: image
image: { set_alpha(recolor_image("textbox_background.png", color: styling.textbox_color), alpha: 0.35) }
mask: { top := 653 - type_shift(); crop_safe(current_mask(), left: 0, top: top, width: 750, height: stripe_top(1) - top) }
textbox stripe 2:
left: 0
width: 750
top: { stripe_top(2) + 16 }
bottom: { if abilities_count() >= 4 then stripe_top(3) else 1046 }
z index: -4
visible: { styling.stripes != "none" and abilities_count() >= 3 }
render style: image
image: { set_alpha(recolor_image("textbox_background.png", color: styling.textbox_color), alpha: 0.35) }
mask: { top := stripe_top(2) + 16; crop_safe(current_mask(), left: 0, top: top, width: 750, height: (if abilities_count() >= 4 then stripe_top(3) else 1046) - top) }
textbox stripe 3:
left: 0
width: 750
top: { stripe_top(4) + 16 }
bottom: { if abilities_count() >= 6 then stripe_top(5) else 1046 }
z index: -4
visible: { styling.stripes != "none" and abilities_count() >= 5 }
render style: image
image: { set_alpha(recolor_image("textbox_background.png", color: styling.textbox_color), alpha: 0.35) }
mask: { top := stripe_top(4) + 16; crop_safe(current_mask(), left: 0, top: top, width: 750, height: (if abilities_count() >= 6 then stripe_top(5) else 1046) - top) }
crown:
left: 0
top: 0
width: 750
height: 1046
z index: 2
visible: { has_crown() or has_special_crown() }
render style: image
image: { crown_image() }
mask: { if has_extended_art() and has_special_crown() then "special_crown_mask.png" else "" }
leaf:
left: 0
top: 0
width: 750
height: 1046
z index: 4
visible: { has_leaf() }
render style: image
image: { leaf_image() }
leaf bottom:
left: 0
top: { 563 - type_shift() }
width: 750
height: 110
z index: 4
visible: { has_leaf() }
render style: image
image: { leaf_bottom_image() }
legend leaf:
left: 0
top: 0
width: 750
height: 1046
z index: 6
visible: { has_crown() and has_leaf() }
render style: image
image: { legend_leaf_image() }
insignia:
left: 0
top: 181
width: 750
height: 66
z index: 8
visible: { not has_extended_art() and not has_special_crown() and styling.insignia != "none" }
render style: image
image: { insignia_image() }
fuse box:
left: { stylesheet.card_style.rule_text_3.left - 36 }
top: 501
height: 94
width: { stylesheet.card_style.rule_text_3.width + 72 }
z index: 150
visible: { styling.fuse != "none" }
render style: image
image: { fuse_image() }
card color border:
visible: { set.border_color != rgb(0,0,0) }
left: 0
top: 0
width: 750
height: 1046
z index: -19
mask: { border(( if has_extended_art() then "puma" else "" ) + "walker" + styling.taller_textboxes) }
crown border:
visible: { set.border_color != rgb(0,0,0) and (has_crown() or has_special_crown()) }
left: 0
top: 0
width: 750
height: 1046
z index: 3
mask: { base := border("crown" + (if has_special_crown() then "special" else "")); if has_extended_art() and has_special_crown() then combine_blend(image1: "special_crown_mask.png", image2: base, combine: "multiply") else base }
leaf border:
visible: { set.border_color != rgb(0,0,0) and has_leaf() }
left: 0
top: 0
width: 750
height: 1046
z index: 5
mask: { border("leafwalker") }
leaf bottom border:
visible: { set.border_color != rgb(0,0,0) and has_leaf() }
left: 0
top: { 563 - type_shift() }
width: 750
height: 110
z index: 5
mask: { border("leafwalkerbottom") }
legend leaf border:
visible: { set.border_color != rgb(0,0,0) and has_crown() and has_leaf() }
left: 0
top: 0
width: 750
height: 1046
z index: 7
mask: { border("legendleaf") }
insignia border:
visible: { set.border_color != rgb(0,0,0) and not has_extended_art() and not has_special_crown() and styling.insignia != "none" }
left: 0
top: 181
width: 750
height: 66
z index: 9
mask: { border("insignia" + styling.insignia) }
symbol border:
visible: { set.border_color != rgb(0,0,0) and has_symbol() }
left: 35
top: 45
height: 78
width: 73
z index: 9
mask: { border("symboltomb") }
color indicator dot border:
visible: { set.border_color != rgb(0,0,0) and has_identity() }
left: { 66 - (if (styling.taller_textboxes == "taller" or styling.taller_textboxes == "tallest") and styling.banner then -10 else 0) }
top: { 597 - type_shift() }
width: 42
height: 42
z index: 41
mask: { border("identity") }
transformation reminder border:
visible: { set.border_color != rgb(0,0,0) and styling.transformation_reminder != "none" }
left: { if styling.transformation_reminder == "notch" then 687 else 0 }
top: { if styling.transformation_reminder == "notch" then (if card.loyalty == "" then (if card.pt == "" then 900 else 875) else (if card.pt == "" then 875 else 815)) else if styling.transformation_reminder == "short" then 926 else 911 }
height: { if styling.transformation_reminder == "notch" then 56 else if styling.transformation_reminder == "short" then 91 else 103 }
width: { if styling.transformation_reminder == "notch" then 53 else if styling.transformation_reminder == "short" then 258 else if styling.transformation_reminder == "medium" then 376 else 494 }
z index: 41
mask: { if styling.transformation_reminder == "notch" then border("remindernotchright" + (if card.pt == "" and card.loyalty == "" then "low" else "")) else border("reminderwalker" + styling.transformation_reminder) }
transformation reminder pt paste border:
visible: { set.border_color != rgb(0,0,0) and styling.transformation_reminder == "long" and card.pt != "" }
left: 456
top: 945
height: 58
width: 76
z index: 43
mask: { border("reminderwalkerlongptpaste") }
alias box border:
visible: { set.border_color != rgb(0,0,0) and card.alias != "" }
left: 110
top: 112
height: 47
width: 530
z index: 5
mask: { border("alias") }
ascend box border:
visible: { set.border_color != rgb(0,0,0) and styling.banner }
left: 9
top: 117
height: 462
width: 68
z index: 11
mask: { border("ascend") }
loyalty border:
visible: { set.border_color != rgb(0,0,0) and card.loyalty != "" }
right: 750
top: { if card.pt == "" then 934 else 868 }
width: { if card.pt == "" then 193 else 124 }
height: { if card.pt == "" then 89 else 112 }
z index: 33
mask: { border("loy" + ( if card.pt == "" then "" else "top" )) }
loyalty cost 1 border:
visible: { set.border_color != rgb(0,0,0) and card.loyalty_cost_1 != "" }
left: 0
top: { ability_center(0) - 40 - ( -loyal_move(1)) }
width: 90
height: 126
z index: 27
mask: { border(if contains(card.loyalty_cost_1, match: "+") then "loyup" else if contains(card.loyalty_cost_1, match: "-") then (if is_ult(1) then "loydown2" else "loydown1") else "loynaught") }
loyalty cost 2 border:
visible: { set.border_color != rgb(0,0,0) and card.loyalty_cost_2 != "" and abilities_count() >= 2 }
left: 0
top: { ability_center(1) - 40 - ( -loyal_move(2)) }
width: 90
height: 126
z index: 29
mask: { border(if contains(card.loyalty_cost_2, match: "+") then "loyup" else if contains(card.loyalty_cost_2, match: "-") then (if is_ult(2) then "loydown2" else "loydown1") else "loynaught") }
loyalty cost 3 border:
visible: { set.border_color != rgb(0,0,0) and card.loyalty_cost_3 != "" and abilities_count() >= 3 }
left: 0
top: { ability_center(2) - 40 - ( -loyal_move(3)) }
width: 90
height: 126
z index: 31
mask: { border(if contains(card.loyalty_cost_3, match: "+") then "loyup" else if contains(card.loyalty_cost_3, match: "-") then (if is_ult(3) then "loydown2" else "loydown1") else "loynaught") }
loyalty cost 4 border:
visible: { set.border_color != rgb(0,0,0) and card.loyalty_cost_4 != "" and abilities_count() >= 4 }
left: 0
top: { ability_center(3) - 40 - ( -loyal_move(4)) }
width: 90
height: 126
z index: 33
mask: { border(if contains(card.loyalty_cost_4, match: "+") then "loyup" else if contains(card.loyalty_cost_4, match: "-") then (if is_ult(4) then "loydown2" else "loydown1") else "loynaught") }
loyalty cost 5 border:
visible: { set.border_color != rgb(0,0,0) and card.loyalty_cost_5 != "" and abilities_count() >= 5 }
left: 0
top: { ability_center(4) - 40 - ( -loyal_move(5)) }
width: 90
height: 126
z index: 35
mask: { border(if contains(card.loyalty_cost_5, match: "+") then "loyup" else if contains(card.loyalty_cost_5, match: "-") then (if is_ult(5) then "loydown2" else "loydown1") else "loynaught") }
loyalty cost 6 border:
visible: { set.border_color != rgb(0,0,0) and card.loyalty_cost_6 != "" and abilities_count() >= 6 }
left: 0
top: { ability_center(5) - 40 - ( -loyal_move(6)) }
width: 90
height: 126
z index: 37
mask: { border(if contains(card.loyalty_cost_6, match: "+") then "loyup" else if contains(card.loyalty_cost_6, match: "-") then (if is_ult(6) then "loydown2" else "loydown1") else "loynaught") }
pt border:
visible: { set.border_color != rgb(0,0,0) and card.pt != "" }
left: 492
top: 939
width: 221
height: 76
z index: 31
mask: { border("walkerpt") }
fuse box border:
visible: { set.border_color != rgb(0,0,0) and styling.fuse != "none" }
left: { stylesheet.card_style.rule_text_3.left - 36 }
top: 501
height: 94
width: { stylesheet.card_style.rule_text_3.width + 72 }
z index: 151
mask: { border("fuse" + fuse_image_size()) }
pride pin:
left: 664
top: 50
width: 41
height: 63
z index: 8
render style: image
popup style: in place
image: { if input == "none" then "" else "/magic-genevensis-00-main.mse-style/pride/" + input + ".png" }
mask: /magic-genevensis-00-main.mse-style/pride_mask.png