M15 Mainframe and Mainframe DFC will use their Style tab "Custom symbol" option if it is not blank; if it is blank it will use the link from the Set tab. Previously they tried to use their Style tab link even if it was blank Unhandled watermarks (usually due to hard-coded custom watermarks that weren't added to the new system) will now use a blank image instead of throwing an error. The Crimson Vow showcase now uses its proper indicators. Fixed the watermark alignment on the Monster Manual Showcase. Fixed the UB Vehicle frame using the wrong link. Fixed a number of Mainframe DFC bugs: Fixed a bug where back face chapter symbols were all snapping to the Chapter 1 position. Fixed a bug where back face watermarks were blending with the front face colors Fixed a bug where the front face evobar had a too-low z index. Fixed an error with backface miracle blending. --------- Co-authored-by: cajun <12363371+CajunAvenger@users.noreply.github.com>
526 lines
15 KiB
Plaintext
526 lines
15 KiB
Plaintext
mse version: 2.0.0
|
|
game: magic
|
|
short name: Monster Manual
|
|
full name: DND Showcase
|
|
icon: card-sample.png
|
|
installer group: magic/m15 style/normal cards
|
|
position hint: 095
|
|
|
|
version: 2024-09-01
|
|
depends on:
|
|
package: magic.mse-game
|
|
version: 2014-06-25
|
|
depends on:
|
|
package: magic-default-image.mse-include
|
|
version: 2007-09-23
|
|
depends on:
|
|
package: magic-modules.mse-include
|
|
version: 2024-10-01
|
|
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-mainframe-extras.mse-include
|
|
version: 2007-09-23
|
|
|
|
card width: 375
|
|
card height: 523
|
|
card dpi: 150
|
|
####### images from Card Conjurer
|
|
############################################################## Extra scripts
|
|
init script:
|
|
# Load scripts for image box
|
|
include file: /magic-default-image.mse-include/scripts
|
|
|
|
# Should hybrids have a grey name?
|
|
mask_hybrid_with_land := { styling.grey_hybrid_name }
|
|
|
|
#Should multicolor lands with basic land types have a colored name?
|
|
mask_multi_land_with_color := { styling.colored_multicolor_land_name }
|
|
|
|
template_prefix := [card:"splashes/" identity: "/magic-modules.mse-include/indicators/"]
|
|
template_suffix := [card:".jpg" stamp: "stamp.jpg" identity: "identity.png"]
|
|
template := { template_prefix[type] + input + template_suffix[type] }
|
|
land_template := { template_prefix[type] + (if input == "a" then "c" else input) + template_suffix[type] }
|
|
# Use land templates for previews because they show more contrast
|
|
hybrid_previews := "land,hybrid"
|
|
crown_background := { color_background(type:"crown", base_hybrid:card_hybrid) }
|
|
|
|
# Use the normal tap symbol
|
|
mana_t := {
|
|
if styling.tap_symbol == "old" then "old"
|
|
else if styling.tap_symbol == "diagonal T" then "older"
|
|
else "new"
|
|
}
|
|
|
|
# Use guild mana symbols?
|
|
guild_mana := { styling.use_guild_mana_symbols }
|
|
|
|
# Is the card a promo card?
|
|
is_promo := { styling.promo }
|
|
is_legend := {set.auto_legends and lang_setting("is_legendary")(card.super_type) }
|
|
mana_sort := {
|
|
if styling.unsorted_casting_cost then
|
|
input
|
|
else
|
|
sort_text@(order: "XYZI[0123456789]HSCA(WUBRG)")()
|
|
}
|
|
ancestral_mana := { styling.ancestral_mana_symbols }
|
|
watermark_include := "/magic-modules.mse-include/watermarks"
|
|
is_unsorted := {styling.remove_from_autocount}
|
|
|
|
chop_top := {to_number(pull_comma_array(styling.text_chops, cell:0, end:false))}
|
|
chop_bot := {to_number(pull_comma_array(styling.text_chops, cell:1, end:false))}
|
|
chop_correction := { chop_bot() }
|
|
shrink_type := {if styling.shrink_typeline_text != "" then to_number(styling.shrink_typeline_text) else 0}
|
|
shrink_name := {if styling.shrink_name_text != "" then to_number(styling.shrink_name_text) else 0}
|
|
|
|
is_d20 := {styling.d20_dividers != "off"}
|
|
is_all_break := {contains(styling.d20_dividers, match:"all breaks")}
|
|
d20string := "^(<b>)?(((</sym>)?[-0-9 ,+>\<](<sym>)?)+|[Ee]lse|[Oo]ther) ?(</b>)?[|]"
|
|
d20_array :=
|
|
filter_text@(match:"(\n|"+d20string+")")
|
|
+split_text@(match:d20string)
|
|
number_of_rolls := {if is_all_break() then 1+length(filter_text(card.rule_text, match:"\n"))-rolls_start(card.text) else length(d20_array(input))-1}
|
|
rolls_start := {
|
|
if styling.d20_dividers == "all breaks +3" then 4
|
|
else if styling.d20_dividers == "all breaks +2" then 3
|
|
else if styling.d20_dividers == "all breaks +1" then 2
|
|
else if styling.d20_dividers == "all breaks" then 0
|
|
else if is_d20() then length(d20_array(input).0)
|
|
else 0
|
|
}
|
|
d20_filter := replace@(match:"^([Ee]lse ?|[Oo]ther ?|((</sym>)?[-0-9 ,+>\<](<sym>)?)+)[|]", replace:"<b>\\1</b>|")
|
|
top_of_para := {
|
|
input := input + no_roll(card.text)
|
|
if card_style.text.layout.paragraphs[input].top or else 0 > 0 then
|
|
card_style.text.top + card_style.text.layout.paragraphs[input].top - 0.5*(card_style.text.layout.paragraphs[input].top-card_style.text.layout.paragraphs[input-1].bottom)
|
|
else 0
|
|
}
|
|
height_of_para := {
|
|
input := input + no_roll(card.text)
|
|
if card_style.text.layout.paragraphs[input].bottom or else 0 > 0 then
|
|
card_style.text.layout.paragraphs[input].bottom + 1.3*(card_style.text.layout.paragraphs[input].top-card_style.text.layout.paragraphs[input-1].bottom) - card_style.text.layout.paragraphs[input].top
|
|
else 0
|
|
}
|
|
no_roll := {if styling.d20_dividers == "all breaks" then 1 else if rolls_start(input) == 0 then 1 else 0}
|
|
|
|
text_filter := text_filter + d20_filter
|
|
|
|
############################################################## Set info fields
|
|
set info style:
|
|
symbol:
|
|
variation:
|
|
name: invertedcommon
|
|
border radius: 0.10
|
|
fill type: solid
|
|
fill color: rgb(255,255,255)
|
|
border color: rgb(0,0,0)
|
|
############################################################## Extra style options
|
|
styling field:
|
|
type: text
|
|
name: text chops
|
|
description: Format as "X,Y". Shrinks textbox X pixels from the top and Y from bottom.
|
|
styling field:
|
|
type: text
|
|
name: shrink name text
|
|
description: Shrinks name X pixels
|
|
styling field:
|
|
type: text
|
|
name: shrink typeline text
|
|
description: Shrinks type X pixels
|
|
styling field:
|
|
type: boolean
|
|
name: hover art
|
|
description: use transparent art with painted background
|
|
initial: no
|
|
styling field:
|
|
type: choice
|
|
name: d20 dividers
|
|
choice: d20 mode
|
|
choice: off
|
|
choice: all breaks
|
|
choice: all breaks +1
|
|
choice: all breaks +2
|
|
choice: all breaks +3
|
|
description: Do dice levels normally, off, on all linebreaks, on all but the first linebreak, etc.
|
|
include file: /magic-modules.mse-include/stamps/styling_fields
|
|
include file: /magic-modules.mse-include/rarities/styling_fields
|
|
styling field:
|
|
type: boolean
|
|
name: remove from autocount
|
|
description: Removes the automatic card number for specific cards, to allow for overcounted cards like in Planeswalker Decks.
|
|
initial: no
|
|
styling field:
|
|
type: boolean
|
|
name: grey hybrid name
|
|
description: Use a grey background for the name and type line on hybrid cards. This is done on real cards.
|
|
styling field:
|
|
type: boolean
|
|
name: unsorted casting cost
|
|
description: Disables automatic mana symbol sorting.
|
|
initial: no
|
|
styling field:
|
|
type: boolean
|
|
name: ancestral mana symbols
|
|
description: Enables ancestral's modified generic mana.
|
|
initial: no
|
|
styling field:
|
|
type: boolean
|
|
name: colored multicolor land name
|
|
description: Use a colored background for the name and type on multicolor land cards with a basic land type. This is done on real cards.
|
|
styling field:
|
|
type: boolean
|
|
name: use guild mana symbols
|
|
description: Use the Ravnica guild symbols instead of the official half/half circles for hybrid mana.
|
|
initial: no
|
|
styling field:
|
|
type: choice
|
|
name: tap symbol
|
|
description: What tap and untap symbols should be used on cards?
|
|
initial: modern
|
|
choice: modern
|
|
choice: old
|
|
choice: diagonal T
|
|
styling field:
|
|
type: package choice
|
|
name: text box mana symbols
|
|
match: magic-mana-*.mse-symbol-font
|
|
initial: magic-mana-small.mse-symbol-font
|
|
styling field:
|
|
type: choice
|
|
name: center text
|
|
description: When to center text (short text only means only on one-line cards with no flavor text)
|
|
choice: always
|
|
choice: short text only
|
|
choice: never
|
|
initial: never
|
|
styling field:
|
|
type: boolean
|
|
name: promo
|
|
description: Is this card a promo card, with the "P" rarity?
|
|
initial: no
|
|
styling field:
|
|
type: boolean
|
|
name: masterpiece
|
|
description: Is this card a Masterpiece?
|
|
initial: no
|
|
styling field:
|
|
type: boolean
|
|
name: inverted common symbol
|
|
description: Should the common rarity symbol be inverted, like in Coldsnap?
|
|
initial: no
|
|
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 style:
|
|
use guild mana symbols:
|
|
choice images:
|
|
yes: /magic-mana-small.mse-symbol-font/mana_guild_rg.png
|
|
no: /magic-mana-small.mse-symbol-font/mana_rg.png
|
|
tap symbol:
|
|
render style: both
|
|
choice images:
|
|
modern: /magic-mana-large.mse-symbol-font/mana_t.png
|
|
old: /magic-mana-large.mse-symbol-font/mana_t_old.png
|
|
diagonal T: /magic-mana-large.mse-symbol-font/mana_t_older.png
|
|
center text:
|
|
render style: both
|
|
choice images:
|
|
always: /magic.mse-game/icons/center-all-text.png
|
|
short text only: /magic.mse-game/icons/center-short-text.png
|
|
never: /magic.mse-game/icons/center-no-text.png
|
|
inverted common symbol:
|
|
choice images:
|
|
no: { symbol_variation(symbol: set.symbol, variation: "common") }
|
|
yes: { symbol_variation(symbol: set.symbol, variation: "invertedcommon") }
|
|
############################################################## Card fields
|
|
include file: /magic-modules.mse-include/corners/card_fields
|
|
include file: /magic-modules.mse-include/information/card_fields
|
|
include file: /magic-modules.mse-include/card-symbols/card_fields
|
|
include file: /magic-modules.mse-include/stamps/card_fields
|
|
include file: /magic-modules.mse-include/separators/card_fields
|
|
card style:
|
|
############################# Background stuff
|
|
border color:
|
|
left: 0
|
|
top : 0
|
|
width: 375
|
|
height: 523
|
|
radius: 18
|
|
left width: 17
|
|
right width: 17
|
|
top width: 17
|
|
bottom width: 18
|
|
z index: 3
|
|
mask: {if is_legend() then "crown_border.png" else "border_mask.png"}
|
|
card color:
|
|
left: 0
|
|
top: 0
|
|
width: 375
|
|
height: 523
|
|
z index: 2
|
|
render style: image
|
|
popup style: in place
|
|
image: frame.png
|
|
mask: frame_mask.png
|
|
############################# Name line
|
|
name:
|
|
left: 32
|
|
top: 27
|
|
right: { 341 - card_style.casting_cost.content_width }
|
|
height: {23 - 0.5*shrink_name()}
|
|
alignment: bottom shrink-overflow
|
|
padding bottom: 0
|
|
z index: 3
|
|
font:
|
|
name: Beleren Bold
|
|
size: {16 - shrink_name()}
|
|
color: black
|
|
casting cost:
|
|
right: 346
|
|
top: 26
|
|
width: { max(30, card_style.casting_cost.content_width) + 5 }
|
|
height: 23
|
|
alignment: middle right
|
|
font:
|
|
name: MPlantin
|
|
size: 15
|
|
symbol font:
|
|
name: magic-mana-large
|
|
size: 15
|
|
alignment: middle right
|
|
always symbol: true
|
|
z index: 4
|
|
padding top: 0
|
|
############################# Image
|
|
image:
|
|
left: 22
|
|
top: 56
|
|
width: {if styling.hover_art then 0 else 338}
|
|
height: 240
|
|
z index: 1
|
|
default: {card_background(card.card_color)}
|
|
mainframe image:
|
|
left: 14
|
|
top: 35
|
|
width: {if styling.hover_art then 347 else 0}
|
|
height: 276
|
|
z index: 4
|
|
############################# Card type
|
|
indicator:
|
|
left: 31
|
|
top: 300
|
|
width: 17
|
|
height: 17
|
|
z index: 1
|
|
render style: image
|
|
visible: { has_identity() }
|
|
image: { module_identity() }
|
|
type:
|
|
left: { if has_identity() then "46" else "28" }
|
|
top: {shrink_type() + 299 }
|
|
width: { (if has_identity() then "290" else "310") - max(22,card_style.rarity.content_width) }
|
|
height: { 20 - shrink_type() }
|
|
alignment: top shrink-overflow
|
|
z index: 2
|
|
padding top: 2
|
|
font:
|
|
name: Beleren Bold
|
|
size: {13 - shrink_type()}
|
|
color: black
|
|
separator color: red
|
|
rarity:
|
|
right: 344
|
|
top: 300
|
|
width: 44
|
|
height: 22
|
|
z index: 2
|
|
render style: image
|
|
alignment: middle right
|
|
include file: /magic-modules.mse-include/rarities/choice_images
|
|
############################# Text box
|
|
text:
|
|
left: 29
|
|
top: {330-(-chop_top())}
|
|
width: 314
|
|
bottom: {481-chop_bot()}
|
|
font:
|
|
name: MPlantin
|
|
italic name: MPlantin-Italic
|
|
size: 14
|
|
scale down to: 6
|
|
color: black
|
|
symbol font:
|
|
name: { styling.text_box_mana_symbols }
|
|
size: 14
|
|
scale down to: 6
|
|
alignment:
|
|
script:
|
|
if (styling.center_text == "short text only" and
|
|
not contains(match:"\n", card.rule_text) and
|
|
card.flavor_text == "<i-flavor></i-flavor>" and
|
|
card_style.text.content_lines <= 2) or
|
|
styling.center_text == "always"
|
|
then "middle center"
|
|
else "middle left"
|
|
z index: 900
|
|
padding left: 6
|
|
padding right: 4
|
|
line height hard: {if is_modal(card.rule_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.rule_text) then 1.0 else 1.3 }
|
|
line height line max: 1.6
|
|
watermark:
|
|
left: 19
|
|
top: 330
|
|
width: 334
|
|
bottom: 481
|
|
z index: 2
|
|
alignment: middle center
|
|
render style: image
|
|
popup style: in place
|
|
include file: /magic.mse-game/watermarks/menu_choice_images
|
|
image: { watermark_image_1() }
|
|
############################# PT
|
|
pt:
|
|
z index: 4
|
|
left: 294
|
|
top: 468
|
|
width: 55
|
|
height: 28
|
|
alignment: center middle shrink-overflow
|
|
font:
|
|
name: Beleren Bold
|
|
size: 15
|
|
color: black
|
|
separator color: red
|
|
############################################################## Extra card fields
|
|
extra card field:
|
|
type: choice
|
|
name: pt box
|
|
script: card.card_color
|
|
editable: false
|
|
save value: false
|
|
extra card field:
|
|
type: choice
|
|
name: foil stamp
|
|
choice: stamp
|
|
save value: false
|
|
editable: false
|
|
extra card field:
|
|
type: choice
|
|
name: foil layer
|
|
choice: foil
|
|
save value: false
|
|
editable: false
|
|
extra card field:
|
|
type: choice
|
|
name: crown
|
|
choice: overlay
|
|
editable: false
|
|
extra card field:
|
|
type: choice
|
|
name: color back
|
|
script: card.card_color
|
|
editable: false
|
|
save value: false
|
|
extra card field:
|
|
type: choice
|
|
name: level 2 overlay
|
|
choice: mask
|
|
editable: false
|
|
show statistics: false
|
|
extra card field:
|
|
type: choice
|
|
name: level 3 overlay
|
|
choice: mask
|
|
editable: false
|
|
show statistics: false
|
|
extra card field:
|
|
type: choice
|
|
name: level 4 overlay
|
|
choice: mask
|
|
editable: false
|
|
show statistics: false
|
|
|
|
extra card style:
|
|
pt box:
|
|
left: 289
|
|
top: 465
|
|
width: 65
|
|
height: 33
|
|
z index: 3
|
|
visible: { card.pt != "" }
|
|
render style: image
|
|
image: pt.png
|
|
foil layer:
|
|
left: 0
|
|
top : 0
|
|
width: 375
|
|
height: 523
|
|
z index: 1050
|
|
render style: image
|
|
image: {if styling.overlay == "" then nil else styling.overlay + "/overlay.png"}
|
|
mask: { if is_rare() then "foil_mask_rare.png" else "foil_mask.png" }
|
|
foil stamp:
|
|
left: 165
|
|
top: 472
|
|
width: 46
|
|
height: 26
|
|
z index: 850
|
|
visible: { card.card_stamp != "none" }
|
|
render style: image
|
|
image: { "/magic-modules.mse-include/stamps/backs/" + (if stamp_shape(field:1) == "triangle" then "triangle_stamp.png" else "stamp.png") }
|
|
crown:
|
|
left: 0
|
|
top: 0
|
|
width: 375
|
|
height: 61
|
|
render style: image
|
|
image: crown.png
|
|
z index: 2
|
|
visible: {is_legend()}
|
|
color back:
|
|
left: 22
|
|
top: 56
|
|
width: 338
|
|
height: 240
|
|
z index: 0
|
|
render style: image
|
|
image: {card_background()}
|
|
level 2 overlay:
|
|
left: 29
|
|
top: { top_of_para(rolls_start(card.text))}
|
|
height: { height_of_para(rolls_start(card.text))}
|
|
width: 314
|
|
z index: 2
|
|
render style: image
|
|
image: d20slice.png
|
|
visible: {is_d20() and number_of_rolls(card.text) > 0}
|
|
level 3 overlay:
|
|
left: 29
|
|
top: { top_of_para(rolls_start(card.text)+2)}
|
|
height: { height_of_para(rolls_start(card.text)+2)}
|
|
width: 314
|
|
z index: 2
|
|
render style: image
|
|
image: d20slice.png
|
|
visible: {is_d20() and number_of_rolls(card.text) > 2}
|
|
level 4 overlay:
|
|
left: 29
|
|
top: { top_of_para(rolls_start(card.text)+4)}
|
|
height: { height_of_para(rolls_start(card.text)+4)}
|
|
width: 314
|
|
z index: 2
|
|
render style: image
|
|
image: d20slice.png
|
|
visible: {is_d20() and number_of_rolls(card.text) > 4}
|