443 lines
20 KiB
Plaintext
443 lines
20 KiB
Plaintext
mse version: 2.0.0
|
|
game: magic
|
|
short name: Duplex
|
|
full name: Multiple Part Cards
|
|
icon: card-sample.png
|
|
position hint: 903
|
|
installer group: magic/duplex cards
|
|
|
|
version: 2024-05-30
|
|
depends on:
|
|
package: magic.mse-game
|
|
version: 2008-06-02
|
|
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-future-common.mse-include
|
|
version: 2007-09-23
|
|
depends on:
|
|
package: magic-modules.mse-include
|
|
version: 2024-05-20
|
|
|
|
card width: 375
|
|
card height: 523
|
|
card dpi: 150
|
|
############################################################## Extra scripts
|
|
init script:
|
|
# 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 }
|
|
|
|
# What color should the shadows be?
|
|
shadow_color := { if styling.font_color == "black" then "white" else "black"}
|
|
|
|
# How transparent should the frame be?
|
|
frame_alpha := { if styling.frame_opacity == "" then 0.5
|
|
else if styling.frame_opacity < 0 then 0
|
|
else if styling.frame_opacity > 100 then 1
|
|
else styling.frame_opacity / 100
|
|
}
|
|
|
|
# How transparent should the dividers be?
|
|
bar_alpha := { if styling.divider_opacity == "" then 0.5
|
|
else if styling.divider_opacity < 0 then 0
|
|
else if styling.divider_opacity > 100 then 1
|
|
else styling.divider_opacity / 100
|
|
}
|
|
|
|
# Filter to commaes, so they can be counted to see if field is complete
|
|
comma_count := filter_text@(match:",")
|
|
|
|
# Left
|
|
#one := split_text(match:",", input).0
|
|
#
|
|
# Top
|
|
#two := split_text(match:",", input).1
|
|
#
|
|
# Width
|
|
#three := split_text(match:",", input).2
|
|
#
|
|
# Height
|
|
#four := split_text(match:",", input).3
|
|
#
|
|
# Angle
|
|
#five := split_text(match:",", input).4
|
|
#
|
|
# Font Size
|
|
#six := split_text(match:",", input).5
|
|
#
|
|
# Font Name
|
|
#seven := split_text(match:",", input).6
|
|
#
|
|
# Alignment
|
|
#eight := split_text(match:",", input).7
|
|
#
|
|
watermark_include := "/magic-modules.mse-include/watermarks"
|
|
############################################################## 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: name style
|
|
description: The styling instructions for the name field, formatted as "left,top,width,height,angle,font_size,font_name,". The text MUST end with a comma. The default values are "32,30,309,23,0,17,Matrix,".
|
|
styling field:
|
|
type: text
|
|
name: casting cost style
|
|
description: The styling instructions for the casting cost field, formatted as "left,top,width,height,angle,font_size,". The text MUST end with a comma. The default values are "32,31,309,23,0,14,".
|
|
styling field:
|
|
type: text
|
|
name: type style
|
|
description: The styling instructions for the type field, formatted as "left,top,width,height,angle,font_size,font_name,". The text MUST end with a comma. The default values are "35,298,308,20,0,14,Matrix,".
|
|
styling field:
|
|
type: text
|
|
name: rarity style
|
|
description: The styling instructions for the rarity field, formatted as "left,top,width,height,angle,". The text MUST end with a comma. The default values are "298,297,44,22,0,".
|
|
styling field:
|
|
type: text
|
|
name: rules text style
|
|
description: The styling instructions for the rules text field, formatted as "left,top,width,height,angle,font_size,font_name,alignment,". The text MUST end with a comma. The default values are "31,328,311,71,0,14,MPlantin,top left,".
|
|
styling field:
|
|
type: text
|
|
name: flavor text style
|
|
description: The styling instructions for the flavor text field, formatted as "left,top,width,height,angle,font_size,font_name,alignment,". The text MUST end with a comma. The default values are "31,399,311,71,0,14,MPlantin-Italic,top left,".
|
|
styling field:
|
|
type: text
|
|
name: pt style
|
|
description: The styling instructions for the P/T field, formatted as "left,top,width,height,angle,font_size,font_name,". The text MUST end with a comma. The default values are "284,466,60,28,0,17,ModMatrix,".
|
|
styling field:
|
|
type: text
|
|
name: illustrator style
|
|
description: The styling instructions for the illustrator field, formatted as "left,top,width,angle,". The text MUST end with a comma. The default values are "56,478,217,0,".
|
|
styling field:
|
|
type: text
|
|
name: illustrator brush style
|
|
description: The styling instructions for the illustrator brush field, formatted as "left,top,angle,". The text MUST end with a comma. The default values are "27,481,0,".
|
|
styling field:
|
|
type: text
|
|
name: copyright style
|
|
description: The styling instructions for the copyright field, formatted as "left,top,width,angle,". The text MUST end with a comma. The default values are "30,493,247,0,".
|
|
styling field:
|
|
type: text
|
|
name: divider 1 style
|
|
description: The styling instructions for the first divider bar, formatted as "left,top,width,height,angle,". The text MUST end with a comma.
|
|
styling field:
|
|
type: text
|
|
name: divider 2 style
|
|
description: The styling instructions for the second divider bar, formatted as "left,top,width,height,angle,". The text MUST end with a comma.
|
|
styling field:
|
|
type: choice
|
|
name: font color
|
|
description: Should the card's font be colored black or white?
|
|
choice: black
|
|
choice: white
|
|
styling field:
|
|
type: text
|
|
name: frame opacity
|
|
description: The opacity of the frame. 100 is no transparency, 0 is completely transparent. Default is 50.
|
|
styling field:
|
|
type: text
|
|
name: divider opacity
|
|
description: The opacity of the divider bars. 100 is no transparency, 0 is completely transparent. Default is 50.
|
|
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: casting cost mana symbols
|
|
match: magic-mana-*.mse-symbol-font
|
|
initial: magic-mana-large.mse-symbol-font
|
|
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: 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
|
|
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
|
|
card style:
|
|
############################# Background stuff
|
|
card color:
|
|
left: 0
|
|
top: 0
|
|
width: 375
|
|
height: 523
|
|
z index: 1
|
|
render style: image
|
|
popup style: in place
|
|
mask: border_mask.png
|
|
image: { set_alpha("border.png", alpha: frame_alpha()) }
|
|
############################# Name line
|
|
name:
|
|
left: {if comma_count(styling.name_style) == ",,,,,,," then split_text(match:",", styling.name_style).0 else "32"}
|
|
top: {if comma_count(styling.name_style) == ",,,,,,," then split_text(match:",", styling.name_style).1 else "30"}
|
|
width: {if comma_count(styling.name_style) == ",,,,,,," then split_text(match:",", styling.name_style).2 else "309"}
|
|
height: {if comma_count(styling.name_style) == ",,,,,,," then split_text(match:",", styling.name_style).3 else "23"}
|
|
angle: {if comma_count(styling.name_style) == ",,,,,,," then split_text(match:",", styling.name_style).4 else "0"}
|
|
alignment: top left
|
|
z index: 1
|
|
font:
|
|
name: {if comma_count(styling.name_style) == ",,,,,,," then split_text(match:",", styling.name_style).6 else "Matrix"}
|
|
size: {if comma_count(styling.name_style) == ",,,,,,," then split_text(match:",", styling.name_style).5 else "17"}
|
|
weight: bold
|
|
color: {styling.font_color}
|
|
shadow color: {shadow_color()}
|
|
shadow displacement x: 2
|
|
shadow displacement y: 2
|
|
shadow blur: 2
|
|
casting cost:
|
|
left: {if comma_count(styling.casting_cost_style) == ",,,,,," then split_text(match:",", styling.casting_cost_style).0 else "32"}
|
|
top: {if comma_count(styling.casting_cost_style) == ",,,,,," then split_text(match:",", styling.casting_cost_style).1 else "31"}
|
|
width: {if comma_count(styling.casting_cost_style) == ",,,,,," then split_text(match:",", styling.casting_cost_style).2 else "309"}
|
|
height: {if comma_count(styling.casting_cost_style) == ",,,,,," then split_text(match:",", styling.casting_cost_style).3 else "23"}
|
|
angle: {if comma_count(styling.casting_cost_style) == ",,,,,," then split_text(match:",", styling.casting_cost_style).4 else "0"}
|
|
alignment: top right
|
|
z index: 1
|
|
symbol font:
|
|
name: { styling.casting_cost_mana_symbols }
|
|
size: {if comma_count(styling.casting_cost_style) == ",,,,,," then split_text(match:",", styling.casting_cost_style).5 else "14"}
|
|
alignment: middle right
|
|
always symbol: true
|
|
############################# Image
|
|
image:
|
|
left: 0
|
|
top: 0
|
|
width: 375
|
|
height: 523
|
|
z index: 0
|
|
mask: image_mask.png
|
|
############################# Card type
|
|
type:
|
|
left: {if comma_count(styling.type_style) == ",,,,,,," then split_text(match:",", styling.type_style).0 else "35"}
|
|
top: {if comma_count(styling.type_style) == ",,,,,,," then split_text(match:",", styling.type_style).1 else "298"}
|
|
width: {if comma_count(styling.type_style) == ",,,,,,," then split_text(match:",", styling.type_style).2 else "308"}
|
|
height: {if comma_count(styling.type_style) == ",,,,,,," then split_text(match:",", styling.type_style).3 else "20"}
|
|
angle: {if comma_count(styling.type_style) == ",,,,,,," then split_text(match:",", styling.type_style).4 else "0"}
|
|
alignment: top left
|
|
z index: 1
|
|
font:
|
|
name: {if comma_count(styling.type_style) == ",,,,,,," then split_text(match:",", styling.type_style).6 else "Matrix"}
|
|
size: {if comma_count(styling.type_style) == ",,,,,,," then split_text(match:",", styling.type_style).5 else "14"}
|
|
weight: bold
|
|
color: {styling.font_color}
|
|
shadow color: {shadow_color()}
|
|
shadow displacement x: 2
|
|
shadow displacement y: 2
|
|
shadow blur: 2
|
|
rarity:
|
|
left: {if comma_count(styling.rarity_style) == ",,,,," then split_text(match:",", styling.rarity_style).0 else "298"}
|
|
top: {if comma_count(styling.rarity_style) == ",,,,," then split_text(match:",", styling.rarity_style).1 else "297"}
|
|
width: {if comma_count(styling.rarity_style) == ",,,,," then split_text(match:",", styling.rarity_style).2 else "44"}
|
|
height: {if comma_count(styling.rarity_style) == ",,,,," then split_text(match:",", styling.rarity_style).3 else "22"}
|
|
angle: {if comma_count(styling.rarity_style) == ",,,,," then split_text(match:",", styling.rarity_style).4 else "0"}
|
|
alignment: middle center
|
|
z index: 1
|
|
render style: image
|
|
include file: /magic-modules.mse-include/rarities/choice_images
|
|
############################# Text box
|
|
rule text:
|
|
left: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).0 else "31"}
|
|
top: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).1 else "328"}
|
|
width: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).2 else "311"}
|
|
height: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).3 else "71"}
|
|
angle: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).4 else "0"}
|
|
alignment: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).7 else "top left"}
|
|
z index: 1
|
|
font:
|
|
name: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).6 else "MPlantin"}
|
|
size: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).5 else "14"}
|
|
color: {styling.font_color}
|
|
shadow color: {shadow_color()}
|
|
shadow displacement x: 2
|
|
shadow displacement y: 2
|
|
shadow blur: 2
|
|
symbol font:
|
|
name: { styling.text_box_mana_symbols }
|
|
size: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).5 else "14"}
|
|
alignment: middle left
|
|
line height hard: 1.2
|
|
line height line: 1.5
|
|
line height soft: 0.9
|
|
line height hard max: 1.3
|
|
line height line max: 1.6
|
|
flavor text:
|
|
left: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).0 else "31"}
|
|
top: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).1 else "399"}
|
|
width: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).2 else "311"}
|
|
height: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).3 else "71"}
|
|
angle: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).4 else "0"}
|
|
alignment: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).7 else "top left"}
|
|
z index: 1
|
|
font:
|
|
name: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).6 else "MPlantin-Italic"}
|
|
size: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).5 else "14"}
|
|
color: {styling.font_color}
|
|
shadow color: {shadow_color()}
|
|
shadow displacement x: 2
|
|
shadow displacement y: 2
|
|
shadow blur: 2
|
|
alignment: middle left
|
|
line height hard: 1.2
|
|
line height line: 1.5
|
|
line height soft: 0.9
|
|
line height hard max: 1.3
|
|
line height line max: 1.6
|
|
############################# PT
|
|
pt:
|
|
left: {if comma_count(styling.pt_style) == ",,,,,,," then split_text(match:",", styling.pt_style).0 else "284"}
|
|
top: {if comma_count(styling.pt_style) == ",,,,,,," then split_text(match:",", styling.pt_style).1 else "466"}
|
|
width: {if comma_count(styling.pt_style) == ",,,,,,," then split_text(match:",", styling.pt_style).2 else "60"}
|
|
height: {if comma_count(styling.pt_style) == ",,,,,,," then split_text(match:",", styling.pt_style).3 else "28"}
|
|
angle: {if comma_count(styling.pt_style) == ",,,,,,," then split_text(match:",", styling.pt_style).4 else "0"}
|
|
alignment: top left
|
|
z index: 1
|
|
font:
|
|
name: {if comma_count(styling.pt_style) == ",,,,,,," then split_text(match:",", styling.pt_style).6 else "ModMatrix"}
|
|
size: {if comma_count(styling.pt_style) == ",,,,,,," then split_text(match:",", styling.pt_style).5 else "17"}
|
|
weight: bold
|
|
color: {styling.font_color}
|
|
shadow color: {shadow_color()}
|
|
shadow displacement x: 2
|
|
shadow displacement y: 2
|
|
shadow blur: 2
|
|
############################# Card sorting / numbering
|
|
############################# Copyright stuff
|
|
illustrator:
|
|
left: {if comma_count(styling.illustrator_style) == ",,,," then split_text(match:",", styling.illustrator_style).0 else "56"}
|
|
top: {if comma_count(styling.illustrator_style) == ",,,," then split_text(match:",", styling.illustrator_style).1 else "478"}
|
|
width: {if comma_count(styling.illustrator_style) == ",,,," then split_text(match:",", styling.illustrator_style).2 else "217"}
|
|
height: 16
|
|
angle: {if comma_count(styling.illustrator_style) == ",,,," then split_text(match:",", styling.illustrator_style).3 else "0"}
|
|
z index: 1
|
|
font:
|
|
name: Matrix
|
|
size: 10
|
|
weight: bold
|
|
color: {styling.font_color}
|
|
copyright line:
|
|
left: {if comma_count(styling.copyright_style) == ",,,," then split_text(match:",", styling.copyright_style).0 else "30"}
|
|
top: {if comma_count(styling.copyright_style) == ",,,," then split_text(match:",", styling.copyright_style).1 else "493"}
|
|
width: {if comma_count(styling.copyright_style) == ",,,," then split_text(match:",", styling.copyright_style).2 else "247"}
|
|
height: 12
|
|
angle: {if comma_count(styling.copyright_style) == ",,,," then split_text(match:",", styling.copyright_style).3 else "0"}
|
|
z index: 1
|
|
font:
|
|
name: MPlantin
|
|
size: 6.5
|
|
color: {styling.font_color}
|
|
############################################################## Extra card fields
|
|
extra card field:
|
|
type: choice
|
|
name: foil layer
|
|
choice: foil
|
|
save value: false
|
|
editable: false
|
|
extra card field:
|
|
type: choice
|
|
name: paintbrush
|
|
script: styling.font_color
|
|
save value: false
|
|
editable: false
|
|
extra card field:
|
|
type: choice
|
|
name: divider 1
|
|
script: "bar"
|
|
save value: false
|
|
editable: false
|
|
extra card field:
|
|
type: choice
|
|
name: divider 2
|
|
script: "bar"
|
|
save value: false
|
|
editable: false
|
|
extra card style:
|
|
foil layer:
|
|
left: 0
|
|
top : 0
|
|
width: 375
|
|
height: 523
|
|
z index: 1050
|
|
render style: image
|
|
mask: overlay_mask.png
|
|
image: {if styling.overlay == "" then nil else styling.overlay + "/overlay.png"}
|
|
paintbrush:
|
|
left: {if comma_count(styling.illustrator_brush_style) == ",,," then split_text(match:",", styling.illustrator_brush_style).0 else "27"}
|
|
top: {if comma_count(styling.illustrator_brush_style) == ",,," then split_text(match:",", styling.illustrator_brush_style).1 else "481"}
|
|
width: 27
|
|
height: 11
|
|
angle: {if comma_count(styling.illustrator_brush_style) == ",,," then split_text(match:",", styling.illustrator_brush_style).2 else "0"}
|
|
z index: 1
|
|
render style: image
|
|
choice images:
|
|
black: /magic-future-common.mse-include/paintbrush_black.png
|
|
white: /magic-future-common.mse-include/paintbrush_white.png
|
|
divider 1:
|
|
left: {if comma_count(styling.divider_1_style) == ",,,,," then split_text(match:",", styling.divider_1_style).0 else "0"}
|
|
top: {if comma_count(styling.divider_1_style) == ",,,,," then split_text(match:",", styling.divider_1_style).1 else "0"}
|
|
width: {if comma_count(styling.divider_1_style) == ",,,,," then split_text(match:",", styling.divider_1_style).2 else "0"}
|
|
height: {if comma_count(styling.divider_1_style) == ",,,,," then split_text(match:",", styling.divider_1_style).3 else "0"}
|
|
angle: {if comma_count(styling.divider_1_style) == ",,,,," then split_text(match:",", styling.divider_1_style).4 else "0"}
|
|
z index: 1
|
|
render style: image
|
|
image: { set_alpha("bar.png", alpha: bar_alpha()) }
|
|
divider 2:
|
|
left: {if comma_count(styling.divider_2_style) == ",,,,," then split_text(match:",", styling.divider_2_style).0 else "0"}
|
|
top: {if comma_count(styling.divider_2_style) == ",,,,," then split_text(match:",", styling.divider_2_style).1 else "0"}
|
|
width: {if comma_count(styling.divider_2_style) == ",,,,," then split_text(match:",", styling.divider_2_style).2 else "0"}
|
|
height: {if comma_count(styling.divider_2_style) == ",,,,," then split_text(match:",", styling.divider_2_style).3 else "0"}
|
|
angle: {if comma_count(styling.divider_2_style) == ",,,,," then split_text(match:",", styling.divider_2_style).4 else "0"}
|
|
z index: 1
|
|
render style: image
|
|
image: { set_alpha("bar.png", alpha: bar_alpha()) }
|