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.

git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1494 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
pichoro
2010-08-14 17:55:51 +00:00
parent 7f1197e2a3
commit 6a615bb47e
13 changed files with 403 additions and 124 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
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
# 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
+134
View File
@@ -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)
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
######################################################################## ########################################################################
+3 -3
View File
@@ -1,7 +1,7 @@
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
+1 -1
View File
@@ -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:
#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")
) )
) )
) )
+52 -5
View File
@@ -1,5 +1,4 @@
############################################################## Card fields
############################################################## Card fields
############################# Automatic fields ############################# Automatic fields
@@ -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:
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:
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:
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:
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:
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:
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:
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
+4 -2
View File
@@ -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
############################################################## 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
+41 -11
View File
@@ -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:
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:
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:
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:
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 creatures 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:
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 opponents library, then you may put it on the bottom of that players library." if param1.value==1 then "card of an opponents library, then you may put it on the bottom of that players library."
else "{english_number(param1)} cards of an opponents library, then put any number of them on the bottom of that players library and the rest on top in any order." else "{english_number(param1)} cards of an opponents library, then put any number of them on the bottom of that players library and the rest on top in any order."
} }
@@ -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:
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:
reminder: You may cast this spell for its evoke cost. If you do, its sacrificed when it enters the battlefield. reminder: You may cast this spell for its evoke cost. If you do, its 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:
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:
match: Intimidate match: Intimidate
mode: core mode: core
reminder: This creature cant be blocked except by artifact creatures and/or creatures that share a color with it. reminder: This creature cant 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.
+2
View File
@@ -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 := [
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")
] ]
] ]
+62 -50
View File
@@ -1,5 +1,4 @@
############################################################## Localization
############################################################## Localization
include file: language include file: language
@@ -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
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 :=
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 := {
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 := {
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: "")
+6
View File
@@ -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
+67 -35
View File
@@ -43,47 +43,36 @@ statistics dimension:
icon: stats/colored_casting_cost.png icon: stats/colored_casting_cost.png
statistics dimension: statistics dimension:
position hint: 50 name: supertype
name: power position hint: 27
script: card.power icon: stats/card_type.png
numeric: true description: The card's supertype, not including types
icon: stats/power.png script: remove_type(card.super_type)
statistics dimension: statistics dimension:
position hint: 51 name: type
name: toughness position hint: 28
script: card.toughness icon: stats/card_type.png
numeric: true description: The card's type, not including supertypes
icon: stats/toughness.png script: remove_supertype(card.super_type)
statistics dimension: statistics dimension:
name: keywords name: combined type
position hint: 1000 position hint: 29
script: keyword_usage(unique:true) icon: stats/card_type.png
show empty: false description: The traditional supertype statistic, with no filtering
split list: true script: card.super_type
icon: stats/keywords.png
statistics dimension: statistics dimension:
name: style name: perm/non-perm
position hint: 1001 position hint: 30
script: stylesheet.short_name icon: stats/card_type.png
icon: stats/stylesheet.png description: Is the card a creature, non-creature permanent, or nonpermanent?
script:
statistics dimension: if is_creature(card.super_type) then "creature"
name: text length (words) else if is_spell(card.super_type) then "nonpermanent"
position hint: 100 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"
script: word_count(to_text(card.rule_text)) else "unknown"
numeric: true
bin size: 5
icon: stats/text_length.png
statistics dimension:
name: text length (lines)
position hint: 101
script: line_count(to_text(card.rule_text))
numeric: true
icon: stats/text_length.png
statistics dimension: statistics dimension:
name: race name: race
@@ -106,6 +95,49 @@ statistics dimension:
show empty: false show empty: false
split list: true split list: true
statistics dimension:
position hint: 50
name: power
script: card.power
numeric: true
icon: stats/power.png
statistics dimension:
position hint: 51
name: toughness
script: card.toughness
numeric: true
icon: stats/toughness.png
statistics dimension:
name: text length (words)
position hint: 100
script: word_count(to_text(card.rule_text))
numeric: true
bin size: 5
icon: stats/text_length.png
statistics dimension:
name: text length (lines)
position hint: 101
script: line_count(to_text(card.rule_text))
numeric: true
icon: stats/text_length.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 categories (OLD) ############################################################## Statistics categories (OLD)
statistics category: statistics category:
+28 -14
View File
@@ -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:
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:
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:
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:
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:
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:
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:
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:
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:
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