mse version: 2.0.0 game: magic short name: M15 Mainframe full name: M15 w/Text altering icon: card-sample.png installer group: magic/m15 style/normal cards position hint: 001 version: 2024-09-23 depends on: package: magic.mse-game version: 2020-04-25 depends on: package: magic-default-image.mse-include version: 2007-09-23 depends on: package: magic-mana-large.mse-symbol-font version: 2007-09-23 depends on: package: magic-mana-small.mse-symbol-font version: 2007-09-23 depends on: package: magic-mainframe-extras.mse-include version: 2018-01-01 depends on: package: magic-modules.mse-include version: 2024-10-01 depends on: package: magic-pride.mse-include version: 2024-05-22 card width: 375 card height: 523 card dpi: 150 ##### Flavor bar image by SirnightNano ##### Ancestral generic mana by ancestral ##### Nyx crowns by Angelus ##### Companion crowns, nyx extensions, DOM FNM frame, THB fullart lands, snow frames by silverback_ape ##### Updated PUMA by Cardists ##### Inverted by VerumCH ############################################################## Extra scripts init script: #### Load scripts include file: /magic-default-image.mse-include/scripts include file: /magic-pride.mse-include/scripts #### Blend settings # Should hybrids have a grey name? mask_hybrid_with_land := { styling.hybrid_name == "grey" } mask_hybrid_with_gold := { styling.hybrid_name == "gold" } #Should multicolor lands with basic land types have a colored name? mask_multi_land_with_color := { styling.colored_multicolor_land_name } # Use the normal tap symbol mana_t := { if styling.tap_symbol == "old" then "old" else if styling.tap_symbol == "diagonal T" then "older" else "new" } loyalty_image := { if contains(input, match: "+") then "loyaltyup.png" else if contains(input, match: "-") then "loyaltydown.png" else "loyaltynaught.png" } ancestral_mana := { chosen(styling.other_options, choice:"ancestral generic mana")} # Use guild mana symbols? guild_mana := { styling.use_guild_mana_symbols } #### template images #### base template template_prefix := [ card: "/magic-modules.mse-include/cards/375 m15 simple/", pt: "/magic-modules.mse-include/pts/375 m15/", fnm_pt: "/magic-modules.mse-include/pts/375 m15/paradox/", inv_pt: "/magic-modules.mse-include/pts/375 m15/inverted/", shifted_pt: "/magic-modules.mse-include/pts/375 m15/shifted/", alias: "/magic-modules.mse-include/extras/alias/", snow: "/magic-modules.mse-include/trims/snow/", nyx: "/magic-modules.mse-include/trims/nyx/", nyx_shifted: "/magic-modules.mse-include/trims/nyx/shifted/", draft: "/magic-modules.mse-include/trims/conspiracy/", crown: "/magic-modules.mse-include/crowns/375/", stamp: "/magic-modules.mse-include/stamps/backs/375 round/", ubstamp: "/magic-modules.mse-include/stamps/backs/375 ub/", identity: "/magic-modules.mse-include/indicators/" star: "/magic-modules.mse-include/trims/star/", arrow: "/magic-modules.mse-include/levels/arrows/1/" arrow2: "/magic-modules.mse-include/levels/arrows/2/" arrow3: "/magic-modules.mse-include/levels/arrows/3/" slide: "/magic-modules.mse-include/levels/slides/1/" slide2: "/magic-modules.mse-include/levels/slides/2/" slide3: "/magic-modules.mse-include/levels/slides/3/" slide_shifted: "/magic-modules.mse-include/levels/slides/1/shifted/" slide2_shifted: "/magic-modules.mse-include/levels/slides/2/shifted/" slide3_shifted: "/magic-modules.mse-include/levels/slides/3/shifted/" devoid: "devoid/" map: "/magic-modules.mse-include/cards/746 maps/" mappt: "/magic-modules.mse-include/pts/746 maps/" miracle: "/magic-modules.mse-include/trims/miracle/" miracle_shifted: "/magic-modules.mse-include/trims/miracle/shifted/" miracle_inv: "/magic-modules.mse-include/trims/miracle/inverted/" miracle_fnm: "/magic-modules.mse-include/trims/miracle/fnm/" miracle_beyond: "/magic-modules.mse-include/trims/miracle/beyond/" miracle_snow: "/magic-modules.mse-include/trims/miracle/snow/" beyond: "/magic-modules.mse-include/trims/beyond/" draft: "/magic-modules.mse-include/trims/draft/" node: "nodes/" node_shifted: "nodes/shifted/" puma: "puma/" puma_shift: "puma/shifted/" curtains: "curtains/" season: "season/" ] template_suffix := [ card: "card.jpg", pt: "pt.png", fnm_pt: "pt.png", inv_pt: "pt.png", shifted_pt: "pt.png", alias: "alias.png", snow: "snow.png", nyx: "nyx.png", nyx_shifted: "nyx.png", draft: "draft.png", crown: "crown.png", stamp: "stamp.png", ubstamp: "stamp.png", identity: "identity.png" star: "star.png", devoid: "card.png" map: "card.png" mappt: "pt.png" miracle: "miracle.png" miracle_shifted: "miracle.png" miracle_inv: "miracle.png" miracle_fnm: "miracle.png" miracle_snow: "miracle.png" miracle_beyond: "miracle.png" node: "node.png" node_shifted: "node.png" curtains: "card.png" beyond:"beyond.png" slide: "slide.png" slide2: "slide.png" slide3: "slide.png" slide_shifted: "slide.png" slide2_shifted: "slide.png" slide3_shifted: "slide.png" arrow: "arrow.png" arrow2: "arrow.png" arrow3: "arrow.png" season: "flag.png" puma: "puma.png" puma_shift: "puma.png" ] template := { if type_name(harder_script[type] or else nil) != type_name(nil) then harder_script[type](input, land:false) else template_prefix[type] + input + template_suffix[type] } land_template := { if type_name(harder_script[type] or else nil) != type_name(nil) then harder_script[type](input, land:true) else template_prefix[type] + input + (if landless(type) or input == "a" then "" else "l") + template_suffix[type] } # Use land templates for previews because they show more contrast hybrid_previews := "land,hybrid" landless := { landless_ar[input] or else false } landless_ar := [ nyx: true, nyx_shifted: true, star: true, node: true, miracle: true, miracle_shifted: true, miracle_snow: true, miracle_inv: true, miracle_fnm: true, miracle_beyond: true, alias: true, devoid: true, energy: true, season: true, conspiracy: true, arrow: true, arrow2: true, arrow3: true, crown: true, draft: true, curtains: true ] #### Map is a very different frame that usurps basically everything is_map := { chosen(styling.frames, choice:"map") } #### Devoid and Clear using floating frames but still use trims is_devoid := { chosen(styling.frames, choice:"devoid") } is_clear := { chosen(styling.frames, choice:"clear") } uses_clear_frame := { is_clear() or is_devoid() } #### Frameless/Borderless apply a mask to the normal frame is_borderless := { chosen(styling.frames, choice:"borderless art") } is_frameless := { chosen(styling.frames, choice:"frameless art") } uses_expanded_art := { is_borderless() or is_frameless() } #### except THBLand is a special kind of frameless is_thbland := { is_frameless() and not is_leveler() and remove_tags(card.text) == "\n" } is_dka := { chosen(styling.frames, choice:"fullart") and not is_map() and not uses_clear_frame() } #### PUMA and Mutate add things on top is_puma := { chosen(styling.frames, choice:"puma") and not is_map() and not uses_expanded_art() and not uses_clear_frame() and not is_dka() } is_mutate := { chosen(styling.frames, choice:"mutate") and not is_map() } mutate_image := { is_mutate() and not uses_expanded_art() and not is_dka() and not uses_clear_frame() and not clear_tops() } #### Alternate card bases is_fnm := { chosen(styling.frames, choice:"fnm promo") } is_inverted := { chosen(styling.frames, choice:"inverted") } is_planeshifted := { chosen(styling.frames, choice:"planeshifted") } is_snow := { chosen(styling.frames, choice:"snow") or (lang_setting("is_snow")(card.super_type) and chosen(styling.other_options, choice:"auto snow")) } #### Pieces is_season := { chosen(styling.frames, choice:"season") and not is_map() } is_scrolls := { chosen(styling.frames, choice:"conspiracy") } #### trims is_draft := { chosen(styling.frames, choice:"conspiracy") or chosen(styling.frames, choice:"draft matters") } is_beyond := { chosen(styling.frames, choice:"universes beyond") or (chosen(styling.other_options, choice:"auto ub") and (card.card_stamp == "universes beyond" or card.card_stamp == "flatstamped universes beyond")) } is_miracle := { chosen(styling.frames, choice:"miracle") } is_vehicle := { chosen(styling.frames, choice:"vehicle") or (chosen(styling.other_options, choice:"auto vehicles") and lang_setting("is_vehicle")(card.sub_type)) } is_nyx := { chosen(styling.frames, choice:"nyx") or (lang_setting("is_enchantment")(card.super_type) and set.auto_nyx) } is_leveler := { chosen(styling.frames, choice:"leveler") } is_custom_border := { chosen(styling.frames, choice:"custom border") and contains(styling.custom_border_source, match:".png") } is_leveler := {chosen(styling.frames, choice:"leveler")} is_legend := { chosen(styling.frames, choice:"legend") or (lang_setting("is_legendary")(card.super_type) and set.auto_legends) } is_curtains := {contains(card.notes, match:"!curtain")} is_pinned := {chosen(styling.other_options, choice:"pride pinlines")} clear_tops := {chosen(styling.other_options, choice:"clear tops") and not is_puma() and not uses_expanded_art()} mask_trims_for_devoid := {chosen(styling.other_options, choice:"avoid covering devoid")} base_card := { if is_map() then "map" else if is_devoid() then "devoid" else if is_clear() then "clear" else if is_thbland() then "energy" else if is_dka() then "fullart" else if is_fnm() then "fnm" else if is_inverted() then "inverted" else if is_planeshifted() then "shifted" else if is_beyond() then "beyond" else if is_snow() and not is_leveler() then "snow" else "standard" } #### trims curtain_plate := { color_background(type:"curtains", base_hybrid: card_hybrid) } ub_background := { color_background(type:"beyond", base_hybrid: card_hybrid, folder:template_prefix["ub"]) } draft_trim := { color_background(type:"draft", base_hybrid: card_hybrid, folder:template_prefix["draft"])} module_nyx := { type := "nyx" if has_png(set.alternate_nyx) then type := "alt_nyx" else if set.alternate_nyx == "star" then type := "star" else if is_planeshifted() then type := "nyx_shifted" color_background( type: type, blend_type: "nyx", base_hybrid:card_hybrid, folder:template_prefix["nyx"], ) } miracle_plate_base := { color_background(type:"miracle", base_hybrid:card_hybrid, folder:template_prefix["miracle"])} miracle_plate_snow := { color_background(type:"miracle_snow", base_hybrid:card_hybrid, folder:template_prefix["miracle"], blend_type:"miracle")} miracle_plate_shift := { color_background(type:"miracle_shifted", base_hybrid:card_hybrid, folder:template_prefix["miracle"], blend_type:"miracle")} miracle_plate_invert := { color_background(type:"miracle_inv", base_hybrid:card_hybrid, folder:template_prefix["miracle"], blend_type:"miracle")} miracle_plate_fnm := { color_background(type:"miracle_fnm", base_hybrid:card_hybrid, folder:template_prefix["miracle"], blend_type:"miracle")} miracle_plate_beyond := { color_background(type:"miracle_beyond", base_hybrid:card_hybrid, folder:template_prefix["miracle"], blend_type:"miracle")} miracle_plate := { type := if is_fnm() then "miracle_fnm" else if is_inverted() then "miracle_inv" else if is_planeshifted() then "miracle_shifted" else if is_beyond() then "miracle_beyond" else if base_card() == "snow" then "miracle_snow" else "miracle" if is_clear() or clear_tops() then template_prefix["miracle"] + "xmiracle.png" else ( img := color_background( type: type, blend_type: "miracle", base_hybrid: card_hybrid, folder: template_prefix["miracle"] ) if is_scrolls() then set_mask(image:img, mask: template_prefix["miracle"] + "mask_point.png") else img ) } custom_border_blend := { color_background(type:"custom_border", base_hybrid:card_hybrid) } #### other pieces node_base := { color_background(type:"node", base_hybrid:card_hybrid, folder:"nodes/") } node_shift := { color_background(type:"node_shifted", base_hybrid:card_hybrid, folder:"nodes/", blend_type:"node") } node_img := { if is_devoid() and not is_legend() then "nodes/devoidnode.png" else if is_planeshifted() then node_shift() else node_base() } puma_base := { color_background(type:"puma", base_hybrid:card_hybrid, folder:"puma/") } puma_shift := { color_background(type:"puma_shift", base_hybrid:card_hybrid, folder:"puma/", blend_type:"puma") } puma_img := { if is_planeshifted() then puma_shift() else puma_base() } mappt_background := { color_background(type:"mappt", base_hybrid:pt_hybrid, folder:"/magic-modules.mse-include/pts/746 maps/", blend_type:"pt") } season_background := { img := color_background(type:"season", base_hybrid:card_hybrid) if uses_expanded_art() then set_mask(image: img, mask: "season/full_mask.png") else img } arrow_img_1 := { color_background(type:"arrow", base_hybrid:card_hybrid, folder:"/magic-modules.mse-include/levels/arrows/") } arrow_img_2 := { color_background(type:"arrow2", base_hybrid:card_hybrid, folder:"/magic-modules.mse-include/levels/arrows/", blend_type:"arrow") } arrow_img_3 := { color_background(type:"arrow3", base_hybrid:card_hybrid, folder:"/magic-modules.mse-include/levels/arrows/", blend_type:"arrow") } level_img_1 := { color_background(type:"slide", base_hybrid:card_hybrid, folder:"/magic-modules.mse-include/levels/slides/") } level_img_2 := { color_background(type:"slide2", base_hybrid:card_hybrid, folder:"/magic-modules.mse-include/levels/slides/", blend_type:"slide") } level_img_3 := { color_background(type:"slide3", base_hybrid:card_hybrid, folder:"/magic-modules.mse-include/levels/slides/", blend_type:"slide") } level_img_1_s := { color_background(type:"slide_shifted", base_hybrid:card_hybrid, folder:"/magic-modules.mse-include/levels/slides/") } level_img_2_s := { color_background(type:"slide2_shifted", base_hybrid:card_hybrid, folder:"/magic-modules.mse-include/levels/slides/", blend_type:"slide") } level_img_3_s := { color_background(type:"slide3_shifted", base_hybrid:card_hybrid, folder:"/magic-modules.mse-include/levels/slides/", blend_type:"slide") } background_slide := { if is_planeshifted() then level_img_1_s() else level_img_1() } background_slide_2 := { if is_planeshifted() then level_img_2_s() else level_img_2() } background_slide_3 := { if is_planeshifted() then level_img_3_s() else level_img_3() } #### ptbox choose_ptbox := { if is_map() then mappt_background() else if is_vehicle() then template_prefix["pt"] + "vpt.png" else if uses_clear_frame() then template_prefix["pt"] + "cpt.png" else if is_fnm() then color_background(type:"fnm_pt", base_hybrid:pt_hybrid, folder:template_prefix["fnm_pt"], blend_type:"pt") else if is_inverted() then color_background(type:"inv_pt", base_hybrid:pt_hybrid, folder:template_prefix["inv_pt"], blend_type:"pt") else if is_planeshifted() then color_background(type:"shifted_pt", base_hybrid:pt_hybrid, folder:template_prefix["shifted_pt"], blend_type:"pt") else module_ptbox() } #### crown handling crowns_folder := { "/magic-modules.mse-include/crowns/375/" + (if is_planeshifted() then "shifted/" else "") } module_brawl_crown_template := { "/magic-modules.mse-include/crowns/375/brawl/" + (if input == "a" then "c" else input) + "crown.png" } crown_main := { if is_clear() or clear_tops() then template_prefix["crown"] + "xcrown.png" else module_crown() } module_crown_template_patch := { module_crown_template(override: if is_devoid() or uses_expanded_art() or is_puma() then "borderless" else if is_nyx() and chosen(styling.other_options, choice:"auto nyx crowns") then "nyx" else "") } crown_img := { img := crown_main() if card.transformation != "none" then img := set_mask(image:img, mask:"nodes/mask.png") if is_borderless() and is_frameless() and is_miracle() then img := set_mask(image:img, mask:"frame_masks/crown_miracle_borderless.png") if (is_devoid() or uses_expanded_art() or is_puma()) and is_skinned() then img := set_mask(image:img, mask:"frame_masks/bl_alias_crown_mask.png") img } card_background := { bc := base_card() if bc == "clear" then "/magic-modules.mse-include/cards/375 m15 simple/xcard.png" else color_background( type:"card", base_hybrid:card_hybrid, folder: if is_map() then "/magic-modules.mse-include/cards/746 maps/" else if is_thbland() then "energies/" else if is_dka() then "dka/" else template_prefix["card"] ) } mainframe_card_base := { [ map: "/magic-modules.mse-include/cards/746 maps/" + input + (if land then "l" else "") + "card.png", devoid: "devoid/" + input + "card.png", clear: "/magic-modules.mse-include/cards/375 m15 simple/xcard.png", energy: "energies/" + input + "card.png", fullart: "dka/" + input + (if land then "l" else "") + "card.jpg" fnm: "fnm/" + input + "card.png" inverted: "inverted/" + (if land and input == "a" then "cl" else if land then input + "l" else input) + "card.png" shifted: "/magic-modules.mse-include/cards/375 m15 simple/shifted/" + (if land and input == "a" then "cl" else if land then input + "l" else input) + "card.jpg" beyond: "/magic-modules.mse-include/cards/375 m15 simple/beyond/" + (if land and input == "a" then "cl" else if land then input + "l" else input) + "card.jpg" snow: "/magic-modules.mse-include/cards/375 m15 simple/snow/" + (if land and input == "a" then "cl" else if land then input + "l" else input) + "card.jpg" standard: "/magic-modules.mse-include/cards/375 m15 simple/" + (if land and input == "a" then "cl" else if land then input + "l" else input) + "card.jpg" ][base_card()] } # this goes at the very end harder_script := [ crown: module_crown_template_patch, card: mainframe_card_base custom_border: custom_border_image, alt_nyx: alt_nyx_template ] #### mask scripts border_mask := { if is_borderless() then "" else "border_masks/" + (if is_puma() then "puma_" else "") + (if is_legend() and not is_map() then "crown_border" else "border_mask") + (if card.border_color == rgb(200,200,200) then "_silver" else "") + ".png" } frame_mask_script := { if is_map() then "frame_masks/map_mask.png" else if is_clear() or is_devoid() then "frame_masks/clear_frame_mask.png" else if is_thbland() then "frame_masks/energy.png" else if uses_expanded_art() and is_dka() then "frame_masks/borderless_dka.png" else if is_borderless() and is_frameless() then "frame_masks/borderless_frameless" + (if is_miracle() then "_miracle" else "") + ".png" else if uses_expanded_art() then "frame_masks/borderless.png" else if clear_tops() then "frame_masks/clear_tops" + (if is_dka() then "_dka" else "") + "_mask.png" else if is_dka() then "frame_masks/dka.png" else "frame_masks/frame_mask" + (if is_puma() then "_puma" else "") + (if is_mutate() then "_mutate" else "") + ".png" } image_mask_script := { if is_map() then "" else if is_devoid() then "image_masks/devoid.png" else if is_clear() then "image_masks/clear.png" else if is_thbland() then "image_masks/energy.png" else if uses_expanded_art() then "image_masks/guide_borderless" + (if is_dka() then "_dka" else "") + ".png" else if mutate_image() then "image_masks/" + (if is_puma() then "puma_" else "") + "mutate.png" else "" } miracle_mask := { if is_borderless() and is_frameless() and not is_thbland() then "frame_masks/miracle_borderless" + (if is_legend() then "_crown" else "") + ".png" else if is_legend() and uses_expanded_art() then template_prefix["miracle"] + "mask_onlypoint.png" else if is_legend() and is_puma() then template_prefix["miracle"] + "mask_onlypoint.png" else if uses_expanded_art() or is_puma() then template_prefix["miracle"] + "mask_rays.png" else if is_devoid() and mask_trims_for_devoid() then template_prefix["miracle"] + "mask_backplate.png" else if is_legend() and is_clear() then template_prefix["miracle"] + "mask_fullcrown.png" else if is_legend() then template_prefix["miracle"] + "mask_pointcrown.png" else "" } main_trim_mask := { "/magic-modules.mse-include/trims/375x523 trim mask" + (if is_dka() then " fullart.png" else if is_puma() then " puma.png" else ".png") } twin_trim_mask := { "/magic-modules.mse-include/trims/375x523 doubletrim mask" + (if is_dka() then " fullart.png" else if is_puma() then " puma.png" else ".png") } devoid_mask := { if is_devoid() and mask_trims_for_devoid() then set_mask(image:input, mask:"devoid/trim_mask.png") else input } #### formatting shrink_type := { if styling.shrink_typeline_text != "" then to_number(styling.shrink_typeline_text) or else 0 else if length(remove_tags(card.type)) > 41 then 2 else if length(remove_tags(card.type)) > 38 then 1 else 0 } shrink_name := { if styling.shrink_name_text != "" then to_number(styling.shrink_name_text) or else 0 else 0 } chop_top := { if styling.chop_top == "" then 0 else if comma_count(styling.chop_top) == "," or comma_count(styling.chop_top) == ",," then to_number(split_text(match:",", styling.chop_top).0) or else 0 else to_number(styling.chop_top) or else 0 } chop_bot := { if comma_count(styling.chop_top) == ",," then to_number(split_text(match:",", styling.chop_top).1) or else 0 else if styling.chop_bottom == "" then 0 else to_number(styling.chop_bottom) or else 0 } top_of_textbox := { ( if is_map() then 340 else if is_dka() and is_mutate() then 395 else if is_dka() then 359 else if is_mutate() then 395 else 327 ) - (-chop_top()) + body_font_vertical() } bottom_of_textbox := { (if is_map() then 475 else 481) - chop_bot() } #### other settings use_flash_dot := { styling.use_flash_dot and (lang_setting("is_instant")(card.super_type) or contains(card.type, match:"Flash"))} is_promo := { styling.promo } is_unsorted := {styling.remove_from_autocount} is_skinned := {chosen(styling.other_options, choice:"godzilla style alias")} use_vorthos := {((not is_leveler() or lone_pt()) and card.pt != "") or chosen(styling.other_options, choice:"vorthos box")} is_tarot := {chosen(styling.other_options, choice:"text watermarks")} use_evobar := {chosen(styling.other_options, choice:"pokemon evobar")} center_map := {is_map() and (card.casting_cost == "" or chosen(styling.other_options, choice:"always center map names"))} #### bools shown_cr := { if set.automatic_copyright then set.copyright != "" else card.copyright != "" } white_text := {is_dka() or is_fnm() or is_inverted()} #### backend magic watermark_include := "/magic-modules.mse-include/watermarks" custom_watermark_a := { if styling.card_watermark == "" or not contains(styling.card_watermark, match:".png") then "/magic-modules.mse-include/watermarks/other/planeswalker.png" else "/magic-mainframe-extras.mse-include/" + styling.card_watermark } transfer_levels := {if is_mutate() then false else true} card_shape := {if is_leveler() then "leveler" else "normal"} rare_width := { cw := card_style.rarity.content_width cw := if cw > 44 then (if set.print_fix != "" then set.print_fix else 22) else if cw < 22 then 22 else cw if card_style.rarity.width == 0 then 0 else cw } special_text := {if is_leveler() then ((if card.level_0 != "" then "[" + level_label(0) + " " + card.level_0 + "] " else "") + card.level_1_text + (if card.pt != "" and not lone_pt() then " [" + card.pt + "]" else "") + "\n" + (if card.level_1 != "" then "[" + level_label(1) + " " + card.level_1 + "] " else "") + card.level_2_text + (if card.pt_2 != "" then " [" + card.pt_2 + "]" else "") + "\n" + (if card.level_2 != "" then "[" + level_label(2) + " " + card.level_2 + "] " else "") + card.level_3_text + (if card.pt_3 != "" then " [" + card.pt_3 + "]" else "") + (if card.level_4_text != "" then "\n" else "") + (if card.level_3 != "" then "[" + level_label(3) + " " + card.level_3 + "] " else "") + card.level_4_text + (if card.pt_7 != "" then " [" + card.pt_7 + "]" else "") ) else if is_mutate() then card.level_1_text + "\n" + card.rule_text else "" } #### d20 is_d20 := {styling.d20_dividers != "off" and not is_leveler()} is_all_break := {contains(styling.d20_dividers, match:"all breaks")} d20string := "^()?((()?[-0-9 ,+>\<]()?)+|[Ee]lse|[Oo]ther) ?()?[|]" d20_array := filter_text@(match:"(\n|"+d20string+")") +split_text@(match:d20string) number_of_rolls := {min(6, if is_all_break() then 1+length(filter_text(card.rule_text, match:"\n"))-(rolls_start(card.text)-invert_rolls()) else length(d20_array(input))-1)} rolls_start := { if styling.d20_dividers == "all breaks +3" then 4 else if styling.d20_dividers == "all breaks +2" then 3 else if styling.d20_dividers == "all breaks +1" then 2 else if styling.d20_dividers == "all breaks" then 0 else if is_d20() then length(d20_array(input).0) else 0 } d20_filter := replace@(match:"^([Ee]lse ?|[Oo]ther ?|(()?[-0-9 ,+>\<]()?)+)[|]", replace:"\\1|") top_of_para := { input := input + no_roll(card.text) input := max(input, 0) if card_style.text.layout.paragraphs[input].top or else -1 >= 0 then if invert_rolls() == 1 and input == rolls_start()-invert_rolls() then card_style.text.top else if input == 0 then card_style.text.top + card_style.text.layout.paragraphs[input].top else card_style.text.top + card_style.text.layout.paragraphs[input].top - 0.5*(card_style.text.layout.paragraphs[input].top-card_style.text.layout.paragraphs[input-1].bottom) else 0 } height_of_para := { input := input + no_roll(card.text) if card_style.text.layout.paragraphs[input].bottom or else 0 > 0 then if invert_rolls() == 1 and input == rolls_start() then card_style.text.layout.paragraphs[input-1].bottom else card_style.text.layout.paragraphs[input].bottom + 1.3*(card_style.text.layout.paragraphs[input].top-card_style.text.layout.paragraphs[input-1].bottom) - card_style.text.layout.paragraphs[input].top else 0 } no_roll := {if styling.d20_dividers == "all breaks" then 1 else if rolls_start(input) == 0 then 1 else 0} invert_rolls := {if chosen(styling.other_options, choice:"inverted d20") then 1 else 0} #### levelers box_leveler := { styling.level_containers == "pt boxes" } loy_leveler := { styling.level_containers == "loyalty boxes" } center_label := { loy_leveler() or level_label(input) == " " } aug_leveler := { box_leveler() and level_label(input) == " " } starting_loyalty := { chosen(styling.other_options, choice:"use starting loyalty") } arrow_left := { if box_leveler() then -3 else if loy_leveler() then 10 else 18 } arrow_width := { if box_leveler() then 84 else if loy_leveler() then 42 else 56 } arrow_height := { if aug_leveler(input) then 42 else if box_leveler() then 50 else if loy_leveler() then 40 else 40 } arrow_offset := { to_number(pull_comma_array(styling.arrow_or_bullet_offsets, cell:input, end: 0)) + (if box_leveler() then -5 else 0) + (if aug_leveler(input) then 4 else 0) } lone_pt := { chosen(styling.other_options, choice:"regular pt on levelers") and not starting_loyalty() } level_label := { if styling.level_label == "" then "level" else pull_comma_array(styling.level_label, end:false, cell:input, default:styling.level_label) } minimax := { if input > ceil then ceil else if input < floor then floor else input } lv_2_coordinate := { base := 52 + (if is_dka() then 10 else if is_mutate() then 12 else 0) base := base + to_number(pull_comma_array(styling.level_offset, cell:0)) minimax(base, ceil:152, floor:0) } lv_3_coordinate := { base := 101 + (if is_dka() then 10 else if is_mutate() then 12 else 0) base := base + to_number(pull_comma_array(styling.level_offset, cell:1)) minimax(base, ceil:152, floor:lv_2_coordinate()) } lv_4_coordinate := { base := 152 + (if is_dka() then 10 else if is_mutate() then 12 else 0) base := base + to_number(pull_comma_array(styling.level_offset, cell:2)) minimax(base, ceil:152, floor:lv_3_coordinate()) } lv_1_height := { lv_2_coordinate() } lv_2_height := {lv_3_coordinate() - lv_2_coordinate()} lv_3_height := {lv_4_coordinate()-lv_3_coordinate()} lv_4_height := {152-lv_4_coordinate()} l1_center := {327 + (if is_dka() then 16 else 0) + 0.5*lv_1_height()} l2_center := {327 + lv_2_coordinate() + 0.5*lv_2_height()} l3_center := {327 + lv_3_coordinate() + 0.5*lv_3_height()} l4_center := {327 + lv_4_coordinate() + 0.5*lv_4_height()} overlay1 := { if is_d20() then "/magic-modules.mse-include/levels/d20slice.png" else if is_clear() then "" else slice_crop( background_slide(), height: lv_2_height(), width: 314, distance:(152-lv_2_coordinate()) ) } overlay2 := { if is_d20() then "/magic-modules.mse-include/levels/d20slice.png" else if is_clear() then "" else slice_crop( background_slide_2(), height: lv_3_height(), width: 314, distance:lv_3_height() ) } overlay3 := { if is_d20() then "/magic-modules.mse-include/levels/d20slice.png" else if is_clear() then "" else slice_crop( background_slide_3(), height: lv_4_height(), width: 314, distance:lv_4_height() ) } mask_height := { if input == "one" then lv_1_height() else if input == "two" then lv_2_height() else if input == "three" then lv_3_height() else if input == "four" then lv_4_height() else 0 } ### Customize fonts ## redefine these since Maps make them annoying swap_fonts_name_default := [ name: {if is_map() then "Beleren Small Caps" else "Beleren Bold"}, size: {if is_map() then 14.8 else 16}, color: {if is_map() or uses_clear_frame() then "black" else if is_planeshifted() or is_fnm() or (is_inverted() and not is_dka()) then "white" else "black"}, vertical: {0}, italic: {""} ] swap_fonts_type_default := [ name: {"Beleren Bold"}, size: {if is_map() then 12 else 13}, color: {if is_map() or uses_clear_frame() then "black" else if is_dka() or is_puma() or is_planeshifted() or is_fnm() or is_inverted() then "white" else "black"}, vertical: {0}, italic: {""} ] swap_fonts_body_default := [ name: {"MPlantin"}, size: {if styling.font_cap != "" then to_number(styling.font_cap) else if is_mutate() then 12 else 14}, color: {if is_map() then "black" else if is_dka() or is_fnm() or is_inverted() then "white" else "black"}, vertical: {0}, italic: {"MPlantin-Italic"} ] swap_fonts_pt_default := [ name: {"Beleren Bold"}, size: {if is_map() then 14 else 16}, color: { if is_map() then "black" else if is_planeshifted() or is_fnm() or is_inverted() then "white" else if is_vehicle() then "white" else "black" }, vertical: {0}, italic: {""} ] loyalty_font_size := { swap_font_size( src:styling.custom_pt_font, font_size: 14 ) } loyalty_font_color := { swap_font_color( src: styling.custom_pt_font, font_color: "white" ) } tri_stamp := { if is_map() or is_clear() or is_thbland() then template_prefix["ubstamp"] + "_stamp.png" else if is_devoid() then template_prefix["ubstamp"] + "devoid.png" else module_ubstamp() } round_stamp := { if is_map() or is_clear() or is_thbland() then template_prefix["stamp"] + "_stamp.png" else if is_devoid() then template_prefix["stamp"] + "devoid.png" else module_stamp() } stamp_top := { sh := stamp_shape() if is_map() and sh == "triangle" then 472 else if is_clear() then (if sh == "triangle" then 472 else 473) else if is_thbland() then 472 else 471 } #### Module offsets information_secondary_shift_with_pt_1 := { if is_leveler() and not (lone_pt() or starting_loyalty()) then false else true } card_symbol_offset_top_1 := { if is_clear() then 1 else 0 } override_clear := replace@(match:"()?", replace: "")+ replace@(match:"()?", replace: "") override_filter := replace@(match:"\\[([^\\]]+)]", replace: "[\\1]") text_filter := text_filter + override_clear + d20_filter + {if chosen(styling.other_options, choice:"override-style text") then override_filter(input) else input} ############################################################## Set info fields set info style: symbol: variation: name: invertedcommon border radius: 0.10 fill type: solid fill color: rgb(255,255,255) border color: rgb(0,0,0) set info style: symbol: variation: name: special border radius: 0.10 fill type: solid fill color: rgb(155,155,155) border color: rgb(0,0,0) ############################################################## Extra style options styling field: type: text name: chop top description: Shrinks the textbox X pixels from the top OR shrinks "top,bottom," styling field: type: text name: chop bottom description: Shrinks the textbox X pixels from the bottom. styling field: type: text name: shrink name text description: Reduces the name text N points. styling field: type: text name: shrink typeline text description: Reduces the typeline text N points. styling field: type: multiple choice name: frames description: Use these frames. Higher level frames may override lower levels. choice: map choice: devoid choice: clear choice: borderless art choice: frameless art choice: fullart choice: puma choice: mutate choice: fnm promo choice: inverted choice: planeshifted choice: legend choice: season choice: conspiracy choice: draft matters choice: universes beyond choice: miracle choice: nyx choice: vehicle choice: leveler choice: snow choice: custom border styling field: type: text name: custom border source description: Use this file from magic-mainframe-extras as a custom vehicle-like frame. if colored, name images like "wborder.png" and put "-color-border.png" here. styling field: type: text name: popout image style description: The styling instructions for the popout image field, formatted as "left,top,width,height,". The text MUST end with a comma. styling field: type: multiple choice name: other options description: Other frame options choice: prerelease stamp choice: godzilla style alias choice: pokemon evobar choice: ancestral generic mana choice: override-style text choice: always center map names choice: avoid covering devoid choice: use starting loyalty choice: regular pt on levelers choice: auto vehicles choice: auto snow choice: auto nyx crowns choice: auto ub choice: text watermarks choice: clear tops choice: vorthos box choice: pride pinlines choice: inverted d20 initial: avoid covering devoid, auto vehicles, auto snow, auto nyx crowns, auto ub styling field: type: text name: custom symbol description: Uses a custom Lesson symbol from data/magic-mainframe-extras.mse-include script: verify_symbol_image(value) styling field: type: text name: card watermark description: Filename in magic-mainframe-extras to use for standalone card watermark script: verify_watermark_image(value) include file: /magic-modules.mse-include/crowns/styling_fields styling field: type: boolean name: remove from autocount description: Removes the automatic card number for specific cards, to allow for overcounted cards like in Planeswalker Decks. initial: no styling field: type: choice name: d20 dividers choice: d20 mode choice: off choice: all breaks choice: all breaks +1 choice: all breaks +2 choice: all breaks +3 description: Do dice levels normally, off, on all linebreaks, on all but the first linebreak, etc. styling field: type: choice name: level containers choice: arrows choice: pt boxes choice: loyalty boxes styling field: type: text name: level label description: Change the level label. default is "LEVEL". Secondary lables can be added after a comma, "1,2,3," styling field: type: text name: font cap description: Caps the font size of all text boxes to allow consistent sizes. Default is 14. styling field: type: text name: arrow or bullet offsets description: Formatted as 1,2,3,. Move the level arrow down X pixels. Use negative to move up. styling field: type: text name: level offset description: Formatted as 1,2,3,. Move the level boxes down X pixels. Use negative to move up. For 4 equal levels, use -14,-25,-38, include file: /magic-modules.mse-include/rarities/styling_fields include file: /magic-modules.mse-include/fonts/styling_fields styling field: type: choice name: hybrid name choice: grey choice: gold choice: hybrid description: Use a grey background for the name and type line on hybrid cards like real cards, or gold or hybrid instead. styling field: type: boolean name: colored multicolor land name description: Use a colored background for the name and type on multicolor land cards with a basic land type. This is done on real cards. styling field: type: boolean name: use guild mana symbols description: Use the Ravnica guild symbols instead of the official half/half circles for hybrid mana. initial: no styling field: type: 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: package choice name: text box mana symbols match: magic-mana-*.mse-symbol-font initial: magic-mana-small.mse-symbol-font styling field: type: package choice name: level mana symbols match: magic-mana-*.mse-symbol-font initial: magic-mana-large.mse-symbol-font styling field: type: choice name: center text description: When to center text (short text only means only on one-line cards with no flavor text) choice: always choice: short text only choice: never choice: right align initial: never styling field: type: boolean name: promo description: Is this card a promo card, with the "P" rarity? initial: no styling field: type: boolean name: use flash dot initial: no description: Automatically applies Tumbles flash dot to Instant/Flash typed cards. styling field: type: boolean name: inverted common symbol description: Should the common rarity symbol be inverted, like in Coldsnap? initial: no styling field: type: package choice name: overlay description: Should there be an overlay applied, such as foil? match: magic-overlay-*.mse-include required: false styling style: use guild mana symbols: choice images: yes: /magic-mana-small.mse-symbol-font/mana_guild_rg.png no: /magic-mana-small.mse-symbol-font/mana_rg.png tap symbol: render style: both choice images: modern: /magic-mana-large.mse-symbol-font/mana_t.png old: /magic-mana-large.mse-symbol-font/mana_t_old.png diagonal T: /magic-mana-large.mse-symbol-font/mana_t_older.png center text: render style: both choice images: always: /magic.mse-game/icons/center-all-text.png short text only: /magic.mse-game/icons/center-short-text.png never: /magic.mse-game/icons/center-no-text.png inverted common symbol: choice images: no: { symbol_variation(symbol: set.symbol, variation: "common") } yes: { symbol_variation(symbol: set.symbol, variation: "invertedcommon") } frames: render style: checklist direction: vertical other options: render style: checklist direction: vertical ############################################################## Card fields include file: /magic-modules.mse-include/information/card_fields include file: /magic-modules.mse-include/card-symbols/card_fields include file: /magic-modules.mse-include/separators/card_fields include file: /magic-modules.mse-include/corners/card_fields include file: /magic-modules.mse-include/stamps/card_fields include file: /magic-modules.mse-include/symbols/card_fields card style: ############################# Background stuff border color: left: 0 top : 0 width: {if is_borderless() then 0 else 375} height: 523 left width: 17 right width: 17 top width: 17 bottom width: 18 z index: 500 mask: { border_mask() } card color: left: 0 top: 0 width: 375 height: 523 z index: 200 render style: image popup style: in place image: { card_background() } mask: { frame_mask_script() } ############################# Name line name: left: script: if center_map() then 55 else if is_map() and card.transformation != "none" then 65 else if is_map() then 60 else if card.transformation != "none" and card.card_symbol != "none" then 78 else if card.transformation != "none" then 58 else if card.card_symbol != "none" then 50 else 32 top: script: ( if is_map() then 27 else if is_clear() or clear_tops() then 31 else 30 ) + name_font_vertical() right: { if center_map() then 320 else (if is_map() then 320 else 341) - card_style.casting_cost.content_width } height: { 23 - (0.5 * shrink_name()) } alignment: {if center_map() then "center bottom shrink-overflow" else "left bottom shrink-overflow" } padding bottom: 0 z index: 900 font: name: { name_font() } italic name: { name_font_italic() } size: { name_font_size() } color: { name_font_color() } shadow color: {if is_map() then rgba(0,0,0,0) else if is_planeshifted() or is_fnm() then rgb(0,0,0) else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 alias: left: {if is_skinned() then 45 else if is_map() then 15 else 33} top: {if is_map() then 58 else 53} width: {if is_skinned() then 285 else if use_evobar() then max(100, card_style.alias.content_width) else 0} height: 20 alignment: { (if is_skinned() then "center" else "") + "bottom shrink-overflow"} padding bottom: 0 z index: 900 font: name: {if use_evobar() then "Matrix" else "MPlantin-Italic"} size: {if use_evobar() then 10 else 9} style: {if use_evobar() then "italic" else "bold"} weight: {if use_evobar() then "italic" else "bold"} color: {if use_evobar() then "black" else "white"} casting cost: right: { if is_map() then 327 else 346} top: { if is_map() then 27 else 29} width: { max(30, card_style.casting_cost.content_width) + 5 } height: 23 alignment: middle right font: name: MPlantin size: { if is_map() then 14 else 15} symbol font: name: magic-mana-large size: { if is_map() then 14 else 15} alignment: middle right always symbol: true z index: 920 padding top: 0 ############################# Image image: left: script: if is_map() or uses_clear_frame() or uses_expanded_art() or is_puma() then 0 else if clear_tops() then 15 else if is_dka() then 23 else if mutate_image() then 22 else 29 top: script: if is_map() then 57 else if uses_clear_frame() or clear_tops() or uses_expanded_art() then 0 else 59 width: script: if is_map() or uses_clear_frame() or uses_expanded_art() or is_puma() then 375 else if clear_tops() then 345 else if is_dka() then 328 else if mutate_image() then 330 else 316 height: script: if is_map() then 241 else if uses_clear_frame() or uses_expanded_art() then 523 else if clear_tops() and is_dka() then 483 else if clear_tops() then 291 else if is_dka() then 423 else if mutate_image() then 334 else if is_puma() then 265 else 231 z index: 100 default: {default_image(card.card_color)} mask: { image_mask_script() } mainframe image: left: {if comma_count(styling.popout_image_style) == ",,,," then split_text(match:",", styling.popout_image_style).0 else 0} top: {if comma_count(styling.popout_image_style) == ",,,," then split_text(match:",", styling.popout_image_style).1 else 0} width: {if comma_count(styling.popout_image_style) == ",,,," then split_text(match:",", styling.popout_image_style).2 else 0} height: {if comma_count(styling.popout_image_style) == ",,,," then split_text(match:",", styling.popout_image_style).3 else 0} z index: 1010 ############################# Card type indicator: left: { if is_map() then 18 else 31 + (if is_season() then 12 else 0) + (if is_clear() then 2 else 0) + (if use_flash_dot() then 3 else 0) } top: { if is_map() or is_clear() then 298 else if is_thbland() then 449 else if is_dka() then 332 else 300 } width: 17 height: 17 z index: 800 render style: image visible: { has_identity() } image: { module_identity() } type: left: { if is_map() then 85 else 32 + (if is_season() then 12 else 0) + (if has_identity() then 20 else 0) + (if is_clear() then 4 else 0) + (if use_flash_dot() then 3 else 0) } top: { (if is_map() then 297.5 else if is_devoid() then 295 else if is_clear() then 294 else if is_thbland() then 444 else if is_dka() then 329 else 296) + shrink_type() + type_font_vertical() } width: { if is_map() then 205 else (if has_identity() then 290 else 310) - rare_width() - (if is_season() then 12 else 0) } height: { (if is_map() then 18 else 20) - shrink_type() } alignment: { if is_map() then "center top shrink-overflow" else "top shrink-overflow" } z index: 900 padding top: 2 font: name: { type_font() } italic name: { type_font_italic() } size: { type_font_size() } color: { type_font_color() } shadow color: {if is_map() then rgba(0,0,0,0) else if is_dka() or is_puma() or is_planeshifted() or is_fnm() then "black" else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 separator color: red rarity: right: { (if is_map() then 199 else if is_scrolls() then 334 else 344) + rarity_user_offset_left(styling.rarity_offsets or else "") } top: { (if is_map() then 53 else if is_devoid() then 296 else if is_clear() then 295 else if is_thbland() then 445 else if is_dka() then 329 else 297) + rarity_user_offset_top(styling.rarity_offsets or else "") } width: { if set.shorten_types_for_rarity then 44 + rarity_user_offset_width(styling.rarity_offsets or else "") else 0 } height: {22 + rarity_user_offset_height(styling.rarity_offsets or else "")} z index: 950 render style: image alignment: middle right include file: /magic-modules.mse-include/rarities/choice_images ############################# Text boxs text: left: { if (card.level_0 != "" or card.level_1 != "" or card.level_2 != "") then 75 else if is_map() then 40 else 29 } top: { top_of_textbox() } bottom: { bottom_of_textbox() } width: { if is_leveler() then 0 else (if is_map() then 287 else 314) + (if (card.level_0 != "" or card.level_1 != "" or card.level_2 != "") then -46 else 0) } font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } scale down to: 6 color: { body_font_color() } shadow color: {if is_map() then rgba(0,0,0,0) else if is_dka() or is_fnm() then "black" else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 symbol font: name: { styling.text_box_mana_symbols } size: {body_font_size()} scale down to: 6 alignment: script: if (styling.center_text == "short text only" and not contains(match:"\n", card.rule_text) and card.flavor_text == "" and card_style.text.content_lines <= 2) or styling.center_text == "always" then "middle center" else if styling.center_text == "right align" then "middle right" else "middle left" z index: 900 padding left: 6 padding right: 4 line height hard: {if is_modal(card.rule_text) then 0.9 else 1.2 } line height line: 1.5 line height soft: 0.9 line height hard max: {if is_modal(card.rule_text) then 1.0 else 1.3 } line height line max: 1.6 ############################# leveler level 1 text: left: { if is_leveler() and card.level_0 != "" then (if loy_leveler() then 57 else if box_leveler() then 78 else 75) else if is_map() then 40 else 29} top: { if is_dka() and is_mutate() then 359 else if is_mutate() then 329 else top_of_textbox() } right: { if is_leveler() then (if lone_pt() or card.pt == "" then 342 else 277) else if is_mutate() then 342 else if is_map() then 40 else 29} bottom: { if is_mutate() then 392 else if is_leveler() then (327+lv_1_height()) else bottom_of_textbox() } font: font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } scale down to: 6 color: { body_font_color() } shadow color: {if is_map() then rgba(0,0,0,0) else if is_dka() or is_fnm() then "black" else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 symbol font: name: { styling.text_box_mana_symbols } size: {body_font_size()} scale down to: 6 alignment: script: if (styling.center_text == "short text only" and card_style.level_1_text.content_lines <= 2) or styling.center_text == "always" then "middle center" else "middle left" z index: 900 padding left: 6 padding right: 4 line height hard: {if is_modal(card.level_1_text) then 0.9 else 1.2 } line height line: 1.5 line height soft: 0.9 line height hard max: {if is_modal(card.level_1_text) then 1.0 else 1.3 } line height line max: 1.6 level 2 text: left: { if is_leveler() then (if card.level_1 != "" then (if loy_leveler() then 57 else if box_leveler() then 78 else 75) else if is_map() then 40 else 29) else 0} top: { if is_leveler() then (329 + lv_2_coordinate()) else 0 } right: { if is_leveler() then (if card.pt_2 != "" then 277 else 342) else 0 } bottom: { if is_leveler() then (329 + lv_2_coordinate()) + lv_2_height()-2 else 0 } font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } scale down to: 6 color: { body_font_color() } shadow color: {if is_map() then rgba(0,0,0,0) else if is_dka() or is_fnm() then "black" else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 symbol font: name: { styling.text_box_mana_symbols } size: {body_font_size()} scale down to: 6 alignment: script: if (styling.center_text == "short text only" and card_style.level_2_text.content_lines <= 2) or styling.center_text == "always" then "middle center" else "middle left" z index: 900 padding left: 6 padding right: 4 line height hard: {if is_modal(card.level_2_text) then 0.9 else 1.2 } line height line: 1.5 line height soft: 0.9 line height hard max: {if is_modal(card.level_2_text) then 1.0 else 1.3 } line height line max: 1.6 level 3 text: left: {if card.level_2 != "" then (if loy_leveler() then 57 else if box_leveler() then 78 else 75) else if is_map() then 40 else 29} top: {331 + lv_3_coordinate()} right: {if card.pt_3 != "" then 277 else 342} height: {if not is_leveler()then 0 else lv_3_height()-2} font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } scale down to: 6 color: { body_font_color() } shadow color: {if is_map() then rgba(0,0,0,0) else if is_dka() or is_fnm() then "black" else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 symbol font: name: { styling.text_box_mana_symbols } size: {body_font_size()} scale down to: 6 alignment: script: if (styling.center_text == "short text only" and card_style.level_3_text.content_lines <= 2) or styling.center_text == "always" then "middle center" else "middle left" z index: 900 padding left: 6 padding right: 4 line height hard: {if is_modal(card.level_3_text) then 0.9 else 1.2 } line height line: 1.5 line height soft: 0.9 line height hard max: {if is_modal(card.level_3_text) then 1.0 else 1.3 } line height line max: 1.6 level 4 text: left: {if card.level_3 != "" then (if loy_leveler() then 57 else if box_leveler() then 78 else 75) else if is_map() then 40 else 29} top: {331 + lv_4_coordinate()} right: {if card.pt_7 != "" then 277 else 342} height: {if not is_leveler() then 0 else lv_4_height()-2} font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } scale down to: 6 color: { body_font_color() } shadow color: {if is_map() then rgba(0,0,0,0) else if is_dka() or is_fnm() then "black" else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 symbol font: name: { styling.text_box_mana_symbols } size: {body_font_size()} scale down to: 6 alignment: script: if (styling.center_text == "short text only" and card_style.level_4_text.content_lines <= 2) or styling.center_text == "always" then "middle center" else "middle left" z index: 900 padding left: 6 padding right: 4 line height hard: {if is_modal(card.level_4_text) then 0.9 else 1.2 } line height line: 1.5 line height soft: 0.9 line height hard max: {if is_modal(card.level_4_text) then 1.0 else 1.3 } line height line max: 1.6 watermark: left: { if is_map() then 40 else 19 } top: { if is_map() then 330 else if is_dka() then 359 else 330 } width: { if is_tarot() then 0 else if is_map() then 287 else 334 } height: { if is_map() then 154 else if is_dka() then 120 else 152 } z index: 720 render style: image popup style: in place alignment: middle center include file: /magic.mse-game/watermarks/menu_choice_images image: { watermark_image_1() } ############################# Levels level 0: z index: 910 left: {if box_leveler() then 8 else if loy_leveler() then 14 else 21} top: {l1_center() - (if aug_leveler(0) then 4 else 2) - (if center_label(0) then 6 else 0) + arrow_offset(0)} width: {if is_leveler() or card.level_0 != "" then (34 + (if box_leveler() then 30 else 0)) else 0} height: 22 alignment: center middle shrink-overflow font: name: Beleren Bold size: {if loy_leveler() then 11 else 12 + if center_label(0) then 2 else 0} weight: bold color: {if loy_leveler() then "white" else "black"} shadow color: { if loy_leveler() then rgba(0,0,0,0) else "white"} shadow blur: 2 symbol font: name: { styling.level_mana_symbols } size: {12 + if center_label(0) then 0.5 else 0} level 1: z index: 910 left: {if box_leveler() then 8 else if loy_leveler() then 14 else 21} top: {l2_center() - (if aug_leveler(1) then 4 else 2) - (if center_label(1) then 6 else 0) + arrow_offset(1)} height: 22 width: {if is_leveler() or card.level_1 != "" then (34 + (if box_leveler() then 30 else 0)) else 0} alignment: center middle shrink-overflow font: name: Beleren Bold size: {if loy_leveler() then 11 else 12 + if center_label(0) then 2 else 0} weight: bold color: {if loy_leveler() then "white" else "black"} shadow color: { if loy_leveler() then rgba(0,0,0,0) else "white"} shadow blur: 2 symbol font: name: { styling.level_mana_symbols } size: {12 + if center_label(0) then 0.5 else 0} level 2: z index: 910 left: {if box_leveler() then 8 else if loy_leveler() then 14 else 21} top: {l3_center() - (if aug_leveler(2) then 4 else 2) - (if center_label(2) then 6 else 0) + arrow_offset(2)} width: {if is_leveler() or card.level_2 != "" then (34 + (if box_leveler() then 30 else 0)) else 0} height: 22 alignment: center middle shrink-overflow font: name: Beleren Bold size: {if loy_leveler() then 11 else 12 + if center_label(0) then 2 else 0} weight: bold color: {if loy_leveler() then "white" else "black"} shadow color: { if loy_leveler() then rgba(0,0,0,0) else "white"} shadow blur: 2 symbol font: name: { styling.level_mana_symbols } size: {12 + if center_label(0) then 0.5 else 0} level 3: z index: 910 left: {if box_leveler() then 8 else if loy_leveler() then 14 else 21} top: {l4_center() - (if aug_leveler(3) then 4 else 2) - (if center_label(3) then 6 else 0) + arrow_offset(3)} width: {if is_leveler() or card.level_2 != "" then (34 + (if box_leveler() then 30 else 0)) else 0} height: { if card_style.level_4_text.height < 10 and card.level_3 == "" then 0 else 22} alignment: center middle shrink-overflow font: name: Beleren Bold size: {if loy_leveler() then 11 else 12 + if center_label(0) then 2 else 0} weight: bold color: {if loy_leveler() then "white" else "black"} shadow color: { if loy_leveler() then rgba(0,0,0,0) else "white"} shadow blur: 2 symbol font: name: { styling.level_mana_symbols } size: {12 + if center_label(0) then 0.5 else 0} ############################# PT pt: z index: 900 left: {if is_leveler() and not lone_pt() then 291 else 286} top: { (if is_leveler() and not lone_pt() then (l1_center() - 14) else if is_map() then 467 else 469)+(pt_font_vertical())} width: {if starting_loyalty() and not is_leveler() then 0 else 60} height: 28 alignment: center middle shrink-overflow font: name: {pt_font()} italic name: {pt_font_italic()} size: {pt_font_size()} color: {pt_font_color()} separator color: red shadow color: {if is_map() then rgba(0,0,0,0) else if is_planeshifted() or is_fnm() then rgb(0,0,0) else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 pt 2: z index: 900 left: 291 top: {(l2_center() - 12)+(if is_map() then -1 else 0)+(pt_font_vertical())} width: {if is_leveler() and not lone_pt() or card.pt_2 != "" then 60 else 0} height: 28 alignment: center middle shrink-overflow font: name: {pt_font()} italic name: {pt_font_italic()} size: {pt_font_size()} color: {pt_font_color()} separator color: red shadow color: {if is_map() then rgba(0,0,0,0) else if is_planeshifted() or is_fnm() then rgb(0,0,0) else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 pt 3: z index: 900 left: 291 top: {(l3_center() - 12)+(if is_map() then -1 else 0)+(pt_font_vertical())} width: {if is_leveler() and not lone_pt() or card.pt_3 != "" then 60 else 0} height: 28 alignment: center middle shrink-overflow font: name: {pt_font()} italic name: {pt_font_italic()} size: {pt_font_size()} color: {pt_font_color()} separator color: red shadow color: {if is_map() then rgba(0,0,0,0) else if is_planeshifted() or is_fnm() then rgb(0,0,0) else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 pt 7: z index: 900 left: 291 top: {(l4_center() - 12)+(if is_map() then -1 else 0)+(pt_font_vertical())} width: {if is_leveler() and not lone_pt() or card.pt_7 != "" then 60 else 0} height: {if card_style.level_4_text.height < 10 and card.pt_7 == "" then 0 else 28} alignment: center middle shrink-overflow font: name: {pt_font()} italic name: {pt_font_italic()} size: {pt_font_size()} color: {pt_font_color()} separator color: red shadow color: {if is_map() then rgba(0,0,0,0) else if is_planeshifted() or is_fnm() then rgb(0,0,0) else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 loyalty: z index: 900 left: 326 top: {468+(pt_font_vertical())} width: {if starting_loyalty() then 13.16 else 0} height: 34.63 alignment: center middle font: name: {pt_font()} italic name: {pt_font_italic()} size: {loyalty_font_size()} color: {loyalty_font_color()} ############################################################## Extra card fields extra card field: type: choice name: pt box script: card.card_color editable: false save value: false extra card field: type: choice name: pt box 2 script: card.card_color editable: false save value: false extra card field: type: choice name: pt box 3 script: card.card_color editable: false save value: false extra card field: type: choice name: pt box 4 script: card.card_color editable: false save value: false extra card field: type: choice name: loyalty box editable: false choice: loyalty save value: false extra card field: type: choice name: foil layer choice: foil save value: false editable: false extra card field: type: text name: promo label save value: true description: The golden promo label. extra card field: type: text name: tarot watermark extra card field: type: choice name: clear top frame script: card.card_color save value: false editable: false extra card field: type: choice name: evobar choice: evo save value: false editable: false extra card field: type: choice name: evobar tip choice: evo save value: false editable: false extra card field: type: choice name: evobar start choice: evo save value: false editable: false extra card field: type: choice name: alias bar script: card.card_color save value: false editable: false extra card field: type: choice name: scrolls script: card.card_color editable: false save value: false show statistics: false extra card field: type: choice name: curtain script: card.card_color editable: false save value: false show statistics: false extra card field: type: choice name: miracle overlay choice: miracle save value: false editable: false script: card.card_color extra card field: type: choice name: nyx overlay choice: nyx save value: false editable: false script: card.card_color extra card field: type: choice name: snow overlay choice: snow save value: false editable: false script: card.card_color extra card field: type: choice name: beyond overlay choice: beyond save value: false editable: false script: card.card_color extra card field: type: choice name: custom overlay script: card.card_color save value: false editable: false extra card field: type: choice name: draft overlay script: card.card_color save value: false editable: false extra card field: type: choice name: vehicle overlay choice: car door save value: false editable: false # Add the word "LEVEL" to the top arrow. extra card field: type: text name: lvl label 0 editable: false save value: false script: if loy_leveler() then ":" else level_label(0) # Add the word "LEVEL" to the second arrow. extra card field: type: text name: lvl label 1 editable: false save value: false script: if loy_leveler() then ":" else level_label(1) # Add the word "LEVEL" to the third arrow. extra card field: type: text name: lvl label 2 editable: false save value: false script: if loy_leveler() then ":" else level_label(2) # Add the word "LEVEL" to the fourth arrow. extra card field: type: text name: lvl label 3 editable: false save value: false script: if loy_leveler() then ":" else level_label(2) extra card field: type: choice name: level 2 overlay script: card.card_color choice: mask editable: false show statistics: false extra card field: type: choice name: level 3 overlay script: card.card_color choice: mask editable: false show statistics: false extra card field: type: choice name: level 4 overlay script: card.card_color choice: mask editable: false show statistics: false extra card field: type: choice name: arrow 1 script: card.card_color editable: false save value: false show statistics: false extra card field: type: choice name: arrow 2 script: card.card_color editable: false save value: false show statistics: false extra card field: type: choice name: arrow 3 script: card.card_color editable: false save value: false show statistics: false extra card field: type: choice name: arrow 4 script: card.card_color editable: false save value: false show statistics: false extra card field: type: text name: ascend script: text_filter(value, card_name:card.name, margin_code:"unknown") extra card field: type: choice name: season flag script: card.card_color save value: false editable: false extra card field: type: choice name: mutbar choice: bar editable: false save value: false show statistics: false extra card field: type: color name: silver patch script: rgb(0,0,0) editable: false save value: false extra card field: type: choice name: node script: card.card_color editable: false save value: false show statistics: false extra card field: type: choice name: crown script: card.card_color save value: false editable: false extra card field: type: multiple choice name: pride pin include file: /magic-pride.mse-include/pins save value: true editable: true extra card field: type: text name: vorthos box save value: true editable: true description: Where they put mtgstory.com on story spotlights. extra card field: type: choice name: flash indicator choice: dot save value: false editable: false extra card field: type: choice name: stamp backing script: card.card_color save value: false editable: false extra card style: pt box: left: { if is_leveler() and not lone_pt() then 278 else if is_map() then 270 else 273 } top: { if is_leveler() and not lone_pt() then (l1_center() - (if is_map() then 26 else 18)) else if is_map() then 453 else 466} width: { if starting_loyalty() and not is_leveler() then 0 else if is_map() then 90 else 81} height: { if is_map() then 54 else 42} z index: 840 visible: { card.pt != "" } render style: image image: { choose_ptbox() } pt box 2: left: 278 top: { l2_center() - (if is_map() then 26 else 15)} width: { if (is_leveler() and not lone_pt()) or card.pt_2 != "" then (if is_map() then 90 else 81) else 0} height: { if (is_leveler() and not lone_pt()) or card.pt_2 != "" then (if is_map() then 54 else 42) else 0} z index: 840 visible: { card.pt_2 != "" } render style: image image: {if is_map() then mappt_background() else combine_blend(image1: choose_ptbox(), image2: template_prefix["pt"]+"ptbox_multiply_1.png", combine: "multiply")} pt box 3: left: 278 top: { l3_center() - (if is_map() then 26 else 15)} width: { if (is_leveler() and not lone_pt()) or card.pt_3 != "" then (if is_map() then 90 else 81) else 0} height: { if (is_leveler() and not lone_pt()) or card.pt_3 != "" then (if is_map() then 54 else 42) else 0} z index: 840 visible: { card.pt_3 != "" } render style: image image: {if is_map() then mappt_background() else combine_blend(image1: choose_ptbox(), image2: template_prefix["pt"]+"ptbox_multiply_2.png", combine: "multiply")} pt box 4: left: 278 top: { l4_center() - (if is_map() then 26 else 15)} width: { if (is_leveler() and not lone_pt()) or card.pt_3 != "" then (if is_map() then 90 else 81) else 0} height: { if (is_leveler() and not lone_pt()) or card.pt_3 != "" then (if is_map() then 54 else 42) else 0} z index: 840 visible: { card.pt_7 != "" } render style: image image: {if is_map() then mappt_background() else combine_blend(image1: choose_ptbox(), image2: template_prefix["pt"]+"ptbox_multiply_3.png", combine: "multiply")} loyalty box: right: 362 top: 466 width: 60 height: 38 z index: 830 render style: image visible: { starting_loyalty() and card.loyalty != "" } choice images: loyalty: loyalty.png foil layer: left: 0 top : 0 width: 375 height: 523 z index: 1050 render style: image image: {if styling.overlay == "" then nil else styling.overlay + "/overlay.png"} mask: { "foil_mask" + (if card.pt != "" then "_pt") + (if is_stamped() then "_rare") + ".png" } promo label: left: 40 top: { if is_dka() then 295 else 262 } width: {if chosen(styling.other_options, choice:"prerelease stamp") then 295 else 0} height: 29 alignment: middle right z index: 1030 font: name: ModMatrix size: 14 color: rgb(223,169,41) tarot watermark: left: { if is_map() then 40 else 19 } top: { if is_dka() then 359 else 330 } width: { if not is_tarot() then 0 else if is_map() then 287 else 334 } height: { if is_map() then 154 else if is_dka() then 120 else 152 } z index: 720 alignment: middle center font: name: MPlantin size: 90 color: {rgba(0,0,0,40)} clear top frame: left: 0 top: 0 width: {if clear_tops() then 375 else 0} height: 523 z index: 199 render style: image popup style: in place image: /magic-modules.mse-include/cards/375 m15 simple/xcard.png mask: { if is_dka() then "frame_masks/clear_tops_dka_mask2.png" } evobar: left: {if is_map() then 15 else 27} top: {if is_map() then 62 else 57} width: {card_style.alias.content_width} height: 27 z index: 870 render style: image image: /magic-modules.mse-include/extras/evobar/evobar.png visible: {use_evobar()} evobar tip: left: {(if is_map() then 14.6 else 26.6) + card_style.alias.content_width} top: {if is_map() then 62 else 57} width: 36 height: 27 z index: 870 render style: image image: /magic-modules.mse-include/extras/evobar/evobar_tip.png visible: {use_evobar()} alias bar: left: 38 top: { if uses_clear_frame() or clear_tops() then 59 else 57} width: 298 height: 21 z index: 880 render style: image image: {if is_devoid() and not is_legend() then template_prefix["alias"]+"devoidalias.png" else if is_clear() or clear_tops() then template_prefix["alias"]+"xalias.png" else module_alias()} visible: {is_skinned() and not use_evobar()} mask: { if is_legend() and (is_devoid() or uses_expanded_art() or is_puma()) then "frame_masks/bl_alias_mask.png" else "" } scrolls: left: 0 top: 0 width: 375 height: 523 render style: image image: {if is_puma() then puma_img() else "scrolls" + (if is_dka() then "_full" else "") + (if is_miracle() and not is_legend() then "_miracle" else "") + ".png"} z index: 600 visible: {not is_map() and (is_scrolls() or is_puma())} curtain: left: 0 top: 0 width: 375 height: 523 render style: image image: {curtain_plate()} z index: 610 visible: {not is_map() and not uses_expanded_art() and is_curtains()} mask: {if is_legend() then "curtains/legend_mask.png"} miracle overlay: left: 0 top: { if is_devoid() and is_legend() then 1 else 0 } width: 375 height: 523 render style: image image: { miracle_plate() } z index: 810 visible: {not is_map() and is_miracle()} mask: { miracle_mask() } nyx overlay: left: 0 top: 0 width: 375 height: 523 render style: image image: { devoid_mask(module_nyx()) } z index: 330 visible: { not is_map() and not uses_expanded_art() and is_nyx() } mask: { if is_snow() or is_custom_border() or is_draft() or is_vehicle() then twin_trim_mask() else main_trim_mask() } snow overlay: left: 0 top: 0 width: 375 height: 523 render style: image image: { devoid_mask(module_snow()) } z index: 320 visible: { not is_map() and not uses_expanded_art() and is_snow() and base_card() != "snow" } mask: { if is_custom_border() or is_draft() or is_vehicle() then twin_trim_mask() else main_trim_mask() } custom overlay: left: 0 top: 0 width: 375 height: 523 render style: image image: { devoid_mask(custom_border_blend()) } z index: 317 visible: { not is_map() and not uses_expanded_art() and is_custom_border() } mask: { if is_vehicle() or is_draft() then twin_trim_mask() else main_trim_mask() } draft overlay: left: 0 top: 0 width: 375 height: 523 z index: 315 render style: image image: { devoid_mask(draft_trim()) } visible: {not is_map() and not uses_expanded_art() and is_draft()} mask: { if is_vehicle() then twin_trim_mask() else main_trim_mask() } vehicle overlay: left: 0 top: 0 width: 375 height: 523 render style: image image: {if is_beyond() then devoid_mask("/magic-modules.mse-include/trims/beyond/vbeyond.png") else devoid_mask("/magic-modules.mse-include/trims/vehicle.png")} z index: 310 visible: { not is_map() and not uses_expanded_art() and is_vehicle() } mask: { main_trim_mask() } lvl label 0: left: {if box_leveler() then 8 else if loy_leveler() then 48 else 21} top: {l1_center() - (if loy_leveler() then 2 else 10) + arrow_offset(0)} width: {if is_leveler() or card.level_0 != "" then (if loy_leveler() then 10 else 34 + (if box_leveler() then 30 else 0)) else 0} height: {if loy_leveler() then 10 else if center_label(0) then 0 else 10} z index: 860 alignment: middle center font: name: {if loy_leveler() then "MPlantin" else "Beleren Small Caps"} size: {if loy_leveler() then 15 else if length(level_label(0)) < 8 or box_leveler() then 7 else 6} color: black weight: {if loy_leveler() then "" else "bold"} visible: {card.level_0 != ""} lvl label 1: left: {if box_leveler() then 8 else if loy_leveler() then 48 else 21} top: {l2_center() - (if loy_leveler() then 2 else 10) + arrow_offset(1)} width: {if is_leveler() or card.level_1 != "" then (if loy_leveler() then 10 else 34 + (if box_leveler() then 30 else 0)) else 0} height: {if loy_leveler() then 10 else if center_label(1) then 0 else 10} z index: 860 alignment: middle center font: name: {if loy_leveler() then "MPlantin" else "Beleren Small Caps"} size: {if loy_leveler() then 15 else if length(level_label(1)) < 8 or box_leveler() then 7 else 6} color: black weight: {if loy_leveler() then "" else "bold"} visible: {card.level_1 != ""} lvl label 2: left: {if box_leveler() then 8 else if loy_leveler() then 48 else 21} top: {l3_center() - (if loy_leveler() then 2 else 10) + arrow_offset(2)} width: {if is_leveler() or card.level_2 != "" then (if loy_leveler() then 10 else 34 + (if box_leveler() then 30 else 0)) else 0} height: {if loy_leveler() then 10 else if center_label(2) then 0 else 10} z index: 860 alignment: middle center font: name: {if loy_leveler() then "MPlantin" else "Beleren Small Caps"} size: {if loy_leveler() then 15 else if length(level_label(2)) < 8 or box_leveler() then 7 else 6} color: black weight: {if loy_leveler() then "" else "bold"} visible: {card.level_2 != ""} lvl label 3: left: {if box_leveler() then 8 else if loy_leveler() then 48 else 21} top: {l4_center() - (if loy_leveler() then 2 else 10) + arrow_offset(3)} width: {if is_leveler() or card.level_3 != "" then (if loy_leveler() then 10 else 34 + (if box_leveler() then 30 else 0)) else 0} height: {if loy_leveler() then 10 else if center_label(3) then 0 else 10} z index: 860 alignment: middle center font: name: {if loy_leveler() then "MPlantin" else "Beleren Small Caps"} size: {if loy_leveler() then 15 else if length(level_label(2)) < 8 or box_leveler() then 7 else 6} color: black weight: {if loy_leveler() then "" else "bold"} visible: {card.level_3 != ""} level 2 overlay: left: 29 top: { if is_d20() then top_of_para(rolls_start(card.text)-invert_rolls()) else 329 + lv_2_coordinate()} height: { if is_d20() then height_of_para(rolls_start(card.text)) else lv_2_height()} width: 314 z index: 640 render style: image image: {overlay1()} visible: {(is_d20() and number_of_rolls(card.text) > 0) or (is_leveler() and not is_dka() and not is_map() and not is_fnm() and not is_inverted())} level 3 overlay: left: 29 top: { if is_d20() then top_of_para(rolls_start(card.text)+2-invert_rolls()) else 329 + lv_3_coordinate()} height: { if is_d20() then height_of_para(rolls_start(card.text)+2-invert_rolls()) else lv_3_height()} width: 314 z index: 640 render style: image image: {overlay2()} visible: {(is_d20() and number_of_rolls(card.text)-no_roll(card.text) > 2) or (is_leveler() and not is_dka() and not is_map() and not is_fnm() and not is_inverted())} level 4 overlay: left: 29 top: { if is_d20() then top_of_para(rolls_start(card.text)+4-invert_rolls()) else 329 + lv_4_coordinate()} height: { if is_d20() then height_of_para(rolls_start(card.text)+4-invert_rolls()) else lv_4_height()} width: 314 z index: 640 render style: image image: {overlay3()} visible: {(is_d20() and number_of_rolls(card.text)-no_roll(card.text) > 4) or (is_leveler() and not is_dka() and not is_map() and not is_fnm() and not is_inverted())} arrow 1: z index: 840 left: {arrow_left()} top: {l1_center() - 16 + arrow_offset(0)} width: {if card.level_0 != "" then arrow_width() else 0} height: {arrow_height(0)} render style: image image: {if loy_leveler() then loyalty_image(card.level_0) else if box_leveler() then choose_ptbox() else arrow_img_1()} arrow 2: z index: 840 left: {arrow_left()} top: {l2_center() - 16 + arrow_offset(1)} width: {if card.level_1 != "" then arrow_width() else 0} height: {arrow_height(1)} render style: image image: {if loy_leveler() then loyalty_image(card.level_1) else if box_leveler() then choose_ptbox() else arrow_img_1()} arrow 3: z index: 840 left: {arrow_left()} top: {l3_center() - 16 + arrow_offset(2)} width: {if card.level_2 != "" then arrow_width() else 0} height: {arrow_height(2)} render style: image image: {if loy_leveler() then loyalty_image(card.level_2) else if box_leveler() then choose_ptbox() else arrow_img_2()} arrow 4: z index: 840 left: {arrow_left()} top: {l4_center() - 16 + arrow_offset(3)} width: {if card.level_3 != "" then arrow_width() else 0} height: {arrow_height(3)} render style: image image: {if loy_leveler() then loyalty_image(card.level_3) else if box_leveler() then choose_ptbox() else arrow_img_3()} ascend: left: 37 top: 59 width: {if is_season() then 300 else 0} height: 20 angle: 270 z index: 900 alignment: justify-all force always symbol: true font: name: MPlantin italic name: MPlantin-Italic size: {if styling.font_cap != "" then to_number(styling.font_cap) else 14} scale down to: 6 color: black symbol font: name: { styling.text_box_mana_symbols } size: {if styling.font_cap != "" then to_number(styling.font_cap) else 14} scale down to: 6 season flag: left: 0 top: 0 width: 375 height: 523 z index: 800 render style: image image: { season_background() } visible: { is_season() } mask: { if card.transformation != "none" then "nodes/mask.png" else "" } mutbar: z index: 730 left: 28 top: 393 height: 2 width: 317 render style: image image: mutbar.png visible: {is_mutate()} silver patch: left: 10 top: 10 width: 355 height: 15 z index: 495 visible: {is_legend() and card.border_color == rgb(200,200,200) and not uses_expanded_art()} node: left: 0 top: 0 height: 63 width: 375 z index: 610 render style: image image: { node_img() } visible: {not is_map() and not is_clear() and card.transformation != "none"} crown: left: 0 top: {if is_devoid() then 1 else 0} width: 375 height: 523 render style: image image: { crown_img() } z index: 800 visible: {is_legend() and not is_map()} mask: { if is_fnm() and is_season() then "fnm/crown_season_mask.png" else if is_fnm() then "fnm/crown_mask.png" else if is_season() then "season/crown_mask.png" else ""} pride pin: left: {if is_legend() then 18 else 24} top: 58 width: {if not is_pinned() then 0 else if is_legend() then 338 else 325} height: {if not is_pinned() then 0 else 234} z index: 420 render style: image popup style: in place mask: {"/magic-pride.mse-include/masks/m15" + if is_legend() then " legend.png" else ".png"} image: {pin_image()} vorthos box: right: { if is_leveler() and not lone_pt() then 350 else if (starting_loyalty() and card.loyalty != "") then 300 else if (card.pt != "" and not starting_loyalty()) then 275 else 350 } top: {if card.pt == "" and shown_cr() then 500 else 488} width: { if is_leveler() and not lone_pt() then 140 else if (starting_loyalty() and card.loyalty != "") then 90 else if (card.pt != "" and not starting_loyalty()) then 65 else 140 } height: {if use_vorthos() then 10 else 0} z index: 900 alignment: middle right font: name: Relay-Medium size: 7 color: white weight: bold flash indicator: left: 0 top: 0 width: 375 height: 523 z index: 840 render style: image image: flashdot.png visible: { use_flash_dot() } stamp backing: left: { 159 } top: { stamp_top() } height: { 26 } width: { 56 } visible: { card.card_stamp != "none" } render style: image image: { if stamp_shape() == "triangle" then tri_stamp() else round_stamp() } z index: 850