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: {24.0}, color: {"black"}, vertical: {0}, italic: {"MPlantin-Italic"} ] 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: {""} ] card_hybrid_2 := { if type == "loyaltycost" then template(colors.0) else 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 := { if type == "loyaltycost" then crop_safe("loyaltycost/" + input + "loyaltycost.png", offset_x: 0, offset_y: 400-loyaltycost_move(number), width: 646, height: 902) else 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_loyaltycostbox := { color_background(input: card.card_color, type: "loyaltycost", 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" } chop_top := { split := split_comma(styling.chop_text_box); if length(split) > 0 and split[0] != "" and split[0] != "-" then clamp(split[0], maximum:500, minimum:-500) else 0 } chop_bottom := { split := split_comma(styling.chop_text_box); if length(split) > 1 and split[1] != "" and split[1] != "-" then clamp(split[1], maximum:500, minimum:-500) else 0 } chop_right := { split := split_comma(styling.chop_text_box); if length(split) > 2 and split[2] != "" and split[2] != "-" then clamp(split[2], maximum:500, minimum:-500) else 0 } mainframe_walker := { true } mainframe_walker_text_script := { if styling.textbox_layout == "6 textboxes" 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 if styling.textbox_layout == "5 textboxes + flavor text" 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.flavor_text) else if styling.textbox_layout == "5 textboxes" 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 styling.textbox_layout == "4 textboxes + flavor text" 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.flavor_text) else if styling.textbox_layout == "4 textboxes" 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 styling.textbox_layout == "3 textboxes + flavor text" 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.flavor_text) else if styling.textbox_layout == "3 textboxes" then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text) else if styling.textbox_layout == "2 textboxes + flavor text" then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.flavor_text) else if styling.textbox_layout == "2 textboxes" then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text) else if styling.textbox_layout == "1 textbox + flavor text" then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.flavor_text) else if styling.textbox_layout == "1 textbox" then forward_editor(field: card.level_1_text) else forward_editor(field: card.flavor_text) } margin_left := { if input == "lv1" then (if card.loyalty_cost_1 == "" then 0 else 420) else if input == "lv2" then (if card.loyalty_cost_2 == "" then 0 else 420) else if input == "lv3" then (if card.loyalty_cost_3 == "" then 0 else 420) else if input == "lv4" then (if card.loyalty_cost_4 == "" then 0 else 420) else if input == "lv5" then (if card.loyalty_cost_5 == "" then 0 else 420) else if input == "lv6" then (if card.loyalty_cost_6 == "" then 0 else 420) else 0 } text_filter := remove_tag@(tag: "") + text_filter + { apply_margins(input, name:margin_code) } + { add_spacers(input, name:margin_code) } flavor_text_filter := replace@(match: "​", replace: "") + flavor_text_filter + { if contains(styling.textbox_layout, match: "flavor") and remove_tags(input) == "" then input + "​" else input } add_spacers := { #The 'then ""' has a zero-width space inside if input == "" and level_is_active(name) then "​" else input } level_is_active := { if input == "lv6" then abilities_count() >= 6 else if input == "lv5" then abilities_count() >= 5 else if input == "lv4" then abilities_count() >= 4 else if input == "lv3" then abilities_count() >= 3 else if input == "lv2" then abilities_count() >= 2 else true } ability_top := { if card_style.text.layout.blocks[input-1].bottom or else 0 > 0 then to_int(card_style.text.top) + to_int(card_style.text.layout.blocks[input-1].top) else stylesheet.card_height * 1.2 } ability_center := { if card_style.text.layout.blocks[input-1].bottom or else 0 > 0 then to_int(card_style.text.top) + to_int(card_style.text.layout.blocks[input-1].middle) else stylesheet.card_height * 1.2 } ability_bottom := { if card_style.text.layout.blocks[input-1].bottom or else 0 > 0 then to_int(card_style.text.top) + to_int(card_style.text.layout.blocks[input-1].bottom) else stylesheet.card_height * 1.2 } abilities_count := { if contains(styling.textbox_layout, match: "1") then 1 else if contains(styling.textbox_layout, match: "3") then 3 else if contains(styling.textbox_layout, match: "4") then 4 else if contains(styling.textbox_layout, match: "2") then 2 else if contains(styling.textbox_layout, match: "5") then 5 else if contains(styling.textbox_layout, match: "6") then 6 else 0 } loyal_move := { split := split_comma(styling.move_loyalty_costs); if length(split) > input-1 and split[input-1] != "" and split[input-1] != "-" then clamp(split[input-1], maximum:500, minimum:-500) 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 } stripe_top := { -to_int(( -ability_bottom(input) - ability_top(input+1) )/2) - 2 + separator_move(input) } loyaltycost_move := { clamp(ability_center(number) - 705 + loyal_move(number), minimum: -400, maximum: 400) } popout_left := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.0 != "" then clamp(split.0, minimum: -500, maximum: 700) 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: 1000) 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: 1000) 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: 1500) 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 > 1702 then "" else crop(input, offset_x: offset_x, offset_y: offset_y, width: width, height: height) } ############################################################## Extra style options 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: textbox layout description: Number of textboxes for abilities and passives. MODIFY CONTENT OF TEXTBOXES IF THIS HAS TROUBLE UPDATING AFTER BEING CHANGED. choice: only flavor text choice: 1 textbox choice: 1 textbox + flavor text choice: 2 textboxes choice: 2 textboxes + flavor text choice: 3 textboxes choice: 3 textboxes + flavor text choice: 4 textboxes choice: 4 textboxes + flavor text choice: 5 textboxes choice: 5 textboxes + flavor text choice: 6 textboxes initial: 1 textbox include file: /magic-modules.mse-include/texts/styling_fields styling field: type: text name: move separators description: Moves the stripes between abilities down by this many pixels. Use negatives to move up. Formatted as "1,2,3,4,5" styling field: type: text name: move loyalty costs description: Moves loyalty costs down by this many pixels. Use negatives to move up. Formatted as "1,2,3,4,5,6" 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 card style: ############################# Background stuff border color: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } radius: 31 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 49 } top: { if styling.stretch_art_to_whole_card then 0 else 100 } width: { if styling.stretch_art_to_whole_card then stylesheet.card_width else 548 } height: { if styling.stretch_art_to_whole_card then stylesheet.card_height else 401 } z index: 0 mask: { if styling.stretch_art_to_whole_card then "" else "image_mask.png" } mainframe image: left: { popout_left() } top: { popout_top() } width: { popout_width() } height: { popout_height() } z index: 1010 ############################# Text box text: left: 50 top: { 570 + chop_top() + body_font_vertical() } right: { 594 - chop_right() } bottom: { (if is_stamped() then 812 else 824) - chop_bottom() } z index: 900 padding left: 6 padding right: 4 line height hard: { if is_modal(card.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.text) then 1.0 else 1.3 } line height line max: 1.6 alignment: script: if (styling.center_text == "short text only" and card_style.text.content_lines <= 2) or styling.center_text == "always" then "middle center" else "middle left" font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } scale down to: 11 color: { body_font_color() } symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } scale down to: 11 loyalty cost 1: left: 19 top: { ability_center(1) - 24 + loyal_move(1) } width: { if abilities_count() >= 1 then 46 else 0 } height: 48 z index: 1010 alignment: center middle shrink-overflow font: name: Beleren Bold size: 26 scale down to: 12 color: black loyalty cost 2: left: 19 top: { ability_center(2) - 24 + loyal_move(2) } width: { if abilities_count() >= 2 then 46 else 0 } height: 48 z index: 1010 alignment: center middle shrink-overflow font: name: Beleren Bold size: 26 scale down to: 12 color: black loyalty cost 3: left: 19 top: { ability_center(3) - 24 + loyal_move(3) } width: { if abilities_count() >= 3 then 46 else 0 } height: 48 z index: 1010 alignment: center middle shrink-overflow font: name: Beleren Bold size: 26 scale down to: 12 color: black loyalty cost 4: left: 19 top: { ability_center(4) - 24 + loyal_move(4) } width: { if abilities_count() >= 4 then 46 else 0 } height: 48 z index: 1010 alignment: center middle shrink-overflow font: name: Beleren Bold size: 26 scale down to: 12 color: black loyalty cost 5: left: 19 top: { ability_center(5) - 24 + loyal_move(5) } width: { if abilities_count() >= 5 then 46 else 0 } height: 48 z index: 1010 alignment: center middle shrink-overflow font: name: Beleren Bold size: 26 scale down to: 12 color: black loyalty cost 6: left: 19 top: { ability_center(6) - 24 + loyal_move(6) } width: { if abilities_count() >= 6 then 46 else 0 } height: 48 z index: 1010 alignment: center middle shrink-overflow font: name: Beleren Bold size: 26 scale down to: 12 color: black ############################# PT pt: left: 516 top: { 810 + pt_font_vertical() } width: 81 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: foil layer editable: false save value: false show statistics: false choice: foil layer 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: text name: colon 1 editable: false save value: false script: ":" extra card field: type: text name: colon 2 editable: false save value: false script: ":" extra card field: type: text name: colon 3 editable: false save value: false script: ":" extra card field: type: text name: colon 4 editable: false save value: false script: ":" extra card field: type: text name: colon 5 editable: false save value: false script: ":" extra card field: type: text name: colon 6 editable: false save value: false script: ":" extra card field: type: choice name: loyalty cost box 1 editable: false save value: false choice: loyalty cost box 1 extra card field: type: choice name: loyalty cost box 2 editable: false save value: false choice: loyalty cost box 2 extra card field: type: choice name: loyalty cost box 3 editable: false save value: false choice: loyalty cost box 3 extra card field: type: choice name: loyalty cost box 4 editable: false save value: false choice: loyalty cost box 4 extra card field: type: choice name: loyalty cost box 5 editable: false save value: false choice: loyalty cost box 5 extra card field: type: choice name: loyalty cost box 6 editable: false save value: false choice: loyalty cost box 6 extra card field: type: choice name: textbox stripe separator 1 editable: false save value: false choice: textbox stripe separator 1 extra card field: type: choice name: textbox stripe separator 2 editable: false save value: false choice: textbox stripe separator 2 extra card field: type: choice name: textbox stripe separator 3 editable: false save value: false choice: textbox stripe separator 3 extra card field: type: choice name: textbox stripe separator 4 editable: false save value: false choice: textbox stripe separator 4 extra card field: type: choice name: textbox stripe separator 5 editable: false save value: false choice: textbox stripe separator 5 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 foil layer: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 1050 visible: { styling.overlay != "none" and styling.overlay != "" } render style: image image: { if styling.overlay == "" then "" else styling.overlay + "/overlay.png" } card stamp background: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 600 render style: image image: { if is_stamped() then card_stamprim() else card_nonstamprim() } loyalty cost box 1: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 810 visible: { card.loyalty_cost_1 != "" and abilities_count() >= 1 } render style: image image: { card_loyaltycostbox(number: 1) } loyalty cost box 2: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 810 visible: { card.loyalty_cost_2 != "" and abilities_count() >= 2 } render style: image image: { card_loyaltycostbox(number: 2) } loyalty cost box 3: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 810 visible: { card.loyalty_cost_3 != "" and abilities_count() >= 3} render style: image image: { card_loyaltycostbox(number: 3) } loyalty cost box 4: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 810 visible: { card.loyalty_cost_4 != "" and abilities_count() >= 4 } render style: image image: { card_loyaltycostbox(number: 4) } loyalty cost box 5: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 810 visible: { card.loyalty_cost_5 != "" and abilities_count() >= 5 } render style: image image: { card_loyaltycostbox(number: 5) } loyalty cost box 6: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 810 visible: { card.loyalty_cost_6 != "" and abilities_count() >= 6 } render style: image image: { card_loyaltycostbox(number: 6) } colon 1: left: 83 top: { ability_center(1) - 25 + loyal_move(1) } width: 11 height: 44 z index: 1010 visible: { card.loyalty_cost_1 != "" and abilities_count() >= 1 } font: name: Beleren Bold size: 26 color: black alignment: center middle colon 2: left: 83 top: { ability_center(2) - 25 + loyal_move(2) } width: 11 height: 44 z index: 1010 visible: { card.loyalty_cost_2 != "" and abilities_count() >= 2 } font: name: Beleren Bold size: 26 color: black alignment: center middle colon 3: left: 83 top: { ability_center(3) - 25 + loyal_move(3) } width: 11 height: 44 z index: 1010 visible: { card.loyalty_cost_3 != "" and abilities_count() >= 3 } font: name: Beleren Bold size: 26 color: black alignment: center middle colon 4: left: 83 top: { ability_center(4) - 25 + loyal_move(4) } width: 11 height: 44 z index: 1010 visible: { card.loyalty_cost_4 != "" and abilities_count() >= 4 } font: name: Beleren Bold size: 26 color: black alignment: center middle colon 5: left: 83 top: { ability_center(5) - 25 + loyal_move(5) } width: 11 height: 44 z index: 1010 visible: { card.loyalty_cost_5 != "" and abilities_count() >= 5 } font: name: Beleren Bold size: 26 color: black alignment: center middle colon 6: left: 83 top: { ability_center(6) - 25 + loyal_move(6) } width: 11 height: 44 z index: 1010 visible: { card.loyalty_cost_6 != "" and abilities_count() >= 6 } font: name: Beleren Bold size: 26 color: black alignment: center middle textbox stripe separator 1: left: 77 width: 492 top: { stripe_top(1) } height: 6 z index: 710 visible: { abilities_count() >= 2 } render style: image image: stripe_1.png textbox stripe separator 2: left: 77 width: 492 top: { stripe_top(2) } height: 6 z index: 710 visible: { abilities_count() >= 3 } render style: image image: stripe_2.png textbox stripe separator 3: left: 77 width: 492 top: { stripe_top(3) } height: 6 z index: 710 visible: { abilities_count() >= 4 } render style: image image: stripe_1.png textbox stripe separator 4: left: 77 width: 492 top: { stripe_top(4) } height: 6 z index: 710 visible: { abilities_count() >= 5 } render style: image image: stripe_2.png textbox stripe separator 5: left: 77 width: 492 top: { stripe_top(5) } height: 6 z index: 710 visible: { abilities_count() >= 6 } render style: image image: stripe_1.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)) }