diff --git a/changelog.txt b/changelog.txt index cc9946a51c..eb709edc7d 100644 --- a/changelog.txt +++ b/changelog.txt @@ -149,6 +149,7 @@ __Other Updates I Couldn't Fit Anywhere Else__ • Added a Style option to change Casting Cost Mana Symbols to Mainframe, Adventures, Battles, Planeswalkers, and Sagas. • Added custom fonts module to Full Art Basic Lands and Dungeons. • Added popunder art support to M15 Mainframe. +• M15 Mainframe's Clear and Devoid frames have been redesigned and can now stack with Borderless and Fullart. • Added old tap symbol and pawprint support to GenevensiS frames. • Updated the Checklist frame to use magic-modules. • The Information Module now supports Vorthos Box diff --git a/data/magic-m15-altered.mse-style/border_masks/border_mask.png b/data/magic-m15-altered.mse-style/border_masks/border_mask.png index 35d117bdf3..b1ea458a7d 100644 Binary files a/data/magic-m15-altered.mse-style/border_masks/border_mask.png and b/data/magic-m15-altered.mse-style/border_masks/border_mask.png differ diff --git a/data/magic-m15-altered.mse-style/devoid/acard.png b/data/magic-m15-altered.mse-style/devoid/acard.png deleted file mode 100644 index fcaf683464..0000000000 Binary files a/data/magic-m15-altered.mse-style/devoid/acard.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/devoid/bcard.png b/data/magic-m15-altered.mse-style/devoid/bcard.png deleted file mode 100644 index 89b8077fec..0000000000 Binary files a/data/magic-m15-altered.mse-style/devoid/bcard.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/devoid/ccard.png b/data/magic-m15-altered.mse-style/devoid/ccard.png deleted file mode 100644 index 3aac4e4509..0000000000 Binary files a/data/magic-m15-altered.mse-style/devoid/ccard.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/devoid/gcard.png b/data/magic-m15-altered.mse-style/devoid/gcard.png deleted file mode 100644 index 942f541201..0000000000 Binary files a/data/magic-m15-altered.mse-style/devoid/gcard.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/devoid/mcard.png b/data/magic-m15-altered.mse-style/devoid/mcard.png deleted file mode 100644 index 5e7768c474..0000000000 Binary files a/data/magic-m15-altered.mse-style/devoid/mcard.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/devoid/rcard.png b/data/magic-m15-altered.mse-style/devoid/rcard.png deleted file mode 100644 index 0d5817a996..0000000000 Binary files a/data/magic-m15-altered.mse-style/devoid/rcard.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/devoid/stamp.png b/data/magic-m15-altered.mse-style/devoid/stamp.png deleted file mode 100644 index bb858f08bf..0000000000 Binary files a/data/magic-m15-altered.mse-style/devoid/stamp.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/devoid/trim_mask.png b/data/magic-m15-altered.mse-style/devoid/trim_mask.png deleted file mode 100644 index 841a66554a..0000000000 Binary files a/data/magic-m15-altered.mse-style/devoid/trim_mask.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/devoid/ucard.png b/data/magic-m15-altered.mse-style/devoid/ucard.png deleted file mode 100644 index 15ba6d2439..0000000000 Binary files a/data/magic-m15-altered.mse-style/devoid/ucard.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/devoid/wcard.png b/data/magic-m15-altered.mse-style/devoid/wcard.png deleted file mode 100644 index 5ace9a763e..0000000000 Binary files a/data/magic-m15-altered.mse-style/devoid/wcard.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/border_mask_inv.png b/data/magic-m15-altered.mse-style/frame_masks/border_mask_inv.png new file mode 100644 index 0000000000..f2414420e4 Binary files /dev/null and b/data/magic-m15-altered.mse-style/frame_masks/border_mask_inv.png differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/borderless.png b/data/magic-m15-altered.mse-style/frame_masks/borderless.png index f453dd36a6..7e4f6aefae 100644 Binary files a/data/magic-m15-altered.mse-style/frame_masks/borderless.png and b/data/magic-m15-altered.mse-style/frame_masks/borderless.png differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/borderless_dka.png b/data/magic-m15-altered.mse-style/frame_masks/borderless_dka.png index f5ecd0b634..a317a03292 100644 Binary files a/data/magic-m15-altered.mse-style/frame_masks/borderless_dka.png and b/data/magic-m15-altered.mse-style/frame_masks/borderless_dka.png differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/borderless_frameless.png b/data/magic-m15-altered.mse-style/frame_masks/borderless_frameless.png index 99037a9145..e2dbf0ac01 100644 Binary files a/data/magic-m15-altered.mse-style/frame_masks/borderless_frameless.png and b/data/magic-m15-altered.mse-style/frame_masks/borderless_frameless.png differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/borderless_frameless_miracle.png b/data/magic-m15-altered.mse-style/frame_masks/borderless_frameless_miracle.png deleted file mode 100644 index 1587449f19..0000000000 Binary files a/data/magic-m15-altered.mse-style/frame_masks/borderless_frameless_miracle.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/borderless_transparent.png b/data/magic-m15-altered.mse-style/frame_masks/borderless_transparent.png deleted file mode 100644 index 1be6902274..0000000000 Binary files a/data/magic-m15-altered.mse-style/frame_masks/borderless_transparent.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/clear_frame_mask.png b/data/magic-m15-altered.mse-style/frame_masks/clear_frame_mask.png deleted file mode 100644 index 15b200c28a..0000000000 Binary files a/data/magic-m15-altered.mse-style/frame_masks/clear_frame_mask.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/clear_tops_dka_mask.png b/data/magic-m15-altered.mse-style/frame_masks/clear_tops_dka_mask.png deleted file mode 100644 index 9c84651dc2..0000000000 Binary files a/data/magic-m15-altered.mse-style/frame_masks/clear_tops_dka_mask.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/clear_tops_dka_mask2.png b/data/magic-m15-altered.mse-style/frame_masks/clear_tops_dka_mask2.png deleted file mode 100644 index e010e8287b..0000000000 Binary files a/data/magic-m15-altered.mse-style/frame_masks/clear_tops_dka_mask2.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/clear_tops_mask.png b/data/magic-m15-altered.mse-style/frame_masks/clear_tops_mask.png index 4ff76acea0..8a837954fb 100644 Binary files a/data/magic-m15-altered.mse-style/frame_masks/clear_tops_mask.png and b/data/magic-m15-altered.mse-style/frame_masks/clear_tops_mask.png differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/clear_tops_mask_inv.png b/data/magic-m15-altered.mse-style/frame_masks/clear_tops_mask_inv.png new file mode 100644 index 0000000000..67fdbd52b2 Binary files /dev/null and b/data/magic-m15-altered.mse-style/frame_masks/clear_tops_mask_inv.png differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/click_mask.png b/data/magic-m15-altered.mse-style/frame_masks/click_mask.png new file mode 100644 index 0000000000..0b3b175d09 Binary files /dev/null and b/data/magic-m15-altered.mse-style/frame_masks/click_mask.png differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/click_mask_dka.png b/data/magic-m15-altered.mse-style/frame_masks/click_mask_dka.png new file mode 100644 index 0000000000..6d77f0a7c5 Binary files /dev/null and b/data/magic-m15-altered.mse-style/frame_masks/click_mask_dka.png differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/click_mask_energy.png b/data/magic-m15-altered.mse-style/frame_masks/click_mask_energy.png new file mode 100644 index 0000000000..0619a990b4 Binary files /dev/null and b/data/magic-m15-altered.mse-style/frame_masks/click_mask_energy.png differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/crown_miracle_borderless.png b/data/magic-m15-altered.mse-style/frame_masks/crown_miracle_borderless.png deleted file mode 100644 index aaa576775f..0000000000 Binary files a/data/magic-m15-altered.mse-style/frame_masks/crown_miracle_borderless.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/dka_notched.png b/data/magic-m15-altered.mse-style/frame_masks/dka_notched.png new file mode 100644 index 0000000000..2ac3889e7a Binary files /dev/null and b/data/magic-m15-altered.mse-style/frame_masks/dka_notched.png differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/energy.png b/data/magic-m15-altered.mse-style/frame_masks/energy.png deleted file mode 100644 index 4435e9f778..0000000000 Binary files a/data/magic-m15-altered.mse-style/frame_masks/energy.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/frame_mask.png b/data/magic-m15-altered.mse-style/frame_masks/frame_mask.png deleted file mode 100644 index 16e9fd3cb2..0000000000 Binary files a/data/magic-m15-altered.mse-style/frame_masks/frame_mask.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/frame_mask_mutate.png b/data/magic-m15-altered.mse-style/frame_masks/frame_mask_mutate.png deleted file mode 100644 index 3c9031753a..0000000000 Binary files a/data/magic-m15-altered.mse-style/frame_masks/frame_mask_mutate.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/frame_mask_puma_mutate.png b/data/magic-m15-altered.mse-style/frame_masks/frame_mask_puma_mutate.png deleted file mode 100644 index 3ea908566e..0000000000 Binary files a/data/magic-m15-altered.mse-style/frame_masks/frame_mask_puma_mutate.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/frameless.png b/data/magic-m15-altered.mse-style/frame_masks/frameless.png new file mode 100644 index 0000000000..061a5d4832 Binary files /dev/null and b/data/magic-m15-altered.mse-style/frame_masks/frameless.png differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/frameless_dka.png b/data/magic-m15-altered.mse-style/frame_masks/frameless_dka.png new file mode 100644 index 0000000000..ed6835e7f8 Binary files /dev/null and b/data/magic-m15-altered.mse-style/frame_masks/frameless_dka.png differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/map_mask.png b/data/magic-m15-altered.mse-style/frame_masks/map_mask.png deleted file mode 100644 index 3abe705c96..0000000000 Binary files a/data/magic-m15-altered.mse-style/frame_masks/map_mask.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/miracle_borderless.png b/data/magic-m15-altered.mse-style/frame_masks/miracle_borderless.png deleted file mode 100644 index b55a666c59..0000000000 Binary files a/data/magic-m15-altered.mse-style/frame_masks/miracle_borderless.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/miracle_borderless_crown.png b/data/magic-m15-altered.mse-style/frame_masks/miracle_borderless_crown.png deleted file mode 100644 index 29a9c9e44f..0000000000 Binary files a/data/magic-m15-altered.mse-style/frame_masks/miracle_borderless_crown.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/miracle_semitrans.png b/data/magic-m15-altered.mse-style/frame_masks/miracle_semitrans.png new file mode 100644 index 0000000000..1ce611abda Binary files /dev/null and b/data/magic-m15-altered.mse-style/frame_masks/miracle_semitrans.png differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/mutate.png b/data/magic-m15-altered.mse-style/frame_masks/mutate.png new file mode 100644 index 0000000000..bde89d6253 Binary files /dev/null and b/data/magic-m15-altered.mse-style/frame_masks/mutate.png differ diff --git a/data/magic-m15-altered.mse-style/frame_masks/frame_mask_puma.png b/data/magic-m15-altered.mse-style/frame_masks/puma.png similarity index 100% rename from data/magic-m15-altered.mse-style/frame_masks/frame_mask_puma.png rename to data/magic-m15-altered.mse-style/frame_masks/puma.png diff --git a/data/magic-m15-altered.mse-style/frame_masks/secret_lair.png b/data/magic-m15-altered.mse-style/frame_masks/secret_lair.png new file mode 100644 index 0000000000..dfa7dbc029 Binary files /dev/null and b/data/magic-m15-altered.mse-style/frame_masks/secret_lair.png differ diff --git a/data/magic-m15-altered.mse-style/image_masks/clear.png b/data/magic-m15-altered.mse-style/image_masks/clear.png index 718ef6796d..04e7d4d6d4 100644 Binary files a/data/magic-m15-altered.mse-style/image_masks/clear.png and b/data/magic-m15-altered.mse-style/image_masks/clear.png differ diff --git a/data/magic-m15-altered.mse-style/image_masks/clear_dka.png b/data/magic-m15-altered.mse-style/image_masks/clear_dka.png new file mode 100644 index 0000000000..48f962af1f Binary files /dev/null and b/data/magic-m15-altered.mse-style/image_masks/clear_dka.png differ diff --git a/data/magic-m15-altered.mse-style/image_masks/devoid.png b/data/magic-m15-altered.mse-style/image_masks/devoid.png deleted file mode 100644 index f410a7d95d..0000000000 Binary files a/data/magic-m15-altered.mse-style/image_masks/devoid.png and /dev/null differ diff --git a/data/magic-m15-altered.mse-style/masks/dka_add.png b/data/magic-m15-altered.mse-style/masks/dka_add.png new file mode 100644 index 0000000000..d439765215 Binary files /dev/null and b/data/magic-m15-altered.mse-style/masks/dka_add.png differ diff --git a/data/magic-m15-altered.mse-style/masks/dka_remove.png b/data/magic-m15-altered.mse-style/masks/dka_remove.png new file mode 100644 index 0000000000..d89760f4ff Binary files /dev/null and b/data/magic-m15-altered.mse-style/masks/dka_remove.png differ diff --git a/data/magic-m15-altered.mse-style/style b/data/magic-m15-altered.mse-style/style index 0d387d3a78..50837f3506 100644 --- a/data/magic-m15-altered.mse-style/style +++ b/data/magic-m15-altered.mse-style/style @@ -44,6 +44,7 @@ init script: #### Load scripts include file: /magic-default-image.mse-include/scripts include file: /magic-pride.mse-include/scripts + include file: /magic-modules.mse-include/extras/evobar/script #### Blend settings # Should hybrids have a grey name? @@ -72,6 +73,7 @@ init script: #### base template template_prefix := [ card: "/magic-modules.mse-include/cards/375 m15 simple/", + notch_card: "/magic-modules.mse-include/cards/375 m15 cut/notched/", pt: "/magic-modules.mse-include/pts/375 m15/", fnm_pt: "/magic-modules.mse-include/pts/375 m15/paradox/", inv_pt: "/magic-modules.mse-include/pts/375 m15/inverted/", @@ -101,9 +103,7 @@ init script: slide3_shifted: "/magic-modules.mse-include/levels/slides/3/shifted/" circle: "/magic-modules.mse-include/levels/circles/station/" - devoid: "devoid/" - map: "/magic-modules.mse-include/cards/746 maps/" - mappt: "/magic-modules.mse-include/pts/746 maps/" + devoid: "/magic-modules.mse-include/cards/35 m15 simple/devoid/" miracle: "/magic-modules.mse-include/trims/miracle/" miracle_shifted: "/magic-modules.mse-include/trims/miracle/shifted/" miracle_inv: "/magic-modules.mse-include/trims/miracle/inverted/" @@ -112,8 +112,7 @@ init script: miracle_snow: "/magic-modules.mse-include/trims/miracle/snow/" beyond: "/magic-modules.mse-include/trims/beyond/" draft: "/magic-modules.mse-include/trims/draft/" - node: "nodes/" - node_shifted: "nodes/shifted/" + node: "/magic-modules.mse-include/cards/375 nodes/" puma: "puma/" puma_shift: "puma/shifted/" curtains: "curtains/" @@ -121,10 +120,12 @@ init script: proto_box: "/magic-modules.mse-include/protoboxes/box/", proto_cost: "/magic-modules.mse-include/protoboxes/cost/", - proto_pt: "/magic-modules.mse-include/protoboxes/pt/" + proto_pt: "/magic-modules.mse-include/protoboxes/pt/", + multiply: "/magic-modules.mse-include/cards/375 multiply/" ] template_suffix := [ card: "card.jpg", + notch_card: "card.jpg", pt: "pt.png", fnm_pt: "pt.png", inv_pt: "pt.png", @@ -142,16 +143,13 @@ init script: star: "star.png", devoid: "card.png" - map: "card.png" - mappt: "pt.png" miracle: "miracle.png" miracle_shifted: "miracle.png" miracle_inv: "miracle.png" miracle_fnm: "miracle.png" miracle_snow: "miracle.png" miracle_beyond: "miracle.png" - node: "node.png" - node_shifted: "node.png" + node: ".png" curtains: "card.png" beyond:"beyond.png" @@ -176,6 +174,8 @@ init script: proto_box: "box.png", proto_cost: "cost.png", proto_pt: "pt.png" + + multiply: ".png" ] template := { if type_name(harder_script[type] or else nil) != type_name(nil) @@ -216,13 +216,10 @@ init script: draft: true, curtains: true, spacept: true, - circle: true + circle: true, + multiply: true ] - #### Map is a very different frame that usurps basically everything - is_map := { - chosen(styling.frames, choice:"map") - } #### Devoid and Clear using floating frames but still use trims is_devoid := { chosen(styling.frames, choice:"devoid") @@ -261,11 +258,12 @@ init script: and remove_tags(card.text) == "\n" } is_dka := { - chosen(styling.frames, choice:"fullart") and not is_map() and not uses_clear_frame() + chosen(styling.frames, choice:"fullart") } #### PUMA, Mutate, Prototype add things on top is_puma := { - chosen(styling.frames, choice:"puma") and not is_map() and not uses_expanded_art() and not uses_clear_frame() and not is_dka() + ## todo image masks for clear+puma + chosen(styling.frames, choice:"puma") and not is_clear() and not uses_expanded_art() and not is_dka() } is_prototype := { chosen(styling.frames, choice:"prototype") @@ -275,7 +273,7 @@ init script: ## using the pt box and not the typebar prototype_pt := { styling.prototype_secondary == "pt" and is_prototype() } is_mutate := { - chosen(styling.frames, choice:"mutate") and not is_map() and not is_prototype() + chosen(styling.frames, choice:"mutate") and not is_prototype() } mutate_image := { is_mutate() and not uses_expanded_art() and not is_dka() and not uses_clear_frame() and not clear_tops() @@ -299,7 +297,7 @@ init script: } #### Pieces is_season := { - chosen(styling.frames, choice:"season") and not is_map() + chosen(styling.frames, choice:"season") } is_scrolls := { chosen(styling.frames, choice:"conspiracy") @@ -339,12 +337,10 @@ init script: } is_curtains := {contains(card.notes, match:"!curtain")} is_pinned := {chosen(styling.other_options, choice:"pride pinlines")} - clear_tops := {chosen(styling.other_options, choice:"clear tops") and not is_puma() and not uses_expanded_art()} + clear_tops := {chosen(styling.other_options, choice:"clear tops") } mask_trims_for_devoid := {chosen(styling.other_options, choice:"avoid covering devoid")} base_card := { - if is_map() - then "map" - else if is_devoid() + if is_devoid() then "devoid" else if is_clear() then "clear" @@ -385,6 +381,8 @@ init script: ) } + notch_image := { color_background(type:"notch_card", base_hybrid:card_hybrid, artifact_blend:"white", multicolor_blend:"white", hybrid_blend:"white") } + miracle_plate_base := { color_background(type:"miracle", base_hybrid:card_hybrid, folder:template_prefix["miracle"])} miracle_plate_snow := { color_background(type:"miracle_snow", base_hybrid:card_hybrid, folder:template_prefix["miracle"], blend_type:"miracle")} miracle_plate_shift := { color_background(type:"miracle_shifted", base_hybrid:card_hybrid, folder:template_prefix["miracle"], blend_type:"miracle")} @@ -412,25 +410,25 @@ init script: base_hybrid: card_hybrid, folder: template_prefix["miracle"] ) - if is_scrolls() then set_mask(image:img, mask: template_prefix["miracle"] + "mask_point.png") else img + if is_multiplied() then img := multiply_image(base:img, multiply_mask: template_prefix["miracle"] + "mask_point.png") + if is_scrolls() then img := set_mask(image:img, mask: template_prefix["miracle"] + "mask_point.png") + if is_borderless() and is_frameless() then set_mask(image:img, mask:"frame_masks/miracle_semitrans.png") + img ) } custom_border_blend := { color_background(type:"custom_border", base_hybrid:card_hybrid) } #### other pieces - node_base := { color_background(type:"node", base_hybrid:card_hybrid, folder:"nodes/") } - node_shift := { color_background(type:"node_shifted", base_hybrid:card_hybrid, folder:"nodes/", blend_type:"node") } - node_img := { - if is_devoid() and not is_legend() then "nodes/devoidnode.png" - else if is_planeshifted() then node_shift() - else node_base() + node_img := { color_background(type:"node", base_hybrid:card_hybrid, artifact_blend:"white", hybrid_blend:"white", multicolor_blend:"white") } + node_mask := { + base := template_prefix["node"]+"mask.png" + if transform_symbol_active_right(card.transformation) then flip_image(base, horizontal:true) else base } puma_base := { color_background(type:"puma", base_hybrid:card_hybrid, folder:"puma/") } puma_shift := { color_background(type:"puma_shift", base_hybrid:card_hybrid, folder:"puma/", blend_type:"puma") } puma_img := { if is_planeshifted() then puma_shift() else puma_base() } - mappt_background := { color_background(type:"mappt", base_hybrid:pt_hybrid, folder:"/magic-modules.mse-include/pts/746 maps/", blend_type:"pt") } season_background := { img := color_background(type:"season", base_hybrid:card_hybrid) if uses_expanded_art() @@ -466,11 +464,8 @@ init script: #### ptbox choose_ptbox := { - ### Map overrules everything - if is_map() - then mappt_background() ### Station overrules Vehicle - else if auto_station() + if auto_station() then color_background(type:"spacept", base_hybrid:pt_hybrid, folder:template_prefix["spacept"], blend_type:"pt", artifact_blend:"white", hybrid_blend:"white", multicolor_blend:"white") ### Vehicle overrules clear else if is_vehicle() @@ -494,40 +489,146 @@ init script: } module_brawl_crown_template := { "/magic-modules.mse-include/crowns/375/brawl/" + (if input == "a" then "c" else input) + "crown.png" } crown_main := { - if is_clear() or clear_tops() + if is_clear() or clear_tops() or is_devoid() then template_prefix["crown"] + "xcrown.png" else module_crown() } module_crown_template_patch := { - module_crown_template(override: if is_devoid() or is_borderless() or is_frameless() or is_puma() then "borderless" else if is_nyx() and chosen(styling.other_options, choice:"auto nyx crowns") then "nyx" else "") + module_crown_template(override: if is_borderless() or is_frameless() or is_puma() then "borderless" else if is_nyx() and chosen(styling.other_options, choice:"auto nyx crowns") then "nyx" else "") } crown_img := { img := crown_main() if not transform_symbol_is_empty(card.transformation) then - img := set_mask(image:img, mask:"nodes/mask.png") + img := set_mask(image:img, mask:node_mask()) if is_borderless() and is_frameless() and is_miracle() then - img := set_mask(image:img, mask:"frame_masks/crown_miracle_borderless.png") + img := set_mask(image:img, mask:template_prefix["miracle"] + "mask_point.png") if (is_devoid() or uses_expanded_art() or is_puma()) and is_skinned() then img := set_mask(image:img, mask:"frame_masks/bl_alias_crown_mask.png") img } + clear_image_path := { + "/magic-modules.mse-include/cards/375 m15 simple/xcard" + + (if is_notched() then "_notched" else "") + + ".png" + } + card_background := { - bc := base_card() - if bc == "clear" - then "/magic-modules.mse-include/cards/375 m15 simple/xcard.png" - else color_background( - type:"card", - base_hybrid:card_hybrid, - folder: if is_map() then "/magic-modules.mse-include/cards/746 maps/" else if is_thbland() then "energies/" else if is_dka() then "dka/" else template_prefix["card"] + ### the base blended frame + base := color_background( + type:"card", + base_hybrid:card_hybrid, + folder: if is_thbland() then "energies/" else if is_dka() then "dka/" else template_prefix["card"] + ) + + notched := is_notched() + semi_trans := is_clear() or is_devoid() + bl := is_borderless() + fl := is_frameless() + thb := is_thbland() + lair := is_transparent_borderless() + dka := is_dka() + if thb then fl := false + if semi_trans then bl := false + if semi_trans then fl := false + + ### apply the notch + + ### DKA handling + if dka then ( + ## clear/devoid mask themselves for bigger image box + if semi_trans + then base := dka_scripted_frame(base:base) + ## others make the textbox semi-transparent + else base := set_mask(image:base, mask:"frame_masks/dka" + (if notched then "_notched" else "") + ".png") + ) + ### non-DKA Mutate handling + else if is_mutate() and not semi_trans then base := set_mask(image:base, mask:"frame_masks/mutate.png") + + ### apply borderless variants + # spacecraft (+borderless) + # borderless thbland + # borderless/frameless dka + # borderless+frameless+inverted + # borderless/frameless + # puma + borderless_mask := if thb + then (if bl then "border_mask_inv" else "") + else if dka + then (if bl or fl then "borderless_dka" else "") + else if lair + then "secret_lair" + else if bl and fl + then "borderless_frameless" + else if bl or fl + then "borderless" + else if is_puma() + then "puma" + else "" + + if borderless_mask != "" then base := set_mask(image:base, mask:"frame_masks/{borderless_mask}.png") + + ### special handling for borderless-frameless-miracle + if bl and fl and is_miracle() then base := set_mask(image:base, mask:template_prefix["miracle"] + "mask_point.png") + + ### swap textbox for secret lair + if lair then base := insert_image( + base_image: base, + inserted_image: "transparent_borderless.png", + offset_x: 0, + offset_y: 0 + ) + + ### fade the top for clear tops + if clear_tops() then base := prep_clear_tops(base:base) + + ### apply back face plate multiply effect + if is_multiplied() then base := multiply_back_face(base:base) + + ### click masks are applied as the field mask + base + } + multiply_background := { + c := if is_clear() then "artifact" else card.card_color + color_background(c, type:"multiply", base_hybrid:card_hybrid, hybrid_blend:"white", multicolor_blend:"white", artifact_blend:"white") + } + dka_scripted_frame := { + clipped := set_mask(image:base, mask:"masks/dka_remove.png") + typeline := set_mask(image:base, mask:"masks/dka_add.png") + typeline := crop_image(typeline, height:100, width:375, offset_x:0, offset_y:238) + insert_image( + base_image:clipped, + inserted_image: typeline, + offset_x: 0, + offset_y: 270 + ) + } + prep_clear_tops := { + set_mask( + image: base, + mask: "frame_masks/clear_tops_mask.png" + ) + } + multiply_back_face := { + multiply_mask := (if is_thbland() then "energies/" else if is_dka() then "dka/" else template_prefix["card"]) + "hybrid_blend_card.png" + multiply_image() + } + multiply_image := { + combine_blend( + combine: "multiply", + image1: base, + image2: masked_blend( + mask: multiply_mask, + light: template_prefix["multiply"] + "white.png", + dark: multiply_background() + ) ) } mainframe_card_base := { [ - map: "/magic-modules.mse-include/cards/746 maps/" + input + (if land then "l" else "") + "card.png", - devoid: "devoid/" + input + "card.png", - clear: "/magic-modules.mse-include/cards/375 m15 simple/xcard.png", + devoid: "/magic-modules.mse-include/cards/375 m15 simple/devoid/" + input + "card.png", + clear: clear_image_path(), energy: "energies/" + input + "card.png", fullart: "dka/" + input + (if land then "l" else "") + "card.jpg" fnm: "fnm/" + input + "card.png" @@ -538,12 +639,19 @@ init script: standard: "/magic-modules.mse-include/cards/375 m15 simple/" + (if land and input == "a" then "cl" else if land then input + "l" else input) + "card.jpg" ][base_card()] } + node_template := { + right_hand := transform_symbol_is_right(card.transformation) + if uses_clear_frame() then input := "x" + base := template_prefix["node"] + (if is_planeshifted() then "shifted/" else "") + input + ".png" + if right_hand then flip_image(base, horizontal: true) else base + } # this goes at the very end harder_script := [ crown: module_crown_template_patch, card: mainframe_card_base custom_border: custom_border_image, alt_nyx: alt_nyx_template + node: node_template ] #### mask scripts @@ -551,16 +659,14 @@ init script: if is_borderless() then "" else "border_masks/" + (if is_puma() then "puma_" else "") - + (if is_legend() and not is_map() then "crown_border" else "border_mask") + + (if is_legend() then "crown_border" else "border_mask") + (if card.border_color == rgb(200,200,200) then "_silver" else "") + ".png" } frame_mask_script := { - if is_map() - then "frame_masks/map_mask.png" - else if auto_station() and not mini_arts() + if auto_station() and not mini_arts() then "frame_masks/spacecraft" + (if uses_clear_frame() then "_clear" else if is_borderless() then "_borderless" else "") + ".png" - else if is_clear() or is_devoid() + else if uses_clear_frame() then "frame_masks/clear_frame_mask.png" else if is_thbland() then "frame_masks/energy.png" @@ -572,16 +678,12 @@ init script: then "frame_masks/borderless_frameless" + (if is_miracle() then "_miracle" else "") + ".png" else if uses_expanded_art() then "frame_masks/borderless.png" - else if clear_tops() - then "frame_masks/clear_tops" + (if is_dka() then "_dka" else "") + "_mask.png" else if is_dka() then "frame_masks/dka.png" else "frame_masks/frame_mask" + (if is_puma() then "_puma" else "") + (if is_mutate() then "_mutate" else "") + ".png" } image_mask_script := { - if is_map() then "" - else if is_devoid() then "image_masks/devoid.png" - else if is_clear() then "image_masks/clear.png" + if uses_clear_frame() then "image_masks/clear" + (if is_dka() then "_dka" else "") + ".png" else if is_thbland() then "image_masks/energy.png" else if uses_expanded_art() then "image_masks/guide_borderless" + (if is_dka() then "_dka" else "") + ".png" else if mutate_image() then @@ -590,19 +692,19 @@ init script: } miracle_mask := { if is_borderless() and is_frameless() and not is_thbland() - then "frame_masks/miracle_borderless" + (if is_legend() then "_crown" else "") + ".png" + then template_prefix["miracle"] + "mask_" + (if is_legend() then "onlypoint" else "rays") + ".png" else if is_legend() and uses_expanded_art() then template_prefix["miracle"] + "mask_onlypoint.png" else if is_legend() and is_puma() then template_prefix["miracle"] + "mask_onlypoint.png" else if uses_expanded_art() or is_puma() then template_prefix["miracle"] + "mask_rays.png" - else if is_devoid() and mask_trims_for_devoid() - then template_prefix["miracle"] + "mask_backplate.png" - else if is_legend() and is_clear() - then template_prefix["miracle"] + "mask_fullcrown.png" + else if is_legend() and (is_clear() or clear_tops()) + then template_prefix["miracle"] + "mask_top.png" else if is_legend() then template_prefix["miracle"] + "mask_pointcrown.png" + else if is_devoid() and mask_trims_for_devoid() + then template_prefix["miracle"] + "mask_backplate.png" else "" } main_trim_mask := { @@ -650,25 +752,23 @@ init script: top_of_textbox := { ( if is_snap_prototype() then (if is_dka() then 359 else 329) + 8 + prototype_height() - else if is_map() then 340 else if is_mutate() then 395 else if is_dka() then 359 else 327 ) - (-chop_top()) + body_font_vertical() } bottom_of_textbox := { - (if is_map() then 475 else 481) - chop_bot() + 481 - chop_bot() - (if reminder_box_is_visible() then 18 else 0) } #### other settings use_flash_dot := { styling.use_flash_dot and (lang_setting("is_instant")(card.super_type) or contains(card.type, match:"Flash"))} is_promo := { styling.promo } is_unsorted := {styling.remove_from_autocount} - is_skinned := {chosen(styling.other_options, choice:"godzilla style alias")} + is_skinned := { card.alias != "" and not use_evobar() } use_vorthos := {((not is_leveler() or lone_pt()) and card.pt != "") or chosen(styling.other_options, choice:"vorthos box")} is_tarot := {chosen(styling.other_options, choice:"text watermarks")} use_evobar := {chosen(styling.other_options, choice:"pokemon evobar")} - center_map := {is_map() and (card.casting_cost == "" or chosen(styling.other_options, choice:"always center map names"))} #### bools shown_cr := { @@ -904,41 +1004,39 @@ init script: else 0 } ### Customize fonts - ## redefine these since Maps make them annoying swap_fonts_name_default := [ - name: {if is_map() then "Beleren Small Caps" else "Beleren Bold"}, - size: {if is_map() then 14.8 else 16}, - color: {if is_map() or uses_clear_frame() then "black" else if is_planeshifted() or is_fnm() or (is_inverted() and not is_dka()) then "white" else "black"}, + name: {"Beleren Bold"}, + size: {16}, + color: {if uses_clear_frame() then "black" else if is_planeshifted() or is_fnm() or (is_inverted() and not is_dka()) then "white" else "black"}, vertical: {0}, italic: {""} ] swap_fonts_type_default := [ name: {"Beleren Bold"}, - size: {if is_map() then 12 else 13}, - color: {if is_map() or uses_clear_frame() then "black" else if is_dka() or is_puma() or is_planeshifted() or is_fnm() or is_inverted() then "white" else "black"}, + size: {13}, + color: {if uses_clear_frame() then "black" else if is_dka() or is_puma() or is_planeshifted() or is_fnm() or is_inverted() then "white" else "black"}, vertical: {0}, italic: {""} ] swap_fonts_body_default := [ name: {"MPlantin"}, size: {if styling.font_cap != "" then to_number(styling.font_cap) else if is_snap_prototype() then 11.5 else if is_mutate() then 12 else 14}, - color: {if is_map() then "black" else if is_dka() or is_fnm() or is_inverted() then "white" else "black"}, + color: {if is_dka() or is_fnm() or is_inverted() then "white" else "black"}, vertical: {0}, italic: {"MPlantin-Italic"} ] swap_fonts_body2_default := [ name: {"MPlantin"}, size: {if styling.font_cap != "" then to_number(styling.font_cap) else if is_snap_prototype() then 11.5 else if is_mutate() then 12 else 14}, - color: {if is_map() or is_prototype() then "black" else if is_dka() or is_fnm() or is_inverted() then "white" else "black"}, + color: {if is_prototype() then "black" else if is_dka() or is_fnm() or is_inverted() then "white" else "black"}, vertical: {0}, italic: {"MPlantin-Italic"} ] swap_fonts_pt_default := [ name: {"Beleren Bold"}, - size: {if is_map() then 14 else if auto_station() then 13 else 16}, + size: {if auto_station() then 13 else 16}, color: { - if is_map() then "black" - else if is_planeshifted() or is_fnm() or is_inverted() then "white" + if is_planeshifted() or is_fnm() or is_inverted() then "white" else if is_vehicle() or auto_station() then "white" else "black" }, @@ -947,10 +1045,9 @@ init script: ] swap_fonts_pt2_default := [ name: {"Beleren Bold"}, - size: {if is_prototype() then 15 else if is_map() then 14 else if auto_station() then 13 else 16}, + size: {if is_prototype() then 15 else if auto_station() then 13 else 16}, color: { if is_prototype() then "white" - else if is_map() then "black" else if is_planeshifted() or is_fnm() or is_inverted() then "white" else if is_vehicle() or auto_station() then "white" else "black" @@ -972,26 +1069,21 @@ init script: } tri_stamp := { - if is_map() or is_clear() or is_thbland() + if is_thbland() then template_prefix["ubstamp"] + "_stamp.png" - else if is_devoid() - then template_prefix["ubstamp"] + "devoid.png" + else if uses_clear_frame() + then template_prefix["ubstamp"] + "xstamp.png" else module_ubstamp() } round_stamp := { - if is_map() or is_clear() or is_thbland() + if is_thbland() then template_prefix["stamp"] + "_stamp.png" - else if is_devoid() - then template_prefix["stamp"] + "devoid.png" + else if uses_clear_frame() + then template_prefix["stamp"] + "xstamp.png" else module_stamp() } stamp_top := { - sh := stamp_shape() - if is_map() and sh == "triangle" - then 472 - else if is_clear() - then (if sh == "triangle" then 472 else 473) - else if is_thbland() + if is_thbland() then 472 else 471 } @@ -1002,7 +1094,6 @@ init script: then false else true } - card_symbol_offset_top_1 := { if is_clear() then 1 else 0 } override_clear := replace@(match:"()?", replace: "")+ replace@(match:"()?", replace: "") @@ -1084,6 +1175,42 @@ init script: else combined_editor(field1: card.rule_text, separator: "\n", field2: card.flavor_text) } + + old_alias_colors := alias_colors + shifted_alias_colors := { + [ + w: rgb(249, 247, 232), + u: rgb(6, 115, 184), + b: rgb(39, 38, 36), + r: rgb(233, 107, 48), + g: rgb(6, 120, 69), + a: rgb(176, 150, 133), + m: rgb(229, 203, 106), + c: rgb(173, 151, 137) + ][input] + } + alias_colors := { + if is_devoid() or is_clear() or clear_tops() + then rgb(232, 231, 231) + else if is_planeshifted() + then shifted_alias_colors(input) + else old_alias_colors(input) + } + transform_symbol_image_folder := { "/magic-modules.mse-include/cards/375 nodes/" } + transform_symbol_offset_top_1 := { -1 } + reminder_disabled := { not is_linked_dfc() } + + force_notched := { chosen(styling.other_options, choice:"transform notch") } + has_modal := match@(match:"modal") + notched_front_face := { + get_back_face(card) != nil and not has_modal(card.transformation) + } + is_notched := { + (force_notched() or notched_front_face()) and not is_thbland() + } + is_multiplied := { + get_front_face(card) != nil and not has_modal(card.transformation) + } ############################################################## Set info fields set info style: symbol: @@ -1122,7 +1249,6 @@ styling field: type: multiple choice name: frames description: Use these frames. Higher level frames may override lower levels. - choice: map choice: devoid choice: clear choice: borderless art @@ -1158,11 +1284,9 @@ styling field: name: other options description: Other frame options choice: prerelease stamp - choice: godzilla style alias choice: pokemon evobar choice: ancestral generic mana choice: override-style text - choice: always center map names choice: avoid covering devoid choice: use starting loyalty choice: regular pt on levelers @@ -1178,6 +1302,7 @@ styling field: choice: inverted d20 choice: de-fullart special frames choice: popunder art + choice: transform notch initial: avoid covering devoid, auto vehicles, auto snow, auto nyx crowns, auto ub, auto spacecraft styling field: type: text @@ -1344,6 +1469,7 @@ include file: /magic-modules.mse-include/separators/card_fields include file: /magic-modules.mse-include/corners/card_fields include file: /magic-modules.mse-include/stamps/card_fields include file: /magic-modules.mse-include/symbols/card_fields +include file: /magic-modules.mse-include/reminders/card_fields card style: ############################# Background stuff border color: @@ -1366,34 +1492,22 @@ card style: render style: image popup style: in place image: { card_background() } - mask: { frame_mask_script() } + mask: { "frame_masks/click_mask" + (if is_thbland() then "_energy" else if is_dka() then "_dka" else "") + ".png" } ############################# Name line name: left: script: - if center_map() - then 55 - else if is_map() and not transform_symbol_is_empty(card.transformation) - then 65 - else if is_map() - then 60 - else if card.card_symbol != "none" and not transform_symbol_is_empty(card.transformation) + if card.card_symbol != "none" and transform_symbol_active_left(card.transformation) then 78 - else if not transform_symbol_is_empty(card.transformation) + else if transform_symbol_active_left(card.transformation) then 58 else if card.card_symbol != "none" then 50 else 32 - top: - script: - ( - if is_map() then 27 - else if is_clear() or clear_tops() then 31 - else 30 - ) + name_font_vertical() - right: { if center_map() then 320 else (if is_map() then 320 else 341) - card_style.casting_cost.content_width } + top: { 30 + name_font_vertical() } + right: { 341 - card_style.casting_cost.content_width - (if transform_symbol_active_right(card.transformation) then 26 else 0) } height: { 23 - (0.5 * shrink_name()) } - alignment: {if center_map() then "center bottom shrink-overflow" else "left bottom shrink-overflow" } + alignment: left bottom shrink-overflow padding bottom: 0 z index: 900 font: @@ -1401,15 +1515,15 @@ card style: italic name: { name_font_italic() } size: { name_font_size() } color: { name_font_color() } - shadow color: {if is_map() then rgba(0,0,0,0) else if is_planeshifted() or is_fnm() then rgb(0,0,0) else rgba(0,0,0,0)} + shadow color: {if is_planeshifted() or is_fnm() then rgb(0,0,0) else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 alias: - left: {if is_skinned() then 45 else if is_map() then 15 else 33} - top: {if is_map() then 58 else 53} - width: {if is_skinned() then 285 else if use_evobar() then max(100, card_style.alias.content_width) else 0} + left: { if use_evobar() then 33 else 38.5 } + top: {if use_evobar() then 57 else 55} + width: {if use_evobar() then max(100, card_style.alias.content_width) else 298 } height: 20 - alignment: { (if is_skinned() then "center" else "") + "bottom shrink-overflow"} + alignment: { (if use_evobar() then "" else "center") + "middle shrink-overflow"} padding bottom: 0 z index: 900 font: @@ -1419,17 +1533,17 @@ card style: weight: {if use_evobar() then "italic" else "bold"} color: {if use_evobar() then "black" else "white"} casting cost: - right: { if is_map() then 327 else 346} - top: { if is_map() then 27 else 29} + right: { 346 - (if transform_symbol_active_right(card.transformation) then 28 else 0) } + top: 29 width: { max(30, card_style.casting_cost.content_width) + 5 } height: 23 alignment: middle right font: name: MPlantin - size: { if is_map() then 14 else 15} + size: 15 symbol font: name: {styling.casting_cost_mana_symbols} - size: { if is_map() then 14 else 15} + size: 15 alignment: middle right always symbol: true z index: 920 @@ -1466,7 +1580,7 @@ card style: image: left: script: - if is_map() or uses_clear_frame() or uses_expanded_art() or is_puma() + if uses_clear_frame() or uses_expanded_art() or is_puma() then 0 else if clear_tops() then 15 @@ -1477,14 +1591,12 @@ card style: else 29 top: script: - if is_map() - then 57 - else if uses_clear_frame() or clear_tops() or uses_expanded_art() + if uses_clear_frame() or clear_tops() or uses_expanded_art() then 0 else 59 width: script: - if is_map() or uses_clear_frame() or uses_expanded_art() or is_puma() + if uses_clear_frame() or uses_expanded_art() or is_puma() then 375 else if clear_tops() then 345 @@ -1495,9 +1607,7 @@ card style: else 316 height: script: - if is_map() - then 241 - else if uses_clear_frame() or uses_expanded_art() + if uses_clear_frame() or uses_expanded_art() then 523 else if clear_tops() and is_dka() then 483 @@ -1527,8 +1637,8 @@ card style: z index: 899 ############################# Card type indicator: - left: { if is_map() then 18 else 31 + (if is_season() then 12 else 0) + (if is_clear() then 2 else 0) + (if use_flash_dot() then 3 else 0) } - top: { if is_map() or is_clear() then 298 else if is_thbland() then 449 else if is_dka() then 332 else 300 } + left: { 31 + (if is_season() then 12 else 0) + (if use_flash_dot() then 3 else 0) } + top: { if is_thbland() then 449 else if is_dka() then 332 else 300 } width: 17 height: 17 z index: 800 @@ -1536,11 +1646,11 @@ card style: visible: { has_identity() } image: { module_identity() } type: - left: { if is_map() then 85 else 32 + (if is_season() then 12 else 0) + (if has_identity() then 20 else 0) + (if is_clear() then 4 else 0) + (if use_flash_dot() then 3 else 0) } - top: { (if is_map() then 297.5 else if is_devoid() then 295 else if is_clear() then 294 else if is_thbland() then 444 else if is_dka() then 329 else 296) + shrink_type() + type_font_vertical() } - width: { if is_map() then 205 else (if has_identity() then 290 else 310) - rare_width() - (if is_season() then 12 else 0) } - height: { (if is_map() then 18 else 20) - shrink_type() } - alignment: { if is_map() then "center top shrink-overflow" else "top shrink-overflow" } + left: { 32 + (if is_season() then 12 else 0) + (if has_identity() then 20 else 0) + (if use_flash_dot() then 3 else 0) } + top: { (if is_thbland() then 444 else if is_dka() then 329 else 296) + shrink_type() + type_font_vertical() } + width: { (if has_identity() then 290 else 310) - rare_width() - (if is_season() then 12 else 0) } + height: { 20 - shrink_type() } + alignment: top shrink-overflow z index: 900 padding top: 2 font: @@ -1548,13 +1658,13 @@ card style: italic name: { type_font_italic() } size: { type_font_size() } color: { type_font_color() } - shadow color: {if is_map() then rgba(0,0,0,0) else if is_dka() or is_puma() or is_planeshifted() or is_fnm() then "black" else rgba(0,0,0,0)} + shadow color: {if is_dka() or is_puma() or is_planeshifted() or is_fnm() then "black" else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 separator color: red rarity: - right: { (if is_map() then 199 else if is_scrolls() then 334 else 344) + rarity_user_offset_left(styling.rarity_offsets or else "") } - top: { (if is_map() then 53 else if is_devoid() then 296 else if is_clear() then 295 else if is_thbland() then 445 else if is_dka() then 329 else 297) + rarity_user_offset_top(styling.rarity_offsets or else "") } + right: { (if is_scrolls() then 334 else 344) + rarity_user_offset_left(styling.rarity_offsets or else "") } + top: { (if is_thbland() then 445 else if is_dka() then 329 else 297) + rarity_user_offset_top(styling.rarity_offsets or else "") } width: { if set.shorten_types_for_rarity then 44 + rarity_user_offset_width(styling.rarity_offsets or else "") else 0 } height: {22 + rarity_user_offset_height(styling.rarity_offsets or else "")} z index: 950 @@ -1563,17 +1673,17 @@ card style: include file: /magic-modules.mse-include/rarities/choice_images ############################# Text boxs text: - left: { if (card.level_0 != "" or card.level_1 != "" or card.level_2 != "") then 75 else if is_map() then 40 else 29 } + left: { if (card.level_0 != "" or card.level_1 != "" or card.level_2 != "") then 75 else 29 } top: { top_of_textbox() } bottom: { bottom_of_textbox() } - width: { if is_leveler() then 0 else (if is_map() then 287 else 314) + (if (card.level_0 != "" or card.level_1 != "" or card.level_2 != "") then -46 else 0) } + width: { if is_leveler() then 0 else 314 + (if (card.level_0 != "" or card.level_1 != "" or card.level_2 != "") then -46 else 0) } font: name: { body_font() } italic name: { body_font_italic() } size: { body_font_size() } scale down to: 6 color: { body_font_color() } - shadow color: {if is_map() then rgba(0,0,0,0) else if is_dka() or is_fnm() then "black" else rgba(0,0,0,0)} + shadow color: {if is_dka() or is_fnm() then "black" else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 symbol font: @@ -1600,9 +1710,9 @@ card style: line height line max: 1.6 ############################# leveler level 1 text: - left: { if is_leveler() and card.level_0 != "" then (if loy_leveler() then 57 else if cir_leveler() then 43 else if box_leveler() then 78 else 75) else if is_map() then 40 else 29} + left: { if is_leveler() and card.level_0 != "" then (if loy_leveler() then 57 else if cir_leveler() then 43 else if box_leveler() then 78 else 75) else 29} top: { if is_mutate() or is_snap_prototype() then (if is_dka() then 359 else 329) else top_of_textbox() } - right: { if is_leveler() then (if lone_pt() or card.pt == "" then 342 else (if cir_leveler() then 291 else 287)) else if is_snap_prototype() then 290 else if is_mutate() then 342 else if is_map() then 40 else 29} + right: { if is_leveler() then (if lone_pt() or card.pt == "" then 342 else (if cir_leveler() then 291 else 287)) else if is_snap_prototype() then 290 else if is_mutate() then 342 else 29} bottom: { if is_snap_prototype() then (if is_dka() then 359+prototype_height() else 329+prototype_height()) else if is_mutate() then 392 else if is_leveler() then (327+lv_1_height()) else bottom_of_textbox() } font: font: @@ -1611,7 +1721,7 @@ card style: size: { body2_font_size() } scale down to: 6 color: { body2_font_color() } - shadow color: {if is_map() or is_prototype() then rgba(0,0,0,0) else if is_dka() or is_fnm() then "black" else rgba(0,0,0,0)} + shadow color: {if is_prototype() then rgba(0,0,0,0) else if is_dka() or is_fnm() then "black" else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 symbol font: @@ -1634,7 +1744,7 @@ card style: line height hard max: 1.3 line height line max: 1.6 level 2 text: - left: { if is_leveler() then (if card.level_1 != "" then (if loy_leveler() then 57 else if cir_leveler() then 43 else if box_leveler() then 78 else 75) else if is_map() then 40 else 29) else 0} + left: { if is_leveler() then (if card.level_1 != "" then (if loy_leveler() then 57 else if cir_leveler() then 43 else if box_leveler() then 78 else 75) else 29) else 0} top: { if is_leveler() then (329 + lv_2_coordinate()) else 0 } right: { if is_leveler() then (if card.pt_2 != "" then (if cir_leveler() then 291 else 287) else 342) else 0 } bottom: { if is_leveler() then (329 + lv_2_coordinate()) + lv_2_height()-2 else 0 } @@ -1644,7 +1754,7 @@ card style: size: { body_font_size() } scale down to: 6 color: { body_font_color() } - shadow color: {if is_map() then rgba(0,0,0,0) else if is_dka() or is_fnm() then "black" else rgba(0,0,0,0)} + shadow color: {if is_dka() or is_fnm() then "black" else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 symbol font: @@ -1667,7 +1777,7 @@ card style: line height hard max: 1.3 line height line max: 1.6 level 3 text: - left: {if card.level_2 != "" then (if loy_leveler() then 57 else if cir_leveler() then 43 else if box_leveler() then 78 else 75) else if is_map() then 40 else 29} + left: {if card.level_2 != "" then (if loy_leveler() then 57 else if cir_leveler() then 43 else if box_leveler() then 78 else 75) else 29} top: {331 + lv_3_coordinate()} right: {if card.pt_3 != "" then (if cir_leveler() then 291 else 287) else 342} height: {if not is_leveler()then 0 else lv_3_height()-2} @@ -1677,7 +1787,7 @@ card style: size: { body_font_size() } scale down to: 6 color: { body_font_color() } - shadow color: {if is_map() then rgba(0,0,0,0) else if is_dka() or is_fnm() then "black" else rgba(0,0,0,0)} + shadow color: {if is_dka() or is_fnm() then "black" else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 symbol font: @@ -1700,7 +1810,7 @@ card style: line height hard max: 1.3 line height line max: 1.6 level 4 text: - left: {if card.level_3 != "" then (if loy_leveler() then 57 else if cir_leveler() then 43 else if box_leveler() then 78 else 75) else if is_map() then 40 else 29} + left: {if card.level_3 != "" then (if loy_leveler() then 57 else if cir_leveler() then 43 else if box_leveler() then 78 else 75) else 29} top: {331 + lv_4_coordinate()} right: {if card.pt_7 != "" then (if cir_leveler() then 291 else 287) else 342} height: {if not is_leveler() then 0 else lv_4_height()-2} @@ -1710,7 +1820,7 @@ card style: size: { body_font_size() } scale down to: 6 color: { body_font_color() } - shadow color: {if is_map() then rgba(0,0,0,0) else if is_dka() or is_fnm() then "black" else rgba(0,0,0,0)} + shadow color: {if is_dka() or is_fnm() then "black" else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 symbol font: @@ -1733,10 +1843,10 @@ card style: line height hard max: 1.3 line height line max: 1.6 watermark: - left: { if is_map() then 40 else 19 } - top: { if is_map() then 330 else if is_dka() then 359 else 330 } - width: { if is_tarot() then 0 else if is_map() then 287 else 334 } - height: { if is_map() then 154 else if is_dka() then 120 else 152 } + left: { 19 } + top: { if is_dka() then 359 else 330 } + width: { if is_tarot() then 0 else 334 } + height: { if is_dka() then 120 else 152 } z index: 720 render style: image popup style: in place @@ -1816,7 +1926,7 @@ card style: pt: z index: 900 left: {if is_leveler() and not lone_pt() then leveler_pt_left() else 286} - top: { (if is_leveler() and not lone_pt() then (l1_center() - 14 + leveler_pt_top_offset()) else if is_map() then 467 else 469)+(pt_font_vertical())} + top: { (if is_leveler() and not lone_pt() then (l1_center() - 14 + leveler_pt_top_offset()) else 469)+(pt_font_vertical())} width: {if starting_loyalty() and not is_leveler() then 0 else if is_leveler() then leveler_pt_width() else 60} height: {leveler_pt_height()} alignment: center middle shrink-overflow @@ -1826,13 +1936,13 @@ card style: size: {pt_font_size()} color: {pt_font_color()} separator color: red - shadow color: {if is_map() then rgba(0,0,0,0) else if is_planeshifted() or is_fnm() then rgb(0,0,0) else rgba(0,0,0,0)} + shadow color: {if is_planeshifted() or is_fnm() then rgb(0,0,0) else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 pt 2: z index: 900 left: {if prototype_pt() then 300 else leveler_pt_left()} - top: {if prototype_pt() then 307+prototype_height() else (l2_center() - 12 + leveler_pt_top_offset())+(if is_map() then -1 else 0)+(pt_font_vertical())} + top: {if prototype_pt() then 307+prototype_height() else (l2_center() - 12 + leveler_pt_top_offset())+(pt_font_vertical())} width: {if prototype_pt() then 45 else if is_leveler() and (not lone_pt() or card.pt_2 != "") then leveler_pt_width() else 0} height: {if prototype_pt() then 21 else leveler_pt_height()} alignment: center middle shrink-overflow @@ -1842,13 +1952,13 @@ card style: size: {pt2_font_size()} color: {pt2_font_color()} separator color: red - shadow color: {if is_map() then rgba(0,0,0,0) else if is_planeshifted() or is_fnm() then rgb(0,0,0) else rgba(0,0,0,0)} + shadow color: {if is_planeshifted() or is_fnm() then rgb(0,0,0) else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 pt 3: z index: 900 left: {leveler_pt_left()} - top: {(l3_center() - 12 + leveler_pt_top_offset())+(if is_map() then -1 else 0)+(pt_font_vertical())} + top: {(l3_center() - 12 + leveler_pt_top_offset())+(pt_font_vertical())} width: {if is_leveler() and not lone_pt() or card.pt_3 != "" then leveler_pt_width() else 0} height: {leveler_pt_height()} alignment: center middle shrink-overflow @@ -1858,13 +1968,13 @@ card style: size: {pt_font_size()} color: {pt_font_color()} separator color: red - shadow color: {if is_map() then rgba(0,0,0,0) else if is_planeshifted() or is_fnm() then rgb(0,0,0) else rgba(0,0,0,0)} + shadow color: {if is_planeshifted() or is_fnm() then rgb(0,0,0) else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 pt 7: z index: 900 left: {leveler_pt_left()} - top: {(l4_center() - 12 + leveler_pt_top_offset())+(if is_map() then -1 else 0)+(pt_font_vertical())} + top: {(l4_center() - 12 + leveler_pt_top_offset())+(pt_font_vertical())} width: {if is_leveler() and not lone_pt() or card.pt_7 != "" then leveler_pt_width() else 0} height: {if card_style.level_4_text.height < 10 and card.pt_7 == "" then 0 else leveler_pt_height()} alignment: center middle shrink-overflow @@ -1874,7 +1984,7 @@ card style: size: {pt_font_size()} color: {pt_font_color()} separator color: red - shadow color: {if is_map() then rgba(0,0,0,0) else if is_planeshifted() or is_fnm() then rgb(0,0,0) else rgba(0,0,0,0)} + shadow color: {if is_planeshifted() or is_fnm() then rgb(0,0,0) else rgba(0,0,0,0)} shadow displacement x: -1 shadow displacement y: 1 loyalty: @@ -1948,12 +2058,6 @@ extra card field: choice: evo save value: false editable: false -extra card field: - type: choice - name: evobar tip - choice: evo - save value: false - editable: false extra card field: type: choice name: evobar start @@ -2195,48 +2299,47 @@ extra card field: editable: false extra card field: type: choice - name: transparent borderless overlay + name: notch script: card.card_color save value: false editable: false - extra card style: pt box: - left: { if is_leveler() and not lone_pt() then leveler_ptbox_left() else if is_map() then 270 else 273 } - top: { if is_leveler() and not lone_pt() then (l1_center() - (if is_map() then 26 else 18)) + leveler_ptbox_top_offset() else if is_map() then 453 else 466} - width: { if starting_loyalty() and not is_leveler() then 0 else if is_map() then 90 else leveler_ptbox_width()} - height: { if is_map() then 54 else leveler_ptbox_height()} + left: { if is_leveler() and not lone_pt() then leveler_ptbox_left() else 273 } + top: { if is_leveler() and not lone_pt() then (l1_center() - 18) + leveler_ptbox_top_offset() else 466} + width: { if starting_loyalty() and not is_leveler() then 0 else leveler_ptbox_width()} + height: { leveler_ptbox_height()} z index: 840 visible: { card.pt != "" } render style: image image: { choose_ptbox() } pt box 2: left: { leveler_ptbox_left()} - top: { l2_center() - (if is_map() then 26 else 15) + leveler_ptbox_top_offset()} - width: { if (is_leveler() and not lone_pt()) or card.pt_2 != "" then (if is_map() then 90 else leveler_ptbox_width()) else 0} - height: { if (is_leveler() and not lone_pt()) or card.pt_2 != "" then (if is_map() then 54 else leveler_ptbox_height()) else 0} + top: { l2_center() - 15 + leveler_ptbox_top_offset()} + width: { if (is_leveler() and not lone_pt()) or card.pt_2 != "" then leveler_ptbox_width() else 0} + height: { if (is_leveler() and not lone_pt()) or card.pt_2 != "" then leveler_ptbox_height() else 0} z index: 840 visible: { card.pt_2 != "" and not is_prototype() } render style: image - image: { if is_map() then mappt_background() else combine_blend(image1: choose_ptbox(), image2: template_prefix["pt"]+"ptbox_multiply_1.png", combine: "multiply")} + image: { combine_blend(image1: choose_ptbox(), image2: template_prefix["pt"]+"ptbox_multiply_1.png", combine: "multiply") } pt box 3: left: {leveler_ptbox_left()} - top: { l3_center() - (if is_map() then 26 else 15) + leveler_ptbox_top_offset()} - width: { if (is_leveler() and not lone_pt()) or card.pt_3 != "" then (if is_map() then 90 else leveler_ptbox_width()) else 0} - height: { if (is_leveler() and not lone_pt()) or card.pt_3 != "" then (if is_map() then 54 else leveler_ptbox_height()) else 0} + top: { l3_center() - 15 + leveler_ptbox_top_offset()} + width: { if (is_leveler() and not lone_pt()) or card.pt_3 != "" then leveler_ptbox_width() else 0} + height: { if (is_leveler() and not lone_pt()) or card.pt_3 != "" then leveler_ptbox_height() else 0} z index: 840 visible: { card.pt_3 != "" } render style: image - image: {if is_map() then mappt_background() else combine_blend(image1: choose_ptbox(), image2: template_prefix["pt"]+"ptbox_multiply_2.png", combine: "multiply")} + image: {combine_blend(image1: choose_ptbox(), image2: template_prefix["pt"]+"ptbox_multiply_2.png", combine: "multiply")} pt box 4: left: {leveler_ptbox_left()} - top: { l4_center() - (if is_map() then 26 else 15) + leveler_ptbox_top_offset()} - width: { if (is_leveler() and not lone_pt()) or card.pt_3 != "" then (if is_map() then 90 else leveler_ptbox_width()) else 0} - height: { if (is_leveler() and not lone_pt()) or card.pt_3 != "" then (if is_map() then 54 else leveler_ptbox_height()) else 0} + top: { l4_center() - 15 + leveler_ptbox_top_offset()} + width: { if (is_leveler() and not lone_pt()) or card.pt_3 != "" then leveler_ptbox_width() else 0} + height: { if (is_leveler() and not lone_pt()) or card.pt_3 != "" then leveler_ptbox_height() else 0} z index: 840 visible: { card.pt_7 != "" } render style: image - image: {if is_map() then mappt_background() else combine_blend(image1: choose_ptbox(), image2: template_prefix["pt"]+"ptbox_multiply_3.png", combine: "multiply")} + image: {combine_blend(image1: choose_ptbox(), image2: template_prefix["pt"]+"ptbox_multiply_3.png", combine: "multiply")} loyalty box: right: 362 top: 466 @@ -2269,10 +2372,10 @@ extra card style: size: 14 color: rgb(223,169,41) tarot watermark: - left: { if is_map() then 40 else 19 } + left: 19 top: { if is_dka() then 359 else 330 } - width: { if not is_tarot() then 0 else if is_map() then 287 else 334 } - height: { if is_map() then 154 else if is_dka() then 120 else 152 } + width: { if not is_tarot() then 0 else 334 } + height: { if is_dka() then 120 else 152 } z index: 720 alignment: middle center font: @@ -2280,44 +2383,25 @@ extra card style: size: 90 color: {rgba(0,0,0,40)} - clear top frame: - left: 0 - top: 0 - width: {if clear_tops() then 375 else 0} - height: 523 - z index: 199 - render style: image - popup style: in place - image: /magic-modules.mse-include/cards/375 m15 simple/xcard.png - mask: { if is_dka() then "frame_masks/clear_tops_dka_mask2.png" } evobar: - left: {if is_map() then 15 else 27} - top: {if is_map() then 62 else 57} - width: {card_style.alias.content_width} - height: 27 - z index: 870 - render style: image - image: /magic-modules.mse-include/extras/evobar/evobar.png - visible: {use_evobar()} - evobar tip: - left: {(if is_map() then 14.6 else 26.6) + card_style.alias.content_width} - top: {if is_map() then 62 else 57} - width: 36 + left: 29 + top: 59 + width: { evobar_image_width(card_style.alias.content_width) } height: 27 z index: 870 render style: image - image: /magic-modules.mse-include/extras/evobar/evobar_tip.png + image: { evobar_image(card_style.alias.content_width) } visible: {use_evobar()} alias bar: - left: 38 - top: { if uses_clear_frame() or clear_tops() then 59 else 57} + left: 38.5 + top: 57 width: 298 - height: 21 + height: 20 z index: 880 render style: image - image: {if is_devoid() and not is_legend() then template_prefix["alias"]+"devoidalias.png" else if is_clear() or clear_tops() then template_prefix["alias"]+"xalias.png" else module_alias()} - visible: {is_skinned() and not use_evobar()} - mask: { if is_legend() and (is_devoid() or uses_expanded_art() or is_puma()) then "frame_masks/bl_alias_mask.png" else "" } + image: { module_alias() } + visible: {is_skinned()} + mask: { if is_legend() and (uses_expanded_art() or is_puma()) then "frame_masks/bl_alias_mask.png" else "" } scrolls: left: 0 top: 0 @@ -2326,7 +2410,7 @@ extra card style: render style: image image: {if is_puma() then puma_img() else "scrolls" + (if is_dka() then "_full" else "") + (if is_miracle() and not is_legend() then "_miracle" else "") + ".png"} z index: 600 - visible: {not is_map() and (is_scrolls() or is_puma())} + visible: {is_scrolls() or is_puma()} curtain: left: 0 top: 0 @@ -2335,17 +2419,17 @@ extra card style: render style: image image: {curtain_plate()} z index: 610 - visible: {not is_map() and not uses_expanded_art() and is_curtains()} + visible: {is_curtains() and not uses_expanded_art()} mask: {if is_legend() then "curtains/legend_mask.png"} miracle overlay: left: 0 - top: { if is_devoid() and is_legend() then 1 else 0 } + top: 0 width: 375 height: 523 render style: image image: { miracle_plate() } z index: 810 - visible: {not is_map() and is_miracle()} + visible: {is_miracle()} mask: { miracle_mask() } nyx overlay: left: 0 @@ -2355,7 +2439,7 @@ extra card style: render style: image image: { devoid_mask(module_nyx()) } z index: 330 - visible: { not is_map() and not uses_expanded_art() and is_nyx() } + visible: { not uses_expanded_art() and is_nyx() } mask: { if is_snow() or is_custom_border() or is_draft() or is_vehicle() then twin_trim_mask() else main_trim_mask() } snow overlay: left: 0 @@ -2365,7 +2449,7 @@ extra card style: render style: image image: { devoid_mask(module_snow()) } z index: 320 - visible: { not is_map() and not uses_expanded_art() and is_snow() and base_card() != "snow" } + visible: { not uses_expanded_art() and is_snow() and base_card() != "snow" } mask: { if is_custom_border() or is_draft() or is_vehicle() then twin_trim_mask() else main_trim_mask() } custom overlay: left: 0 @@ -2375,7 +2459,7 @@ extra card style: render style: image image: { devoid_mask(custom_border_blend()) } z index: 317 - visible: { not is_map() and not uses_expanded_art() and is_custom_border() } + visible: { not uses_expanded_art() and is_custom_border() } mask: { if is_vehicle() or is_draft() then twin_trim_mask() else main_trim_mask() } draft overlay: left: 0 @@ -2385,7 +2469,7 @@ extra card style: z index: 315 render style: image image: { devoid_mask(draft_trim()) } - visible: {not is_map() and not uses_expanded_art() and is_draft()} + visible: {not uses_expanded_art() and is_draft()} mask: { if is_vehicle() then twin_trim_mask() else main_trim_mask() } vehicle overlay: left: 0 @@ -2395,8 +2479,18 @@ extra card style: render style: image image: {if is_beyond() then devoid_mask("/magic-modules.mse-include/trims/beyond/vbeyond.png") else devoid_mask("/magic-modules.mse-include/trims/vehicle.png")} z index: 310 - visible: { not is_map() and not uses_expanded_art() and is_vehicle() } + visible: { not uses_expanded_art() and is_vehicle() } mask: { main_trim_mask() } + notch: + left: 0 + top: 0 + width: 375 + height: 523 + render style: image + image: { notch_image() } + z index: 510 + visible: { false } + mask: { template_prefix["notch_card"] + "notch_mask.png" } lvl label 0: left: {if box_leveler() then 8 else if loy_leveler() then 48 else 21} @@ -2458,7 +2552,7 @@ extra card style: z index: 640 render style: image image: {overlay1()} - visible: {(is_d20() and number_of_rolls(card.text) > 0) or (is_leveler() and not is_dka() and not is_map() and not is_fnm() and not is_inverted())} + visible: {(is_d20() and number_of_rolls(card.text) > 0) or (is_leveler() and not is_dka() and not is_fnm() and not is_inverted())} level 3 overlay: left: 29 top: { if is_d20() then top_of_para(rolls_start(card.text)+2-invert_rolls()) else 329 + lv_3_coordinate()} @@ -2467,7 +2561,7 @@ extra card style: z index: 640 render style: image image: {overlay2()} - visible: {(is_d20() and number_of_rolls(card.text)-no_roll(card.text) > 2) or (is_leveler() and not is_dka() and not is_map() and not is_fnm() and not is_inverted())} + visible: {(is_d20() and number_of_rolls(card.text)-no_roll(card.text) > 2) or (is_leveler() and not is_dka() and not is_fnm() and not is_inverted())} level 4 overlay: left: 29 top: { if is_d20() then top_of_para(rolls_start(card.text)+4-invert_rolls()) else 329 + lv_4_coordinate()} @@ -2476,7 +2570,7 @@ extra card style: z index: 640 render style: image image: {overlay3()} - visible: {(is_d20() and number_of_rolls(card.text)-no_roll(card.text) > 4) or (is_leveler() and not is_dka() and not is_map() and not is_fnm() and not is_inverted())} + visible: {(is_d20() and number_of_rolls(card.text)-no_roll(card.text) > 4) or (is_leveler() and not is_dka() and not is_fnm() and not is_inverted())} arrow 1: z index: 840 @@ -2539,7 +2633,7 @@ extra card style: render style: image image: { season_background() } visible: { is_season() } - mask: { if not transform_symbol_is_empty(card.transformation) then "nodes/mask.png" else "" } + mask: { if not transform_symbol_is_empty(card.transformation) then node_mask() else "" } mutbar: z index: 730 left: 28 @@ -2559,21 +2653,21 @@ extra card style: node: left: 0 top: 0 - height: 63 + height: 523 width: 375 z index: 610 render style: image image: { node_img() } - visible: {not is_map() and not is_clear() and not transform_symbol_is_empty(card.transformation)} + visible: {not transform_symbol_is_empty(card.transformation)} crown: left: 0 - top: {if is_devoid() then 1 else 0} + top: 0 width: 375 height: 523 render style: image image: { crown_img() } z index: 800 - visible: {is_legend() and not is_map()} + visible: {is_legend()} mask: { if is_fnm() and is_season() then "fnm/crown_season_mask.png" else if is_fnm() then "fnm/crown_mask.png" else if is_season() then "season/crown_mask.png" else ""} pride pin: @@ -2652,12 +2746,13 @@ extra card style: z index: 720 image: { prototype_pt_image() } visible: { is_prototype() and styling.prototype_secondary == "pt" and card.pt_2 != "" } - transparent borderless overlay: + clear top frame: left: 0 top: 0 width: 375 height: 523 - render style: image - z index: 600 - image: transparent_borderless.png - visible: { is_transparent_borderless() } \ No newline at end of file + image: { clear_image_path() } + mask: frame_masks/clear_tops_mask_inv.png + visible: { clear_tops() } + z index: 199 + render style: image \ No newline at end of file diff --git a/data/magic-modules.mse-include/cards/375 m15 cut/notched/notch_mask.png b/data/magic-modules.mse-include/cards/375 m15 cut/notched/notch_mask.png new file mode 100644 index 0000000000..a8bec864b9 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 m15 cut/notched/notch_mask.png differ diff --git a/data/magic-modules.mse-include/cards/375 m15 simple/devoid/acard.png b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/acard.png new file mode 100644 index 0000000000..105ada9b4b Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/acard.png differ diff --git a/data/magic-modules.mse-include/cards/375 m15 simple/devoid/bcard.png b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/bcard.png new file mode 100644 index 0000000000..845d84d89e Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/bcard.png differ diff --git a/data/magic-modules.mse-include/cards/375 m15 simple/devoid/ccard.png b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/ccard.png new file mode 100644 index 0000000000..cadc2bc457 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/ccard.png differ diff --git a/data/magic-modules.mse-include/cards/375 m15 simple/devoid/gcard.png b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/gcard.png new file mode 100644 index 0000000000..d4ca492004 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/gcard.png differ diff --git a/data/magic-modules.mse-include/cards/375 m15 simple/devoid/mcard.png b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/mcard.png new file mode 100644 index 0000000000..05c443c53d Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/mcard.png differ diff --git a/data/magic-modules.mse-include/cards/375 m15 simple/devoid/rcard.png b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/rcard.png new file mode 100644 index 0000000000..40c76bc85d Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/rcard.png differ diff --git a/data/magic-modules.mse-include/cards/375 m15 simple/devoid/ucard.png b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/ucard.png new file mode 100644 index 0000000000..c28afaaace Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/ucard.png differ diff --git a/data/magic-modules.mse-include/cards/375 m15 simple/devoid/wcard.png b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/wcard.png new file mode 100644 index 0000000000..2da8aac9ec Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 m15 simple/devoid/wcard.png differ diff --git a/data/magic-modules.mse-include/cards/375 m15 simple/xcard.png b/data/magic-modules.mse-include/cards/375 m15 simple/xcard.png index 6f593e4639..03254b4179 100644 Binary files a/data/magic-modules.mse-include/cards/375 m15 simple/xcard.png and b/data/magic-modules.mse-include/cards/375 m15 simple/xcard.png differ diff --git a/data/magic-modules.mse-include/cards/375 m15 simple/xcard_notched.png b/data/magic-modules.mse-include/cards/375 m15 simple/xcard_notched.png new file mode 100644 index 0000000000..8eefd8df41 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 m15 simple/xcard_notched.png differ diff --git a/data/magic-modules.mse-include/cards/375 multiply/a.png b/data/magic-modules.mse-include/cards/375 multiply/a.png new file mode 100644 index 0000000000..cb106ddeae Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 multiply/a.png differ diff --git a/data/magic-modules.mse-include/cards/375 multiply/b.png b/data/magic-modules.mse-include/cards/375 multiply/b.png new file mode 100644 index 0000000000..12fe127b10 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 multiply/b.png differ diff --git a/data/magic-modules.mse-include/cards/375 multiply/c.png b/data/magic-modules.mse-include/cards/375 multiply/c.png new file mode 100644 index 0000000000..e51d2f6c3e Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 multiply/c.png differ diff --git a/data/magic-modules.mse-include/cards/375 multiply/g.png b/data/magic-modules.mse-include/cards/375 multiply/g.png new file mode 100644 index 0000000000..6d8afbac0f Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 multiply/g.png differ diff --git a/data/magic-modules.mse-include/cards/375 multiply/m.png b/data/magic-modules.mse-include/cards/375 multiply/m.png new file mode 100644 index 0000000000..8274ff5a13 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 multiply/m.png differ diff --git a/data/magic-modules.mse-include/cards/375 multiply/r.png b/data/magic-modules.mse-include/cards/375 multiply/r.png new file mode 100644 index 0000000000..62401d6417 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 multiply/r.png differ diff --git a/data/magic-modules.mse-include/cards/375 multiply/u.png b/data/magic-modules.mse-include/cards/375 multiply/u.png new file mode 100644 index 0000000000..dc27b297fd Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 multiply/u.png differ diff --git a/data/magic-modules.mse-include/cards/375 multiply/w.png b/data/magic-modules.mse-include/cards/375 multiply/w.png new file mode 100644 index 0000000000..86f906e93f Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 multiply/w.png differ diff --git a/data/magic-modules.mse-include/cards/375 multiply/white.png b/data/magic-modules.mse-include/cards/375 multiply/white.png new file mode 100644 index 0000000000..18ff8a56ca Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 multiply/white.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/a.png b/data/magic-modules.mse-include/cards/375 nodes/a.png new file mode 100644 index 0000000000..1ca46bc871 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/a.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/b.png b/data/magic-modules.mse-include/cards/375 nodes/b.png new file mode 100644 index 0000000000..be44b51f4b Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/b.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/c.png b/data/magic-modules.mse-include/cards/375 nodes/c.png new file mode 100644 index 0000000000..f69ac8b24e Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/c.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/g.png b/data/magic-modules.mse-include/cards/375 nodes/g.png new file mode 100644 index 0000000000..ca96888436 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/g.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/m.png b/data/magic-modules.mse-include/cards/375 nodes/m.png new file mode 100644 index 0000000000..f397ea84b4 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/m.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/mask.png b/data/magic-modules.mse-include/cards/375 nodes/mask.png new file mode 100644 index 0000000000..8147bcaeb4 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/mask.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/r.png b/data/magic-modules.mse-include/cards/375 nodes/r.png new file mode 100644 index 0000000000..b46c0853b7 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/r.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/shifted/a.png b/data/magic-modules.mse-include/cards/375 nodes/shifted/a.png new file mode 100644 index 0000000000..38e4e1f0ee Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/shifted/a.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/shifted/b.png b/data/magic-modules.mse-include/cards/375 nodes/shifted/b.png new file mode 100644 index 0000000000..be44b51f4b Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/shifted/b.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/shifted/c.png b/data/magic-modules.mse-include/cards/375 nodes/shifted/c.png new file mode 100644 index 0000000000..f69ac8b24e Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/shifted/c.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/shifted/g.png b/data/magic-modules.mse-include/cards/375 nodes/shifted/g.png new file mode 100644 index 0000000000..d1bc34fc8f Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/shifted/g.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/shifted/m.png b/data/magic-modules.mse-include/cards/375 nodes/shifted/m.png new file mode 100644 index 0000000000..f397ea84b4 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/shifted/m.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/shifted/r.png b/data/magic-modules.mse-include/cards/375 nodes/shifted/r.png new file mode 100644 index 0000000000..ba872fb025 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/shifted/r.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/shifted/u.png b/data/magic-modules.mse-include/cards/375 nodes/shifted/u.png new file mode 100644 index 0000000000..f5f348ece5 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/shifted/u.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/shifted/w.png b/data/magic-modules.mse-include/cards/375 nodes/shifted/w.png new file mode 100644 index 0000000000..ccf02df5fa Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/shifted/w.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/u.png b/data/magic-modules.mse-include/cards/375 nodes/u.png new file mode 100644 index 0000000000..f5f348ece5 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/u.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/w.png b/data/magic-modules.mse-include/cards/375 nodes/w.png new file mode 100644 index 0000000000..ccf02df5fa Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/w.png differ diff --git a/data/magic-modules.mse-include/cards/375 nodes/x.png b/data/magic-modules.mse-include/cards/375 nodes/x.png new file mode 100644 index 0000000000..a13544dfa6 Binary files /dev/null and b/data/magic-modules.mse-include/cards/375 nodes/x.png differ diff --git a/data/magic-modules.mse-include/crowns/375/xcrown.png b/data/magic-modules.mse-include/crowns/375/xcrown.png index 4533a54595..f9e410ae1b 100644 Binary files a/data/magic-modules.mse-include/crowns/375/xcrown.png and b/data/magic-modules.mse-include/crowns/375/xcrown.png differ diff --git a/data/magic-modules.mse-include/extras/evobar/evobar_left.png b/data/magic-modules.mse-include/extras/evobar/evobar_left.png new file mode 100644 index 0000000000..276a6b2846 Binary files /dev/null and b/data/magic-modules.mse-include/extras/evobar/evobar_left.png differ diff --git a/data/magic-modules.mse-include/extras/evobar/script b/data/magic-modules.mse-include/extras/evobar/script new file mode 100644 index 0000000000..2f94aea994 --- /dev/null +++ b/data/magic-modules.mse-include/extras/evobar/script @@ -0,0 +1,18 @@ +evobar_image := { + ## nine_slice_image(input: image, height: height_of_new_image, width: width_of_new_image, left: left_margin, right: right_margin, top: top_margin, bottom: bottom_margin) + src := "/magic-modules.mse-include/extras/evobar/evobar_" + (if right == true then "right" else "left") + ".png" + + nine_slice_image( + src, + height: 27, + width: evobar_image_width(input), + left: 17, + right: 36, + top: 4, + bottom: 17 + ) +}@(right:false) + +evobar_image_width := { max(evobar_min_width, input + evobar_tip_width) } +evobar_tip_width := 36 +evobar_min_width := 54 \ No newline at end of file diff --git a/data/magic-modules.mse-include/stamps/backs/375 round/xstamp.png b/data/magic-modules.mse-include/stamps/backs/375 round/xstamp.png index a27a45021f..d1de38b28c 100644 Binary files a/data/magic-modules.mse-include/stamps/backs/375 round/xstamp.png and b/data/magic-modules.mse-include/stamps/backs/375 round/xstamp.png differ diff --git a/data/magic-modules.mse-include/stamps/backs/375 ub/xstamp.png b/data/magic-modules.mse-include/stamps/backs/375 ub/xstamp.png index 74510355f6..cec6f1669d 100644 Binary files a/data/magic-modules.mse-include/stamps/backs/375 ub/xstamp.png and b/data/magic-modules.mse-include/stamps/backs/375 ub/xstamp.png differ diff --git a/data/magic-modules.mse-include/symbols/readme.txt b/data/magic-modules.mse-include/symbols/readme.txt index 01534e60a4..9f32cfc0fd 100644 --- a/data/magic-modules.mse-include/symbols/readme.txt +++ b/data/magic-modules.mse-include/symbols/readme.txt @@ -47,6 +47,10 @@ transform_symbol_icon_has_shadow() #### Is the symbol on the right of the card (true or false) transform_symbol_is_right() +#### Is the symbol non-empty and on a particular side (true or false) +transform_symbol_active_left() +transform_symbol_active_right() + #### Each part of the symbol has default values. #### The icon shape defaults to "front triangle" if it's a front face (that is, when it is linked to a back face), #### "back triangle" if it's a back face, and "none" otherwise. To override this behavior, redefine this function: diff --git a/data/magic-modules.mse-include/trims/devoid/a.png b/data/magic-modules.mse-include/trims/devoid/a.png new file mode 100644 index 0000000000..996785f246 Binary files /dev/null and b/data/magic-modules.mse-include/trims/devoid/a.png differ diff --git a/data/magic-modules.mse-include/trims/devoid/b.png b/data/magic-modules.mse-include/trims/devoid/b.png new file mode 100644 index 0000000000..eb25eae06a Binary files /dev/null and b/data/magic-modules.mse-include/trims/devoid/b.png differ diff --git a/data/magic-modules.mse-include/trims/devoid/c.png b/data/magic-modules.mse-include/trims/devoid/c.png new file mode 100644 index 0000000000..822479e0b9 Binary files /dev/null and b/data/magic-modules.mse-include/trims/devoid/c.png differ diff --git a/data/magic-modules.mse-include/trims/devoid/g.png b/data/magic-modules.mse-include/trims/devoid/g.png new file mode 100644 index 0000000000..d32dc27356 Binary files /dev/null and b/data/magic-modules.mse-include/trims/devoid/g.png differ diff --git a/data/magic-modules.mse-include/trims/devoid/m.png b/data/magic-modules.mse-include/trims/devoid/m.png new file mode 100644 index 0000000000..3881b744f6 Binary files /dev/null and b/data/magic-modules.mse-include/trims/devoid/m.png differ diff --git a/data/magic-modules.mse-include/trims/devoid/r.png b/data/magic-modules.mse-include/trims/devoid/r.png new file mode 100644 index 0000000000..81d5cb62d4 Binary files /dev/null and b/data/magic-modules.mse-include/trims/devoid/r.png differ diff --git a/data/magic-modules.mse-include/trims/devoid/u.png b/data/magic-modules.mse-include/trims/devoid/u.png new file mode 100644 index 0000000000..d04cc46616 Binary files /dev/null and b/data/magic-modules.mse-include/trims/devoid/u.png differ diff --git a/data/magic-modules.mse-include/trims/devoid/w.png b/data/magic-modules.mse-include/trims/devoid/w.png new file mode 100644 index 0000000000..6068f47470 Binary files /dev/null and b/data/magic-modules.mse-include/trims/devoid/w.png differ diff --git a/data/magic.mse-game/add_cards_scripts b/data/magic.mse-game/add_cards_scripts index 4ef298ee92..088639ce19 100644 --- a/data/magic.mse-game/add_cards_scripts +++ b/data/magic.mse-game/add_cards_scripts @@ -1,4 +1,14 @@ - +add cards script: + name: &Meld Card + description: Adds and links a meld trio + script: + meld_catalyst := new_card([]) + meld_base := new_card([rule_text:"\n(Melds with LINKNAME.)"]) + meld_result := new_card([]) + add_link(meld_catalyst, selected_relation: "Meld Component", linked_card:meld_base, linked_relation: "Meld Component") + add_link(meld_catalyst, selected_relation: "Meld Catalyst", linked_card:meld_result, linked_relation: "Meld Result") + add_link(meld_base, selected_relation: "Meld Base", linked_card:meld_result, linked_relation: "Meld Result") + [ meld_catalyst, meld_base, meld_result ] add cards script: name: &Basic Lands description: Adds 5 basic lands to the set (Plains, Island, Swamp, Mountain, Forest) diff --git a/data/magic.mse-game/script b/data/magic.mse-game/script index cabf75a12b..d3ff037855 100644 --- a/data/magic.mse-game/script +++ b/data/magic.mse-game/script @@ -329,6 +329,45 @@ has_required_stylesheets := ) missing == 0 } + +##### Card Link Utility +### is this the front/back of a DFC? +is_linked_dfc := +{ + get_front_face(card) != nil or get_back_face(card) != nil +} +### is this the catalyst/base/result of a Meld? +is_linked_meld := +{ + length(get_cards_from_link(card, linked_relation:"Meld Result")) > 0 + or length(get_cards_from_link(card, linked_relation:"Meld Base")) > 0 +} +### does this take the card number from its front face instead of a new one? +is_linked_back_face := +{ + if get_front_face(card) != nil then true ## basic back face + else ( + meld_base := get_cards_from_link(card, linked_relation:"Meld Base").0 or else nil + if meld_base != nil and length(get_cards_from_link(meld_base, linked_relation:"Meld Base")) == 0 + then true ## safe meld + else false ## normal card or base/base meld, each face numbered individually + ) +} +### get the front face or meld base for this card for card numbering. fallback returns itself +get_linked_numbering_card := +{ + front := get_front_face(card) + linked := if front != nil then front + else get_cards_from_link(card, linked_relation:"Meld Base").0 or else card + linked +} +### given a number, get the name of the card at that link +get_linked_card_name := +{ + name := get_card_from_uid(card["linked_card_{input}"] or else "").name or else "" + if name == "" then "LINK{input}NAME" else name +} + ############################################################## For the user #### Remove card codes cc_filter := replace@(match:"^[CURMSL][WUBRGMZACL][0-9]+ ?[-—]? ?", replace:"") @@ -960,6 +999,8 @@ sort_name := set_filter := { if is_unsorted() then { is_unsorted() } + else if is_linked_back_face() then + { is_linked_back_face() } else if card.shape == "token" or card.shape == "emblem" then { card.shape == "token" or card.shape == "emblem" } else if card.shape == "rulestip" then @@ -971,9 +1012,9 @@ set_filter := { else if is_masterpiece() and not token_shape(card.shape) then { is_masterpiece() and not token_shape(card.shape) } else if set.sort_special_rarity != "separate numbering" then - { not is_unsorted() and not token_shape(card.shape) and not is_masterpiece() } + { not is_unsorted() and not is_linked_back_face() and not token_shape(card.shape) and not is_masterpiece() } else if card.rarity == "special" then - { not is_unsorted() and not token_shape(card.shape) and card.rarity == "special" and not is_masterpiece() } + { not is_unsorted() and not is_linked_back_face() and not token_shape(card.shape) and card.rarity == "special" and not is_masterpiece() } else { not is_unsorted() and not token_shape(card.shape) and card.rarity != "special" and not is_masterpiece() } } @@ -983,6 +1024,8 @@ set_filter := { set_filter_under_partition := { if is_unsorted() then { is_unsorted() } + else if is_linked_back_face() then + { is_linked_back_face() } else if card.shape == "token" or card.shape == "emblem" then { card.shape == "token" or card.shape == "emblem" and not over_partition() } else if card.shape == "rulestip" then @@ -994,9 +1037,9 @@ set_filter_under_partition := { else if is_masterpiece() and not token_shape(card.shape) then { is_masterpiece() and not token_shape(card.shape) and not over_partition() } else if set.sort_special_rarity != "separate numbering" then - { not is_unsorted() and not token_shape(card.shape) and not over_partition() and not is_masterpiece() } + { not is_unsorted() and not is_linked_back_face() and not token_shape(card.shape) and not over_partition() and not is_masterpiece() } else if card.rarity == "special" then - { not is_unsorted() and not token_shape(card.shape) and card.rarity == "special" and not over_partition() and not is_masterpiece() } + { not is_unsorted() and not is_linked_back_face() and not token_shape(card.shape) and card.rarity == "special" and not over_partition() and not is_masterpiece() } else { not is_unsorted() and not token_shape(card.shape) and card.rarity != "special" and not over_partition() and not is_masterpiece() } } @@ -1006,12 +1049,16 @@ card_number_offset := {pull_comma_array(set.card_number_offsets, cell:0, end:fal set_number_offset := {pull_comma_array(set.card_number_offsets, cell:1, end:false, default:0)} #### the raw numbers, these aren't typically used directly card_number := { + base := if is_linked_back_face() then card_index(card:get_linked_numbering_card()) else card_index() + base + 1 + to_number(card_number_offset()) +} +card_index := { position ( of: card in: set order_by: { partition_index() + rarity_sort() + sort_index() + sort_name(card.name) + sort_name(export_name())} filter: set_filter() - ) + 1 + to_number(card_number_offset()) + ) } card_count := { number_of_items(in: set, filter: set_filter_under_partition()) + to_number(set_number_offset()) @@ -1828,19 +1875,35 @@ text_filter := in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'|‘|-|—|/|​)", #### TODO: Allow any punctuation before replace: "" ) + - #### step 3b : expand shortcut word LEGENDNAME + #### step 3c : expand shortcut word LEGENDNAME replace@( match: "LEGENDNAME>?", in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'|‘|/|​)", #### TODO: Allow any punctuation before replace: "" ) + - #### step 3b : expand shortcut word AUTOREM + #### step 3d : expand shortcut word AUTOREM replace@( match: "AUTOREM>?", in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'|‘|/|​)", #### TODO: Allow any punctuation before replace: "" ) + - #### step 3bb : debug atom fields + #### step 3d : expand shortcut word LINK#NAME + replace@( + match: "LINK([1-4])NAME>?", + in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'|‘|/|​)", #### TODO: Allow any punctuation before + replace: "" + ) + + replace@( + match: "LINKNAME>?", + in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'|‘|/|​)", #### TODO: Allow any punctuation before + replace: "" + ) + + replace@( + match: "MELDNAME>?", + in_context: "(^|[[:space:]]|\\(|,|\\.|:|“|\"|'|‘|/|​)", #### TODO: Allow any punctuation before + replace: "" + ) + + #### step 3f : debug atom fields replace@( match: "([^<]+)\\1", replace: "" ) + - #### step 3c : fill in atom fields + #### step 3g : fill in atom fields tag_contents@( tag: "", contents: { "" + (if card_name=="" then "CARDNAME" else strip_card_codes(card_name, atom:true)) + "" } @@ -1887,6 +1950,12 @@ text_filter := tag: "", contents: { "" + (if inserts_values()[x-1] == "" then "INS"+x else inserts_values()[x-1]) + "" } ) + + for x from 1 to 4 do + out := tag_contents(out, + tag: "", + contents: { "" + get_linked_card_name(x) + "" } + ) out } + #### step 4 : explict non mana symbols @@ -3543,10 +3612,45 @@ typesymbol_type := { typesymbol_for(type) } ############ Default behavior (input is the value of the field) transform_symbol_default := { - if get_back_face(card) != nil then "front triangle" - else if get_front_face(card) != nil then "back triangle" - else "none" + front_face := get_front_face(card) + if front_face != nil + then transform_symbol_counterpart(front_face, fallback:"back triangle") + else if get_back_face(card) != nil + then "front triangle" + else "none" } +transform_symbol_counterpart := +{ + front := [ + "front triangle", + "day", + "moon", + "closed fan", + "sparker", + "modal front", + "comedy", + "custom symbol one", + "custom symbol three" + ] + back := [ + "back triangle", + "night", + "eldrazi", + "open fan", + "aetherprint", + "modal back", + "tragedy", + "custom symbol two", + "custom symbol four" + ] + shape := transform_symbol_shape(input.transformation) + front_pos := position(of:shape, in:front) + back_pos := position(of:shape, in:back) + if front_pos >= 0 then back[front_pos] + else if back_pos >= 0 then front[back_pos] + else if fallback != "" then fallback + else shape +}@(fallback:"") transform_symbol_default_position := { if get_front_face(card) != nil @@ -3723,6 +3827,14 @@ transform_symbol_is_right := and transform_symbol_default_position(input) == "right" ) } +transform_symbol_active_left := +{ + input != "" and not transform_symbol_is_empty(input) and not transform_symbol_is_right(input) +} +transform_symbol_active_right := +{ + input != "" and not transform_symbol_is_empty(input) and transform_symbol_is_right(input) +} transform_symbol_rim_has_bevel := { chosen(input, choice: "rim bevel")