mse version: 2.0.0 game: magic short name: Duplex full name: Multiple Part Cards icon: card-sample.png position hint: 903 installer group: magic/duplex cards version: 2024-05-30 depends on: package: magic.mse-game version: 2008-06-02 depends on: package: magic-mana-large.mse-symbol-font version: 2007-09-23 depends on: package: magic-mana-small.mse-symbol-font version: 2007-09-23 depends on: package: magic-future-common.mse-include version: 2007-09-23 depends on: package: magic-modules.mse-include version: 2024-10-01 card width: 375 card height: 523 card dpi: 150 ############################################################## Extra scripts init script: # Use the normal tap symbol mana_t := { if styling.tap_symbol == "old" then "old" else if styling.tap_symbol == "diagonal T" then "older" else "new" } # Use guild mana symbols? guild_mana := { styling.use_guild_mana_symbols } # What color should the shadows be? shadow_color := { if styling.font_color == "black" then "white" else "black"} # How transparent should the frame be? frame_alpha := { if styling.frame_opacity == "" then 0.5 else if styling.frame_opacity < 0 then 0 else if styling.frame_opacity > 100 then 1 else styling.frame_opacity / 100 } # How transparent should the dividers be? bar_alpha := { if styling.divider_opacity == "" then 0.5 else if styling.divider_opacity < 0 then 0 else if styling.divider_opacity > 100 then 1 else styling.divider_opacity / 100 } # Filter to commaes, so they can be counted to see if field is complete comma_count := filter_text@(match:",") # Left #one := split_text(match:",", input).0 # # Top #two := split_text(match:",", input).1 # # Width #three := split_text(match:",", input).2 # # Height #four := split_text(match:",", input).3 # # Angle #five := split_text(match:",", input).4 # # Font Size #six := split_text(match:",", input).5 # # Font Name #seven := split_text(match:",", input).6 # # Alignment #eight := split_text(match:",", input).7 # watermark_include := "/magic-modules.mse-include/watermarks" ############################################################## Set info fields set info style: symbol: variation: name: invertedcommon border radius: 0.10 fill type: solid fill color: rgb(255,255,255) border color: rgb(0,0,0) ############################################################## Extra style options styling field: type: text name: name style description: The styling instructions for the name field, formatted as "left,top,width,height,angle,font_size,font_name,". The text MUST end with a comma. The default values are "32,30,309,23,0,17,Matrix,". styling field: type: text name: casting cost style description: The styling instructions for the casting cost field, formatted as "left,top,width,height,angle,font_size,". The text MUST end with a comma. The default values are "32,31,309,23,0,14,". styling field: type: text name: type style description: The styling instructions for the type field, formatted as "left,top,width,height,angle,font_size,font_name,". The text MUST end with a comma. The default values are "35,298,308,20,0,14,Matrix,". styling field: type: text name: rarity style description: The styling instructions for the rarity field, formatted as "left,top,width,height,angle,". The text MUST end with a comma. The default values are "298,297,44,22,0,". styling field: type: text name: rules text style description: The styling instructions for the rules text field, formatted as "left,top,width,height,angle,font_size,font_name,alignment,". The text MUST end with a comma. The default values are "31,328,311,71,0,14,MPlantin,top left,". styling field: type: text name: flavor text style description: The styling instructions for the flavor text field, formatted as "left,top,width,height,angle,font_size,font_name,alignment,". The text MUST end with a comma. The default values are "31,399,311,71,0,14,MPlantin-Italic,top left,". styling field: type: text name: pt style description: The styling instructions for the P/T field, formatted as "left,top,width,height,angle,font_size,font_name,". The text MUST end with a comma. The default values are "284,466,60,28,0,17,ModMatrix,". styling field: type: text name: illustrator style description: The styling instructions for the illustrator field, formatted as "left,top,width,angle,". The text MUST end with a comma. The default values are "56,478,217,0,". styling field: type: text name: illustrator brush style description: The styling instructions for the illustrator brush field, formatted as "left,top,angle,". The text MUST end with a comma. The default values are "27,481,0,". styling field: type: text name: copyright style description: The styling instructions for the copyright field, formatted as "left,top,width,angle,". The text MUST end with a comma. The default values are "30,493,247,0,". styling field: type: text name: divider 1 style description: The styling instructions for the first divider bar, formatted as "left,top,width,height,angle,". The text MUST end with a comma. styling field: type: text name: divider 2 style description: The styling instructions for the second divider bar, formatted as "left,top,width,height,angle,". The text MUST end with a comma. styling field: type: choice name: font color description: Should the card's font be colored black or white? choice: black choice: white styling field: type: text name: frame opacity description: The opacity of the frame. 100 is no transparency, 0 is completely transparent. Default is 50. styling field: type: text name: divider opacity description: The opacity of the divider bars. 100 is no transparency, 0 is completely transparent. Default is 50. styling field: type: boolean name: use guild mana symbols description: Use the Ravnica guild symbols instead of the official half/half circles for hybrid mana. initial: no styling field: type: choice name: tap symbol description: What tap and untap symbols should be used on cards? initial: modern choice: modern choice: old choice: diagonal T styling field: type: package choice name: casting cost mana symbols match: magic-mana-*.mse-symbol-font initial: magic-mana-large.mse-symbol-font styling field: type: package choice name: text box mana symbols match: magic-mana-*.mse-symbol-font initial: magic-mana-small.mse-symbol-font styling field: type: boolean name: inverted common symbol description: Should the common rarity symbol be inverted, like in Coldsnap? initial: no styling field: type: package choice name: overlay description: Should there be an overlay applied, such as foil? match: magic-overlay-*.mse-include required: false styling style: use guild mana symbols: choice images: yes: /magic-mana-small.mse-symbol-font/mana_guild_rg.png no: /magic-mana-small.mse-symbol-font/mana_rg.png tap symbol: render style: both choice images: modern: /magic-mana-large.mse-symbol-font/mana_t.png old: /magic-mana-large.mse-symbol-font/mana_t_old.png diagonal T: /magic-mana-large.mse-symbol-font/mana_t_older.png inverted common symbol: choice images: no: { symbol_variation(symbol: set.symbol, variation: "common") } yes: { symbol_variation(symbol: set.symbol, variation: "invertedcommon") } ############################################################## Card fields include file: /magic-modules.mse-include/corners/card_fields card style: ############################# Background stuff card color: left: 0 top: 0 width: 375 height: 523 z index: 1 render style: image popup style: in place mask: border_mask.png image: { set_alpha("border.png", alpha: frame_alpha()) } ############################# Name line name: left: {if comma_count(styling.name_style) == ",,,,,,," then split_text(match:",", styling.name_style).0 else "32"} top: {if comma_count(styling.name_style) == ",,,,,,," then split_text(match:",", styling.name_style).1 else "30"} width: {if comma_count(styling.name_style) == ",,,,,,," then split_text(match:",", styling.name_style).2 else "309"} height: {if comma_count(styling.name_style) == ",,,,,,," then split_text(match:",", styling.name_style).3 else "23"} angle: {if comma_count(styling.name_style) == ",,,,,,," then split_text(match:",", styling.name_style).4 else "0"} alignment: top left z index: 1 font: name: {if comma_count(styling.name_style) == ",,,,,,," then split_text(match:",", styling.name_style).6 else "Matrix"} size: {if comma_count(styling.name_style) == ",,,,,,," then split_text(match:",", styling.name_style).5 else "17"} weight: bold color: {styling.font_color} shadow color: {shadow_color()} shadow displacement x: 2 shadow displacement y: 2 shadow blur: 2 casting cost: left: {if comma_count(styling.casting_cost_style) == ",,,,,," then split_text(match:",", styling.casting_cost_style).0 else "32"} top: {if comma_count(styling.casting_cost_style) == ",,,,,," then split_text(match:",", styling.casting_cost_style).1 else "31"} width: {if comma_count(styling.casting_cost_style) == ",,,,,," then split_text(match:",", styling.casting_cost_style).2 else "309"} height: {if comma_count(styling.casting_cost_style) == ",,,,,," then split_text(match:",", styling.casting_cost_style).3 else "23"} angle: {if comma_count(styling.casting_cost_style) == ",,,,,," then split_text(match:",", styling.casting_cost_style).4 else "0"} alignment: top right z index: 1 symbol font: name: { styling.casting_cost_mana_symbols } size: {if comma_count(styling.casting_cost_style) == ",,,,,," then split_text(match:",", styling.casting_cost_style).5 else "14"} alignment: middle right always symbol: true ############################# Image image: left: 0 top: 0 width: 375 height: 523 z index: 0 mask: image_mask.png ############################# Card type type: left: {if comma_count(styling.type_style) == ",,,,,,," then split_text(match:",", styling.type_style).0 else "35"} top: {if comma_count(styling.type_style) == ",,,,,,," then split_text(match:",", styling.type_style).1 else "298"} width: {if comma_count(styling.type_style) == ",,,,,,," then split_text(match:",", styling.type_style).2 else "308"} height: {if comma_count(styling.type_style) == ",,,,,,," then split_text(match:",", styling.type_style).3 else "20"} angle: {if comma_count(styling.type_style) == ",,,,,,," then split_text(match:",", styling.type_style).4 else "0"} alignment: top left z index: 1 font: name: {if comma_count(styling.type_style) == ",,,,,,," then split_text(match:",", styling.type_style).6 else "Matrix"} size: {if comma_count(styling.type_style) == ",,,,,,," then split_text(match:",", styling.type_style).5 else "14"} weight: bold color: {styling.font_color} shadow color: {shadow_color()} shadow displacement x: 2 shadow displacement y: 2 shadow blur: 2 rarity: left: {if comma_count(styling.rarity_style) == ",,,,," then split_text(match:",", styling.rarity_style).0 else "298"} top: {if comma_count(styling.rarity_style) == ",,,,," then split_text(match:",", styling.rarity_style).1 else "297"} width: {if comma_count(styling.rarity_style) == ",,,,," then split_text(match:",", styling.rarity_style).2 else "44"} height: {if comma_count(styling.rarity_style) == ",,,,," then split_text(match:",", styling.rarity_style).3 else "22"} angle: {if comma_count(styling.rarity_style) == ",,,,," then split_text(match:",", styling.rarity_style).4 else "0"} alignment: middle center z index: 1 render style: image include file: /magic-modules.mse-include/rarities/choice_images ############################# Text box rule text: left: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).0 else "31"} top: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).1 else "328"} width: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).2 else "311"} height: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).3 else "71"} angle: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).4 else "0"} alignment: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).7 else "top left"} z index: 1 font: name: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).6 else "MPlantin"} size: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).5 else "14"} color: {styling.font_color} shadow color: {shadow_color()} shadow displacement x: 2 shadow displacement y: 2 shadow blur: 2 symbol font: name: { styling.text_box_mana_symbols } size: {if comma_count(styling.rules_text_style) == ",,,,,,,," then split_text(match:",", styling.rules_text_style).5 else "14"} alignment: middle left line height hard: 1.2 line height line: 1.5 line height soft: 0.9 line height hard max: 1.3 line height line max: 1.6 flavor text: left: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).0 else "31"} top: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).1 else "399"} width: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).2 else "311"} height: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).3 else "71"} angle: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).4 else "0"} alignment: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).7 else "top left"} z index: 1 font: name: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).6 else "MPlantin-Italic"} size: {if comma_count(styling.flavor_text_style) == ",,,,,,,," then split_text(match:",", styling.flavor_text_style).5 else "14"} color: {styling.font_color} shadow color: {shadow_color()} shadow displacement x: 2 shadow displacement y: 2 shadow blur: 2 alignment: middle left line height hard: 1.2 line height line: 1.5 line height soft: 0.9 line height hard max: 1.3 line height line max: 1.6 ############################# PT pt: left: {if comma_count(styling.pt_style) == ",,,,,,," then split_text(match:",", styling.pt_style).0 else "284"} top: {if comma_count(styling.pt_style) == ",,,,,,," then split_text(match:",", styling.pt_style).1 else "466"} width: {if comma_count(styling.pt_style) == ",,,,,,," then split_text(match:",", styling.pt_style).2 else "60"} height: {if comma_count(styling.pt_style) == ",,,,,,," then split_text(match:",", styling.pt_style).3 else "28"} angle: {if comma_count(styling.pt_style) == ",,,,,,," then split_text(match:",", styling.pt_style).4 else "0"} alignment: top left z index: 1 font: name: {if comma_count(styling.pt_style) == ",,,,,,," then split_text(match:",", styling.pt_style).6 else "ModMatrix"} size: {if comma_count(styling.pt_style) == ",,,,,,," then split_text(match:",", styling.pt_style).5 else "17"} weight: bold color: {styling.font_color} shadow color: {shadow_color()} shadow displacement x: 2 shadow displacement y: 2 shadow blur: 2 ############################# Card sorting / numbering ############################# Copyright stuff illustrator: left: {if comma_count(styling.illustrator_style) == ",,,," then split_text(match:",", styling.illustrator_style).0 else "56"} top: {if comma_count(styling.illustrator_style) == ",,,," then split_text(match:",", styling.illustrator_style).1 else "478"} width: {if comma_count(styling.illustrator_style) == ",,,," then split_text(match:",", styling.illustrator_style).2 else "217"} height: 16 angle: {if comma_count(styling.illustrator_style) == ",,,," then split_text(match:",", styling.illustrator_style).3 else "0"} z index: 1 font: name: Matrix size: 10 weight: bold color: {styling.font_color} copyright line: left: {if comma_count(styling.copyright_style) == ",,,," then split_text(match:",", styling.copyright_style).0 else "30"} top: {if comma_count(styling.copyright_style) == ",,,," then split_text(match:",", styling.copyright_style).1 else "493"} width: {if comma_count(styling.copyright_style) == ",,,," then split_text(match:",", styling.copyright_style).2 else "247"} height: 12 angle: {if comma_count(styling.copyright_style) == ",,,," then split_text(match:",", styling.copyright_style).3 else "0"} z index: 1 font: name: MPlantin size: 6.5 color: {styling.font_color} ############################################################## Extra card fields extra card field: type: choice name: foil layer choice: foil save value: false editable: false extra card field: type: choice name: paintbrush script: styling.font_color save value: false editable: false extra card field: type: choice name: divider 1 script: "bar" save value: false editable: false extra card field: type: choice name: divider 2 script: "bar" save value: false editable: false extra card style: foil layer: left: 0 top : 0 width: 375 height: 523 z index: 1050 render style: image mask: overlay_mask.png image: {if styling.overlay == "" then nil else styling.overlay + "/overlay.png"} paintbrush: left: {if comma_count(styling.illustrator_brush_style) == ",,," then split_text(match:",", styling.illustrator_brush_style).0 else "27"} top: {if comma_count(styling.illustrator_brush_style) == ",,," then split_text(match:",", styling.illustrator_brush_style).1 else "481"} width: 27 height: 11 angle: {if comma_count(styling.illustrator_brush_style) == ",,," then split_text(match:",", styling.illustrator_brush_style).2 else "0"} z index: 1 render style: image choice images: black: /magic-future-common.mse-include/paintbrush_black.png white: /magic-future-common.mse-include/paintbrush_white.png divider 1: left: {if comma_count(styling.divider_1_style) == ",,,,," then split_text(match:",", styling.divider_1_style).0 else "0"} top: {if comma_count(styling.divider_1_style) == ",,,,," then split_text(match:",", styling.divider_1_style).1 else "0"} width: {if comma_count(styling.divider_1_style) == ",,,,," then split_text(match:",", styling.divider_1_style).2 else "0"} height: {if comma_count(styling.divider_1_style) == ",,,,," then split_text(match:",", styling.divider_1_style).3 else "0"} angle: {if comma_count(styling.divider_1_style) == ",,,,," then split_text(match:",", styling.divider_1_style).4 else "0"} z index: 1 render style: image image: { set_alpha("bar.png", alpha: bar_alpha()) } divider 2: left: {if comma_count(styling.divider_2_style) == ",,,,," then split_text(match:",", styling.divider_2_style).0 else "0"} top: {if comma_count(styling.divider_2_style) == ",,,,," then split_text(match:",", styling.divider_2_style).1 else "0"} width: {if comma_count(styling.divider_2_style) == ",,,,," then split_text(match:",", styling.divider_2_style).2 else "0"} height: {if comma_count(styling.divider_2_style) == ",,,,," then split_text(match:",", styling.divider_2_style).3 else "0"} angle: {if comma_count(styling.divider_2_style) == ",,,,," then split_text(match:",", styling.divider_2_style).4 else "0"} z index: 1 render style: image image: { set_alpha("bar.png", alpha: bar_alpha()) }