From 835bd1fbeb2a230a18df6b890930f84d60f15960 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20W=2E=20Urba=C5=84czyk?= Date: Tue, 30 Aug 2011 06:19:07 +0000 Subject: [PATCH] Reverting r2327 http://forum.vcmi.eu/viewtopic.php?t=410 --- client/CConfigHandler.cpp | 8 +- config/heroes.json | 894 +++++++++++++++++++------------------- lib/CCreatureHandler.cpp | 18 +- lib/CHeroHandler.cpp | 25 +- lib/CTownHandler.cpp | 10 +- lib/JsonNode.cpp | 20 +- lib/JsonNode.h | 13 +- 7 files changed, 501 insertions(+), 487 deletions(-) diff --git a/client/CConfigHandler.cpp b/client/CConfigHandler.cpp index 3b84ad22c..e060d9c46 100644 --- a/client/CConfigHandler.cpp +++ b/client/CConfigHandler.cpp @@ -121,10 +121,12 @@ static void setButton(ButtonInfo &button, const JsonNode &g) button.playerColoured = g["playerColoured"].Float(); button.defName = g["graphic"].String(); - const JsonVector &defs_vec = g["additionalDefs"].Vector(); + if (!g["additionalDefs"].isNull()) { + const JsonVector &defs_vec = g["additionalDefs"].Vector(); - BOOST_FOREACH(const JsonNode &def, defs_vec) { - button.additionalDefs.push_back(def.String()); + BOOST_FOREACH(const JsonNode &def, defs_vec) { + button.additionalDefs.push_back(def.String()); + } } } diff --git a/config/heroes.json b/config/heroes.json index b47b63ce3..c13fe23b2 100644 --- a/config/heroes.json +++ b/config/heroes.json @@ -1,880 +1,880 @@ { // heroes' information. // id: hero id - // female: true if hero is female, false by default - // skill_set: initial set of secondary abilities (skill ID, initial skil level(1 is default)) + // sex: male/female + // skill_set: initial set of secondary abilities (skill ID, initial skil level) // spell: hero starts with that initial spell "heroes": [ { "id": 0, - "female": false, - "skill_set": [ { "skill": 6, }, - { "skill": 1, } ], + "sex": 0, + "skill_set": [ { "skill": 6, "level": 1 }, + { "skill": 1, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 1, "info": 0 } ] }, { "id": 1, - "female": true, - "skill_set": [ { "skill": 6, }, - { "skill": 1, } ], + "sex": 1, + "skill_set": [ { "skill": 6, "level": 1 }, + { "skill": 1, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 2 } ] }, { "id": 2, - "female": false, - "skill_set": [ { "skill": 6, }, - { "skill": 23, } ], + "sex": 0, + "skill_set": [ { "skill": 6, "level": 1 }, + { "skill": 23, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 4 } ] }, { "id": 3, - "female": true, - "skill_set": [ { "skill": 6, }, - { "skill": 5, } ], + "sex": 1, + "skill_set": [ { "skill": 6, "level": 1 }, + { "skill": 5, "level": 1 } ], "specialties": [ { "type":2, "val": 2, "subtype": 5, "info": 1 } ] }, { "id": 4, - "female": false, - "skill_set": [ { "skill": 6, }, - { "skill": 13, } ], + "sex": 0, + "skill_set": [ { "skill": 6, "level": 1 }, + { "skill": 13, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 13, "info": 0 } ] }, { "id": 5, - "female": true, - "skill_set": [ { "skill": 6, }, - { "skill": 22, } ], + "sex": 1, + "skill_set": [ { "skill": 6, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 6 } ] }, { "id": 6, - "female": false, - "skill_set": [ { "skill": 6, }, - { "skill": 20, } ], + "sex": 0, + "skill_set": [ { "skill": 6, "level": 1 }, + { "skill": 20, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 146 } ] }, { "id": 7, - "female": true, - "skill_set": [ { "skill": 6, }, - { "skill": 19, } ], + "sex": 1, + "skill_set": [ { "skill": 6, "level": 1 }, + { "skill": 19, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 10 } ] }, { "id": 8, - "female": false, + "sex": 0, "spell": 46, - "skill_set": [ { "skill": 7, }, - { "skill": 27, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 27, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 27, "info": 0 } ] }, { "id": 9, - "female": true, + "sex": 1, "spell": 41, - "skill_set": [ { "skill": 7, }, - { "skill": 4, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 4, "level": 1 } ], "specialties": [ { "type":6, "val": 3, "subtype": 41, "info": 0 } ] }, { "id": 10, - "female": false, + "sex": 0, "spell": 45, - "skill_set": [ { "skill": 7, }, - { "skill": 13, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 13, "level": 1 } ], "specialties": [ { "type":8, "val": 0, "subtype": 45, "info": 0 } ] }, { "id": 11, - "female": true, + "sex": 1, "spell": 20, "skill_set": [ { "skill": 7, "level": 2 } ], "specialties": [ { "type":3, "val": 3, "subtype": 20, "info": 0 } ] }, { "id": 12, - "female": false, + "sex": 0, "spell": 42, - "skill_set": [ { "skill": 7, }, - { "skill": 8, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 8, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 8 } ] }, { "id": 13, - "female": true, + "sex": 1, "spell": 35, - "skill_set": [ { "skill": 7, }, - { "skill": 11, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 11, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 11, "info": 0 } ] }, { "id": 14, "spell": 48, - "female": false, - "skill_set": [ { "skill": 7, }, - { "skill": 21, } ], + "sex": 0, + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 21, "level": 1 } ], "specialties": [ { "type":8, "val": 0, "subtype": 48, "info": 0 } ] }, { "id": 15, - "female": true, + "sex": 1, "spell": 37, - "skill_set": [ { "skill": 7, }, - { "skill": 24, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 24, "level": 1 } ], "specialties": [ { "type":10, "val": 350, "subtype": 6, "info": 0 } ] }, { "id": 16, - "female": true, - "skill_set": [ { "skill": 6, }, - { "skill": 23, } ], + "sex": 1, + "skill_set": [ { "skill": 6, "level": 1 }, + { "skill": 23, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 23, "info": 0 } ] }, { "id": 17, - "female": false, - "skill_set": [ { "skill": 9, }, - { "skill": 26, } ], + "sex": 0, + "skill_set": [ { "skill": 9, "level": 1 }, + { "skill": 26, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 16 } ] }, { "id": 18, - "female": true, + "sex": 1, "skill_set": [ { "skill": 1, "level": 2 } ], "specialties": [ { "type":10, "val": 350, "subtype": 6, "info": 0 } ] }, { "id": 19, - "female": false, - "skill_set": [ { "skill": 4, }, - { "skill": 6, } ], + "sex": 0, + "skill_set": [ { "skill": 4, "level": 1 }, + { "skill": 6, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 22 } ] }, { "id": 20, - "female": false, + "sex": 0, "skill_set": [ { "skill": 26, "level": 2 } ], "specialties": [ { "type":2, "val": 5, "subtype": 26, "info": 0 } ] }, { "id": 21, - "female": false, - "skill_set": [ { "skill": 1, }, - { "skill": 22, } ], + "sex": 0, + "skill_set": [ { "skill": 1, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 18 } ] }, { "id": 22, - "female": false, - "skill_set": [ { "skill": 0, }, - { "skill": 26, } ], + "sex": 0, + "skill_set": [ { "skill": 0, "level": 1 }, + { "skill": 26, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 24 } ] }, { "id": 23, - "female": true, - "skill_set": [ { "skill": 1, }, - { "skill": 2, } ], + "sex": 1, + "skill_set": [ { "skill": 1, "level": 1 }, + { "skill": 2, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 2, "info": 0 } ] }, { "id": 24, "spell": 55, - "female": false, - "skill_set": [ { "skill": 7, }, - { "skill": 18, } ], + "sex": 0, + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 18, "level": 1 } ], "specialties": [ { "type":8, "val": 0, "subtype": 55, "info": 1 } ] }, { "id": 25, - "female": false, + "sex": 0, "spell": 37, "skill_set": [ { "skill": 7, "level": 2 }, - { "skill": 10, } ], + { "skill": 10, "level": 1 } ], "specialties": [ { "type":3, "val": 3, "subtype": 37, "info": 0 } ] }, { "id": 26, - "female": false, + "sex": 0, "spell": 42, - "skill_set": [ { "skill": 7, }, - { "skill": 24, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 24, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 24, "info": 0 } ] }, { "id": 27, - "female": true, + "sex": 1, "spell": 0, - "skill_set": [ { "skill": 7, }, - { "skill": 27, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 27, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 27, "info": 0 } ] }, { "id": 28, - "female": false, + "sex": 0, "spell": 15, - "skill_set": [ { "skill": 7, }, - { "skill": 11, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 11, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 11, "info": 0 } ] }, { "id": 29, "spell": 51, - "female": true, - "skill_set": [ { "skill": 7, }, - { "skill": 9, } ], + "sex": 1, + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 9, "level": 1 } ], "specialties": [ { "type":7, "val": 0, "subtype": 51, "info": 0 } ] }, { "id": 30, - "female": false, + "sex": 0, "spell": 16, - "skill_set": [ { "skill": 7, }, - { "skill": 25, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 25, "level": 1 } ], "specialties": [ { "type":3, "val": 3, "subtype": 16, "info": 0 } ] }, { "id": 31, - "female": false, + "sex": 0, "spell": 30, - "skill_set": [ { "skill": 7, }, - { "skill": 3, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 3, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 20 } ] }, { "id": 32, - "female": false, + "sex": 0, "spell": 27, - "skill_set": [ { "skill": 3, }, - { "skill": 8, } ], + "skill_set": [ { "skill": 3, "level": 1 }, + { "skill": 8, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 30 } ] }, { "id": 33, - "female": false, + "sex": 0, "spell": 15, "skill_set": [ { "skill": 18, "level": 2 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 36 } ] }, { "id": 34, "spell": 53, - "female": true, - "skill_set": [ { "skill": 8, }, - { "skill": 25, } ], + "sex": 1, + "skill_set": [ { "skill": 8, "level": 1 }, + { "skill": 25, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 32 } ] }, { "id": 35, - "female": true, + "sex": 1, "spell": 27, - "skill_set": [ { "skill": 18, }, - { "skill": 23, } ], + "skill_set": [ { "skill": 18, "level": 1 }, + { "skill": 23, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 23, "info": 0 } ] }, { "id": 36, - "female": false, + "sex": 0, "spell": 15, - "skill_set": [ { "skill": 8, }, - { "skill": 19, } ], + "skill_set": [ { "skill": 8, "level": 1 }, + { "skill": 19, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 146 } ] }, { "id": 37, - "female": false, + "sex": 0, "spell": 53, - "skill_set": [ { "skill": 18, }, - { "skill": 26, } ], + "skill_set": [ { "skill": 18, "level": 1 }, + { "skill": 26, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 38 } ] }, { "id": 38, - "female": true, + "sex": 1, "spell": 15, - "skill_set": [ { "skill": 8, }, - { "skill": 22, } ], + "skill_set": [ { "skill": 8, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":10, "val": 1, "subtype": 1, "info": 0 } ] }, { "id": 39, "spell": 15, - "female": true, - "skill_set": [ { "skill": 18, }, - { "skill": 24, } ], + "sex": 1, + "skill_set": [ { "skill": 18, "level": 1 }, + { "skill": 24, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 36 } ] }, { "id": 40, - "female": false, + "sex": 0, "spell": 60, "skill_set": [ { "skill": 7, "level": 2 } ], "specialties": [ { "type":3, "val": 3, "subtype": 60, "info": 0 } ] }, { "id": 41, - "female": false, + "sex": 0, "spell": 46, - "skill_set": [ { "skill": 7, }, - { "skill": 8, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 8, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 8, "info": 1 } ] }, { "id": 42, - "female": true, + "sex": 1, "spell": 35, - "skill_set": [ { "skill": 7, }, - { "skill": 11, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 11, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 11, "info": 0 } ] }, { "id": 43, - "female": true, + "sex": 1, "spell": 51, - "skill_set": [ { "skill": 7, }, - { "skill": 24, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 24, "level": 1 } ], "specialties": [ { "type":7, "val": 0, "subtype": 51, "info": 0 } ] }, { "id": 44, "spell": 27, - "female": false, - "skill_set": [ { "skill": 7, }, - { "skill": 10, } ], + "sex": 0, + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 10, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 34 } ] }, { "id": 45, - "female": false, + "sex": 0, "spell": 19, - "skill_set": [ { "skill": 7, }, - { "skill": 25, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 25, "level": 1 } ], "specialties": [ { "type":3, "val": 3, "subtype": 19, "info": 0 } ] }, { "id": 46, - "female": true, + "sex": 1, "spell": 53, - "skill_set": [ { "skill": 7, }, - { "skill": 4, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 4, "level": 1 } ], "specialties": [ { "type":8, "val": 0, "subtype": 53, "info": 0 } ] }, { "id": 47, - "female": true, + "sex": 1, "spell": 42, - "skill_set": [ { "skill": 7, }, - { "skill": 18, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 18, "level": 1 } ], "specialties": [ { "type":10, "val": 350, "subtype": 6, "info": 0 } ] }, { "id": 48, - "female": true, + "sex": 1, "skill_set": [ { "skill": 3, "level": 2 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 46 } ] }, { "id": 49, - "female": false, - "skill_set": [ { "skill": 7, }, - { "skill": 18, } ], + "sex": 0, + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 18, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 52 } ] }, { "id": 50, - "female": true, + "sex": 1, "skill_set": [ { "skill": 23, "level": 2 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 48 } ] }, { "id": 51, - "female": false, - "skill_set": [ { "skill": 19, }, - { "skill": 26, } ], + "sex": 0, + "skill_set": [ { "skill": 19, "level": 1 }, + { "skill": 26, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 42 } ] }, { "id": 52, - "female": true, - "skill_set": [ { "skill": 18, }, - { "skill": 22, } ], + "sex": 1, + "skill_set": [ { "skill": 18, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":10, "val": 350, "subtype": 6, "info": 0 } ] }, { "id": 53, - "female": false, - "skill_set": [ { "skill": 1, }, - { "skill": 3, } ], + "sex": 0, + "skill_set": [ { "skill": 1, "level": 1 }, + { "skill": 3, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 42 } ] }, { "id": 54, - "female": true, - "skill_set": [ { "skill": 20, }, - { "skill": 2, } ], + "sex": 1, + "skill_set": [ { "skill": 20, "level": 1 }, + { "skill": 2, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 146 } ] }, { "id": 55, - "female": true, + "sex": 1, "skill_set": [ { "skill": 22, "level": 2 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 50 } ] }, { "id": 56, "spell": 3, - "female": false, - "skill_set": [ { "skill": 7, }, - { "skill": 24, } ], + "sex": 0, + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 24, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 24, "info": 0 } ] }, { "id": 57, - "female": false, + "sex": 0, "spell": 22, - "skill_set": [ { "skill": 7, }, - { "skill": 18, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 18, "level": 1 } ], "specialties": [ { "type":3, "val": 3, "subtype": 22, "info": 0 } ] }, { "id": 58, - "female": false, + "sex": 0, "spell": 30, - "skill_set": [ { "skill": 7, }, - { "skill": 8, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 8, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 8, "info": 1 } ] }, { "id": 59, - "female": true, + "sex": 1, "spell": 45, - "skill_set": [ { "skill": 7, }, - { "skill": 10, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 10, "level": 1 } ], "specialties": [ { "type":8, "val": 0, "subtype": 45, "info": 0 } ] }, { "id": 60, - "female": false, + "sex": 0, "spell": 53, - "skill_set": [ { "skill": 7, }, - { "skill": 21, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 21, "level": 1 } ], "specialties": [ { "type":10, "val": 1, "subtype": 3, "info": 0 } ] }, { "id": 61, - "female": true, + "sex": 1, "spell": 43, - "skill_set": [ { "skill": 7, }, - { "skill": 11, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 11, "level": 1 } ], "specialties": [ { "type":8, "val": 0, "subtype": 43, "info": 0 } ] }, { "id": 62, - "female": false, + "sex": 0, "spell": 46, - "skill_set": [ { "skill": 7, }, - { "skill": 25, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 25, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 25, "info": 0 } ] }, { "id": 63, - "female": false, + "sex": 0, "spell": 21, - "skill_set": [ { "skill": 7, }, - { "skill": 6, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 6, "level": 1 } ], "specialties": [ { "type":3, "val": 3, "subtype": 21, "info": 0 } ] }, { "id": 64, - "female": false, + "sex": 0, "spell": 53, - "skill_set": [ { "skill": 12, }, - { "skill": 26, } ], + "skill_set": [ { "skill": 12, "level": 1 }, + { "skill": 26, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 58 } ] }, { "id": 65, - "female": false, + "sex": 0, "spell": 46, - "skill_set": [ { "skill": 12, }, - { "skill": 20, } ], + "skill_set": [ { "skill": 12, "level": 1 }, + { "skill": 20, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 62 } ] }, { "id": 66, - "female": false, + "sex": 0, "spell": 54, - "skill_set": [ { "skill": 12, }, - { "skill": 21, } ], + "skill_set": [ { "skill": 12, "level": 1 }, + { "skill": 21, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 64 } ] }, { "id": 67, - "female": true, + "sex": 1, "spell": 15, - "skill_set": [ { "skill": 12, }, - { "skill": 19, } ], + "skill_set": [ { "skill": 12, "level": 1 }, + { "skill": 19, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 60 } ] }, { "id": 68, - "female": true, + "sex": 1, "spell": 15, - "skill_set": [ { "skill": 12, }, - { "skill": 22, } ], + "skill_set": [ { "skill": 12, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 66 } ] }, { "id": 69, - "female": true, + "sex": 1, "spell": 15, "skill_set": [ { "skill": 12, "level": 2 } ], "specialties": [ { "type":2, "val": 5, "subtype": 12, "info": 0 } ] }, { "id": 70, - "female": false, + "sex": 0, "spell": 15, - "skill_set": [ { "skill": 12, }, - { "skill": 22, } ], + "skill_set": [ { "skill": 12, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":10, "val": 350, "subtype": 6, "info": 0 } ] }, { "id": 71, - "female": false, + "sex": 0, "spell": 27, - "skill_set": [ { "skill": 12, }, - { "skill": 23, } ], + "skill_set": [ { "skill": 12, "level": 1 }, + { "skill": 23, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 56 } ] }, { "id": 72, - "female": true, + "sex": 1, "spell": 24, - "skill_set": [ { "skill": 12, }, - { "skill": 18, } ], + "skill_set": [ { "skill": 12, "level": 1 }, + { "skill": 18, "level": 1 } ], "specialties": [ { "type":3, "val": 3, "subtype": 24, "info": 0 } ] }, { "id": 73, - "female": true, + "sex": 1, "spell": 23, - "skill_set": [ { "skill": 12, }, - { "skill": 7, } ], + "skill_set": [ { "skill": 12, "level": 1 }, + { "skill": 7, "level": 1 } ], "specialties": [ { "type":3, "val": 3, "subtype": 23, "info": 0 } ] }, { "id": 74, - "female": false, + "sex": 0, "spell": 54, - "skill_set": [ { "skill": 12, }, - { "skill": 25, } ], + "skill_set": [ { "skill": 12, "level": 1 }, + { "skill": 25, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 25, "info": 0 } ] }, { "id": 75, - "female": false, + "sex": 0, "spell": 27, - "skill_set": [ { "skill": 12, }, - { "skill": 11, } ], + "skill_set": [ { "skill": 12, "level": 1 }, + { "skill": 11, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 11, "info": 1 } ] }, { "id": 76, - "female": false, + "sex": 0, "spell": 39, - "skill_set": [ { "skill": 12, }, - { "skill": 8, } ], + "skill_set": [ { "skill": 12, "level": 1 }, + { "skill": 8, "level": 1 } ], "specialties": [ { "type":3, "val": 39, "subtype": 0, "info": 3 } ] }, { "id": 77, - "female": true, + "sex": 1, "spell": 46, - "skill_set": [ { "skill": 12, }, - { "skill": 21, } ], + "skill_set": [ { "skill": 12, "level": 1 }, + { "skill": 21, "level": 1 } ], "specialties": [ { "type":8, "val": 0, "subtype": 46, "info": 0 } ] }, { "id": 78, - "female": true, + "sex": 1, "spell": 42, "skill_set": [ { "skill": 12, "level": 2 } ], "specialties": [ { "type":2, "val": 5, "subtype": 12, "info": 0 } ] }, { "id": 79, - "female": false, + "sex": 0, "spell": 30, - "skill_set": [ { "skill": 12, }, - { "skill": 24, } ], + "skill_set": [ { "skill": 12, "level": 1 }, + { "skill": 24, "level": 1 } ], "specialties": [ { "type":10, "val": 350, "subtype": 6, "info": 0 } ] }, { "id": 80, - "female": true, - "skill_set": [ { "skill": 3, }, - { "skill": 6, } ], + "sex": 1, + "skill_set": [ { "skill": 3, "level": 1 }, + { "skill": 6, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 72 } ] }, { "id": 81, - "female": false, - "skill_set": [ { "skill": 20, }, - { "skill": 22, } ], + "sex": 0, + "skill_set": [ { "skill": 20, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 146 } ] }, { "id": 82, - "female": false, - "skill_set": [ { "skill": 19, }, - { "skill": 22, } ], + "sex": 0, + "skill_set": [ { "skill": 19, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 78 } ] }, { "id": 83, - "female": false, - "skill_set": [ { "skill": 6, }, - { "skill": 26, } ], + "sex": 0, + "skill_set": [ { "skill": 6, "level": 1 }, + { "skill": 26, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 74 } ] }, { "id": 84, - "female": false, + "sex": 0, "skill_set": [ { "skill": 22, "level": 2 } ], "specialties": [ { "type":10, "val": 350, "subtype": 6, "info": 0 } ] }, { "id": 85, - "female": false, - "skill_set": [ { "skill": 2, }, - { "skill": 19, } ], + "sex": 0, + "skill_set": [ { "skill": 2, "level": 1 }, + { "skill": 19, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 2, "info": 0 } ] }, { "id": 86, - "female": true, - "skill_set": [ { "skill": 6, }, - { "skill": 18, } ], + "sex": 1, + "skill_set": [ { "skill": 6, "level": 1 }, + { "skill": 18, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 80 } ] }, { "id": 87, - "female": false, - "skill_set": [ { "skill": 19, }, - { "skill": 22, } ], + "sex": 0, + "skill_set": [ { "skill": 19, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 70 } ] }, { "id": 88, "spell": 38, - "female": false, - "skill_set": [ { "skill": 7, }, - { "skill": 18, } ], + "sex": 0, + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 18, "level": 1 } ], "specialties": [ { "type":3, "val": 3, "subtype": 38, "info": 0 } ] }, { "id": 89, - "female": false, + "sex": 0, "spell": 27, - "skill_set": [ { "skill": 7, }, - { "skill": 8, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 8, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 8, "info": 1 } ] }, { "id": 90, - "female": false, + "sex": 0, "spell": 43, - "skill_set": [ { "skill": 7, }, - { "skill": 25, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 25, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 25, "info": 0 } ] }, { "id": 91, - "female": true, + "sex": 1, "spell": 38, "skill_set": [ { "skill": 7, "level": 2 } ], "specialties": [ { "type":3, "val": 3, "subtype": 38, "info": 0 } ] }, { "id": 92, - "female": false, + "sex": 0, "spell": 54, - "skill_set": [ { "skill": 7, }, - { "skill": 11, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 11, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 11, "info": 1 } ] }, { "id": 93, - "female": false, + "sex": 0, "spell": 23, - "skill_set": [ { "skill": 7, }, - { "skill": 3, "level": 2 } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 3, "level": 2 } ], "specialties": [ { "type":3, "val": 3, "subtype": 23, "info": 0 } ] }, { "id": 94, - "female": true, + "sex": 1, "spell": 30, - "skill_set": [ { "skill": 7, }, - { "skill": 24, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 24, "level": 1 } ], "specialties": [ { "type":10, "val": 1, "subtype": 4, "info": 0 } ] }, { "id": 95, - "female": false, + "sex": 0, "spell": 46, - "skill_set": [ { "skill": 7, }, - { "skill": 21, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 21, "level": 1 } ], "specialties": [ { "type":8, "val": 0, "subtype": 46, "info": 0 } ] }, { "id": 96, - "female": false, - "skill_set": [ { "skill": 22, }, - { "skill": 10, } ], + "sex": 0, + "skill_set": [ { "skill": 22, "level": 1 }, + { "skill": 10, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 94 } ] }, { "id": 97, - "female": false, - "skill_set": [ { "skill": 22, }, - { "skill": 20, } ], + "sex": 0, + "skill_set": [ { "skill": 22, "level": 1 }, + { "skill": 20, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 146 } ] }, { "id": 98, - "female": false, - "skill_set": [ { "skill": 22, }, - { "skill": 1, } ], + "sex": 0, + "skill_set": [ { "skill": 22, "level": 1 }, + { "skill": 1, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 88 } ] }, { "id": 99, - "female": true, - "skill_set": [ { "skill": 22, }, - { "skill": 3, } ], + "sex": 1, + "skill_set": [ { "skill": 22, "level": 1 }, + { "skill": 3, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 92 } ] }, { "id": 100, - "female": true, - "skill_set": [ { "skill": 22, }, - { "skill": 0, } ] }, + "sex": 1, + "skill_set": [ { "skill": 22, "level": 1 }, + { "skill": 0, "level": 1 } ] }, { "id": 101, - "female": false, - "skill_set": [ { "skill": 22, }, - { "skill": 26, } ], + "sex": 0, + "skill_set": [ { "skill": 22, "level": 1 }, + { "skill": 26, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 84 } ] }, { "id": 102, - "female": false, + "sex": 0, "skill_set": [ { "skill": 22, "level": 2 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 90 } ] }, { "id": 103, - "female": false, - "skill_set": [ { "skill": 22, }, - { "skill": 19, } ], + "sex": 0, + "skill_set": [ { "skill": 22, "level": 1 }, + { "skill": 19, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 22, "info": 0 } ] }, { "id": 104, "spell": 43, - "female": true, - "skill_set": [ { "skill": 7, }, - { "skill": 25, } ], + "sex": 1, + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 25, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 86 } ] }, { "id": 105, - "female": false, + "sex": 0, "spell": 15, - "skill_set": [ { "skill": 7, }, - { "skill": 6, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 6, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 25, "info": 0 } ] }, { "id": 106, - "female": true, + "sex": 1, "spell": 46, - "skill_set": [ { "skill": 7, }, - { "skill": 2, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 2, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 90 } ] }, { "id": 107, - "female": false, + "sex": 0, "spell": 53, - "skill_set": [ { "skill": 7, }, - { "skill": 19, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 19, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 2, "info": 0 } ] }, { "id": 108, - "female": false, + "sex": 0, "spell": 44, - "skill_set": [ { "skill": 7, }, - { "skill": 20, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 20, "level": 1 } ], "specialties": [ { "type":8, "val": 0, "subtype": 53, "info": 0 } ] }, { "id": 109, "spell": 54, - "female": true, - "skill_set": [ { "skill": 7, }, - { "skill": 22, } ], + "sex": 1, + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":8, "val": 0, "subtype": 44, "info": 0 } ] }, { "id": 110, - "female": true, + "sex": 1, "spell": 30, - "skill_set": [ { "skill": 7, }, - { "skill": 11, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 11, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 25, "info": 0 } ] }, { "id": 111, - "female": false, + "sex": 0, "spell": 43, - "skill_set": [ { "skill": 7, }, - { "skill": 26, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 26, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 11, "info": 1 } ] }, { "id": 112, - "female": false, - "skill_set": [ { "skill": 23, }, - { "skill": 26, } ], + "sex": 0, + "skill_set": [ { "skill": 23, "level": 1 }, + { "skill": 26, "level": 1 } ], "specialties": [ { "type":10, "val": 1, "subtype": 5, "info": 0 } ] }, { "id": 113, - "female": false, - "skill_set": [ { "skill": 23, }, - { "skill": 6, } ], + "sex": 0, + "skill_set": [ { "skill": 23, "level": 1 }, + { "skill": 6, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 106 } ] }, { "id": 114, - "female": false, - "skill_set": [ { "skill": 23, }, - { "skill": 1, } ], + "sex": 0, + "skill_set": [ { "skill": 23, "level": 1 }, + { "skill": 1, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 98 } ] }, { "id": 115, - "female": false, + "sex": 0, "skill_set": [ { "skill": 23, "level": 2 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 100 } ] }, { "id": 116, - "female": false, - "skill_set": [ { "skill": 23, }, - { "skill": 22, } ], + "sex": 0, + "skill_set": [ { "skill": 23, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 23, "info": 0 } ] }, { "id": 117, - "female": false, - "skill_set": [ { "skill": 23, }, - { "skill": 0, } ], + "sex": 0, + "skill_set": [ { "skill": 23, "level": 1 }, + { "skill": 0, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 102 } ] }, { "id": 118, - "female": false, - "skill_set": [ { "skill": 23, }, - { "skill": 20, } ], + "sex": 0, + "skill_set": [ { "skill": 23, "level": 1 }, + { "skill": 20, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 104 } ] }, { "id": 119, - "female": false, - "skill_set": [ { "skill": 23, }, - { "skill": 3, } ], + "sex": 0, + "skill_set": [ { "skill": 23, "level": 1 }, + { "skill": 3, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 146 } ] }, { "id": 120, "spell": 45, - "female": true, + "sex": 1, "skill_set": [ { "skill": 7, "level": 2 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 108 } ] }, { "id": 121, - "female": true, + "sex": 1, "spell": 15, - "skill_set": [ { "skill": 7, }, - { "skill": 8, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 8, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 8, "info": 1 } ] }, { "id": 122, - "female": true, + "sex": 1, "spell": 54, - "skill_set": [ { "skill": 7, }, - { "skill": 5, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 5, "level": 1 } ], "specialties": [ { "type":2, "val": 2, "subtype": 5, "info": 1 } ] }, { "id": 123, - "female": true, + "sex": 1, "spell": 31, - "skill_set": [ { "skill": 7, }, - { "skill": 27, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 27, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 27, "info": 1 } ] }, { "id": 124, - "female": true, + "sex": 1, "spell": 46, - "skill_set": [ { "skill": 7, }, - { "skill": 21, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 21, "level": 1 } ], "specialties": [ { "type":8, "val": 0, "subtype": 46, "info": 0 } ] }, { "id": 125, - "female": true, + "sex": 1, "spell": 27, - "skill_set": [ { "skill": 7, }, - { "skill": 25, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 25, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 25, "info": 0 } ] }, { "id": 126, - "female": true, + "sex": 1, "spell": 35, - "skill_set": [ { "skill": 7, }, - { "skill": 24, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 24, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 24, "info": 0 } ] }, { "id": 127, - "female": true, + "sex": 1, "spell": 46, - "skill_set": [ { "skill": 7, }, - { "skill": 11, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 11, "level": 1 } ], "specialties": [ { "type":2, "val": 5, "subtype": 11, "info": 1 } ] }, { "id": 128, - "female": true, - "skill_set": [ { "skill": 20, }, - { "skill": 22, } ], + "sex": 1, + "skill_set": [ { "skill": 20, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":4, "val": 3, "subtype": 1, "info": 120 }, - { "type":4, "val": 3, "subtype": 2, "info": 120 } ] }, + { "type":4, "val": 3, "subtype": 2, "info": 120 } ] }, { "id": 129, - "female": true, - "skill_set": [ { "skill": 13, }, - { "skill": 19, } ], + "sex": 1, + "skill_set": [ { "skill": 13, "level": 1 }, + { "skill": 19, "level": 1 } ], "specialties": [ { "type":4, "val": 2, "subtype": 1, "info": 113 }, - { "type":4, "val": 1, "subtype": 2, "info": 113 }, - { "type":4, "val": 5, "subtype": 4, "info": 113 } ] }, + { "type":4, "val": 1, "subtype": 2, "info": 113 }, + { "type":4, "val": 5, "subtype": 4, "info": 113 } ] }, { "id": 130, - "female": true, - "skill_set": [ { "skill": 20, }, - { "skill": 22, } ], + "sex": 1, + "skill_set": [ { "skill": 20, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":4, "val": 1, "subtype": 1, "info": 114 }, - { "type":4, "val": 2, "subtype": 1, "info": 114 }, - { "type":4, "val": 2, "subtype": 3, "info": 114 } ] }, + { "type":4, "val": 2, "subtype": 1, "info": 114 }, + { "type":4, "val": 2, "subtype": 3, "info": 114 } ] }, { "id": 131, - "female": true, + "sex": 1, "skill_set": [ { "skill": 19, "level": 2 } ], "specialties": [ { "type":4, "val": 2, "subtype": 1, "info": 115 } ] }, { "id": 132, - "female": false, - "skill_set": [ { "skill": 2, }, - { "skill": 22, } ], + "sex": 0, + "skill_set": [ { "skill": 2, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":4, "val": 3, "subtype": 1, "info": 120 }, - { "type":4, "val": 3, "subtype": 2, "info": 120 } ] }, + { "type":4, "val": 3, "subtype": 2, "info": 120 } ] }, { "id": 133, - "female": false, - "skill_set": [ { "skill": 13, }, - { "skill": 19, } ], + "sex": 0, + "skill_set": [ { "skill": 13, "level": 1 }, + { "skill": 19, "level": 1 } ], "specialties": [ { "type":4, "val": 2, "subtype": 1, "info": 113 }, - { "type":4, "val": 1, "subtype": 2, "info": 113 }, - { "type":4, "val": 5, "subtype": 4, "info": 113 } ] }, + { "type":4, "val": 1, "subtype": 2, "info": 113 }, + { "type":4, "val": 5, "subtype": 4, "info": 113 } ] }, { "id": 134, - "female": false, + "sex": 0, "skill_set": [ { "skill": 22, "level": 2 } ], "specialties": [ { "type":4, "val": 1, "subtype": 1, "info": 114 }, - { "type":4, "val": 2, "subtype": 1, "info": 114 }, - { "type":4, "val": 2, "subtype": 3, "info": 114 } ] }, + { "type":4, "val": 2, "subtype": 1, "info": 114 }, + { "type":4, "val": 2, "subtype": 3, "info": 114 } ] }, { "id": 135, - "female": false, - "skill_set": [ { "skill": 19, }, - { "skill": 21, } ], + "sex": 0, + "skill_set": [ { "skill": 19, "level": 1 }, + { "skill": 21, "level": 1 } ], "specialties": [ { "type":4, "val": 2, "subtype": 1, "info": 115 } ] }, { "id": 136, "spell": 13, - "female": true, - "skill_set": [ { "skill": 7, }, - { "skill": 14, } ], + "sex": 1, + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 14, "level": 1 } ], "specialties": [ { "type":5, "val": 100, "subtype": 13, "info": 0 } ] }, { "id": 137, - "female": true, + "sex": 1, "spell": 53, - "skill_set": [ { "skill": 7, }, - { "skill": 15, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 15, "level": 1 } ], "specialties": [ { "type":8, "val": 0, "subtype": 53, "info": 0 } ] }, { "id": 138, - "female": true, + "sex": 1, "spell": 15, - "skill_set": [ { "skill": 7, }, - { "skill": 16, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 16, "level": 1 } ], "specialties": [ { "type":5, "val": 50, "subtype": 15, "info": 0 } ] }, { "id": 139, - "female": true, + "sex": 1, "spell": 46, - "skill_set": [ { "skill": 7, }, - { "skill": 17, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 17, "level": 1 } ], "specialties": [ { "type":8, "val": 0, "subtype": 46, "info": 0 } ] }, { "id": 140, - "female": false, + "sex": 0, "spell": 43, - "skill_set": [ { "skill": 7, }, - { "skill": 14, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 14, "level": 1 } ], "specialties": [ { "type":8, "val": 0, "subtype": 43, "info": 0 } ] }, { "id": 141, - "female": false, + "sex": 0, "spell": 47, - "skill_set": [ { "skill": 7, }, - { "skill": 15, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 15, "level": 1 } ], "specialties": [ { "type":8, "val": 0, "subtype": 47, "info": 0 } ] }, { "id": 142, - "female": false, + "sex": 0, "spell": 35, - "skill_set": [ { "skill": 7, }, - { "skill": 16, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 16, "level": 1 } ], "specialties": [ { "type":10, "val": 350, "subtype": 6, "info": 0 } ] }, { "id": 143, - "female": false, + "sex": 0, "spell": 54, - "skill_set": [ { "skill": 7, }, - { "skill": 17, } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 17, "level": 1 } ], "specialties": [ { "type":10, "val": 350, "subtype": 6, "info": 0 } ] }, { "id": 144, - "female": false, + "sex": 0, "skill_set": [ { "skill": 6, "level": 2 } ], "specialties": [ { "type":12, "val": 2, "subtype": 0, "info": 0 } ] }, { "id": 145, - "female": true, + "sex": 1, "spell": 22, - "skill_set": [ { "skill": 7, }, - { "skill": 14, "level": 3 } ], + "skill_set": [ { "skill": 7, "level": 1 }, + { "skill": 14, "level": 3 } ], "specialties": [ { "type":11, "val": 14, "subtype": 0, "info": 0 } ] }, { "id": 146, - "female": true, - "skill_set": [ { "skill": 6, }, - { "skill": 22, } ], + "sex": 1, + "skill_set": [ { "skill": 6, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 4 } ] }, { "id": 147, - "female": false, + "sex": 0, "spell": 53, "skill_set": [ { "skill": 7, "level": 2 } ], "specialties": [ { "type":9, "val": 0, "subtype": 8, "info": 136 }, - { "type":9, "val": 0, "subtype": 34, "info": 136 } ] }, + { "type":9, "val": 0, "subtype": 34, "info": 136 } ] }, { "id": 148, - "female": false, - "skill_set": [ { "skill": 1, }, - { "skill": 6, } ], + "sex": 0, + "skill_set": [ { "skill": 1, "level": 1 }, + { "skill": 6, "level": 1 } ], "specialties": [ { "type":9, "val": 0, "subtype": 2, "info": 137 }, - { "type":9, "val": 0, "subtype": 18, "info": 137 } ] }, + { "type":9, "val": 0, "subtype": 18, "info": 137 } ] }, { "id": 149, - "female": false, + "sex": 0, "skill_set": [ { "skill": 22, "level": 2 } ], "specialties": [ { "type":4, "val": 5, "subtype": 1, "info": 96 }, - { "type":4, "val": 5, "subtype": 2, "info": 96 }, - { "type":4, "val": 10, "subtype": 3, "info": 96 } ] }, + { "type":4, "val": 5, "subtype": 2, "info": 96 }, + { "type":4, "val": 10, "subtype": 3, "info": 96 } ] }, { "id": 150, - "female": false, + "sex": 0, "spell": 54, "skill_set": [ { "skill": 12, "level": 2 } ], "specialties": [ { "type":4, "val": 5, "subtype": 1, "info": 66 }, - { "type":4, "val": 5, "subtype": 2, "info": 66 }, - { "type":4, "val": 10, "subtype": 3, "info": 66 } ] }, + { "type":4, "val": 5, "subtype": 2, "info": 66 }, + { "type":4, "val": 10, "subtype": 3, "info": 66 } ] }, { "id": 151, - "female": true, + "sex": 1, "spell": 15, - "skill_set": [ { "skill": 13, }, - { "skill": 19, } ], + "skill_set": [ { "skill": 13, "level": 1 }, + { "skill": 19, "level": 1 } ], "specialties": [ { "type":13, "val": 5, "subtype": 1, "info": 0 }, - { "type":13, "val": 5, "subtype": 2, "info": 0 } ] }, + { "type":13, "val": 5, "subtype": 2, "info": 0 } ] }, { "id": 152, - "female": false, - "skill_set": [ { "skill": 6, }, - { "skill": 23, } ], + "sex": 0, + "skill_set": [ { "skill": 6, "level": 1 }, + { "skill": 23, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 4 } ] }, { "id": 153, - "female": true, + "sex": 1, "spell": 15, - "skill_set": [ { "skill": 13, }, - { "skill": 19, } ], + "skill_set": [ { "skill": 13, "level": 1 }, + { "skill": 19, "level": 1 } ], "specialties": [ { "type":13, "val": 1, "subtype": 1, "info": 5 }, - { "type":13, "val": 1, "subtype": 1, "info": 5 } ] }, + { "type":13, "val": 1, "subtype": 1, "info": 5 } ] }, { "id": 154, - "female": false, - "skill_set": [ { "skill": 19, }, - { "skill": 22, } ], + "sex": 0, + "skill_set": [ { "skill": 19, "level": 1 }, + { "skill": 22, "level": 1 } ], "specialties": [ { "type":1, "val": 0, "subtype": 0, "info": 90 } ] }, { "id": 155, - "female": false, - "skill_set": [ { "skill": 6, }, - { "skill": 19, } ], + "sex": 0, + "skill_set": [ { "skill": 6, "level": 1 }, + { "skill": 19, "level": 1 } ], "specialties": [ { "type":4, "val": 4, "subtype": 1, "info": 54 }, - { "type":4, "val": 2, "subtype": 2, "info": 54 }, - { "type":4, "val": 1, "subtype": 5, "info": 54 } ] } + { "type":4, "val": 2, "subtype": 2, "info": 54 }, + { "type":4, "val": 1, "subtype": 5, "info": 54 } ] } ] } diff --git a/lib/CCreatureHandler.cpp b/lib/CCreatureHandler.cpp index 2e6d7b2d3..dbf10565f 100644 --- a/lib/CCreatureHandler.cpp +++ b/lib/CCreatureHandler.cpp @@ -479,6 +479,7 @@ void CCreatureHandler::loadCreatures() for (JsonVector::const_iterator it = creatures_vec.begin(); it!=creatures_vec.end(); ++it) { const JsonNode &creature = *it; int creatureID = creature["id"].Float(); + const JsonNode *value; /* A creature can have several names. */ const JsonVector &names_vec = creature["name"].Vector(); @@ -494,11 +495,20 @@ void CCreatureHandler::loadCreatures() c->faction = creature["faction"].Float(); c->animDefName = creature["defname"].String(); - c->upgrades.insert(creature["upgrade"].Float()); - idToProjectile[creatureID] = creature["projectile_defname"].String(); - idToProjectileSpin[creatureID] = creature["projectile_spin"].Bool(); + value = &creature["upgrade"]; + if (!value->isNull()) + c->upgrades.insert(value->Float()); - if (creature["turret_shooter"].Bool(false)) + value = &creature["projectile_defname"]; + if (!value->isNull()) { + idToProjectile[creatureID] = value->String(); + + value = &creature["projectile_spin"]; + idToProjectileSpin[creatureID] = value->Bool(); + } + + value = &creature["turret_shooter"]; + if (!value->isNull() && value->Bool()) factionToTurretCreature[c->faction] = creatureID; } diff --git a/lib/CHeroHandler.cpp b/lib/CHeroHandler.cpp index 1b18a7b9f..866c6136b 100644 --- a/lib/CHeroHandler.cpp +++ b/lib/CHeroHandler.cpp @@ -290,24 +290,29 @@ void CHeroHandler::loadHeroes() int hid = hero["id"].Float(); const JsonNode *value; - //sex: 0=male, 1=female - heroes[hid]->sex = !hero["female"].Bool(false); + heroes[hid]->sex = hero["sex"].Float(); BOOST_FOREACH(const JsonNode &set, hero["skill_set"].Vector()) { - heroes[hid]->secSkillsInit.push_back(std::make_pair(set["skill"].Float(), set["level"].Float(1))); + heroes[hid]->secSkillsInit.push_back(std::make_pair(set["skill"].Float(), set["level"].Float())); } - heroes[hid]->startingSpell = hero["spell"].Float(-1); + value = &hero["spell"]; + if (!value->isNull()) { + heroes[hid]->startingSpell = value->Float(); + } - BOOST_FOREACH(const JsonNode &specialty, hero["specialties"].Vector()) { - SSpecialtyInfo dummy; + value = &hero["specialties"]; + if (!value->isNull()) { + BOOST_FOREACH(const JsonNode &specialty, value->Vector()) { + SSpecialtyInfo dummy; - dummy.type = specialty["type"].Float(); - dummy.val = specialty["val"].Float(0); - dummy.subtype = specialty["subtype"].Float(0); - dummy.additionalinfo = specialty["info"].Float(0); + dummy.type = specialty["type"].Float(); + dummy.val = specialty["val"].Float(); + dummy.subtype = specialty["subtype"].Float(); + dummy.additionalinfo = specialty["info"].Float(); heroes[hid]->spec.push_back(dummy); //put a copy of dummy + } } } diff --git a/lib/CTownHandler.cpp b/lib/CTownHandler.cpp index 791cb89ea..920e66f57 100644 --- a/lib/CTownHandler.cpp +++ b/lib/CTownHandler.cpp @@ -62,6 +62,7 @@ void CTownHandler::loadStructures() // Read buildings coordinates for that city BOOST_FOREACH(const JsonNode &node, town_node["defnames"].Vector()) { Structure *vinya = new Structure; + const JsonNode *value; vinya->group = -1; vinya->townID = townID; @@ -72,8 +73,13 @@ void CTownHandler::loadStructures() vinya->pos.y = node["y"].Float(); vinya->pos.z = 0; - vinya->borderName = node["border"].String(); - vinya->areaName = node["area"].String(); + value = &node["border"]; + if (!value->isNull()) + vinya->borderName = value->String(); + + value = &node["area"]; + if (!value->isNull()) + vinya->areaName = value->String(); town[vinya->ID] = vinya; } diff --git a/lib/JsonNode.cpp b/lib/JsonNode.cpp index 1e8ebb924..f1fc79d9c 100644 --- a/lib/JsonNode.cpp +++ b/lib/JsonNode.cpp @@ -125,42 +125,32 @@ JsonMap & JsonNode::Struct() } -const bool & JsonNode::Bool(const bool &value) const +const bool & JsonNode::Bool() const { - if (isNull()) - return value; assert(type == DATA_BOOL); return data.Bool; } -const float & JsonNode::Float(const float &value) const +const float & JsonNode::Float() const { - if (isNull()) - return value; assert(type == DATA_FLOAT); return data.Float; } -const std::string & JsonNode::String(const std::string &value) const +const std::string & JsonNode::String() const { - if (isNull()) - return value; assert(type == DATA_STRING); return *data.String; } -const JsonVector & JsonNode::Vector(const JsonVector &value) const +const JsonVector & JsonNode::Vector() const { - if (isNull()) - return value; assert(type == DATA_VECTOR); return *data.Vector; } -const JsonMap & JsonNode::Struct(const JsonMap &value) const +const JsonMap & JsonNode::Struct() const { - if (isNull()) - return value; assert(type == DATA_STRUCT); return *data.Struct; } diff --git a/lib/JsonNode.h b/lib/JsonNode.h index 7f8e083a6..f6c066ace 100644 --- a/lib/JsonNode.h +++ b/lib/JsonNode.h @@ -60,18 +60,19 @@ public: //non-const accessors, node will change type on type mismatch bool & Bool(); + int & Int(); float & Float(); std::string & String(); JsonVector & Vector(); JsonMap & Struct(); //const accessors, will cause assertion failure on type mismatch - //if node is null then default value will be returned instead - const bool & Bool(const bool &value = false) const; - const float & Float(const float &value = 0) const; - const std::string & String(const std::string &value = "") const; - const JsonVector & Vector(const JsonVector &value = JsonVector()) const; - const JsonMap & Struct(const JsonMap &value = JsonMap()) const; + const bool & Bool() const; + const int & Int() const; + const float & Float() const; + const std::string & String() const; + const JsonVector & Vector() const; + const JsonMap & Struct() const; //formatted output of this node in JSON format void write(std::ostream &out, std::string prefix="") const;