mse version: 2.1.2 game: magic short name: Gen Class 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-10-saga.mse-style version: 2022-02-22 card width: 750 card height: 1046 card dpi: 300 ############################################################## Extra scripts init script: card_shape := { if styling.layout == "full art" then "normal" else "class" } corners_default := { "diagonal" } font_size := { if styling.font_size == "" then 26 else to_number_lax(styling.font_size) or else 26 } 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_body2_src := { styling.level_font } swap_fonts_body2_default := [ name: {"MPlantin"}, size: {23}, 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_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: "(^|[^/])($|[^/])", 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: "") chop_top := { clamp((to_int(pull_comma_array(styling.chop_global_textbox, cell:0, end:0, default:0)) or else 0), minimum: -490, maximum: 500) } chop_bot := { clamp((to_int(pull_comma_array(styling.chop_global_textbox, cell:1, end:0, default:0)) or else 0), minimum: -500, maximum: 500) } chop_right := { clamp((to_int(pull_comma_array(styling.chop_global_textbox, cell:2, end:0, default:0)) or else 0), minimum: -500, maximum: 500) } textbox_right := { 677 - (if active_abilities() == input then chop_right() else min(chop_right(),0)) - (if styling.banner and styling.layout == "full text" then 8 else 0) + (if has_extended_art() and styling.layout == "full text" then 62 else 0) } textbox_width := { if styling.layout == "full art" then 0 else if styling.layout == "full text" then 604 - (if active_abilities() == input then chop_right() else min(chop_right(),0)) - (if styling.banner then 16 else 0) + (if has_extended_art() then 124 else 0) - (if styling.banner and has_extended_art() then 60 else 0) else 290 - (if active_abilities() == input then chop_right() else min(chop_right(),0)) } crop_width := { if styling.layout == "full text" then 642 else 325 } crop_offset := { 696 - crop_width() } 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 := { name := if has_extended_art() and styling.layout == "normal" then "pumaclass" else if has_extended_art() and styling.layout == "full art" then "pumaclassfull" else "class" image(name, 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 styling.layout == "full art" then "transparent" else "" ), side: "right") else image("reminder" + ( if has_extended_art() then "pumaclass" else "saga" ) + ( if has_leaf() then "leaf" else "" ) + styling.transformation_reminder, side: "both") } pt_image := { name := ( if styling.layout == "full art" and has_extended_art() then "puma" else "" ) + "sagapt" image(name, 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)) } 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 := "sagaleaf" 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 ) } separator_image := { divider := if input == 1 then styling.first_divider else if input == 2 then styling.second_divider else styling.following_dividers if divider == "line" then "/magic-genevensis-10-saga.mse-style/ability_separator.png" else set_combine(crop_safe("textbox/" + color_to_prefix() + "class_background.png", width: 750, height: separator_height(input), left: 0, top: separator_top(input)), combine: "shadow") } separator_mask := { divider := if input == 1 then styling.first_divider else if input == 2 then styling.second_divider else styling.following_dividers if divider == "line" then "" else ( height := separator_height(input) top := separator_top(input) frame_mask := crop_safe(current_textbox_mask(), width: 750, height: height, left: 0, top: top) top_mask := crop_safe((if styling.layout == "full text" then "full_" else "") + "separator_mask.png", width: 750, height: height, left: 0, top: 0) combine_blend( combine: "multiply", image1: frame_mask, image2: combine_blend( combine: "multiply", image1: top_mask, image2: flip_vertical(top_mask) ) ) ) } separator_border_mask := { divider := if input == 1 then styling.first_divider else if input == 2 then styling.second_divider else styling.following_dividers if divider == "line" then "" else ( frame_mask := crop_safe(current_textbox_mask(), width: 750, height: 13, left: 0, top: separator_top(input)) top_mask := (if styling.layout == "full text" then "full_" else "") + "separator_border.png" combine_blend(combine: "multiply", image1: frame_mask, image2: top_mask) ) } separator_shrink := { shrink := if input == 1 then styling.shrink_first_divider else if input == 2 then styling.shrink_second_divider else styling.shrink_following_dividers clamp(to_int(trim(shrink)) or else 0, minimum: -148, maximum: 28) } separator_left := { divider := if input == 1 then styling.first_divider else if input == 2 then styling.second_divider else styling.following_dividers if divider == "level" then 0 else if styling.layout == "full text" then 77 else 394 } separator_top := { to_int(card_style["level_" + input + "_text"].bottom) } separator_width := { divider := if input == 1 then styling.first_divider else if input == 2 then styling.second_divider else styling.following_dividers if divider == "level" then 750 else if styling.layout == "full text" then 596 else 279 } separator_height := { divider := if input == 1 then styling.first_divider else if input == 2 then styling.second_divider else styling.following_dividers if divider == "line" then 2 else 52 - separator_shrink(input) } 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 } seven_abilities := { styling.textboxes == "seven" } six_abilities := { styling.textboxes == "six" } five_abilities := { styling.textboxes == "five" } four_abilities := { styling.textboxes == "four" } three_abilities := { styling.textboxes == "three" } two_abilities := { styling.textboxes == "two" } active_abilities := { if four_abilities() then 4 else if three_abilities() then 3 else if five_abilities() then 5 else if two_abilities() then 2 else if six_abilities() then 6 else if seven_abilities() then 7 else 1 } textbox_move := { clamp((to_int(pull_comma_array(styling.move_textbox_bottoms, cell:input-1, end:0, default:0)) or else 0), minimum: -700, maximum: 700) } 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) } watermark_left := { if styling.layout == "full art" then 375 - to_int(watermark_height()/2) else if styling.layout == "full text" then 214 else 372 } watermark_top := { if styling.layout == "full art" then full_art_textbox_background_top() + to_int((913-full_art_textbox_background_top()-watermark_height())/2) else 513 - to_int(watermark_height()/2) } watermark_width := { if styling.layout == "full art" then watermark_height() else 323 } watermark_height := { if styling.layout == "full art" then clamp(913 - full_art_textbox_background_top(), minimum: 0, maximum: 312) else clamp(323 + (to_int(styling.increase_watermark_height) or else 0), minimum: 0, maximum: 800) } 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_art_coordinates); if length(split) > 3 and split.0 != "" then clamp(split.0, minimum: -500, maximum: 800) else 0 } popout_top := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.1 != "" then clamp(split.1, minimum: -500, maximum: 1100) else 0 } popout_width := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.2 != "" then clamp(split.2, minimum: 0, maximum: 1500) else 0 } popout_height := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.3 != "" then clamp(split.3, minimum: 0, maximum: 2000) else 0 } 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 } 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" } image_left := { if has_extended_art() then 0 else 55 } image_width := { if styling.layout == "full text" then 0 else if styling.layout == "full art" then ( if has_extended_art() then 750 else if styling.transformation_reminder == "notch" then 655 else 640 ) else ( if has_extended_art() then 378 else 323 ) } current_image_mask := { image := if styling.layout == "full art" then "full_" else if styling.layout == "full text" then "none_" else "left_" frame := if has_extended_art() then "extended" else if styling.transformation_reminder != "notch" then "normal" else if card.pt == "" then "notchlow" else "notchhigh" "mask/" + image + frame + ".png" } current_textbox_mask := { image := if styling.layout == "full art" then "none_" else if styling.layout == "full text" then "full_" else "right_" frame := if has_extended_art() and styling.layout == "full text" then "extended" else if styling.transformation_reminder != "notch" then "normal" else if card.pt == "" then "notchlow" else "notchhigh" "mask/" + image + frame + ".png" } 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 } full_art_textbox_background_top := { desired_top := 653 + chop_top() if desired_top > 1040 then 1040 else desired_top } full_art_textbox_background_image := { base_image := if styling.full_art_textbox_color == rgb(255,254,255) then crop_safe(image("fullartclasstextbox", side: "both"), width: 750, height: 1046-full_art_textbox_background_top(), left: 0, top: full_art_textbox_background_top()) else if styling.full_art_textbox_color == rgb(255,255,254) then crop_safe(image("fullartclasstextboxlight", side: "both"), width: 750, height: 1046-full_art_textbox_background_top(), left: 0, top: full_art_textbox_background_top()) else recolor_image("textbox_background.png", color: styling.full_art_textbox_color) opacity_textbox_image(base_image) } full_art_textbox_wings_image := { base_image := if styling.full_art_textbox_color == rgb(255,254,255) then crop_safe(image("fullartclasstextbox", side: "both"), width: 750, height: 67, left: 0, top: full_art_textbox_background_top()-67) else if styling.full_art_textbox_color == rgb(255,255,254) then crop_safe(image("fullartclasstextboxlight", side: "both"), width: 750, height: 67, left: 0, top: full_art_textbox_background_top()-67) else recolor_image("textbox_background.png", color: styling.full_art_textbox_color) opacity_textbox_image(base_image) } opacity_textbox_image := { set_alpha(input, alpha: get_alpha(styling.full_art_textbox_opacity_percentage, default: 0)) } textbox_heights := { ###force proper initialization of card_style values hack_to_force_update := card_style.level_1_text.content_width active_count := active_abilities() - 1 first_level_divider_height := if active_count > 0 then separator_height(1) else 0 second_level_divider_height := if active_count > 1 then separator_height(2) else 0 following_level_divider_height := if active_count > 2 then (active_count-2) * separator_height(3) else 0 total_max_possible_height := 784 - first_level_divider_height - second_level_divider_height - following_level_divider_height - (if card.alias != "" then 28 else 0) - (if styling.layout == "full text" and styling.transformation_reminder != "none" and styling.transformation_reminder != "notch" then 58 else 0) - (if styling.layout == "normal" and styling.transformation_reminder == "long" then 58 else 0) - chop_top() - chop_bot() line_height := 1.555 * font_size() hard_line_height := line_height * card_style.level_1_text.line_height_hard soft_line_height := line_height * card_style.level_1_text.line_height_soft last_line_height := line_height * 1.222 / 1.555 content_line_counts := for x from 0 to active_count do [card_style["level_" + (x+1) + "_text"].content_lines] hard_line_counts := for x from 0 to active_count do [length(card_style["level_" + (x+1) + "_text"].layout.paragraphs)-1] #hard_line_counts := for x from 0 to active_count do (text := card["level_" + (x+1) + "_text"]; [length(break_hard_line(text)) - length(break_soft_line(text))]) soft_line_counts := for x from 0 to active_count do [content_line_counts[x] - hard_line_counts[x] - 1] textbox_desired_heights := for x from 0 to active_count do [hard_line_counts[x] * hard_line_height + soft_line_counts[x] * soft_line_height + last_line_height] total_desired_height := for x from 0 to active_count do textbox_desired_heights[x] missing := ( total_desired_height - total_max_possible_height ) / ( active_count + 1 ) factor := total_max_possible_height / total_desired_height ###when resizing, always make small textboxes as big as possible, to make a more balanced looking card textbox_effective_heights := if missing <= 0 then (for x from 0 to active_count do [textbox_desired_heights[x] - missing]) #when increasing size, add equally to each textbox else (for x from 0 to active_count do [textbox_desired_heights[x] * factor]) #when decreasing size, do it in percentage, taking away more from big textboxes #trace("line_height " + line_height) #trace("content_line_counts " + (for x from 0 to active_count do (to_string(content_line_counts[x]) + " "))) #trace("hard_line_counts " + (for x from 0 to active_count do (to_string(hard_line_counts[x]) + " "))) #trace("soft_line_counts " + (for x from 0 to active_count do (to_string(soft_line_counts[x]) + " "))) #trace("textbox_desired_heights " + (for x from 0 to active_count do (to_string(textbox_desired_heights[x]) + " "))) #trace("textbox_effective_heights " + (for x from 0 to active_count do (to_string(textbox_effective_heights[x]) + " "))) textbox_effective_heights } ############################################################## 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: text name: font size description: Sets the font size of ability textboxes. MUST BE CHANGED MANUALLY IF THERE IS NOT ENOUGH ROOM ON THE CARD. Default is 26. # localized caption: # fr: Taille du texte # localized description: # fr: Fixer la taille de la police pour toutes les abilités. Doit être modifiée manuellement si il n'y a pas assez de place sur la carte. Valeur par défaut: 26. 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: 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: choice name: textboxes description: Number of textboxes for levels and passives. Modify content of textboxes if this has trouble updating after being changed. # localized caption: # en: Number of textboxes # 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 choice: seven initial: four styling field: type: choice name: first divider description: Divider between the first and second textboxes. Modify content of textboxes if this has trouble updating after being changed. # localized caption: # fr: Première séparation # localized description: # fr: Type de séparation entre la première et la deuxième abilité. (Modifiez le contenu des boites de texte si elles ne se mettent pas à jour de suite.) choice: level choice: line initial: line styling field: type: text name: shrink first divider description: Shrinks the height of the first divider by this many pixels, if it's a level. Use negatives to increase height. # localized caption: # fr: Rapetisser la première séparation # localized description: # fr: Diminuer la taille verticale de la première séparation de N pixels. Utilisez des négatifs pour agrandir. styling field: type: choice name: second divider description: Divider between the second and third textboxes. Modify content of textboxes if this has trouble updating after being changed. # localized caption: # fr: Seconde séparation # localized description: # fr: Type de séparation entre la deuxième et la troisième abilité. (Modifiez le contenu des boites de texte si elles ne se mettent pas à jour de suite.) choice: level choice: line initial: level styling field: type: text name: shrink second divider description: Shrinks the height of the second divider by this many pixels, if it's a level. Use negatives to increase height. # localized caption: # fr: Rapetisser la seconde séparation # localized description: # fr: Diminuer la taille verticale de la seconde séparation de N pixels. Utilisez des négatifs pour agrandir. styling field: type: choice name: following dividers description: Divider between the following textboxes. Modify content of textboxes if this has trouble updating after being changed. # localized caption: # fr: Séparations suivantes # localized description: # fr: Type de séparation entre les abilités suivantes. (Modifiez le contenu des boites de texte si elles ne se mettent pas à jour de suite.) choice: level choice: line initial: level styling field: type: text name: shrink following dividers description: Shrinks the height of the following dividers by this many pixels, if they are levels. Use negatives to increase height. # localized caption: # fr: Rapetisser les séparations suivantes # localized description: # fr: Diminuer la taille verticale des séparations suivantes de N pixels. Utilisez des négatifs pour agrandir. styling field: type: text name: move textbox bottoms description: Moves the bottom of each textbox down by this many pixels. Use negatives to move up. Formatted as "1,2,3,4,5,6,7" # localized caption: # fr: Déplacer le bas des abilités # localized description: # fr: Déplacer la limite inférieur des abilités vers le bas de N pixels. Utilisez des négatifs pour déplacer vers le haut. Format: "1,2,3,4,5,6,7" styling field: type: text name: chop global textbox description: Chops the top, bottom, and right edges of the entire textbox area by this many pixels. Also chops the textbox in full art layout. 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: boolean name: center rule text description: Should rule text be centered? # localized caption: # fr: Centrer le texte de règles # localized description: # fr: Aligner le texte de règles au milieu de la carte? initial: no 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'au bord de la carte? Désactive l'insigne. choice: yes choice: if land choice: no initial: no styling field: type: text name: popout art coordinates description: The coordinates for the popout image field, formatted as "left,top,width,height". Used to make the illustration jump in front of the frame. # localized caption: # 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: choice name: layout description: Hide the text or art. # localized caption: # fr: Disposition # localized description: # fr: Cacher le texte ou l'illustration. choice: normal choice: full art choice: full text initial: normal styling field: type: text name: full art textbox opacity percentage description: Set the opacity percentage for the textbox background in full art layout. Opaque is 100, transparent is 0, default is 0. # localized caption: # fr: Pourcentage d'opacité de l'arrière-plan du texte # localized description: # fr: Pourcentage d'opacité de l'arrière-plan du texte, en disposition illustration. Complètement opaque: 100. Complètement transparent: 0. Valeur par défaut: 0. styling field: type: color name: full art textbox color description: Use the specified color for the textbox background in full art layout. # 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, en disposition illustration. 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: black 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 323x323. 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: text name: increase watermark height description: Heighten the watermark by this many pixels. Use negatives to shrink. # localized caption: # fr: Augmenter la hauteur du filigrane # localized description: # fr: Augmenter la taille verticale du filigrane de N pixels. Utilisez des négatifs pour diminuer la taille. 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 droite 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: level 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 niveau # 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: -10 render style: image popup style: in place image: { frame_image() } ############################# 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: 52 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: 52 alias: left: 149 top: { 117 + name2_font_vertical() } width: 452 height: 24 alignment: center middle shrink-overflow z index: 56 font: name: { name2_font() } italic name: { name2_font_italic() } size: { name2_font_size() } color: { name2_font_color() } ############################# Image image: left: { image_left() } top: 114 width: { image_width() } height: 799 z index: 20 mask: { crop_safe(current_image_mask(), width: image_width(), height: 799, left: image_left(), top: 114) } 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()) } top: { 926 + 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: 52 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: { 918 - (-chop_rarity_top()) } bottom: { 978 - chop_rarity_bot() } z index: 50 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 level 1 text: right: { textbox_right(1) } top: { ( if card.alias != "" then 151 else 123 ) - (-chop_top()) } width: { textbox_width(1) } height: { textbox_heights()[0] - (-textbox_move(1)) } font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } color: { body_font_color() } #scale down to: 20 symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } #scale down to: 20 alignment: { if styling.center_rule_text then "middle center" else "middle left" } z index: 54 line height hard: 1.2 line height line: 1.5 line height soft: 0.9 line height hard max: 1.3 line height line max: 1.6 line height soft max: 0.9 level 2 text: right: { textbox_right(2) } top: { card_style.level_1_text.bottom + separator_height(1) } width: { textbox_width(2) } height: { if active_abilities() > 1 then textbox_heights()[1] - (-textbox_move(2)) else 0 } font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } color: { body_font_color() } #scale down to: 20 symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } #scale down to: 20 alignment: { if styling.center_rule_text then "middle center" else "middle left" } z index: 54 line height hard: 1.2 line height line: 1.5 line height soft: 0.9 line height hard max: 1.3 line height line max: 1.6 line height soft max: 0.9 level 3 text: right: { textbox_right(3) } top: { card_style.level_2_text.bottom + separator_height(2) } width: { textbox_width(3) } height: { if active_abilities() > 2 then textbox_heights()[2] - (-textbox_move(3)) else 0 } font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } color: { body_font_color() } #scale down to: 20 symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } #scale down to: 20 alignment: { if styling.center_rule_text then "middle center" else "middle left" } z index: 54 line height hard: 1.2 line height line: 1.5 line height soft: 0.9 line height hard max: 1.3 line height line max: 1.6 line height soft max: 0.9 level 4 text: right: { textbox_right(4) } top: { card_style.level_3_text.bottom + separator_height(3) } width: { textbox_width(4) } height: { if active_abilities() > 3 then textbox_heights()[3] - (-textbox_move(4)) else 0 } font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } color: { body_font_color() } #scale down to: 20 symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } #scale down to: 20 alignment: { if styling.center_rule_text then "middle center" else "middle left" } z index: 54 line height hard: 1.2 line height line: 1.5 line height soft: 0.9 line height hard max: 1.3 line height line max: 1.6 line height soft max: 0.9 level 5 text: right: { textbox_right(5) } top: { card_style.level_4_text.bottom + separator_height(3) } width: { textbox_width(5) } height: { if active_abilities() > 4 then textbox_heights()[4] - (-textbox_move(5)) else 0 } font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } color: { body_font_color() } #scale down to: 20 symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } #scale down to: 20 alignment: { if styling.center_rule_text then "middle center" else "middle left" } z index: 54 line height hard: 1.2 line height line: 1.5 line height soft: 0.9 line height hard max: 1.3 line height line max: 1.6 line height soft max: 0.9 level 6 text: right: { textbox_right(6) } top: { card_style.level_5_text.bottom + separator_height(3) } width: { textbox_width(6) } height: { if active_abilities() > 5 then textbox_heights()[5] - (-textbox_move(6)) else 0 } font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } color: { body_font_color() } #scale down to: 20 symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } #scale down to: 20 alignment: { if styling.center_rule_text then "middle center" else "middle left" } z index: 54 line height hard: 1.2 line height line: 1.5 line height soft: 0.9 line height hard max: 1.3 line height line max: 1.6 line height soft max: 0.9 level 7 text: right: { textbox_right(7) } top: { card_style.level_6_text.bottom + separator_height(3) } width: { textbox_width(7) } height: { if active_abilities() > 6 then textbox_heights()[6] - (-textbox_move(7)) else 0 } font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } color: { body_font_color() } #scale down to: 20 symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } #scale down to: 20 alignment: { if styling.center_rule_text then "middle center" else "middle left" } z index: 54 line height hard: 1.2 line height line: 1.5 line height soft: 0.9 line height hard max: 1.3 line height line max: 1.6 line height soft max: 0.9 rule text: left: { 73 + if styling.banner then 8 else 0 } top: { full_art_textbox_background_top() + 8 + body_font_vertical() } width: { if styling.layout == "full art" then (604 - (if styling.banner then 16 else 0) - chop_right()) else 0 } bottom: { 905 - chop_bot() } font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } color: { body_font_color() } scale down to: 12 shadow color: { if to_number(styling.full_art_textbox_opacity_percentage) or else 0 > 20 then rgba(0,0,0,0) else if body_font_color() == rgb(0,0,0) or body_font_color() == "black" then "grey" else "black" } shadow displacement x: -2 shadow displacement y: 2 symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } scale down to: 12 alignment: { if styling.center_rule_text then "middle center" else "middle left" } z index: 44 line height hard: { if contains(card.rule_text, match: "
  • ") then 0.9 else 1.2 } line height line: 1.5 line height soft: 0.9 line height hard max: 1.3 line height line max: 1.6 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 ############################# PT pt: z index: 56 left: 549 top: { 861 + 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: 50 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: 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: choice name: transformation reminder notch editable: false save value: false choice: transformation reminder notch 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: ability separator 1 editable: false save value: true choice: ability separator 1 extra card field: type: choice name: ability separator 2 editable: false save value: true choice: ability separator 2 extra card field: type: choice name: ability separator 3 editable: false save value: true choice: ability separator 3 extra card field: type: choice name: ability separator 4 editable: false save value: true choice: ability separator 4 extra card field: type: choice name: ability separator 5 editable: false save value: true choice: ability separator 5 extra card field: type: choice name: ability separator 6 editable: false save value: true choice: ability separator 6 extra card field: type: text name: ability separator 1 text left save value: true default: forward_editor(field: card.level_9_text) extra card field: type: text name: ability separator 1 text right save value: true default: "Level 2" extra card field: type: text name: ability separator 2 text left save value: true default: if styling.first_divider == "level" then forward_editor(field: card.level_10_text) else forward_editor(field: card.level_9_text) extra card field: type: text name: ability separator 2 text right save value: true default: if styling.first_divider == "level" then "Level 3" else "Level 2" extra card field: type: text name: ability separator 3 text left save value: true default: if styling.first_divider == "level" then ( if styling.second_divider == "level" then forward_editor(field: card.level_11_text) else forward_editor(field: card.level_10_text) ) else ( if styling.second_divider == "level" then forward_editor(field: card.level_10_text) else forward_editor(field: card.level_9_text) ) extra card field: type: text name: ability separator 3 text right save value: true default: if styling.first_divider == "level" then ( if styling.second_divider == "level" then "Level 4" else "Level 3" ) else ( if styling.second_divider == "level" then "Level 3" else "Level 2" ) extra card field: type: text name: ability separator 4 text left save value: true default: if styling.first_divider == "level" then ( if styling.second_divider == "level" then forward_editor(field: card.level_12_text) else forward_editor(field: card.level_11_text) ) else ( if styling.second_divider == "level" then forward_editor(field: card.level_11_text) else forward_editor(field: card.level_10_text) ) extra card field: type: text name: ability separator 4 text right save value: true default: if styling.first_divider == "level" then ( if styling.second_divider == "level" then "Level 5" else "Level 4" ) else ( if styling.second_divider == "level" then "Level 4" else "Level 3" ) extra card field: type: text name: ability separator 5 text left save value: true default: if styling.first_divider == "level" then ( if styling.second_divider == "level" then forward_editor(field: card.level_13_text) else forward_editor(field: card.level_12_text) ) else ( if styling.second_divider == "level" then forward_editor(field: card.level_12_text) else forward_editor(field: card.level_11_text) ) extra card field: type: text name: ability separator 5 text right save value: true default: if styling.first_divider == "level" then ( if styling.second_divider == "level" then "Level 6" else "Level 5" ) else ( if styling.second_divider == "level" then "Level 5" else "Level 4" ) extra card field: type: text name: ability separator 6 text left save value: true default: if styling.first_divider == "level" then ( if styling.second_divider == "level" then forward_editor(field: card.level_14_text) else forward_editor(field: card.level_13_text) ) else ( if styling.second_divider == "level" then forward_editor(field: card.level_13_text) else forward_editor(field: card.level_12_text) ) extra card field: type: text name: ability separator 6 text right save value: true default: if styling.first_divider == "level" then ( if styling.second_divider == "level" then "Level 7" else "Level 6" ) else ( if styling.second_divider == "level" then "Level 6" else "Level 5" ) extra card field: type: choice name: pt box editable: false save value: false choice: pt box extra card field: type: choice name: textbox background editable: false save value: false choice: textbox background extra card field: type: choice name: full art textbox background editable: false save value: false choice: full art textbox background extra card field: type: choice name: full art textbox background wings editable: false save value: false choice: full art textbox background wings 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: 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: 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: separator editable: false save value: false show statistics: false script: set.border_color 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: 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 notch 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: ability separator 1 border editable: false save value: true show statistics: false script: set.border_color extra card field: type: color name: ability separator 2 border editable: false save value: true show statistics: false script: set.border_color extra card field: type: color name: ability separator 3 border editable: false save value: true show statistics: false script: set.border_color extra card field: type: color name: ability separator 4 border editable: false save value: true show statistics: false script: set.border_color extra card field: type: color name: ability separator 5 border editable: false save value: true show statistics: false script: set.border_color extra card field: type: color name: ability separator 6 border editable: false save value: true 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: 40 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 } transformation symbol: left: 35 top: 45 height: 78 width: 73 z index: 18 visible: { has_symbol() } render style: image image: { symbol_image() } transformation reminder: left: 0 top: 834 height: 101 width: { if styling.transformation_reminder == "long" then 506 else 400 } z index: 36 visible: { styling.transformation_reminder != "none" and styling.transformation_reminder != "notch" } render style: image image: { reminder_image() } transformation reminder notch: left: 687 top: { if card.pt == "" then 845 else 785 } height: 56 width: 53 z index: 24 visible: { styling.transformation_reminder == "notch" and not (has_extended_art() and styling.layout != "normal") } render style: image image: { reminder_image() } transformation reminder text: left: { if styling.transformation_reminder == "notch" then 620 else 6 } top: { (if styling.transformation_reminder == "notch" then (if card.pt == "" then 858 else 798) else 857) + name3_font_vertical() } height: { if styling.transformation_reminder == "notch" then 30 else 60 } width: { if styling.transformation_reminder == "notch" then (if has_extended_art() and styling.layout != "normal" then 0 else 75) else if styling.transformation_reminder == "short" then 298 else if styling.transformation_reminder == "medium" then 356 else if styling.transformation_reminder == "long" then 462 else 0 } z index: 44 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: { if styling.transformation_reminder == "notch" and styling.layout == "full art" then body_font_color() else name3_font_color() } shadow color: { if styling.transformation_reminder == "notch" and styling.layout == "full art" and (to_number(styling.full_art_textbox_opacity_percentage) or else 0) <= 20 then (if body_font_color() == rgb(0,0,0) or body_font_color() == "black" then "grey" else "black") else rgba(0,0,0,0) } shadow displacement x: -2 shadow displacement y: 2 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: 496 top: 867 height: 42 width: 38 z index: 38 visible: { styling.transformation_reminder == "long" and card.pt != ""} render style: image image: { image("remindersagalongptpaste", side: "right") } alias box: left: 110 top: 112 height: 47 width: 530 z index: 34 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: { if styling.transformation_reminder != "none" and styling.transformation_reminder != "notch" then 694 else 754 } direction: vertical z index: 42 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: { if styling.transformation_reminder != "none" and styling.transformation_reminder != "notch" then 732 else 792 } width: 68 z index: 38 visible: { styling.banner } render style: image image: { image("ascendsaga" + ( if styling.transformation_reminder != "none" and styling.transformation_reminder != "notch" then "reminder" else "" ), side: "left") } color indicator dot: left: 66 top: 927 width: 42 height: 42 z index: 50 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: 50 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: 50 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: 50 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 } textbox background: left: 0 top: 0 width: 750 height: 1046 z index: 0 render style: image image: { "textbox/" + color_to_prefix() + "class_background.png" } mask: { current_textbox_mask() } full art textbox background: left: 0 right: 750 top: { full_art_textbox_background_top() } bottom: 1046 z index: 22 visible: { styling.layout == "full art" } render style: image image: { full_art_textbox_background_image() } mask: { top := full_art_textbox_background_top(); crop_safe(current_image_mask(), width: 750, height: 1046-top, left: 0, top: top) } full art textbox background wings: left: 0 right: 750 top: { full_art_textbox_background_top()-67 } height: 67 z index: 22 visible: { desired_top := full_art_textbox_background_top(); styling.layout == "full art" and has_extended_art() and desired_top < 890 and desired_top > 200 } render style: image image: { full_art_textbox_wings_image() } mask: { combine_blend(image1: crop_safe(current_image_mask(), width: 750, height: 67, left: 0, top: full_art_textbox_background_top()-67), image2: "full_art_textbox_wings_mask.png", combine: "multiply") } pt box: left: 524 top: 852 width: 189 height: 75 z index: 34 visible: { card.pt != "" } render style: image image: { pt_image() } ability separator 1: left: { separator_left(1) } top: { hack_to_force_update := card_style.level_1_text.content_width; separator_top(1) } width: { separator_width(1) } height: { separator_height(1) } z index: 30 visible: { styling.layout != "full art" and active_abilities() > 1 } render style: image image: { separator_image(1) } mask: { separator_mask(1) } ability separator 2: left: { separator_left(2) } top: { hack_to_force_update := card_style.level_2_text.content_width; separator_top(2) } width: { separator_width(2) } height: { separator_height(2) } z index: 30 visible: { styling.layout != "full art" and active_abilities() > 2 } render style: image image: { separator_image(2) } mask: { separator_mask(2) } ability separator 3: left: { separator_left(3) } top: { hack_to_force_update := card_style.level_3_text.content_width; separator_top(3) } width: { separator_width(3) } height: { separator_height(3) } z index: 30 visible: { styling.layout != "full art" and active_abilities() > 3 } render style: image image: { separator_image(3) } mask: { separator_mask(3) } ability separator 4: left: { separator_left(4) } top: { hack_to_force_update := card_style.level_4_text.content_width; separator_top(4) } width: { separator_width(4) } height: { separator_height(4) } z index: 30 visible: { styling.layout != "full art" and active_abilities() > 4 } render style: image image: { separator_image(4) } mask: { separator_mask(4) } ability separator 5: left: { separator_left(5) } top: { hack_to_force_update := card_style.level_5_text.content_width; separator_top(5) } width: { separator_width(5) } height: { separator_height(5) } z index: 30 visible: { styling.layout != "full art" and active_abilities() > 5 } render style: image image: { separator_image(5) } mask: { separator_mask(5) } ability separator 6: left: { separator_left(6) } top: { hack_to_force_update := card_style.level_6_text.content_width; separator_top(6) } width: { separator_width(6) } height: { separator_height(6) } z index: 30 visible: { styling.layout != "full art" and active_abilities() > 6 } render style: image image: { separator_image(6) } mask: { separator_mask(6) } ability separator 1 text left: visible: { styling.layout != "full art" and active_abilities() > 1 } left: { if styling.layout == "full text" then (if has_extended_art() then 11 else 73) else 387 } top: { hack_to_force_update := card_style.level_1_text.content_width; card_style.level_1_text.bottom + 4 + body2_font_vertical() } width: script: if styling.first_divider != "level" or styling.layout == "full art" or active_abilities() <= 1 then 0 else if styling.layout == "full text" then 302 else 145 height: { 43 - separator_shrink(1) } font: name: { body2_font() } italic name: { body2_font_italic() } size: { body2_font_size() } color: { body2_font_color() } scale down to: 12 symbol font: name: { styling.text_box_mana_symbols } size: { body2_font_size() } scale down to: 12 alignment: middle left z index: 55 ability separator 1 text right: visible: { styling.layout != "full art" and active_abilities() > 1 } right: { if has_extended_art() and styling.layout == "full text" then 739 else 677 } top: { hack_to_force_update := card_style.level_1_text.content_width; card_style.level_1_text.bottom + 4 + body2_font_vertical() } width: script: if styling.first_divider != "level" or styling.layout == "full art" or active_abilities() <= 1 then 0 else if styling.layout == "full text" then 302 else 145 height: { 43 - separator_shrink(1) } font: name: { body2_font() } italic name: { body2_font_italic() } size: { body2_font_size() } color: { body2_font_color() } scale down to: 12 symbol font: name: { styling.text_box_mana_symbols } size: { body2_font_size() } scale down to: 12 alignment: middle right z index: 55 ability separator 2 text left: visible: { styling.layout != "full art" and active_abilities() > 2 } left: { if styling.layout == "full text" then (if has_extended_art() then 11 else 73) else 387 } top: { hack_to_force_update := card_style.level_2_text.content_width; card_style.level_2_text.bottom + 4 + body2_font_vertical() } width: script: if styling.second_divider != "level" or styling.layout == "full art" or active_abilities() <= 2 then 0 else if styling.layout == "full text" then 302 else 145 height: { 43 - separator_shrink(2) } font: name: { body2_font() } italic name: { body2_font_italic() } size: { body2_font_size() } color: { body2_font_color() } scale down to: 12 symbol font: name: { styling.text_box_mana_symbols } size: { body2_font_size() } scale down to: 12 alignment: middle left z index: 55 ability separator 2 text right: visible: { styling.layout != "full art" and active_abilities() > 2 } right: { if has_extended_art() and styling.layout == "full text" then 739 else 677 } top: { hack_to_force_update := card_style.level_2_text.content_width; card_style.level_2_text.bottom + 4 + body2_font_vertical() } width: script: if styling.second_divider != "level" or styling.layout == "full art" or active_abilities() <= 2 then 0 else if styling.layout == "full text" then 302 else 145 height: { 43 - separator_shrink(2) } font: name: { body2_font() } italic name: { body2_font_italic() } size: { body2_font_size() } color: { body2_font_color() } scale down to: 12 symbol font: name: { styling.text_box_mana_symbols } size: { body2_font_size() } scale down to: 12 alignment: middle right z index: 55 ability separator 3 text left: visible: { styling.layout != "full art" and active_abilities() > 3 } left: { if styling.layout == "full text" then (if has_extended_art() then 11 else 73) else 387 } top: { hack_to_force_update := card_style.level_3_text.content_width; card_style.level_3_text.bottom + 4 + body2_font_vertical() } width: script: if styling.following_dividers != "level" or styling.layout == "full art" or active_abilities() <= 3 then 0 else if styling.layout == "full text" then 302 else 145 height: { 43 - separator_shrink(3) } font: name: { body2_font() } italic name: { body2_font_italic() } size: { body2_font_size() } color: { body2_font_color() } scale down to: 12 symbol font: name: { styling.text_box_mana_symbols } size: { body2_font_size() } scale down to: 12 alignment: middle left z index: 55 ability separator 3 text right: visible: { styling.layout != "full art" and active_abilities() > 3 } right: { if has_extended_art() and styling.layout == "full text" then 739 else 677 } top: { hack_to_force_update := card_style.level_3_text.content_width; card_style.level_3_text.bottom + 4 + body2_font_vertical() } width: script: if styling.following_dividers != "level" or styling.layout == "full art" or active_abilities() <= 3 then 0 else if styling.layout == "full text" then 302 else 145 height: { 43 - separator_shrink(3) } font: name: { body2_font() } italic name: { body2_font_italic() } size: { body2_font_size() } color: { body2_font_color() } scale down to: 12 symbol font: name: { styling.text_box_mana_symbols } size: { body2_font_size() } scale down to: 12 alignment: middle right z index: 55 ability separator 4 text left: visible: { styling.layout != "full art" and active_abilities() > 4 } left: { if styling.layout == "full text" then (if has_extended_art() then 11 else 73) else 387 } top: { hack_to_force_update := card_style.level_4_text.content_width; card_style.level_4_text.bottom + 4 + body2_font_vertical() } width: script: if styling.following_dividers != "level" or styling.layout == "full art" or active_abilities() <= 4 then 0 else if styling.layout == "full text" then 302 else 145 height: { 43 - separator_shrink(3) } font: name: { body2_font() } italic name: { body2_font_italic() } size: { body2_font_size() } color: { body2_font_color() } scale down to: 12 symbol font: name: { styling.text_box_mana_symbols } size: { body2_font_size() } scale down to: 12 alignment: middle left z index: 55 ability separator 4 text right: visible: { styling.layout != "full art" and active_abilities() > 4 } right: { if has_extended_art() and styling.layout == "full text" then 739 else 677 } top: { hack_to_force_update := card_style.level_4_text.content_width; card_style.level_4_text.bottom + 4 + body2_font_vertical() } width: script: if styling.following_dividers != "level" or styling.layout == "full art" or active_abilities() <= 4 then 0 else if styling.layout == "full text" then 302 else 145 height: { 43 - separator_shrink(3) } font: name: { body2_font() } italic name: { body2_font_italic() } size: { body2_font_size() } color: { body2_font_color() } scale down to: 12 symbol font: name: { styling.text_box_mana_symbols } size: { body2_font_size() } scale down to: 12 alignment: middle right z index: 55 ability separator 5 text left: visible: { styling.layout != "full art" and active_abilities() > 5 } left: { if styling.layout == "full text" then (if has_extended_art() then 11 else 73) else 387 } top: { hack_to_force_update := card_style.level_5_text.content_width; card_style.level_5_text.bottom + 4 + body2_font_vertical() } width: script: if styling.following_dividers != "level" or styling.layout == "full art" or active_abilities() <= 5 then 0 else if styling.layout == "full text" then 302 else 145 height: { 43 - separator_shrink(3) } font: name: { body2_font() } italic name: { body2_font_italic() } size: { body2_font_size() } color: { body2_font_color() } scale down to: 12 symbol font: name: { styling.text_box_mana_symbols } size: { body2_font_size() } scale down to: 12 alignment: middle left z index: 55 ability separator 5 text right: visible: { styling.layout != "full art" and active_abilities() > 5 } right: { if has_extended_art() and styling.layout == "full text" then 739 else 677 } top: { hack_to_force_update := card_style.level_5_text.content_width; card_style.level_5_text.bottom + 4 + body2_font_vertical() } width: script: if styling.following_dividers != "level" or styling.layout == "full art" or active_abilities() <= 5 then 0 else if styling.layout == "full text" then 302 else 145 height: { 43 - separator_shrink(3) } font: name: { body2_font() } italic name: { body2_font_italic() } size: { body2_font_size() } color: { body2_font_color() } scale down to: 12 symbol font: name: { styling.text_box_mana_symbols } size: { body2_font_size() } scale down to: 12 alignment: middle right z index: 55 ability separator 6 text left: visible: { styling.layout != "full art" and active_abilities() > 6 } left: { if styling.layout == "full text" then (if has_extended_art() then 11 else 73) else 387 } top: { hack_to_force_update := card_style.level_6_text.content_width; card_style.level_6_text.bottom + 4 + body2_font_vertical() } width: script: if styling.following_dividers != "level" or styling.layout == "full art" or active_abilities() <= 6 then 0 else if styling.layout == "full text" then 302 else 145 height: { 43 - separator_shrink(3) } font: name: { body2_font() } italic name: { body2_font_italic() } size: { body2_font_size() } color: { body2_font_color() } scale down to: 12 symbol font: name: { styling.text_box_mana_symbols } size: { body2_font_size() } scale down to: 12 alignment: middle left z index: 55 ability separator 6 text right: visible: { styling.layout != "full art" and active_abilities() > 6 } right: { if has_extended_art() and styling.layout == "full text" then 739 else 677 } top: { hack_to_force_update := card_style.level_6_text.content_width; card_style.level_6_text.bottom + 4 + body2_font_vertical() } width: script: if styling.following_dividers != "level" or styling.layout == "full art" or active_abilities() <= 6 then 0 else if styling.layout == "full text" then 302 else 145 height: { 43 - separator_shrink(3) } font: name: { body2_font() } italic name: { body2_font_italic() } size: { body2_font_size() } color: { body2_font_color() } scale down to: 12 symbol font: name: { styling.text_box_mana_symbols } size: { body2_font_size() } scale down to: 12 alignment: middle right z index: 55 watermark image: left: { watermark_left() } top: { watermark_top() } width: { watermark_width() } height: { watermark_height() } z index: 26 render style: image image: { opacity_watermark_image() } mask: { crop_safe(if styling.layout == "full art" then current_image_mask() else current_textbox_mask(), width: watermark_width(), height: watermark_height(), left: watermark_left(), top: watermark_top()) } crown: left: 0 top: 0 width: 750 height: 1046 z index: 12 visible: { has_crown() or has_special_crown() } render style: image image: { crown_image() } leaf: left: 0 top: 0 width: 750 height: 1046 z index: 30 visible: { has_leaf() } render style: image image: { leaf_image() } legend leaf: left: 0 top: 0 width: 750 height: 1046 z index: 32 visible: { has_crown() and has_leaf() } render style: image image: { legend_leaf_image() } insignia: left: 0 top: 181 width: 750 height: 66 z index: 16 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() } separator: left: 370 top: 114 width: 10 height: 799 z index: 11 visible: { styling.layout == "normal" } mask: /magic-genevensis-10-saga.mse-style/separator_mask.png card color border: visible: { set.border_color != rgb(0,0,0) } left: 0 top: 0 width: 750 height: 1046 z index: -9 mask: { border( if has_extended_art() and styling.layout == "normal" then "pumaclass" else if has_extended_art() and styling.layout == "full art" then "pumaclassfull" else "class" ) } 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: 13 mask: { border("crown" + (if has_special_crown() then "special" else "")) } leaf border: visible: { set.border_color != rgb(0,0,0) and has_leaf() } left: 0 top: 0 width: 750 height: 1046 z index: 31 mask: { border("sagaleaf") } 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: 33 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: 17 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: 19 mask: { border("symboltomb") } color indicator dot border: visible: { set.border_color != rgb(0,0,0) and has_identity() } left: 66 top: 927 width: 42 height: 42 z index: 51 mask: { border("identity") } transformation reminder border: visible: { set.border_color != rgb(0,0,0) and styling.transformation_reminder != "none" and styling.transformation_reminder != "notch" } left: 0 top: 834 height: 101 width: { if styling.transformation_reminder == "long" then 506 else 400 } z index: 37 mask: { border("reminder" + ( if has_extended_art() then "pumaclass" else "saga" ) + ( if has_leaf() then "leaf" else "" ) + styling.transformation_reminder) } transformation reminder notch border: left: 687 top: { if card.pt == "" then 845 else 785 } height: 56 width: 53 z index: 25 visible: { styling.transformation_reminder == "notch" and not (has_extended_art() and styling.layout != "normal") } mask: { border("remindernotchright") } transformation reminder pt paste border: visible: { set.border_color != rgb(0,0,0) and styling.transformation_reminder == "long" and card.pt != "" } left: 496 top: 867 height: 42 width: 38 z index: 39 mask: { border("remindersagalongptpaste") } ability separator 1 border: visible: { styling.layout != "full art" and styling.first_divider == "level" and active_abilities() > 1 } left: 0 top: { hack_to_force_update := card_style.level_1_text.content_width; separator_top(1) } width: 750 height: 13 z index: 31 mask: { separator_border_mask(1) } ability separator 2 border: visible: { styling.layout != "full art" and styling.second_divider == "level" and active_abilities() > 2 } left: 0 top: { hack_to_force_update := card_style.level_1_text.content_width; separator_top(2) } width: 750 height: 13 z index: 31 mask: { separator_border_mask(2) } ability separator 3 border: visible: { styling.layout != "full art" and styling.following_dividers == "level" and active_abilities() > 3 } left: 0 top: { hack_to_force_update := card_style.level_1_text.content_width; separator_top(3) } width: 750 height: 13 z index: 31 mask: { separator_border_mask(3) } ability separator 4 border: visible: { styling.layout != "full art" and styling.following_dividers == "level" and active_abilities() > 4 } left: 0 top: { hack_to_force_update := card_style.level_1_text.content_width; separator_top(4) } width: 750 height: 13 z index: 31 mask: { separator_border_mask(4) } ability separator 5 border: visible: { styling.layout != "full art" and styling.following_dividers == "level" and active_abilities() > 5 } left: 0 top: { hack_to_force_update := card_style.level_1_text.content_width; separator_top(5) } width: 750 height: 13 z index: 31 mask: { separator_border_mask(5) } ability separator 6 border: visible: { styling.layout != "full art" and styling.following_dividers == "level" and active_abilities() > 6 } left: 0 top: { hack_to_force_update := card_style.level_1_text.content_width; separator_top(6) } width: 750 height: 13 z index: 31 mask: { separator_border_mask(6) } alias box border: visible: { set.border_color != rgb(0,0,0) and card.alias != "" } left: 110 top: 112 height: 47 width: 530 z index: 35 mask: { border("alias") } ascend box border: visible: { set.border_color != rgb(0,0,0) and styling.banner } left: 9 top: 117 height: { if styling.transformation_reminder != "none" and styling.transformation_reminder != "notch" then 732 else 792 } width: 68 z index: 39 mask: { border("ascendsaga" + ( if styling.transformation_reminder != "none" and styling.transformation_reminder != "notch" then "reminder" else "" )) } pt border: visible: { set.border_color != rgb(0,0,0) and card.pt != "" } left: 524 top: 852 width: 189 height: 75 z index: 35 mask: { border(( if (styling.layout != "normal" and has_extended_art()) then "puma" else "" ) + "sagapt") } 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: 18 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