Added Rules Tip Card (#109)

* Added Rules Tip Card
This commit is contained in:
GenevensiS
2025-02-02 06:56:13 +01:00
committed by GitHub
parent 9176aef58f
commit 6c4c5315c0
22 changed files with 654 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@@ -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: "<line>\n</line>", field2: card.level_2_text)
else if count == 2 then
combined_editor(field1: card.level_1_text, separator1: "<line>\n</line>", field2: card.level_2_text, separator2: "<line>\n</line>", field3: card.level_3_text)
else if count == 3 then
combined_editor(field1: card.level_1_text, separator1: "<line>\n</line>", field2: card.level_2_text, separator2: "<line>\n</line>", field3: card.level_3_text, separator3: "<line>\n</line>", field4: card.level_4_text)
else if count == 4 then
combined_editor(field1: card.level_1_text, separator1: "<line>\n</line>", field2: card.level_2_text, separator2: "<line>\n</line>", field3: card.level_3_text, separator3: "<line>\n</line>", field4: card.level_4_text, separator4: "<line>\n</line>", field5: card.level_5_text)
else if count == 5 then
combined_editor(field1: card.level_1_text, separator1: "<line>\n</line>", field2: card.level_2_text, separator2: "<line>\n</line>", field3: card.level_3_text, separator3: "<line>\n</line>", field4: card.level_4_text, separator4: "<line>\n</line>", field5: card.level_5_text, separator5: "<line>\n</line>", field6: card.level_6_text)
else
combined_editor(field1: card.level_1_text, separator1: "<line>\n</line>", field2: card.level_2_text, separator2: "<line>\n</line>", field3: card.level_3_text, separator3: "<line>\n</line>", field4: card.level_4_text, separator4: "<line>\n</line>", field5: card.level_5_text, separator5: "<line>\n</line>", field6: card.level_6_text, separator6: "<line>\n</line>", 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") }

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB