Grapple's old sagas (#139)

This commit is contained in:
cajun
2025-05-13 20:36:48 -05:00
committed by GitHub
parent 55dd4a339b
commit 9dc7484f87
13 changed files with 573 additions and 15 deletions

View File

@@ -1,6 +1,6 @@
mse version: 2.0.0
short name: Field Test
full name: version 0.4
full name: version 0.5
position hint: 120
icon: icon.png
version: 2018-02-09
@@ -29,6 +29,25 @@ script:
fixed_set_code := {
trim(fix_tm(if options.set_code != "" then options.set_code else set.set_code))
}
## clean up strays that will mess up the json
escape_backslash := replace@(match:"\\\\", replace:"\\\\\\\\")
escape_quotes := replace@(match:"\"", replace:"\\\\\"")
escape_breaks := replace@(match:"\n", replace:"\\\\n")
apos_fix := replace@(match:"", replace:"'")
remove_tabs := replace@(match:"\t", replace:"") +
replace@(match:" ", replace:"") +
replace@(match:" +", replace:" ")
remove_controls := replace@(match:"\r", replace:"")
sanitize := to_text +
escape_backslash +
escape_breaks +
escape_quotes +
remove_controls +
remove_tabs +
apos_fix +
trim
v_rep := {
if input != "V"
then input
@@ -93,7 +112,7 @@ script:
notes_grabber := replace@(match:"!notes? ", replace:"")
+replace@(match:"([^,]+)", replace:{"\"" + _1 + "\""})
+replace@(match:"italics", replace:"italic")
card_note_array := { "[" + (if notes_grabber(notes_filter(card.notes)) != "" then notes_grabber(notes_filter(card.notes)) else "") + "]" }
card_note_array := { "[" + (if notes_grabber(notes_filter(card.notes)) != "" then sanitize(notes_grabber(notes_filter(card.notes))) else "") + "]" }
# process text for LackeyBot
lackey_bot_rule_filter := replace@(match:"", replace:"'")+
@@ -222,13 +241,13 @@ script:
write_normal:= {
" \{"
+ "\"fullName\": \"" + break_cleaner(apos_fix(database_name())) + "\", "
+ "\"cardName\": \"" + break_cleaner(remove_tags(card.name)) + "\", "
+ "\"fullName\": \"" + sanitize(apos_fix(database_name())) + "\", "
+ "\"cardName\": \"" + sanitize(remove_tags(card.name)) + "\", "
+ "\"manaCost\": \"" + mana_script(card.casting_cost) + "\", "
+ "\"typeLine\": \"" + break_cleaner(card.type) + "\", "
+ "\"typeLine\": \"" + sanitize(card.type) + "\", "
+ "\"rarityLine\": \"" + lb_rarity_code() + "\", "
+ "\"rulesText\": \"" + (if card.special_text != "" then lackey_bot_rule_filter(text_script(lackey_bot_mana_filter(card.special_text))) else if card.shape == "leveler" then lackey_bot_mana_filter(lackey_bot_rule_filter(leveler_text())) else if card.loyalty != "" then walker_text() else lackey_bot_rule_filter(text_script(lackey_bot_mana_filter(card.rule_text)))) + "\", "
+ "\"flavorText\": \"" + flavor_script(card.flavor_text) + "\", "
+ "\"rulesText\": \"" + sanitize(if card.special_text != "" then lackey_bot_rule_filter(text_script(lackey_bot_mana_filter(card.special_text))) else if card.shape == "leveler" then lackey_bot_mana_filter(lackey_bot_rule_filter(leveler_text())) else if card.loyalty != "" then walker_text() else lackey_bot_rule_filter(text_script(lackey_bot_mana_filter(card.rule_text)))) + "\", "
+ "\"flavorText\": \"" + sanitize(flavor_script(card.flavor_text)) + "\", "
+ "\"power\": " + (if card.power == "*" then "\"★\"" else if card.power == "" then "\"\"" else if (to_number(card.power) or else false != card.power) then "\"" + card.power + "\"" else card.power) + ", "
+ "\"toughness\": " + (if card.toughness == "*" then "\"★\"" else if card.toughness == "" then "\"\"" else if (to_number(card.toughness) or else false != card.toughness) then "\"" + card.toughness + "\"" else card.toughness) + ", "
+ "\"loyalty\": " + (if (to_number(card.loyalty) or else false != card.loyalty) then "\"" + card.loyalty + "\"" else card.loyalty) + ", "
@@ -243,23 +262,23 @@ script:
+ (if token_export() then "\"parentSet\": \"" + fixed_set_code() + "\", " else "")
+ "\"notes\": " + card_note_array() + ", "
+ token_scripts()
+ "\"artist\": \"" + break_cleaner(quote_replace(card.illustrator))
+ "\"artist\": \"" + sanitize(card.illustrator)
+ (if contains(card.shape, match: "split") or contains(card.shape, match:"double") and card.illustrator != card.illustrator_2 and card.illustrator_2 != "" then
"\", \"artist2\": \"" + quote_replace(break_cleaner(card.illustrator_2)))
"\", \"artist2\": \"" + sanitize(card.illustrator_2))
+ "\"\},\n"
}
secondCard := {
(
if card.alias_2 != "" then
"\"cardName2\": \"" + break_cleaner(card.alias_2) + "\", "
+ "\"alias2\": \"" + break_cleaner(remove_tags(card.name_2)) + "\", "
else "\"cardName2\": \"" + break_cleaner(remove_tags(card.name_2)) + "\", "
"\"cardName2\": \"" + sanitize(card.alias_2) + "\", "
+ "\"alias2\": \"" + sanitize(remove_tags(card.name_2)) + "\", "
else "\"cardName2\": \"" + sanitize(remove_tags(card.name_2)) + "\", "
)
+ "\"manaCost2\": \"" + mana_script(card.casting_cost_2) + "\", "
+ "\"typeLine2\": \"" + break_cleaner(card.type_2) + "\", "
+ "\"typeLine2\": \"" + sanitize(card.type_2) + "\", "
+ "\"rarityLine2\": \"" + lb_rarity_code() + "\", "
+ "\"rulesText2\": \"" + (if card.special_text_2 != "" then lackey_bot_rule_filter(text_script(lackey_bot_mana_filter(card.special_text_2))) else if card.loyalty_2 != "" then walker_text_2() else lackey_bot_rule_filter(text_script(lackey_bot_mana_filter(card.rule_text_2)))) + "\", "
+ "\"flavorText2\": \"" + flavor_script(card.flavor_text_2) + "\", "
+ "\"rulesText2\": \"" + sanitize(if card.special_text_2 != "" then lackey_bot_rule_filter(text_script(lackey_bot_mana_filter(card.special_text_2))) else if card.loyalty_2 != "" then walker_text_2() else lackey_bot_rule_filter(text_script(lackey_bot_mana_filter(card.rule_text_2)))) + "\", "
+ "\"flavorText2\": \"" + sanitize(flavor_script(card.flavor_text_2)) + "\", "
+ "\"power2\": " + (if card.power_2 == "*" then "\"★\"" else if card.power_2 == "" then "\"\"" else if (to_number(card.power_2) or else false != card.power_2) then "\"" + card.power_2 + "\"" else card.power_2) + ", "
+ "\"toughness2\": " + (if card.toughness_2 == "*" then "\"★\"" else if card.toughness_2 == "" then "\"\"" else if (to_number(card.toughness_2) or else false != card.toughness_2) then "\"" + card.toughness_2 + "\"" else card.toughness_2) + ", "
+ "\"loyalty2\": " + (if (to_number(card.loyalty_2) or else false != card.loyalty_2) then "\"" + card.loyalty_2 + "\"" else card.loyalty_2) + ", "

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

View File

@@ -0,0 +1,539 @@
mse version: 2.0.0
game: magic
short name: Old style saga
full name: Sagas (Before 8th edition)
installer group: magic/old style/normal cards
icon: card-sample.png
position hint: 310
version: 2025-05-12
depends on:
package: magic.mse-game
version: 2020-04-25
depends on:
package: magic-mana-small.mse-symbol-font
version: 2007-09-23
depends on:
package: magic-mainframe-extras.mse-include
version: 2018-01-01
depends on:
package: magic-modules.mse-include
version: 2024-10-01
card width: 375
card height: 523
card dpi: 150
#### Images by Grapple
############################################################## 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 }
template_prefix := [
card: "card/"
]
template_suffix := [
card: "card.jpg"
]
template := { template_prefix[type] + input + template_suffix[type] }
land_template := { template_prefix[type] + "l" + template_suffix[type] }
# Only white cards use a black font
#font_colors_white := { input != "w" }
b_text := {styling.black_text_on_white_cards}
replace_symbols_testing := {
vairable := replace(match:"<sym-auto>([A-Za-z])</sym-auto>", replace:{"\{"+_1+"\}"})
}
# Check to decide if the card is a basic land.
#chop/shrink functions
chop_top := {if styling.chop_top == "" then 0 else if comma_count(styling.chop_top) == "," or comma_count(styling.chop_top) == ",," then split_text(match:",", styling.chop_top).0 else styling.chop_top}
chop_bot := {if comma_count(styling.chop_top) == ",," then split_text(match:",", styling.chop_top).1 else if styling.chop_bottom == "" then 0 else styling.chop_bottom}
top_of_textbox := {318 + chop_top() }
bottom_of_textbox := {461 - chop_bot() }
shrink_type := {if styling.shrink_typeline_text != "" then to_int(styling.shrink_typeline_text) else if length(remove_tags(card.type)) > 41 then 2 else if length(remove_tags(card.type)) > 38 then 1 else 0 }
shrink_name := {if styling.shrink_name_text != "" then to_int(styling.shrink_name_text) else 0 }
custom_watermark_a := {if styling.card_watermark == "" or not contains(styling.card_watermark, match:".png") then "/magic-watermarks.mse-include/planeswalker.png" else "/magic-watermarks.mse-include/" + styling.card_watermark}
watermark_include := "/magic-modules.mse-include/watermarks"
information_codes_offset_left_1 := {4}
information_offset_top_1 := {-1}
alt_text := { true }
alt_text_script := {
combined_editor(
field1: card.chapter_text,
separator1: "<line>\n</line>",
field2: card.level_1_text,
separator2: "<line>\n</line>",
field3: card.level_2_text,
separator3: "<line>\n</line>",
field4: card.level_3_text
separator4: "<line>\n</line>",
field5: card.level_4_text
)
}
swap_fonts_name_default := [
name: {"MagicMedieval"},
size: {15.5},
color: { if card.card_color == "white" and b_text() then rgb(0,0,0) else rgb(255,255,255) },
vertical: {0},
italic: {""}
]
swap_fonts_type_default := [
name: {"MPlantin"},
size: {12},
color: { if card.card_color == "white" and b_text() then rgb(0,0,0) else rgb(255,255,255) },
vertical: {0},
italic: {""}
]
swap_fonts_body_default := [
name: {"MPlantin"},
size: {14},
color: {"black"},
vertical: {0},
italic: {"MPlantin-Italic"}
]
swap_fonts_pt_default := [
name: {styling.pt_font},
size: {17},
color: { if card.card_color == "white" and b_text() then rgb(0,0,0) else rgb(255,255,255) },
vertical: {0},
italic: {""}
]
divider_position := {
if card_style.text.layout.blocks[1].bottom or else 0 <= 0
then 0
else (
boxes := [card.chapter_text, card.level_1_text, card.level_2_text, card.level_3_text, card.level_4_text]
top_box := boxes[input]
bot_box := boxes[input+1]
if top_box != "" and bot_box != ""
then card_style.text.top + card_style.text.layout.separators[input]
else 0
)
}
############################################################## Set info fields
set info style:
symbol:
variation:
name: olduncommon
border radius: 0.10
fill type: linear gradient
fill color 1: rgb(224,224,224)
fill color 2: rgb(84, 84, 84)
border color 1: rgb(255,255,255)
border color 2: rgb(255,255,255)
variation:
name: oldrare
border radius: 0.10
fill type: linear gradient
fill color 1: rgb(214,196,94)
fill color 2: rgb(95, 84, 40)
border color 1: rgb(255,255,255)
border color 2: rgb(255,255,255)
variation:
name: oldmythic
border radius: 0.10
fill type: linear gradient
fill color 1: rgb(247,151,29)
fill color 2: rgb(187,44,38)
border color 1: rgb(255,255,255)
border color 2: rgb(255,255,255)
############################################################## Extra style options
styling field:
type: text
name: chop top
description: Shrinks the textbox X pixels from the top OR shrinks "top,bottom,"
styling field:
type: text
name: chop bottom
description: Shrinks the textbox X pixels from the bottom.
styling field:
type: text
name: shrink name text
description: Reduces the name text N points.
styling field:
type: text
name: shrink typeline text
description: Reduces the typeline text N points.
styling field:
type: boolean
name: black text on white cards
description: Use black text on white cards.
initial: no
styling field:
type: text
name: card watermark
description: Filename in magic-watermarks to use for standalone card watermark
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: package choice
name: text box mana symbols
match: magic-mana-*.mse-symbol-font
initial: magic-mana-small.mse-symbol-font
styling field:
type: package choice
name: casting cost mana symbols
match: magic-mana-*.mse-symbol-font
initial: magic-mana-small.mse-symbol-font
styling field:
type: choice
name: tap symbol
description: What tap and untap symbols should be used on cards?
initial: old
choice: modern
choice: old
choice: diagonal T
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: colored rarities
description: Should rarity symbols be different colors, such as gold, silver, and purple?
initial: yes
styling field:
type: boolean
name: left align artist
description: Should the artist and copyright lines be left aligned, as seen in Tempest?
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 field:
type: choice
name: pt font
description: Should the font used for p/t be MPlantin or MPlantin-Bold? MPlantin was used until Mirage.
initial: MPlantin-Bold
choice: MPlantin
choice: MPlantin-Bold
styling field:
type: multiple choice
name: colored nonbasic land trim
description: Which parts of the frame should be colored on nonbasic lands? (Real cards have both colored trim and colored textboxes.)
initial: trim, textbox
choice: trim
choice: textbox
styling field:
type: color
name: copyright font
description: What color should the copyright line be?
choice:
name: white
color: rgb(255,255,255)
choice:
name: black
color: rgb(0,0,0)
include file: /magic-modules.mse-include/fonts/styling_fields
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-small.mse-symbol-font/mana_t.png
old: /magic-mana-small.mse-symbol-font/mana_t_old.png
diagonal T: /magic-mana-small.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
colored rarities:
choice images:
no: { symbol_variation(symbol: set.symbol, variation: "common") }
yes: { symbol_variation(symbol: set.symbol, variation: "rare") }
############################################################## Card fields
include file: /magic-modules.mse-include/corners/card_fields
include file: /magic-modules.mse-include/information/the_list_old
card style:
############################# Background stuff
border color:
left: 0
top : 0
width: 375
height: 523
radius: 18
left width: 19
right width: 19
top width: 19
bottom width: 19
z index: 500
card color:
left: 0
top: 0
width: 375
height: 523
z index: 200
render style: image
popup style: in place
image: { color_background(type:"card", base_hybrid:card_hybrid, multicolor_blend:"black", hybrid_blend:"white", artifact_blend:"white") }
############################# Name line
name:
left: 42
top: { 24 + name_font_vertical() }
right: { 341 - card_style.casting_cost.content_width }
height: { 23 - (0.5 * shrink_name()) }
alignment: bottom shrink-overflow
padding bottom: 0
z index: 900
font:
name: { name_font() }
italic name: { name_font_italic() }
size: { name_font_size() }
color: {name_font_color() }
shadow color: { if name_font_color() == to_color("black") then rgb(255,255,255) else rgb(0,0,0) }
shadow displacement x: 1
shadow displacement y: 1
casting cost:
right: 341
top : 22
width: { max(30, card_style.casting_cost.content_width) + 5 }
height: 24
alignment: middle right
symbol font:
name: {styling.casting_cost_mana_symbols}
size: 15
alignment: middle right
always symbol: true
z index: 910
padding top: 0
card symbol:
left: 24
top : 24
height: 20
width: 14
z index: 700
render style: image
image: { card_symbol_image(face: 1) }
############################# Image
image:
left: 200
top: 51
width: 130
height: 388
z index: 400
############################# Card type
type:
left: 39
top : 445
width: { 298 - max(22,card_style.rarity.content_width) }
height: {20 - (0.5 * shrink_type())}
alignment: middle shrink-overflow
z index: 900
padding top: 2
font:
name: { type_font() }
italic name: { type_font_italic() }
size: { type_font_size() }
color: { type_font_color() }
shadow color: { if type_font_color() == to_color("black") then rgb(255,255,255) else rgb(0,0,0) }
shadow displacement x: 1
shadow displacement y: 1
separator color: rgb(128,128,128)
rarity:
left: 293
top : 445
width: 44
height: 22
z index: 920
alignment: middle right
render style: image
include file: /magic-modules.mse-include/rarities/choice_images_old
############################# Text box
text:
left: 43
top : {(50 - (-chop_top()))}
width: 141
bottom: {(436 - chop_bot())}
font:
name: { body_font() }
italic name: { body_font_italic() }
size: { body_font_size() }
scale down to: 6
color: { body_font_color() }
symbol font:
name: { styling.text_box_mana_symbols }
size: { body_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: 900
padding left: 6
padding top: 4
padding right: 4
padding bottom: 4
line height hard: 1.2
line height line: 1.5
line height soft: 0.9
line height line max: 2.5
watermark:
left: 120
top : 313
width: 138
height: 150
z index: 1
render style: image
alignment: middle center
image: { watermark_image_1() }
############################# PT
pt:
z index: 910
left: 295
top: 470
width: 47
height: 27
alignment: right middle
font:
name: { pt_font() }
italic name: { pt_font_italic() }
size: { pt_font_size() }
color: { pt_font_color() }
shadow color: { if pt_font_color() == to_color("black") then rgb(255,255,255) else rgb(0,0,0) }
shadow displacement x: 1
shadow displacement y: 1
separator color: rgb(200,0,0)
############################# Card sorting / numbering
############################# Copyright stuff
illustrator:
left: 40
top : 470
width: 297
height: 16
z index: 900
alignment: { if styling.left_align_artist then "middle left" else "middle center" }
font:
name: MPlantin
size: 10
color: {if card.card_color == "white" and b_text() then rgb(0,0,0) else rgb(255,255,255)}
shadow color: {if card.card_color == "white" and b_text() then rgb(255,255,255) else rgb(0,0,0)}
shadow displacement x: 1
shadow displacement y: 1
copyright line:
left: 40
top : 486
width: 297
height: 12
z index: 900
alignment: { if styling.left_align_artist then "middle left" else "middle center" }
font:
name: MPlantin
size: 6.5
color: {if card.card_color == "white" and b_text() then rgb(0,0,0) else rgb(255,255,255)}
shadow color: {if card.card_color == "white" and b_text() then rgb(255,255,255) else rgb(0,0,0)}
shadow displacement x: 1
shadow displacement y: 1
############################################################## Extra card fields
extra card field:
type: choice
name: foil layer
choice: foil
save value: false
editable: false
extra card field:
type: choice
name: land color overlay
choice: yes
save value: false
editable: false
script: card.card_color
extra card field:
type: choice
name: divider 0
choice: divider
editable: false
save value: false
extra card field:
type: choice
name: divider 1
choice: divider
editable: false
save value: false
extra card field:
type: choice
name: divider 2
choice: divider
editable: false
save value: false
extra card field:
type: choice
name: divider 3
choice: divider
editable: false
save value: false
extra card style:
foil layer:
left: 0
top : 0
width: 375
height: 523
z index: 1010
render style: image
image: {if styling.overlay == "" then nil else styling.overlay + "/overlay.png"}
divider 0:
left: 50
top: { divider_position(0) - 4 }
width: 135
height: 8
render style: image
image: divide.png
z index: 600
divider 1:
left: 50
top: { divider_position(1) - 4 }
width: 135
height: 8
render style: image
image: divide.png
z index: 600
divider 2:
left: 50
top: { divider_position(2) - 4 }
width: 135
height: 8
render style: image
image: divide.png
z index: 600
divider 3:
left: 50
top: { divider_position(3) - 4 }
width: 135
height: 8
render style: image
image: divide.png
z index: 600