diff --git a/data/magic-rule-card.mse-style/card_sample.png b/data/magic-rule-card.mse-style/card_sample.png
new file mode 100644
index 000000000..7d5b0b480
Binary files /dev/null and b/data/magic-rule-card.mse-style/card_sample.png differ
diff --git a/data/magic-rule-card.mse-style/divider.png b/data/magic-rule-card.mse-style/divider.png
new file mode 100644
index 000000000..0af30a60c
Binary files /dev/null and b/data/magic-rule-card.mse-style/divider.png differ
diff --git a/data/magic-rule-card.mse-style/image_borderless_mask.png b/data/magic-rule-card.mse-style/image_borderless_mask.png
new file mode 100644
index 000000000..ca75d5ca3
Binary files /dev/null and b/data/magic-rule-card.mse-style/image_borderless_mask.png differ
diff --git a/data/magic-rule-card.mse-style/image_mask.png b/data/magic-rule-card.mse-style/image_mask.png
new file mode 100644
index 000000000..3fa175058
Binary files /dev/null and b/data/magic-rule-card.mse-style/image_mask.png differ
diff --git a/data/magic-rule-card.mse-style/pinlines.png b/data/magic-rule-card.mse-style/pinlines.png
new file mode 100644
index 000000000..cb91e2574
Binary files /dev/null and b/data/magic-rule-card.mse-style/pinlines.png differ
diff --git a/data/magic-rule-card.mse-style/pt.png b/data/magic-rule-card.mse-style/pt.png
new file mode 100644
index 000000000..473bbeba6
Binary files /dev/null and b/data/magic-rule-card.mse-style/pt.png differ
diff --git a/data/magic-rule-card.mse-style/stamp_border_mask_round.png b/data/magic-rule-card.mse-style/stamp_border_mask_round.png
new file mode 100644
index 000000000..613165915
Binary files /dev/null and b/data/magic-rule-card.mse-style/stamp_border_mask_round.png differ
diff --git a/data/magic-rule-card.mse-style/stamp_border_mask_triangle.png b/data/magic-rule-card.mse-style/stamp_border_mask_triangle.png
new file mode 100644
index 000000000..7cfaa46bd
Binary files /dev/null and b/data/magic-rule-card.mse-style/stamp_border_mask_triangle.png differ
diff --git a/data/magic-rule-card.mse-style/stamp_none.png b/data/magic-rule-card.mse-style/stamp_none.png
new file mode 100644
index 000000000..374ada875
Binary files /dev/null and b/data/magic-rule-card.mse-style/stamp_none.png differ
diff --git a/data/magic-rule-card.mse-style/stamp_round.png b/data/magic-rule-card.mse-style/stamp_round.png
new file mode 100644
index 000000000..4d9e361a9
Binary files /dev/null and b/data/magic-rule-card.mse-style/stamp_round.png differ
diff --git a/data/magic-rule-card.mse-style/stamp_shadow_none.png b/data/magic-rule-card.mse-style/stamp_shadow_none.png
new file mode 100644
index 000000000..89e8600da
Binary files /dev/null and b/data/magic-rule-card.mse-style/stamp_shadow_none.png differ
diff --git a/data/magic-rule-card.mse-style/stamp_shadow_round.png b/data/magic-rule-card.mse-style/stamp_shadow_round.png
new file mode 100644
index 000000000..ae3ec90a9
Binary files /dev/null and b/data/magic-rule-card.mse-style/stamp_shadow_round.png differ
diff --git a/data/magic-rule-card.mse-style/stamp_shadow_triangle.png b/data/magic-rule-card.mse-style/stamp_shadow_triangle.png
new file mode 100644
index 000000000..36dce9931
Binary files /dev/null and b/data/magic-rule-card.mse-style/stamp_shadow_triangle.png differ
diff --git a/data/magic-rule-card.mse-style/stamp_textbox_mask_none.png b/data/magic-rule-card.mse-style/stamp_textbox_mask_none.png
new file mode 100644
index 000000000..31f5730c7
Binary files /dev/null and b/data/magic-rule-card.mse-style/stamp_textbox_mask_none.png differ
diff --git a/data/magic-rule-card.mse-style/stamp_textbox_mask_round.png b/data/magic-rule-card.mse-style/stamp_textbox_mask_round.png
new file mode 100644
index 000000000..0c6171daa
Binary files /dev/null and b/data/magic-rule-card.mse-style/stamp_textbox_mask_round.png differ
diff --git a/data/magic-rule-card.mse-style/stamp_textbox_mask_triangle.png b/data/magic-rule-card.mse-style/stamp_textbox_mask_triangle.png
new file mode 100644
index 000000000..6c788bbae
Binary files /dev/null and b/data/magic-rule-card.mse-style/stamp_textbox_mask_triangle.png differ
diff --git a/data/magic-rule-card.mse-style/stamp_triangle.png b/data/magic-rule-card.mse-style/stamp_triangle.png
new file mode 100644
index 000000000..7787eb0a1
Binary files /dev/null and b/data/magic-rule-card.mse-style/stamp_triangle.png differ
diff --git a/data/magic-rule-card.mse-style/stampline.png b/data/magic-rule-card.mse-style/stampline.png
new file mode 100644
index 000000000..1efbeff43
Binary files /dev/null and b/data/magic-rule-card.mse-style/stampline.png differ
diff --git a/data/magic-rule-card.mse-style/style b/data/magic-rule-card.mse-style/style
new file mode 100644
index 000000000..1380fc928
--- /dev/null
+++ b/data/magic-rule-card.mse-style/style
@@ -0,0 +1,654 @@
+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") }
diff --git a/data/magic-rule-card.mse-style/textbox_background.png b/data/magic-rule-card.mse-style/textbox_background.png
new file mode 100644
index 000000000..2f0644416
Binary files /dev/null and b/data/magic-rule-card.mse-style/textbox_background.png differ
diff --git a/data/magic-rule-card.mse-style/typeline.png b/data/magic-rule-card.mse-style/typeline.png
new file mode 100644
index 000000000..d93fc7c46
Binary files /dev/null and b/data/magic-rule-card.mse-style/typeline.png differ
diff --git a/data/magic-rule-card.mse-style/typeline_inner.png b/data/magic-rule-card.mse-style/typeline_inner.png
new file mode 100644
index 000000000..3b11759fa
Binary files /dev/null and b/data/magic-rule-card.mse-style/typeline_inner.png differ