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

Next part of creature weeks code.

This commit is contained in:
DjWarmonger
2010-08-24 14:26:57 +00:00
parent 7b5fefb65e
commit 630dc7f7f2
10 changed files with 274 additions and 141 deletions

View File

@@ -632,10 +632,42 @@ DLL_EXPORT void NewTurn::applyGs( CGameState *gs )
BOOST_FOREACH(CGHeroInstance *h, gs->map->heroes)
h->bonuses.remove_if(Bonus::OneDay);
if(gs->getDate(1) == 1) //new week, Monday that is
if(gs->getDate(1) == 1 && specialWeek != NO_ACTION) //new week, Monday that is
{
BOOST_FOREACH(CGHeroInstance *h, gs->map->heroes)
h->bonuses.remove_if(Bonus::OneWeek);
gs->globalEffects.bonuses.remove_if(Bonus::OneWeek);
Bonus b;
b.duration = Bonus::ONE_WEEK;
b.source = Bonus::SPECIAL_WEEK;
b.effectRange = Bonus::NO_LIMIT;
switch (specialWeek)
{
case DOUBLE_GROWTH:
b.val = 100;
b.type = Bonus::CREATURE_GROWTH_PERCENT;
b.limiter = new CCreatureTypeLimiter(*VLC->creh->creatures[creatureid], false);
b.valType = Bonus::PERCENT_TO_ALL;
break;
case BONUS_GROWTH:
b.val = 5;
b.type = Bonus::CREATURE_GROWTH;
b.limiter = new CCreatureTypeLimiter(*VLC->creh->creatures[creatureid], false);
b.valType = Bonus::BASE_NUMBER;
break;
case PLAGUE:
b.val = -50;
b.type = Bonus::CREATURE_GROWTH_PERCENT;
b.valType = Bonus::PERCENT_TO_ALL;
break;
default:
b.val = 0;
}
if (b.val)
gs->globalEffects.bonuses.push_back(b);
}
//count days without town