mse version: 2.1.2 game: magic short name: Rules Card full name: Mechanics Reminder icon: card_sample.png position hint: 999 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: 744 card height: 1039 card dpi: 297 ### blanks by GenevensiS ### code by GenevensiS ############################################################## Extra scripts init script: card_shape := { if styling.count_as == "normal card" then "normal" else styling.count_as } swap_fonts_pt_default := [ name: {"Beleren Bold"}, size: {28.0}, color: {"black"}, vertical: {0}, italic: {"Beleren Bold"} ] swap_fonts_body_default := [ name: {"MPlantin"}, size: {27.0}, color: { "white" }, vertical: {0}, italic: {"MPlantin-Italic"} ] swap_fonts_name_default := [ name: {"Beleren Small Caps Bold"}, size: {34.0}, color: {"white"}, vertical: {0}, italic: {""} ] information_secondary_offset_pt_left_1 := { -8 } invert_watermark_1 := { true } is_promo := { styling.promo } is_unsorted := { styling.remove_from_autocount } chop_top := { if styling.chop_text_box == "-" then 0 else clamp(styling.chop_text_box, maximum: 260, minimum: -460) } name_margin := { casting_cost_margin := if card_style.casting_cost.content_width == 0 then 0 else card_style.casting_cost.content_width + 7 rarity_margin := if styling.visible_rarity then rarity_size() else 0 max(casting_cost_margin, rarity_margin) } popout_left := { split := split_comma(styling.popout_image_coordinates); if length(split) > 3 and split.0 != "" then max(min(split.0,1500),-500) else 0 } popout_top := { split := split_comma(styling.popout_image_coordinates); if length(split) > 3 and split.1 != "" then max(min(split.1,2000),-500) else 0 } popout_width := { split := split_comma(styling.popout_image_coordinates); if length(split) > 3 and split.2 != "" then max(min(split.2,1500),0) else 0 } popout_height := { split := split_comma(styling.popout_image_coordinates); if length(split) > 3 and split.3 != "" then max(min(split.3,2000),0) else 0 } active_abilities := { (to_int(styling.number_of_textboxes) or else digital_map[styling.number_of_textboxes] or else 7) - 1 } typebox_bottom := { 660 + chop_top() } textbox_image := { alpha_value := if styling.textbox_opacity_percentage == "" then 80 else to_number(styling.textbox_opacity_percentage) or else 80 alpha_value_clamped := if alpha_value < 0 then 0 else if alpha_value <= 100 then alpha_value/100 else 1 set_alpha(recolor_image("textbox_background.png", color: styling.textbox_color), alpha: alpha_value_clamped) } divider_height := { count := active_abilities() if count == 7 then 16 else if count == 6 then 18 else if count == 5 then 20 else 22 } alt_text := { true } alt_text_script := { count := active_abilities() if count == 0 then forward_editor(field: card.level_1_text) else if count == 1 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text) else if count == 2 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text) else if count == 3 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 count == 4 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 count == 5 then combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text) else combined_editor(field1: card.level_1_text, separator1: "\n", field2: card.level_2_text, separator2: "\n", field3: card.level_3_text, separator3: "\n", field4: card.level_4_text, separator4: "\n", field5: card.level_5_text, separator5: "\n", field6: card.level_6_text, separator6: "\n", field7: card.level_7_text) } text_filter := text_filter + { if input == "" then "​" else input } rarity_right := { split := split_comma(styling.rarity_offsets); (if length(split) > 0 and split.0 != "" then clamp(split.0, minimum: -500, maximum: 500) else 0) + 683 } rarity_top := { split := split_comma(styling.rarity_offsets); (if length(split) > 1 and split.1 != "" then clamp(split.1, minimum: -500, maximum: 500) else 0) + typebox_bottom() - 69 } rarity_size := { split := split_comma(styling.rarity_offsets); (if length(split) > 2 and split.2 != "" then clamp(split.2, minimum: -52, maximum: 100) else 0) + 52 } rarity_left := { rarity_right() - rarity_size() } art_left := { if styling.stretch_image_to_whole_card or styling.border != "yes" then 0 else 30 } art_top := { if styling.stretch_image_to_whole_card or styling.border != "yes" then 0 else 30 } art_width := { if styling.stretch_image_to_whole_card or styling.border != "yes" then stylesheet.card_width else 684 } art_height := { if styling.stretch_image_to_whole_card or styling.border == "no" then stylesheet.card_height else if styling.border == "only copyright" then 965 else 935 } art_mask := { if styling.stretch_image_to_whole_card or styling.border == "no" then "" else ( image := "image_" + (if styling.border == "only copyright" then "borderless_" else "") + "mask.png" crop(image, offset_x: art_left(), offset_y: art_top(), width: art_width(), height: art_height()) ) } ############################################################## Extra style options styling field: type: text name: popout image 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 image 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: boolean name: center name description: Center the name on the card. initial: yes styling field: type: text name: namebox opacity percentage description: Set the opacity percentage for the namebox background. Opaque is 100, transparent is 0, default is 100. include file: /magic-modules.mse-include/texts/styling_fields styling field: type: choice name: number of textboxes description: How many rules textboxes should there be? MODIFY CONTENTS 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: 1 styling field: type: text name: textbox opacity percentage description: Set the opacity percentage for the textbox background. Opaque is 100, transparent is 0, default is 80. styling field: type: color name: textbox color description: Use the specified color for the textbox background. choice: name: black color: rgb(0,0,0) choice: name: white color: rgb(255,255,255) initial: black styling field: type: boolean name: visible rarity description: Should the rarity symbol be visible? initial: no 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 styling field: type: choice name: border description: Use a border? choice: yes choice: only copyright choice: no initial: yes styling field: type: choice name: count as description: What should this card be counted as by the autocount script and stats page? choice: normal card choice: token choice: emblem choice: designation choice: counter choice: rulestip choice: checklist initial: rulestip include file: /magic-modules.mse-include/information/styling_fields include file: /magic-modules.mse-include/symbol-fonts/styling_fields styling field: type: boolean name: apply custom fonts description: Enable to attempt to use custom fonts given below initial: no styling field: type: text name: custom name font description: Formatted as "font name;font size;font color;vertical offset;italic font name" last 4 are optional. color can be a name or R,G,B,A numbers. styling field: type: text name: custom body font description: Formatted as "font name;font size;font color;vertical offset;italic font name" last 4 are optional. color can be a name or R,G,B,A numbers. styling field: type: text name: custom pt font description: Formatted as "font name;font size;font color;vertical offset;italic font name" last 4 are optional. color can be a name or R,G,B,A numbers. ############################################################## 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 card style: ############################# Background stuff border color: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 850 visible: { styling.border != "no" } mask: { "/magic-modules.mse-include/borders/744x1039/m15/normal/" + (if styling.border == "yes" then "base.png" else "borderless.png") } ############################# Name line name: left: { 64 + (if styling.center_name then name_margin() else 0) } top: { typebox_bottom() - 70 + name_font_vertical() } right: { 681 - name_margin() } height: 52 z index: 900 alignment: { if styling.center_name then "middle center shrink-overflow" else "middle left shrink-overflow" } font: name: { name_font() } italic name: { name_font_italic() } size: { name_font_size() } scale down to: 12 color: { name_font_color() } casting cost: right: 683 top: { typebox_bottom() - 70 } width: { max(70, card_style.casting_cost.content_width + 12) } height: 52 z index: 910 alignment: middle right always symbol: true font: name: MPlantin size: 34 color: black symbol font: name: { styling.casting_cost_mana_symbols } size: 31 rarity: right: { rarity_right() } top: { rarity_top() } width: { if styling.visible_rarity then rarity_size() else 0 } height: { rarity_size() } z index: 910 alignment: middle right visible: { styling.visible_rarity } render style: image include file: /magic-modules.mse-include/rarities/choice_images ############################# Image image: left: { art_left() } top: { art_top() } width: { art_width() } height: { art_height() } z index: 0 mask: { art_mask() } mainframe image: left: { popout_left() } top: { popout_top() } width: { popout_width() } height: { popout_height() } z index: 1010 ############################# Text box text: left: 59 width: 625 top: { typebox_bottom() - 2 + body_font_vertical() } bottom: { if is_stamped() then 932 else 950 } z index: 900 alignment: script: if (styling.center_text == "short text only" and card_style.text.content_lines <= styling.number_of_textboxes) 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: 12 color: { body_font_color() } symbol font: name: { styling.text_box_mana_symbols } size: { body_font_size() } scale down to: 12 padding left: 4 padding right: 4 line height hard: 1.2 line height line: 1.6 line height soft: 0.9 line height hard max: 1.3 line height line max: 2.1 line height soft max: 0.9 ############################# PT pt: left: 597 top: { 932 + pt_font_vertical() } width: 91 height: 46 z index: 970 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 editable: false save value: false show statistics: false choice: pt box extra card field: type: choice name: typeline editable: false save value: false show statistics: false choice: typeline extra card field: type: choice name: typeline background editable: false save value: false show statistics: false choice: typeline background extra card field: type: choice name: pinlines editable: false save value: false show statistics: false choice: pinlines extra card field: type: choice name: stampline editable: false save value: false show statistics: false choice: stampline extra card field: type: choice name: card stamp rim editable: false save value: false show statistics: false choice: card stamp rim extra card field: type: choice name: card stamp rim shadow editable: false save value: false show statistics: false choice: card stamp rim shadow 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: divider 1 editable: false save value: false show statistics: false choice: divider 1 extra card field: type: choice name: divider 2 editable: false save value: false show statistics: false choice: divider 2 extra card field: type: choice name: divider 3 editable: false save value: false show statistics: false choice: divider 3 extra card field: type: choice name: divider 4 editable: false save value: false show statistics: false choice: divider 4 extra card field: type: choice name: divider 5 editable: false save value: false show statistics: false choice: divider 5 extra card field: type: choice name: divider 6 editable: false save value: false show statistics: false choice: divider 6 extra card field: type: color name: card stamp border script: card.border_color editable: false save value: false show statistics: false extra card field: type: choice name: textbox background editable: false save value: false show statistics: false choice: textbox background extra card field: type: choice name: textbox background bottom editable: false save value: false show statistics: false choice: textbox background bottom extra card style: pt box: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 960 visible: { card.pt != "" } render style: image image: pt.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" } mask: script: if styling.border == "no" then "" else invert_image("/magic-modules.mse-include/borders/744x1039/m15/normal/" + (if styling.border == "yes" then "base.png" else "borderless.png")) card stamp border: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 830 visible: { is_stamped() and styling.border != "no" } mask: { "stamp_border_mask_" + (if stamp_shape() == "triangle" then "triangle.png" else "round.png") } card stamp rim: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 840 render style: image image: { shape := stamp_shape(); "stamp_" + (if shape == "triangle" then "triangle.png" else if shape == "none" then "none.png" else "round.png") } card stamp rim shadow: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 800 render style: image image: { shape := stamp_shape(); "stamp_shadow_" + (if shape == "triangle" then "triangle.png" else if shape == "none" then "none.png" else "round.png") } stampline: left: 0 top: 0 width: { stylesheet.card_width } height: { stylesheet.card_height } z index: 800 render style: image image: stampline.png typeline: left: 0 bottom: { typebox_bottom() } width: { stylesheet.card_width } height: 90 z index: 800 render style: image image: typeline.png typeline background: left: 0 bottom: { typebox_bottom() } width: { stylesheet.card_width } height: 90 z index: 810 render style: image image: { set_alpha("typeline_inner.png", alpha: get_alpha_percentage(styling.namebox_opacity_percentage, default: 100)) } divider 1: left: 0 width: { stylesheet.card_width } top: { if length(card_style.text.layout.separators) or else 0 > 0 then card_style.text.top + card_style.text.layout.separators[0] - divider_height()/2 else 1500 } height: { divider_height() } z index: 840 visible: { active_abilities() > 0 } render style: image image: divider.png divider 2: left: 0 width: { stylesheet.card_width } top: { if length(card_style.text.layout.separators) or else 0 > 1 then card_style.text.top + card_style.text.layout.separators[1] - divider_height()/2 else 1500 } height: { divider_height() } z index: 840 visible: { active_abilities() > 1 } render style: image image: divider.png divider 3: left: 0 width: { stylesheet.card_width } top: { if length(card_style.text.layout.separators) or else 0 > 2 then card_style.text.top + card_style.text.layout.separators[2] - divider_height()/2 else 1500 } height: { divider_height() } z index: 840 visible: { active_abilities() > 2 } render style: image image: divider.png divider 4: left: 0 width: { stylesheet.card_width } top: { if length(card_style.text.layout.separators) or else 0 > 3 then card_style.text.top + card_style.text.layout.separators[3] - divider_height()/2 else 1500 } height: { divider_height() } z index: 840 visible: { active_abilities() > 3 } render style: image image: divider.png divider 5: left: 0 width: { stylesheet.card_width } top: { if length(card_style.text.layout.separators) or else 0 > 4 then card_style.text.top + card_style.text.layout.separators[4] - divider_height()/2 else 1500 } height: { divider_height() } z index: 840 visible: { active_abilities() > 4 } render style: image image: divider.png divider 6: left: 0 width: { stylesheet.card_width } top: { if length(card_style.text.layout.separators) or else 0 > 5 then card_style.text.top + card_style.text.layout.separators[5] - divider_height()/2 else 1500 } height: { divider_height() } z index: 840 visible: { active_abilities() > 5 } render style: image image: divider.png pinlines: left: 0 width: { stylesheet.card_width } top: { typebox_bottom() } bottom: 949 z index: 800 render style: image image: pinlines.png textbox background: left: 55 width: 634 top: { typebox_bottom() - 10 } bottom: 946 z index: 600 render style: image image: { textbox_image() } textbox background bottom: left: 55 width: 634 top: 946 bottom: 959 z index: 600 render style: image image: { textbox_image() } mask: { shape := stamp_shape(); "stamp_textbox_mask_" + (if shape == "triangle" then "triangle.png" else if shape == "none" then "none.png" else "round.png") }