mse version: 2.0.0 game: magic short name: M15 Sagas full name: Saga, Class, Case installer group: magic/m15 style/sagas icon: card-sample.png position hint: 010 version: 2024-09-23 depends on: package: magic.mse-game version: 2014-06-25 depends on: package: magic-modules.mse-include version: 2024-05-20 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 card width: 375 card height: 523 card dpi: 150 ############################################################## Extra scripts init script: # Should hybrids have a grey name? mask_hybrid_with_land := { styling.grey_hybrid_name } template_prefix := [ card: "/magic-modules.mse-include/cards/375 m15 saga/" pt: "/magic-modules.mse-include/pts/375 m15/" mark: "bookmark/" nyx:"/magic-modules.mse-include/trims/nyx/", snow:"/magic-modules.mse-include/trims/snow/", beyond:"/magic-modules.mse-include/trims/beyond/", crown:"/magic-modules.mse-include/crowns/375/", identity: "/magic-identity-new.mse-include/" ] template_suffix := [ card: "card.jpg" snow:"snow.png" pt:"pt.png" mark: "mark.png" stamp: "stamp.png" nyx:"nyx.png" beyond:"beyond.png" crown:"crown.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] + (if input == "a" then "c" else input) + (if landless(type) 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, crown: true ] watermark_include := "/magic-modules.mse-include/watermarks" is_unsorted := {styling.remove_from_autocount} # 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 := { if contains(styling.other_options, match: "class") then "class" else "saga" } # Is the card a promo card? is_promo := { styling.promo } starting_loyalty := {chosen(styling.other_options, choice:"use starting loyalty")} split_12 := {to_number(pull_comma_array(styling.chapter_divider_coordinates, cell:0, end:true, default:(if one_box() then 437 else if two_boxes() then 296 else if four_boxes() then 225 else 249)))} split_23 := {to_number(pull_comma_array(styling.chapter_divider_coordinates, cell:1, end:true, default:(if one_box() then 437 else if two_boxes() then 437 else if four_boxes() then 296 else 343)))} split_34 := {to_number(pull_comma_array(styling.chapter_divider_coordinates, cell:2, end:true, default:(if one_box() then 437 else if three_boxes() then 437 else if four_boxes() then 367 else 437)))} coords_map := [ 1: {[card_style.level_1_text.top, card_style.level_1_text.bottom-card_style.level_1_text.top]}, 2: {[card_style.level_2_text.top, card_style.level_2_text.bottom-card_style.level_2_text.top]}, 3: {[card_style.level_3_text.top, card_style.level_3_text.bottom-card_style.level_3_text.top]}, 4: {[card_style.level_4_text.top, card_style.level_4_text.bottom-card_style.level_4_text.top]}, 5: {[card_style.level_5_text.top, card_style.level_5_text.bottom-card_style.level_5_text.top]} ] auto_snap := { snap_array := split_text(styling.snap_chapter_to_box, match:",", end:false) abil := to_number(pull_comma_array(styling.snap_chapter_to_box, cell:input-1, end:false)) ###textbox to snap to if abil == 0 then 600 else snap_calc(input, snap_array:snap_array, abil:abil) } snap_calc := { out := 0 abil_array := saga_lore_count(snap_array) ###chapters in each box ch_count := abil_array[abil-1] ###chapters in this box self_index := saga_ch_placement(snap_array)[input-1] ###input's index box_deets := coords_map[abil]() ###[top, height] remain := box_deets[1] - 30*ch_count ###remaining space after chapter hexes excess := remain - 10*(ch_count-1) ###remaining after 10px gaps if excess >= 0 then out := box_deets[0] + excess/2 + 40*(self_index-1) ###top + buffer*index + hex*index-1 else ( ###may not be enough room to ten-gap the middle inner_gap := 10 squeeze := 0 outer_gap := (remain - inner_gap * (ch_count-1))/2 if outer_gap < -6 then ( squeeze := 2*(outer_gap+6)/(ch_count-1); outer_gap := -6 ) inner_gap := inner_gap + squeeze out := box_deets[0] + outer_gap + (self_index-1)*(30+inner_gap) ) out } snapping_chapters := { splits := split_comma(styling.snap_chapter_to_box) len := length(splits) if styling.snap_chapter_to_box == "" then 0 else if splits[len-1] == "" then len - 1 else len } chapter0 := { if styling.reminder_coordinate != "" then max(60,min(to_number(styling.reminder_coordinate),438)) else 155} chapter1 := { if snapping_chapters() > 0 then auto_snap(1) else to_number(pull_comma_array(styling.chapter_number_coordinates, cell:0, end:true, default:(if two_boxes() then 183 else 185))) } chapter2 := { if snapping_chapters() > 1 then auto_snap(2) else to_number(pull_comma_array(styling.chapter_number_coordinates, cell:1, end:true, default:(if two_boxes() then 223 else 279))) } chapter3 := { if snapping_chapters() > 2 then auto_snap(3) else to_number(pull_comma_array(styling.chapter_number_coordinates, cell:2, end:true, default:(if two_boxes() then 329 else 373))) } chapter4 := { if snapping_chapters() > 3 then auto_snap(4) else to_number(pull_comma_array(styling.chapter_number_coordinates, cell:3, end:true, default:600)) } chapter5 := { if snapping_chapters() > 4 then auto_snap(5) else to_number(pull_comma_array(styling.chapter_number_coordinates, cell:4, end:true, default:600)) } chapter6 := { if snapping_chapters() > 5 then auto_snap(6) else to_number(pull_comma_array(styling.chapter_number_coordinates, cell:5, end:true, default:600)) } chapter_custom := { if snapping_chapters() > 6 then auto_snap(7) else to_number(pull_comma_array(styling.custom_chapter_coordinate, cell:0, end:false, default:600)) } custom_chapter_node := {if contains(styling.custom_chapter_location, match:".png") then "/magic-mainframe-extras.mse-include/" + styling.custom_chapter_location else "chapter6.png"} custom_name := {if styling.custom_chapter_name == "" then "C" else styling.custom_chapter_name} comma_count := filter_text@(match:",") 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 } text_size := { 13 -(if styling.separated_text_size == "" then 0 else to_number(styling.separated_text_size))} build_array := { if input > 523 or input < 0 then 0 else if four_boxes() and input +17 >= (if split_34() != "" then split_34() else 600) then 4 else if (four_boxes() or three_boxes()) and input +17 >= (if split_23() != "" then split_23() else 343) then 3 else if not one_box() and input +17 >= (if split_12() != "" then split_12() else 249) then 2 else if input +17 <= (if split_12() != "" then split_12() else 249) then 1 else 0 } alt_leaders := { alt := ["I,","II,","III,","IV,","V,","VI,"] if match(card.notes, match:"!altleader [^,]+,") then alt := break_text(split_text(card.notes, match:"!altleader ").1, match:"[^,]+,") alt } level_leader := { alt := alt_leaders() (if build_array((if chapter1() != "" then chapter1() else 185)) == input then alt.0 + " " else "") +(if build_array((if chapter2() != "" then chapter2() else 279)) == input then alt.1 + " " else "") +(if build_array((if chapter3() != "" then chapter3() else 373)) == input then alt.2 + " " else "") +(if build_array((if chapter4() != "" then chapter4() else 600)) == input then alt.3 + " " else "") +(if build_array((if chapter5() != "" then chapter5() else 600)) == input then alt.4 + " " else "") +(if build_array((if chapter6() != "" then chapter6() else 600)) == input then alt.5 + " " else "") +(if build_array((if chapter_custom() != "" then chapter_custom() else 600)) == input then custom_name() + ", " else "") } end_leader := replace@(match:", $", replace:" — ") special_text := { if is_class() then ( card.chapter_text +(if card.level_1_text != "" then "\n" + card.level_1_text) +(if card.level_2_text != "" then "\n" + card.level_9_text + (if card.level_2 == "" then " Level 2" else " " + card.level_2) + "\n" + card.level_2_text) +(if card.level_3_text != "" then "\n" + card.level_10_text + (if card.level_3 == "" then " Level 3" else " " + card.level_3) + "\n" + card.level_3_text) +(if card.level_4_text != "" then "\n" + card.level_11_text + (if card.level_4 == "" then " Level 4" else " " + card.level_4) + "\n" + card.level_4_text) ) else if is_case() then ( card.level_1_text + "\n" +card.level_2_text + "\n" +card.level_3_text ) else ( card.chapter_text +(if card.level_1_text != "" then "\n" + end_leader(level_leader(1)) + card.level_1_text) +(if card.level_2_text != "" then "\n" + end_leader(level_leader(2)) + card.level_2_text) +(if card.level_3_text != "" then "\n" + end_leader(level_leader(3)) + card.level_3_text) +(if card.level_4_text != "" then "\n" + end_leader(level_leader(4)) + card.level_4_text) ) } saga_rules_text := { chapter3() + "|" + (if split_12() != "" then split_12() else 249) + "|" + (if split_23() != "" then split_23() else 343) } one_box := {styling.chapter_textboxes == "one" } two_boxes := {styling.chapter_textboxes == "two" } three_boxes := {styling.chapter_textboxes == "three" or comma_count(styling.chapter_divider_coordinates) == ",,"} four_boxes := {styling.chapter_textboxes == "four" or comma_count(styling.chapter_divider_coordinates) == ",,,"} use_main_rarity := { contains(set.mainframe_rarity_name, match: ".png")} un_png := replace@(match:".png", replace: "") a_saga := {true} saga_reminder := { if styling.alternate_reminder != "" then styling.alternate_reminder else if is_class() then "Gain the next level as a sorcery to add its ability." else "As this Saga enters and after your draw step, add a lore counter. Sacrifice after III." } is_class := {contains(styling.other_options, match:"class") or lang_setting("is_class")(remove_tags(card.sub_type))} is_case := {contains(styling.other_options, match:"case") or lang_setting("is_case")(remove_tags(card.sub_type))} is_saga := {not is_class() and not is_case()} un_marked := {is_class() or is_case() or contains(styling.other_options, match:"remove bookmark")} is_legend := { auto_legend() } is_vehicle := { auto_vehicle() or contains(styling.other_options, match:"vehicle") } is_nyx := { auto_nyx() or contains(styling.other_options, match:"nyx") } is_snow := { auto_snow() or contains(styling.other_options, match:"snow") } auto_legend := { set.auto_legends and lang_setting("is_legendary")(card.super_type) } auto_vehicle := { contains(styling.auto_frames, match:"vehicle") and lang_setting("is_vehicle")(card.sub_type) } auto_nyx := { (contains(styling.auto_frames, match:"nyx") or set.auto_nyx) and lang_setting("is_enchantment")(card.super_type) } auto_snow := { contains(styling.auto_frames, match:"snow") and lang_setting("is_snow")(card.super_type) } is_beyond := { chosen(styling.other_options, choice:"universes beyond") or (chosen(styling.auto_frames, choice:"universes beyond") and (card.card_stamp == "universes beyond" or card.card_stamp == "flatstamped universes beyond")) } nyx_background := { color_background(type:"nyx", base_hybrid:card_hybrid) } snow_background := { color_background(type:"snowtexture", base_hybrid:card_hybrid) } bookmark_background := { color_background(type:"mark", base_hybrid:card_hybrid) } beyond_background := { color_background(type:"beyond", base_hybrid:card_hybrid, folder:template_prefix["beyond"]) } crown_background := { color_background(type:"crown", base_hybrid: card_hybrid)} custom_border_blend := { color_background(type:"custom_border", base_hybrid:card_hybrid) } alt_loc := { if styling.replacement_chapter_location != "" then styling.replacement_chapter_location else "no"} alt_chapters := { (if match(styling.replacement_chapter_location, match:"/$") then "/magic-mainframe-extras.mse-include/" + styling.replacement_chapter_location else "") + "chapter" + input + ".png"} alt_text := {is_class() or is_case()} alt_text_script := { if is_class() then combined_editor(field1: card.chapter_text, separator1:"\n", field2: card.level_1_text, separator2: "\n", field3: card.level_2_text, separator3: "\n", field4: card.level_3_text, separator4: "\n", field5: card.level_4_text) else combined_editor(field1: card.level_1_text, separator1:"\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text) } lev0 := { if card_style.text.layout.separator[0] or else 0 > 0 then card_style.text.top+card_style.text.layout.separator[0]-1 else 600 } lev2 := { if card_style.text.layout.separator[1] or else 0 > 0 then card_style.text.top+card_style.text.layout.separator[1]-13 else 600 } lev3 := { if card_style.text.layout.separator[2] or else 0 > 0 then card_style.text.top+card_style.text.layout.separator[2]-13 else 600 } lev4 := { if card_style.text.layout.separator[3] or else 0 > 0 then card_style.text.top+card_style.text.layout.separator[3]-13 else 600 } text_filter := text_filter + {apply_margins(input, name:margin_code)} + {add_spacers(input, name:margin_code)} margin_top := { if is_saga() then 0 else if input == "lv2" or (input == "lv3" and card.level_3_text != "​") or (input == "lv4" and card.level_4_text != "") then 30 else 0 } ###add blank spaces to inner levels so they still are clickable while "empty" add_spacers := { if input == "" and (margin_code == "lv1" or margin_code == "lv2" or margin_code == "lv3") then "​" else input} class_bar := { if styling.class_levels == "custom" and has_png(styling.custom_class_bar) then "/magic-mainframe-extras.mse-include/" + styling.custom_class_bar else if styling.class_levels == "line" then "levelline.png" else if styling.class_levels == "cyber" then "levelcyber.png" else if styling.class_levels == "unnotched" then "levelbar.png" else "level.png" } level_label_font_size := { if styling.level_label_font_size != "" then styling.level_label_font_size else 11 } custom_border_image := { src := styling.custom_border_source ps := split_text(src, match:"-color-") if length(ps) > 1 then "/magic-mainframe-extras.mse-include/" + ps[0] + input + (if land then "l" else "") + ps[1] else "/magic-mainframe-extras.mse-include/" + src } is_custom := {contains(styling.other_options, match:"custom border") and contains(styling.custom_border_source, match:".png")} # this goes at the very end harder_script := [ crown: module_crown_template, custom_border: custom_border_image ] ############################################################## 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: choice name: chapter textboxes description: How many textboxes does this Saga have? choice: one choice: two choice: three choice: four initial: three styling field: type: text name: snap chapter to box description: Sets the chapter symbols to the given textbox, fo example "1,1,2," for I, II - Ability 1; III - Ability 2 styling field: type: text name: chapter divider coordinates description: Sets the position of the chapter breaks. Formatted as "1,2," Defaults are "296," for two "249,343," for three and "225,296,367," for four. styling field: type: text name: reminder coordinate description: Sets the position of the chapter breaks. Formatted as "1,2," Defaults are "296," for two "249,343," for three and "225,296,367," for four. styling field: type: text name: separated text size description: Use to standardize the font size of separated abilities. Default is size 13. styling field: type: text name: reminder text size description: Use to give the reminder text a different font size from the main abilities. Default is size 13. styling field: type: text name: alternate reminder description: Change the reminder text that is generated for new cards styling field: type: text name: custom chapter location description: The location of the custom chapter symbol inside magic-mainframe-extras styling field: type: text name: custom chapter name description: Set how this symbol will be called in text exports (ie I, II...). Default is C. styling field: type: multiple choice name: auto frames description: Automatically applies frames for multi-typed enchantments, snow, or Vehicles. choice: nyx choice: vehicle choice: snow choice: universes beyond initial: nyx, vehicle, snow, universes beyond styling field: type: multiple choice name: other options choice: nyx choice: vehicle choice: snow choice: class choice: case choice: universes beyond choice: custom border choice: use starting loyalty choice: remove bookmark 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: choice name: class levels description: Which type of level bar should classes use? choice: notched choice: unnotched choice: line choice: cyber choice: custom styling field: type: text name: custom class bar description: Location of 158x25 image in magic-mainframe-extras to use as class bars 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: level label font size description: The font size for the class level labels. Default is 11. 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: choice name: legend crown choice: standard choice: nyx choice: companion choice: custom description: The type of legend crown to use for this card. styling field: type: text name: custom crown location description: location of custom legend crown images in magic-mainframe-extras styling field: type: text name: replacement chapter location description: location of replacement chapter symbols in magic-mainframe-extras, formatted as "folder/" 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: text name: chapter number coordinates description: Sets the chapter symbols at the given height. Formatted as "1,2,3," Defaults are "183,223,329," for two and "185,279,373," for three. Use 40px offset. styling field: type: text name: custom chapter coordinate description: Set the custom symbol at the given height styling field: type: boolean name: wider watermarks description: Use the full watermark size for custom full-size backgrounds. initial: no include file: /magic-modules.mse-include/rarities/styling_fields 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: 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 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") } auto frames: render style: checklist direction: vertical 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/card-symbols/card_fields include file: /magic-modules.mse-include/stamps/card_fields card style: ############################# Background stuff border color: left: 0 top : 0 width: 375 height: 523 radius: 18 left width: 17 right width: 17 top width: 17 bottom width: 18 z index: 500 mask: { (if is_legend() then "crown_border" else "border_mask") + (if card.border_color == rgb(200,200,200) then "_silver" else "") + ".png" } card color: left: 0 top: 0 width: 375 height: 523 z index: 100 render style: image popup style: in place image: { module_card() } ############################# Name line name: left: { if card.card_symbol=="none" then 32 else 50 } top: 30 right: { 341 - 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 casting cost: right: 346 top: 29 width: { max(30, card_style.casting_cost.content_width) + 5 } height: 23 alignment: middle right font: name: MPlantin size: 15 symbol font: name: magic-mana-large size: 15 alignment: middle right always symbol: true z index: 920 padding top: 0 level 9 text: left: 190 width: {if not is_class() or card.level_2_text == "​" then 0 else 80} top: {lev2()+4} height: 20 z index: 900 font: name: MPlantin size: 12 symbol font: name: magic-mana-small size: 12 alignment: middle left level 2: left: 270 width: {if not is_class() or card.level_2_text == "​" then 0 else 70} top: {lev2()+3} height: 20 z index: 900 font: name: MPlantin size: {level_label_font_size()} weight: bold symbol font: name: magic-mana-small size: {level_label_font_size()} alignment: middle right level 10 text: left: 190 width: {if not is_class() or card.level_3_text == "​" then 0 else 80} top: {lev3()+4} height: 20 z index: 900 font: name: MPlantin size: 12 symbol font: name: magic-mana-small size: 12 alignment: middle left level 3: left: 270 width: {if not is_class() or card.level_3_text == "​" then 0 else 70} top: {lev3()+3} height: 20 z index: 900 font: name: MPlantin size: {level_label_font_size()} weight: bold symbol font: name: magic-mana-small size: {level_label_font_size()} alignment: middle right level 11 text: left: 190 width: {if not is_class() or card.level_4_text == "" then 0 else 80} top: {lev4()+4} height: 20 z index: 900 font: name: MPlantin size: 12 symbol font: name: magic-mana-small size: 12 alignment: middle left level 4: left: 270 width: {if not is_class() or card.level_4_text == "" then 0 else 70} top: {lev4()+3} height: 20 z index: 900 font: name: MPlantin size: {level_label_font_size()} weight: bold symbol font: name: magic-mana-small size: {level_label_font_size()} alignment: middle right card symbol: left: {if card.card_symbol=="none" then 20 else 28} top : 31 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 is_saga() then 188 else 29} top: 59 width: 157 height: 379 z index: 200 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: 30 top: 449 width: 17 height: 17 z index: 810 render style: image visible: { has_identity()} image: { module_identity() } type: left: { if has_identity() then "53" else "33" } top: { 444 + 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: 345 top: 445 width: 42 height: 21 z index: 950 render style: image alignment: middle right include file: /magic-modules.mse-include/rarities/choice_images ############################# Text box watermark: left: { (if styling.wider_watermarks then 29 else 45)+(if is_saga() then 0 else 158)} top: 60 width: { if styling.wider_watermarks then 157 else 133 } height: 378 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() } text: left: 188 top: 60 width: {if is_saga() then 0 else 153} bottom: 437 z index: 900 font: name: MPlantin italic name: MPlantin-Italic size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 } scale down to: 6 color: black symbol font: name: { styling.text_box_mana_symbols } size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 } alignment: script: if (styling.center_text == "short text only" and not contains(match:"\n", card.rule_text) and card_style.text.content_lines <= 2) or styling.center_text == "always" then "middle center" else "middle left" padding left: 3 padding right: 1 line height hard: {if is_modal(card.rule_text) then 0.9 else 1.2 } line height line: 1.5 line height soft: 0.85 line height hard max: {if is_modal(card.rule_text) then 1.0 else 1.3 } line height line max: 1.6 chapter text: left: {30+(if is_class() then 158 else 0)} top: 60 width: {if is_case() then 0 else 153} bottom: {if un_marked() then 60 else chapter0()} z index: 900 font: name: MPlantin italic name: MPlantin-Italic size: { if styling.reminder_text_size != "" then styling.reminder_text_size else if styling.separated_text_size != "" then styling.separated_text_size else 13 } scale down to: 6 color: black symbol font: name: { styling.text_box_mana_symbols } size: { if styling.reminder_text_size != "" then styling.reminder_text_size else if styling.separated_text_size != "" then styling.separated_text_size else 13 } alignment: script: if (styling.center_text == "short text only" and not contains(match:"\n", card.chapter_text) and card_style.text.chapter_text.content_lines <= 2) or styling.center_text == "always" then "middle center" else "middle left" mask: {if un_marked() then "" else crop(to_image("textmask.png"), height:chapter0()-60, width:153, offset_x:0, offset_y:0)} z index: 5 padding left: 3 padding right: 1 line height hard: 1.2 line height line: 1.5 line height soft: 0.85 line height hard max: 1.3 line height line max: 1.6 ############################# Levels level 1 text: left: {if un_marked() then 30 else 45} top: { if un_marked() then 60 else chapter0()} width: { if is_class() or is_case() then 0 else if un_marked() then 153 else 138} bottom: { if split_12() == "" then 249 else split_12() } font: name: MPlantin italic name: MPlantin-Italic size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 } scale down to: 6 color: black symbol font: name: { styling.text_box_mana_symbols } size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 } alignment: script: if (styling.center_text == "short text only" and not contains(match:"\n", card.level_1_text) 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 padding top: 3 padding bottom: 3 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 0.9 else 1.3 } line height line max: 1.6 level 2 text: left: {if un_marked() then 30 else 45} top: { if split_12() == "" then 249 else split_12() } width: { if is_class() or is_case() then 0 else if un_marked() then 153 else 138} bottom: { if split_23() == "" then 343 else split_23() } font: name: MPlantin italic name: MPlantin-Italic size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 } scale down to: 6 color: black symbol font: name: { styling.text_box_mana_symbols } size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 } alignment: script: if (styling.center_text == "short text only" and not contains(match:"\n", card.level_2_text) 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 padding top: 3 padding bottom: 3 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 0.9 else 1.3 } line height line max: 1.6 level 3 text: left: {if un_marked() then 30 else 45} top: { if split_23() == "" then 343 else split_23() } width: { if is_class() or is_case() then 0 else if un_marked() then 153 else 138} bottom: {if split_34() == "" then 437 else split_34() } font: name: MPlantin italic name: MPlantin-Italic size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 } scale down to: 6 color: black symbol font: name: { styling.text_box_mana_symbols } size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 } alignment: script: if (styling.center_text == "short text only" and not contains(match:"\n", card.level_3_text) 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 padding top: 3 padding bottom: 3 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 0.9 else 1.3 } line height line max: 1.6 level 4 text: left: {if un_marked() then 30 else 45} top: {if split_34() == "" then 437 else split_34() } width: { if is_class() then 0 else if un_marked() then 153 else 138} bottom: 437 font: name: MPlantin italic name: MPlantin-Italic size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 } scale down to: 6 color: black symbol font: name: { styling.text_box_mana_symbols } size: { if styling.separated_text_size != "" then styling.separated_text_size else 13 } alignment: script: if (styling.center_text == "short text only" and not contains(match:"\n", card.level_4_text) 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 padding top: 3 padding bottom: 3 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 0.9 else 1.3 } line height line max: 1.6 ############################# PT pt: z index: 900 left: 286 top: 469 width: {if starting_loyalty() then 0 else 60} height: 28 alignment: center middle shrink-overflow font: name: Beleren Bold size: 16 color: black separator color: red loyalty: z index: 900 left: 326 top: 468 width: {if starting_loyalty() then 13.16 else 0} height: 34.63 alignment: center middle font: name: Beleren Bold size: 14 color: white ############################################################## 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: loyalty box editable: false choice: loyalty save value: false extra card field: type: choice name: stamp backing choice: stamp editable: false save value: false extra card field: type: choice name: foil layer choice: foil save value: false editable: false extra card field: type: choice name: clear frame choice: frame editable: false save value: false show statistics: false extra card field: type: choice name: bookmark script: card.card_color editable: false save value: false extra card field: type: choice name: chapter 1 choice: chapter editable: false save value: false show statistics: false extra card field: type: choice name: chapter 2 choice: chapter editable: false save value: false show statistics: false extra card field: type: choice name: chapter 3 choice: chapter editable: false save value: false show statistics: false extra card field: type: choice name: chapter 4 choice: chapter editable: false save value: false show statistics: false extra card field: type: choice name: chapter 5 choice: chapter editable: false save value: false show statistics: false extra card field: type: choice name: chapter 6 choice: chapter editable: false save value: false show statistics: false extra card field: type: choice name: chapter custom choice: chapter editable: false save value: false show statistics: false 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: choice name: linebreak 1 choice: line editable: false save value: false show statistics: false extra card field: type: choice name: linebreak 2 choice: line editable: false save value: false show statistics: false extra card field: type: choice name: linebreak 3 choice: line editable: false save value: false show statistics: false extra card field: type: choice name: linebreak 4 choice: line editable: false save value: false show statistics: false extra card field: type: choice name: linebreak 5 choice: line editable: false save value: false show statistics: false extra card field: type: choice name: linebreak 6 choice: line editable: false save value: false show statistics: false extra card field: type: choice name: linebreak 7 choice: line editable: false save value: false show statistics: 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: vehicle overlay choice: car door save value: false editable: false 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: crown script: card.card_color editable: false save value: false show statistics: false extra card field: type: choice name: stripe choice: stripe editable: false save value: false show statistics: false extra card field: type: choice name: paper choice: paper editable: false save value: false show statistics: false extra card field: type: text name: default level 2 script: "Level 2" editable: false save value: false show statistics: false extra card field: type: text name: default level 3 script: "Level 3" editable: false save value: false show statistics: false extra card field: type: text name: default level 4 script: "Level 4" editable: false save value: false show statistics: false extra card field: type: choice name: custom overlay script: card.card_color save value: false editable: false extra card field: type: choice name: ub tweaker choice: white save value: false editable: false extra card field: type: choice name: ub overlay script: card.card_color editable: false save value: false extra card style: pt box: left: 273 top: 466 width: 81 height: 42 z index: 840 visible: { card.pt != "" and not starting_loyalty() } render style: image image: { module_ptbox() } loyalty box: right: 362 top: 466 width: 60 height: 38 z index: 840 render style: image visible: { starting_loyalty() and card.loyalty != "" } choice images: loyalty: loyalty.png stamp backing: left: 165 top: 472 width: 46 height: 26 z index: 850 visible: { card.card_stamp != "none" } render style: image image: { "/magic-modules.mse-include/stamps/backs/" + (if stamp_shape(field:1) == "triangle" then "triangle_stamp.png" else "stamp.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"} chapter 1: left: 14 top: { if chapter1() == "" then 185 else chapter1() } width: 30 height: 34 render style: image z index: 840 image: {alt_chapters("1")} visible: {not un_marked()} chapter 2: left: 14 top: { if chapter2() == "" then 279 else chapter2() } width: 30 height: 34 render style: image z index: 840 image: {alt_chapters("2")} visible: {not un_marked()} chapter 3: left: 14 top: { if chapter3() == "" then 373 else chapter3() } width: 30 height: 34 render style: image z index: 840 image: {alt_chapters("3")} visible: {not un_marked()} chapter 4: left: 14 top: { if chapter4() == "" then 600 else chapter4() } width: 30 height: 34 render style: image z index: 840 image: {alt_chapters("4")} visible: {not un_marked()} chapter 5: left: 14 top: { if chapter5() == "" then 600 else chapter5() } width: 30 height: 34 render style: image z index: 840 image: {alt_chapters("5")} visible: {not un_marked()} chapter 6: left: 14 top: { if chapter6() == "" then 600 else chapter6() } width: 30 height: 34 render style: image z index: 840 image: {alt_chapters("6")} visible: {not un_marked()} chapter custom: left: 14 top: { if chapter_custom() == "" then 600 else chapter_custom() } width: 30 height: 34 render style: image z index: 840 image: {custom_chapter_node()} visible: {not un_marked()} linebreak 1: left: {30+(if is_class() or is_case() then 158 else 0)} top: {if is_class() or is_case() then lev0() else chapter0()} width: 156 height: {if is_case() or is_class() then 2 else 3} render style: image z index: 720 image: {if is_case() then "bar.png" else if is_class() then class_bar() else "line.png"} visible: {is_class() or is_case() or not un_marked()} linebreak 2: left: {30+if is_class() or is_case() then 158 else 0} top: {if is_class() or is_case() then lev2() else if split_12() == "" then 248 else split_12()-1} width: {if is_class() and card.level_2_text == "​" then 0 else 156} height: {if is_class() or is_case() then 25 else 3} render style: image z index: 720 image: {if is_case() then "levelline.png" else if is_class() then class_bar() else "line.png"} linebreak 3: left: {30+if is_class() then 158 else 0} top: {if is_class() then lev3() else if split_23() == "" then 342 else split_23()-1} width: {if is_class() and card.level_3_text == "​" then 0 else 156} height: {if is_class() then 25 else 3} render style: image z index: 720 image: {if is_class() then class_bar() else "line.png"} visible: {three_boxes() or four_boxes() and not is_case()} linebreak 4: left: {30+if is_class() then 158 else 0} top: {if is_class() then lev4() else if split_34() == "" then 600 else split_34()-1} width: {if is_class() and card.level_4_text == "" then 0 else 156} height: {if is_class() then 25 else 3} render style: image z index: 720 image: {if is_class() then class_bar() else "line.png"} visible: {is_class() or four_boxes() and not is_case()} linebreak 5: left: {30+if is_class() then 158 else 0} top: {to_number(pull_comma_array(styling.chapter_divider_coordinates, cell:3, end:true, default:600))} width: 156 height: 3 render style: image z index: 720 image: line.png visible: {four_boxes()} linebreak 6: left: {30+if is_class() then 158 else 0} top: {to_number(pull_comma_array(styling.chapter_divider_coordinates, cell:4, end:true, default:600))} width: 156 height: 3 render style: image z index: 720 image: line.png visible: {four_boxes()} linebreak 7: left: {30+if is_class() then 158 else 0} top: {to_number(pull_comma_array(styling.chapter_divider_coordinates, cell:5, end:true, default:600))} width: 156 height: 3 render style: image z index: 720 image: line.png visible: {four_boxes()} 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 is_vehicle() or is_snow() then "double_") + "mask.png"} custom overlay: left: 0 top: 0 width: 375 height: 523 render style: image image: { custom_border_blend() } z index: 320 visible: {is_custom()} mask: {"trim_masks/" + (if is_vehicle() or is_snow() then "double_") + "mask.png"} snow overlay: left: 0 top: 0 width: 375 height: 523 render style: image image: {module_snow()} z index: 310 visible: {is_snow()} mask: trim_masks/mask.png vehicle overlay: left: 0 top: 0 width: 375 height: 523 render style: image image: { if is_beyond() then "/magic-modules.mse-include/trims/" + (if is_beyond() then "beyond/vbeyond.png" else "vehicle.png") } mask: trim_masks/mask.png z index: 300 visible: {is_vehicle()} crown: left: 0 top: 0 width: 375 height: 523 render style: image image: {module_crown()} z index: 3 visible: {is_legend()} mask: {"crown_masks/" + (if is_saga() then "saga.png" else "class.png")} bookmark: left: 15 top: 60 width: 27 height: 372 render style: image image: {bookmark_background()} z index: 810 visible: {not un_marked()} stripe: left: 15 top: 60 width: 27 height: 372 render style: image image: bookmark/stripe.png z index: 820 visible: {length(write_wubrg(card.card_color))==2 and not un_marked()} paper: left: {if is_saga() then 28 else 186} top: 58 width: 160 height: 380 z index: 210 render style: image image: paper.png default level 2: left: 270 width: {if not is_class() or (is_class() and card.level_2_text == "​") then 0 else 70} top: {lev2()+3} height: 20 z index: 7 font: name: MPlantin size: 11 weight: bold symbol font: name: magic-mana-small size: 11 alignment: middle right visible: {is_class() and card.level_2 == ""} default level 3: left: 270 width: {if not is_class() or (is_class() and card.level_3_text == "​") then 0 else 70} top: {lev3()+3} height: 20 z index: 7 font: name: MPlantin size: 11 weight: bold symbol font: name: magic-mana-small size: 11 alignment: middle right visible: {is_class() and card.level_3 == ""} default level 4: left: 270 width: {if not is_class() or (is_class() and card.level_4_text == "") then 0 else 70} top: {lev4()+3} height: 20 z index: 7 font: name: MPlantin size: 11 weight: bold symbol font: name: magic-mana-small size: 11 alignment: middle right visible: {is_class() and card.level_4 == ""} ub tweaker: left: 0 top: 0 width: 375 height: 523 z index: 110 render style: image visible: { is_beyond() } image: { card_background() } mask: {invert_image(template_prefix["card"] + "hybrid_blend_card.png") } ub overlay: left: 0 top: 0 width: 375 height: 523 z index: 290 render style: image image: { beyond_background() } mask: beyond_mask.png visible: { is_beyond() }