1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-01-12 02:28:11 +02:00

Implemented fixed set of creatures that can get week of double growth. Minor fix.

This commit is contained in:
DjWarmonger 2010-08-29 07:49:04 +00:00
parent 88fd213e87
commit 6005e7a6ee
4 changed files with 14 additions and 4 deletions

View File

@ -45,6 +45,7 @@ CCreatureHandler::CCreatureHandler()
// Good: Castle, Rampart, Tower // Evil: Inferno, Necropolis, Dungeon
// Neutral: Stronghold, Fortess, Conflux
factionAlignments += 1, 1, 1, -1, -1, -1, 0, 0, 0;
doubledCreatures += 4, 14, 20, 28, 42, 44, 60, 70, 72, 85, 86, 100, 104; //according to Strategija
}
int CCreature::getQuantityID(const int & quantity)

View File

@ -19,6 +19,7 @@
* Full text of license available in license.txt file, in main folder
*
*/
#define ALLCREATURESGETDOUBLEMONTHS false
class CLodHandler;
class CCreatureHandler;
@ -101,6 +102,7 @@ class DLL_EXPORT CCreatureHandler
public:
CBonusSystemNode *globalEffects;
std::set<int> notUsedMonsters;
std::set<TCreature> doubledCreatures; //they get double week
std::vector<CCreature*> creatures; //creature ID -> creature info
std::map<int,std::vector<CCreature*> > levelCreatures; //level -> list of creatures
std::map<std::string,int> nameToID;

View File

@ -493,7 +493,6 @@ bool CCreatureTypeLimiter::limit(const Bonus &b, const CBonusSystemNode &node) c
}
break;
default:
//return false; //don't delete it if it's other type of node
return true;
}
}

View File

@ -1017,9 +1017,17 @@ void CGameHandler::newTurn()
if (monthType < 40) //double growth
{
n.specialWeek = NewTurn::DOUBLE_GROWTH;
std::pair<int,int> newMonster(54, VLC->creh->pickRandomMonster(boost::ref(rand)));
n.creatureid = newMonster.second;
if (ALLCREATURESGETDOUBLEMONTHS)
{
std::pair<int,int> newMonster(54, VLC->creh->pickRandomMonster(boost::ref(rand)));
n.creatureid = newMonster.second;
}
else
{
std::set<TCreature>::const_iterator it = VLC->creh->doubledCreatures.begin();
std::advance (it, rand() % VLC->creh->doubledCreatures.size()); //picking random elelemnt of set is tiring
n.creatureid = *it;
}
}
else if (monthType < 90)
n.specialWeek = NewTurn::NORMAL;