mse version: 2.0.0 game: magic short name: Mainframe Walkers full name: M15 Planeswalkers installer group: magic/m15 style/planeswalkers icon: card-sample.png position hint: 003 version: 2024-09-01 depends on: package: magic.mse-game version: 2014-06-25 depends on: package: magic-modules.mse-include version: 2024-10-01 depends on: package: magic-mana-large.mse-symbol-font version: 2007-09-23 depends on: package: magic-mana-small.mse-symbol-font version: 2007-09-23 depends on: package: magic-mainframe-extras.mse-include version: 2017-05-05 depends on: package: magic-pride.mse-include version: 2021-05-26 card width: 375 card height: 523 card dpi: 150 ########## new frames by silverback_ape ############################################################## Extra scripts init script: include file: /magic-pride.mse-include/scripts # Should hybrids have a grey name? mask_hybrid_with_land := { styling.grey_hybrid_name } mainframe_walker := {true} text_filter := text_filter + {apply_margins(input, name:margin_code)} + {add_spacers(input, name:margin_code)} template_prefix := [ card: "cards/" card2: "cards/" card3: "covers/" card4: "covers/" page: "page/" page2: "page/" alias: "alias/" pt: "/magic-modules.mse-include/pts/375 m15/" stamp: "/magic-modules.mse-include/stamps/backs/750 round outlined/" ubstamp: "/magic-modules.mse-include/stamps/backs/375 ub/pw/" nyx: "/magic-modules.mse-include/trims/nyx/" snow: "/magic-modules.mse-include/trims/snow/" double_page: "/magic-modules.mse-include/pages/double_page/", single_page: "/magic-modules.mse-include/pages/single_page/", null_page: "/magic-modules.mse-include/pages/null_page/", double_flat: "/magic-modules.mse-include/pages/double_flat/", single_flat: "/magic-modules.mse-include/pages/single_flat/", star: "/magic-modules.mse-include/trims/star/", ub: "/magic-modules.mse-include/trims/beyond/", identity: "/magic-modules.mse-include/indicators/" ] template_suffix := [ card: "card.png" card2: "card2.png" card3: "card3.png" card4: "card4.png" page: "card.png" page2: "card2.png" nyx: "nyx.png" snow: "snow.png" alias: "alias.png" pt: "pt.png" stamp: "stamp.png" ubstamp: "stamp.png" double_page: "page.png", single_page: "page.png", null_page: "page.png", double_flat: "page.png", single_flat: "page.png", star: "star.png", beyond: "beyond.png", identity: "identity.png" ] template := { if type_name(harder_script[type] or else nil) != type_name(nil) then harder_script[type](input, land:false) else template_prefix[type] + input + template_suffix[type] } land_template := { if type_name(harder_script[type] or else nil) != type_name(nil) then harder_script[type](input, land:true) else template_prefix[type] + input + template_suffix[type] } # Use land templates for previews because they show more contrast hybrid_previews := "land,hybrid" # This will create two seperate card faces card_background3 := { color_background(type:"card3", base_hybrid:card_hybrid, folder:template_prefix["card3"]) } card_background4 := { color_background(type:"card4", base_hybrid:card_hybrid, folder:template_prefix["card4"]) } alias_bar := { color_background(type:"alias", base_hybrid:card_hybrid) } nyx_background := { color_background(type:"nyx", base_hybrid:card_hybrid) } snow_texture := { color_background(type:"snow", base_hybrid:card_hybrid) } null_page_blend := { color_background(type:"null_page", base_hybrid:card_hybrid, folder:template_prefix["null_page"]) } single_page_blend := { color_background(type:"single_page", base_hybrid:card_hybrid, folder:template_prefix["single_page"]) } double_page_blend := { color_background(type:"double_page", base_hybrid:card_hybrid, folder:template_prefix["double_page"]) } binding_background := { color_background(type:"binding", base_hybrid:card_hybrid, folder:"blend_masks/") } double_flat_page_blend := { color_background(type:"double_flat", base_hybrid:card_hybrid, folder:template_prefix["double_flat"]) } single_flat_page_blend := { color_background(type:"single_flat", base_hybrid:card_hybrid, folder:template_prefix["single_flat"]) } # Use the normal tap symbol mana_t := { if styling.tap_symbol == "old" then "old" else if styling.tap_symbol == "diagonal T" then "older" else "new" } # Use guild mana symbols? guild_mana := { styling.use_guild_mana_symbols } paintbrush_color := { if to_int(card.border_color) < 96 then "white" else "black" } # Loyalty cost arrows loyalty_image := { if contains(input, match: "+") then "loyalty up" else if contains(input, match: "-") then "loyalty down" else "loyalty naught" } card_shape := {"planeswalker"} name_tag_for_level := {""} # Is the card a promo card? is_promo := { styling.promo } # Does the card have four abilities? has_four_abilities := { not force_short() and max_level() > 3 or force_tall()} has_two_abilities := { max_level() < 3 } is_normal_size := { styling.default_image_size } loyal_move := { pull_comma_array(styling.shift_loyalty_costs, cell:0, end:0, default:0)} loyal_move2 := { if card.level_2_text == "" or card.level_2_text == "​" then -15 else pull_comma_array(styling.shift_loyalty_costs, cell:1, end:0, default:0)} loyal_move3 := { if card.level_3_text == "" or card.level_3_text == "​" then -5 else pull_comma_array(styling.shift_loyalty_costs, cell:2, end:0, default:0)} loyal_move4 := { pull_comma_array(styling.shift_loyalty_costs, cell:3, end:0, default:0)} loyal_move5 := { pull_comma_array(styling.shift_loyalty_costs, cell:4, end:0, default:0)} loyal_move6 := { pull_comma_array(styling.shift_loyalty_costs, cell:5, end:0, default:0)} is_level_walker := { true } unindent := { contains(styling.other_options, match:"un-indent nonloyalty abilities")} comma_count := filter_text@(match:",") paragraph_count := replace@(match:"\n", replace:"")+ filter_text@(match:"\n") global_chop_top := { to_int(pull_comma_array(styling.combined_chop, cell:0, end:0, default:0))} global_chop_bot := { to_int(pull_comma_array(styling.combined_chop, cell:1, end:0, default:0))} global_chop_right := { to_int(pull_comma_array(styling.combined_chop, cell:3, end:0, default:0)) + (if use_adv() then 150 else 0)} top_of_textbox := {if has_four_abilities() then 292+global_chop_top()+(if is_clear() then 5 else 0) else 329+global_chop_top()} use_full_art := { contains(styling.other_options, match:"mythic edition fullart") } mask_script := { if contains(styling.custom_mask, match:".png") then "/magic-mainframe-extras.mse-include/" + styling.custom_mask else if use_full_art() then "fortress_imagemask.png" else "" } text_size := { 14 -(if styling.font_size == "" then 0 else if contains(styling.font_size, match: ".5") then to_int(split_text(match:".5", styling.font_size).0) else styling.font_size) } stripe01 := {if length(card_style.text.layout.separators) or else 0 > 0 then card_style.text.top + card_style.text.layout.separators[0] + stripe_adj(top:0, bot:1) else 0} stripe12 := {if length(card_style.text.layout.separators) or else 0 > 1 then card_style.text.top + card_style.text.layout.separators[1] + stripe_adj(top:0, bot:1) else 0} stripe23 := {if length(card_style.text.layout.separators) or else 0 > 2 then card_style.text.top + card_style.text.layout.separators[2] + stripe_adj(top:0, bot:1) else 0} stripe34 := {if length(card_style.text.layout.separators) or else 0 > 3 then card_style.text.top + card_style.text.layout.separators[3] + stripe_adj(top:0, bot:1) else 0} stripe45 := {if length(card_style.text.layout.separators) or else 0 > 4 then card_style.text.top + card_style.text.layout.separators[4] + stripe_adj(top:0, bot:1) else 0} stripe_adj := {-4} abil_center := { if card_style.text.layout.blocks[input].bottom or else 0 > 0 then card_style.text.top + card_style.text.layout.blocks[input].middle + overlap_check(input) else -30 } overlap_check := { if input == 0 then 0 else if card_style.text.layout.blocks[input].middle == card_style.text.layout.blocks[input-1].middle then 40*(input-1) else 0 } max_level_function := [ "auto": { if card.level_6_text != "" and card.level_6_text != "​" then 6 else if card.level_5_text != "" and card.level_5_text != "​" then 5 else if card.level_4_text != "" and card.level_4_text != "​" then 4 else if card.level_3_text != "" and card.level_3_text != "​" then 3 else 2 }, "one": {1}, "two": {2}, "three": {3}, "four": {4}, "five": {5}, "six": {6}, ] max_level := {max_level_function[force_level()]()} mainframe_walker_text_script := { if max_level() == 1 or (max_level() == 2 and card.level_2_text == "") or force_level() == "two" then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text) else if max_level() == 2 or force_level() == "three" then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text) else if max_level() == 3 or force_level() == "four" then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text) else if max_level() == 4 or force_level() == "five" then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text) else if max_level() > 4 or force_level() == "six" then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text) else combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text) } margin_left := { if input == "lv1" then (if card.loyalty_cost_1 == "" and unindent() then 0 else 130) else if input == "lv2" then (if card.loyalty_cost_2 == "" and unindent() then 0 else 130) else if input == "lv3" then (if card.loyalty_cost_3 == "" and unindent() then 0 else 130) else if input == "lv4" then (if card.loyalty_cost_4 == "" and unindent() then 0 else 130) else if input == "lv5" then (if card.loyalty_cost_5 == "" and unindent() then 0 else 130) else if input == "lv6" then (if card.loyalty_cost_6 == "" and unindent() then 0 else 130) else 0 } margin_top := {to_int(pull_comma_array(styling.combined_chop, cell:2, end:0, default:0))} add_spacers := { if input == "" and inner_level(name) then "​" else input} inner_level := { if input == "lv5" and max_level() > 5 then true else if input == "lv4" and max_level() > 4 then true else if input == "lv3" and max_level() > 3 then true else if input == "lv2" and max_level() > 2 then true else if input == "lv1" and max_level() > 1 then true else false } force_level := { if styling.override_levels == "one ability" then "one" else if styling.override_levels == "two abilities" then "two" else if styling.override_levels == "three abilities" then "three" else if styling.override_levels == "four abilities" then "four" else if styling.override_levels == "five abilities" then "five" else if styling.override_levels == "six abilities" then "six" else "auto" } force_tall := { contains(styling.other_options, match:"use taller frame")} force_short := { contains(styling.other_options, match:"use short frame")} is_unsorted := {styling.remove_from_autocount} ##shrink_type := {if styling.shrink_typeline_text != "" then to_int(styling.shrink_typeline_text) else 0 } ##shrink_name := {if styling.shrink_name_text != "" then to_int(styling.shrink_name_text) else 0 } shrink_type := {if styling.shrink_typeline_text != "" then to_number((if comma_count(styling.shrink_typeline_text) == "" then styling.shrink_typeline_text else split_text(match:",", styling.shrink_typeline_text).0)) else 0 } shrink_name := {if styling.shrink_name_text != "" then to_number((if comma_count(styling.shrink_name_text) == "" then styling.shrink_name_text else split_text(match:",", styling.shrink_name_text).0)) else 0 } shrink_type2 := {if styling.shrink_typeline_text != "" then to_number((if comma_count(styling.shrink_typeline_text) != "" then split_text(match:",", styling.shrink_typeline_text).1)) else 0 } shrink_name2 := {if styling.shrink_name_text != "" then to_number((if comma_count(styling.shrink_name_text) != "" then split_text(match:",", styling.shrink_name_text).1)) else 0 } use_main_rarity := { contains(set.mainframe_rarity_name, match: ".png")} un_png := replace@(match:".png", replace: "") ancestral_mana := { contains(styling.other_options, match:"ancestral generic")} opacity := {pull_comma_array(styling.opacity, cell:input, end:false, default:50)} is_skinned := {contains(styling.other_options, match:"godzilla style alias")} use_evobar := {contains(styling.other_options, match: "pokemon evobar") and not is_skinned()} is_clear := {styling.clear or contains(styling.other_options, match:"clear frame")} is_nyx := {chosen(styling.other_options, choice:"nyx") or (set.auto_nyx and lang_setting("is_enchantment")(card.type))} is_adventure := {chosen(styling.other_options, choice:"adventure") and not is_tale()} is_tale := {chosen(styling.other_options, choice:"reversed adventure")} use_adv := {is_tale() or is_adventure()} is_snow := {chosen(styling.other_options, choice:"snow")} is_vehicle := {chosen(styling.other_options, choice:"vehicle")} is_pinned := {chosen(styling.other_options, choice:"pride pinlines")} is_custom_border := { if chosen(styling.other_options, choice:"custom border") then has_png(styling.custom_border_source) else auto_custom_border() } custom_border_blend := { color_background(type:"custom_border", base_hybrid:card_hybrid) } paragraph_count := replace@(match:"\n", replace:"~")+ filter_text@(match:"~") special_text := { out := (if card.loyalty_cost_1 != "" then "[" + card.loyalty_cost_1 + "]: " else "") + (if card.level_1_text != "" and card.level_1_text != card.rule_text then card.level_1_text+"\n" else split_text(match:"\n", card.rule_text).0+"\n") + (if card.loyalty_cost_2 != "" then "[" + card.loyalty_cost_2 + "]" + ": " else "") + (if card.level_2_text != "" then card.level_2_text+"\n" else if contains(paragraph_count(card.rule_text), match:"~") then split_text(match:"\n", card.rule_text).1+"\n" else "") + (if card.loyalty_cost_3 != "" then "[" + card.loyalty_cost_3 + "]" + ": " else "") + (if card.level_3_text != "" then card.level_3_text+"\n" else if contains(paragraph_count(card.rule_text), match:"~~") then split_text(match:"\n", card.rule_text).2+"\n" else "") + (if card.loyalty_cost_4 != "" then "[" + card.loyalty_cost_4 + "]" + ": " else "") + (if card.level_4_text != "" then card.level_4_text+"\n" else if contains(paragraph_count(card.rule_text), match:"~~~") then split_text(match:"\n", card.rule_text).3+"\n" else "") + (if card.loyalty_cost_5 != "" then "[" + card.loyalty_cost_5 + "]" + ": " else "") + (if card.level_5_text != "" then card.level_5_text+"\n" else if contains(paragraph_count(card.rule_text), match:"~~~~") then split_text(match:"\n", card.rule_text).4+"\n" else "") + (if card.loyalty_cost_6 != "" then "[" + card.loyalty_cost_6 + "]" + ": " else "") + (if card.level_6_text != "" then card.level_6_text+"\n" else if contains(paragraph_count(card.rule_text), match:"~~~~~") then split_text(match:"\n", card.rule_text).5 else "") out := replace(out, match:"\n\n+", replace:"") out := replace(out, match:"\n+$", replace:"") out } pw_font_size := { if styling.font_size != "" then styling.font_size else 12 } card_shape := {if use_adv() then "adventure" else "planeswalker"} adventure_shape := {"double page"} page_image := { as := adventure_shape() page := if as == "single page" then single_page_blend(input) else if as == "null_page" then null_page_blend(input) else if as == "single flat page" then single_flat_page_blend(input) else if as == "double flat page" then double_flat_page(input) else double_page_blend(input) if is_tale() then page := flip_horizontal(page) page } frame_mask_script := { if contains(styling.custom_mask, match:".png") then invert_image("/magic-mainframe-extras.mse-include/" + styling.custom_mask) else "frame_mask" + (if has_four_abilities() then "_four" else "") + (if use_full_art() then "_mythic" + (if is_stamped() then "_stamp" else "") else "") + ".png" } card_stamp_offset_top_1 := {if stamp_shape() == "triangle" then -3 else 0} popout_left := { popout_coord(0, field:styling.popout_image_style or else "") } popout_top := { popout_coord(1, field:styling.popout_image_style or else "") } popout_width := { popout_coord(2, field:styling.popout_image_style or else "") } popout_height := { popout_coord(3, field:styling.popout_image_style or else "") } popout_angle := { popout_coord(4, field:styling.popout_image_style or else "", lim:4) } use_popunder := { chosen(styling.other_options, choice:"popunder art") } watermark_include := "/magic-modules.mse-include/watermarks" ############################################################## Set info fields set info style: symbol: variation: name: invertedcommon border radius: 0.10 fill type: solid fill color: rgb(255,255,255) border color: rgb(0,0,0) ############################################################## Extra style options styling field: type: 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: text name: combined chop description: Formatted "X,Y,Z", shrinks the top X pixels, shrinks bottom Y pixels toward center, widens small stripes Z pixels. styling field: type: text name: shift loyalty costs description: Moves loyalty costs up the specified amount. Use negative to move down. Formatted as "1,2,3,4," styling field: type: text name: opacity description: set opacity for stripes, from 0 to 255. styling field: type: text name: shrink name text description: reduces the name text N points. styling field: type: text name: shrink typeline text description: reduces the typeline text N points. styling field: type: text name: font size description: Use to overwrite the font size. Default is size 12. styling field: type: choice name: override levels choice: automatic choice: one ability choice: two abilities choice: three abilities choice: four abilities choice: five abilities choice: six abilities description: Automatically apply layers, force four abilities, or force one ability styling field: type: multiple choice name: other options choice: clear frame choice: use taller frame choice: use short frame choice: ancestral generic mana choice: prerelease stamp choice: un-indent nonloyalty abilities choice: mythic edition fullart choice: godzilla style alias choice: pokemon evobar choice: nyx choice: snow choice: vehicle choice: custom border choice: adventure choice: reversed adventure choice: pride pinlines choice: popunder art initial: un-indent nonloyalty abilities 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: custom mask description: Uses a custom mask from data/magic-mainframe-extras.mse-include styling field: type: boolean name: default image size description: Use the default Planeswalker template image size, disable for easier popout art options. include file: /magic-modules.mse-include/rarities/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: boolean name: grey hybrid name description: Use a grey background for the name and type line on hybrid cards. This is done on real cards. styling field: type: boolean name: use guild mana symbols description: Use the Ravnica guild symbols instead of the official half/half circles for hybrid mana. initial: no styling field: type: package choice name: casting cost mana symbols match: magic-mana-*.mse-symbol-font initial: magic-mana-large.mse-symbol-font styling field: type: package choice name: text box mana symbols match: magic-mana-*.mse-symbol-font initial: magic-mana-small.mse-symbol-font styling field: type: choice name: tap symbol description: What tap and untap symbols should be used on cards? initial: modern choice: modern choice: old choice: diagonal T styling field: type: choice name: center text description: When to center text (short text only means only on one-line cards with no flavor text) choice: always choice: short text only choice: never initial: never styling field: type: boolean name: promo description: Is this card a promo card, with the "P" rarity? initial: no styling field: type: boolean name: inverted common symbol description: Should the common rarity symbol be inverted, like in Coldsnap? initial: no styling field: type: package choice name: overlay description: Should there be an overlay applied, such as foil? match: magic-overlay-*.mse-include required: false styling field: type: boolean name: clear description: Use the clear frame. (depreciated) initial: no 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") } other options: render style: checklist direction: vertical ############################################################## Card fields include file: /magic-modules.mse-include/corners/card_fields include file: /magic-modules.mse-include/information/card_fields include file: /magic-modules.mse-include/stamps/card_fields card style: ############################# Background stuff border color: left: 0 top : 0 width: { if use_full_art() then 0 else 375 } height: { if use_full_art() then 0 else 523 } radius: 18 left width: 17 right width: 17 top width: 17 bottom width: 18 z index: 500 mask: {"border_mask" + (if card.border_color == rgb(200,200,200) then "_silver") + ".png"} card color: left: 0 top: 0 width: 375 height: 523 z index: 200 render style: image popup style: in place image: { if is_clear() then "" else if has_four_abilities() then module_card2() else module_card() } mask: {frame_mask_script()} ############################# Name line name: left: { if card.card_symbol=="none" then 31 else 48 } top: 22 right: { 339 - card_style.casting_cost.content_width } height: { 23 - (0.5 * shrink_name()) } alignment: bottom shrink-overflow padding bottom: 0 z index: 900 font: name: Beleren Bold size: {16 - shrink_name() } color: black alias: left: {if is_skinned() then 45 else 36} top: 47 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") + "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: 347 top: 21 width: { max(30, card_style.casting_cost.content_width) + 5 } height: 23 alignment: middle right symbol font: name: { styling.casting_cost_mana_symbols } size: 15 alignment: middle right always symbol: true z index: 920 padding top: 0 card symbol: left: {if card.card_symbol=="none" then 20 else 25} top: 21 height: 21 width: 23 z index: 810 render style: image include file: /magic.mse-game/card-symbols/menu_choice_images image: { card_symbol_image(face: 1) } ############################# Image image: left: { if use_full_art() or is_clear() then 0 else if is_normal_size() then 25 else 15 } top: { if use_full_art() or is_clear() then 0 else if is_normal_size() then 52 else 15 } width: { if use_full_art() or is_clear() then 375 else if is_normal_size() then 324 else 345 } height: { if use_full_art() or is_clear() then 523 else if is_normal_size() then 427.5 else 493 } z index: 100 mask: {if contains(styling.custom_mask, match:".png") then "" else "guidelines/" + (if is_clear() then "clear_" else if is_normal_size() or use_full_art() then "" else "wide_") + (if not force_short() and max_level() > 3 or force_tall() then "four_" else "") + (if is_clear() then "frame_mask" else if use_full_art() then (if is_stamped() then "mythic_image_rare_mask" else "mythic_mask") else "frame_mask") + ".png"} image 2: left: { popout_left() } top: { popout_top() } width: { if use_popunder() then 0 else popout_width() } height: { popout_height() } angle: { popout_angle() } z index: 1010 mainframe image: left: { popout_left() } top: { popout_top() } width: { if use_popunder() then popout_width() else 0 } height: { popout_height() } angle: { popout_angle() } z index: 899 ############################# Card type indicator: left: 30 top: { if has_four_abilities() then 265 else 299 } width: 17 height: 17 z index: 800 render style: image visible: { has_identity()} image: { module_identity() } type: left: { if has_identity() then "53" else "33" } top: { (if has_four_abilities() then 261 else 296) + shrink_type() } width: { 309 - rare_width() } height: { 20 - shrink_type() } alignment: top shrink-overflow z index: 900 padding top: 2 font: name: Beleren Bold size: { 13 - shrink_type() } color: black separator color: red rarity: right: 344 top: { if has_four_abilities() then 261 else 297 } width: {if set.shorten_types_for_rarity then 44 else 0} height: 22 z index: 950 render style: image alignment: middle right include file: /magic-modules.mse-include/rarities/choice_images ############################# Text box text: left: {if is_adventure() then 198 else 48} top: { top_of_textbox() } width: {300 - global_chop_right()} bottom: {477-global_chop_bot()-(if is_stamped() then 2 else 0)} font: name: MPlantin italic name: MPlantin-Italic size: { if styling.font_size != "" then styling.font_size else if has_four_abilities() then 13.8 else 14 } scale down to: 6 color: black symbol font: name: { styling.text_box_mana_symbols } size: { if styling.font_size != "" then styling.font_size else if has_four_abilities() then 13.8 else 14 } 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 "middle left" mask: {"walker_text_mask.png"} z index: 900 padding left: 6 padding right: 4 padding top: 4 line height hard: 1.2 line height line: 1.3 line height soft: { if has_four_abilities() then 0.85 else 0.9 } line height hard max: 1.4 line height line max: 2.2 watermark: left: 19 top : { if has_four_abilities() then 314 else 331 } width: 334 height: 150 z index: 720 render style: image alignment: middle center include file: /magic.mse-game/watermarks/menu_choice_images image: { watermark_image_1() } ############################# Loyalty loyalty: z index: 900 left: 328 top: 466 width: 13.16 height: 34.63 alignment: center middle font: name: Beleren Bold size: 14 color: white loyalty cost 1: z index: 900 left: {if is_adventure() then 178 else 28} top: { abil_center(0) - 17.3 - 2 - loyal_move() } width: 18 height: 35 alignment: center middle font: name: Beleren Bold size: 11 color: white loyalty cost 2: z index: 900 left: {if is_adventure() then 178 else 28} top: { abil_center(1) - 17.3 - 2 - loyal_move2() } width: 18 height: 35 alignment: center middle font: name: Beleren Bold size: 11 color: white loyalty cost 3: z index: 900 left: {if is_adventure() then 178 else 28} top: { abil_center(2) - 17.3 - 2 - loyal_move3() } width: {if card.loyalty_cost_3 != "" or max_level() > 1 then 18 else 0} height: 35 alignment: center middle font: name: Beleren Bold size: 11 color: white loyalty cost 4: z index: 900 left: {if is_adventure() then 178 else 28} top: { abil_center(3) - 17.3 - 2 - loyal_move4() } width: {if card.loyalty_cost_4 != "" or max_level() > 2 then 18 else 0} height: 35 alignment: center middle font: name: Beleren Bold size: 11 color: white loyalty cost 5: z index: 900 left: {if is_adventure() then 178 else 28} top: { abil_center(4) - 17.3 - 2 - loyal_move5() } width: {if card.loyalty_cost_5 != "" or max_level() > 3 then 18 else 0} height: 35 alignment: center middle font: name: Beleren Bold size: 11 color: white loyalty cost 6: z index: 900 left: {if is_adventure() then 178 else 28} top: { abil_center(5) - 17.3 - 2 - loyal_move6() } width: {if card.loyalty_cost_6 != "" or max_level() > 4 then 18 else 0} height: 35 alignment: center middle font: name: Beleren Bold size: 11 color: white ################################### Adventure stuff name 2: left: {if is_tale() then 202 else 22} top: {324+(0.5*shrink_name2())-(if has_four_abilities() then 36 else 0)} width: { 139 - card_style.casting_cost_2.content_width } height: {if use_adv() then 20-shrink_name2() else 0} alignment: bottom shrink-overflow z index: 900 font: name: Beleren Bold size: {12 - shrink_name2() } color: white casting cost 2: right: {if is_tale() then 345 else 165} top: {if has_four_abilities() then 288 else 323} width: { max(30, card_style.casting_cost_2.content_width) + 5 } height: {if use_adv() then 23 else 0} alignment: middle right symbol font: name: { styling.casting_cost_mana_symbols } size: 12 alignment: middle right always symbol: true z index: 920 padding top: 0 type 2: left: {if is_tale() then 202 else 22} top: {348+ shrink_type2()-(if has_four_abilities() then 36 else 0)} width: 151 height: {if use_adv() then 20 else 0} alignment: top shrink-overflow z index: 900 padding top: 2 font: name: Beleren Bold size: {11-- shrink_type2()} color: white separator color: red text 2: left: {if is_tale() then 198 else 20 } top: {if has_four_abilities() then 332 else 372} width: {if use_adv() then 149 else 0} bottom: {if is_tale() then 475 else 479} font: name: MPlantin italic name: MPlantin-Italic size: { if styling.font_size != "" then styling.font_size else 14 } scale down to: 6 color: black symbol font: name: { styling.text_box_mana_symbols } size: { if styling.font_size != "" then styling.font_size else 14 } 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 "middle left" z index: 900 padding left: 6 padding right: 4 line height hard: {if is_modal(card.rule_text_2) 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_2) then 1.0 else 1.3 } line height line max: 1.6 card color 2: left: {if is_tale() then 193 else 10 } top: {if has_four_abilities() then 286 else 321} width: {if use_adv() then 169 else 0} height: 156 z index: 620 render style: image popup style: in place image: { page_image(card.card_color_2) } ############################################################## Extra card fields extra card field: type: choice name: foil layer choice: foil save value: false editable: false extra card field: type: choice name: loyalty box editable: false choice: loyalty save value: false extra card field: type: choice name: loyalty cost box 1 editable: false script: loyalty_image(card.loyalty_cost_1) save value: false extra card field: type: choice name: loyalty cost box 2 editable: false script: loyalty_image(card.loyalty_cost_2) save value: false extra card field: type: choice name: loyalty cost box 3 editable: false script: loyalty_image(card.loyalty_cost_3) save value: false extra card field: type: choice name: loyalty cost box 4 editable: false script: loyalty_image(card.loyalty_cost_4) save value: false extra card field: type: choice name: loyalty cost box 5 editable: false script: loyalty_image(card.loyalty_cost_5) save value: false extra card field: type: choice name: loyalty cost box 6 editable: false script: loyalty_image(card.loyalty_cost_6) save value: false extra card field: type: text name: colon 1 editable: false script: ":" save value: false extra card field: type: text name: colon 2 editable: false script: ":" save value: false extra card field: type: text name: colon 3 editable: false script: ":" save value: false extra card field: type: text name: colon 4 editable: false script: ":" save value: false extra card field: type: text name: colon 5 editable: false script: ":" save value: false extra card field: type: text name: colon 6 editable: false script: ":" save value: false extra card field: type: choice name: bottom first editable: false save value: false choice: stripe extra card field: type: choice name: top third editable: false save value: false choice: stripe extra card field: type: choice name: bottom third editable: false save value: false choice: stripe extra card field: type: choice name: top fifth editable: false save value: false choice: stripe extra card field: type: choice name: bottom fifth editable: false save value: false choice: stripe extra card field: type: color name: top color script: if is_clear() then rgb(230,230,230) else rgb(200,200,200) editable: false save value: false extra card field: type: color name: bottom color script: if is_clear() then rgb(230,230,230) else rgb(200,200,200) editable: false save value: false extra card field: type: color name: stripe color script: if is_clear() then rgb(230,230,230) else rgb(200,200,200) editable: false save value: false extra card field: type: color name: stripe color 2 script: if is_clear() then rgb(230,230,230) else rgb(200,200,200) editable: false save value: false extra card field: type: color name: stripe color 3 script: if is_clear() then rgb(230,230,230) else rgb(200,200,200) editable: false save value: false extra card field: type: choice name: clear frame choice: frame editable: false save value: false show statistics: false extra card field: type: color name: opac filter script: rgb(opacity(0), opacity(0), opacity(0)) save value: false extra card field: type: choice name: alias bar 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 extra card field: type: choice name: custom overlay choice: car door save value: false editable: false extra card field: type: choice name: snow overlay choice: snow save value: false editable: false script: card.card_color extra card field: type: choice name: nyx overlay choice: nyx save value: false editable: false script: card.card_color 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: multiple choice name: pride pin include file: /magic-pride.mse-include/pins save value: true editable: true extra card field: type: text name: promo label save value: true description: The golden promo label. extra card field: type: text name: filler text editable: true save value: true show statistics: false multi line: true script: forward_editor(field: card.special_text) special_text() extra card field: type: text name: vorthos box save value: true editable: true description: Where they put mtgstory.com on story spotlights. extra card field: type: choice name: stamp backing script: card.card_color save value: false editable: false extra card field: type: choice name: adventure secondary script: card.card_color save value: false editable: false extra card field: type: choice name: adventure cover script: card.card_color save value: false editable: false extra card field: type: choice name: img mirror choice: img save value: false editable: false extra card style: 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"} loyalty box: right: 364 top: 464 width: 60 height: 38 z index: 830 render style: image visible: { card.loyalty != "" } choice images: loyalty: loyalty.png loyalty cost box 1: left: {if is_adventure() then 165 else 15} top: { abil_center(0) - 17.3 - 2 - loyal_move() } width: 45 height: 36 z index: 830 render style: image visible: { card.loyalty_cost_1 != "" } choice images: loyalty up: loyaltyup.png loyalty down: loyaltydown.png loyalty naught: loyaltynaught.png loyalty cost box 2: left: {if is_adventure() then 165 else 15} top: { abil_center(1) - 17.3 - 2 - loyal_move2() } width: 45 height: 36 z index: 830 render style: image visible: { card.loyalty_cost_2 != "" } choice images: loyalty up: loyaltyup.png loyalty down: loyaltydown.png loyalty naught: loyaltynaught.png loyalty cost box 3: left: {if is_adventure() then 165 else 15} top: { abil_center(2) - 17.3 - 2 - loyal_move3() } width: 45 height: 36 z index: 830 render style: image visible: { card.loyalty_cost_3 != "" } choice images: loyalty up: loyaltyup.png loyalty down: loyaltydown.png loyalty naught: loyaltynaught.png loyalty cost box 4: left: {if is_adventure() then 165 else 15} top: { abil_center(3) - 17.3 - 2 - loyal_move4() } width: 45 height: 36 z index: 830 render style: image visible: { card.loyalty_cost_4 != "" } choice images: loyalty up: loyaltyup.png loyalty down: loyaltydown.png loyalty naught: loyaltynaught.png loyalty cost box 5: left: {if is_adventure() then 165 else 15} top: { abil_center(4) - 17.3 - 2 - loyal_move5() } width: 45 height: 36 z index: 830 render style: image visible: { card.loyalty_cost_5 != "" } choice images: loyalty up: loyaltyup.png loyalty down: loyaltydown.png loyalty naught: loyaltynaught.png loyalty cost box 6: left: {if is_adventure() then 165 else 15} top: { abil_center(5) - 17.3 - 2 - loyal_move6() } width: 45 height: 36 z index: 830 render style: image visible: { card.loyalty_cost_6 != "" } choice images: loyalty up: loyaltyup.png loyalty down: loyaltydown.png loyalty naught: loyaltynaught.png colon 1: left: {if is_adventure() then 209 else 59} top: { abil_center(0) - 17.3 + 10 - loyal_move() } width: 5 height: 10 z index: 830 font: name: MPlantin size: 15 scale down to: 15 color: black alignment: middle center visible: { card.loyalty_cost_1 != "" } colon 2: left: {if is_adventure() then 209 else 59} top: { abil_center(1) - 17.3 + 10 - loyal_move2() } width: 5 height: 10 z index: 830 font: name: MPlantin size: 15 scale down to: 15 color: black alignment: middle center visible: { card.loyalty_cost_2 != "" } colon 3: left: {if is_adventure() then 209 else 59} top: { abil_center(2) - 17.3 + 10 - loyal_move3() } width: {if has_two_abilities() then 0 else 5} height: 10 z index: 830 font: name: MPlantin size: 15 scale down to: 15 color: black alignment: middle center visible: { card.loyalty_cost_3 != "" } colon 4: left: {if is_adventure() then 209 else 59} top: { abil_center(3) - 17.3 + 10 - loyal_move4() } width: { if has_four_abilities() then 5 else 0 } height: 10 z index: 830 font: name: MPlantin size: 15 scale down to: 15 color: black alignment: middle center visible: { card.loyalty_cost_4 != "" } colon 5: left: {if is_adventure() then 209 else 59} top: { abil_center(4) - 17.3 + 10 - loyal_move5() } width: { if has_four_abilities() then 5 else 0 } height: 10 z index: 830 font: name: MPlantin size: 15 scale down to: 15 color: black alignment: middle center visible: { card.loyalty_cost_5 != "" } colon 6: left: {if is_adventure() then 209 else 59} top: { abil_center(5) - 17.3 + 10 - loyal_move6() } width: { if has_four_abilities() then 5 else 0 } height: 10 z index: 830 font: name: MPlantin size: 15 scale down to: 15 color: black alignment: middle center visible: { card.loyalty_cost_6 != "" } ###Curve of first textbox top color: left: {if is_clear() then 28 else 26} top: {if is_clear() and max_level() > 4 then 288 else if has_four_abilities() then 288 else if is_clear() then 322 else 324 } width: {if is_clear() then 320 else 324} height: { if is_clear() and max_level() > 4 then 19 else 21 } z index: 610 mask: mask_top.png ###Block of first textbox stripe color: left: { if is_clear() then 47 else 45} top: { (if has_four_abilities() then 309 else if is_clear() then 343 else 345) } width: { if is_clear() then 298 else 302} bottom: { max(if force_level() == "one" then 465 else to_int(stripe01()-3)+(if is_clear() then 2 else 0), (if has_four_abilities() then 309 else 345)-(if is_clear() then 2 else 0)) } z index: 610 mask: stripe_mask.png ###Bottom of first textbox bottom first: left: { if is_clear() then 47 else 45} top: { max(to_int(stripe01()-3)+(if is_clear() then 2 else 0), (if has_four_abilities() then 309 else 345)-(if is_clear() then 2 else 0)) } width: { if is_clear() then 298 else 302} height: 20 image: { (if is_clear() then "clear_" else "") + "top_stripe_test.png" } render style: image z index: 610 mask: stripe_mask.png visible: { force_level() != "one" } ###Top of third textbox top third: left: { if is_clear() then 47 else 45} top: {to_int(stripe12()-3) } width: { if is_clear() then 298 else 302} height: 13 image: { (if is_clear() then "clear_" else "") + "bot_stripe_test.png" } render style: image z index: 610 mask: stripe_mask.png visible: { card.level_3_text != ""} ###Block of third textbox stripe color 2: left: { if is_clear() then 47 else 45} top: { to_int(stripe12()+10) } width: { if is_clear() then 298 else 302} bottom: { if max_level() == 3 then 465 else to_int(min(465, stripe23()-3)) } z index: 610 mask: stripe_mask.png visible: { card.level_3_text != ""} ###Bottom of third textbox bottom third: left: { if is_clear() then 47 else 45} top: {to_int(min(465, stripe23()-3)) } width: { if is_clear() then 298 else 302} height: 20 image: { (if is_clear() then "clear_" else "") + "top_stripe_test.png" } render style: image z index: 610 mask: stripe_mask.png visible: { max_level() > 3} ###Top of fifth textbox top fifth: left: { if is_clear() then 47 else 45} top: {to_int(stripe34()-3)} width: { if is_clear() then 298 else 302} height: 13 image: { (if is_clear() then "clear_" else "") + "bot_stripe_test.png" } render style: image z index: 610 mask: stripe_mask.png visible: { max_level() > 4} ###Block of fifth textbox stripe color 3: left: { if is_clear() then 47 else 45} top: { to_int(stripe34()+10) } width: { if is_clear() then 298 else 302} bottom: { if max_level() == 5 then 465 else to_int(min(465, stripe45()-2)) } z index: 610 mask: stripe_mask.png visible: { max_level() > 4 and to_int(stripe34()+10) <= 465 } ###Bottom of fifth textbox bottom fifth: left: { if is_clear() then 47 else 45} top: {to_int(min(465, stripe45()-2)) } width: { if is_clear() then 298 else 302} height: 20 image: { (if is_clear() then "clear_" else "") + "top_stripe_test.png" } render style: image z index: 610 mask: stripe_mask.png visible: { max_level() == 6} ###Curve of bottom textbox bottom color: left: { if is_clear() then 28 else 26} top: 465 width: {if is_clear() then 319 else 323} height: 13 z index: 610 mask: mask_bot.png visible: { force_level() == "one" or max_level() == 3 or max_level() == 5} clear frame: left: 0 top: 0 width: { if is_clear() then 375 else 0 } height: { if is_clear() then 523 else 0 } z index: 200 render style: image popup style: in place image: { "cards/" + (if has_four_abilities() then "xcard2.png" else "xcard.png") } promo label: left: 40 top: { if has_four_abilities() then 225 else 262 } width: {if contains(styling.other_options, match:"prerelease stamp") then 295 else 0} height: 29 alignment: middle right z index: 900 font: name: ModMatrix size: 14 color: rgb(223,169,41) opac filter: left: 43 top: {if has_four_abilities() then 290 else 325} width: 305 height: {if has_four_abilities() then 192 else 157} mask: {"opacfilter" + if has_four_abilities() then "_4.png" else ".png"} z index: 600 visible: {styling.opacity != ""} alias bar: left: 34 top: 49 width: 307 height: 24 z index: 880 render style: image image: {if is_clear() then "alias/xalias.png" else alias_bar()} visible: {is_skinned() and not use_evobar()} evobar: left: 40 top: 51 width: {card_style.alias.content_width} height: 27 z index: 880 render style: image image: evobar.png visible: {use_evobar()} evobar tip: left: {39.6 + card_style.alias.content_width} top: 51 width: 36 height: 27 z index: 880 render style: image image: evobar_tip.png visible: {use_evobar()} evobar start: left: 31 top: 51 width: 9 height: 27 z index: 880 render style: image image: evobar_start.png mask: evobar_mask.png visible: {use_evobar()} nyx overlay: left: 0 top: 0 width: 375 height: 523 render style: image image: {module_nyx()} z index: 330 visible: {is_nyx()} mask: {"trim_masks/" + (if has_four_abilities() then "4") + "pw" + (if is_vehicle() or is_custom_border() then "_v") + "_mask.png"} snow overlay: left: 0 top: 0 width: 375 height: 523 render style: image image: {module_snow()} z index: 320 visible: {is_snow()} mask: {"trim_masks/" + (if has_four_abilities() then "4") + "pw" + (if is_vehicle() or is_custom_border() then "_v") + "_mask.png"} vehicle overlay: left: 0 top: 0 width: 375 height: 523 render style: image image: full_voverlay.png z index: 310 mask: {"trim_masks/" + (if has_four_abilities() then "4") + "pw" + (if is_custom_border() then "_v") + "_mask.png"} visible: {is_vehicle()} custom overlay: left: 0 top: 0 width: 375 height: 523 render style: image image: { custom_border_blend() } z index: 317 mask: {"trim_masks/" + (if has_four_abilities() then "4") + "pw_mask.png"} visible: { is_custom_border() } pride pin: left: { if not is_pinned() then 0 else 19} top: { if not is_pinned() then 0 else 51} width: {if not is_pinned() then 0 else 337} height: {if not is_pinned() then 0 else if has_four_abilities() then 205 else 240} z index: 410 render style: image popup style: in place mask: {"/magic-pride.mse-include/masks/" + (if has_four_abilities() then "4planeswalker.png" else "planeswalker.png")} image: {pin_image()} stamp backing: left: { if stamp_shape() == "triangle" then 160 else 166} top: { if stamp_shape() == "triangle" then 468 else 471.5} width: { if stamp_shape() == "triangle" then 55.5 else 43.5} height: {if stamp_shape() == "triangle" then 26 else 23} z index: 850 visible: { is_stamped() } render style: image image: { if stamp_shape() == "triangle" then (if is_clear() then template_prefix["ubstamp"]+"xstamp.png" else module_ubstamp()) else if is_clear() then template_prefix["stamp"]+"xstamp.png" else module_stamp() } mask: {if stamp_shape() == "triangle" then (if use_full_art() then "mythicstamp_mask_triangle.png" else "") else (if use_full_art() then "mythic" else "") + "stamp_mask.png"} vorthos box: right: 275 top: 488 width: 65 height: 10 z index: 900 alignment: middle right font: name: Relay-Medium size: 7 color: white weight: bold adventure cover: left: 0 top: {if has_four_abilities() then 288 else 324} width: 375 height: {if has_four_abilities() then 200 else 164} z index: 610 image: {if has_four_abilities() then (if is_clear() then "covers/xcard4.png" else card_background4()) else if is_clear() then "covers/xcard3.png" else card_background3()} visible: {is_adventure() and not is_tale()} render style: image adventure secondary: left: {if is_tale() then 193 else 10 } top: 321 width: {if use_adv() then 169 else 0} height: 156 z index: 625 render style: image popup style: in place image: { page_image(card.card_color_2) } mask: /magic-modules.mse-include/pages/page_blend.png img mirror: left: 0 top: 0 width: 375 height: 523 z index: 790 mask: {if not use_full_art() or not is_stamped() then "black.png" else if stamp_shape() == "round" then "cut_round.png" else "cut_triangle.png"} image: {card.image} render style: image