[274/274] magic-modules rollout (#51)

Add Magic-Modules support to all frames
This commit is contained in:
cajun
2024-09-10 22:21:23 -05:00
committed by GitHub
parent 65bfc8fcd6
commit 6d617985ce
5491 changed files with 37088 additions and 66467 deletions

View File

@@ -6,7 +6,7 @@ icon: card-sample.png
installer group: magic/m15 style/normal cards
position hint: 080
version: 2018-02-08
version: 2024-09-01
depends on:
package: magic.mse-game
version: 2014-06-25
@@ -14,11 +14,8 @@ depends on:
package: magic-default-image.mse-include
version: 2007-09-23
depends on:
package: magic-watermarks.mse-include
version: 2007-09-23
depends on:
package: magic-identity-new.mse-include
version: 2012-01-22
package: magic-modules.mse-include
version: 2024-05-20
depends on:
package: magic-mana-large.mse-symbol-font
version: 2007-09-23
@@ -28,9 +25,6 @@ depends on:
depends on:
package: magic-mana-scroll-demon.mse-symbol-font
version: 2015-12-13
depends on:
package: magic-mana-null.mse-symbol-font
version: 2017-05-30
card width: 375
card height: 523
@@ -46,8 +40,16 @@ init script:
#Should multicolor lands with basic land types have a colored name?
mask_multi_land_with_color := { styling.colored_multicolor_land_name }
template_prefix := [card: "" pt: "" "" identity: "identity/"]
template_suffix := [card: "card.jpg" pt: "pt.png", identity: "identity.png"]
template_prefix := [
card: ""
pt: ""
identity: "identity/"
]
template_suffix := [
card: "card.jpg"
pt: "pt.png"
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
@@ -65,114 +67,22 @@ init script:
# Is the card a promo card?
is_promo := { styling.promo }
has_identity := { styling.color_indicator_dot }
is_unsorted := {styling.remove_from_autocount}
alt_rarity := {styling.alt_rarity_color != ""}
alt_rarity_color := {
string := "83,67,53:177,150,131:0,0,0:0,0,0:0.07:"
if match(styling.alt_rarity_color, match:":$") then string := styling.alt_rarity_color
colons := length(filter_text(string, match:":"))
output := split_text(string, match:",|:")
splits := split_text(string, match:":")
if colons == 4
then output := split_text(string+"0.07:", match:",|:")
if colons == 3
then output := split_text(string+splits[2]+"0.07:", match:",|:")
else if colons == 2
then output := split_text(string+"0,0,0:0,0,0:0.07:", match:",|:")
else if colons == 1
then output := split_text(string+splits[0]+":0,0,0:0,0,0:0.07:", match:",|:")
output
}
alt_symbol := {symbol_variation(symbol:set.symbol, border_radius: alt_rarity_color().12, fill_type: "linear gradient", fill_color_1: rgb(alt_rarity_color().0, alt_rarity_color().1, alt_rarity_color().2), fill_color_2: rgb(alt_rarity_color().3, alt_rarity_color().4, alt_rarity_color().5), border_color_1: rgb(alt_rarity_color().6, alt_rarity_color().7, alt_rarity_color().8), border_color_2: rgb(alt_rarity_color().9, alt_rarity_color().10, alt_rarity_color().11), center_x:0.5, center_y:0.5, end_x:1, end_y:1)}
use_main_rarity := { contains(set.mainframe_rarity_name, match: ".png")}
un_png := replace@(match:".png", replace: "")
mainframe_walker := {true}
# Does the card have four abilities?
has_four_abilities := { max_level() > 3}
has_two_abilities := { max_level() < 3 }
is_level_walker := { true }
abil_center := { if card_style.text.layout.blocks[input].bottom or else 0 > 0 then
card_style.text.top + card_style.text.layout.blocks[input].middle + overlap_check(input)
else -30
}
overlap_check := {
if input == 0
then 0
else if card_style.text.layout.blocks[input].middle == card_style.text.layout.blocks[input-1].middle
then 40*(input-1)
else 0
}
max_level_function := [
"auto": {
if card.level_6_text != "" and card.level_6_text != "" then 6
else if card.level_5_text != "" and card.level_5_text != "" then 5
else if card.level_4_text != "" and card.level_4_text != "" then 4
else if card.level_3_text != "" and card.level_3_text != "" then 3
else 2
},
"one": {1},
"two": {2},
"three": {3},
"four": {4},
"five": {5},
"six": {6},
]
max_level := {max_level_function[force_level()]()}
mainframe_walker_text_script := {
if max_level() == 1 or (max_level() == 2 and card.level_2_text == "") or force_level() == "two" then
combined_editor(field1: card.level_1_text, separator1: "<line>\n</line>", field2: card.level_2_text)
else if max_level() == 2 or force_level() == "three" 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 max_level() == 3 or force_level() == "four" 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 max_level() == 4 or force_level() == "five" 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 max_level() > 4 or force_level() == "six" 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)
}
unindent := {true}
margin_left := {
if input == "lv1" then (if card.loyalty_cost_1 == "" and unindent() then 0 else 90)
else if input == "lv2" then (if card.loyalty_cost_2 == "" and unindent() then 0 else 90)
else if input == "lv3" then (if card.loyalty_cost_3 == "" and unindent() then 0 else 90)
else if input == "lv4" then (if card.loyalty_cost_4 == "" and unindent() then 0 else 90)
else if input == "lv5" then (if card.loyalty_cost_5 == "" and unindent() then 0 else 90)
else if input == "lv6" then (if card.loyalty_cost_6 == "" and unindent() then 0 else 90)
else 0
}
margin_top := {to_int(pull_comma_array(styling.combined_chop, cell:2, end:0, default:0))}
add_spacers := { if input == "" and inner_level(name) then "" else input}
inner_level := {
if input == "lv5" and max_level() > 5 then true
else if input == "lv4" and max_level() > 4 then true
else if input == "lv3" and max_level() > 3 then true
else if input == "lv2" and max_level() > 2 then true
else if input == "lv1" and max_level() > 1 then true
else false
}
force_level := {"auto"}
pw_font_size := { if mainframe_walker() then 12 else 14 }
loyal_move := { pull_comma_array(styling.shift_loyalty_costs, cell:0, end:0, default:0)}
loyal_move2 := { if card.level_2_text == "" or card.level_2_text == "" then -15 else pull_comma_array(styling.shift_loyalty_costs, cell:1, end:0, default:0)}
loyal_move3 := { if card.level_3_text == "" or card.level_3_text == "" then -5 else pull_comma_array(styling.shift_loyalty_costs, cell:2, end:0, default:0)}
loyal_move4 := { pull_comma_array(styling.shift_loyalty_costs, cell:3, end:0, default:0)}
loyal_move5 := { pull_comma_array(styling.shift_loyalty_costs, cell:4, end:0, default:0)}
loyal_move6 := { pull_comma_array(styling.shift_loyalty_costs, cell:5, end:0, default:0)}
text_filter := text_filter + {apply_margins(input, name:margin_code)} + {add_spacers(input, name:margin_code)}
global_chop_top := { to_int(pull_comma_array(styling.combined_chop, cell:0, end:0, default:0))}
global_chop_bot := { to_int(pull_comma_array(styling.combined_chop, cell:1, end:0, default:0))}
global_chop_right := { to_int(pull_comma_array(styling.combined_chop, cell:3, end:0, default:0)) + (if is_adventure() then 150 else 0)}
# Loyalty cost arrows
loyalty_image := {
if contains(input, match: "+") then "loyalty up"
else if contains(input, match: "-") then "loyalty down"
else "loyalty naught"
}
card_shape := {"planeswalker"}
paragraph_count :=
replace@(match:"<soft-line>\n", replace:"")+
filter_text@(match:"\n")
text_size := { 14 -(if styling.separated_text_size == "" then 0 else if contains(styling.separated_text_size, match: ".5") then to_int(split_text(match:".5", styling.separated_text_size).0) else styling.separated_text_size) }
bar_background := { color_background(type:"bar", base_hybrid:card_hybrid) }
card_shape := {"planeswalker"}
watermark_include := "/magic-modules.mse-include/watermarks"
include file: /magic-modules.mse-include/loyalty/init_script
is_unsorted := {styling.remove_from_autocount}
############################################################## Set info fields
set info style:
@@ -184,6 +94,7 @@ set info style:
fill color: rgb(255,255,255)
border color: rgb(0,0,0)
############################################################## Extra style options
include file: /magic-modules.mse-include/loyalty/styling_formatting
styling field:
type: text
name: combined chop
@@ -198,26 +109,14 @@ styling field:
description: Optional holofoil seal stamps
styling field:
type: boolean
name: color indicator dot
description: Use the color indicator dot
initial: no
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.
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: text
name: shift loyalty costs
description: Moves loyalty costs up the specified amount. Use negative to move down. Formatted as "1,2,3,4,"
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: text
name: alt rarity color
description: Use a custom color for the rarity symbol. Formatted as "R1,G1,B1:R2,G2,B2:..." 1 and 2 are fill color, 3 and 4 border color
styling field:
type: boolean
name: use guild mana symbols
@@ -282,6 +181,9 @@ styling style:
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/loyalty/ability_fields
card style:
############################# Background stuff
card color:
@@ -323,14 +225,14 @@ card style:
z index: 2
padding top: 0
card symbol:
left: {if card.card_symbol=="none" then 20 else 30}
top: 29
height: 20
width: 14
z index: 1
left: {if card.card_symbol=="none" then 20 else 28}
top : 44
height: 21
width: 23
z index: 5
render style: image
choice images:
tombstone: tombstone.png
include file: /magic.mse-game/card-symbols/menu_choice_images
image: { card_symbol_image(face: 1) }
############################# Image
image:
left: 28
@@ -371,58 +273,22 @@ card style:
z index: 2
render style: image
alignment: middle right
choice images:
# Images based on the set symbol
basic land:
script:
if use_main_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "c.png"
else if alt_rarity() then alt_symbol()
else if styling.inverted_common_symbol then symbol_variation(symbol: set.symbol, variation: "invertedcommon")
else symbol_variation(symbol: set.symbol, variation: "common")
common:
script:
if use_main_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "c.png"
else if alt_rarity() then alt_symbol()
else if styling.inverted_common_symbol then symbol_variation(symbol: set.symbol, variation: "invertedcommon")
else symbol_variation(symbol: set.symbol, variation: "common")
uncommon:
script:
if use_main_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "u.png"
else if alt_rarity() then alt_symbol()
else symbol_variation(symbol: set.symbol, variation: "uncommon")
rare:
script:
if use_main_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "r.png"
else if alt_rarity() then alt_symbol()
else symbol_variation(symbol: set.symbol, variation: "rare")
mythic rare:
script:
if use_main_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "m.png"
else if alt_rarity() then alt_symbol()
else symbol_variation(symbol: set.symbol, variation: "mythic rare")
special:
script:
if use_main_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "s.png"
else if alt_rarity() then alt_symbol()
else symbol_variation(symbol: set.symbol, variation: "special")
masterpiece:
script:
if use_main_rarity() then "/magic-mainframe-extras.mse-include/" + un_png(set.mainframe_rarity_name) + "mp.png"
else symbol_variation(symbol: set.masterpiece_symbol, variation: "mythic rare")
include file: /magic-modules.mse-include/rarities/choice_images
############################# Text box
text:
left: {if mainframe_walker() then 37 else 28}
top: {if mainframe_walker() then 325 else 354}
width: {if mainframe_walker() then 321 else 318}
height: { (if card.pt != "" then 119 else 128) + (if mainframe_walker() then 28 else 0) }
left: 50
top: 327
width: 295
bottom: 472
font:
name: MagicMedieval
size: {pw_font_size()}
name: MPlantin
italic name: MPlantin-Italic
size: 14
scale down to: 6
color: { rgba (0,0,0,0) }
color: white
symbol font:
name: magic-mana-null
size: {pw_font_size()}
name: { styling.text_box_mana_symbols }
size: 14
alignment:
script:
if (styling.center_text == "short text only" and
@@ -432,152 +298,31 @@ card style:
styling.center_text == "always"
then "middle center"
else "middle left"
z index: 2
z index: 900
padding left: 6
padding right: 5
padding right: 4
line height hard: 1.2
line height line: 1.4
line height soft: {if has_four_abilities() then 0.85 else 0.9}
line height hard max: 1.1
line height line max: 1.6
line height line: 1.3
line height soft: 0.9
line height hard max: 1.3
line height line max: 1.4
watermark:
left: 117
top: 321
width: 138
height: 166
left: 21
top: 330
width: 331
height: 140
z index: 1
render style: image
popup style: in place
alignment: middle center
include file: /magic-watermarks.mse-include/watermarks
############################# Card sorting / numbering
set code:
left: 24
top: 500
width: 40
height: 10
z index: 1
font:
name: Relay-Medium
size: 7
color: white
weight: bold
############################# Copyright stuff
illustrator:
left: { 44 + card_style.set_code.content_width }
top: 499
width: 200
height: 10
z index: 1
font:
name: Beleren Small Caps Bold
size: 7.5
color: white
copyright:
right: 349
top: 500
width: 140
height: 10
z index: 2
alignment: middle right shrink-overflow
visible: {not set.automatic_copyright}
font:
name: Matrix
size: 7
color: white
weight: bold
############################# loyalty
loyalty:
z index: 7
left: 328
top: 466
width: 13.16
height: 34.63
alignment: center middle
font:
name: Beleren Bold
size: 14
color: white
loyalty cost 1:
z index: 7
left: 15
top: { abil_center(0) - 17.3 - 2 - loyal_move() }
width: 18
height: 35
alignment: center middle
font:
name: Beleren Bold
size: 11
color: white
loyalty cost 2:
z index: 7
left: 15
top: { abil_center(1) - 17.3 - 2 - loyal_move2() }
width: 18
height: 35
alignment: center middle
font:
name: Beleren Bold
size: 11
color: white
loyalty cost 3:
z index: 7
left: 15
top: { abil_center(2) - 17.3 - 2 - loyal_move3() }
width: {if card.loyalty_cost_3 != "" or max_level() > 1 then 18 else 0}
height: 35
alignment: center middle
font:
name: Beleren Bold
size: 11
color: white
loyalty cost 4:
z index: 7
left: 15
top: { abil_center(3) - 17.3 - 2 - loyal_move4() }
width: {if card.loyalty_cost_4 != "" or max_level() > 2 then 18 else 0}
height: 35
alignment: center middle
font:
name: Beleren Bold
size: 11
color: white
include file: /magic.mse-game/watermarks/menu_choice_images
image: { watermark_image_1() }
############################################################## Extra card fields
extra card field:
type: text
name: card code
save value: false
script:
if set.automatic_card_numbers and not styling.remove_from_autocount then
forward_editor(prefix: card_number_m15() + "/" + card_count_m15() + " " + rarity_code() + " ", field: card.card_code_text)
else
combined_editor(field1: card.custom_card_number, separator: " " + rarity_code() + " ", field2: card.card_code_text)
extra card field:
type: choice
name: artist arrow
editable: false
save value: false
choice: white
extra card field:
type: choice
name: pt box
script: card.card_color
editable: false
save value: false
extra card field:
type: choice
name: foil layer
choice: foil
save value: false
editable: false
extra card field:
type: text
name: replacement text
editable: false
multi line: true
save value: false
script: replace(card.text, match: "—", replace: "-")
extra card field:
type: text
name: replacement type
@@ -590,149 +335,17 @@ extra card field:
editable: false
save value: false
choice: seal
extra card field:
type: choice
name: pt box
choice: pt box
script: card.card_color
editable: false
save value: false
extra card field:
type: choice
name: pt back
choice: pt back
editable: false
save value: false
extra card field:
type: text
name: auto copyright
script: set.copyright
save value: false
editable: false
show statistics: false
extra card field:
type: choice
name: loyalty box
editable: false
choice: loyalty
save value: false
extra card field:
type: choice
name: loyalty cost box 1
editable: false
script: loyalty_image(card.loyalty_cost_1)
save value: false
extra card field:
type: choice
name: loyalty cost box 2
editable: false
script: loyalty_image(card.loyalty_cost_2)
save value: false
extra card field:
type: choice
name: loyalty cost box 3
editable: false
script: loyalty_image(card.loyalty_cost_3)
save value: false
extra card field:
type: choice
name: loyalty cost box 4
editable: false
script: loyalty_image(card.loyalty_cost_4)
save value: false
extra card field:
type: text
name: colon 1
editable: false
script: ":"
save value: false
extra card field:
type: text
name: colon 2
editable: false
script: ":"
save value: false
extra card field:
type: text
name: colon 3
editable: false
script: ":"
save value: false
extra card field:
type: text
name: colon 4
editable: false
script: ":"
save value: false
extra card style:
card code:
left: { if set.automatic_card_numbers then 24 else 19 }
top: 488
width: 120
height: 10
z index: 1
font:
name: Relay-Medium
size: 7
color: white
weight: bold
artist arrow:
left: { 28 + card_style.set_code.content_width }
top: 502
width: 12
height: 7
z index: 1
render style: image
image: artist_arrow.png
pt box:
left: 304
top: 450
width: 50
height: 42
z index: 1
visible: { card.pt == "moo" }
render style: image
image: { card_ptbox() }
foil layer:
left: 0
top : 0
width: 375
height: 523
z index: 3
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" }
replacement text:
left: {if mainframe_walker() then 40 else 28}
top: {if mainframe_walker() then 325 else 354}
width: {if mainframe_walker() then 321 else 318}
height: { (if card.pt != "" then 119 else 128) + (if mainframe_walker() then 28 else 0) }
font:
name: MagicMedieval
size: {pw_font_size()}
scale down to: 6
color: white
symbol font:
name: { styling.text_box_mana_symbols }
size: {pw_font_size()}
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: 2
padding left: 6
padding right: 5
line height hard: 1.2
line height line: 1.4
line height soft: {if has_four_abilities() then 0.85 else 0.9}
line height hard max: 1.1
line height line max: 1.6
replacement type:
left: { if has_identity() then "53" else "32" }
top: {if mainframe_walker() then 300 else 327}
@@ -745,135 +358,3 @@ extra card style:
name: MagicMedieval
size: 14
color: white
stamp:
left: 166
top: 480
width: 50
height: 37
z index: 1
render style: image
image: { if contains(styling.seal_stamps, match:"holofoil") then "foilstamp.png" else "stamp.png" }
visible: { not contains(styling.seal_stamps, match:"none") }
auto copyright:
right: 349
top: 500
width: 140
height: 10
z index: 2
visible: {set.automatic_copyright}
alignment: middle right shrink-overflow
font:
name: Matrix
size: 7
color: white
weight: bold
loyalty box:
right: 364
top: 464
width: 60
height: 38
z index: 6
render style: image
visible: { card.loyalty != "" }
choice images:
loyalty: loyalty.png
loyalty cost box 1:
left: 2
top: { abil_center(0) - 17.3 - 2 - loyal_move() }
width: 45
height: 36
z index: 6
render style: image
visible: { card.loyalty_cost_1 != "" }
choice images:
loyalty up: loyaltyup.png
loyalty down: loyaltydown.png
loyalty naught: loyaltynaught.png
loyalty cost box 2:
left: 2
top: { abil_center(1) - 17.3 - 2 - loyal_move2() }
width: 45
height: 36
z index: 6
render style: image
visible: { card.loyalty_cost_2 != "" }
choice images:
loyalty up: loyaltyup.png
loyalty down: loyaltydown.png
loyalty naught: loyaltynaught.png
loyalty cost box 3:
left: 2
top: { abil_center(2) - 17.3 - 2 - loyal_move3() }
width: 45
height: 36
z index: 6
render style: image
visible: { card.loyalty_cost_3 != "" }
choice images:
loyalty up: loyaltyup.png
loyalty down: loyaltydown.png
loyalty naught: loyaltynaught.png
loyalty cost box 4:
left: 2
top: { abil_center(3) - 17.3 - 2 - loyal_move4() }
width: 45
height: 36
z index: 6
render style: image
visible: { card.loyalty_cost_4 != "" }
choice images:
loyalty up: loyaltyup.png
loyalty down: loyaltydown.png
loyalty naught: loyaltynaught.png
colon 1:
left: 46
top: { abil_center(0) - 17.3 + 10 - loyal_move() }
width: 5
height: 10
z index: 6
font:
name: MPlantin
size: 15
scale down to: 15
color: white
alignment: middle center
visible: { card.loyalty_cost_1 != "" }
colon 2:
left: 46
top: { abil_center(1) - 17.3 + 10 - loyal_move2() }
width: 5
height: 10
z index: 6
font:
name: MPlantin
size: 15
scale down to: 15
color: white
alignment: middle center
visible: { card.loyalty_cost_2 != "" }
colon 3:
left: 46
top: { abil_center(2) - 17.3 + 10 - loyal_move3() }
width: {if has_two_abilities() then 0 else 5}
height: 10
z index: 6
font:
name: MPlantin
size: 15
scale down to: 15
color: white
alignment: middle center
visible: { card.loyalty_cost_3 != "" }
colon 4:
left: 46
top: { abil_center(3) - 17.3 + 10 - loyal_move4() }
width: { if has_four_abilities() then 5 else 0 }
height: 10
z index: 6
font:
name: MPlantin
size: 15
scale down to: 15
color: white
alignment: middle center
visible: { card.loyalty_cost_4 != "" }