[wip] updating exporters for 2.5 (#75)

* Add Card Regions to DFCs
* Add Hashes
* Add crop_multi_image to help crop with card regions
* bugfix exporters and organize the list
* add dfc splitter support for Cockatrice and Lackey exporters
* fix sizing bugs on Planesculptors exporter
* update icons on exporters missing them
* update namecheck exporter and improve near checking

---------

Co-authored-by: cajun <12363371+CajunAvenger@users.noreply.github.com>
This commit is contained in:
cajun
2024-09-24 09:52:17 -05:00
committed by GitHub
parent 9668a1de6f
commit 9a7b7949e8
37 changed files with 1460 additions and 668 deletions

View File

@@ -1,7 +1,7 @@
mse version: 0.3.8
short name: Wagic
full name: Plugin Exporter
position hint: 007
position hint: 900
icon: icon.png
version: 2009-11-14
#Remember to update version at bottom of file.
@@ -225,81 +225,81 @@ script:
#Filter out the "keyword" abilities recognized by Wagic from the rules text.
#Todo: Try to make more precise so you don't catch things like "Enchanted creature has flying."
wagic_abilities := {
(if contains(card.rule_text, match:"Flying") then "flying,")
+(if contains(card.rule_text, match:"flying") then "flying,")
+(if contains(card.rule_text, match:"Trample") then "trample,")
+(if contains(card.rule_text, match:"trample") then "trample,")
+(if contains(card.rule_text, match:"Plainswalk") then "plainwalk,")
+(if contains(card.rule_text, match:"Plainswalk") then "plainwalk,")
+(if contains(card.rule_text, match:"Islandwalk") then "islandwalk,")
+(if contains(card.rule_text, match:"Islandwalk") then "islandwalk,")
+(if contains(card.rule_text, match:"Swampwalk") then "swampwalk,")
+(if contains(card.rule_text, match:"Swampwalk") then "swampwalk,")
+(if contains(card.rule_text, match:"Mountainwalk") then "mountainwalk,")
+(if contains(card.rule_text, match:"Mountainwalk") then "mountainwalk,")
+(if contains(card.rule_text, match:"Forestwalk") then "forestwalk,")
+(if contains(card.rule_text, match:"Forestwalk") then "forestwalk,")
+(if contains(card.rule_text, match:"First strike") then "first strike,")
+(if contains(card.rule_text, match:"first strike") then "first strike,")
+(if contains(card.rule_text, match:"Double strike") then "double strike,")
+(if contains(card.rule_text, match:"double strike") then "double strike,")
+(if contains(card.rule_text, match:"Fear") then "fear,")
+(if contains(card.rule_text, match:"fear") then "fear,")
+(if contains(card.rule_text, match:"Flash") then "flash,")
+(if contains(card.rule_text, match:"flash") then "flash,")
+(if contains(card.rule_text, match:"Haste") then "haste,")
+(if contains(card.rule_text, match:"haste") then "haste,")
+(if contains(card.rule_text, match:"Lifelink") then "lifelink,")
+(if contains(card.rule_text, match:"lifelink") then "lifelink,")
+(if contains(card.rule_text, match:"Reach") then "reach,")
+(if contains(card.rule_text, match:"reach") then "reach,")
+(if contains(card.rule_text, match:"Shroud") then "shroud,")
+(if contains(card.rule_text, match:"shroud") then "shroud,")
+(if contains(card.rule_text, match:"Vigilance") then "vigilance,")
+(if contains(card.rule_text, match:"vigilance") then "vigilance,")
+(if contains(card.rule_text, match:"Defender") then "defender,")
+(if contains(card.rule_text, match:"defender") then "defender,")
+(if contains(card.rule_text, match:"Banding") then "banding,")
+(if contains(card.rule_text, match:"banding") then "banding,")
+(if contains(card.rule_text, match:"Protection from white") then "protection from white,")
+(if contains(card.rule_text, match:"protection from white") then "protection from white,")
+(if contains(card.rule_text, match:"Protection from blue") then "protection from blue,")
+(if contains(card.rule_text, match:"protection from blue") then "protection from blue,")
+(if contains(card.rule_text, match:"Protection from black") then "protection from black,")
+(if contains(card.rule_text, match:"protection from black") then "protection from black,")
+(if contains(card.rule_text, match:"Protection from red") then "protection from red,")
+(if contains(card.rule_text, match:"protection from red") then "protection from red,")
+(if contains(card.rule_text, match:"Protection from green") then "protection from green,")
+(if contains(card.rule_text, match:"protection from green") then "protection from green,")
+(if contains(card.rule_text, match:" is unblockable.") then "unblockable,")
+(if contains(card.rule_text, match:"Wither") then "wither,")
+(if contains(card.rule_text, match:"wither") then "wither,")
+(if contains(card.rule_text, match:"Persist") then "persist,")
+(if contains(card.rule_text, match:"persist") then "persist,")
+(if contains(card.rule_text, match:"Retrace") then "retrace,")
+(if contains(card.rule_text, match:"retrace") then "retrace,")
+(if contains(card.rule_text, match:"Exalted") then "exalted,")
+(if contains(card.rule_text, match:"exalted") then "exalted,")
+(if contains(card.super_type, match:"Legendary") then "legendary,")
+(if contains(card.rule_text, match:"Shadow") then "shadow,")
+(if contains(card.rule_text, match:"shadow") then "shadow,")
+(if contains(card.rule_text, match:" can block creatures with shadow as though they didn't have shadow.") then "reachshadow,")
+(if contains(card.rule_text, match:" cant attack unless defending player controls an Plains.") and contains(card.rule_text, match:"When you control no Plains, sacrifice ") then "plainshome,")
+(if contains(card.rule_text, match:" cant attack unless defending player controls an Island.") and contains(card.rule_text, match:"When you control no Islands, sacrifice ") then "islandhome,")
+(if contains(card.rule_text, match:" cant attack unless defending player controls an Swamp.") and contains(card.rule_text, match:"When you control no Swamps, sacrifice ") then "swamphome,")
+(if contains(card.rule_text, match:" cant attack unless defending player controls an Mountain.") and contains(card.rule_text, match:"When you control no Mountains, sacrifice ") then "mountainhome,")
+(if contains(card.rule_text, match:" cant attack unless defending player controls an Forest.") and contains(card.rule_text, match:"When you control no Forests, sacrifice ") then "foresthome,")
+(if contains(card.rule_text, match:"Flanking") then "flanking,")
+(if contains(card.rule_text, match:"flanking") then "flanking,")
+(if contains(card.rule_text, match:"Rampage") then "rampage,")
+(if contains(card.rule_text, match:"rampage") then "rampage,")
+(if contains(card.rule_text, match:" can block only creatures with flying.") then "cloud,")
+(if contains(card.rule_text, match:" attacks each turn if able.") then "mustattack,")
+(if contains(card.rule_text, match:" can't attack.") then "cantattack,")
+(if contains(card.rule_text, match:" can't block.") then "cantblock,")
+(if contains(card.rule_text, match:" doesn't untap during your untap step.") then "doesnotuntap,")
+(if contains(card.rule_text, match:" can't be the targets of spells or abilities your opponents control.") then "opponentshroud,")
+(if contains(card.rule_text, match:" is indestructible.") then "indestructible,")
(if contains(card.rule_text, match:"Flying") then "flying," else "")
+(if contains(card.rule_text, match:"flying") then "flying," else "")
+(if contains(card.rule_text, match:"Trample") then "trample," else "")
+(if contains(card.rule_text, match:"trample") then "trample," else "")
+(if contains(card.rule_text, match:"Plainswalk") then "plainwalk," else "")
+(if contains(card.rule_text, match:"Plainswalk") then "plainwalk," else "")
+(if contains(card.rule_text, match:"Islandwalk") then "islandwalk," else "")
+(if contains(card.rule_text, match:"Islandwalk") then "islandwalk," else "")
+(if contains(card.rule_text, match:"Swampwalk") then "swampwalk," else "")
+(if contains(card.rule_text, match:"Swampwalk") then "swampwalk," else "")
+(if contains(card.rule_text, match:"Mountainwalk") then "mountainwalk," else "")
+(if contains(card.rule_text, match:"Mountainwalk") then "mountainwalk," else "")
+(if contains(card.rule_text, match:"Forestwalk") then "forestwalk," else "")
+(if contains(card.rule_text, match:"Forestwalk") then "forestwalk," else "")
+(if contains(card.rule_text, match:"First strike") then "first strike," else "")
+(if contains(card.rule_text, match:"first strike") then "first strike," else "")
+(if contains(card.rule_text, match:"Double strike") then "double strike," else "")
+(if contains(card.rule_text, match:"double strike") then "double strike," else "")
+(if contains(card.rule_text, match:"Fear") then "fear," else "")
+(if contains(card.rule_text, match:"fear") then "fear," else "")
+(if contains(card.rule_text, match:"Flash") then "flash," else "")
+(if contains(card.rule_text, match:"flash") then "flash," else "")
+(if contains(card.rule_text, match:"Haste") then "haste," else "")
+(if contains(card.rule_text, match:"haste") then "haste," else "")
+(if contains(card.rule_text, match:"Lifelink") then "lifelink," else "")
+(if contains(card.rule_text, match:"lifelink") then "lifelink," else "")
+(if contains(card.rule_text, match:"Reach") then "reach," else "")
+(if contains(card.rule_text, match:"reach") then "reach," else "")
+(if contains(card.rule_text, match:"Shroud") then "shroud," else "")
+(if contains(card.rule_text, match:"shroud") then "shroud," else "")
+(if contains(card.rule_text, match:"Vigilance") then "vigilance," else "")
+(if contains(card.rule_text, match:"vigilance") then "vigilance," else "")
+(if contains(card.rule_text, match:"Defender") then "defender," else "")
+(if contains(card.rule_text, match:"defender") then "defender," else "")
+(if contains(card.rule_text, match:"Banding") then "banding," else "")
+(if contains(card.rule_text, match:"banding") then "banding," else "")
+(if contains(card.rule_text, match:"Protection from white") then "protection from white," else "")
+(if contains(card.rule_text, match:"protection from white") then "protection from white," else "")
+(if contains(card.rule_text, match:"Protection from blue") then "protection from blue," else "")
+(if contains(card.rule_text, match:"protection from blue") then "protection from blue," else "")
+(if contains(card.rule_text, match:"Protection from black") then "protection from black," else "")
+(if contains(card.rule_text, match:"protection from black") then "protection from black," else "")
+(if contains(card.rule_text, match:"Protection from red") then "protection from red," else "")
+(if contains(card.rule_text, match:"protection from red") then "protection from red," else "")
+(if contains(card.rule_text, match:"Protection from green") then "protection from green," else "")
+(if contains(card.rule_text, match:"protection from green") then "protection from green," else "")
+(if contains(card.rule_text, match:" is unblockable.") then "unblockable," else "")
+(if contains(card.rule_text, match:"Wither") then "wither," else "")
+(if contains(card.rule_text, match:"wither") then "wither," else "")
+(if contains(card.rule_text, match:"Persist") then "persist," else "")
+(if contains(card.rule_text, match:"persist") then "persist," else "")
+(if contains(card.rule_text, match:"Retrace") then "retrace," else "")
+(if contains(card.rule_text, match:"retrace") then "retrace," else "")
+(if contains(card.rule_text, match:"Exalted") then "exalted," else "")
+(if contains(card.rule_text, match:"exalted") then "exalted," else "")
+(if contains(card.super_type, match:"Legendary") then "legendary," else "")
+(if contains(card.rule_text, match:"Shadow") then "shadow," else "")
+(if contains(card.rule_text, match:"shadow") then "shadow," else "")
+(if contains(card.rule_text, match:" can block creatures with shadow as though they didn't have shadow.") then "reachshadow," else "")
+(if contains(card.rule_text, match:" cant attack unless defending player controls an Plains.") and contains(card.rule_text, match:"When you control no Plains, sacrifice ") then "plainshome," else "")
+(if contains(card.rule_text, match:" cant attack unless defending player controls an Island.") and contains(card.rule_text, match:"When you control no Islands, sacrifice ") then "islandhome," else "")
+(if contains(card.rule_text, match:" cant attack unless defending player controls an Swamp.") and contains(card.rule_text, match:"When you control no Swamps, sacrifice ") then "swamphome," else "")
+(if contains(card.rule_text, match:" cant attack unless defending player controls an Mountain.") and contains(card.rule_text, match:"When you control no Mountains, sacrifice ") then "mountainhome," else "")
+(if contains(card.rule_text, match:" cant attack unless defending player controls an Forest.") and contains(card.rule_text, match:"When you control no Forests, sacrifice ") then "foresthome," else "")
+(if contains(card.rule_text, match:"Flanking") then "flanking," else "")
+(if contains(card.rule_text, match:"flanking") then "flanking," else "")
+(if contains(card.rule_text, match:"Rampage") then "rampage," else "")
+(if contains(card.rule_text, match:"rampage") then "rampage," else "")
+(if contains(card.rule_text, match:" can block only creatures with flying.") then "cloud," else "")
+(if contains(card.rule_text, match:" attacks each turn if able.") then "mustattack," else "")
+(if contains(card.rule_text, match:" can't attack.") then "cantattack," else "")
+(if contains(card.rule_text, match:" can't block.") then "cantblock," else "")
+(if contains(card.rule_text, match:" doesn't untap during your untap step.") then "doesnotuntap," else "")
+(if contains(card.rule_text, match:" can't be the targets of spells or abilities your opponents control.") then "opponentshroud," else "")
+(if contains(card.rule_text, match:" is indestructible.") then "indestructible," else "")
}
#Take the trailing comma off the end of the abilities line.
wagic_remove_trailing_comma := replace@(match:",$", replace:"")
@@ -391,7 +391,7 @@ script:
else write_normal()
}
#Write cards.
write_cards := to_text(for each card in sort_list(cards, order_by: {card.card_number}) do write_card())
write_cards := to_text(for each card in sort_list(set, order_by: {card.card_number}) do write_card())
#Render images.
#write_images := for each card in cards do write_image_file(card, file:"{wagic_id_prefix()}{wagic_card_number()}{if card.shape == "token" then "t"}{if card.shape == "rulestip" then "tip"}.jpg")
#Write header, then write the cards.