Compare commits

...

10 Commits

Author SHA1 Message Date
cajun
c5941f6c89 Update script 2025-06-10 23:21:12 -05:00
cajun
9c7963ee69 Update keywords
Aetherdrift keywords
2025-01-21 13:46:25 -06:00
cajun
ddceedadde 3.0.7
Bug fix for Card Symbol on DFCs
Bug fix for Amass rt
Bug fixes for "this type" capitalization
Bug fixes for CARDNAME on planes
Adds THIS atom that gets the opposite value as CARDNAME
Adds Custom Border automization
2025-01-18 15:03:30 -06:00
cajun
a542a11dd9 3.0.6 2025-01-11 23:38:05 -06:00
cajun
e35d40f658 Update new-blends 2025-01-05 22:28:11 -06:00
cajun
13360c8ba8 fix custom watermark issue
a fix for better backwards compatibility made reading the size not work as well. new build_custom_watermark_blend function resolves both problems
2024-12-22 08:45:29 -06:00
cajun
ef23a2b452 update kaldheim, fix advub bug 2024-12-19 21:32:57 -06:00
cajun
a67b241e08 check if class bar should be there 2024-12-06 17:59:20 -06:00
cajun
e36f84756c fix missing vorthos box 2024-10-14 18:07:01 -05:00
cajun
b3098f30d1 move creed fonts 2024-10-14 17:19:38 -05:00
43 changed files with 492 additions and 137 deletions

Binary file not shown.

View File

@@ -1099,21 +1099,9 @@ set_watermark_blend := {
)
)
}
spotlight_folder := { watermark_include + "/spotlight/" }
spotlight_watermark_blend := {
face := [1:card.card_color, 2:card.card_color_2, 3:card.card_color_3][face]
if type_of(input) == type_of("string") then (
array := split_comma(input)
input := array.0
if length(array) > 1 then (
px := px_split(array.2)
if length(px) > 2
then l := 0
else (
l := px.0
h := px.1
)
)
)
if l < 1 or h < 1 or l > 1024 or h > 1024 then (
input
@@ -1121,7 +1109,7 @@ spotlight_watermark_blend := {
wmc := watermark_colors(face:face)
c1 := wmc.0 + (if contains(face, match:"land") then "l") + "spotlight.png"
c2 := wmc.1 + (if contains(face, match:"land") then "l") + "spotlight.png"
wmdir := watermark_include + "/spotlight/"
wmdir := spotlight_folder()
c1 := crop(wmdir+c1, height:h, width:l, offset_x:0, offset_y:0)
c2 := crop(wmdir+c2, height:h, width:l, offset_x:0, offset_y:0)

View File

@@ -133,7 +133,7 @@ init script:
spot_pt := { color_background(type:"spotpt", base_hybrid:card_hybrid, folder:"blend_masks/") }
crown_background := { color_background(type:"crown", base_hybrid: card_hybrid, folder:"blend_masks/")}
beyond_background := { color_background(type:"ubcard", base_hybrid: card_hybrid, folder:template_prefix["ubcard"], blend_type:"card")}
beyond_background := { color_background(type:"ubcard", base_hybrid: card_hybrid, folder:template_prefix["card"], blend_type:"card")}
# Use the normal tap symbol
mana_t := {
@@ -413,8 +413,11 @@ init script:
"/magic-mainframe-extras.mse-include/" + src
}
custom_border_blend := { color_background(type:"custom_border", base_hybrid:card_hybrid, folder:"blend_masks/") }
is_custom := {contains(styling.frames, match:"custom border") and contains(styling.custom_border_source, match:".png")}
is_custom_border := {
if chosen(styling.frames, choice:"custom border")
then has_png(styling.custom_border_source)
else auto_custom_border()
}
# this goes at the very end
harder_script := [
crown: module_crown_template,
@@ -1227,7 +1230,7 @@ extra card style:
render style: image
image: { custom_border_blend() }
z index: 0
visible: {is_custom()}
visible: {is_custom_border()}
mask: {(if is_vehicle() or is_snow() or is_nyx() then "double_") + "frame_border_mask.png"}
nyx overlay:
left: 0

View File

@@ -290,9 +290,11 @@ init script:
is_leveler := {
chosen(styling.frames, choice:"leveler")
}
is_custom_border := {
chosen(styling.frames, choice:"custom border")
and contains(styling.custom_border_source, match:".png")
if chosen(styling.frames, choice:"custom border")
then has_png(styling.custom_border_source)
else auto_custom_border()
}
is_leveler := {chosen(styling.frames, choice:"leveler")}
is_legend := {
@@ -639,7 +641,7 @@ init script:
cw := if cw > 44 then (if set.print_fix != "" then set.print_fix else 22) else if cw < 22 then 22 else cw
if card_style.rarity.width == 0 then 0 else cw
}
special_text := {if is_leveler() then ((if card.level_0 != "" then "[" + level_label(0) + " " + card.level_0 + "] " else "") + card.level_1_text + (if card.pt != "" then " [" + card.pt + "]" else "") + "\n"
special_text := {if is_leveler() then ((if card.level_0 != "" then "[" + level_label(0) + " " + card.level_0 + "] " else "") + card.level_1_text + (if card.pt != "" and not lone_pt() then " [" + card.pt + "]" else "") + "\n"
+ (if card.level_1 != "" then "[" + level_label(1) + " " + card.level_1 + "] " else "") + card.level_2_text + (if card.pt_2 != "" then " [" + card.pt_2 + "]" else "") + "\n"
+ (if card.level_2 != "" then "[" + level_label(2) + " " + card.level_2 + "] " else "") + card.level_3_text + (if card.pt_3 != "" then " [" + card.pt_3 + "]" else "") + (if card.level_4_text != "" then "\n" else "")
+ (if card.level_3 != "" then "[" + level_label(3) + " " + card.level_3 + "] " else "") + card.level_4_text + (if card.pt_7 != "" then " [" + card.pt_7 + "]" else "")

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -123,15 +123,28 @@ init script:
guild_mana := { styling.use_guild_mana_symbols }
ancestral_mana := { styling.use_ancestral_mana_symbols }
is_land := match@(match: "(?i)Land")
is_basic := match@(match: "(?i)Basic")
is_plains := match@(match: "(?i)Plains")
is_island := match@(match: "(?i)Island")
is_swamp := match@(match: "(?i)Swamp")
is_mountain := match@(match: "(?i)Mountain")
is_forest := match@(match: "(?i)Forest")
is_land := lang_setting("is_land")
is_basic := lang_setting("is_basic")
is_plains := lang_setting("is_plains")
is_island := lang_setting("is_island")
is_swamp := lang_setting("is_swamp")
is_mountain := lang_setting("is_mountain")
is_forest := lang_setting("is_forest")
is_wastes := lang_setting("is_wastes")
is_basic_symboled := { styling.basic_land_symbol and is_basic(card.super_type) and is_land(card.super_type) and (is_plains(card.sub_type) or is_island(card.sub_type) or is_swamp(card.sub_type) or is_mountain(card.sub_type) or is_forest(card.sub_type)) }
is_basic_symboled := {
styling.basic_land_symbol
and is_basic(card.super_type)
and is_land(card.super_type)
and (
is_plains(card.sub_type)
or is_island(card.sub_type)
or is_swamp(card.sub_type)
or is_mountain(card.sub_type)
or is_forest(card.sub_type)
or is_wastes(card.name)
)
}
is_promo := { styling.promo }

View File

@@ -499,7 +499,9 @@ init script:
)
}
front_custom_border := {
chosen(styling.other_options, choice:"custom border front") and contains(styling.custom_border_source, match:".png")
if chosen(styling.other_options, choice:"custom border front")
then has_png(styling.custom_border_source)
else auto_custom_border()
}
front_draft := {
chosen(styling.other_options, choice:"draft matters front")
@@ -552,7 +554,9 @@ init script:
)
}
back_custom_border := {
chosen(styling.other_options, choice:"custom border back")
if chosen(styling.other_options, choice:"custom border back")
then has_png(styling.custom_border_source)
else auto_custom_border_2()
}
back_draft := {
chosen(styling.other_options, choice:"draft matters back")
@@ -1525,6 +1529,12 @@ init script:
transform_symbol_offset_height_2 := {
if mainframe_walkerb() then 1 else 0
}
card_symbol_offset_top_1 := {
if front_normal() then 0 else -8
}
card_symbol_offset_top_2 := {
if front_normal() then 0 else -8
}
card_stamp_offset_top_1 := {
if mainframe_walker() and stamp_shape() == "triangle" then -3 else 0
}
@@ -1533,6 +1543,10 @@ init script:
}
flavor_bar_disabled_1 := { mainframe_walker() or a_saga() or not set.use_flavor_bar }
flavor_bar_disabled_2 := { mainframe_walkerb() or b_saga() or not set.use_flavor_bar }
name_transform_symbol_shift := {
map := face_coordinates_map(face)
29 * (min(map.width, map.height)/375) + offset
}
watermark_include := "/magic-modules.mse-include/watermarks"
############################################################## Set info fields
@@ -1966,7 +1980,7 @@ card style:
mask: { back_frame_mask() }
############################# Name line
name:
left: { if front_map() then 65 else if front_normal() then 58 else 62 }
left: { if front_map() then 65 else if front_normal() then (if card.card_symbol == "none" then 58 else 78) else if card.card_symbol == "none" then 62 else 79 }
top: { if front_map() then 27 else if front_normal() then 30 else 22 }
right: { (if front_map() then 344 else 339) - card_style.casting_cost.content_width }
height: { 23 - (0.5 * shrink_name()) }
@@ -1979,7 +1993,7 @@ card style:
size: { name_font_size() }
color: { name_font_color() }
name 2:
left: { if back_map() then 442 else if back_normal() then 435 else 439 }
left: { if back_map() then 442 else if back_normal() then ( if card.card_symbol_2 == "none" then 435 else 455) else if card.card_symbol_2 == "none" then 439 else 456 }
top: { (if back_map() then 27 else if back_normal() then 30 else 22) - 0.5*shrink_name2() }
right: { (if back_map() then 719 else 714) - card_style.casting_cost_2.content_width }
height: { 23 - (0.5 * shrink_name2()) }

View File

@@ -66,7 +66,17 @@ init script:
alt_text_script := {
combined_editor(field1:card.rule_text, separator1:"<line>\n</line>", field2:card.rule_text_2)
}
card_name_for_face := { "" }
card_name_for_face := {
if (set.CARDNAME_replacement == "card's type" xor reverse)
then (
ty := to_lower(cardname_type(card["type"]))
if ty == "" then "this"
else "this " + ty
)
else if set.CARDNAME_replacement == "card's alias" and card["alias"] != ""
then card["alias"]
else card["name"]
}@(reverse:false)
is_loaded := { card_style.text.layout.separator[0] or else 0 > 0 }
top_box_height := {

View File

@@ -66,7 +66,17 @@ init script:
alt_text_script := {
combined_editor(field1:card.rule_text, separator1:"<line>\n</line>", field2:card.rule_text_2)
}
card_name_for_face := { "" }
card_name_for_face := {
if (set.CARDNAME_replacement == "card's type" xor reverse)
then (
ty := to_lower(cardname_type(card["type"]))
if ty == "" then "this"
else "this " + ty
)
else if set.CARDNAME_replacement == "card's alias" and card["alias"] != ""
then card["alias"]
else card["name"]
}@(reverse:false)
is_loaded := { card_style.text.layout.separator[0] or else 0 > 0 }
top_box_height := {

View File

@@ -266,6 +266,13 @@ init script:
is_snow := {chosen(styling.other_options, choice:"snow")}
is_vehicle := {chosen(styling.other_options, choice:"vehicle")}
is_pinned := {chosen(styling.other_options, choice:"pride pinlines")}
is_custom_border := {
if chosen(styling.other_options, choice:"custom border")
then has_png(styling.custom_border_source)
else auto_custom_border()
}
custom_border_blend := { color_background(type:"custom_border", base_hybrid:card_hybrid) }
paragraph_count := replace@(match:"\n", replace:"~")+
filter_text@(match:"~")
special_text := {
@@ -376,11 +383,16 @@ styling field:
choice: nyx
choice: snow
choice: vehicle
choice: custom border
choice: adventure
choice: reversed adventure
choice: pride pinlines
choice: popunder art
initial: un-indent nonloyalty abilities
styling field:
type: text
name: custom border source
description: Use this file from magic-mainframe-extras as a custom vehicle-like frame. if colored, name images like "wborder.png" and put "-color-border.png" here.
styling field:
type: text
name: custom mask
@@ -539,7 +551,7 @@ card style:
z index: 920
padding top: 0
card symbol:
left: {if card.card_symbol=="none" then 20 else 29}
left: {if card.card_symbol=="none" then 20 else 25}
top: 21
height: 21
width: 23
@@ -977,6 +989,12 @@ extra card field:
choice: car door
save value: false
editable: false
extra card field:
type: choice
name: custom overlay
choice: car door
save value: false
editable: false
extra card field:
type: choice
name: snow overlay
@@ -1413,7 +1431,7 @@ extra card style:
image: {module_nyx()}
z index: 330
visible: {is_nyx()}
mask: {"trim_masks/" + (if has_four_abilities() then "4") + "pw" + (if is_vehicle() then "_v") + "_mask.png"}
mask: {"trim_masks/" + (if has_four_abilities() then "4") + "pw" + (if is_vehicle() or is_custom_border() then "_v") + "_mask.png"}
snow overlay:
left: 0
top: 0
@@ -1423,7 +1441,7 @@ extra card style:
image: {module_snow()}
z index: 320
visible: {is_snow()}
mask: {"trim_masks/" + (if has_four_abilities() then "4") + "pw" + (if is_vehicle() then "_v") + "_mask.png"}
mask: {"trim_masks/" + (if has_four_abilities() then "4") + "pw" + (if is_vehicle() or is_custom_border() then "_v") + "_mask.png"}
vehicle overlay:
left: 0
top: 0
@@ -1432,8 +1450,18 @@ extra card style:
render style: image
image: full_voverlay.png
z index: 310
mask: {"trim_masks/" + (if has_four_abilities() then "4") + "pw_mask.png"}
mask: {"trim_masks/" + (if has_four_abilities() then "4") + "pw" + (if is_custom_border() then "_v") + "_mask.png"}
visible: {is_vehicle()}
custom overlay:
left: 0
top: 0
width: 375
height: 523
render style: image
image: { custom_border_blend() }
z index: 317
mask: {"trim_masks/" + (if has_four_abilities() then "4") + "pw_mask.png"}
visible: { is_custom_border() }
pride pin:
left: { if not is_pinned() then 0 else 19}
top: { if not is_pinned() then 0 else 51}
@@ -1455,6 +1483,18 @@ extra card style:
image: { if stamp_shape() == "triangle" then (if is_clear() then template_prefix["ubstamp"]+"xstamp.png" else module_ubstamp()) else if is_clear() then template_prefix["stamp"]+"xstamp.png" else module_stamp() }
mask: {if stamp_shape() == "triangle" then (if use_full_art() then "mythicstamp_mask_triangle.png" else "") else (if use_full_art() then "mythic" else "") + "stamp_mask.png"}
vorthos box:
right: 275
top: 488
width: 65
height: 10
z index: 900
alignment: middle right
font:
name: Relay-Medium
size: 7
color: white
weight: bold
adventure cover:
left: 0
top: {if has_four_abilities() then 288 else 324}

View File

@@ -6,7 +6,7 @@ icon: card-sample.png
installer group: magic/m15 style/tokens
position hint: 004
version: 2024-09-03
version: 2025-01-11
depends on:
package: magic.mse-game
version: 2014-06-25
@@ -228,6 +228,12 @@ init script:
then module_stamp()
else "/magic-modules.mse-include/stamps/backs/" + (if sh == "triangle" then "triangle_stamp.png" else "stamp.png")
}
is_custom_border := {
if chosen(styling.frames, choice:"custom border")
then has_png(styling.custom_border_source)
else auto_custom_border()
}
custom_border_blend := { color_background(type:"custom_border", base_hybrid:card_hybrid) }
watermark_include := "/magic-modules.mse-include/watermarks"
############################################################## Set info fields
set info style:
@@ -253,6 +259,11 @@ styling field:
choice: nyx
choice: snow
choice: vehicle
choice: custom border
styling field:
type: text
name: custom border source
description: Use this file from magic-mainframe-extras as a custom vehicle-like frame. if colored, name images like "wborder.png" and put "-color-border.png" here.
styling field:
type: multiple choice
name: auto frames
@@ -486,7 +497,7 @@ card style:
top: {if comma_count(styling.popout_image_style) == ",,,," then split_text(match:",", styling.popout_image_style).1 else "0"}
width: {if comma_count(styling.popout_image_style) == ",,,," then split_text(match:",", styling.popout_image_style).2 else "0"}
height: {if comma_count(styling.popout_image_style) == ",,,," then split_text(match:",", styling.popout_image_style).3 else "0"}
z index: 8
z index: 1010
############################# Card type
type:
left: 32
@@ -712,6 +723,12 @@ extra card field:
choice: plate
save value: false
editable: false
extra card field:
type: choice
name: custom overlay
choice: plate
save value: false
editable: false
extra card field:
type: text
name: vorthos box
@@ -856,6 +873,16 @@ extra card style:
image: voverlay.png
mask: {"v_" + (if is_nyx() or is_snow() then "nyx_" else "") + if is_tall() then "tall_mask.png" else if is_textless() then "short_mask.png" else "mid_mask.png"}
visible: { is_vehicle() }
vehicle overlay:
left: 15
top: 15
width: 345
height: 471
z index: 1
render style: image
image: {custom_border_blend()}
mask: {"v_" + (if is_nyx() or is_snow() then "nyx_" else "") + if is_tall() then "tall_mask.png" else if is_textless() then "short_mask.png" else "mid_mask.png"}
visible: { is_custom_border() }
vorthos box:
right: { if card.pt != "" then 275 else 350 }
top: 488

View File

@@ -88,7 +88,6 @@ init script:
# This will create two seperate card faces
card_background2 := { color_background(type:"card2", base_hybrid:card_hybrid) }
card_ptbox2 := { color_background(type:"pt2", base_hybrid:pt_hybrid) }
# Use the normal tap symbol
mana_t := {
@@ -824,7 +823,7 @@ extra card style:
z index: 840
visible: { card.pt_2 != "" and styling.three_cards == "yes"}
render style: image
image: { card_ptbox2() }
image: { card_ptbox() }
pt box 3:
left: 464
top: 466

View File

@@ -405,13 +405,25 @@
replace: { _1 + to_upper(_2) }) +
#curly_quotes +
# step 9 : spellcheck
{ if set.mark_errors then
{
if set.auto_correct then
auto_correct(input)
else input
} +
{
if set.auto_errata then
auto_errata(input)
else input
} +
{
if language().code == "ja" or language().code == "zht" or language().code == "zhs" then input
else if set.mark_errors then
check_spelling(
language: language().spellcheck_code,
extra_dictionary: "/magic.mse-game/magic-words",
extra_dictionary: "/magic.mse-game/dictionary/magic-words",
extra_match: additional_text_words
)
else input
else input
}
############################################################## Statistics utilities

View File

@@ -192,7 +192,7 @@ init script:
special_text := {
if is_class() then
(
card.chapter_text
(if card.chapter_text == "" then saga_reminder() else card.chapter_text)
+(if card.level_1_text != "" then "\n" + card.level_1_text)
+(if card.level_2_text != "" then "\n" + card.level_9_text + (if card.level_2 == "" then " Level 2" else " " + card.level_2) + "\n" + card.level_2_text)
+(if card.level_3_text != "" then "\n" + card.level_10_text + (if card.level_3 == "" then " Level 3" else " " + card.level_3) + "\n" + card.level_3_text)
@@ -1280,7 +1280,7 @@ extra card style:
render style: image
z index: 720
image: {if is_case() then "bar.png" else if is_class() then class_bar() else "line.png"}
visible: {is_class() or is_case() or not un_marked()}
visible: {(is_class() and card.chapter_text != "" and card.level_1_text != "") or is_case() or not un_marked()}
linebreak 2:
left: {30+if is_class() or is_case() then 158 else 0}
top: {if is_class() or is_case() then lev2() else if split_12() == "" then 248 else split_12()-1}

View File

@@ -96,6 +96,14 @@ init script:
un_png := replace@(match:".png", replace: "")
is_vehicle := {lang_setting("is_vehicle")(card.sub_type)}
card_stamp_offset_top_1 := {1}
include file: /magic-modules.mse-include/loyalty/init_script
loyalty_abilities_count_real := loyalty_abilities_count
loyalty_abilities_count := {
if mainframe_walker() then loyalty_abilities_count_real(instance:instance, active:active) else 0
}@(active:false, instance:1)
mainframe_walker := { lang_setting("is_planeswalker")(card.type) }
loyalty_textbox_mask := {"walker_mask.png"}
############################################################## Set info fields
set info style:
symbol:
@@ -124,6 +132,69 @@ styling field:
description: Removes the automatic card number for specific cards, to allow for overcounted cards like in Planeswalker Decks.
initial: no
include file: /magic-modules.mse-include/stamps/styling_fields
styling field:
type: choice
name: number of textboxes
description: Number of textboxes for abilities and passives. MODIFY CONTENTS OF TEXTBOXES IF THIS HAS TROUBLE UPDATING AFTER BEING CHANGED.
choice: automatic
choice: 1
choice: 2
choice: 3
choice: 4
choice: 5
choice: 6
choice: 7
choice: 8
initial: automatic
styling field:
type: text
name: move separators
description: Moves the limits between abilities down by this many pixels. Use negatives to move up. Formatted as "1,2,3,4,5"
styling field:
type: text
name: move loyalty costs
description: Moves loyalty costs down by this many pixels. Use negatives to move up. Formatted as "1,2,3,4,5,6"
styling field:
type: text
name: textbox opacity percentage
description: Set the opacity percentage for textboxes. Opaque is 100, transparent is 0, default is 70.
styling field:
type: color
name: textbox color
description: Use the specified color for the textbox background.
choice:
name: black
color: rgb(0,0,0)
choice:
name: white
color: rgb(255,255,255)
initial: rgb(255,255,255)
styling field:
type: text
name: stripes opacity percentage
description: Set the opacity percentage for stripes separating abilities. Opaque is 100, transparent is 0, default is 40.
styling field:
type: color
name: stripes color
description: Use the specified color for the textbox background.
choice:
name: black
color: rgb(0,0,0)
choice:
name: white
color: rgb(255,255,255)
initial: rgb(0,0,0)
styling field:
type: color
name: rule text color
description: Use the specified color for the rule text.
choice:
name: black
color: rgb(0,0,0)
choice:
name: white
color: rgb(255,255,255)
initial: rgb(0,0,0)
styling field:
type: boolean
@@ -218,6 +289,7 @@ include file: /magic-modules.mse-include/stamps/card_fields
include file: /magic-modules.mse-include/stamps/stamp_back
include file: /magic-modules.mse-include/watermarks/card_fields
include file: /magic-modules.mse-include/separators/card_fields
include file: /magic-modules.mse-include/loyalty/card_fields
card style:
############################# Background stuff
border color:
@@ -314,7 +386,7 @@ card style:
include file: /magic-modules.mse-include/rarities/choice_images
############################# Text box
text:
left: 29
left: { if mainframe_walker() then 35 else 29 }
top: {338-(-chop_top())}
width: 314
bottom: {477-chop_bot()}
@@ -350,7 +422,7 @@ card style:
z index: 900
left: 293
top: 468
width: 60
width: { if mainframe_walker() then 0 else 60 }
height: 28
alignment: center middle shrink-overflow
font:
@@ -383,7 +455,7 @@ extra card style:
pt box:
left: 285
top: 460
width: 77
width: { if mainframe_walker() then 0 else 77 }
height: 43
z index: 840
visible: { card.pt != "" }

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 584 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -398,10 +398,11 @@ init script:
image_width := {
clear := if input == "left" then left_clear() else if input == "right" then right_clear() else false
bl := is_borderless()
sr := is_short_room()
room_style := styling.room_images
if is_room() then (
if room_style == "one image" and input == "left"
then if bl then 488 else if clear then 474 else 452
then if bl then 488 else if clear then 474 else if sr then 444 else 452
else if room_style == "one image"
then 0
else if bl and input == "left"
@@ -410,6 +411,8 @@ init script:
then 265
else if clear
then 251
else if sr
then 236
else 240
)
else if bl and input == "left" and room_style == "one image"
@@ -422,6 +425,8 @@ init script:
then 265
else if clear
then 237
else if contains(styling.other_options, match:"spillover image")
then if input == "left" then 444 else 0
else 203
}
image_height := {
@@ -430,6 +435,8 @@ init script:
then 375
else if clear
then 345
else if is_short_room()
then 149
else if is_room()
then 211
else 148
@@ -442,7 +449,8 @@ init script:
room_style := styling.room_images
rm := is_room()
if rm then (
if is_short_room() then if input == "right" then "rooms/image_mask_right_short.png" else ""
else if rm then (
if room_style == "one image" and input == "left"
then "rooms/image_mask{tag}.png"
else "rooms/image_mask_{input}{tag}.png"
@@ -470,6 +478,7 @@ init script:
is_room := {
chosen(styling.frames, choice:"room") or lang_setting("is_room")(card.sub_type)
}
is_short_room := { chosen(styling.other_options, choice:"short room image") and is_room() }
is_fuse := { card.rule_text_3 != "" and not is_room() }
is_arrows := { chosen(styling.frames, choice:"arrows") }
is_borderless := { chosen(styling.frames, choice:"borderless") }
@@ -601,6 +610,9 @@ init script:
]
]
}
flavor_bar_width := { 251 }
flavor_bar_offset_left_1 := { 25 }
flavor_bar_offset_left_2 := { 268 }
harder_script := [
alt_nyx: alt_nyx_template,
texture: texture_template
@@ -650,7 +662,14 @@ styling field:
choice: ancestral generic mana
choice: prerelease stamp
choice: two illustrators
choice: spillover image
choice: short room image
initial: two illustrators
styling field:
type: color
name: room backfill
default: rgb(0,0,0)
description: Sets the color of the room textbox on short rooms
styling field:
type: text
name: popout image style
@@ -880,11 +899,11 @@ card style:
image: { card_symbol_image(face: 2) }
############################# Image
image:
left: { if is_borderless() or left_clear() then 35 else if is_room() then 46 else 50 }
left: { if is_borderless() or left_clear() then 35 else if is_short_room() then 50 else if is_room() then 46 else 50 }
top: { if is_borderless() then 0 else if left_clear() then 13 else 49 }
width: { image_width("left") }
height: { image_height("left") }
z index: 400
z index: 510
default: {default_image(card.card_color)}
mask: { image_mask("left") }
image 2:
@@ -892,7 +911,7 @@ card style:
top: { if is_borderless() then 0 else if right_clear() then 13 else 49 }
width: { image_width("right") }
height: { image_height("right") }
z index: 401
z index: 511
default: {default_image(card.card_color_2)}
mask: { image_mask("right") }
mainframe image:
@@ -903,11 +922,11 @@ card style:
z index: 1010
mainframe image 2:
left: 245
top: { if is_borderless() then 0 else 53 }
top: { if is_borderless() then 0 else 49 }
width: { if (is_room() or is_borderless()) and styling.room_images == "three images" then 50 else 0 }
height: { if is_borderless() then 375 else 209 }
z index: 410
mask: { "rooms/image_mask_middle" + (if not is_room() then "_fuse" else if is_borderless() then (if uses_fuse_arrows() then "_arrow" else "_bl") else "") + ".png" }
height: { if is_borderless() then 375 else if is_short_room() then 149 else 211 }
z index: 520
mask: { if is_short_room() then "" else "rooms/image_mask_middle" + (if not is_room() then "_fuse" else if is_borderless() then (if uses_fuse_arrows() then "_arrow" else "_bl") else "") + ".png" }
############################# Card type
indicator:
left: 50
@@ -1184,7 +1203,13 @@ extra card field:
choice: patch
editable: false
save value: false
extra card field:
type: color
name: spillblock
script: styling.room_backfill
editable: false
save value: false
extra card style:
fuse_bridge:
left: 265
@@ -1316,3 +1341,11 @@ extra card style:
render style: image
image: rooms/patch.png
visible: { borderless_frames() and is_room() and not left_clear() }
spillblock:
left: 46
top: 202
width: 452
height: 58
z index: 700
visible: { is_short_room() }
mask: rooms/bottom_mask.png

View File

@@ -38,7 +38,7 @@ init script:
else "2" # textbox
}
template_prefix :=
template_prefix := [
card: ""
card2: ""
card3: ""

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 B

After

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 B

After

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 B

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -2,8 +2,8 @@ card style:
watermark:
left: { text_style_field(watermark_text_field_1()).left - face_coordinates_map(watermark_face_1()).width/375*10 - watermark_offset_width_1() + watermark_offset_left_1() }
width: { text_style_field(watermark_text_field_1()).width + face_coordinates_map(watermark_face_1()).width/375*20 + watermark_offset_width_1()*2 }
top: { text_style_field(watermark_text_field_1()).top + face_coordinates_map(watermark_face_1()).height/523*3 - watermark_offset_height_1() + watermark_offset_top_1() }
height: { text_style_field(watermark_text_field_1()).height - face_coordinates_map(watermark_face_1()).height/523*6 + watermark_offset_height_1()*2 + (if is_stamped(field: watermark_stamp_field_1()) then watermark_offset_stamp_1() else 0) }
top: { text_style_field(watermark_text_field_1()).top + face_coordinates_map(watermark_face_1()).height/523*3 - watermark_offset_height_1() + watermark_offset_top_1() - chop_top() }
height: { text_style_field(watermark_text_field_1()).height - face_coordinates_map(watermark_face_1()).height/523*6 + watermark_offset_height_1()*2 + (if is_stamped(field: watermark_stamp_field_1()) then watermark_offset_stamp_1() else 0) + chop_top() + chop_bot() }
visible: { not watermark_disabled_1() }
alignment: middle center
popup style: in place

View File

@@ -3,8 +3,8 @@ card style:
watermark 2:
left: { text_style_field(watermark_text_field_2()).left - face_coordinates_map(watermark_face_2()).width/375*10 - watermark_offset_width_2() + watermark_offset_left_2() }
width: { text_style_field(watermark_text_field_2()).width + face_coordinates_map(watermark_face_2()).width/375*20 + watermark_offset_width_2()*2 }
top: { text_style_field(watermark_text_field_2()).top + face_coordinates_map(watermark_face_2()).height/523*3 - watermark_offset_height_2() + watermark_offset_top_2() }
height: { text_style_field(watermark_text_field_2()).height - face_coordinates_map(watermark_face_2()).height/523*6 + watermark_offset_height_2()*2 + (if is_stamped(field: watermark_stamp_field_2()) then watermark_offset_stamp_2() else 0) }
top: { text_style_field(watermark_text_field_2()).top + face_coordinates_map(watermark_face_2()).height/523*3 - watermark_offset_height_2() + watermark_offset_top_2() - chop_top2() }
height: { text_style_field(watermark_text_field_2()).height - face_coordinates_map(watermark_face_2()).height/523*6 + watermark_offset_height_2()*2 + (if is_stamped(field: watermark_stamp_field_2()) then watermark_offset_stamp_2() else 0) + chop_top2() + chop_bot2() }
visible: { not watermark_disabled_2() }
alignment: middle center
popup style: in place

View File

@@ -3,8 +3,8 @@ card style:
watermark 3:
left: { text_style_field(watermark_text_field_3()).left - face_coordinates_map(watermark_face_3()).width/375*10 - watermark_offset_width_3() + watermark_offset_left_3() }
width: { text_style_field(watermark_text_field_3()).width + face_coordinates_map(watermark_face_3()).width/375*20 + watermark_offset_width_3()*2 }
top: { text_style_field(watermark_text_field_3()).top + face_coordinates_map(watermark_face_3()).height/523*3 - watermark_offset_height_3() + watermark_offset_top_3() }
height: { text_style_field(watermark_text_field_3()).height - face_coordinates_map(watermark_face_3()).height/523*6 + watermark_offset_height_3()*2 + (if is_stamped(field: watermark_stamp_field_3()) then watermark_offset_stamp_3() else 0) }
top: { text_style_field(watermark_text_field_3()).top + face_coordinates_map(watermark_face_3()).height/523*3 - watermark_offset_height_3() + watermark_offset_top_3() - chop_top3() }
height: { text_style_field(watermark_text_field_3()).height - face_coordinates_map(watermark_face_3()).height/523*6 + watermark_offset_height_3()*2 + (if is_stamped(field: watermark_stamp_field_3()) then watermark_offset_stamp_3() else 0) + chop_top3() + chop_bot3() }
visible: { not watermark_disabled_3() }
alignment: middle center
popup style: in place

View File

@@ -42,6 +42,7 @@ script:
else if contains(card.shape, match:"battle") then "split"
else if contains(card.shape, match:"leveler") then "normal"
else if contains(card.shape, match:"saga") then "normal"
else if contains(card.shape, match:"class") then "normal"
else if contains(card.shape, match:"adventure") then "vsplit"
else if contains(card.shape, match:"aftermath") then "vsplit"
else if contains(card.shape, match:"planeswalker") then "normal"

View File

@@ -815,7 +815,7 @@ extra card field:
type: text
name: card code
save value: false
script: card_code_script_core()
script: card_code_script(value)
extra card field:
type: choice
name: artist arrow

View File

@@ -333,7 +333,7 @@ extra card field:
type: text
name: card code
save value: false
script: card_code_script_core()
script: card_code_script(value)
extra card field:
type: choice
name: artist arrow

View File

@@ -105,7 +105,7 @@ keyword parameter type:
match: [p](?!ped)(?!ment)
keyword parameter type:
name: name
match: ([^(.:;\n—]+|[ ])
match: ([^(.:;\n—]+[(.:;\n—]?|[ ])
#match: [A-Za-z0-9 ',"“”!?]+
refer script:
name: normal
@@ -1387,7 +1387,7 @@ keyword:
keyword: Amass
match: Amass <atom-param>name</atom-param> <atom-param>number</atom-param>
mode: action
reminder: {handle_action_rt(to:"amass {param1} {param2}", "Create")} {english_number_a(param2)} +1/+1 counter(s) on an Army you control. It's also a {if param1.value == "Zombies" then "Zombie" else english_singular(param1)}. If you don't control an Army, create a 0/0 black {if param1.value == "Zombies" then "Zombie" else english_singular(param1)} Army creature token first.
reminder: {handle_action_rt(to:"amass {param1} {param2}", "Put")} {english_number_a(param2)} +1/+1 counter(s) on an Army you control. It's also a {if param1.value == "Zombies" then "Zombie" else english_singular(param1)}. If you don't control an Army, create a 0/0 black {if param1.value == "Zombies" then "Zombie" else english_singular(param1)} Army creature token first.
#Throne of Eldraine
keyword:
keyword: Adamant
@@ -1965,4 +1965,15 @@ keyword:
keyword: Survival
match: Survival
mode: pseudo
rules: Survival — At the beginning of your second main phase, if ~ is tapped, [effect].
rules: Survival — At the beginning of your second main phase, if ~ is tapped, [effect].
#Aetherdrift
keyword:
keyword: Start your engines!
match: Start your engines!
mode: expert
reminder: If you have no speed, it starts at 1. It increases once on each of your turns when an opponent loses life. Max speed is 4.
keyword:
keyword: Exhaust
match: Exhaust — <atom-param>cost</atom-param>: <atom-param>action</atom-param>
mode: expert
reminder: Activate each exhaust ability only once.

View File

@@ -1187,7 +1187,9 @@ handle_merged_rt := {
handle_action_rt := {
"<use-if-bumped>To " + to + ", " + to_lower(input) + "</use-if-bumped><otherwise>" + input + "</otherwise>"
}
handle_action_rt_single := {
"<use-if-bumped>" + prefix + " " + to_lower(input) + "</use-if-bumped><otherwise>" + input + "</otherwise>"
}
############################################################## Complex reminder texts
self_pro_check := match@(match:"You ha(ve|s) <kw-A><nospellcheck>protection")
protection_code := {
@@ -1673,6 +1675,12 @@ text_filter :=
in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'||-|—|/|)<match>", #### TODO: Allow any punctuation before
replace: "<atom-cardname></atom-cardname>"
) +
#### step 3a : expand shortcut word THIS
replace@(
match: "THIS>?", #### >? is here so after replacement, the mouse snaps to the end of </atom>
in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'||-|—|/|)<match>", #### TODO: Allow any punctuation before
replace: "<atom-printname></atom-printname>"
) +
#### step 3b : expand shortcut word LEGENDNAME
replace@(
match: "LEGENDNAME>?",
@@ -1685,11 +1693,37 @@ text_filter :=
in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'||/|)<match>", #### TODO: Allow any punctuation before
replace: "<atom-autorem></atom-autorem>"
) +
#### step 3bb : debug atom fields
replace@(
match: "<atom-name>([^<]+)</atom-(card|print)",
replace: "<atom-\\2name>\\1</atom-\\2"
) +
replace@(
match: "<atom-name>",
replace: ""
) +
#### step 3c : fill in atom fields
tag_contents@(
tag: "<atom-cardname>",
contents: { "<nospellcheck>" + (if card_name=="" then "CARDNAME" else strip_card_codes(card_name, atom:true)) + "</nospellcheck>" }
) +
tag_contents@(
tag: "<atom-printname>",
contents: { "<nospellcheck>" + reverse_name_for(card_name, margin_code:margin_code) + "</nospellcheck>" }
) +
#### capitalize This type when appropriate
replace@(
match:"([•.:]) <atom-(card|print)name><nospellcheck>this",
replace:"\\1 <atom-\\2name><nospellcheck>This"
) +
replace@(
match:"([\"“'])<atom-(card|print)name><nospellcheck>this",
replace:"\\1<atom-\\2name><nospellcheck>This"
) +
replace@(
match:"^<atom-(card|print)name><nospellcheck>this",
replace:"<atom-\\1name><nospellcheck>This"
) +
tag_contents@(
tag: "<atom-legname>",
contents: { "<nospellcheck>" + (if card_name=="" then "LEGENDNAME" else legend_filter(strip_card_codes(card_name, atom:true))) + "</nospellcheck>" }
@@ -2417,9 +2451,9 @@ custom_watermark_link := {
array := split_comma(field)
#### not blank, has png, is either verified or old link that's probably fine
if array.0 != "" and (has_png(array.0) and array.1 or else "" != "Not found")
then "/magic-mainframe-extras.mse-include/"+array.0
then "/magic-mainframe-extras.mse-include/"+(if long then field else array.0)
else "/magic-modules.mse-include/watermarks/other/planeswalker.png"
}
}@(long:false)
card_watermark_a := {""}
custom_card_watermark := {
tag := if face == 1 then "" else "_" + face
@@ -2427,10 +2461,10 @@ custom_card_watermark := {
array := split_comma(field)
#### not blank, has png, is either verified or old link that's probably fine
if array.0 != "" and (has_png(array.0) and array.1 or else "" != "Not found")
then "/magic-mainframe-extras.mse-include/" + array.0
then "/magic-mainframe-extras.mse-include/"+(if long then field else array.0)
else if card_watermark_a() != "" then "/magic-mainframe-extras.mse-include/" + card_watermark_a()
else "/magic-modules.mse-include/watermarks/other/planeswalker.png"
}
}@(long:false)
card_new_color := {
if card.card_color == "white" then "w"
else if card.card_color == "blue" then "u"
@@ -2656,23 +2690,41 @@ watermark_scripts :=
"universes beyond ponies nightmare moon": { watermark_blend(wm_directory + "ponies/nightmare moon.png", face:face) }
"universes beyond ponies luna": { watermark_blend(wm_directory + "ponies/luna.png", face:face) }
"custom watermark one": { watermark_blend(custom_watermark_link(1), custom:true, face:face) }
"custom watermark two": { watermark_blend(custom_watermark_link(2), custom:true, face:face) }
"custom watermark three": { watermark_blend(custom_watermark_link(3), custom:true, face:face) }
"custom watermark four": { watermark_blend(custom_watermark_link(4), custom:true, face:face) }
"custom watermark five": { watermark_blend(custom_watermark_link(5), custom:true, face:face) }
"custom watermark six": { watermark_blend(custom_watermark_link(6), custom:true, face:face) }
"custom watermark seven": { watermark_blend(custom_watermark_link(7), custom:true, face:face) }
"custom watermark eight": { watermark_blend(custom_watermark_link(8), custom:true, face:face) }
"custom watermark nine": { watermark_blend(custom_watermark_link(9), custom:true, face:face) }
"custom watermark ten": { watermark_blend(custom_watermark_link(10), custom:true, face:face) }
"custom watermark card": { watermark_blend(custom_card_watermark(face:face), custom:true, face:face) }
"custom watermark one": { build_custom_watermark_blend(1) }
"custom watermark two": { build_custom_watermark_blend(2) }
"custom watermark three": { build_custom_watermark_blend(3) }
"custom watermark four": { build_custom_watermark_blend(4) }
"custom watermark five": { build_custom_watermark_blend(5) }
"custom watermark six": { build_custom_watermark_blend(6) }
"custom watermark seven": { build_custom_watermark_blend(7) }
"custom watermark eight": { build_custom_watermark_blend(8) }
"custom watermark nine": { build_custom_watermark_blend(9) }
"custom watermark ten": { build_custom_watermark_blend(10) }
"custom watermark card": { build_custom_watermark_blend("a") }
"set symbol": { if (styling.watermark_render or else set.blend_with_colors) == "glow" then glow_watermark_blend(symbol_variation(symbol: set.symbol, variation: "watermark"), face:face) else shadow_watermark_blend(symbol_variation(symbol: set.symbol, variation: "watermark"), face:face) }
]
watermark_image_1 := { watermark_scripts[card.watermark](face:watermark_face_1()) or else "" }
watermark_image_2 := { watermark_scripts[card.watermark_2](face:watermark_face_2()) or else "" }
watermark_image_3 := { watermark_scripts[card.watermark_3](face:watermark_face_3()) or else "" }
build_custom_watermark_blend := {
info := if input == "a" then custom_card_watermark(face:face, long:true)
else custom_watermark_link(input, long:true)
array := split_comma(info)
link := array.0
l := 500
h := 500
if length(array) > 1 then (
px := px_split(array.2)
if length(px) > 2
then l := 0
else (
l := px.0
h := px.1
)
)
watermark_blend(link, l:l, h:h, custom:true, face:face)
}
############################################################## Other scripted fields
#### Dimensions of card faces, can be changed in style files
faces_coordinates := {
@@ -2843,13 +2895,13 @@ card_number_old_1 := {
else if auto_copy then
combined_editor(
field1: card.auto_copyright,
separator: card.card_number,
separator: " " + card.card_number + " ",
field2: card.card_code_text
)
else
combined_editor(
field1: card.copyright,
separator: card.card_number,
separator: " " + card.card_number + " ",
field2: card.card_code_text
)
}
@@ -2987,7 +3039,7 @@ level_filter := { input }
#### Correct the CARDNAME atom for levelers
card_name_for_level := {
tag := name_tag_for_level()
if set.CARDNAME_replacement == "card's type"
if (set.CARDNAME_replacement == "card's type" xor reverse)
then (
ty := to_lower(cardname_type(card["type"+tag]))
if ty == "" then "this"
@@ -2996,10 +3048,10 @@ card_name_for_level := {
else if set.CARDNAME_replacement == "card's alias" and card["alias"+tag] != ""
then card["alias"+tag]
else card["name"+tag]
}
}@(reverse:false)
card_name_for_face := {
tag := if input == 1 then "" else "_" + input
if set.CARDNAME_replacement == "card's type"
if (set.CARDNAME_replacement == "card's type" xor reverse)
then (
ty := to_lower(cardname_type(card["type"+tag]))
if ty == "" then "this"
@@ -3008,7 +3060,7 @@ card_name_for_face := {
else if set.CARDNAME_replacement == "card's alias" and card["alias"+tag] != ""
then card["alias"+tag]
else card["name"+tag]
}
}@(reverse:false)
cardname_type := {
if is_creature(input)
then lang_setting("creature")
@@ -3024,9 +3076,23 @@ cardname_type := {
then lang_setting("enchantment")
else if is_battle(input)
then lang_setting("battle")
else if is_plane(input)
then lang_setting("plane")
else ""
}
reverse_name_for := {
lv := "1"
face := ""
if contains(margin_code, match:"lv") then
lv := filter_text(margin_code, match:"[0-9]+")
else face := filter_text(margin_code, match:"[0-9]+")
card_name := if face != "" then card_name_for_face(face, reverse:true)
else card_name_for_level(lv, reverse:true)
if card_name == "" then "CARDNAME" else strip_card_codes(card_name, atom:true)
}
#### This can be overwritten for more complicated levelers
#### Dungeons for example will overwrite with just {""}
name_tag_for_level := {
@@ -3738,7 +3804,16 @@ loyalty_textbox_background_image :=
############################################################## Separators
separator_enable_level := { false }
separator_default := { if set.use_flavor_bar then "flavor bar" else "none" }
separator_default := {
if set.use_flavor_bar then (
if set.default_flavor_bar == "thin bar"
then "grey bar"
else if set.default_flavor_bar == "thick bar"
then "flavor bar"
else set.default_flavor_bar
)
else "none"
}
flavor_bar_left := { face_coordinates_map(input).left }
flavor_bar_top :=
@@ -5113,8 +5188,30 @@ split_custom_directory := {
dir := filter_text(input, match:"^([^.]+/)+")
[directory:dir, filename:fn]
}
auto_custom_available := { set.auto_custom_border != "disabled" and has_png(set.auto_custom_border_source)}
auto_custom_border := {
auto_custom_available() and active_custom_border()
}
active_custom_border := {
if set.auto_custom_border == "check typeline" then
contains(card.type, match:set.auto_custom_border_match)
else if set.auto_custom_border == "check rules text" then
contains(card.text, match:set.auto_custom_border_match)
else false
}
auto_custom_border_2 := {
auto_custom_available() and active_custom_border_2()
}
active_custom_border_2 := {
if set.auto_custom_border == "check typeline" then
contains(card.type_2, match:set.auto_custom_border_match)
else if set.auto_custom_border == "check rules text" then
contains(card.text_2, match:set.auto_custom_border_match)
else false
}
custom_border_image := {
src := styling.custom_border_source or else ""
if (not has_png(src)) and auto_custom_available() then src := set.auto_custom_border_source
ps := split_text(src, match:"-color-")
if length(ps) > 1 then
"/magic-mainframe-extras.mse-include/" + ps[0] + input + (if land then "l" else "") + ps[1]

View File

@@ -460,6 +460,13 @@ set field:
type: boolean
name: use flavor bar
description: Enables the flavor bar on Mainframe templates.
set field:
type: choice
name: default flavor bar
choice: thin bar
choice: thick bar
choice: none
description: The style of flavor bar to use
set field:
type: boolean
name: auto legends
@@ -472,6 +479,20 @@ set field:
type: text
name: alternate nyx
description: Use an alternate nyx source folder from magic-mainframe-extras.mse-include.
set field:
type: choice
name: auto custom border
choice: disabled
choice: check typeline
choice: check rules text
set field:
type: text
name: auto custom border match
description: The string to match to automate a custom border.
set field:
type: text
name: auto custom border source
description: Use this file from magic-mainframe-extras as a custom vehicle-like frame. if colored, name images like "wborder.png" and put "-color-border.png" here.
set field:
type: text
name: custom index

View File

@@ -133,7 +133,7 @@ statistics dimension:
script: if filter_from_statistic() == "Filtered" or trim_from_statistic() then "" else mana_value_statistic()
statistics dimension:
name: permanent/non
name: permanent / nonpermanent
position hint: 0200
icon: stats/type.png
description: Counts the number of creatures, noncreature permanents, and nonpermanents. Counts each side/face separately.
@@ -689,8 +689,8 @@ statistics dimension:
statistics dimension:
name: all mana production
position hint: 0500
name: mana production (All)
position hint: 0520
icon: stats/land_production.png
description: Counts how many cards can produce white mana. Repeat for all other colors. Then counts how many cards can produce mana of any color, and mana of a chosen color.
split list: true
@@ -715,8 +715,8 @@ statistics dimension:
Chosen : rgb(112,38,128)
statistics dimension:
name: land mana prod.
position hint: 0510
name: mana production (Lands)
position hint: 0500
icon: stats/land_production.png
description: Counts how many lands can produce white mana. Repeat for all other colors. Then counts how many lands can produce mana of any color, and mana of a chosen color. If either side/face is a land, the card will be counted here.
split list: true
@@ -741,8 +741,8 @@ statistics dimension:
Chosen : rgb(112,38,128)
statistics dimension:
name: nonland mana prod.
position hint: 0520
name: mana production (Nonlands)
position hint: 0510
icon: stats/land_production.png
description: Counts how many non-land cards can produce white mana. Repeat for all other colors. Then counts how many non-land cards can produce mana of any color, and mana of a chosen color.
split list: true
@@ -767,7 +767,7 @@ statistics dimension:
Chosen : rgb(112,38,128)
statistics dimension:
name: pip count (Casting)
name: pip count (Casting Costs)
position hint: 0600
icon: stats/color_pips.png
description: Counts the number of casting costs that contain one colored pip. Repeat for all other amounts.
@@ -795,7 +795,7 @@ statistics dimension:
8+ : rgb(197,24,214)
statistics dimension:
name: pip colors (Casting)
name: pip colors (Casting Costs)
position hint: 0630
icon: stats/color_pips.png
description: Counts how many cards have a single white pip in their casting cost. Repeat for two white pips. Then three, then four+, then for all other colors. Counts each side/face separately.
@@ -829,7 +829,7 @@ statistics dimension:
GGGG+ : rgb(18,102,0)
statistics dimension:
name: total pips (Casting)
name: total pips (Casting Costs)
position hint: 0660
icon: stats/color_pips.png
description: Counts the total number of white pips in all the casting costs. Repeat for all other colors.
@@ -851,7 +851,7 @@ statistics dimension:
G : rgb(68,144,15)
statistics dimension:
name: pip count (Ability)
name: pip count (Ability Costs)
position hint: 0610
icon: stats/color_pips.png
description: Counts the number of activated/triggered/keyworded ability costs that contain one colored pip. Repeat for all other amounts.
@@ -879,7 +879,7 @@ statistics dimension:
8+ : rgb(197,24,214)
statistics dimension:
name: pip colors (Ability)
name: pip colors (Ability Costs)
position hint: 0640
icon: stats/color_pips.png
description: Counts how many activated/triggered/keyworded abilities have a single white pip in their cost. Repeat for two white pips. Then three, then four+, then for all other colors. Counts each ability on each side/face separately.
@@ -913,7 +913,7 @@ statistics dimension:
GGGG+ : rgb(18,102,0)
statistics dimension:
name: total pips (Ability)
name: total pips (Ability Costs)
position hint: 0670
icon: stats/color_pips.png
description: Counts the total number of white pips in all the activated/triggered/keyworded ability costs. Repeat for all other colors.
@@ -935,7 +935,7 @@ statistics dimension:
G : rgb(68,144,15)
statistics dimension:
name: pip count (Combined)
name: pip count (All Costs)
position hint: 0620
icon: stats/color_pips.png
description: Counts the number of costs that contain one colored pip. Repeat for all other amounts.
@@ -963,7 +963,7 @@ statistics dimension:
8+ : rgb(197,24,214)
statistics dimension:
name: pip color (Combined)
name: pip color (All Costs)
position hint: 0650
icon: stats/color_pips.png
description: Counts how many costs contain a single white pip. Repeat for two white pips. Then three, then four+, then for all other colors. Counts each cost on each side/face separately.
@@ -997,7 +997,7 @@ statistics dimension:
GGGG+ : rgb(18,102,0)
statistics dimension:
name: total pips (Combined)
name: total pips (All Costs)
position hint: 0680
icon: stats/color_pips.png
description: Counts the total number of white pips in all the costs. Repeat for all other colors.
@@ -1119,7 +1119,7 @@ statistics dimension:
script: if trim_from_draw_statistic() then "" else average_opening_hand_statistic()
statistics dimension:
name: land drop hit % (Play)
name: land drop hit % (On The Play)
position hint: 1100
icon: stats/land_drops.png
description: If the set is a deck, probability of hitting every single land drop up to the given turn, when on the play. Always excludes cards with the word 'commander' in their card notes, as well as tokens, emblems, dungeons, conspiracies, heroes, vanguards, schemes, planes and phenomenons.
@@ -1128,7 +1128,7 @@ statistics dimension:
script: land_drop_hit_percentage_statistic(start: 6)
statistics dimension:
name: land drop hit % (Draw)
name: land drop hit % (On The Draw)
position hint: 1110
icon: stats/land_drops.png
description: If the set is a deck, probability of hitting every single land drop up to the given turn, when on the draw. Always excludes cards with the word 'commander' in their card notes, as well as tokens, emblems, dungeons, conspiracies, heroes, vanguards, schemes, planes and phenomenons.

View File

@@ -133,7 +133,7 @@ statistics dimension:
script: if filter_from_statistic() == "Filtré" or trim_from_statistic() then "" else mana_value_statistic()
statistics dimension:
name: Permanent/Non
name: Permanent / Nonpermanent
position hint: 0200
icon: stats/type.png
description: Counts the number of creatures, noncreature permanents, and nonpermanents. Counts each side/face separately.
@@ -220,7 +220,7 @@ statistics dimension:
script: if filter_from_statistic() == "Filtré" or trim_from_statistic() then "" else combined_subtype_statistic()
statistics dimension:
name: Sous-Type (Noncréature)
name: Sous-Type De Noncréature
position hint: 0260
icon: stats/noncreature_subtype.png
description: Subtypes of all types except creature/tribal/kindred.
@@ -690,7 +690,7 @@ statistics dimension:
statistics dimension:
name: Production de Mana (Tout)
position hint: 0500
position hint: 0520
icon: stats/land_production.png
description: Counts how many cards can produce white mana. Repeat for all other colors. Then counts how many cards can produce mana of any color, and mana of a chosen color.
split list: true
@@ -715,8 +715,8 @@ statistics dimension:
Choisie : rgb(112,38,128)
statistics dimension:
name: Prod. de Mana (Terrain)
position hint: 0510
name: Production de Mana (Terrain)
position hint: 0500
icon: stats/land_production.png
description: Counts how many lands can produce white mana. Repeat for all other colors. Then counts how many lands can produce mana of any color, and mana of a chosen color. If either side/face is a land, the card will be counted here.
split list: true
@@ -741,8 +741,8 @@ statistics dimension:
Choisie : rgb(112,38,128)
statistics dimension:
name: Prod. de Mana (Nonterrain)
position hint: 0520
name: Production de Mana (Nonterrain)
position hint: 0510
icon: stats/land_production.png
description: Counts how many non-land cards can produce white mana. Repeat for all other colors. Then counts how many non-land cards can produce mana of any color, and mana of a chosen color.
split list: true
@@ -767,7 +767,7 @@ statistics dimension:
Choisie : rgb(112,38,128)
statistics dimension:
name: # de Pépins (Lancement)
name: # de Pépins (Coût de Lancement)
position hint: 0600
icon: stats/color_pips.png
description: Counts the number of casting costs that contain one colored pip. Repeat for all other amounts.
@@ -795,7 +795,7 @@ statistics dimension:
8+ : rgb(197,24,214)
statistics dimension:
name: Pépins (Lancement)
name: Pépins (Coût de Lancement)
position hint: 0630
icon: stats/color_pips.png
description: Counts how many cards have a single white pip in their casting cost. Repeat for two white pips. Then three, then four+, then for all other colors. Counts each side/face separately.
@@ -829,7 +829,7 @@ statistics dimension:
GGGG+ : rgb(18,102,0)
statistics dimension:
name: Pépins Totaux (Lancement)
name: Pépins Totaux (Coût de Lancement)
position hint: 0660
icon: stats/color_pips.png
description: Counts the total number of white pips in all the casting costs. Repeat for all other colors.
@@ -851,7 +851,7 @@ statistics dimension:
G : rgb(68,144,15)
statistics dimension:
name: # De Pépins (Capacités)
name: # De Pépins (Coût de Capacités)
position hint: 0610
icon: stats/color_pips.png
description: Counts the number of activated/triggered/keyworded ability costs that contain one colored pip. Repeat for all other amounts.
@@ -879,7 +879,7 @@ statistics dimension:
8+ : rgb(197,24,214)
statistics dimension:
name: Pépins (Capacités)
name: Pépins (Coût de Capacités)
position hint: 0640
icon: stats/color_pips.png
description: Counts how many activated/triggered/keyworded abilities have a single white pip in their cost. Repeat for two white pips. Then three, then four+, then for all other colors. Counts each ability on each side/face separately.
@@ -913,7 +913,7 @@ statistics dimension:
GGGG+ : rgb(18,102,0)
statistics dimension:
name: Pépins Totaux (Capacités)
name: Pépins Totaux (Coût de Capacités)
position hint: 0670
icon: stats/color_pips.png
description: Counts the total number of white pips in all the activated/triggered/keyworded ability costs. Repeat for all other colors.
@@ -935,7 +935,7 @@ statistics dimension:
G : rgb(68,144,15)
statistics dimension:
name: # de Pépins (Tout)
name: # de Pépins (Tout les Coûts)
position hint: 0620
icon: stats/color_pips.png
description: Counts the number of costs that contain one colored pip. Repeat for all other amounts.
@@ -963,7 +963,7 @@ statistics dimension:
8+ : rgb(197,24,214)
statistics dimension:
name: Pépins (Tout)
name: Pépins (Tout les Coûts)
position hint: 0650
icon: stats/color_pips.png
description: Counts how many costs contain a single white pip. Repeat for two white pips. Then three, then four+, then for all other colors. Counts each cost on each side/face separately.
@@ -997,7 +997,7 @@ statistics dimension:
GGGG+ : rgb(18,102,0)
statistics dimension:
name: Pépins Totaux (Tout)
name: Pépins Totaux (Tout les Coûts)
position hint: 0680
icon: stats/color_pips.png
description: Counts the total number of white pips in all the costs. Repeat for all other colors.
@@ -1019,7 +1019,7 @@ statistics dimension:
G : rgb(68,144,15)
statistics dimension:
name: # De Mots
name: Nombre De Mots
position hint: 0700
icon: stats/text_length.png
description: How many words are in the cards various rule texts.
@@ -1029,7 +1029,7 @@ statistics dimension:
script: if filter_from_statistic() == "Filtré" or trim_from_statistic() then "" else total_word_count_statistic()
#statistics dimension:
# name: # De Lignes
# name: Nombre De Lignes
# position hint: 1110
# icon: stats/text_length.png
# description: How many lines are in the cards various rule texts.
@@ -1038,7 +1038,7 @@ statistics dimension:
# script: if filter_from_statistic() == "Filtré" or trim_from_statistic() then "" else total_line_count_statistic() # Not reliable atm.
statistics dimension:
name: # De Paragraphes
name: Nombre De Paragraphes
position hint: 0710
icon: stats/text_length.png
description: How many paragraphs are in the cards various rule texts.
@@ -1119,7 +1119,7 @@ statistics dimension:
script: if trim_from_draw_statistic() then "" else average_opening_hand_statistic()
statistics dimension:
name: % DAvoir Un Terrain (1er)
name: % DAvoir Un Terrain (Jouant 1er)
position hint: 1100
icon: stats/land_drops.png
description: If the set is a deck, probability of hitting every single land drop up to the given turn, when on the play. Always excludes cards with the word 'commander' in their card notes, as well as tokens, emblems, dungeons, conspiracies, heroes, vanguards, schemes, planes and phenomenons.
@@ -1128,7 +1128,7 @@ statistics dimension:
script: land_drop_hit_percentage_statistic(start: 6)
statistics dimension:
name: % DAvoir Un Terrain (2ème)
name: % DAvoir Un Terrain (Jouant 2ème)
position hint: 1110
icon: stats/land_drops.png
description: If the set is a deck, probability of hitting every single land drop up to the given turn, when on the draw. Always excludes cards with the word 'commander' in their card notes, as well as tokens, emblems, dungeons, conspiracies, heroes, vanguards, schemes, planes and phenomenons.
@@ -1137,7 +1137,7 @@ statistics dimension:
script: land_drop_hit_percentage_statistic(start: 7)
statistics dimension:
name: # De Couleurs
name: Nombre De Couleurs
position hint: 1500
icon: stats/color.png
description: How many cards have one color, how many have two, three, etc...
@@ -1159,7 +1159,7 @@ statistics dimension:
5 : rgb(161,54,169)
statistics dimension:
name: # De Couleurs (Identité)
name: Nombre De Couleurs (Identité)
position hint: 1510
icon: stats/color.png
description: How many cards have one color in their color identity, how many have two, three, etc...

View File

@@ -1380,6 +1380,8 @@ filter_field_map_statistic :=
color_identity_count: {color_identity_count_statistic()},
mana_production: {mana_production_list_statistic(check_type: "all")},
"permanent/non": {replace_en_spaces_statistic(remove_zero_width_spaces_statistic(permanent_statistic()))},
"permanent/nonpermanent": {replace_en_spaces_statistic(remove_zero_width_spaces_statistic(permanent_statistic()))},
"permanent / nonpermanent": {replace_en_spaces_statistic(remove_zero_width_spaces_statistic(permanent_statistic()))},
mana_value: {cmc(card.casting_cost)},
mana_value_2: {cmc(card.casting_cost_2)},
supertype: {keep_only_supertypes_statistic(card.super_type)},

Binary file not shown.

Binary file not shown.

BIN
mse.com

Binary file not shown.

BIN
mse.exe

Binary file not shown.