Files
GenevensiS 60db39d10d Add UNF full art basics (#118)
* Add UNF full art basics
* improve full art basics automation implementation
* fix z index on basic land symbol textbox
2025-02-04 19:51:05 -06:00

480 lines
14 KiB
Plaintext

mse version: 2.1.2
game: magic
short name: NEO Basics
full name: Kamigawa Full Art
icon: card_sample.png
position hint: 099
version: 2024-05-20
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:
typeline_disabled_1 := { styling.hide_type_text }
typeline_offset_top_1 := { 274 }
typeline_offset_width_1 := { 4 }
typeline_offset_left_1 := { -2 }
swap_fonts_type_default :=
[
name: {"Beleren Bold"},
size: {26.5},
color: { if styling.hide_type_text then rgba(0,0,0,0) else styling.text_color },
vertical: {0},
italic: {""}
]
nameline_disabled_1 := { styling.hide_name_text }
transform_symbol_disabled_1 := { true }
card_symbol_disabled_1 := { true }
nameline_offset_top_1 := { -9 }
nameline_offset_width_1 := { 6 }
nameline_offset_left_1 := { -3 }
swap_fonts_name_default :=
[
name: {"Beleren Bold"},
size: {30.0},
color: { if styling.hide_name_text then rgba(0,0,0,0) else styling.text_color },
vertical: {0},
italic: {""}
]
template_prefix :=
[
card: "card/"
]
template_suffix :=
[
card: "card.png"
]
template :=
{
template_prefix[type] + input + template_suffix[type]
}
land_template :=
{
template_prefix[type] + (if input == "a" then "c" else input) + template_suffix[type]
}
land_types := [["plains"], ["island"], ["swamp"], ["mountain"], ["forest"], ["wastes"]]
land_type_of := {
result := "none"
option := if input == 2 then styling.second_land_type else styling.land_type
if option == "auto" then (
ar := break_text(card.sub_type, match:"<word-list-land>[^<]+</word-list-land>")
given := if length(ar) >= input then to_lower(remove_tags(ar[input-1])) else "none"
if input == 1 and position(of:[to_lower(card.name)], in:land_types) >= 0 then result := to_lower(card.name)
else if include_types and position(of:[given], in:land_types) >= 0 then result := given
)
else result := option
result
}@(include_types:true)
land_type_1 := { land_type_of(1, include_types:include_types) }@(include_types:true)
land_type_2 := { land_type_of(2, include_types:include_types) }@(include_types:true)
land_type_count := {
count := 0
lt1 := land_type_1()
lt2 := land_type_2()
if lt1 != "none" then count := count + 1
if lt2 != "none" and lt2 != lt1 then count := count + 1
count
}
no_types := { land_type_count() == 0 }
two_types := { land_type_count() == 2 }
modified_color := {
t1 := land_type_1()
t2 := land_type_2()
t3 := if t1 == "none" then t2 else t1
if t3 == "none"
then card.card_color ## double none, revert to real card color
else if t1 == "none" or t2 == "none"
then type_to_word_map[t3] ## single none, use that
else (
c1 := type_to_word_map[t1]
c2 := type_to_word_map[t2]
c3 := if c1 == "colorless" then c2 else c1
if c3 == "colorless"
then "colorless" ## double colorless, use that
else if c1 == "colorless" or c2 == "colorless" or c1 == c2
then c3 ## color + colorless or double color, use the color
else ( ## combine colors, multi, reverse if needed
normal_order := normal_order_map["{c1},{c2}"] or else false
"{c1}, {c2}, multicolor, horizontal" + (if not normal_order then ", reversed" else "")
)
)
}
normal_order_map := [
"white,blue": true,
"white,black": true,
"blue,black": true,
"blue,red": true,
"black,red": true,
"black,green": true,
"red,green": true,
"red,white": true,
"green,white": true,
"green,blue": true
]
super_type_filter_default := {
if two_types() then "Land" else "Basic Land"
}
sub_type_filter_default :=
{
t1 := land_type_1(include_types:false)
t2 := land_type_2(include_types:false)
if t1 == "wastes" or t1 == "none" then t1 := ""
if t2 == "wastes" or t2 == "none" then t2 := ""
c1 := type_to_word_map[t1]
c2 := type_to_word_map[t2]
normal_order := normal_order_map["{c1},{c2}"] or else false
lower_type := if normal_order then t1 + (if t1 != "" then " " else "") + t2
else t2 + (if t2 != "" then " " else "") + t1
to_title(lower_type)
}
type_to_letter_map :=
[
plains: "w",
island: "u",
swamp: "b",
mountain: "r",
forest: "g",
wastes: "c",
none: "none"
]
type_to_word_map := [
plains: "white",
island: "blue",
swamp: "black",
mountain: "red",
forest: "green",
wastes: "colorless",
none: "",
"": ""
]
card_background :=
{
t1 := land_type_1()
t2 := land_type_2()
t3 := if t1 == "none" then t2 else t1
if two_types() then (
linear_blend(
image1: "card/{type_to_letter_map[t1]}card.png",
image2: "card/{type_to_letter_map[t2]}card.png",
x1: 0.3, y1: 0,
x2: 0.7, y2: 0
)
)
else if t3 == "none"
then "card/ccard.png"
else "card/{type_to_letter_map[t3]}card.png"
}
is_promo := { styling.promo }
is_unsorted := { styling.remove_from_autocount }
popout_left := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.0 != "" then clamp(split.0, minimum: -500, maximum: 800) else 0 }
popout_top := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.1 != "" then clamp(split.1, minimum: -500, maximum: 1100) else 0 }
popout_width := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.2 != "" then clamp(split.2, minimum: 0, maximum: 1500) else 0 }
popout_height := { split := split_comma(styling.popout_art_coordinates); if length(split) > 3 and split.3 != "" then clamp(split.3, minimum: 0, maximum: 2000) else 0 }
name_mask :=
{
"mask_name" +
(if two_types() then "_dual" else "") +
(if land_type_1() == "plains" or land_type_1() == "wastes" or land_type_2() == "plains" or land_type_2() == "wastes" then "_plains" else "") +
".png"
}
plains_symbol_offset := { if land_type_1() == "plains" or land_type_1() == "wastes" or land_type_2() == "plains" or land_type_2() == "wastes" then 150 else 0 }
symbol_offset := { if two_types() then 180 else 0 }
two_two :=
{
(land_type_1() == "plains" or land_type_1() == "wastes") and (land_type_2() == "plains" or land_type_2() == "wastes")
}
############################################################## Extra style options
styling field:
type: choice
name: land type
description: What type is this card?
choice:
name: auto
line below: true
choice: plains
choice: island
choice: swamp
choice: mountain
choice: forest
choice: wastes
choice: none
initial: auto
styling field:
type: choice
name: second land type
description: What type is this card?
choice:
name: auto
line below: true
choice: plains
choice: island
choice: swamp
choice: mountain
choice: forest
choice: wastes
choice: none
initial: auto
styling field:
type: text
name: popout art 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 art 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: hide name text
description: Make the nameline visible to edit it, then turn it back invisible.
initial: yes
styling field:
type: boolean
name: hide type text
description: Make the typeline visible to edit it, then turn it back invisible.
initial: yes
styling field:
type: color
name: text color
description: Color used for the text.
choice:
name: black
color: rgb(0,0,0)
choice:
name: white
color: rgb(255,255,255)
initial: white
styling field:
type: color
name: textbox color
description: Color used for the textbox background.
choice:
name: use card color
color: rgb(255,255,254)
initial: rgb(255,255,254)
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
include file: /magic-modules.mse-include/information/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/namelines/card_fields
include file: /magic-modules.mse-include/typelines/card_fields
card style:
############################# Background stuff
border color:
left: 0
top: 0
width: { stylesheet.card_width }
height: { stylesheet.card_height }
z index: 100
visible: { styling.border != "no" }
mask: { if styling.border == "yes" then "mask_background_border.png" else "mask_background_borderless_border.png" }
############################# Image
image:
left: { if styling.stretch_art_to_whole_card then 0 else if styling.border != "yes" then 0 else 30 }
top: { if styling.stretch_art_to_whole_card then 0 else if styling.border != "yes" then 0 else 30 }
width: { if styling.stretch_art_to_whole_card then stylesheet.card_width else if styling.border != "yes" then stylesheet.card_width else 684 }
bottom: { if styling.stretch_art_to_whole_card then stylesheet.card_height + 1 else if styling.border != "no" then 954 else stylesheet.card_height + 1 }
z index: 0
mainframe image:
left: { popout_left() }
top: { popout_top() }
width: { popout_width() }
height: { popout_height() }
z index: 1010
############################################################## Extra card fields
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: card color
editable: false
save value: false
show statistics: false
script:
styling.land_type
styling.second_land_type
modified_color()
extra card field:
type: choice
name: first type
editable: false
save value: false
show statistics: false
choice: first type
extra card field:
type: choice
name: second type
editable: false
save value: false
show statistics: false
choice: second type
extra card field:
type: choice
name: type separator
editable: false
save value: false
show statistics: false
choice: type separator
extra card field:
type: choice
name: first symbol
editable: false
save value: false
show statistics: false
choice: first symbol
extra card field:
type: choice
name: second symbol
editable: false
save value: false
show statistics: false
choice: second symbol
extra card field:
type: choice
name: foil layer
editable: false
save value: false
show statistics: false
choice: foil layer
extra card style:
card stamp border:
left: 0
top: 0
width: { stylesheet.card_width }
height: { stylesheet.card_height }
z index: 110
visible: { styling.border != "no" and is_stamped() }
mask: { if card.card_stamp == "universes beyond" then "mask_stamp_background_border_triangle.png" else "mask_stamp_background_border.png" }
card color:
left: 58
top: 55
width: 194
height: 855
z index: 200
popup style: in place
render style: image
image: { if styling.textbox_color == rgb(255,255,254) then card_background() else recolor_image("name_color.png", color: styling.textbox_color) }
mask: { name_mask() }
first type:
left: { if two_two() then 91 else 76 }
top: 94
width: { if two_two() then 130 else 160 }
height: { if two_two() then 225 else 295 }
z index: 3000
render style: image
visible: { land_type_1() != "none" }
image: { recolor_image("type_" + land_type_1() + ".png", color: styling.text_color) }
second type:
left: { if two_two() then 91 else 76 }
top: { 272 + (if styling.land_type == "plains" or styling.land_type == "wastes" then 140 else 0) - (if two_two() then 70 else 0) }
width: { if two_two() then 130 else 160 }
height: { if two_two() then 225 else 295 }
z index: 3000
visible: { land_type_2() != "none" }
render style: image
image: { recolor_image("type_" + land_type_2() + ".png", color: styling.text_color) }
type separator:
left: 76
top: { 240 + (if land_type_1() == "plains" or land_type_1() == "wastes" then 136 else 0) - (if two_two() then 68 else 0) }
width: 160
height: 30
z index: 3000
visible: { two_types() }
render style: image
image: { recolor_image("type_sep.png", color: styling.text_color) }
first symbol:
left: 76
top: { 253 + plains_symbol_offset() + symbol_offset() }
width: 160
height: 164
z index: 3000
render style: image
visible: { land_type_1() != "none" }
image: { recolor_image("symbol_" + land_type_1() + ".png", color: styling.text_color) }
second symbol:
left: 76
top: { 401 + plains_symbol_offset() + symbol_offset() }
width: 160
height: 164
z index: 3000
visible: { land_type_2() != "none" }
render style: image
image: { recolor_image("symbol_" + land_type_2() + ".png", color: styling.text_color) }
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" }