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 := { spotlight_watermark_blend := {
face := [1:card.card_color, 2:card.card_color_2, 3:card.card_color_3][face] 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 ( if l < 1 or h < 1 or l > 1024 or h > 1024 then (
input input
@@ -1121,7 +1109,7 @@ spotlight_watermark_blend := {
wmc := watermark_colors(face:face) wmc := watermark_colors(face:face)
c1 := wmc.0 + (if contains(face, match:"land") then "l") + "spotlight.png" c1 := wmc.0 + (if contains(face, match:"land") then "l") + "spotlight.png"
c2 := wmc.1 + (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) 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) 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/") } 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/")} 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 # Use the normal tap symbol
mana_t := { mana_t := {
@@ -413,8 +413,11 @@ init script:
"/magic-mainframe-extras.mse-include/" + src "/magic-mainframe-extras.mse-include/" + src
} }
custom_border_blend := { color_background(type:"custom_border", base_hybrid:card_hybrid, folder:"blend_masks/") } 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 # this goes at the very end
harder_script := [ harder_script := [
crown: module_crown_template, crown: module_crown_template,
@@ -1227,7 +1230,7 @@ extra card style:
render style: image render style: image
image: { custom_border_blend() } image: { custom_border_blend() }
z index: 0 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"} mask: {(if is_vehicle() or is_snow() or is_nyx() then "double_") + "frame_border_mask.png"}
nyx overlay: nyx overlay:
left: 0 left: 0

View File

@@ -290,9 +290,11 @@ init script:
is_leveler := { is_leveler := {
chosen(styling.frames, choice:"leveler") chosen(styling.frames, choice:"leveler")
} }
is_custom_border := { is_custom_border := {
chosen(styling.frames, choice:"custom border") if chosen(styling.frames, choice:"custom border")
and contains(styling.custom_border_source, match:".png") then has_png(styling.custom_border_source)
else auto_custom_border()
} }
is_leveler := {chosen(styling.frames, choice:"leveler")} is_leveler := {chosen(styling.frames, choice:"leveler")}
is_legend := { 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 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 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_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_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 "") + (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 } guild_mana := { styling.use_guild_mana_symbols }
ancestral_mana := { styling.use_ancestral_mana_symbols } ancestral_mana := { styling.use_ancestral_mana_symbols }
is_land := match@(match: "(?i)Land") is_land := lang_setting("is_land")
is_basic := match@(match: "(?i)Basic") is_basic := lang_setting("is_basic")
is_plains := match@(match: "(?i)Plains") is_plains := lang_setting("is_plains")
is_island := match@(match: "(?i)Island") is_island := lang_setting("is_island")
is_swamp := match@(match: "(?i)Swamp") is_swamp := lang_setting("is_swamp")
is_mountain := match@(match: "(?i)Mountain") is_mountain := lang_setting("is_mountain")
is_forest := match@(match: "(?i)Forest") 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 } is_promo := { styling.promo }

View File

@@ -499,7 +499,9 @@ init script:
) )
} }
front_custom_border := { 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 := { front_draft := {
chosen(styling.other_options, choice:"draft matters front") chosen(styling.other_options, choice:"draft matters front")
@@ -552,7 +554,9 @@ init script:
) )
} }
back_custom_border := { 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 := { back_draft := {
chosen(styling.other_options, choice:"draft matters back") chosen(styling.other_options, choice:"draft matters back")
@@ -1525,6 +1529,12 @@ init script:
transform_symbol_offset_height_2 := { transform_symbol_offset_height_2 := {
if mainframe_walkerb() then 1 else 0 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 := { card_stamp_offset_top_1 := {
if mainframe_walker() and stamp_shape() == "triangle" then -3 else 0 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_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 } 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" watermark_include := "/magic-modules.mse-include/watermarks"
############################################################## Set info fields ############################################################## Set info fields
@@ -1966,7 +1980,7 @@ card style:
mask: { back_frame_mask() } mask: { back_frame_mask() }
############################# Name line ############################# Name line
name: 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 } 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 } right: { (if front_map() then 344 else 339) - card_style.casting_cost.content_width }
height: { 23 - (0.5 * shrink_name()) } height: { 23 - (0.5 * shrink_name()) }
@@ -1979,7 +1993,7 @@ card style:
size: { name_font_size() } size: { name_font_size() }
color: { name_font_color() } color: { name_font_color() }
name 2: 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() } 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 } right: { (if back_map() then 719 else 714) - card_style.casting_cost_2.content_width }
height: { 23 - (0.5 * shrink_name2()) } height: { 23 - (0.5 * shrink_name2()) }

View File

@@ -66,7 +66,17 @@ init script:
alt_text_script := { alt_text_script := {
combined_editor(field1:card.rule_text, separator1:"<line>\n</line>", field2:card.rule_text_2) 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 } is_loaded := { card_style.text.layout.separator[0] or else 0 > 0 }
top_box_height := { top_box_height := {

View File

@@ -66,7 +66,17 @@ init script:
alt_text_script := { alt_text_script := {
combined_editor(field1:card.rule_text, separator1:"<line>\n</line>", field2:card.rule_text_2) 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 } is_loaded := { card_style.text.layout.separator[0] or else 0 > 0 }
top_box_height := { top_box_height := {

View File

@@ -266,6 +266,13 @@ init script:
is_snow := {chosen(styling.other_options, choice:"snow")} is_snow := {chosen(styling.other_options, choice:"snow")}
is_vehicle := {chosen(styling.other_options, choice:"vehicle")} is_vehicle := {chosen(styling.other_options, choice:"vehicle")}
is_pinned := {chosen(styling.other_options, choice:"pride pinlines")} 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:"~")+ paragraph_count := replace@(match:"\n", replace:"~")+
filter_text@(match:"~") filter_text@(match:"~")
special_text := { special_text := {
@@ -376,11 +383,16 @@ styling field:
choice: nyx choice: nyx
choice: snow choice: snow
choice: vehicle choice: vehicle
choice: custom border
choice: adventure choice: adventure
choice: reversed adventure choice: reversed adventure
choice: pride pinlines choice: pride pinlines
choice: popunder art choice: popunder art
initial: un-indent nonloyalty abilities 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: styling field:
type: text type: text
name: custom mask name: custom mask
@@ -539,7 +551,7 @@ card style:
z index: 920 z index: 920
padding top: 0 padding top: 0
card symbol: card symbol:
left: {if card.card_symbol=="none" then 20 else 29} left: {if card.card_symbol=="none" then 20 else 25}
top: 21 top: 21
height: 21 height: 21
width: 23 width: 23
@@ -977,6 +989,12 @@ extra card field:
choice: car door choice: car door
save value: false save value: false
editable: false editable: false
extra card field:
type: choice
name: custom overlay
choice: car door
save value: false
editable: false
extra card field: extra card field:
type: choice type: choice
name: snow overlay name: snow overlay
@@ -1413,7 +1431,7 @@ extra card style:
image: {module_nyx()} image: {module_nyx()}
z index: 330 z index: 330
visible: {is_nyx()} 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: snow overlay:
left: 0 left: 0
top: 0 top: 0
@@ -1423,7 +1441,7 @@ extra card style:
image: {module_snow()} image: {module_snow()}
z index: 320 z index: 320
visible: {is_snow()} 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: vehicle overlay:
left: 0 left: 0
top: 0 top: 0
@@ -1432,8 +1450,18 @@ extra card style:
render style: image render style: image
image: full_voverlay.png image: full_voverlay.png
z index: 310 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()} 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: pride pin:
left: { if not is_pinned() then 0 else 19} left: { if not is_pinned() then 0 else 19}
top: { if not is_pinned() then 0 else 51} 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() } 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"} 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: adventure cover:
left: 0 left: 0
top: {if has_four_abilities() then 288 else 324} 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 installer group: magic/m15 style/tokens
position hint: 004 position hint: 004
version: 2024-09-03 version: 2025-01-11
depends on: depends on:
package: magic.mse-game package: magic.mse-game
version: 2014-06-25 version: 2014-06-25
@@ -228,6 +228,12 @@ init script:
then module_stamp() then module_stamp()
else "/magic-modules.mse-include/stamps/backs/" + (if sh == "triangle" then "triangle_stamp.png" else "stamp.png") 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" watermark_include := "/magic-modules.mse-include/watermarks"
############################################################## Set info fields ############################################################## Set info fields
set info style: set info style:
@@ -253,6 +259,11 @@ styling field:
choice: nyx choice: nyx
choice: snow choice: snow
choice: vehicle 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: styling field:
type: multiple choice type: multiple choice
name: auto frames 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"} 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"} 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"} 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 ############################# Card type
type: type:
left: 32 left: 32
@@ -712,6 +723,12 @@ extra card field:
choice: plate choice: plate
save value: false save value: false
editable: false editable: false
extra card field:
type: choice
name: custom overlay
choice: plate
save value: false
editable: false
extra card field: extra card field:
type: text type: text
name: vorthos box name: vorthos box
@@ -856,6 +873,16 @@ extra card style:
image: voverlay.png 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"} 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() } 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: vorthos box:
right: { if card.pt != "" then 275 else 350 } right: { if card.pt != "" then 275 else 350 }
top: 488 top: 488

View File

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

View File

@@ -405,13 +405,25 @@
replace: { _1 + to_upper(_2) }) + replace: { _1 + to_upper(_2) }) +
#curly_quotes + #curly_quotes +
# step 9 : spellcheck # 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( check_spelling(
language: language().spellcheck_code, language: language().spellcheck_code,
extra_dictionary: "/magic.mse-game/magic-words", extra_dictionary: "/magic.mse-game/dictionary/magic-words",
extra_match: additional_text_words extra_match: additional_text_words
) )
else input else input
} }
############################################################## Statistics utilities ############################################################## Statistics utilities

View File

@@ -192,7 +192,7 @@ init script:
special_text := { special_text := {
if is_class() then 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_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_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) +(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 render style: image
z index: 720 z index: 720
image: {if is_case() then "bar.png" else if is_class() then class_bar() else "line.png"} 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: linebreak 2:
left: {30+if is_class() or is_case() then 158 else 0} 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} 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: "") un_png := replace@(match:".png", replace: "")
is_vehicle := {lang_setting("is_vehicle")(card.sub_type)} is_vehicle := {lang_setting("is_vehicle")(card.sub_type)}
card_stamp_offset_top_1 := {1} 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 fields
set info style: set info style:
symbol: 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. description: Removes the automatic card number for specific cards, to allow for overcounted cards like in Planeswalker Decks.
initial: no initial: no
include file: /magic-modules.mse-include/stamps/styling_fields 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: styling field:
type: boolean 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/stamps/stamp_back
include file: /magic-modules.mse-include/watermarks/card_fields include file: /magic-modules.mse-include/watermarks/card_fields
include file: /magic-modules.mse-include/separators/card_fields include file: /magic-modules.mse-include/separators/card_fields
include file: /magic-modules.mse-include/loyalty/card_fields
card style: card style:
############################# Background stuff ############################# Background stuff
border color: border color:
@@ -314,7 +386,7 @@ card style:
include file: /magic-modules.mse-include/rarities/choice_images include file: /magic-modules.mse-include/rarities/choice_images
############################# Text box ############################# Text box
text: text:
left: 29 left: { if mainframe_walker() then 35 else 29 }
top: {338-(-chop_top())} top: {338-(-chop_top())}
width: 314 width: 314
bottom: {477-chop_bot()} bottom: {477-chop_bot()}
@@ -350,7 +422,7 @@ card style:
z index: 900 z index: 900
left: 293 left: 293
top: 468 top: 468
width: 60 width: { if mainframe_walker() then 0 else 60 }
height: 28 height: 28
alignment: center middle shrink-overflow alignment: center middle shrink-overflow
font: font:
@@ -383,7 +455,7 @@ extra card style:
pt box: pt box:
left: 285 left: 285
top: 460 top: 460
width: 77 width: { if mainframe_walker() then 0 else 77 }
height: 43 height: 43
z index: 840 z index: 840
visible: { card.pt != "" } 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 := { image_width := {
clear := if input == "left" then left_clear() else if input == "right" then right_clear() else false clear := if input == "left" then left_clear() else if input == "right" then right_clear() else false
bl := is_borderless() bl := is_borderless()
sr := is_short_room()
room_style := styling.room_images room_style := styling.room_images
if is_room() then ( if is_room() then (
if room_style == "one image" and input == "left" 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" else if room_style == "one image"
then 0 then 0
else if bl and input == "left" else if bl and input == "left"
@@ -410,6 +411,8 @@ init script:
then 265 then 265
else if clear else if clear
then 251 then 251
else if sr
then 236
else 240 else 240
) )
else if bl and input == "left" and room_style == "one image" else if bl and input == "left" and room_style == "one image"
@@ -422,6 +425,8 @@ init script:
then 265 then 265
else if clear else if clear
then 237 then 237
else if contains(styling.other_options, match:"spillover image")
then if input == "left" then 444 else 0
else 203 else 203
} }
image_height := { image_height := {
@@ -430,6 +435,8 @@ init script:
then 375 then 375
else if clear else if clear
then 345 then 345
else if is_short_room()
then 149
else if is_room() else if is_room()
then 211 then 211
else 148 else 148
@@ -442,7 +449,8 @@ init script:
room_style := styling.room_images room_style := styling.room_images
rm := is_room() 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" if room_style == "one image" and input == "left"
then "rooms/image_mask{tag}.png" then "rooms/image_mask{tag}.png"
else "rooms/image_mask_{input}{tag}.png" else "rooms/image_mask_{input}{tag}.png"
@@ -470,6 +478,7 @@ init script:
is_room := { is_room := {
chosen(styling.frames, choice:"room") or lang_setting("is_room")(card.sub_type) 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_fuse := { card.rule_text_3 != "" and not is_room() }
is_arrows := { chosen(styling.frames, choice:"arrows") } is_arrows := { chosen(styling.frames, choice:"arrows") }
is_borderless := { chosen(styling.frames, choice:"borderless") } 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 := [ harder_script := [
alt_nyx: alt_nyx_template, alt_nyx: alt_nyx_template,
texture: texture_template texture: texture_template
@@ -650,7 +662,14 @@ styling field:
choice: ancestral generic mana choice: ancestral generic mana
choice: prerelease stamp choice: prerelease stamp
choice: two illustrators choice: two illustrators
choice: spillover image
choice: short room image
initial: two illustrators 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: styling field:
type: text type: text
name: popout image style name: popout image style
@@ -880,11 +899,11 @@ card style:
image: { card_symbol_image(face: 2) } image: { card_symbol_image(face: 2) }
############################# Image ############################# Image
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 } top: { if is_borderless() then 0 else if left_clear() then 13 else 49 }
width: { image_width("left") } width: { image_width("left") }
height: { image_height("left") } height: { image_height("left") }
z index: 400 z index: 510
default: {default_image(card.card_color)} default: {default_image(card.card_color)}
mask: { image_mask("left") } mask: { image_mask("left") }
image 2: image 2:
@@ -892,7 +911,7 @@ card style:
top: { if is_borderless() then 0 else if right_clear() then 13 else 49 } top: { if is_borderless() then 0 else if right_clear() then 13 else 49 }
width: { image_width("right") } width: { image_width("right") }
height: { image_height("right") } height: { image_height("right") }
z index: 401 z index: 511
default: {default_image(card.card_color_2)} default: {default_image(card.card_color_2)}
mask: { image_mask("right") } mask: { image_mask("right") }
mainframe image: mainframe image:
@@ -903,11 +922,11 @@ card style:
z index: 1010 z index: 1010
mainframe image 2: mainframe image 2:
left: 245 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 } 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 } height: { if is_borderless() then 375 else if is_short_room() then 149 else 211 }
z index: 410 z index: 520
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" } 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 ############################# Card type
indicator: indicator:
left: 50 left: 50
@@ -1184,7 +1203,13 @@ extra card field:
choice: patch choice: patch
editable: false editable: false
save value: false save value: false
extra card field:
type: color
name: spillblock
script: styling.room_backfill
editable: false
save value: false
extra card style: extra card style:
fuse_bridge: fuse_bridge:
left: 265 left: 265
@@ -1316,3 +1341,11 @@ extra card style:
render style: image render style: image
image: rooms/patch.png image: rooms/patch.png
visible: { borderless_frames() and is_room() and not left_clear() } 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 else "2" # textbox
} }
template_prefix := template_prefix := [
card: "" card: ""
card2: "" card2: ""
card3: "" 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: 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() } 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 } 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() } 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) } 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() } visible: { not watermark_disabled_1() }
alignment: middle center alignment: middle center
popup style: in place popup style: in place

View File

@@ -3,8 +3,8 @@ card style:
watermark 2: 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() } 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 } 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() } 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) } 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() } visible: { not watermark_disabled_2() }
alignment: middle center alignment: middle center
popup style: in place popup style: in place

View File

@@ -3,8 +3,8 @@ card style:
watermark 3: 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() } 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 } 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() } 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) } 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() } visible: { not watermark_disabled_3() }
alignment: middle center alignment: middle center
popup style: in place 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:"battle") then "split"
else if contains(card.shape, match:"leveler") then "normal" else if contains(card.shape, match:"leveler") then "normal"
else if contains(card.shape, match:"saga") 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:"adventure") then "vsplit"
else if contains(card.shape, match:"aftermath") then "vsplit" else if contains(card.shape, match:"aftermath") then "vsplit"
else if contains(card.shape, match:"planeswalker") then "normal" else if contains(card.shape, match:"planeswalker") then "normal"

View File

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

View File

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

View File

@@ -105,7 +105,7 @@ keyword parameter type:
match: [p](?!ped)(?!ment) match: [p](?!ped)(?!ment)
keyword parameter type: keyword parameter type:
name: name name: name
match: ([^(.:;\n—]+|[ ]) match: ([^(.:;\n—]+[(.:;\n—]?|[ ])
#match: [A-Za-z0-9 ',"“”!?]+ #match: [A-Za-z0-9 ',"“”!?]+
refer script: refer script:
name: normal name: normal
@@ -1387,7 +1387,7 @@ keyword:
keyword: Amass keyword: Amass
match: Amass <atom-param>name</atom-param> <atom-param>number</atom-param> match: Amass <atom-param>name</atom-param> <atom-param>number</atom-param>
mode: action 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 #Throne of Eldraine
keyword: keyword:
keyword: Adamant keyword: Adamant
@@ -1965,4 +1965,15 @@ keyword:
keyword: Survival keyword: Survival
match: Survival match: Survival
mode: pseudo 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 := { handle_action_rt := {
"<use-if-bumped>To " + to + ", " + to_lower(input) + "</use-if-bumped><otherwise>" + input + "</otherwise>" "<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 ############################################################## Complex reminder texts
self_pro_check := match@(match:"You ha(ve|s) <kw-A><nospellcheck>protection") self_pro_check := match@(match:"You ha(ve|s) <kw-A><nospellcheck>protection")
protection_code := { protection_code := {
@@ -1673,6 +1675,12 @@ text_filter :=
in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'||-|—|/|)<match>", #### TODO: Allow any punctuation before in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'||-|—|/|)<match>", #### TODO: Allow any punctuation before
replace: "<atom-cardname></atom-cardname>" 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 #### step 3b : expand shortcut word LEGENDNAME
replace@( replace@(
match: "LEGENDNAME>?", match: "LEGENDNAME>?",
@@ -1685,11 +1693,37 @@ text_filter :=
in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'||/|)<match>", #### TODO: Allow any punctuation before in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'||/|)<match>", #### TODO: Allow any punctuation before
replace: "<atom-autorem></atom-autorem>" 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 #### step 3c : fill in atom fields
tag_contents@( tag_contents@(
tag: "<atom-cardname>", tag: "<atom-cardname>",
contents: { "<nospellcheck>" + (if card_name=="" then "CARDNAME" else strip_card_codes(card_name, atom:true)) + "</nospellcheck>" } 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_contents@(
tag: "<atom-legname>", tag: "<atom-legname>",
contents: { "<nospellcheck>" + (if card_name=="" then "LEGENDNAME" else legend_filter(strip_card_codes(card_name, atom:true))) + "</nospellcheck>" } 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) array := split_comma(field)
#### not blank, has png, is either verified or old link that's probably fine #### 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") 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" else "/magic-modules.mse-include/watermarks/other/planeswalker.png"
} }@(long:false)
card_watermark_a := {""} card_watermark_a := {""}
custom_card_watermark := { custom_card_watermark := {
tag := if face == 1 then "" else "_" + face tag := if face == 1 then "" else "_" + face
@@ -2427,10 +2461,10 @@ custom_card_watermark := {
array := split_comma(field) array := split_comma(field)
#### not blank, has png, is either verified or old link that's probably fine #### 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") 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 if card_watermark_a() != "" then "/magic-mainframe-extras.mse-include/" + card_watermark_a()
else "/magic-modules.mse-include/watermarks/other/planeswalker.png" else "/magic-modules.mse-include/watermarks/other/planeswalker.png"
} }@(long:false)
card_new_color := { card_new_color := {
if card.card_color == "white" then "w" if card.card_color == "white" then "w"
else if card.card_color == "blue" then "u" 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 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) } "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 one": { build_custom_watermark_blend(1) }
"custom watermark two": { watermark_blend(custom_watermark_link(2), custom:true, face:face) } "custom watermark two": { build_custom_watermark_blend(2) }
"custom watermark three": { watermark_blend(custom_watermark_link(3), custom:true, face:face) } "custom watermark three": { build_custom_watermark_blend(3) }
"custom watermark four": { watermark_blend(custom_watermark_link(4), custom:true, face:face) } "custom watermark four": { build_custom_watermark_blend(4) }
"custom watermark five": { watermark_blend(custom_watermark_link(5), custom:true, face:face) } "custom watermark five": { build_custom_watermark_blend(5) }
"custom watermark six": { watermark_blend(custom_watermark_link(6), custom:true, face:face) } "custom watermark six": { build_custom_watermark_blend(6) }
"custom watermark seven": { watermark_blend(custom_watermark_link(7), custom:true, face:face) } "custom watermark seven": { build_custom_watermark_blend(7) }
"custom watermark eight": { watermark_blend(custom_watermark_link(8), custom:true, face:face) } "custom watermark eight": { build_custom_watermark_blend(8) }
"custom watermark nine": { watermark_blend(custom_watermark_link(9), custom:true, face:face) } "custom watermark nine": { build_custom_watermark_blend(9) }
"custom watermark ten": { watermark_blend(custom_watermark_link(10), custom:true, face:face) } "custom watermark ten": { build_custom_watermark_blend(10) }
"custom watermark card": { watermark_blend(custom_card_watermark(face:face), custom:true, face:face) } "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) } "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_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_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 "" } 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 ############################################################## Other scripted fields
#### Dimensions of card faces, can be changed in style files #### Dimensions of card faces, can be changed in style files
faces_coordinates := { faces_coordinates := {
@@ -2843,13 +2895,13 @@ card_number_old_1 := {
else if auto_copy then else if auto_copy then
combined_editor( combined_editor(
field1: card.auto_copyright, field1: card.auto_copyright,
separator: card.card_number, separator: " " + card.card_number + " ",
field2: card.card_code_text field2: card.card_code_text
) )
else else
combined_editor( combined_editor(
field1: card.copyright, field1: card.copyright,
separator: card.card_number, separator: " " + card.card_number + " ",
field2: card.card_code_text field2: card.card_code_text
) )
} }
@@ -2987,7 +3039,7 @@ level_filter := { input }
#### Correct the CARDNAME atom for levelers #### Correct the CARDNAME atom for levelers
card_name_for_level := { card_name_for_level := {
tag := name_tag_for_level() tag := name_tag_for_level()
if set.CARDNAME_replacement == "card's type" if (set.CARDNAME_replacement == "card's type" xor reverse)
then ( then (
ty := to_lower(cardname_type(card["type"+tag])) ty := to_lower(cardname_type(card["type"+tag]))
if ty == "" then "this" if ty == "" then "this"
@@ -2996,10 +3048,10 @@ card_name_for_level := {
else if set.CARDNAME_replacement == "card's alias" and card["alias"+tag] != "" else if set.CARDNAME_replacement == "card's alias" and card["alias"+tag] != ""
then card["alias"+tag] then card["alias"+tag]
else card["name"+tag] else card["name"+tag]
} }@(reverse:false)
card_name_for_face := { card_name_for_face := {
tag := if input == 1 then "" else "_" + input tag := if input == 1 then "" else "_" + input
if set.CARDNAME_replacement == "card's type" if (set.CARDNAME_replacement == "card's type" xor reverse)
then ( then (
ty := to_lower(cardname_type(card["type"+tag])) ty := to_lower(cardname_type(card["type"+tag]))
if ty == "" then "this" if ty == "" then "this"
@@ -3008,7 +3060,7 @@ card_name_for_face := {
else if set.CARDNAME_replacement == "card's alias" and card["alias"+tag] != "" else if set.CARDNAME_replacement == "card's alias" and card["alias"+tag] != ""
then card["alias"+tag] then card["alias"+tag]
else card["name"+tag] else card["name"+tag]
} }@(reverse:false)
cardname_type := { cardname_type := {
if is_creature(input) if is_creature(input)
then lang_setting("creature") then lang_setting("creature")
@@ -3024,9 +3076,23 @@ cardname_type := {
then lang_setting("enchantment") then lang_setting("enchantment")
else if is_battle(input) else if is_battle(input)
then lang_setting("battle") then lang_setting("battle")
else if is_plane(input)
then lang_setting("plane")
else "" 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 #### This can be overwritten for more complicated levelers
#### Dungeons for example will overwrite with just {""} #### Dungeons for example will overwrite with just {""}
name_tag_for_level := { name_tag_for_level := {
@@ -3738,7 +3804,16 @@ loyalty_textbox_background_image :=
############################################################## Separators ############################################################## Separators
separator_enable_level := { false } 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_left := { face_coordinates_map(input).left }
flavor_bar_top := flavor_bar_top :=
@@ -5113,8 +5188,30 @@ split_custom_directory := {
dir := filter_text(input, match:"^([^.]+/)+") dir := filter_text(input, match:"^([^.]+/)+")
[directory:dir, filename:fn] [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 := { custom_border_image := {
src := styling.custom_border_source or else "" 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-") ps := split_text(src, match:"-color-")
if length(ps) > 1 then if length(ps) > 1 then
"/magic-mainframe-extras.mse-include/" + ps[0] + input + (if land then "l" else "") + ps[1] "/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 type: boolean
name: use flavor bar name: use flavor bar
description: Enables the flavor bar on Mainframe templates. 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: set field:
type: boolean type: boolean
name: auto legends name: auto legends
@@ -472,6 +479,20 @@ set field:
type: text type: text
name: alternate nyx name: alternate nyx
description: Use an alternate nyx source folder from magic-mainframe-extras.mse-include. 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: set field:
type: text type: text
name: custom index 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() script: if filter_from_statistic() == "Filtered" or trim_from_statistic() then "" else mana_value_statistic()
statistics dimension: statistics dimension:
name: permanent/non name: permanent / nonpermanent
position hint: 0200 position hint: 0200
icon: stats/type.png icon: stats/type.png
description: Counts the number of creatures, noncreature permanents, and nonpermanents. Counts each side/face separately. description: Counts the number of creatures, noncreature permanents, and nonpermanents. Counts each side/face separately.
@@ -689,8 +689,8 @@ statistics dimension:
statistics dimension: statistics dimension:
name: all mana production name: mana production (All)
position hint: 0500 position hint: 0520
icon: stats/land_production.png 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. 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 split list: true
@@ -715,8 +715,8 @@ statistics dimension:
Chosen : rgb(112,38,128) Chosen : rgb(112,38,128)
statistics dimension: statistics dimension:
name: land mana prod. name: mana production (Lands)
position hint: 0510 position hint: 0500
icon: stats/land_production.png 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. 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 split list: true
@@ -741,8 +741,8 @@ statistics dimension:
Chosen : rgb(112,38,128) Chosen : rgb(112,38,128)
statistics dimension: statistics dimension:
name: nonland mana prod. name: mana production (Nonlands)
position hint: 0520 position hint: 0510
icon: stats/land_production.png 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. 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 split list: true
@@ -767,7 +767,7 @@ statistics dimension:
Chosen : rgb(112,38,128) Chosen : rgb(112,38,128)
statistics dimension: statistics dimension:
name: pip count (Casting) name: pip count (Casting Costs)
position hint: 0600 position hint: 0600
icon: stats/color_pips.png icon: stats/color_pips.png
description: Counts the number of casting costs that contain one colored pip. Repeat for all other amounts. 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) 8+ : rgb(197,24,214)
statistics dimension: statistics dimension:
name: pip colors (Casting) name: pip colors (Casting Costs)
position hint: 0630 position hint: 0630
icon: stats/color_pips.png 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. 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) GGGG+ : rgb(18,102,0)
statistics dimension: statistics dimension:
name: total pips (Casting) name: total pips (Casting Costs)
position hint: 0660 position hint: 0660
icon: stats/color_pips.png icon: stats/color_pips.png
description: Counts the total number of white pips in all the casting costs. Repeat for all other colors. 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) G : rgb(68,144,15)
statistics dimension: statistics dimension:
name: pip count (Ability) name: pip count (Ability Costs)
position hint: 0610 position hint: 0610
icon: stats/color_pips.png 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. 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) 8+ : rgb(197,24,214)
statistics dimension: statistics dimension:
name: pip colors (Ability) name: pip colors (Ability Costs)
position hint: 0640 position hint: 0640
icon: stats/color_pips.png 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. 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) GGGG+ : rgb(18,102,0)
statistics dimension: statistics dimension:
name: total pips (Ability) name: total pips (Ability Costs)
position hint: 0670 position hint: 0670
icon: stats/color_pips.png 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. 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) G : rgb(68,144,15)
statistics dimension: statistics dimension:
name: pip count (Combined) name: pip count (All Costs)
position hint: 0620 position hint: 0620
icon: stats/color_pips.png icon: stats/color_pips.png
description: Counts the number of costs that contain one colored pip. Repeat for all other amounts. 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) 8+ : rgb(197,24,214)
statistics dimension: statistics dimension:
name: pip color (Combined) name: pip color (All Costs)
position hint: 0650 position hint: 0650
icon: stats/color_pips.png 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. 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) GGGG+ : rgb(18,102,0)
statistics dimension: statistics dimension:
name: total pips (Combined) name: total pips (All Costs)
position hint: 0680 position hint: 0680
icon: stats/color_pips.png icon: stats/color_pips.png
description: Counts the total number of white pips in all the costs. Repeat for all other colors. 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() script: if trim_from_draw_statistic() then "" else average_opening_hand_statistic()
statistics dimension: statistics dimension:
name: land drop hit % (Play) name: land drop hit % (On The Play)
position hint: 1100 position hint: 1100
icon: stats/land_drops.png 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. 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) script: land_drop_hit_percentage_statistic(start: 6)
statistics dimension: statistics dimension:
name: land drop hit % (Draw) name: land drop hit % (On The Draw)
position hint: 1110 position hint: 1110
icon: stats/land_drops.png 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. 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() script: if filter_from_statistic() == "Filtré" or trim_from_statistic() then "" else mana_value_statistic()
statistics dimension: statistics dimension:
name: Permanent/Non name: Permanent / Nonpermanent
position hint: 0200 position hint: 0200
icon: stats/type.png icon: stats/type.png
description: Counts the number of creatures, noncreature permanents, and nonpermanents. Counts each side/face separately. 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() script: if filter_from_statistic() == "Filtré" or trim_from_statistic() then "" else combined_subtype_statistic()
statistics dimension: statistics dimension:
name: Sous-Type (Noncréature) name: Sous-Type De Noncréature
position hint: 0260 position hint: 0260
icon: stats/noncreature_subtype.png icon: stats/noncreature_subtype.png
description: Subtypes of all types except creature/tribal/kindred. description: Subtypes of all types except creature/tribal/kindred.
@@ -690,7 +690,7 @@ statistics dimension:
statistics dimension: statistics dimension:
name: Production de Mana (Tout) name: Production de Mana (Tout)
position hint: 0500 position hint: 0520
icon: stats/land_production.png 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. 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 split list: true
@@ -715,8 +715,8 @@ statistics dimension:
Choisie : rgb(112,38,128) Choisie : rgb(112,38,128)
statistics dimension: statistics dimension:
name: Prod. de Mana (Terrain) name: Production de Mana (Terrain)
position hint: 0510 position hint: 0500
icon: stats/land_production.png 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. 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 split list: true
@@ -741,8 +741,8 @@ statistics dimension:
Choisie : rgb(112,38,128) Choisie : rgb(112,38,128)
statistics dimension: statistics dimension:
name: Prod. de Mana (Nonterrain) name: Production de Mana (Nonterrain)
position hint: 0520 position hint: 0510
icon: stats/land_production.png 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. 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 split list: true
@@ -767,7 +767,7 @@ statistics dimension:
Choisie : rgb(112,38,128) Choisie : rgb(112,38,128)
statistics dimension: statistics dimension:
name: # de Pépins (Lancement) name: # de Pépins (Coût de Lancement)
position hint: 0600 position hint: 0600
icon: stats/color_pips.png icon: stats/color_pips.png
description: Counts the number of casting costs that contain one colored pip. Repeat for all other amounts. 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) 8+ : rgb(197,24,214)
statistics dimension: statistics dimension:
name: Pépins (Lancement) name: Pépins (Coût de Lancement)
position hint: 0630 position hint: 0630
icon: stats/color_pips.png 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. 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) GGGG+ : rgb(18,102,0)
statistics dimension: statistics dimension:
name: Pépins Totaux (Lancement) name: Pépins Totaux (Coût de Lancement)
position hint: 0660 position hint: 0660
icon: stats/color_pips.png icon: stats/color_pips.png
description: Counts the total number of white pips in all the casting costs. Repeat for all other colors. 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) G : rgb(68,144,15)
statistics dimension: statistics dimension:
name: # De Pépins (Capacités) name: # De Pépins (Coût de Capacités)
position hint: 0610 position hint: 0610
icon: stats/color_pips.png 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. 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) 8+ : rgb(197,24,214)
statistics dimension: statistics dimension:
name: Pépins (Capacités) name: Pépins (Coût de Capacités)
position hint: 0640 position hint: 0640
icon: stats/color_pips.png 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. 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) GGGG+ : rgb(18,102,0)
statistics dimension: statistics dimension:
name: Pépins Totaux (Capacités) name: Pépins Totaux (Coût de Capacités)
position hint: 0670 position hint: 0670
icon: stats/color_pips.png 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. 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) G : rgb(68,144,15)
statistics dimension: statistics dimension:
name: # de Pépins (Tout) name: # de Pépins (Tout les Coûts)
position hint: 0620 position hint: 0620
icon: stats/color_pips.png icon: stats/color_pips.png
description: Counts the number of costs that contain one colored pip. Repeat for all other amounts. 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) 8+ : rgb(197,24,214)
statistics dimension: statistics dimension:
name: Pépins (Tout) name: Pépins (Tout les Coûts)
position hint: 0650 position hint: 0650
icon: stats/color_pips.png 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. 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) GGGG+ : rgb(18,102,0)
statistics dimension: statistics dimension:
name: Pépins Totaux (Tout) name: Pépins Totaux (Tout les Coûts)
position hint: 0680 position hint: 0680
icon: stats/color_pips.png icon: stats/color_pips.png
description: Counts the total number of white pips in all the costs. Repeat for all other colors. 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) G : rgb(68,144,15)
statistics dimension: statistics dimension:
name: # De Mots name: Nombre De Mots
position hint: 0700 position hint: 0700
icon: stats/text_length.png icon: stats/text_length.png
description: How many words are in the cards various rule texts. 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() script: if filter_from_statistic() == "Filtré" or trim_from_statistic() then "" else total_word_count_statistic()
#statistics dimension: #statistics dimension:
# name: # De Lignes # name: Nombre De Lignes
# position hint: 1110 # position hint: 1110
# icon: stats/text_length.png # icon: stats/text_length.png
# description: How many lines are in the cards various rule texts. # 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. # script: if filter_from_statistic() == "Filtré" or trim_from_statistic() then "" else total_line_count_statistic() # Not reliable atm.
statistics dimension: statistics dimension:
name: # De Paragraphes name: Nombre De Paragraphes
position hint: 0710 position hint: 0710
icon: stats/text_length.png icon: stats/text_length.png
description: How many paragraphs are in the cards various rule texts. 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() script: if trim_from_draw_statistic() then "" else average_opening_hand_statistic()
statistics dimension: statistics dimension:
name: % DAvoir Un Terrain (1er) name: % DAvoir Un Terrain (Jouant 1er)
position hint: 1100 position hint: 1100
icon: stats/land_drops.png 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. 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) script: land_drop_hit_percentage_statistic(start: 6)
statistics dimension: statistics dimension:
name: % DAvoir Un Terrain (2ème) name: % DAvoir Un Terrain (Jouant 2ème)
position hint: 1110 position hint: 1110
icon: stats/land_drops.png 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. 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) script: land_drop_hit_percentage_statistic(start: 7)
statistics dimension: statistics dimension:
name: # De Couleurs name: Nombre De Couleurs
position hint: 1500 position hint: 1500
icon: stats/color.png icon: stats/color.png
description: How many cards have one color, how many have two, three, etc... description: How many cards have one color, how many have two, three, etc...
@@ -1159,7 +1159,7 @@ statistics dimension:
5 : rgb(161,54,169) 5 : rgb(161,54,169)
statistics dimension: statistics dimension:
name: # De Couleurs (Identité) name: Nombre De Couleurs (Identité)
position hint: 1510 position hint: 1510
icon: stats/color.png icon: stats/color.png
description: How many cards have one color in their color identity, how many have two, three, etc... 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()}, color_identity_count: {color_identity_count_statistic()},
mana_production: {mana_production_list_statistic(check_type: "all")}, mana_production: {mana_production_list_statistic(check_type: "all")},
"permanent/non": {replace_en_spaces_statistic(remove_zero_width_spaces_statistic(permanent_statistic()))}, "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: {cmc(card.casting_cost)},
mana_value_2: {cmc(card.casting_cost_2)}, mana_value_2: {cmc(card.casting_cost_2)},
supertype: {keep_only_supertypes_statistic(card.super_type)}, 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.