mse version: 2.1.2
game: magic
short name: The Ring Rules
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:
swap_fonts_body_default :=
[
name: {"MPlantin"},
size: {27.0},
color: { "white" },
vertical: {0},
italic: {"MPlantin-Italic"}
]
swap_fonts_name_default :=
[
name: {"Beleren Bold"},
size: {30.0},
color: {"white"},
vertical: {0},
italic: {""}
]
card_stamp_default :=
{
shape := "universes beyond"
stamp_behavior := styling.stamp_behavior or else set.stamp_behavior
if stamp_behavior == "default" or stamp_behavior == "flatstamped default" then stamp_behavior := set.stamp_behavior
rare_face := is_rare(field:field)
stamp_behavior_checks[stamp_behavior](rare_face:rare_face, shape:shape)
}@(field:1)
invert_watermark_1 := { true }
is_promo := { styling.promo }
is_unsorted := { styling.remove_from_autocount }
chop_top := { if styling.chop_text_box == "-" then 0 else max(min(to_int(styling.chop_text_box),400),-450) }
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 }
font_size_cap :=
{
if styling.font_size_cap == "" then 26 else to_number(styling.font_size_cap)
}
active_abilities :=
{
(to_int(styling.number_of_textboxes) or else digital_map[styling.number_of_textboxes] or else 7) - 1
}
typebox_bottom :=
{
498 + 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 not styling.notches then 7
else if count == 5 then 18
else if count == 6 or count == 7 then 16
else 20
}
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() - 67 }
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() }
############################################################## 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
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: 4
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: notches
description: Use notches on the ability dividers?
initial: yes
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: boolean
name: border
description: Use a border around the card?
initial: yes
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
card style:
############################# Background stuff
border color:
left: 0
top: 0
width: { stylesheet.card_width }
height: { stylesheet.card_height }
z index: 100
mask: { if styling.border then "border_mask.png" else "border_small_mask.png" }
############################# Name line
name:
left: { 64 + (if styling.center_name then name_margin() else 0) }
top: { typebox_bottom() - 65 + name_font_vertical() }
right: { 681 - name_margin() }
height: 52
z index: 300
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() - 65 }
width: { max(70, card_style.casting_cost.content_width + 12) }
height: 52
z index: 310
alignment: middle right
always symbol: true
font:
name: MPlantin
size: 30
color: black
symbol font:
name: { styling.casting_cost_mana_symbols }
size: 30
rarity:
right: { rarity_right() }
top: { rarity_top() }
width: { if styling.visible_rarity then rarity_size() else 0 }
height: { rarity_size() }
z index: 310
alignment: middle right
visible: { styling.visible_rarity }
render style: image
include file: /magic-modules.mse-include/rarities/choice_images
############################# Image
image:
left: { if styling.stretch_image_to_whole_card or not styling.border then 0 else 30 }
top: { if styling.stretch_image_to_whole_card or not styling.border then 0 else 30 }
width: { if styling.stretch_image_to_whole_card or not styling.border then stylesheet.card_width else 684 }
height: { if styling.stretch_image_to_whole_card then stylesheet.card_height else if not styling.border then 964 else 934 }
z index: 0
mask: { "image_" + (if styling.border then "" else "borderless_") + (if styling.stretch_image_to_whole_card then "full_" else "") + "mask.png" }
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() + body_font_vertical() }
bottom: { if is_stamped() then 934 else 951 }
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
############################################################## Extra card fields
extra card field:
type: choice
name: typeline
editable: false
save value: false
show statistics: false
choice: typeline
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: 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 style:
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: { if styling.border then "image_full_mask.png" else "image_borderless_full_mask.png" }
card stamp border:
left: 0
top: 0
width: { stylesheet.card_width }
height: { stylesheet.card_height }
z index: 855
visible: { is_stamped() }
mask: stamp_border_mask.png
card stamp rim:
left: 0
top: 0
width: { stylesheet.card_width }
height: { stylesheet.card_height }
z index: 858
visible: { is_stamped() }
render style: image
image: stamp.png
stampline:
left: 0
top: 952
width: { stylesheet.card_width }
height: 12
z index: 850
render style: image
image: stampline.png
typeline:
left: 0
bottom: { typebox_bottom() }
width: { stylesheet.card_width }
height: 80
z index: 200
render style: image
image: typeline.png
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()/3 else 1500 }
height: { divider_height() }
z index: 200
visible: { active_abilities() > 0 }
render style: image
image: { if styling.notches then "divider.png" else "divider_notchless.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()/3 else 1500 }
height: { divider_height() }
z index: 200
visible: { active_abilities() > 1 }
render style: image
image: { if styling.notches then "divider.png" else "divider_notchless.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()/3 else 1500 }
height: { divider_height() }
z index: 200
visible: { active_abilities() > 2 }
render style: image
image: { if styling.notches then "divider.png" else "divider_notchless.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()/3 else 1500 }
height: { divider_height() }
z index: 200
visible: { active_abilities() > 3 }
render style: image
image: { if styling.notches then "divider.png" else "divider_notchless.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()/3 else 1500 }
height: { divider_height() }
z index: 200
visible: { active_abilities() > 4 }
render style: image
image: { if styling.notches then "divider.png" else "divider_notchless.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()/3 else 1500 }
height: { divider_height() }
z index: 200
visible: { active_abilities() > 5 }
render style: image
image: { if styling.notches then "divider.png" else "divider_notchless.png" }
pinlines:
left: 0
width: { stylesheet.card_width }
top: { typebox_bottom() }
bottom: 952
z index: 90
render style: image
image: pinlines.png
textbox background:
left: 59
width: 625
top: { typebox_bottom() - 2 }
bottom: 954
z index: 180
render style: image
image: { textbox_image() }