diff --git a/code/game/objects/items/tcg/tcg.dm b/code/game/objects/items/tcg/tcg.dm index fcb210a620c..509df3bb44c 100644 --- a/code/game/objects/items/tcg/tcg.dm +++ b/code/game/objects/items/tcg/tcg.dm @@ -203,6 +203,7 @@ GLOBAL_LIST_EMPTY(cached_cards) log_runtime("The index [rarity] of rarity_table does not exist in the global cache") return toReturn +//All of these values should be overriden by either a template or a card itself /datum/card ///Unique ID, for use in lookups and (eventually) for persistence. MAKE SURE THIS IS UNIQUE FOR EACH CARD IN AS SERIES, OR THE ENTIRE SYSTEM WILL BREAK, AND I WILL BE VERY DISAPPOINTED. var/id = "coder" @@ -211,13 +212,13 @@ GLOBAL_LIST_EMPTY(cached_cards) ///This handles any extra rules for the card, i.e. extra attributes, special effects, etc. If you've played any other card game, you know how this works. var/rules = "There are no rules here. There is no escape. No Recall or Intervention can work in this place." var/icon = "icons/obj/tcg.dmi" - var/icon_state = "runtime" + var/icon_state = "template" ///What it costs to summon this card to the battlefield. var/summoncost = -1 ///How hard this card hits (by default) - var/power = 0 + var/power = -1 ///How hard this card can get hit (by default) - var/resolve = 0 + var/resolve = -1 ///Someone please come up with a ruleset so I can comment this var/faction = "socks" ///Used to define the behaviour the card uses during the game. @@ -225,7 +226,7 @@ GLOBAL_LIST_EMPTY(cached_cards) ///An extra descriptor for the card. Combined with the cardtype for a larger card descriptor, i.e. Creature- Xenomorph, Spell- Instant, that sort of thing. For creatures, this has no effect, for spells, this is important. var/cardsubtype = "Weeb" ///Defines the series that the card originates from, this is *very* important for spawning the cards via packs. - var/series = "coreset2020" + var/series = "hunter2" ///The rarity of this card, determines how much (or little) it shows up in packs. Rarities are common, uncommon, rare, epic, legendary and misprint. var/rarity = "uber rare to the extreme" @@ -259,22 +260,48 @@ GLOBAL_LIST_EMPTY(cached_cards) ///Checks the passed type list for missing raritys, or raritys out of bounds /proc/checkCardpacks(cardPackList) + var/toReturn = "" for(var/cardPack in cardPackList) var/obj/item/cardpack/pack = new cardPack() //Lets see if someone made a type yeah? if(!GLOB.cached_cards[pack.series]) - message_admins("[pack.series] does not have any related cards") + toReturn += "[pack.series] does not have any cards in it\n" continue for(var/card in GLOB.cached_cards[pack.series]["ALL"]) var/datum/card/template = GLOB.cached_cards[pack.series]["ALL"][card] + if(template.rarity == "ALL") + toReturn += "[pack.type] has a rarity [template.rarity] on the card [template.id] that needs to be changed to something that isn't \"ALL\"\n" + continue if(!(template.rarity in pack.rarity_table)) - message_admins("[pack.type] has a rarity [template.rarity] on the card [template.id] that does not exist") + toReturn += "[pack.type] has a rarity [template.rarity] on the card [template.id] that does not exist\n" continue //Lets run a check to see if all the rarities exist that we want to exist exist for(var/I in pack.rarity_table) if(!GLOB.cached_cards[pack.series][I]) - message_admins("[pack.type] does not have the required rarity [I]") + toReturn += "[pack.type] does not have the required rarity [I]\n" qdel(pack) + return toReturn + +///Checks the global card list for cards that don't override all the default values of the card datum +/proc/checkCardDatums() + var/toReturn = "" + var/datum/thing = new() + for(var/series in GLOB.cached_cards) + var/cards = GLOB.cached_cards[series]["ALL"] + for(var/card in cards) + var/datum/card/target = GLOB.cached_cards[series]["ALL"][card] + var/toAdd = "The card [target.id] in [series] has the following default variables:" + var/shouldAdd = FALSE + for(var/a in (target.vars ^ thing.vars)) + if(a == "icon" && target.vars[a] == "icons/obj/tcg.dmi") + continue + if(target.vars[a] == initial(target.vars[a])) + shouldAdd = TRUE + toAdd += "\n[a] with a value of [target.vars[a]]" + if(shouldAdd) + toReturn += toAdd + qdel(thing) + return toReturn ///Used to test open a large amount of cardpacks /proc/checkCardDistribution(cardPack, batchSize, batchCount, guaranteed) @@ -322,5 +349,5 @@ GLOBAL_LIST_EMPTY(cached_cards) if(!GLOB.cached_cards[c.series][c.rarity]) GLOB.cached_cards[c.series][c.rarity] = list() GLOB.cached_cards[c.series][c.rarity] += c.id - //And series too, why not, it's semi cheap + //Let's actually store the datum here GLOB.cached_cards[c.series]["ALL"][c.id] = c diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index f2710bf4aac..a285fa1e941 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -166,7 +166,7 @@ GLOBAL_PROTECT(admin_verbs_debug) /client/proc/cmd_display_overlay_log, /client/proc/reload_configuration, /client/proc/reload_cards, - /client/proc/validate_cardpacks, + /client/proc/validate_cards, /client/proc/test_cardpack_distribution, /client/proc/print_cards, /datum/admins/proc/create_or_modify_area, @@ -564,15 +564,18 @@ GLOBAL_PROTECT(admin_verbs_hideable) return reloadAllCardFiles(SStrading_card_game.card_files, SStrading_card_game.card_directory) -/client/proc/validate_cardpacks() - set name = "Validate Cardpacks" +/client/proc/validate_cards() + set name = "Validate Cards" set category = "Debug" if(!check_rights(R_DEBUG)) return if(!SStrading_card_game.loaded) message_admins("The card subsystem is not currently loaded") return - checkCardpacks(SStrading_card_game.card_packs) + var/message = checkCardpacks(SStrading_card_game.card_packs) + message += checkCardDatums() + if(message) + message_admins(message) /client/proc/test_cardpack_distribution() set name = "Test Cardpack Distribution" diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 1b8264b1bef..80abd0ed305 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -4,6 +4,7 @@ #ifdef UNIT_TESTS #include "anchored_mobs.dm" #include "bespoke_id.dm" +#include "card_mismatch.dm" #include "component_tests.dm" #include "plantgrowth_tests.dm" #include "reagent_id_typos.dm" diff --git a/code/modules/unit_tests/card_mismatch.dm b/code/modules/unit_tests/card_mismatch.dm new file mode 100644 index 00000000000..506e88f19c3 --- /dev/null +++ b/code/modules/unit_tests/card_mismatch.dm @@ -0,0 +1,7 @@ +/datum/unit_test/card_mismatch + +/datum/unit_test/card_mismatch/Run() + var/message = checkCardpacks(SStrading_card_game.card_packs) + message += checkCardDatums() + if(message) + Fail(message) diff --git a/strings/tcg/set_one.json b/strings/tcg/set_one.json index 1ff526c5f8c..9ee7c09806c 100644 --- a/strings/tcg/set_one.json +++ b/strings/tcg/set_one.json @@ -1,7 +1,9 @@ { "templates": [ { - "icon": "icons/obj/tcg.dmi" + "template": "default", + "icon": "icons/obj/tcg.dmi", + "series": "coreset2020" } ], "cards": [ @@ -17,7 +19,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -32,7 +33,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Construct", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -47,7 +47,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Abomination", - "series": "coreset2020", "rarity": "rare" }, { @@ -62,7 +61,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Employee", - "series": "coreset2020", "rarity": "common" }, { @@ -77,7 +75,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Engineer", - "series": "coreset2020", "rarity": "common" }, { @@ -92,7 +89,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Employee", - "series": "coreset2020", "rarity": "common" }, { @@ -107,7 +103,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Employee", - "series": "coreset2020", "rarity": "common" }, { @@ -122,7 +117,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Commander", - "series": "coreset2020", "rarity": "rare" }, { @@ -137,7 +131,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "epic" }, { @@ -152,7 +145,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Employee", - "series": "coreset2020", "rarity": "common" }, { @@ -167,7 +159,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "common" }, { @@ -182,7 +173,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Doctor", - "series": "coreset2020", "rarity": "common" }, { @@ -197,7 +187,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Engineer", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -212,7 +201,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "rare" }, { @@ -227,7 +215,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Doctor", - "series": "coreset2020", "rarity": "common" }, { @@ -242,7 +229,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -257,7 +243,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Soldier", - "series": "coreset2020", "rarity": "epic" }, { @@ -272,7 +257,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Sloth", - "series": "coreset2020", "rarity": "common" }, { @@ -287,7 +271,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Clown", - "series": "coreset2020", "rarity": "common" }, { @@ -302,7 +285,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon Clown", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -317,7 +299,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "epic" }, { @@ -332,7 +313,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -347,7 +327,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Employee", - "series": "coreset2020", "rarity": "common" }, { @@ -362,7 +341,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "rare" }, { @@ -377,7 +355,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Worker", - "series": "coreset2020", "rarity": "common" }, { @@ -392,7 +369,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon Corgi", - "series": "coreset2020", "rarity": "rare" }, { @@ -407,7 +383,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "epic" }, { @@ -422,7 +397,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Officer", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -437,7 +411,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Syndicate Soldier", - "series": "coreset2020", "rarity": "rare" }, { @@ -452,7 +425,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon", - "series": "coreset2020", "rarity": "common" }, { @@ -467,7 +439,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "rare" }, { @@ -482,7 +453,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -497,7 +467,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -512,7 +481,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -527,7 +495,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Explorer", - "series": "coreset2020", "rarity": "legendary" }, { @@ -542,7 +509,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon", - "series": "coreset2020", "rarity": "common" }, { @@ -557,7 +523,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Scientist", - "series": "coreset2020", "rarity": "common" }, { @@ -572,7 +537,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Doctor", - "series": "coreset2020", "rarity": "misprint" }, { @@ -587,7 +551,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Spirit Corgi", - "series": "coreset2020", "rarity": "epic" }, { @@ -602,7 +565,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Commander", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -617,7 +579,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Officer", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -632,7 +593,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "rare" }, { @@ -647,7 +607,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Corgi", - "series": "coreset2020", "rarity": "common" }, { @@ -662,7 +621,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "epic" }, { @@ -677,7 +635,6 @@ "summoncost": 1, "cardtype": "Human", "cardsubtype": "Human Employee", - "series": "coreset2020", "rarity": "common" }, { @@ -692,7 +649,6 @@ "summoncost": 1, "cardtype": "Human", "cardsubtype": "Human Employee", - "series": "coreset2020", "rarity": "common" }, { @@ -707,7 +663,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon", - "series": "coreset2020", "rarity": "common" }, { @@ -722,7 +677,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Employee", - "series": "coreset2020", "rarity": "common" }, { @@ -737,7 +691,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Abomination", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -752,7 +705,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon Doctor", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -767,7 +719,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Doctor", - "series": "coreset2020", "rarity": "common" }, { @@ -782,7 +733,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Mime", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -797,7 +747,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon Miner", - "series": "coreset2020", "rarity": "common" }, { @@ -812,7 +761,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Primate", - "series": "coreset2020", "rarity": "common" }, { @@ -827,7 +775,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Syndicate Soldier", - "series": "coreset2020", "rarity": "rare" }, { @@ -842,7 +789,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Doctor", - "series": "coreset2020", "rarity": "common" }, { @@ -857,7 +803,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon Officer", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -872,7 +817,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Plasmaman Engineer", - "series": "coreset2020", "rarity": "common" }, { @@ -887,7 +831,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Employee", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -902,7 +845,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Employee", - "series": "coreset2020", "rarity": "misprint" }, { @@ -917,7 +859,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon Rabbit", - "series": "coreset2020", "rarity": "common" }, { @@ -932,7 +873,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon Drone", - "series": "coreset2020", "rarity": "common" }, { @@ -947,7 +887,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Scientist", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -962,7 +901,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "rare" }, { @@ -977,7 +915,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Scientist", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -992,7 +929,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Cat", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -1007,7 +943,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Scientist", - "series": "coreset2020", "rarity": "common" }, { @@ -1022,7 +957,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon Officer", - "series": "coreset2020", "rarity": "epic" }, { @@ -1037,7 +971,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Officer", - "series": "coreset2020", "rarity": "common" }, { @@ -1052,7 +985,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "coreset2020", "rarity": "epic" }, { @@ -1067,7 +999,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -1082,7 +1013,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon", - "series": "coreset2020", "rarity": "common" }, { @@ -1097,7 +1027,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon", - "series": "coreset2020", "rarity": "common" }, { @@ -1112,7 +1041,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon", - "series": "coreset2020", "rarity": "common" }, { @@ -1127,7 +1055,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon", - "series": "coreset2020", "rarity": "common" }, { @@ -1142,7 +1069,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Miner", - "series": "coreset2020", "rarity": "rare" }, { @@ -1157,7 +1083,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Engineer", - "series": "coreset2020", "rarity": "common" }, { @@ -1172,7 +1097,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Robot", - "series": "coreset2020", "rarity": "rare" }, { @@ -1187,7 +1111,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Doctor", - "series": "coreset2020", "rarity": "common" }, { @@ -1202,7 +1125,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Human Officer", - "series": "coreset2020", "rarity": "uncommon" }, { @@ -1217,7 +1139,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "coreset2020", "rarity": "rare" } ] diff --git a/strings/tcg/set_two.json b/strings/tcg/set_two.json index 1feb3085afb..970337b3d02 100644 --- a/strings/tcg/set_two.json +++ b/strings/tcg/set_two.json @@ -2,7 +2,8 @@ "templates": [ { "template": "default", - "icon": "icons/obj/tcg_xenos.dmi" + "icon": "icons/obj/tcg_xenos.dmi", + "series": "resinfront" } ], "cards": [ @@ -18,7 +19,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Silicon Xenomorph", - "series": "resinfront", "rarity": "epic" }, { @@ -33,7 +33,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "common" }, { @@ -48,7 +47,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "common" }, { @@ -63,7 +61,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "uncommon" }, { @@ -78,7 +75,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "uncommon" }, { @@ -93,7 +89,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "common" }, { @@ -108,7 +103,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "rare" }, { @@ -123,7 +117,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "rare" }, { @@ -138,7 +131,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "rare" }, { @@ -153,7 +145,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "rare" }, { @@ -168,7 +159,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "rare" }, { @@ -183,7 +173,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "common" }, { @@ -198,7 +187,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "uncommon" }, { @@ -213,7 +201,6 @@ "summoncost": 1, "cardtype": "Equipment", "cardsubtype": "Armour", - "series": "resinfront", "rarity": "epic" }, { @@ -228,7 +215,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "uncommon" }, { @@ -243,7 +229,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "rare" }, { @@ -258,7 +243,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph Soldier", - "series": "resinfront", "rarity": "legendary" }, { @@ -273,7 +257,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "rare" }, { @@ -288,7 +271,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "uncommon" }, { @@ -303,7 +285,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "uncommon" }, { @@ -318,7 +299,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "epic" }, { @@ -333,7 +313,6 @@ "summoncost": 1, "cardtype": "Creature", "cardsubtype": "Xenomorph", - "series": "resinfront", "rarity": "common" } ]