mse version: 2.1.2 game: magic short name: Gen Main 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 card width: 750 card height: 1046 card dpi: 300 ############################################################## Extra scripts init script: card_shape := { "normal" } corners_default := { "diagonal" } swap_font := { true } swap_fonts_name_src := { styling.name_font } swap_fonts_name_default := [ name: {"Beleren Bold"}, size: {32}, color: {"black"}, vertical: {0}, italic: {""} ] swap_fonts_type_src := { styling.type_font } swap_fonts_type_default := [ name: {"Beleren Bold"}, size: {25}, color: {"black"}, vertical: {0}, italic: {""} ] swap_fonts_body_src := { styling.text_font } swap_fonts_body_default := [ name: {"MPlantin"}, size: {28}, 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_rule_textbox, cell:0, end:0, default:0)) or else 0), minimum: -500, maximum: 500) } chop_bottom := { clamp((to_int(pull_comma_array(styling.chop_rule_textbox, cell:1, end:0, default:0)) or else 0), minimum: -500, maximum: 500) } chop_right := { clamp((to_int(pull_comma_array(styling.chop_rule_textbox, cell:2, end:0, default:0)) or else 0), minimum: -500, maximum: 500) } chop_flavor_top := { clamp((to_int(pull_comma_array(styling.chop_flavor_textbox, cell:0, end:0, default:0)) or else 0), minimum: -500, maximum: 500) } chop_flavor_bottom := { clamp((to_int(pull_comma_array(styling.chop_flavor_textbox, cell:1, end:0, default:0)) or else 0), minimum: -500, maximum: 500) } chop_flavor_right := { clamp((to_int(pull_comma_array(styling.chop_flavor_textbox, cell:2, end:0, default:0)) or else 0), minimum: -500, maximum: 500) } rule_text_width := { 604 - chop_right() } rule_text_top := { 661 + chop_top() + (if styling.prototype then 94 else 0) } rule_text_bottom := { 953 - chop_bottom() - (if styling.choice_bar != "none" then 52 else if styling.transformation_reminder != "none" and styling.transformation_reminder != "notch" then 14 else 0) - (if remove_tags(card.flavor_text) != "" then (12 + card_style.flavor_text.content_lines*37) else 0) } flavor_text_top := { rule_text_bottom() + chop_flavor_top() } flavor_text_width := { 604 - chop_flavor_right() - (if styling.choice_bar != "none" and card.pt != "" then 134 else 0) } flavor_text_bottom := { 970 - chop_flavor_bottom() - (if styling.choice_bar != "none" then 46 else 0) } flavor_text_padding_bottom := { if styling.choice_bar != "none" then 16 else if card.pt != "" or (styling.transformation_reminder != "none" and styling.transformation_reminder != "notch") then 31 else 18 } 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) } 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 } 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 } color_to_base_prefix_2 := { initial_prefix := (if contains(card.casting_cost_2, match: "P") then "s" else "") + (if chosen(choice: "white", card.card_color_2) or contains(card.casting_cost_2, match: "W") then "w" else "") + (if chosen(choice: "blue", card.card_color_2) or contains(card.casting_cost_2, match: "U") then "u" else "") + (if chosen(choice: "black", card.card_color_2) or contains(card.casting_cost_2, match: "B") then "b" else "") + (if chosen(choice: "red", card.card_color_2) or contains(card.casting_cost_2, match: "R") then "r" else "") + (if chosen(choice: "green", card.card_color_2) or contains(card.casting_cost_2, match: "G") then "g" else "") ordered_prefix := proper_order(initial_prefix) if chosen(choice: "reversed", card.card_color_2) then reverse(ordered_prefix) else ordered_prefix } color_to_unforced_prefix_2 := { prefix := color_to_base_prefix_2() if chosen(choice: "artifact", card.card_color_2) then "a" else if length(prefix) > 2 then "m" else if chosen(choice: "multicolor", card.card_color_2) and not styling.force_prototype_hybrid_frame then "m" else if length(prefix) == 0 then (if chosen(choice: "multicolor", card.card_color_2) then "m" else "c" ) else prefix } left_forced_prefix_2 := { if chosen(choice: "white", styling.force_prototype_left_color) then "w" else if chosen(choice: "blue", styling.force_prototype_left_color) then "u" else if chosen(choice: "black", styling.force_prototype_left_color) then "b" else if chosen(choice: "red", styling.force_prototype_left_color) then "r" else if chosen(choice: "green", styling.force_prototype_left_color) then "g" else if chosen(choice: "artifact", styling.force_prototype_left_color) then "a" else if chosen(choice: "gold", styling.force_prototype_left_color) then "m" else if chosen(choice: "colorless", styling.force_prototype_left_color) then "c" else if chosen(choice: "purple", styling.force_prototype_left_color) then "s" else "" } right_forced_prefix_2 := { if chosen(choice: "white", styling.force_prototype_right_color) then "w" else if chosen(choice: "blue", styling.force_prototype_right_color) then "u" else if chosen(choice: "black", styling.force_prototype_right_color) then "b" else if chosen(choice: "red", styling.force_prototype_right_color) then "r" else if chosen(choice: "green", styling.force_prototype_right_color) then "g" else if chosen(choice: "artifact", styling.force_prototype_right_color) then "a" else if chosen(choice: "gold", styling.force_prototype_right_color) then "m" else if chosen(choice: "colorless", styling.force_prototype_right_color) then "c" else if chosen(choice: "purple", styling.force_prototype_right_color) then "s" else "" } color_to_prefix_2 := { unforced_prefix := color_to_unforced_prefix_2() left_forced := left_forced_prefix_2() right_forced := right_forced_prefix_2() 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" } image_2 := { "/magic-genevensis-00-main.mse-style/elements/" + input + "/" + ( if side == "left" then color_to_prefix_2().0 else if side == "right" then reverse(color_to_prefix_2()).0 else color_to_prefix_2() ) + input + ".png" } frame_image := { name := ( if has_extended_art() then "puma" else "" ) + "card" 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" ] current_image_mask := { "image mask/" + (if has_extended_art() then (if has_leaf() then "leaf" else "noleaf") else "bordered") + ".png" } current_textbox_mask := { transformation := if styling.choice_bar != "none" then (if styling.transformation_reminder == "notch" then "choice_notch" else "choice_nonotch") else styling.transformation_reminder pt := if card.pt != "" then "_pt_" else "_nopt_" prototype := if styling.prototype then "prototype" else "noprototype" "textbox mask/" + transformation + pt + prototype + ".png" } 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 } image_left := { if has_extended_art() then 0 else 55 } image_width := { if has_extended_art() then 750 else 640 } symbol_image := { name := symbol_map[styling.symbol] or else "" image(name, side: "left") } reminder_image := { if styling.transformation_reminder == "notch" and card.pt == "" and styling.choice_bar == "none" then image("remindernotchrightlow", side: "right") else if styling.transformation_reminder == "notch" then image("remindernotchright", side: "right") else image("reminder" + styling.transformation_reminder, side: "both") } reminder_border := { if styling.transformation_reminder == "notch" and card.pt == "" and styling.choice_bar == "none" then border("remindernotchrightlow") else if styling.transformation_reminder == "notch" then border("remindernotchright") else border("reminder" + styling.transformation_reminder) } pt_image := { name := "pt" + if styling.choice_bar != "none" then "choice" else "" 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)) } watermark_left := { 219 + (if styling.choice_bar != "none" then 28 else 0) + (if styling.prototype then 47 else 0) } watermark_top := { if styling.prototype then 747 else 653 } watermark_size := { 312 - (if styling.choice_bar != "none" then 56 else 0) - (if styling.prototype then 94 else 0) } 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 := "leaf" 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) } 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" } choice_bar_image := { name := "choicebar" image(name, side: "both") } choice_bar_custom_images := { custom_images := split_text(match: ",", styling.choice_bar_custom_images) count := length(custom_images)-1 if count > 6 then count := 6 for x from 0 to count do ( image := trim(custom_images[x]) if contains(match: ".png", image) then [image] else [] ) } choice_bar_choice_count := { if styling.choice_bar == "none" then 0 else if styling.choice_bar == "colors" then 5 else if styling.choice_bar == "colors (with colorless)" then 6 else if styling.choice_bar == "colors (with purple)" then 6 else if styling.choice_bar == "colors (with purple and colorless)" then 7 else if contains(match: "custom", styling.choice_bar) then length(choice_bar_custom_images()) else 0 } split_hard_line := replace@(match: ".*?" replace: "") + split_text@(match: "\\n") dice_match := match@(match: "^()?([0-9]+ ?([—–-] ?[0-9]+)?|[0-9]+ ?\\+|[Ee]lse|[Oo]ther) ?()? ?[|]") highlight_paragraphs := { desired := split_text(styling.paragraph_highlights, match: ",") desired_count := length(desired) - 1 desired_numbers := for y from 0 to desired_count do [(to_int(desired[y]) or else 0) - 1] paragraphs := split_hard_line(card.rule_text) count := length(paragraphs) - 1 for x from 0 to count do ( highlighted := false for y from 0 to desired_count do (if desired_numbers[y] == x then highlighted := true) [if highlighted then 1 else 0]) } dice_paragraphs := { paragraphs := split_hard_line(card.rule_text) count := length(paragraphs) - 1 all := for x from 0 to count do [if dice_match(paragraphs[x]) then 1 else 0] previous := all[0] alternate := [all[0]] + (for x from 1 to count do [if previous == 0 and all[x] == 1 then previous := 1 else previous := 0]) alternate } highlight_paragraph_index := { paragraphs := if styling.paragraph_highlights == "" then dice_paragraphs() else highlight_paragraphs() count := if paragraphs == nil then -1 else length(paragraphs) - 1 index := -1 accumulator := 0 for x from 0 to count do ( accumulator := accumulator + paragraphs[x] if accumulator == input and index == -1 then index := x accumulator ) index } highlight_top := { if input == 0 then 653 else ( count := length(card_style.rule_text.layout.paragraphs) - 1 if input > count and remove_tags(card.flavor_text) == "" then 972 else ( previous := card_style.rule_text.layout.paragraphs[input-1] or else nil current := card_style.rule_text.layout.paragraphs[input] or else nil bottom := if previous == nil then 0 else to_int(previous.bottom) top := if current == nil then rule_text_bottom()-rule_text_top() else to_int(current.top) sum := bottom + top if sum mod 2 == 1 then sum := sum - 1 to_int(card_style.rule_text.top) + (sum)/2 )) } highlight_height := { top := highlight_top(input) bottom := highlight_top(input+1) height := bottom - top if input == length(card_style.rule_text.layout.paragraphs) - 1 then height := height + 4 if height < 0 then 0 else if height > 400 then 400 else height } prototype_width_increase := { content_width := max(card_style.casting_cost_2.content_width, card_style.pt_2.content_width) - 6 clamp(content_width, minimum:65, maximum: 165) } crop_safe := { if left < 0 or top < 0 or width <= 0 or height <= 0 or left + width > 750 or top + height > 1046 then "" else crop(input, offset_x: left, offset_y: top, width: width, height: height) } clamp := { if input < minimum then minimum else if input > maximum then maximum else input } ############################################################## Set info fields set info style: symbol: variation: name: basic land border radius: 0.07 fill type: linear gradient fill color 1: rgb(116,186,112) fill color 2: rgb(38,90,30) border color 1: rgb(0, 0, 0) border color 2: rgb(0, 0, 0) #fill color 1: rgb(183, 151, 213) #fill color 2: rgb(121, 80, 163) #border color 1: rgb(0, 0, 0) #border color 2: rgb(0, 0, 0) set info style: symbol: variation: name: common border radius: 0.07 fill type: solid fill color: rgb(0,0,0) border color: rgb(255,255,255) set info style: symbol: variation: name: invertedcommon border radius: 0.07 fill type: linear gradient fill color 1: rgb(255, 255, 255) fill color 2: rgb(215, 215, 215) border color 1: rgb(0, 0, 0) border color 2: rgb(0, 0, 0) set info style: symbol: variation: name: uncommon border radius: 0.07 fill type: linear gradient fill color 1: rgb(224, 224, 224) fill color 2: rgb(84, 84, 84) border color 1: rgb(0, 0, 0) border color 2: rgb(0, 0, 0) set info style: symbol: variation: name: rare border radius: 0.07 fill type: linear gradient fill color 1: rgb(214, 196, 94) fill color 2: rgb(95, 84, 40) border color 1: rgb(0, 0, 0) border color 2: rgb(0, 0, 0) set info style: symbol: variation: name: mythic rare border radius: 0.07 fill type: linear gradient fill color 1: rgb(245, 148, 31) fill color 2: rgb(186, 45, 38) border color 1: rgb(0, 0, 0) border color 2: rgb(0, 0, 0) set info style: symbol: variation: name: masterpiece border radius: 0.07 fill type: linear gradient fill color 1: rgb(194, 22, 3) fill color 2: rgb(139, 0, 0) border color 1: rgb(0, 0, 0) border color 2: rgb(0, 0, 0) set info style: symbol: variation: name: purple border radius: 0.07 fill type: linear gradient fill color 1: rgb(180,0,245) fill color 2: rgb(100, 0, 165) border color 1: rgb(0, 0, 0) border color 2: rgb(0, 0, 0) ############################################################## Extra style options styling field: type: boolean name: center name description: Center the name text on the card? # localized caption: # fr: Centrer le nom # localized description: # fr: Aligner le nom au milieu de la carte? initial: no styling field: type: 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: center rule text description: When 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? choice: always choice: three lines or less choice: two lines or less choice: one line choice: never initial: two lines or less styling field: type: text name: chop rule textbox description: Chops the top, bottom, and right edges of the rule textbox by this many pixels. Formatted as "1,2,3" # localized caption: # fr: Tronquer le texte de règles # localized description: # fr: Réduire la taille du haut, du bas, et de la droite de la zone du texte de règles de N pixels. Format: "1,2,3" styling field: type: text name: paragraph highlights description: Which paragraphs should be highlighted? For example, write "1,4" to highlight the first and fourth paragraphs. Write "0" to highlight nothing. Leave blank to highlight dice rolls. # localized caption: # fr: Surligner les paragraphes # localized description: # fr: Quels paragraphes surligner? Par exemple, écrivez "1,4" pour surligner le premier et le quatrième paragraphes. Ecrivez "0" pour ne rien surligner. Laissez vide pour surligner les jets de dés. styling field: type: text name: chop flavor textbox description: Chops the top, bottom, and right edges of the flavor textbox by this many pixels. Formatted as "1,2,3" # localized caption: # fr: Tronquer le texte d'ambiance # localized description: # fr: Réduire la taille du haut, du bas, et de la droite de la zone du texte d'ambiance de N pixels. Format: "1,2,3" styling field: type: choice name: center flavor text description: When should flavor text be centered? # localized caption: # fr: Centrer le texte d'ambiance # localized description: # fr: Aligner le texte d'ambiance au milieu de la carte? choice: always choice: one line choice: never initial: always styling field: type: choice name: extended art description: Should the illustration extend to the edge of the card? Disables the insignia. # localized caption: # fr: Illustration étendue # localized description: # fr: Étirer l'illustration jusqu'aux bords de la carte? Désactive l'insigne. choice: yes choice: if land choice: no initial: no styling field: type: text name: popout 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: text name: watermark description: The name of a '.png' image inside the /magic-mainframe-extras.mse-include/ folder. Dimensions can be anything, but native is 312x312. Alternatively, write 'setsymbol' to use the set symbol instead. # localized caption: # fr: Filigrane # localized description: # fr: Le chemin d'une image '.png' située dans le dossier /magic-mainframe-extras.mse-include/. Alternativement, écrivez 'setsymbol' pour utiliser le symbole du Set comme filigrane. styling field: type: text name: watermark opacity percentage description: Set the opacity percentage for watermark. Opaque is 100, transparent is 0. Leave blank to use image opacity. # localized caption: # fr: Pourcentage d'opacité du filigrane # localized description: # fr: Complètement opaque: 100. Complètement transparent: 0. Laissez vide pour utiliser l'opacité native du filigrane. styling field: type: choice name: legend crown description: Is the legend crown visible? Special crown disables the land leaf and the insignia. # localized caption: # fr: Couronne légendaire # localized description: # fr: La couronne légendaire est-elle visible? La couronne spéciale désactive l'insigne. choice: special choice: special if legendary choice: normal choice: normal if legendary choice: none initial: normal if legendary styling field: type: choice name: land leaf description: Is the land leaf visible? Disabled by the special crown. # localized caption: # fr: Feuille de terrain # localized description: # fr: La feuille de terrain est-elle visible? choice: yes choice: if land choice: no initial: if land styling field: type: choice name: insignia description: Is an insignia visible? Disabled by extended art and special crown. # localized caption: # fr: Insigne # localized description: # fr: L'insigne est-elle visible? Désactivé par l'illustration étendue et la couronne spéciale. choice: none choice: lieutenant choice: commander initial: none styling field: type: choice name: symbol description: Use a symbol next to the card's name? # localized caption: # fr: Symbole # localized description: # fr: Utiliser un symbole à côté du nom de la carte? choice: none choice: 1 triangle choice: 1 triangle flipped choice: 2 triangles choice: compass choice: land choice: rising choice: risen choice: closed fan choice: open fan choice: sun / day choice: moon / night choice: eldrazi choice: brother's war choice: arena choice: acorn choice: swap choice: tombstone choice: lesson choice: multitype choice: structure choice: creature choice: planeswalker choice: instant choice: sorcery choice: artifact choice: enchantment choice: custom initial: none styling field: type: choice name: transformation reminder description: Use a text field to remind some info of the other side? # localized caption: # fr: Rappel de transformation # localized description: # fr: Utiliser un champ de texte pour rappeler certaines informations du dos de la carte? choice: none choice: short choice: medium choice: long choice: notch initial: none styling field: type: text name: shrink transformation reminder text description: Reduces the reminder text's font size by this many points. # localized caption: # fr: Rapetisser le text de rappel # localized description: # fr: Réduire la taille du text de rappel de N points. styling field: type: choice name: fuse description: Use a textbox overlapping two cards? Choose the color of the other card. Write the entire text on both cards. # localized caption: # fr: Fusion # localized description: # fr: Utiliser un champ de texte commun à deux cartes? Choisissez la couleur de l'autre carte. Écrivez l'entièreté du texte sur chaque carte. choice: none choice: left, mixed with white choice: left, mixed with blue choice: left, mixed with black choice: left, mixed with red choice: left, mixed with green choice: left, mixed with artifact choice: left, mixed with gold choice: left, mixed with colorless choice: left, mixed with purple choice: right, mixed with white choice: right, mixed with blue choice: right, mixed with black choice: right, mixed with red choice: right, mixed with green choice: right, mixed with artifact choice: right, mixed with gold choice: right, mixed with colorless choice: right, mixed with purple initial: none styling field: type: boolean name: banner description: Use a text field to write info on the left of the card? # localized caption: # fr: Bannière # localized description: # fr: Utiliser un champ de texte vertical sur la gauche de la carte? initial: no styling field: type: boolean name: prototype description: Use the prototype subframe? # localized caption: # fr: Prototype # localized description: # fr: Utiliser un champ pour l'abilité Prototype? initial: no styling field: type: choice name: force prototype left color description: Use a specified color for the left half of the prototype subframe? # localized caption: # fr: Forcer la couleur gauche du prototype # localized description: # fr: Utiliser la couleur spécifiée pour la moitié gauche du prototype. 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 prototype right color description: Use a specified color for the right half of the prototype subframe? # localized caption: # fr: Forcer la couleur droite du prototype # localized description: # fr: Utiliser la couleur spécifiée pour la moitié droite du prototype. 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 prototype hybrid frame description: Use a hybrid 2-color prototype subframe instead of a gold subframe even if the casting cost has no hybrid mana? # localized caption: # fr: Forcer les couleurs hybrides sur le prototype # localized description: # fr: Utiliser un cadre hybride à deux couleurs au lieu d'un cadre doré, même si le prototype n'a pas de mana hybride dans son coût de lancement? initial: yes styling field: type: choice name: choice bar description: Use a box with choices at the bottom, like on the card Cryptic Spires? # localized caption: # fr: Barre de choix # localized description: # fr: Utiliser une barre de choix, comme sur la carte 'Tours cryptiques'? choice: none choice: colors choice: colors (with colorless) choice: colors (with purple) choice: colors (with purple and colorless) choice: text choice: text (centered) choice: custom choice: custom (stretched) initial: none styling field: type: text name: choice bar custom images description: The file path of up to seven '.png' images used for choices. Dimensions can be anything, but native is 50x50. Formatted as "image1.png, image2.png, etc..." # localized caption: # fr: Images de la barre de choix # localized description: # fr: Les chemins de jusqu'à sept images '.png' à utiliser dans la barre de choix. Format: "image1.png, image2.png, etc..." 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 and flavor text. # localized caption: # fr: Symboles des textes # localized description: # fr: Les symboles à utiliser dans le texte de règles, et le texte d'ambiance. 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: 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 field: # type: boolean # name: foil overlay # description: Should there be a foil overlay applied? ## localized caption: ## fr: Brillant ## localized description: ## fr: Appliquer un revêtement brillant sur la carte? # initial: no styling style: center rule text: render style: both choice images: always: /magic.mse-game/icons/center-all-text.png three lines or less: /magic-genevensis-00-main.mse-style/center-3lines-text.png two lines or less: /magic-genevensis-00-main.mse-style/center-2lines-text.png one line: /magic-genevensis-00-main.mse-style/center-1line-text.png never: /magic.mse-game/icons/center-no-text.png center flavor text: render style: both choice images: always: /magic.mse-game/icons/center-all-text.png one line: /magic-genevensis-00-main.mse-style/center-1line-text.png never: /magic.mse-game/icons/center-no-text.png #symbol: # render style: both # choice images: # 1 triangle: { "/magic-genevensis-00-main.mse-style/elements/symbol1triangle/csymbol1triangle.png" } # 2 triangles: { "/magic-genevensis-00-main.mse-style/elements/symbol2triangle/csymbol2triangle.png" } # compass: { "/magic-genevensis-00-main.mse-style/elements/symbolcompass/csymbolcompass.png" } # land: { "/magic-genevensis-00-main.mse-style/elements/symbolland/csymbolland.png" } # rising: { "/magic-genevensis-00-main.mse-style/elements/symbolrising/csymbolrising.png" } # risen: { "/magic-genevensis-00-main.mse-style/elements/symbolrisen/csymbolrisen.png" } # closed fan: { "/magic-genevensis-00-main.mse-style/elements/symbolclosedfan/csymbolclosedfan.png" } # open fan: { "/magic-genevensis-00-main.mse-style/elements/symbolopenfan/csymbolopenfan.png" } # sun / day: { "/magic-genevensis-00-main.mse-style/elements/symbolsun/csymbolsun.png" } # moon / night: { "/magic-genevensis-00-main.mse-style/elements/symbolmoon/csymbolmoon.png" } # eldrazi: { "/magic-genevensis-00-main.mse-style/elements/symboleldrazi/csymboleldrazi.png" } # arena: { "/magic-genevensis-00-main.mse-style/elements/symbolarena/csymbolarena.png" } # acorn: { "/magic-genevensis-00-main.mse-style/elements/symbolacorn/csymbolacorn.png" } # swap: { "/magic-genevensis-00-main.mse-style/elements/symbolswap/csymbolswap.png" } # tombstone: { "/magic-genevensis-00-main.mse-style/elements/symboltomb/csymboltomb.png" } # multitype: { "/magic-genevensis-00-main.mse-style/elements/symbolmultitype/csymbolmultitype.png" } # structure: { "/magic-genevensis-00-main.mse-style/elements/symbolstructure/csymbolstructure.png" } # creature: { "/magic-genevensis-00-main.mse-style/elements/symbolcreature/csymbolcreature.png" } # planeswalker: { "/magic-genevensis-00-main.mse-style/elements/symbolplaneswalker/csymbolplaneswalker.png" } # instant: { "/magic-genevensis-00-main.mse-style/elements/symbolinstant/csymbolinstant.png" } # sorcery: { "/magic-genevensis-00-main.mse-style/elements/symbolsorcery/csymbolsorcery.png" } # artifact: { "/magic-genevensis-00-main.mse-style/elements/symbolartifact/csymbolartifact.png" } # enchantment: { "/magic-genevensis-00-main.mse-style/elements/symbolenchantment/csymbolenchantment.png" } # custom: { "/magic-genevensis-00-main.mse-style/elements/symbolcustom/csymbolcustom.png" } 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: 2 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: 42 font: name: { name_font() } italic name: { name_font_italic() } size: { name_font_size() } color: { name_font_color() } symbol font: name: { styling.casting_cost_mana_symbols } size: { name_font_size() } casting cost: right: 687 top: 55 width: { max(60, card_style.casting_cost.content_width) + 10 } height: 48 alignment: middle right font: name: { body_font() } size: 32 symbol font: name: { styling.casting_cost_mana_symbols } size: 32 always symbol: true z index: 42 casting cost 2: left: { 642 - prototype_width_increase() } top: 658 width: { if styling.prototype then (31 + prototype_width_increase()) else 0 } height: 30 alignment: center middle shrink-overflow font: name: { body_font() } size: 20 symbol font: name: { styling.casting_cost_mana_symbols } size: 20 always symbol: true z index: 42 alias: left: 149 top: { 117 + name2_font_vertical() } width: 452 height: 24 alignment: center middle shrink-overflow z index: 42 font: name: { name2_font() } italic name: { name2_font_italic() } size: { name2_font_size() } color: { name2_font_color() } ############################# Image image: left: { image_left() } top: 114 width: { image_width() } height: 469 z index: 10 mask: { crop_safe(current_image_mask(), width: image_width(), height: 469, 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: { 596 + type_font_vertical() } right: { 677 - (if styling.center_type then type_margin() else typeline_right_margin()) } height: 44 alignment: { if styling.center_type then "center middle shrink-overflow" else "left middle shrink-overflow" } z index: 42 font: name: { type_font() } italic name: { type_font_italic() } size: { type_font_size() } color: { type_font_color() } separator color: red rarity: left: { 620 - (-chop_rarity_left()) } width: { 60 - chop_rarity_right() - chop_rarity_left() } top: { 588 - (-chop_rarity_top()) } bottom: { 648 - chop_rarity_bot() } z index: 40 render style: image choice images: basic land: script: if has_custom_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "c.png" else if alt_rarity() then alt_symbol() else symbol_variation(symbol: set.symbol, variation: "basic land") common: script: if has_custom_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "c.png" else if alt_rarity() then alt_symbol() else if styling.inverted_common_symbol then symbol_variation(symbol: set.symbol, variation: "invertedcommon") else symbol_variation(symbol: set.symbol, variation: "common") uncommon: script: if has_custom_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "u.png" else if alt_rarity() then alt_symbol() else symbol_variation(symbol: set.symbol, variation: "uncommon") rare: script: if has_custom_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "r.png" else if alt_rarity() then alt_symbol() else symbol_variation(symbol: set.symbol, variation: "rare") mythic rare: script: if has_custom_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "m.png" else if alt_rarity() then alt_symbol() else symbol_variation(symbol: set.symbol, variation: "mythic rare") masterpiece: script: if has_custom_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "mp.png" else if alt_rarity() then alt_symbol() else symbol_variation(symbol: set.symbol, variation: "masterpiece") special: script: if has_custom_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "s.png" else if alt_rarity() then alt_symbol() else symbol_variation(symbol: set.symbol, variation: "purple") ############################# Text boxes rule text: left: 73 top: { rule_text_top() + body_font_vertical() } width: { rule_text_width() } bottom: { rule_text_bottom() } z index: 44 font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } color: { body_font_color() } scale down to: 12 symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } scale down to: 12 alignment: script: if ( styling.center_rule_text == "three lines or less" and card_style.rule_text.content_lines <= 3 ) or ( styling.center_rule_text == "two lines or less" and card_style.rule_text.content_lines <= 2 ) or ( styling.center_rule_text == "one line" and card_style.rule_text.content_lines <= 1 ) or styling.center_rule_text == "always" then "middle center" else "middle left" 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 flavor text: left: 73 top: { flavor_text_top() + body_font_vertical() } width: { flavor_text_width() } bottom: { flavor_text_bottom() } padding bottom: { flavor_text_padding_bottom() } z index: 44 font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } color: { body_font_color() } scale down to: 12 symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } scale down to: 12 alignment: script: if ( styling.center_flavor_text == "one line" and card_style.flavor_text.content_lines <= 1 ) or styling.center_flavor_text == "always" then "middle center" else "middle left" line height hard: { if contains(card.flavor_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 2: left: 94 top: { 660 + body_font_vertical() } width: { if styling.prototype then (522 - prototype_width_increase()) else 0 } height: 73 z index: 44 font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } color: { body_font_color() } scale down to: 12 symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } scale down to: 12 alignment: middle left 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: 46 left: { if styling.choice_bar != "none" then 571 else 552 } top: { (if styling.choice_bar != "none" then 857 else 950) + pt_font_vertical() } width: { if styling.choice_bar != "none" then 112 else 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 pt 2: left: { 650 - prototype_width_increase() } top: { 693 + pt_font_vertical() } width: { if styling.prototype then (14 + prototype_width_increase()) else 0 } height: 42 alignment: center middle shrink-overflow font: name: { pt_font() } italic name: { pt_font_italic() } size: { pt_font_size() - 2 } color: { pt_font_color() } scale down to: 12 separator color: red z index: 42 ############################# Copyright stuff illustrator: left: 225 top: 1013 width: 300 height: 20 z index: 40 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: 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: pt box editable: false save value: false choice: pt box extra card field: type: choice name: watermark image editable: false save value: false show statistics: false choice: watermark image extra card field: type: choice name: 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: text name: choice bar text save value: true extra card field: type: choice name: choice bar box editable: false save value: false show statistics: false choice: choice bar box extra card field: type: choice name: choice bar image 1 editable: false save value: false show statistics: false choice: choice bar image 1 extra card field: type: choice name: choice bar image 2 editable: false save value: false show statistics: false choice: choice bar image 2 extra card field: type: choice name: choice bar image 3 editable: false save value: false show statistics: false choice: choice bar image 3 extra card field: type: choice name: choice bar image 4 editable: false save value: false show statistics: false choice: choice bar image 4 extra card field: type: choice name: choice bar image 5 editable: false save value: false show statistics: false choice: choice bar image 5 extra card field: type: choice name: choice bar image 6 editable: false save value: false show statistics: false choice: choice bar image 6 extra card field: type: choice name: choice bar image 7 editable: false save value: false show statistics: false choice: choice bar image 7 extra card field: type: choice name: choice bar transformation paste editable: false save value: false choice: choice bar transformation paste extra card field: type: choice name: paragraph background 1 editable: false save value: false show statistics: false choice: paragraph background 1 extra card field: type: choice name: paragraph background 2 editable: false save value: false show statistics: false choice: paragraph background 2 extra card field: type: choice name: paragraph background 3 editable: false save value: false show statistics: false choice: paragraph background 3 extra card field: type: choice name: paragraph background 4 editable: false save value: false show statistics: false choice: paragraph background 4 extra card field: type: choice name: prototype casing editable: false save value: false show statistics: false choice: prototype casing extra card field: type: choice name: prototype frame editable: false save value: false show statistics: false choice: prototype frame extra card field: type: choice name: prototype inner frame editable: false save value: false show statistics: false choice: prototype frame 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 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: 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: color name: choice bar box border editable: false save value: false show statistics: false script: set.border_color extra card field: type: color name: choice bar transformation paste border editable: false save value: false show statistics: false script: set.border_color extra card field: type: color name: prototype casing border editable: false save value: false show statistics: false script: set.border_color extra card field: type: color name: prototype frame border editable: false save value: false show statistics: false script: set.border_color extra card field: type: color name: prototype inner frame 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 field: type: choice name: foil overlay editable: false save value: false choice: overlay 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: 8 visible: { has_symbol() } render style: image image: { symbol_image() } transformation reminder: left: { if styling.transformation_reminder == "notch" then 687 else 0 } top: { if styling.transformation_reminder == "notch" then (if styling.choice_bar == "none" then (if card.pt == "" then 900 else 875) else (if card.pt == "" then 845 else 785)) else if styling.transformation_reminder == "short" then 926 else 911 } height: { if styling.transformation_reminder == "notch" then 56 else if styling.transformation_reminder == "short" then 91 else 103 } width: { if styling.transformation_reminder == "notch" then 53 else if styling.transformation_reminder == "short" then 258 else if styling.transformation_reminder == "medium" then 376 else 494 } z index: 22 visible: { styling.transformation_reminder != "none" } render style: image image: { reminder_image() } transformation reminder text: left: { if styling.transformation_reminder == "notch" then (if styling.choice_bar == "none" and card.pt == "" then 618 else 620) else if styling.transformation_reminder == "short" then 4 else 22 } top: { (if styling.transformation_reminder == "notch" then (if styling.choice_bar == "none" then (if card.pt == "" then 906 else 888) else (if card.pt == "" then 858 else 798)) else 947) + name3_font_vertical() } height: { if styling.transformation_reminder == "notch" then 30 else 60 } width: { if styling.transformation_reminder == "notch" then 75 else if styling.transformation_reminder == "short" then 191 else if styling.transformation_reminder == "medium" then 294 else if styling.transformation_reminder == "long" then 404 else 0 } z index: 46 font: name: { if styling.auxiliary_font == "" then (if styling.transformation_reminder == "notch" then "ModMatrix" else "Beleren Bold") else name3_font() } italic name: { if styling.auxiliary_font == "" then (if styling.transformation_reminder == "notch" then "ModMatrix" else "Beleren Bold") else name3_font_italic() } size: { name3_font_size() - (if styling.transformation_reminder == "notch" then 3 else 0) - shrink_reminder() } color: { name3_font_color() } symbol font: name: { styling.casting_cost_mana_symbols } size: { name3_font_size() - (if styling.transformation_reminder == "notch" then 3 else 0) - shrink_reminder() } alignment: { if styling.transformation_reminder == "notch" then "right middle" else "center middle shrink-overflow" } transformation reminder pt paste: left: 456 top: 952 height: 58 width: 76 z index: 26 visible: { styling.transformation_reminder == "long" and card.pt != "" and styling.choice_bar == "none" } render style: image image: { image("reminderlongptpaste", side: "right") } alias box: left: 110 top: 112 height: 47 width: 530 z index: 12 visible: { card.alias != ""} render style: image image: { image("alias", side: "both") } ascend: left: 18 top: { 147 + name3_font_vertical() } width: { if styling.banner then 50 else 0 } height: 424 direction: vertical z index: 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: 462 width: 68 z index: 12 visible: { styling.banner } render style: image image: { image("ascend", side: "left") } color indicator dot: left: 66 top: 597 width: 42 height: 42 z index: 40 visible: { has_identity() } render style: image image: { color_indicator_dot_image() } illustrator brush: left: { 334 - ( card_style.illustrator.content_width / 2 ) } top: 1017 width: 36 height: 18 z index: 40 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: 40 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: 40 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 } pt box: left: { if styling.choice_bar != "none" then 544 else 492 } top: { if styling.choice_bar != "none" then 852 else 939 } width: { if styling.choice_bar != "none" then 156 else 221 } height: { if styling.choice_bar != "none" then 68 else 76 } z index: 24 visible: { card.pt != "" } render style: image image: { pt_image() } watermark image: left: { watermark_left() } top: { watermark_top() } width: { watermark_size() } height: { watermark_size() } z index: 30 render style: image image: { opacity_watermark_image() } mask: { size := watermark_size(); crop_safe(current_textbox_mask(), width: size, height: size, left: watermark_left(), top: watermark_top()) } crown: left: 0 top: 0 width: 750 height: 1046 z index: 4 visible: { has_crown() or has_special_crown() } render style: image image: { crown_image() } leaf: left: 0 top: 0 width: 750 height: 1046 z index: 6 visible: { has_leaf() } render style: image image: { leaf_image() } legend leaf: left: 0 top: 0 width: 750 height: 1046 z index: 8 visible: { has_crown() and has_leaf() } render style: image image: { legend_leaf_image() } insignia: left: 0 top: 181 width: 750 height: 66 z index: 8 visible: { not has_extended_art() and not has_special_crown() and styling.insignia != "none" } render style: image image: { insignia_image() } fuse box: left: { stylesheet.card_style.rule_text_3.left - 36 } top: 501 height: 94 width: { stylesheet.card_style.rule_text_3.width + 72 } z index: 150 visible: { styling.fuse != "none" } render style: image image: { fuse_image() } choice bar text: left: 64 top: { 920 + name3_font_vertical() } width: { if styling.choice_bar == "text" or styling.choice_bar == "text (centered)" then 622 else 0 } height: 41 alignment: { if styling.choice_bar == "text" then "left middle shrink-overflow" else "center middle shrink-overflow" } z index: 20 font: name: { name3_font() } italic name: { name3_font_italic() } size: { name3_font_size() - 4 } color: { name3_font_color() } scale down to: 12 symbol font: name: { styling.casting_cost_mana_symbols } size: { name3_font_size() - 4 } scale down to: 12 choice bar box: left: 54 top: 899 height: 84 width: 642 z index: 18 visible: { styling.choice_bar != "none" } render style: image image: { choice_bar_image() } choice bar transformation paste: left: { if styling.transformation_reminder == "short" then 214 else if styling.transformation_reminder == "medium" then 337 else 452 } top: { if styling.transformation_reminder == "medium" then 952 else 965 } height: { if styling.transformation_reminder == "medium" then 30 else 5 } width: { if styling.transformation_reminder == "medium" then 73 else 31 } z index: 32 visible: { styling.choice_bar != "none" and styling.transformation_reminder != "none" and styling.transformation_reminder != "notch" } render style: image image: { image("choicebartransformationpaste" + if styling.transformation_reminder == "medium" then "medium" else "", side: "right") } choice bar image 1: left: { 54 + (if styling.choice_bar == "custom (stretched)" then 0 else 692/(choice_bar_choice_count()+1)-50) } top: 915 height: 50 width: { if styling.choice_bar == "custom (stretched)" then 642/length(choice_bar_custom_images()) else 50 } z index: 20 visible: { contains(match: "color", styling.choice_bar) or (contains(match: "custom", styling.choice_bar) and length(choice_bar_custom_images()) > 0) } render style: image image: { if contains(match: "custom", styling.choice_bar) then choice_bar_custom_images()[0] else "choice_bar_w.png" } mask: { if styling.choice_bar == "colors (with purple and colorless)" then "choice_bar_w_mask.png" else "" } choice bar image 2: left: { 54 + (if styling.choice_bar == "custom (stretched)" then 642/length(choice_bar_custom_images()) else 2*692/(choice_bar_choice_count()+1)-50) } top: 915 height: 50 width: { if styling.choice_bar == "custom (stretched)" then 642/length(choice_bar_custom_images()) else 50 } z index: 20 visible: { contains(match: "color", styling.choice_bar) or (contains(match: "custom", styling.choice_bar) and length(choice_bar_custom_images()) > 1) } render style: image image: { if contains(match: "custom", styling.choice_bar) then choice_bar_custom_images()[1] else "choice_bar_u.png" } choice bar image 3: left: { 54 + (if styling.choice_bar == "custom (stretched)" then 2*642/length(choice_bar_custom_images()) else 3*692/(choice_bar_choice_count()+1)-50) } top: 915 height: 50 width: { if styling.choice_bar == "custom (stretched)" then 642/length(choice_bar_custom_images()) else 50 } z index: 20 visible: { contains(match: "color", styling.choice_bar) or (contains(match: "custom", styling.choice_bar) and length(choice_bar_custom_images()) > 2) } render style: image image: { if contains(match: "custom", styling.choice_bar) then choice_bar_custom_images()[2] else "choice_bar_b.png" } choice bar image 4: left: { 54 + (if styling.choice_bar == "custom (stretched)" then 3*642/length(choice_bar_custom_images()) else 4*692/(choice_bar_choice_count()+1)-50) } top: 915 height: 50 width: { if styling.choice_bar == "custom (stretched)" then 642/length(choice_bar_custom_images()) else 50 } z index: 20 visible: { contains(match: "color", styling.choice_bar) or (contains(match: "custom", styling.choice_bar) and length(choice_bar_custom_images()) > 3) } render style: image image: { if contains(match: "custom", styling.choice_bar) then choice_bar_custom_images()[3] else "choice_bar_r.png" } choice bar image 5: left: { 54 + (if styling.choice_bar == "custom (stretched)" then 4*642/length(choice_bar_custom_images()) else 5*692/(choice_bar_choice_count()+1)-50) } top: 915 height: 50 width: { if styling.choice_bar == "custom (stretched)" then 642/length(choice_bar_custom_images()) else 50 } z index: 20 visible: { contains(match: "color", styling.choice_bar) or (contains(match: "custom", styling.choice_bar) and length(choice_bar_custom_images()) > 4) } render style: image image: { if contains(match: "custom", styling.choice_bar) then choice_bar_custom_images()[4] else "choice_bar_g.png" } choice bar image 6: left: { 54 + (if styling.choice_bar == "custom (stretched)" then 5*642/length(choice_bar_custom_images()) else 6*692/(choice_bar_choice_count()+1)-50) } top: 915 height: 50 width: { if styling.choice_bar == "custom (stretched)" then 642/length(choice_bar_custom_images()) else 50 } z index: 20 visible: { contains(match: "colorless", styling.choice_bar) or contains(match: "purple", styling.choice_bar) or (contains(match: "custom", styling.choice_bar) and length(choice_bar_custom_images()) > 5) } render style: image image: { if contains(match: "custom", styling.choice_bar) then choice_bar_custom_images()[5] else if contains(match: "purple", styling.choice_bar) then "choice_bar_p.png" else "choice_bar_c.png"} choice bar image 7: left: { 54 + (if styling.choice_bar == "custom (stretched)" then 6*642/length(choice_bar_custom_images()) else 7*692/(choice_bar_choice_count()+1)-50) } top: 915 height: 50 width: { if styling.choice_bar == "custom (stretched)" then 642/length(choice_bar_custom_images()) else 50 } z index: 20 visible: { styling.choice_bar == "colors (with purple and colorless)" or (contains(match: "custom", styling.choice_bar) and length(choice_bar_custom_images()) > 6) } render style: image image: { if contains(match: "custom", styling.choice_bar) then choice_bar_custom_images()[6] else "choice_bar_c.png" } paragraph background 1: ###visible property seems to not work, functions in the mask property are still evaluated when invisible. adding visibility condition (highlight_paragraph_index(1) > -1) to all other properties left: 0 top: { index := highlight_paragraph_index(1); if index > -1 then highlight_top(index) else 0 } width: 750 height: { index := highlight_paragraph_index(1); if index > -1 then highlight_height(index) else 0 } z index: 28 render style: image image: { index := highlight_paragraph_index(1); if index > -1 then set_combine(crop_safe(image("walkertextboxnormallight", side: "both"), width: 750, height: highlight_height(index), left: 0, top: highlight_top(index)), combine: "shadow") else "" } mask: { index := highlight_paragraph_index(1); if index > -1 then crop_safe(current_textbox_mask(), width: 750, height: highlight_height(index), left: 0, top: highlight_top(index)) else "" } paragraph background 2: left: 0 top: { index := highlight_paragraph_index(2); if index > -1 then highlight_top(index) else 0 } width: 750 height: { index := highlight_paragraph_index(2); if index > -1 then highlight_height(index) else 0 } z index: 28 render style: image image: { index := highlight_paragraph_index(2); if index > -1 then set_combine(crop_safe(image("walkertextboxnormallight", side: "both"), width: 750, height: highlight_height(index), left: 0, top: highlight_top(index)), combine: "shadow") else "" } mask: { index := highlight_paragraph_index(2); if index > -1 then crop_safe(current_textbox_mask(), width: 750, height: highlight_height(index), left: 0, top: highlight_top(index)) else "" } paragraph background 3: left: 0 top: { index := highlight_paragraph_index(3); if index > -1 then highlight_top(index) else 0 } width: 750 height: { index := highlight_paragraph_index(3); if index > -1 then highlight_height(index) else 0 } z index: 28 render style: image image: { index := highlight_paragraph_index(3); if index > -1 then set_combine(crop_safe(image("walkertextboxnormallight", side: "both"), width: 750, height: highlight_height(index), left: 0, top: highlight_top(index)), combine: "shadow") else "" } mask: { index := highlight_paragraph_index(3); if index > -1 then crop_safe(current_textbox_mask(), width: 750, height: highlight_height(index), left: 0, top: highlight_top(index)) else "" } paragraph background 4: left: 0 top: { index := highlight_paragraph_index(4); if index > -1 then highlight_top(index) else 0 } width: 750 height: { index := highlight_paragraph_index(4); if index > -1 then highlight_height(index) else 0 } z index: 28 render style: image image: { index := highlight_paragraph_index(4); if index > -1 then set_combine(crop_safe(image("walkertextboxnormallight", side: "both"), width: 750, height: highlight_height(index), left: 0, top: highlight_top(index)), combine: "shadow") else "" } mask: { index := highlight_paragraph_index(4); if index > -1 then crop_safe(current_textbox_mask(), width: 750, height: highlight_height(index), left: 0, top: highlight_top(index)) else "" } prototype casing: left: 50 top: 640 width: 650 height: 112 z index: 4 visible: { styling.prototype } render style: image image: { image("prototypecasing", side: "both") } prototype frame: left: 50 top: 640 width: 650 height: 112 z index: 6 visible: { styling.prototype } render style: image image: { image_2("prototypeframe", side: "both") } prototype inner frame: left: { 621 - prototype_width_increase() } top: 656 width: 100 height: 81 z index: 8 visible: { styling.prototype } render style: image image: { image_2("prototypeinnerframe", side: "right") } card color border: visible: { set.border_color != rgb(0,0,0) } left: 0 top: 0 width: 750 height: 1046 z index: 3 mask: { border((if has_extended_art() then "puma" else "") + "card") } 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: 5 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: 7 mask: { border("leaf") } 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: 9 mask: { border("legendleaf") } insignia border: visible: { set.border_color != rgb(0,0,0) and not has_extended_art() and not has_special_crown() and styling.insignia != "none" } left: 0 top: 181 width: 750 height: 66 z index: 9 mask: { border("insignia" + styling.insignia) } symbol border: visible: { set.border_color != rgb(0,0,0) and has_symbol() } left: 35 top: 45 height: 78 width: 73 z index: 9 mask: { border("symboltomb") } color indicator dot border: visible: { set.border_color != rgb(0,0,0) and has_identity() } left: 66 top: 597 width: 42 height: 42 z index: 41 mask: { border("identity") } transformation reminder border: visible: { set.border_color != rgb(0,0,0) and styling.transformation_reminder != "none" } left: { if styling.transformation_reminder == "notch" then 687 else 0 } top: { if styling.transformation_reminder == "notch" then (if styling.choice_bar == "none" then (if card.pt == "" then 900 else 875) else (if card.pt == "" then 845 else 785)) else if styling.transformation_reminder == "short" then 926 else 911 } height: { if styling.transformation_reminder == "notch" then 56 else if styling.transformation_reminder == "short" then 91 else 103 } width: { if styling.transformation_reminder == "notch" then 53 else if styling.transformation_reminder == "short" then 258 else if styling.transformation_reminder == "medium" then 376 else 494 } z index: 23 mask: { reminder_border() } transformation reminder pt paste border: visible: { set.border_color != rgb(0,0,0) and styling.transformation_reminder == "long" and card.pt != "" and styling.choice_bar == "none" } left: 456 top: 952 height: 58 width: 76 z index: 27 mask: { border("reminderlongptpaste") } alias box border: visible: { set.border_color != rgb(0,0,0) and card.alias != "" } left: 110 top: 112 height: 47 width: 530 z index: 13 mask: { border("alias") } ascend box border: visible: { set.border_color != rgb(0,0,0) and styling.banner } left: 9 top: 117 height: 462 width: 68 z index: 13 mask: { border("ascend") } pt border: visible: { set.border_color != rgb(0,0,0) and card.pt != "" } left: { if styling.choice_bar != "none" then 544 else 492 } top: { if styling.choice_bar != "none" then 852 else 939 } width: { if styling.choice_bar != "none" then 156 else 221 } height: { if styling.choice_bar != "none" then 68 else 76 } z index: 25 mask: { border("pt" + if styling.choice_bar != "none" then "choice" else "") } 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()) } choice bar box border: visible: { set.border_color != rgb(0,0,0) and styling.choice_bar != "none" } left: 54 top: 899 height: 84 width: 642 z index: 19 mask: { border("choicebar") } choice bar transformation paste border: visible: { set.border_color != rgb(0,0,0) and styling.choice_bar != "none" and styling.transformation_reminder == "medium" } left: 337 top: 952 height: 30 width: 73 z index: 33 mask: { border("choicebartransformationpastemedium") } prototype casing border: visible: { set.border_color != rgb(0,0,0) and styling.prototype } left: 50 top: 640 width: 650 height: 112 z index: 5 mask: { border("prototypecasing") } prototype frame border: visible: { set.border_color != rgb(0,0,0) and styling.prototype } left: 50 top: 640 width: 650 height: 112 z index: 7 mask: { border("prototypeframe") } prototype inner frame border: visible: { set.border_color != rgb(0,0,0) and styling.prototype } left: { 621 - prototype_width_increase() } top: 656 width: 100 height: 81 z index: 9 mask: { border("prototypeinnerframe") } pride pin: left: 664 top: 50 width: 41 height: 63 z index: 8 render style: image popup style: in place image: { if input == "none" then "" else "/magic-genevensis-00-main.mse-style/pride/" + input + ".png" } mask: /magic-genevensis-00-main.mse-style/pride_mask.png #foil overlay: # visible: { styling.foil_overlay } # left: 0 # top: 0 # height: 1046 # width: 750 # z index: 200 # render style: image # image: /magic-genevensis-00-main.mse-style/foil_overlay.png # mask: /magic-genevensis-00-main.mse-style/foil_overlay_mask.png