diff --git a/lib/constants/EntityIdentifiers.h b/lib/constants/EntityIdentifiers.h index c4a1f6272..3bc547247 100644 --- a/lib/constants/EntityIdentifiers.h +++ b/lib/constants/EntityIdentifiers.h @@ -298,7 +298,7 @@ public: HORDE_2_UPGR, GRAIL, EXTRA_TOWN_HALL, EXTRA_CITY_HALL, EXTRA_CAPITOL, DWELL_FIRST=30, DWELL_LVL_2, DWELL_LVL_3, DWELL_LVL_4, DWELL_LVL_5, DWELL_LVL_6, DWELL_LAST=36, DWELL_UP_FIRST=37, DWELL_LVL_2_UP, DWELL_LVL_3_UP, DWELL_LVL_4_UP, DWELL_LVL_5_UP, - DWELL_LVL_6_UP, DWELL_UP_LAST=43, DWELL_LVL_8=150, DWELL_LVL_8_UP=151, + DWELL_LVL_6_UP, DWELL_UP_LAST=43, DWELL_LVL_8=150, DWELL_LVL_8_UP=151, //150-154 reserved for 8. creature with potential upgrades DWELL_LVL_1 = DWELL_FIRST, DWELL_LVL_7 = DWELL_LAST, @@ -337,7 +337,10 @@ public: if (it != tmp.end()) return std::distance(tmp.begin(), it); } - return (dwelling - DWELL_FIRST) % (GameConstants::CREATURES_PER_TOWN - 1); + if(dwelling >= BuildingIDBase::DWELL_LVL_8 && dwelling < BuildingIDBase::DWELL_LVL_8 + 5) + return 7; + else + return (dwelling - DWELL_FIRST) % (GameConstants::CREATURES_PER_TOWN - 1); } static int getUpgradedFromDwelling(BuildingIDBase dwelling) @@ -349,15 +352,18 @@ public: if (it != tmp.end()) return i; } - return (dwelling - DWELL_FIRST) / (GameConstants::CREATURES_PER_TOWN - 1); + if(dwelling >= BuildingIDBase::DWELL_LVL_8 && dwelling < BuildingIDBase::DWELL_LVL_8 + 5) + return dwelling - BuildingIDBase::DWELL_LVL_8; + else + return (dwelling - DWELL_FIRST) / (GameConstants::CREATURES_PER_TOWN - 1); } static void advanceDwelling(BuildingIDBase & dwelling) { - if(dwelling != BuildingIDBase::DWELL_LVL_8) - dwelling.advance(GameConstants::CREATURES_PER_TOWN - 1); - else + if(dwelling >= BuildingIDBase::DWELL_LVL_8 && dwelling < BuildingIDBase::DWELL_LVL_8 + 5) dwelling.advance(1); + else + dwelling.advance(GameConstants::CREATURES_PER_TOWN - 1); } bool IsSpecialOrGrail() const