mse version: 2.1.2 game: magic short name: Scroll full name: LotR Showcase icon: card_sample.png position hint: 095 version: 2024-10-01 depends on: package: magic.mse-game version: 2014-06-25 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-modules.mse-include version: 2024-10-01 depends on: package: magic-mainframe-extras.mse-include version: 2007-09-23 card width: 646 card height: 902 card dpi: 258.5 ### blanks by GenevensiS ### code by GenevensiS ############################################################## Extra scripts init script: swap_fonts_pt_default := [ name: {"Beleren Bold"}, size: {26.0}, color: {"black"}, vertical: {0}, italic: {"Beleren Bold"} ] swap_fonts_body_default := [ name: {"MPlantin"}, size: {font_size()}, color: {"black"}, vertical: {0}, italic: {"MPlantin-Italic"} ] typeline_offset_top_1 := { 254 } typeline_offset_width_1 := { -2 } typeline_offset_left_1 := { 1 } swap_fonts_type_default := [ name: {"Beleren Bold"}, size: {22.5}, color: {"black"}, vertical: {0}, italic: {""} ] transform_symbol_disabled_1 := { true } card_symbol_offset_top_1 := { 1 } nameline_offset_top_1 := { -1 } swap_fonts_name_default := [ name: {"Beleren Bold"}, size: {26.0}, color: {"black"}, vertical: {0}, italic: {""} ] information_secondary_shift_with_pt_1 := { false } card_shape := { "saga" } card_hybrid_2 := { masked_blend(mask: "special_blend_card.png", dark: template(colors.0), light: template(colors.1)) } horizontal_card_hybrid := [ 0: horizontal_card_hybrid[0] 1: horizontal_card_hybrid[1] 2: card_hybrid_2 3: horizontal_card_hybrid[3] 4: horizontal_card_hybrid[4] 5: horizontal_card_hybrid[5] 6: horizontal_card_hybrid[6] 7: horizontal_card_hybrid[7] ] card_hybrid := [ radial: card_hybrid["radial"] horizontal: horizontal_card_hybrid overlay: card_hybrid["overlay"] vertical: card_hybrid["vertical"] ] template_prefix := [ card: "card/", pt: "pt/", crown: "crown/", stamprim: "stamprim/", nonstamprim: "nonstamprim/", identity: "/magic-modules.mse-include/indicators/" ] template_suffix := [ card: "card.png", pt: "pt.png", crown: "crown.png", stamprim: "stamprim.png", nonstamprim: "nonstamprim.png", identity: "identity.png" ] template := { template_prefix[type] + input + template_suffix[type] } land_template := { template_prefix[type] + (if input == "a" then "c" else input) + template_suffix[type] } card_background := { color_background(input: card.card_color, type: "card", base_hybrid: card_hybrid, hybrid_blend: "white", artifact_blend: "white", multicolor_blend: "white") } card_crown := { color_background(input: card.card_color, type: "crown", base_hybrid: card_hybrid, hybrid_blend: "white", artifact_blend: "white", multicolor_blend: "white") } card_ptbox := { color_background(input: card.card_color, type: "pt", base_hybrid: card_hybrid, hybrid_blend: "white", artifact_blend: "white", multicolor_blend: "white") } card_stamprim := { color_background(input: card.card_color, type: "stamprim", base_hybrid: card_hybrid, hybrid_blend: "white", artifact_blend: "white", multicolor_blend: "white") } card_nonstamprim := { color_background(input: card.card_color, type: "nonstamprim", base_hybrid: card_hybrid, hybrid_blend: "white", artifact_blend: "white", multicolor_blend: "white") } pure_colors := { sort_text( order: if card_is_wedge(input) then "(wbgur)" else "(wubrg)", (if chosen(card.card_color, choice:"white") then "w") + (if chosen(card.card_color, choice:"blue") then "u") + (if chosen(card.card_color, choice:"black") then "b") + (if chosen(card.card_color, choice:"red") then "r") + (if chosen(card.card_color, choice:"green") then "g") ) } pt_colors := { if styling.PT_color_scheme == "canon" then pt_colors_canon() else styling.PT_color_scheme } pt_colors_canon := { if contains(card.card_color, match: "hybrid") then "land" else "gold" } is_promo := { styling.promo } is_unsorted := { styling.remove_from_autocount } is_crowned := { styling.legend_crown == "yes" or (styling.legend_crown == "if legendary" and lang_setting("is_legendary")(card.super_type)) } is_gold_barred := { styling.gold_name_and_type == "yes" } chapter_number_map := [ 1: "I" 2: "II" 3: "III" 4: "IV" 5: "V" 6: "VI" 7: "VII" ] a_saga := { true } saga_reminder := { number_of_chapters := if styling.snap_chapter_to_box != "" then min(7,length(split_comma(styling.snap_chapter_to_box))) else styling.number_of_textboxes if styling.default_reminder != "" then replace(styling.default_reminder, match: "\\[number of chapters\\]", replace: chapter_number_map[number_of_chapters]) else "As this Saga enters and after your draw step, add a lore counter. Sacrifice after " + chapter_number_map[number_of_chapters] + "." } popout_left := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.0 != "" then clamp(split.0, minimum: -500, maximum: 1500) else 0 } popout_top := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.1 != "" then clamp(split.1, minimum: -500, maximum: 2000) else 0 } popout_width := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.2 != "" then clamp(split.2, minimum: 0, maximum: 1500) else 0 } popout_height := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.3 != "" then clamp(split.3, minimum: 0, maximum: 2000) else 0 } crop_safe := { if offset_x < 0 or offset_y < 0 or width < 1 or height < 1 or offset_x + width > 646 or offset_y + height > 902 then "" else crop(input, offset_x: offset_x, offset_y: offset_y, width: width, height: height) } font_size := { if styling.text_font_size == "" then 22 else to_number(styling.text_font_size) or else 22 } abilities_count := { to_int(styling.number_of_textboxes) } chapter_move := { split := split_comma(styling.move_chapter_icons); if length(split) > input-1 and split[input-1] != "" and split[input-1] != "-" then clamp(split[input-1], maximum:700, minimum:-700) else 0 } separator_move := { split := split_comma(styling.move_separators); if length(split) > input-1 and split[input-1] != "" and split[input-1] != "-" then clamp(split[input-1], maximum:500, minimum:-500) else 0 } textbox_move := { split := split_comma(styling.move_textbox_bottoms); if length(split) > input-1 and split[input-1] != "" and split[input-1] != "-" then clamp(split[input-1], maximum:500, minimum:-500) else 0 } chapter_indexes := { snaps := if styling.snap_chapter_to_box == "" then [1,2,3,4,5,6,7] else split_comma(styling.snap_chapter_to_box) snaps_count := length(snaps) for c from 0 to 6 do ( if c >= snaps_count then [-1] else ( index := (to_int(trim(snaps[c])) or else -1) - 1 if index > active_count or index < 0 then [-1] else [index] ) ) } textbox_heights := { ###force proper initialization of card_style values hack_to_force_update := card_style.level_1_text.content_width active_count := abilities_count() - 1 total_max_possible_height := 480 chapter_icon_height := 57 chapter_icon_spacing := 8 chapter_icon_spacing_importance := (if styling.chapter_spacing_percentage == "" then 70 else clamp(styling.chapter_spacing_percentage or else 70, minimum: 0, maximum: 100)) / 100 chapter_indexes := chapter_indexes(active_count: active_count) chaptertrain_0_count := 0 chaptertrain_1_count := 0 chaptertrain_2_count := 0 chaptertrain_3_count := 0 chaptertrain_4_count := 0 chaptertrain_5_count := 0 chaptertrain_6_count := 0 for c from 0 to 6 do ( if chapter_indexes[c] == -1 then (0) else if chapter_indexes[c] == 0 then (chaptertrain_0_count := chaptertrain_0_count + 1) else if chapter_indexes[c] == 1 then (chaptertrain_1_count := chaptertrain_1_count + 1) else if chapter_indexes[c] == 2 then (chaptertrain_2_count := chaptertrain_2_count + 1) else if chapter_indexes[c] == 3 then (chaptertrain_3_count := chaptertrain_3_count + 1) else if chapter_indexes[c] == 4 then (chaptertrain_4_count := chaptertrain_4_count + 1) else if chapter_indexes[c] == 5 then (chaptertrain_5_count := chaptertrain_5_count + 1) else (chaptertrain_6_count := chaptertrain_6_count + 1) ) chaptertrain_counts_per_textbox := [chaptertrain_0_count, chaptertrain_1_count, chaptertrain_2_count, chaptertrain_3_count, chaptertrain_4_count, chaptertrain_5_count, chaptertrain_6_count] chaptertrain_desired_heights := for x from 0 to active_count do [chaptertrain_counts_per_textbox[x] * (chapter_icon_height + chapter_icon_spacing)] line_height := 1.555 * font_size() hard_line_height := line_height * card_style.level_1_text.line_height_hard soft_line_height := line_height * card_style.level_1_text.line_height_soft last_line_height := line_height * 1.222 / 1.555 content_line_counts := for x from 0 to active_count do [card_style["level_" + (x+1) + "_text"].content_lines] hard_line_counts := for x from 0 to active_count do [length(card_style["level_" + (x+1) + "_text"].layout.paragraphs)-1] soft_line_counts := for x from 0 to active_count do [content_line_counts[x] - hard_line_counts[x] - 1] text_desired_heights := for x from 0 to active_count do [hard_line_counts[x] * hard_line_height + soft_line_counts[x] * soft_line_height + last_line_height] textbox_desired_heights := for x from 0 to active_count do [max(text_desired_heights[x], chapter_icon_spacing_importance * chaptertrain_desired_heights[x])] total_desired_height := for x from 0 to active_count do textbox_desired_heights[x] missing := ( total_desired_height - total_max_possible_height ) / ( active_count + 1 ) factor := total_max_possible_height / total_desired_height ###when resizing, always make small textboxes as big as possible, to make a more balanced looking card textbox_effective_heights := if missing <= 0 then (for x from 0 to active_count do [textbox_desired_heights[x] - missing]) #when increasing size, add equally to each textbox else (for x from 0 to active_count do [textbox_desired_heights[x] * factor]) #when decreasing size, do it in percentage, taking away more from big textboxes #trace("chapter_indexes " + (for c from 0 to 6 do chapter_indexes[c] + " ")) #trace("chaptertrain_counts_per_textbox " + (for x from 0 to 6 do chaptertrain_counts_per_textbox[x] + " ")) #trace("chaptertrain_desired_heights " + (for x from 0 to active_count do chaptertrain_desired_heights[x] + " ")) #trace("content_line_counts " + (for x from 0 to active_count do content_line_counts[x] + " ")) #trace("hard_line_counts " + (for x from 0 to active_count do hard_line_counts[x] + " ")) #trace("soft_line_counts " + (for x from 0 to active_count do soft_line_counts[x] + " ")) #trace("text_desired_heights " + (for x from 0 to active_count do text_desired_heights[x] + " ")) #trace("textbox_desired_heights " + (for x from 0 to active_count do textbox_desired_heights[x] + " ")) #trace("textbox_effective_heights " + (for x from 0 to active_count do textbox_effective_heights[x] + " ")) #trace("card_style.level_1_text.width " + card_style.level_1_text.width) #trace("card_style.level_1_text.content_width " + card_style.level_1_text.content_width) #trace("card_style.level_1_text.content_height " + card_style.level_1_text.content_height) textbox_effective_heights } chapter_info := { chapter_indexes := chapter_indexes(active_count: abilities_count() - 1); index := chapter_indexes[input] if index == -1 then [-1,-1,-1] else ( subindex := if input == 0 then 0 else (for c from 0 to (input-1) do (if chapter_indexes[c] == index then 1 else 0)) count := subindex + 1 + (for c from (input+1) to 6 do (if chapter_indexes[c] == index then 1 else 0)) [index, subindex, count] ) } chapter_top := { hack_to_force_update := card_style.level_1_text.content_width chapter_info := chapter_info(input) if chapter_info[0] == -1 then 1200 else ( index := chapter_info[0] subindex := chapter_info[1] count := chapter_info[2] chapter_icon_height := 57 chapter_icon_spacing := 8 desired_chapter_height := count * chapter_icon_height ###how much total space do the chapter icons want desired_spacing := (count-1) * chapter_icon_spacing ###how much total space do the gaps between chapters want desired_height := desired_chapter_height + desired_spacing ###how much total space do the chapters and gaps between them want textbox_height := card_style["level_" + (index+1) + "_text"].height ###how much space is does the textbox offer missing_height := desired_height - textbox_height ###how much space is missing from the textbox effective_spacing := desired_spacing - max(missing_height, 0) ###how much total space do the gaps between chapters actually have effective_spacing := max(effective_spacing, (count-1) * (chapter_icon_spacing - chapter_icon_height)) ###chapters must always be at least chapter_icon_spacing pixels below the previous one effective_spacing_per_chapter := effective_spacing / max(count-1,1) ###how much space does each gap have (can be negative, chapters will then overlap) effective_height := desired_chapter_height + effective_spacing ###how much total space do the chapters and gaps between and around them want offset := (textbox_height - effective_height)/2 top := card_style["level_" + (index+1) + "_text"].top + offset + subindex * (chapter_icon_height + effective_spacing_per_chapter) #trace("desired_chapter_height " + desired_chapter_height) #trace("desired_spacing " + desired_spacing) #trace("desired_height " + desired_height) #trace("textbox_height " + textbox_height) #trace("missing_height " + missing_height) #trace("effective_spacing " + effective_spacing) #trace("effective_spacing_per_chapter " + effective_spacing_per_chapter) #trace("effective_height " + effective_height) #trace("offset " + offset) #trace("top " + top) top ) } chapter_image := { if contains(styling.custom_chapter_icons, match: ".png") then (un_png(styling.custom_chapter_icons) + "_" + input + ".png") else "chapter/chapter_" + input + ".png" } ############################################################## Extra style options styling field: type: text name: text font size description: Sets the font size of ability textboxes. MUST BE CHANGED MANUALLY IF THERE IS NOT ENOUGH ROOM ON THE CARD. Default is 22. styling field: type: text name: popout art coordinates description: The coordinates for the popout image field, formatted as "left,top,width,height". Used to make the illustration jump in front of the frame. styling field: type: boolean name: stretch art to whole card description: Make the image span the whole card instead of just the visible part. Use this to help make popout effects. initial: no styling field: type: text name: art filter opacity percentage description: Set the opacity percentage for the old paper illustration filter. Opaque is 100, transparent is 0, default is 80. styling field: type: choice name: number of textboxes description: Number of textboxes for chapters and passives. MODIFY CONTENT OF TEXTBOXES IF THIS HAS TROUBLE UPDATING AFTER BEING CHANGED. choice: 1 choice: 2 choice: 3 choice: 4 choice: 5 choice: 6 choice: 7 initial: 3 styling field: type: text name: snap chapter to box description: Sets the chapter icons to the given textbox. For example "1,1,2" puts chapters I and II on Ability 1, and chapter III on Ability 2. Max 7 chapters. styling field: type: text name: chapter spacing percentage description: Determines the behavior of chapter icons when there is not enough space. 0 clumps them together. 100 spreads them apart as much as possible. Default is 70. styling field: type: text name: move chapter icons description: Moves chapter icons down by this many pixels. Use negatives to move up. Formatted as "1,2,3,4,5,6,7" styling field: type: text name: custom chapter icons description: The file path (starting from the data folder) of '.png' images used for chapter icons. Dimensions can be anything, but native is 51x57. Write /PATH/NAME.png here. Save images as /PATH/NAME_1.png, /PATH/NAME_2.png, etc... styling field: type: text name: move separators description: Moves the gray lines separating abilities down by this many pixels. Use negatives to move up. Formatted as "1,2,3,4,5,6" styling field: type: text name: move textbox bottoms description: Moves the bottom of each textbox down by this many pixels. Use negatives to move up. Formatted as "1,2,3,4,5,6,7" styling field: type: text name: default reminder description: Change the reminder text that is generated for new cards. RELOAD DATA IF THIS DOES NOT SHOW UP. Use [number of chapters] to stand in dynamically for the number of chapters. styling field: type: choice name: PT color scheme description: Use the selected color scheme for the PT box on two color cards. Canon is "land" on hybrid cards, "gold" otherwise. choice: canon choice: gold choice: hybrid choice: colored choice: land initial: canon styling field: type: choice name: legend crown description: Use the legend crown? choice: yes choice: if legendary choice: no initial: if legendary styling field: type: boolean name: gold name and type description: Tint the nameline and typeline gold? initial: no include file: /magic-modules.mse-include/stamps/styling_fields_ub include file: /magic-modules.mse-include/rarities/styling_fields include file: /magic-modules.mse-include/watermarks/styling_fields styling field: type: package choice name: overlay description: Should there be an overlay applied, such as foil? match: magic-overlay-*.mse-include required: false include file: /magic-modules.mse-include/information/styling_fields include file: /magic-modules.mse-include/symbol-fonts/styling_fields include file: /magic-modules.mse-include/fonts/styling_fields ############################################################## Card fields include file: /magic-modules.mse-include/information/card_fields include file: /magic-modules.mse-include/stamps/card_fields include file: /magic-modules.mse-include/corners/card_fields include file: /magic-modules.mse-include/watermarks/card_fields include file: /magic-modules.mse-include/namelines/card_fields include file: /magic-modules.mse-include/typelines/card_fields include file: /magic-modules.mse-include/foils/card_fields card style: ############################# Background stuff border color: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 100 mask: border_mask.png card color: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 200 render style: image popup style: in place image: { card_background() } mask: card_mask.png ############################# Image image: left: { if styling.stretch_art_to_whole_card then 0 else 320 } top: { if styling.stretch_art_to_whole_card then 0 else 101 } width: { if styling.stretch_art_to_whole_card then stylesheet.card_width else 277 } height: { if styling.stretch_art_to_whole_card then stylesheet.card_height else 656 } z index: 0 mainframe image: left: { popout_left() } top: { popout_top() } width: { popout_width() } height: { popout_height() } z index: 1010 ############################# Text box chapter text: left: 57 top: 122 width: 259 height: 127 z index: 1000 alignment: middle left font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } scale down to: 7 color: { body_font_color() } symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } scale down to: 7 line height hard: { if is_modal(card.chapter_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.chapter_text) then 1.0 else 1.3 } line height line max: 1.6 line height soft max: 0.9 level 1 text: left: 86 top: 270 width: 230 height: { textbox_heights()[0] + textbox_move(1) } z index: 1000 alignment: middle left font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } #scale down to: 7 color: { body_font_color() } symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } #scale down to: 7 line height hard: { if is_modal(card.level_1_text) then 0.9 else 1.2 } line height line: 1.5 line height soft: 0.9 line height hard max: { if is_modal(card.level_1_text) then 1.0 else 1.3 } line height line max: 1.6 line height soft max: 0.9 level 2 text: left: 86 top: { card_style.level_1_text.bottom } width: 230 height: { if abilities_count() > 1 then textbox_heights()[1] + textbox_move(2) else 0 } z index: 1000 alignment: middle left font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } #scale down to: 7 color: { body_font_color() } symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } #scale down to: 7 line height hard: { if is_modal(card.level_2_text) then 0.9 else 1.2 } line height line: 1.5 line height soft: 0.9 line height hard max: { if is_modal(card.level_2_text) then 1.0 else 1.3 } line height line max: 1.6 line height soft max: 0.9 level 3 text: left: 86 top: { card_style.level_2_text.bottom } width: 230 height: { if abilities_count() > 2 then textbox_heights()[2] + textbox_move(3) else 0 } z index: 1000 alignment: middle left font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } #scale down to: 7 color: { body_font_color() } symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } #scale down to: 7 line height hard: { if is_modal(card.level_3_text) then 0.9 else 1.2 } line height line: 1.5 line height soft: 0.9 line height hard max: { if is_modal(card.level_3_text) then 1.0 else 1.3 } line height line max: 1.6 line height soft max: 0.9 level 4 text: left: 86 top: { card_style.level_3_text.bottom } width: 230 height: { if abilities_count() > 3 then textbox_heights()[3] + textbox_move(4) else 0 } z index: 1000 alignment: middle left font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } #scale down to: 7 color: { body_font_color() } symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } #scale down to: 7 line height hard: { if is_modal(card.level_4_text) then 0.9 else 1.2 } line height line: 1.5 line height soft: 0.9 line height hard max: { if is_modal(card.level_4_text) then 1.0 else 1.3 } line height line max: 1.6 line height soft max: 0.9 level 5 text: left: 86 top: { card_style.level_4_text.bottom } width: 230 height: { if abilities_count() > 4 then textbox_heights()[4] + textbox_move(5) else 0 } z index: 1000 alignment: middle left font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } #scale down to: 7 color: { body_font_color() } symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } #scale down to: 7 line height hard: { if is_modal(card.level_5_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_5_text) then 1.0 else 1.3 } line height line max: 1.6 line height soft max: 0.9 level 6 text: left: 86 top: { card_style.level_5_text.bottom } width: 230 height: { if abilities_count() > 5 then textbox_heights()[5] + textbox_move(6) else 0 } z index: 1000 alignment: middle left font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } #scale down to: 7 color: { body_font_color() } symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } #scale down to: 7 line height hard: { if is_modal(card.level_6_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_6_text) then 1.0 else 1.3 } line height line max: 1.6 line height soft max: 0.9 level 7 text: left: 86 top: { card_style.level_6_text.bottom } width: 230 height: { if abilities_count() > 6 then textbox_heights()[6] + textbox_move(7) else 0 } z index: 1000 alignment: middle left font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } #scale down to: 7 color: { body_font_color() } symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } #scale down to: 7 line height hard: { if is_modal(card.level_7_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_7_text) then 1.0 else 1.3 } line height line max: 1.6 line height soft max: 0.9 separator 8: left: 32 top: 259 width: 315 height: 18 z index: 1010 render style: image image: { set_alpha(alpha:0.7, "/magic-modules.mse-include/separators/" + card.separator_8 + ".png") } mask: { crop_safe("bookmark_mask.png", offset_x: 32, offset_y: 259, width: 315, height: 18) } separator: left: 32 top: { hack_to_force_update := card_style.level_2_text.content_width; card_style.level_2_text.top - 8 + separator_move(1) } width: 327 height: 18 z index: 1010 visible: { abilities_count() > 1 } render style: image image: { set_alpha(alpha:0.7, "/magic-modules.mse-include/separators/" + card.separator + ".png") } mask: { crop_safe("bookmark_mask.png", offset_x: 32, offset_y: card_style.level_2_text.top - 8 + separator_move(1), width: 327, height: 18) } separator 2: left: 32 top: { hack_to_force_update := card_style.level_3_text.content_width; card_style.level_3_text.top - 8 + separator_move(2) } width: 327 height: 18 z index: 1010 visible: { abilities_count() > 2 } render style: image image: { set_alpha(alpha:0.7, "/magic-modules.mse-include/separators/" + card.separator_2 + ".png") } mask: { crop_safe("bookmark_mask.png", offset_x: 32, offset_y: card_style.level_3_text.top - 8 + separator_move(2), width: 327, height: 18) } separator 3: left: 32 top: { hack_to_force_update := card_style.level_4_text.content_width; card_style.level_4_text.top - 8 + separator_move(3) } width: 327 height: 18 z index: 1010 visible: { abilities_count() > 3 } render style: image image: { set_alpha(alpha:0.7, "/magic-modules.mse-include/separators/" + card.separator_3 + ".png") } mask: { crop_safe("bookmark_mask.png", offset_x: 32, offset_y: card_style.level_4_text.top - 8 + separator_move(3), width: 327, height: 18) } separator 4: left: 32 top: { hack_to_force_update := card_style.level_5_text.content_width; card_style.level_5_text.top - 8 + separator_move(4) } width: 327 height: 18 z index: 1010 visible: { abilities_count() > 4 } render style: image image: { set_alpha(alpha:0.7, "/magic-modules.mse-include/separators/" + card.separator_4 + ".png") } mask: { crop_safe("bookmark_mask.png", offset_x: 32, offset_y: card_style.level_5_text.top - 8 + separator_move(4), width: 327, height: 18) } separator 5: left: 32 top: { hack_to_force_update := card_style.level_6_text.content_width; card_style.level_6_text.top - 8 + separator_move(5) } width: 327 height: 18 z index: 1010 visible: { abilities_count() > 5 } render style: image image: { set_alpha(alpha:0.7, "/magic-modules.mse-include/separators/" + card.separator_5 + ".png") } mask: { crop_safe("bookmark_mask.png", offset_x: 32, offset_y: card_style.level_6_text.top - 8 + separator_move(5), width: 327, height: 18) } separator 6: left: 32 top: { hack_to_force_update := card_style.level_7_text.content_width; card_style.level_7_text.top - 8 + separator_move(6) } width: 327 height: 18 z index: 1010 visible: { abilities_count() > 6 } render style: image image: { set_alpha(alpha:0.7, "/magic-modules.mse-include/separators/" + card.separator_6 + ".png") } mask: { crop_safe("bookmark_mask.png", offset_x: 32, offset_y: card_style.level_7_text.top - 8 + separator_move(6), width: 327, height: 18) } ############################# PT pt: left: 502 top: { 704 + pt_font_vertical() } width: 80 height: 37 z index: 900 alignment: center middle shrink-overflow font: name: { pt_font() } size: { pt_font_size() } color: { pt_font_color() } separator color: red ############################################################## Extra card fields extra card field: type: choice name: pt box script: card.card_color editable: false save value: false show statistics: false 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: gold bars script: card.card_color editable: false save value: false show statistics: false extra card field: type: choice name: card stamp background editable: false save value: false show statistics: false choice: card stamp background extra card field: type: choice name: chapter 1 editable: false save value: false choice: chapter 1 extra card field: type: choice name: chapter 2 editable: false save value: false choice: chapter 2 extra card field: type: choice name: chapter 3 editable: false save value: false choice: chapter 3 extra card field: type: choice name: chapter 4 editable: false save value: false choice: chapter 4 extra card field: type: choice name: chapter 5 editable: false save value: false choice: chapter 5 extra card field: type: choice name: chapter 6 editable: false save value: false choice: chapter 6 extra card field: type: choice name: chapter 7 editable: false save value: false choice: chapter 7 extra card field: type: choice name: hybrid bands editable: false save value: false choice: hybrid bands extra card field: type: choice name: art filter editable: false save value: false choice: art filter extra card style: pt box: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 820 visible: { card.pt != "" } render style: image image: script: pure := pure_colors() count := length(pure) color := pt_colors() if color == "gold" and count > 1 then template("m", type: "pt") else if color == "land" and count > 1 then template("c", type: "pt") else if color == "hybrid" and count == 2 then masked_blend(mask: "special_blend_pt.png", dark: template(pure.0, type: "pt"), light: template(pure.1, type: "pt")) else card_ptbox() crown: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 310 visible: { is_crowned() } render style: image image: { card_crown() } gold bars: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 310 visible: { is_gold_barred() } render style: image image: gold_bars.png card stamp background: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 600 render style: image image: { if stamp_shape() == "triangle" then card_stamprim() else card_nonstamprim() } mask: { if stamp_shape() == "round" then "foil_mask_round.png" else "" } chapter 1: left: 26 top: { chapter_top(0) + chapter_move(1) } width: 51 height: 57 z index: 810 render style: image image: { chapter_image(1) } chapter 2: visible: { (styling.snap_chapter_to_box == "" and abilities_count() > 1) or length(split_comma(styling.snap_chapter_to_box)) > 1 } left: 26 top: { chapter_top(1) + chapter_move(2) } width: 51 height: 57 z index: 810 render style: image image: { chapter_image(2) } chapter 3: visible: { (styling.snap_chapter_to_box == "" and abilities_count() > 2) or length(split_comma(styling.snap_chapter_to_box)) > 2 } left: 26 top: { chapter_top(2) + chapter_move(3) } width: 51 height: 57 z index: 810 render style: image image: { chapter_image(3) } chapter 4: visible: { (styling.snap_chapter_to_box == "" and abilities_count() > 3) or length(split_comma(styling.snap_chapter_to_box)) > 3 } left: 26 top: { chapter_top(3) + chapter_move(4) } width: 51 height: 57 z index: 810 render style: image image: { chapter_image(4) } chapter 5: visible: { (styling.snap_chapter_to_box == "" and abilities_count() > 4) or length(split_comma(styling.snap_chapter_to_box)) > 4 } left: 26 top: { chapter_top(4) + chapter_move(5) } width: 51 height: 57 z index: 810 render style: image image: { chapter_image(5) } chapter 6: visible: { (styling.snap_chapter_to_box == "" and abilities_count() > 5) or length(split_comma(styling.snap_chapter_to_box)) > 5 } left: 26 top: { chapter_top(5) + chapter_move(6) } width: 51 height: 57 z index: 810 render style: image image: { chapter_image(6) } chapter 7: visible: { (styling.snap_chapter_to_box == "" and abilities_count() > 6) or length(split_comma(styling.snap_chapter_to_box)) > 6 } left: 26 top: { chapter_top(6) + chapter_move(7) } width: 51 height: 57 z index: 810 render style: image image: { chapter_image(7) } hybrid bands: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 210 visible: script: count := length(pure_colors(card.card_color)) artifact := contains(card.card_color, match: "artifact") hybrid := contains(card.card_color, match: "hybrid") contains(card.card_color, match: "horizontal") and ( (count == 2 and not (artifact and hybrid)) or (count == 1 and (artifact and hybrid)) ) render style: image image: hybrid_bands.png art filter: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 10 render style: image image: { set_alpha("art_filter.png", alpha: get_alpha_percentage(styling.art_filter_opacity_percentage, default: 80)) }