Commit 655ebe0d authored by pichoro's avatar pichoro

Changes to Magic:

Big keyword update.
Update to allow new flip card technology.
Update to allow 4-ability planeswalkers, textless lands, and levelers.
More statistics that are related to card type.
Custom subtype tracking for all card types.
Planeswalker types included.
Creature type updates.
New symbol variation for set symbol watermarks; more like what appears on real cards.
Updated card sorting.
parent ab8c46e1
mse version: 0.3.8 mse version: 0.3.8
full name: Magic The Gathering, card blend utilities full name: Magic The Gathering, card blend utilities
version: 2009-04-09 version: 2010-04-07
# This file doesn't do anything, other files in this directory can be included # This file doesn't do anything, other files in this directory can be included
# in game/style files: # in game/style files:
...@@ -9,4 +9,4 @@ version: 2009-04-09 ...@@ -9,4 +9,4 @@ version: 2009-04-09
# blend-scripts Defines card_hybrid, family of functions # blend-scripts Defines card_hybrid, family of functions
# Use in init script of style # Use in init script of style
# card-backgrounds Uses the blend scripts to make choice images for card backgrounds # card-backgrounds Uses the blend scripts to make choice images for card backgrounds
# Template names can be redefined # Template names can be redefined
\ No newline at end of file
...@@ -404,6 +404,128 @@ flip_pt_hybrid2 := [ ...@@ -404,6 +404,128 @@ flip_pt_hybrid2 := [
overlay: overlay_hybrid overlay: overlay_hybrid
] ]
########################################################################
# P/T boxes for leveler cards
########################################################################
leveler_pt_hybrid := [
radial: [
0: { template("c") }
1: { template(colors[0]) }
2: { template(colors[1]) }
3: { linear_blend(
image1: template(colors[1])
image2: template(colors[2])
x1: 0, y1: 0
x2: 0, y2: 1
)}
4: { template(colors[2]) }
5: { template(colors[2]) }
6: { template(colors[2]) }
7: { template(colors[4]) }
]
horizontal: horizontal_pt_hybrid
vertical: [
1: { template(colors[0]) }
2: { template(colors[1]) }
3: { linear_blend(
image1: template(colors[1])
image2: template(colors[2])
x1: 0, y1: 0
x2: 0, y2: 1
)}
4: { template(colors[2]) }
5: { template(colors[3]) }
6: { linear_blend(
image1: template(colors[3])
image2: template(colors[4])
x1: 0, y1: 0
x2: 0, y2: 0.25
)}
7: { template(colors[5]) }
]
overlay: overlay_hybrid
]
leveler_pt_hybrid2 := [
radial: [
0: { template("c") }
1: { template(colors[0]) }
2: { template(colors[1]) }
3: { template(colors[2]) }
4: { template(colors[2]) }
5: { template(colors[2]) }
6: { template(colors[2]) }
7: { template(colors[4]) }
]
horizontal: horizontal_pt_hybrid
vertical: [
1: { template(colors[0]) }
2: { template(colors[1]) }
3: { template(colors[2]) }
4: { linear_blend(
image1: template(colors[2])
image2: template(colors[3])
x1: 0, y1: 0
x2: 0, y2: 1
)}
5: { linear_blend(
image1: template(colors[3])
image2: template(colors[4])
x1: 0, y1: 0
x2: 0, y2: 0.75
)}
6: { template(colors[4]) }
7: { template(colors[5]) }
]
overlay: overlay_hybrid
]
leveler_pt_hybrid3 := [
radial: [
0: { template("c") }
1: { template(colors[0]) }
2: { template(colors[1]) }
3: { template(colors[2]) }
4: { template(colors[2]) }
5: { linear_blend(
image1: template(colors[2])
image2: template(colors[3])
x1: 0, y1: 0
x2: 0, y2: 1
)}
6: { linear_blend(
image1: template(colors[2])
image2: template(colors[3])
x1: 0, y1: 0
x2: 0, y2: 1
)}
7: { template(colors[4]) }
]
horizontal: horizontal_pt_hybrid
vertical: [
1: { template(colors[0]) }
2: { template(colors[1]) }
3: { template(colors[2]) }
4: { template(colors[3]) }
5: { linear_blend(
image1: template(colors[3])
image2: template(colors[4])
x1: 0, y1: 0
x2: 0, y2: 0.5
)}
6: { linear_blend(
image1: template(colors[4])
image2: template(colors[5])
x1: 0, y1: 0
x2: 0, y2: 0.5
)}
7: { template(colors[5]) }
]
overlay: overlay_hybrid
]
######################################################################## ########################################################################
# Textbox and typeline for FPM templates and Futureshifts # Textbox and typeline for FPM templates and Futureshifts
######################################################################## ########################################################################
...@@ -554,9 +676,21 @@ card_background := { color_background(type:"card", base_hybrid:card_hybrid) ...@@ -554,9 +676,21 @@ card_background := { color_background(type:"card", base_hybrid:card_hybrid)
card_ptbox := { color_background(type:"pt", base_hybrid:pt_hybrid) } card_ptbox := { color_background(type:"pt", base_hybrid:pt_hybrid) }
flip_ptbox := { color_background(type:"pt", base_hybrid:flip_pt_hybrid) } flip_ptbox := { color_background(type:"pt", base_hybrid:flip_pt_hybrid) }
flip_ptbox2 := { color_background(type:"pt2", base_hybrid:flip_pt_hybrid2) } flip_ptbox2 := { color_background(type:"pt2", base_hybrid:flip_pt_hybrid2) }
leveler_ptbox := { color_background(type:"pt", base_hybrid:leveler_pt_hybrid) }
leveler_ptbox2 := { color_background(type:"pt", base_hybrid:leveler_pt_hybrid2) }
leveler_ptbox3 := { color_background(type:"pt", base_hybrid:leveler_pt_hybrid3) }
card_textbox := { color_background(type:"textbox", base_hybrid:textbox_hybrid) } card_textbox := { color_background(type:"textbox", base_hybrid:textbox_hybrid) }
card_typeline := { color_background(type:"typeline", base_hybrid:typeline_hybrid) } card_typeline := { color_background(type:"typeline", base_hybrid:typeline_hybrid) }
flip_background := {
linear_blend(
image1: card_background(top)
image2: card_background(bottom)
x1: 0, y1: 0.4
x2: 0, y2: 0.6
)
}
######################################################################## ########################################################################
# Font colors # Font colors
######################################################################## ########################################################################
......
mse version: 0.3.6 mse version: 0.3.8
full name: Magic The Gathering, textbox watermarks full name: Magic The Gathering, textbox watermarks
version: 2008-05-21 version: 2009-08-28
# This file doesn't do anything, other files in this directory can be included # This file doesn't do anything, other files in this directory can be included
# in game/style files: # in game/style files:
# watermarks Includes references to the watermark images, to be used in a style file # watermarks Includes references to the watermark images, to be used in a style file
\ No newline at end of file
...@@ -63,7 +63,7 @@ choice images: ...@@ -63,7 +63,7 @@ choice images:
#symbol_variation(symbol: set.symbol, variation: "common") #symbol_variation(symbol: set.symbol, variation: "common")
drop_shadow(offset_x: -0.01, offset_y: 0.03, blur_radius: 0.02, alpha: 1, color: rgb(0,0,0), drop_shadow(offset_x: -0.01, offset_y: 0.03, blur_radius: 0.02, alpha: 1, color: rgb(0,0,0),
enlarge(border_size: 0.03, enlarge(border_size: 0.03,
symbol_variation(symbol: set.symbol, border_radius: 0, fill_color:rgb(255,255,255), border_color:rgb(0,0,0)) symbol_variation(symbol: set.symbol, variation: "watermark")
) )
) )
) )
......
...@@ -63,7 +63,7 @@ choice images: ...@@ -63,7 +63,7 @@ choice images:
#symbol_variation(symbol: set.symbol, variation: "common") #symbol_variation(symbol: set.symbol, variation: "common")
drop_shadow(offset_x: -0.01, offset_y: 0.03, blur_radius: 0.02, alpha: 1, color: rgb(0,0,0), drop_shadow(offset_x: -0.01, offset_y: 0.03, blur_radius: 0.02, alpha: 1, color: rgb(0,0,0),
enlarge(border_size: 0.03, enlarge(border_size: 0.03,
symbol_variation(symbol: set.symbol, border_radius: 0, fill_color:rgb(255,255,255), border_color:rgb(0,0,0)) symbol_variation(symbol: set.symbol, variation: "watermark")
) )
) )
) )
......
 ############################################################## Card fields
############################################################## Card fields
############################# Automatic fields ############################# Automatic fields
...@@ -17,6 +16,7 @@ card field: ...@@ -17,6 +16,7 @@ card field:
choice: planeswalker choice: planeswalker
choice: shifted choice: shifted
choice: rulestip choice: rulestip
choice: leveler
script: script:
stylesheet # indicate that this value should be updated when the stylesheet changes stylesheet # indicate that this value should be updated when the stylesheet changes
card_shape() # determined by the style card_shape() # determined by the style
...@@ -32,7 +32,6 @@ card field: ...@@ -32,7 +32,6 @@ card field:
card list width: 150 card list width: 150
description: The name of the card description: The name of the card
script: if contains(card.shape, match:"split") then card.name + " // " + card.name_2 else card.name script: if contains(card.shape, match:"split") then card.name + " // " + card.name_2 else card.name
############################# Background stuff ############################# Background stuff
card field: card field:
type: color type: color
...@@ -90,7 +89,7 @@ card field: ...@@ -90,7 +89,7 @@ card field:
name: reversed name: reversed
enabled: { card_color_color_count(card.card_color) >= 2 and not chosen(choice:"overlay",card.card_color) } enabled: { card_color_color_count(card.card_color) >= 2 and not chosen(choice:"overlay",card.card_color) }
script: card_color_filter(value) script: card_color_filter(value)
default: card_color(casting_cost: card.casting_cost, rules_text: card.rule_text, type: card.super_type, watermark: card.watermark, card_name: card.name) default: card_color(casting_cost: card.casting_cost, rules_text: card.rule_text, type: card.super_type, watermark: card.watermark, card_name: card.name, default: "colorless")
show statistics: false show statistics: false
description: The frame of the card, used to indicate card color. description: The frame of the card, used to indicate card color.
...@@ -153,6 +152,7 @@ card field: ...@@ -153,6 +152,7 @@ card field:
icon: stats/card_type.png icon: stats/card_type.png
position hint: 30 position hint: 30
script: super_type_filter(value) script: super_type_filter(value)
show statistics: false
card field: card field:
type: text type: text
name: sub type name: sub type
...@@ -265,6 +265,17 @@ card field: ...@@ -265,6 +265,17 @@ card field:
show statistics: false show statistics: false
description: The loyalty cost for the fifth ability of a planeswalker description: The loyalty cost for the fifth ability of a planeswalker
default: card.toughness_2 #For back compatibility with past templates. Take out a couple versions after 0.3.8 default: card.toughness_2 #For back compatibility with past templates. Take out a couple versions after 0.3.8
############################# Levels
card field:
type: text
name: level 1
description: The first level of a creature
show statistics: false
card field:
type: text
name: level 2
description: The second level of a creature
show statistics: false
############################# PT ############################# PT
card field: card field:
type: text type: text
...@@ -382,7 +393,7 @@ card field: ...@@ -382,7 +393,7 @@ card field:
name: reversed name: reversed
enabled: { card_color_color_count(card.card_color) >= 2 and not chosen(choice:"overlay",card.card_color_2) } enabled: { card_color_color_count(card.card_color) >= 2 and not chosen(choice:"overlay",card.card_color_2) }
script: card_color_filter(value) script: card_color_filter(value)
default: card_color(casting_cost: card.casting_cost_2, type: card.super_type_2, rules_text: card.rule_text_2, watermark: card.watermark_2, card_name: card.name_2) default: card_color(casting_cost: card.casting_cost_2, type: card.super_type_2, rules_text: card.rule_text_2, watermark: card.watermark_2, card_name: card.name_2, default: card.card_color)
show statistics: false show statistics: false
description: The frame of a card description: The frame of a card
card field: card field:
...@@ -462,6 +473,13 @@ card field: ...@@ -462,6 +473,13 @@ card field:
show statistics: false show statistics: false
multi line: true multi line: true
description: The rules text of the card description: The rules text of the card
card field:
type: text
name: rule text 3
script: text_filter(input: value, card_name: card.name)
show statistics: false
multi line: true
description: The rules text of the card
card field: card field:
type: text type: text
name: flavor text 2 name: flavor text 2
...@@ -519,6 +537,35 @@ card field: ...@@ -519,6 +537,35 @@ card field:
card list name: P/T2 card list name: P/T2
show statistics: false show statistics: false
description: Power/Toughness of a creature description: Power/Toughness of a creature
card field:
type: text
name: power 3
icon: stats/power.png
show statistics: false
script: type_over_pt(value)
description: The power of a creature
card field:
type: text
name: toughness 3
icon: stats/toughness.png
show statistics: false
description: The toughness of a creature
card field:
type: text
name: pt 3
save value: false
script:
combined_editor(
field1: card.power_3,
separator: language().pt_separator,
field2: card.toughness_3,
soft_before_empty: true,
hide_when_empty: true
)
card list width: 50
card list name: P/T3
show statistics: false
description: Power/Toughness of a creature
card field: card field:
type: text type: text
name: illustrator 2 name: illustrator 2
......
...@@ -5,8 +5,8 @@ installer group: magic/game files ...@@ -5,8 +5,8 @@ installer group: magic/game files
icon: card-back.png icon: card-back.png
position hint: 01 position hint: 01
version: 2009-08-10 version: 2010-06-11
depends on: magic-blends.mse-include 2007-09-23 depends on: magic-blends.mse-include 2010-04-07
depends on: magic-watermarks.mse-include 2007-09-23 depends on: magic-watermarks.mse-include 2007-09-23
############################################################## The script ############################################################## The script
...@@ -15,6 +15,8 @@ init script: include file: script ...@@ -15,6 +15,8 @@ init script: include file: script
############################################################## Lots of lists ############################################################## Lots of lists
################## There be dragons here. -Liosan ##########################
include file: card_fields include file: card_fields
include file: set_fields include file: set_fields
include file: statistics include file: statistics
......
...@@ -127,7 +127,7 @@ keyword parameter type: ...@@ -127,7 +127,7 @@ keyword parameter type:
keyword parameter type: keyword parameter type:
name: a name: a
match: [ ]*|[ ][an?]* match: [an?]*
############################# All Magic keywords ############################# All Magic keywords
# By JrEye and Neko_Asakami, Updated by Pichoro and Buttock1234 # By JrEye and Neko_Asakami, Updated by Pichoro and Buttock1234
...@@ -266,7 +266,7 @@ keyword: ...@@ -266,7 +266,7 @@ keyword:
keyword: Amplify keyword: Amplify
match: Amplify <atom-param>number</atom-param> match: Amplify <atom-param>number</atom-param>
mode: expert mode: expert
reminder: As this card enters the battlefield, put {english_number_a(param1)} +1/+1 counter(s) on it for each {separate_words(spacer: " and/or ", card.sub_type)} card you reveal in your hand. reminder: As this creature enters the battlefield, put {english_number_a(param1)} +1/+1 counter(s) on it for each {separate_words(spacer: " and/or ", card.sub_type)} card you reveal in your hand.
keyword: keyword:
keyword: Double strike keyword: Double strike
match: Double strike match: Double strike
...@@ -380,7 +380,7 @@ keyword: ...@@ -380,7 +380,7 @@ keyword:
keyword: Ninjutsu keyword: Ninjutsu
match: Ninjutsu <atom-param>cost</atom-param> match: Ninjutsu <atom-param>cost</atom-param>
mode: expert mode: expert
reminder: {param1}, Return an unblocked attacker you control to hand: This card enters the battlefield from your hand tapped and attacking. reminder: {param1}, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand tapped and attacking.
keyword: keyword:
keyword: Epic keyword: Epic
match: Epic match: Epic
...@@ -405,7 +405,7 @@ keyword: ...@@ -405,7 +405,7 @@ keyword:
keyword: Transmute keyword: Transmute
match: Transmute <atom-param>cost</atom-param> match: Transmute <atom-param>cost</atom-param>
mode: expert mode: expert
reminder: {param1}, Discard this card: Search your library for a card with the same converted mana cost as this card, reveal it, and put it into your hand. Then shuffle your library. Activate only as a sorcery. reminder: {param1}, Discard this card: Search your library for a card with the same converted mana cost as this card, reveal it, and put it into your hand. Then shuffle your library. Transmute only as a sorcery.
keyword: keyword:
keyword: Dredge keyword: Dredge
match: Dredge <atom-param>number</atom-param> match: Dredge <atom-param>number</atom-param>
...@@ -480,7 +480,7 @@ keyword: ...@@ -480,7 +480,7 @@ keyword:
keyword: Deathtouch keyword: Deathtouch
match: Deathtouch match: Deathtouch
mode: core mode: core
reminder: Creatures dealt damage by this creature are destroyed. You can divide this creature’s combat damage among any of the creatures blocking or blocked by it. reminder: Any amount of damage this deals to a creature is enough to destroy it.
keyword: keyword:
keyword: Reach keyword: Reach
match: Reach match: Reach
...@@ -506,7 +506,7 @@ keyword: ...@@ -506,7 +506,7 @@ keyword:
match: Fateseal <atom-param>number</atom-param> match: Fateseal <atom-param>number</atom-param>
mode: action mode: action
reminder: reminder:
Look at the top { To fateseal {param1}, look at the top {
if param1.value==1 then "card of an opponent’s library, then you may put it on the bottom of that player’s library." if param1.value==1 then "card of an opponent’s library, then you may put it on the bottom of that player’s library."
else "{english_number(param1)} cards of an opponent’s library, then put any number of them on the bottom of that player’s library and the rest on top in any order." else "{english_number(param1)} cards of an opponent’s library, then put any number of them on the bottom of that player’s library and the rest on top in any order."
} }
...@@ -514,7 +514,7 @@ keyword: ...@@ -514,7 +514,7 @@ keyword:
keyword: Transfigure keyword: Transfigure
match: Transfigure <atom-param>cost</atom-param> match: Transfigure <atom-param>cost</atom-param>
mode: expert mode: expert
reminder: {param1}, Sacrifice this creature: Search your library for a creature card with the same converted mana cost as this creature and have that card enter the battlefield. Then shuffle your library. Activate only as a sorcery. reminder: {param1}, Sacrifice this creature: Search your library for a creature card with the same converted mana cost as this creature and put that card onto the battlefield. Then shuffle your library. Transfigure only as a sorcery.
keyword: keyword:
keyword: Aura swap keyword: Aura swap
match: Aura swap <atom-param>cost</atom-param> match: Aura swap <atom-param>cost</atom-param>
...@@ -544,7 +544,7 @@ keyword: ...@@ -544,7 +544,7 @@ keyword:
keyword: Fortify keyword: Fortify
match: Fortify <atom-param>cost</atom-param> match: Fortify <atom-param>cost</atom-param>
mode: expert mode: expert
reminder: {param1}: Attach to target land you control. Fortify only as a sorcery. This card enters the battlefield unattached and stays in the battlefield if the land exits the battlefield. reminder: {param1}: Attach to target land you control. Fortify only as a sorcery. This card enters the battlefield unattached and stays on the battlefield if the land leaves.
keyword: keyword:
keyword: Grandeur keyword: Grandeur
match: Grandeur match: Grandeur
...@@ -557,9 +557,9 @@ keyword: ...@@ -557,9 +557,9 @@ keyword:
reminder: You may cast this spell for its evoke cost. If you do, it’s sacrificed when it enters the battlefield. reminder: You may cast this spell for its evoke cost. If you do, it’s sacrificed when it enters the battlefield.
keyword: keyword:
keyword: Champion keyword: Champion
match: Champion<atom-param>a</atom-param><atom-param>name</atom-param> match: Champion <atom-param>a</atom-param> <atom-param>name</atom-param>
mode: expert mode: expert
reminder: When this enters the battlefield, sacrifice it unless you exile another{param2} you control. When this exits the battlefield, return that card to the battlefield. reminder: When this enters the battlefield, sacrifice it unless you exile another {param2} you control. When this leaves the battlefield, return that card to the battlefield.
keyword: keyword:
keyword: Clash keyword: Clash
match: Clash match: Clash
...@@ -619,7 +619,7 @@ keyword: ...@@ -619,7 +619,7 @@ keyword:
keyword: Unearth keyword: Unearth
match: Unearth <atom-param>cost</atom-param> match: Unearth <atom-param>cost</atom-param>
mode: expert mode: expert
reminder: {param1}: Return this card from your graveyard to the battlefield. {if has_pt() then "It gains haste. " else "" }Exile it at the beginning of the end step or if it would exit the battlefield. Unearth only as a sorcery. reminder: {param1}: Return this card from your graveyard to the battlefield. {if has_pt() then "It gains haste. " else "" }Exile it at the beginning of the end step or if it would leave the battlefield. Unearth only as a sorcery.
keyword: keyword:
keyword: Devour keyword: Devour
match: Devour <atom-param>number</atom-param> match: Devour <atom-param>number</atom-param>
...@@ -645,3 +645,33 @@ keyword: ...@@ -645,3 +645,33 @@ keyword:
match: Intimidate match: Intimidate
mode: core mode: core
reminder: This creature can’t be blocked except by artifact creatures and/or creatures that share a color with it. reminder: This creature can’t be blocked except by artifact creatures and/or creatures that share a color with it.
keyword:
keyword: Landfall
match: Landfall
mode: pseudo
rules: Landfall — Whenever a land enters the battlefield under your control, [effect].
keyword:
keyword: Multikicker
match: Multikicker <atom-param>cost</atom-param>
mode: expert
reminder: You may {for_mana_costs(add:"pay an additional ", param1)} any number of times as you cast this spell.
keyword:
keyword: Annihilator
match: Annihilator <atom-param>number</atom-param>
mode: expert
reminder: Whenever this creature attacks, defending player sacrifices {english_number_a(param1)} permanent(s).
keyword:
keyword: Rebound
match: Rebound
mode: expert
reminder: If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.
keyword:
keyword: Totem armor
match: Totem armor
mode: expert
reminder: If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.
keyword:
keyword: Level up
match: Level up <atom-param>cost</atom-param>
mode: expert
reminder: {param1}: Put a level counter on this. Level up only as a sorcery.
...@@ -14,6 +14,7 @@ languages := [ ...@@ -14,6 +14,7 @@ languages := [
is_land : match@(match: "(?i)Land") is_land : match@(match: "(?i)Land")
is_enchantment : match@(match: "(?i)Enchantment") is_enchantment : match@(match: "(?i)Enchantment")
is_spell : match@(match: "(?i)Instant|Sorcery") is_spell : match@(match: "(?i)Instant|Sorcery")
is_planeswalker : match@(match: "(?i)Planeswalker")
], ],
Français: [ Français: [
...@@ -28,6 +29,7 @@ languages := [ ...@@ -28,6 +29,7 @@ languages := [
is_land : match@(match: "(?i)Land") is_land : match@(match: "(?i)Land")
is_enchantment : match@(match: "(?i)Enchantment") is_enchantment : match@(match: "(?i)Enchantment")
is_spell : match@(match: "(?i)Instant|Sorcery") is_spell : match@(match: "(?i)Instant|Sorcery")
is_planeswalker : match@(match: "(?i)Planeswalker")
] ]
] ]
......
 ############################################################## Localization
############################################################## Localization
include file: language include file: language
...@@ -153,6 +152,7 @@ card_color := { ...@@ -153,6 +152,7 @@ card_color := {
mana_color := mana_to_color(colors: color_filter(casting_cost), hybrid: color_filterH(casting_cost)) mana_color := mana_to_color(colors: color_filter(casting_cost), hybrid: color_filterH(casting_cost))
if mana_color == "colorless" and is_land (type) then land_to_color(watermark) if mana_color == "colorless" and is_land (type) then land_to_color(watermark)
else if mana_color == "colorless" and is_artifact(type) then "artifact" else if mana_color == "colorless" and is_artifact(type) then "artifact"
else if mana_color == "colorless" and contains(card.shape, match:"flip") then default
else mana_color else mana_color
) )
else text_color else text_color
...@@ -206,72 +206,75 @@ is_multicolor := { chosen(choice: "multicolor") and input != "artifact, multicol ...@@ -206,72 +206,75 @@ is_multicolor := { chosen(choice: "multicolor") and input != "artifact, multicol
is_null_cost := { input == "" or input == "0" } is_null_cost := { input == "" or input == "0" }
is_hybrid_cost := { contains(card.casting_cost, match: "W/") or contains(card.casting_cost, match: "U/") or contains(card.casting_cost, match: "B/") or contains(card.casting_cost, match: "R/") or contains(card.casting_cost, match: "G/") } is_hybrid_cost := { contains(card.casting_cost, match: "W/") or contains(card.casting_cost, match: "U/") or contains(card.casting_cost, match: "B/") or contains(card.casting_cost, match: "R/") or contains(card.casting_cost, match: "G/") }
basic_land_sort := { basic_land_sort := {
if contains(card.name, match:"Plains") then "LB" # Plains if contains(card.name, match:"Plains") then "MB" # Plains
else if contains(card.name, match:"Island") then "LC" # Islands else if contains(card.name, match:"Island") then "MC" # Islands
else if contains(card.name, match:"Swamp") then "LD" # Swamps else if contains(card.name, match:"Swamp") then "MD" # Swamps
else if contains(card.name, match:"Mountain") then "LE" # Mountains else if contains(card.name, match:"Mountain") then "ME" # Mountains
else if contains(card.name, match:"Forest") then "LF" # Forests else if contains(card.name, match:"Forest") then "MF" # Forests
else "LA" # other basic lands else "MA" # other basic lands
} }
hybrid_color_pair_sort := { hybrid_color_pair_sort := {
colors := sort_text(casting_cost, order: "<WUBRG>")
if colors = "WU" then "HA"
else if colors = "UB" then "HB"
else if colors = "BR" then "HC"
else if colors = "RG" then "HD"
else if colors = "WG" then "HE"
else if colors = "WB" then "HF"
else if colors = "UR" then "HG"
else if colors = "BG" then "HH"
else if colors = "WR" then "HI"
else if colors = "UG" then "HJ"
else "HK"
}
multi_color_pair_sort := {
colors := sort_text(casting_cost, order: "<WUBRG>") colors := sort_text(casting_cost, order: "<WUBRG>")
if colors = "WU" then "GA" if colors = "WU" then "GA"
else if colors = "UB" then "GB" else if colors = "UB" then "GB"
else if colors = "BR" then "GC" else if colors = "BR" then "GC"
else if colors = "RG" then "GD" else if colors = "RG" then "GD"
else if colors = "GW" then "GE" else if colors = "WG" then "GE"
else if colors = "WB" then "GF" else if colors = "WB" then "GF"
else if colors = "UR" then "GG" else if colors = "UR" then "GG"
else if colors = "BG" then "GH" else if colors = "BG" then "GH"
else if colors = "RW" then "GI" else if colors = "WR" then "GI"
else if colors = "GU" then "GJ" else if colors = "UG" then "GJ"
else if contains(card.casting_cost, match:"/") then "GL"
else "GK" else "GK"
} }
multi_color_pair_sort := {
colors := sort_text(casting_cost, order: "<WUBRG>")
if colors = "WU" then "FA"
else if colors = "UB" then "FB"
else if colors = "BR" then "FC"
else if colors = "RG" then "FD"
else if colors = "GW" then "FE"
else if colors = "WB" then "FF"
else if colors = "UR" then "FG"
else if colors = "BG" then "FH"
else if colors = "RW" then "FI"
else if colors = "GU" then "FJ"
else if contains(card.casting_cost, match:"/") then "FL"
else "FK"
}
# A code for the color of the card # A code for the color of the card
color_of_card := { color_of_card := {
card_color := card.card_color card_color := card.card_color
casting_cost := card.casting_cost casting_cost := card.casting_cost
type := card.super_type
if card.shape == "split" and if card.shape == "split" and
card_color != card.card_color_2 then "H" # Diff Color Splits card_color != card.card_color_2 then "I" # Diff Color Splits
else if chosen(choice: "land", card_color) then ( else if chosen(choice: "land", card_color) then ( # Lands
if card.rarity != "basic land" then "K" # Nonbasic Land if card.rarity != "basic land" then "L" # Nonbasic Land
else basic_land_sort() else basic_land_sort() # Basic Land
) else if is_null_cost(casting_cost) then ( ) else if is_null_cost(casting_cost) then ( # Non-Land Cards with no or zero costs.
if chosen(choice: "hybrid", card_color) then "GK" # Hybrids if chosen(choice: "colorless", card_color) then "A" # Clear Colorless
else if is_multicolor(card_color) then "F" # Multicolor else if chosen(choice: "hybrid", card_color) then "HK" # Hybrids
else if chosen(choice:"white", card_color) then "A" # White else if is_multicolor(card_color) then "GK" # Multicolor
else if chosen(choice:"blue", card_color) then "B" # Blue else if chosen(choice:"white", card_color) then "B" # White
else if chosen(choice:"black", card_color) then "C" # Black else if chosen(choice:"blue", card_color) then "C" # Blue
else if chosen(choice:"red", card_color) then "D" # Red else if chosen(choice:"black", card_color) then "D" # Black
else if chosen(choice:"green", card_color) then "E" # Green else if chosen(choice:"red", card_color) then "E" # Red
else "I" # Colorless / Artifact else if chosen(choice:"green", card_color) then "F" # Green
else "J" # Artifact
) else ( ) else (
# use the casting cost # Cards with costs.
colors := sort_text(casting_cost, order: "<WUBRG>") colors := sort_text(casting_cost, order: "<WUBRG>")
if colors == "" then "I" # Colorless / Artifact if colors == "" and contains(type, match:"Artifact") then "J" # Artifact
else if colors == "W" then "A" # White else if colors == "" then "A" # Clear Colorless
else if colors == "U" then "B" # Blue else if colors == "W" then "B" # White
else if colors == "B" then "C" # Black else if colors == "U" then "C" # Blue
else if colors == "R" then "D" # Red else if colors == "B" then "D" # Black
else if colors == "G" then "E" # Green else if colors == "R" then "E" # Red
else if is_hybrid_cost() then hybrid_color_pair_sort() #Hybrid (by pairs) else if colors == "G" then "F" # Green
else if contains(casting_cost, match:"/") and contains(card_color, match:"artifact") then "I" # Colorless/Artifact else if is_hybrid_cost() then hybrid_color_pair_sort() # Hybrid (by pairs)
else multi_color_pair_sort() # Multicolor (by pairs) else if contains(casting_cost, match:"/") and contains(type, match:"Artifact") then "I" # Hybrid Artifacts
else multi_color_pair_sort() # Multicolor (by pairs)
) )
} }
...@@ -455,7 +458,7 @@ text_filter := ...@@ -455,7 +458,7 @@ text_filter :=
replace: {"<sym>" + mana_filter_t() + "</sym>"} ) + replace: {"<sym>" + mana_filter_t() + "</sym>"} ) +
# step 6 : curly quotes # step 6 : curly quotes
curly_quotes + curly_quotes +
# step 7 : ??? # step 7 : italicize text in parenthesis
replace@( replace@(
match: "[(]([^)\n]|[(][^)\n]*[)])*[)]?", match: "[(]([^)\n]|[(][^)\n]*[)])*[)]?",
in_context: "(^|[[:space:]])<match>|<atom-keyword><match></", in_context: "(^|[[:space:]])<match>|<atom-keyword><match></",
...@@ -516,6 +519,7 @@ sub_type_filter := { ...@@ -516,6 +519,7 @@ sub_type_filter := {
else if lang.is_artifact(type) then "artifact" else if lang.is_artifact(type) then "artifact"
else if lang.is_enchantment(type) then "enchantment" else if lang.is_enchantment(type) then "enchantment"
else if lang.is_spell(type) then "spell" else if lang.is_spell(type) then "spell"
else if lang.is_planeswalker(type) then "planeswalker"
if list_type_rest != "" then ( if list_type_rest != "" then (
if lang.is_creature(type) or lang.is_tribal(type) then ( if lang.is_creature(type) or lang.is_tribal(type) then (
list_type_first := "race" list_type_first := "race"
...@@ -618,3 +622,11 @@ primary_card_color := { ...@@ -618,3 +622,11 @@ primary_card_color := {
word_count := break_text@(match:"[^[:space:]]+") + length word_count := break_text@(match:"[^[:space:]]+") + length
line_count := split_text@(match:"\n+",include_empty:false) + length line_count := split_text@(match:"\n+",include_empty:false) + length
#Remove supertypes or types to look at parts of the super_type field by themselves.
remove_supertype := replace@(match: "(Legendary|Basic|Snow|World|Tribal|Token)", replace: "")+
replace@(match: "^[ ]", replace: "")+
replace@(match: "[ ]$", replace: "")
remove_type := replace@(match: "(Artifact|Creature|Enchantment|Instant|Land|Planeswalker|Sorcery)", replace: "")+
replace@(match: "^[ ]", replace: "")+
replace@(match: "[ ]$", replace: "")
...@@ -137,6 +137,12 @@ default set style: ...@@ -137,6 +137,12 @@ default set style:
fill color 2: rgb(58,7,80) fill color 2: rgb(58,7,80)
border color 1: rgb(255,255,255) border color 1: rgb(255,255,255)
border color 2: rgb(255,255,255) border color 2: rgb(255,255,255)
variation:
name: watermark
border radius: 0.10
fill type: solid
fill color: rgb(255,255,255)
border color: rgba(0,0,0,0)
automatic reminder text: automatic reminder text:
render style: checklist render style: checklist
direction: vertical direction: vertical
......
...@@ -42,6 +42,59 @@ statistics dimension: ...@@ -42,6 +42,59 @@ statistics dimension:
numeric: true numeric: true
icon: stats/colored_casting_cost.png icon: stats/colored_casting_cost.png
statistics dimension:
name: supertype
position hint: 27
icon: stats/card_type.png
description: The card's supertype, not including types
script: remove_type(card.super_type)
statistics dimension:
name: type
position hint: 28
icon: stats/card_type.png
description: The card's type, not including supertypes
script: remove_supertype(card.super_type)
statistics dimension:
name: combined type
position hint: 29
icon: stats/card_type.png
description: The traditional supertype statistic, with no filtering
script: card.super_type
statistics dimension:
name: perm/non-perm
position hint: 30
icon: stats/card_type.png
description: Is the card a creature, non-creature permanent, or nonpermanent?
script:
if is_creature(card.super_type) then "creature"
else if is_spell(card.super_type) then "nonpermanent"
else if is_artifact(card.super_type) or is_enchantment(card.super_type) or is_land(card.super_type) or contains(card.super_type, match:"Planeswalker") then "permanent"
else "unknown"
statistics dimension:
name: race
position hint: 32
icon: stats/creature_race.png
description: Race of creatures and tribal cards
script:
if is_creature(card.super_type) or is_tribal(card.super_type) then
only_first(card.sub_type)
show empty: false
statistics dimension:
name: creature class
position hint: 33
icon: stats/creature_class.png
description: Class of creature cards
script:
if is_creature(card.super_type) then
space_to_comma(trim(remove_tags(only_next(card.sub_type))))
show empty: false
split list: true
statistics dimension: statistics dimension:
position hint: 50 position hint: 50
name: power name: power
...@@ -56,20 +109,6 @@ statistics dimension: ...@@ -56,20 +109,6 @@ statistics dimension:
numeric: true numeric: true
icon: stats/toughness.png icon: stats/toughness.png
statistics dimension:
name: keywords
position hint: 1000
script: keyword_usage(unique:true)
show empty: false
split list: true
icon: stats/keywords.png
statistics dimension:
name: style
position hint: 1001
script: stylesheet.short_name
icon: stats/stylesheet.png
statistics dimension: statistics dimension:
name: text length (words) name: text length (words)
position hint: 100 position hint: 100
...@@ -86,25 +125,18 @@ statistics dimension: ...@@ -86,25 +125,18 @@ statistics dimension:
icon: stats/text_length.png icon: stats/text_length.png
statistics dimension: statistics dimension:
name: race name: keywords
position hint: 32 position hint: 1000
icon: stats/creature_race.png script: keyword_usage(unique:true)
description: Race of creatures and tribal cards
script:
if is_creature(card.super_type) or is_tribal(card.super_type) then
only_first(card.sub_type)
show empty: false show empty: false
split list: true
icon: stats/keywords.png
statistics dimension: statistics dimension:
name: creature class name: style
position hint: 33 position hint: 1001
icon: stats/creature_class.png script: stylesheet.short_name
description: Class of creature cards icon: stats/stylesheet.png
script:
if is_creature(card.super_type) then
space_to_comma(trim(remove_tags(only_next(card.sub_type))))
show empty: false
split list: true
############################################################## Statistics categories (OLD) ############################################################## Statistics categories (OLD)
......
...@@ -35,21 +35,16 @@ word list: ...@@ -35,21 +35,16 @@ word list:
line below: true line below: true
word: Angel word: Angel
word: Beast word: Beast
word: Bird
word: Construct word: Construct
word: Demon word: Demon
word: Dragon word: Dragon
word: Drake
word: Elemental
word: Elf word: Elf
word: Faerie word: Faerie
word: Giant word: Giant
word: Goblin word: Goblin
word: Golem word: Golem
word: Human word: Human
word: Illusion
word: Merfolk word: Merfolk
word: Treefolk
word: Zombie word: Zombie
word: word:
name: All Races name: All Races
...@@ -106,6 +101,7 @@ word list: ...@@ -106,6 +101,7 @@ word list:
name: E name: E
word: Efreet word: Efreet
word: Egg word: Egg
word: Eldrazi
word: Elemental word: Elemental
word: Elephant word: Elephant
word: Elf word: Elf
...@@ -229,6 +225,7 @@ word list: ...@@ -229,6 +225,7 @@ word list:
word: Shade word: Shade
word: Shapeshifter word: Shapeshifter
word: Sheep word: Sheep
word: Siren
word: Skeleton word: Skeleton
word: Slith word: Slith
word: Sliver word: Sliver
...@@ -248,6 +245,7 @@ word list: ...@@ -248,6 +245,7 @@ word list:
word: Squid word: Squid
word: Squirrel word: Squirrel
word: Starfish word: Starfish
word: Surrakar
word: word:
name: T name: T
word: Tetravite word: Tetravite
...@@ -291,17 +289,11 @@ word list: ...@@ -291,17 +289,11 @@ word list:
word: word:
script: all_classes() script: all_classes()
line below: true line below: true
word: Advisor
word: Archer
word: Artificer
word: Assassin
word: Beast word: Beast
word: Cleric word: Cleric
word: Druid word: Druid
word: Knight word: Knight
word: Mutant
word: Rogue word: Rogue
word: Scout
word: Shaman word: Shaman
word: Soldier word: Soldier
word: Warrior word: Warrior
...@@ -312,6 +304,7 @@ word list: ...@@ -312,6 +304,7 @@ word list:
word: word:
name: A-C name: A-C
word: Advisor word: Advisor
word: Ally
word: Archer word: Archer
word: Archon word: Archon
word: Artificer word: Artificer
...@@ -361,6 +354,7 @@ word list: ...@@ -361,6 +354,7 @@ word list:
word: Skeleton word: Skeleton
word: Soldier word: Soldier
word: Spellshaper word: Spellshaper
word: Spirit
word: Survivor word: Survivor
word: word:
name: T-Z name: T-Z
...@@ -373,7 +367,7 @@ word list: ...@@ -373,7 +367,7 @@ word list:
word list: word list:
name: artifact name: artifact
word: word:
name: script: all_sub_types(match: "Artifact")
line below: true line below: true
word: Contraption word: Contraption
word: Equipment word: Equipment
...@@ -400,7 +394,7 @@ word list: ...@@ -400,7 +394,7 @@ word list:
word list: word list:
name: enchantment name: enchantment
word: word:
name: script: all_sub_types(match: "Enchantment")
line below: true line below: true
word: Aura word: Aura
word: Shrine word: Shrine
...@@ -408,6 +402,26 @@ word list: ...@@ -408,6 +402,26 @@ word list:
word list: word list:
name: spell name: spell
word: word:
name: script: all_sub_types(match: "Instant") + "," + all_sub_types(match: "Sorcery")
line below: true line below: true
word: Arcane word: Arcane
word: Trap
word list:
name: planeswalker
word:
script: all_sub_types(match: "Planeswalker")
line below: true
word: Ajani
word: Bolas
word: Chandra
word: Elspeth
word: Garruk
word: Gideon
word: Jace
word: Koth
word: Liliana
word: Nissa
word: Sarkhan
word: Sorin
word: Tezzeret
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment