mirror of
https://github.com/vcmi/vcmi.git
synced 2025-01-12 02:28:11 +02:00
* enter can be used to open window with selected hero/town
* fixed slider behavior when showing less maps/games than available slots * added a few missing sounds for creatures * fixed problems with artifacts info caused by bug in serialization * fixed bug in Scholar's serializetion * all stacks features will be serialized (should fix problems with missing premies from artifacts) * proper serialization of HeroBonus, fixes some problems/crashes * resource silos won't give resources on the first day * fixed problems with removing artifacts when all visiblebackpack slots are full
This commit is contained in:
parent
5b25b21a15
commit
cff70406f1
@ -1534,6 +1534,16 @@ void CAdvMapInt::keyPressed(const SDL_KeyboardEvent & key)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
case SDLK_RETURN:
|
||||||
|
{
|
||||||
|
if(!active || !selection || key.state != SDL_PRESSED)
|
||||||
|
return;
|
||||||
|
if(selection->ID == 34)
|
||||||
|
LOCPLINT->openHeroWindow(static_cast<const CGHeroInstance*>(selection));
|
||||||
|
else if(selection->ID == 98)
|
||||||
|
LOCPLINT->openTownWindow(static_cast<const CGTownInstance*>(selection));
|
||||||
|
return;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -127,6 +127,10 @@ void CBuildingRect::hover(bool on)
|
|||||||
{
|
{
|
||||||
LOCPLINT->castleInt->hBuild = NULL;
|
LOCPLINT->castleInt->hBuild = NULL;
|
||||||
LOCPLINT->statusbar->clear();
|
LOCPLINT->statusbar->clear();
|
||||||
|
|
||||||
|
//call mouseMoved in other buildings, cursor might have been moved while they were inactive (eg. because of r-click popup)
|
||||||
|
for(size_t i = 0; i < LOCPLINT->castleInt->buildings.size(); i++)
|
||||||
|
LOCPLINT->castleInt->buildings[i]->mouseMoved(LOCPLINT->current->motion);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -166,7 +170,7 @@ void CBuildingRect::clickRight (tribool down)
|
|||||||
}
|
}
|
||||||
void CBuildingRect::mouseMoved (const SDL_MouseMotionEvent & sEvent)
|
void CBuildingRect::mouseMoved (const SDL_MouseMotionEvent & sEvent)
|
||||||
{
|
{
|
||||||
if(area)
|
if(area && isItIn(&pos,sEvent.x, sEvent.y))
|
||||||
{
|
{
|
||||||
if(CSDL_Ext::SDL_GetPixel(area,sEvent.x-pos.x,sEvent.y-pos.y) == 0) //hovered pixel is inside this building
|
if(CSDL_Ext::SDL_GetPixel(area,sEvent.x-pos.x,sEvent.y-pos.y) == 0) //hovered pixel is inside this building
|
||||||
{
|
{
|
||||||
|
@ -710,7 +710,7 @@ void CArtPlace::clickLeft(boost::logic::tribool down)
|
|||||||
{
|
{
|
||||||
if(ourArt && ourArt->id == 0)
|
if(ourArt && ourArt->id == 0)
|
||||||
return; //this is handled separately
|
return; //this is handled separately
|
||||||
if(!ourWindow->activeArtPlace) //nothing has benn clicked
|
if(!ourWindow->activeArtPlace) //nothing has bewn clicked
|
||||||
{
|
{
|
||||||
if(ourArt) //to prevent selecting empty slots (bugfix to what GrayFace reported)
|
if(ourArt) //to prevent selecting empty slots (bugfix to what GrayFace reported)
|
||||||
{
|
{
|
||||||
@ -720,47 +720,22 @@ void CArtPlace::clickLeft(boost::logic::tribool down)
|
|||||||
}
|
}
|
||||||
else //perform artifact substitution
|
else //perform artifact substitution
|
||||||
{
|
{
|
||||||
//chceck if swap is possible
|
if(slotID >= 19) //we are an backpack slot - remove active artifact and put it to the last free pos in backpack
|
||||||
if(this->fitsHere(ourWindow->activeArtPlace->ourArt) && ourWindow->activeArtPlace->fitsHere(this->ourArt))
|
{ //TODO: putting artifacts in the middle of backpack (pushing following arts)
|
||||||
|
|
||||||
|
LOCPLINT->cb->swapArtifacts(ourWindow->curHero,ourWindow->activeArtPlace->slotID,ourWindow->curHero,ourWindow->curHero->artifacts.size()+19);
|
||||||
|
}
|
||||||
|
//check if swap is possible
|
||||||
|
else if(this->fitsHere(ourWindow->activeArtPlace->ourArt) && ourWindow->activeArtPlace->fitsHere(this->ourArt))
|
||||||
{
|
{
|
||||||
int destSlot = slotID,
|
int destSlot = slotID,
|
||||||
srcSlot = ourWindow->activeArtPlace->slotID;
|
srcSlot = ourWindow->activeArtPlace->slotID;
|
||||||
|
|
||||||
LOCPLINT->cb->swapArtifacts(ourWindow->curHero,destSlot,ourWindow->curHero,srcSlot);
|
LOCPLINT->cb->swapArtifacts(ourWindow->curHero,destSlot,ourWindow->curHero,srcSlot);
|
||||||
|
|
||||||
//const CArtifact * pmh = ourArt;
|
|
||||||
//ourArt = ourWindow->activeArtPlace->ourArt;
|
|
||||||
//ourWindow->activeArtPlace->ourArt = pmh;
|
|
||||||
|
|
||||||
////set texts
|
|
||||||
//if(pmh)
|
|
||||||
// ourWindow->activeArtPlace->text = pmh->Description();
|
|
||||||
//else
|
|
||||||
// ourWindow->activeArtPlace->text = std::string();
|
|
||||||
//if(ourArt)
|
|
||||||
// text = ourArt->Description();
|
|
||||||
//else
|
|
||||||
// text = std::string();
|
|
||||||
|
|
||||||
ourWindow->activeArtPlace->clicked = false;
|
ourWindow->activeArtPlace->clicked = false;
|
||||||
ourWindow->activeArtPlace = NULL;
|
ourWindow->activeArtPlace = NULL;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
int backID = -1;
|
|
||||||
for(size_t g=0; g<ourWindow->backpack.size(); ++g)
|
|
||||||
{
|
|
||||||
if(ourWindow->backpack[g]==this) //if user wants to put something to backpack
|
|
||||||
{
|
|
||||||
backID = g;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(backID>=0) //put to backpack
|
|
||||||
{
|
|
||||||
LOCPLINT->cb->swapArtifacts(ourWindow->curHero,ourWindow->activeArtPlace->slotID,ourWindow->curHero,ourWindow->curHero->artifacts.size()+19);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(!down && clicked)
|
else if(!down && clicked)
|
||||||
|
@ -189,7 +189,11 @@ void Button::select(bool on)
|
|||||||
|
|
||||||
void Slider::updateSlid()
|
void Slider::updateSlid()
|
||||||
{
|
{
|
||||||
float perc = ((float)whereAreWe)/((float)positionsAmnt-capacity);
|
float perc = -1.0f;
|
||||||
|
if(positionsAmnt > capacity)
|
||||||
|
perc = ((float)whereAreWe)/((float)positionsAmnt-capacity);
|
||||||
|
else
|
||||||
|
perc = 0;
|
||||||
float myh;
|
float myh;
|
||||||
if (vertical)
|
if (vertical)
|
||||||
{
|
{
|
||||||
|
@ -100,6 +100,7 @@ Nosferatu NOSFATTK.wav NOSFDFND.wav NOSFKILL.wav NOSFMOVE.wav NOSFSHOT.wav NOSFW
|
|||||||
ObsidianGargoyle OGRGATTK.wav OGRGDFND.wav OGRGKILL.wav OGRGMOVE.wav invalid OGRGWNCE.wav
|
ObsidianGargoyle OGRGATTK.wav OGRGDFND.wav OGRGKILL.wav OGRGMOVE.wav invalid OGRGWNCE.wav
|
||||||
Ogre OGREATTK.wav OGREDFND.wav OGREKILL.wav OGREMOVE.wav invalid OGREWNCE.wav
|
Ogre OGREATTK.wav OGREDFND.wav OGREKILL.wav OGREMOVE.wav invalid OGREWNCE.wav
|
||||||
OgreMage OGRMATTK.wav OGRMDFND.wav OGRMKILL.wav OGRMMOVE.wav OGRMSHOT.wav OGRMWNCE.wav
|
OgreMage OGRMATTK.wav OGRMDFND.wav OGRMKILL.wav OGRMMOVE.wav OGRMSHOT.wav OGRMWNCE.wav
|
||||||
|
OgreShaman TRLLATTK.wav TRLLDFND.wav TRLLKILL.wav TRLLMOVE.wav invalid TRLLWNCE.wav
|
||||||
Orc OORCATTK.wav OORCDFND.wav OORCKILL.wav OORCMOVE.wav OORCSHOT.wav OORCWNCE.wav
|
Orc OORCATTK.wav OORCDFND.wav OORCKILL.wav OORCMOVE.wav OORCSHOT.wav OORCWNCE.wav
|
||||||
OrcChieftain ORCCATTK.wav ORCCDFND.wav ORCCKILL.wav ORCCMOVE.wav ORCCSHOT.wav ORCCWNCE.wav
|
OrcChieftain ORCCATTK.wav ORCCDFND.wav ORCCKILL.wav ORCCMOVE.wav ORCCSHOT.wav ORCCWNCE.wav
|
||||||
Peasant PSNTATTK.wav PSNTDFND.wav PSNTKILL.wav PSNTMOVE.wav invalid PSNTWNCE.wav
|
Peasant PSNTATTK.wav PSNTDFND.wav PSNTKILL.wav PSNTMOVE.wav invalid PSNTWNCE.wav
|
||||||
@ -123,6 +124,7 @@ Single-HornedDemon SHDMATTK.wav SHDMDFND.wav SHDMKILL.wav SHDMMOVE.wav invalid S
|
|||||||
Skeleton SKELATTK.wav SKELDFND.wav SKELKILL.wav SKELMOVE.wav invalid SKELWNCE.wav
|
Skeleton SKELATTK.wav SKELDFND.wav SKELKILL.wav SKELMOVE.wav invalid SKELWNCE.wav
|
||||||
SkeletonWarrior SKLWATTK.wav SKLWDFND.wav SKLWKILL.wav SKLWMOVE.wav invalid SKLWWNCE.wav
|
SkeletonWarrior SKLWATTK.wav SKLWDFND.wav SKLWKILL.wav SKLWMOVE.wav invalid SKLWWNCE.wav
|
||||||
Sprite SPRTATTK.wav SPRTDFND.wav SPRTKILL.wav SPRTMOVE.wav invalid SPRTWNCE.wav
|
Sprite SPRTATTK.wav SPRTDFND.wav SPRTKILL.wav SPRTMOVE.wav invalid SPRTWNCE.wav
|
||||||
|
StoneElemental MAGMATTK.wav MAGMDFND.wav MAGMKILL.wav MAGMMOVE.wav invalid MAGMWNCE.wav
|
||||||
StoneGargoyle SGRGATTK.wav SGRGDFND.wav SGRGKILL.wav SGRGMOVE.wav invalid SGRGWNCE.wav
|
StoneGargoyle SGRGATTK.wav SGRGDFND.wav SGRGKILL.wav SGRGMOVE.wav invalid SGRGWNCE.wav
|
||||||
StoneGolem SGLMATTK.wav SGLMDFND.wav SGLMKILL.wav SGLMMOVE.wav invalid SGLMWNCE.wav
|
StoneGolem SGLMATTK.wav SGLMDFND.wav SGLMKILL.wav SGLMMOVE.wav invalid SGLMWNCE.wav
|
||||||
StormElemental STORATTK.wav STORDFND.wav STORKILL.wav STORMOVE.wav STORSHOT.wav STORWNCE.wav
|
StormElemental STORATTK.wav STORDFND.wav STORKILL.wav STORMOVE.wav STORSHOT.wav STORWNCE.wav
|
||||||
@ -132,6 +134,7 @@ Treefolk TREEATTK.wav TREEDFND.wav TREEKILL.wav TREEMOVE.wav invalid TREEWNCE.wa
|
|||||||
Troglodyte TROGATTK.wav TROGDFND.wav TROGKILL.wav TROGMOVE.wav invalid TROGWNCE.wav
|
Troglodyte TROGATTK.wav TROGDFND.wav TROGKILL.wav TROGMOVE.wav invalid TROGWNCE.wav
|
||||||
Unicorn UNICATTK.wav UNICDFND.wav UNICKILL.wav UNICMOVE.wav invalid UNICWNCE.wav
|
Unicorn UNICATTK.wav UNICDFND.wav UNICKILL.wav UNICMOVE.wav invalid UNICWNCE.wav
|
||||||
Vampire VAMPATTK.wav VAMPDFND.wav VAMPKILL.wav VAMPMOVE.wav invalid VAMPWNCE.wav VAMPEXT1.wav VAMPEXT2.wav
|
Vampire VAMPATTK.wav VAMPDFND.wav VAMPKILL.wav VAMPMOVE.wav invalid VAMPWNCE.wav VAMPEXT1.wav VAMPEXT2.wav
|
||||||
|
warrior NMADATTK.wav NMADDFND.wav NMADKILL.wav NMADMOVE.wav invalid NMADWNCE.wav
|
||||||
WarUnicorn WUNCATTK.wav WUNCDFND.wav WUNCKILL.wav WUNCMOVE.wav WUNCSHOT.wav WUNCWNCE.wav
|
WarUnicorn WUNCATTK.wav WUNCDFND.wav WUNCKILL.wav WUNCMOVE.wav WUNCSHOT.wav WUNCWNCE.wav
|
||||||
WaterElemental WELMATTK.wav WELMDFND.wav WELMKILL.wav WELMMOVE.wav invalid WELMWNCE.wav
|
WaterElemental WELMATTK.wav WELMDFND.wav WELMKILL.wav WELMMOVE.wav invalid WELMWNCE.wav
|
||||||
Wight WGHTATTK.wav WGHTDFND.wav WGHTKILL.wav WGHTMOVE.wav invalid WGHTWNCE.wav
|
Wight WGHTATTK.wav WGHTDFND.wav WGHTKILL.wav WGHTMOVE.wav invalid WGHTWNCE.wav
|
||||||
@ -144,23 +147,9 @@ Zealot ZELTATTK.wav ZELTDFND.wav ZELTKILL.wav ZELTMOVE.wav ZELTSHOT.wav ZELTWNCE
|
|||||||
Zombie ZOMBATTK.wav ZOMBDFND.wav ZOMBKILL.wav ZOMBMOVE.wav invalid ZOMBWNCE.wav
|
Zombie ZOMBATTK.wav ZOMBDFND.wav ZOMBKILL.wav ZOMBMOVE.wav invalid ZOMBWNCE.wav
|
||||||
ZombieLord ZMBLATTK.wav ZMBLDFND.wav ZMBLKILL.wav ZMBLMOVE.wav invalid ZMBLWNCE.wav
|
ZombieLord ZMBLATTK.wav ZMBLDFND.wav ZMBLKILL.wav ZMBLMOVE.wav invalid ZMBLWNCE.wav
|
||||||
|
|
||||||
# todo - troll ?
|
|
||||||
# TRLLATTK.wav TRLLDFND.wav TRLLKILL.wav TRLLMOVE.wav invalid TRLLWNCE.wav
|
|
||||||
|
|
||||||
# todo - nomad ?
|
|
||||||
# NMADATTK.wav NMADDFND.wav NMADKILL.wav NMADMOVE.wav invalid NMADWNCE.wav
|
|
||||||
|
|
||||||
# todo - magma ?
|
|
||||||
# MAGMATTK.wav MAGMDFND.wav MAGMKILL.wav MAGMMOVE.wav invalid MAGMWNCE.wav
|
|
||||||
|
|
||||||
|
|
||||||
# Missing entries
|
|
||||||
# 125 StoneElemental
|
|
||||||
# 128 FireElemental
|
|
||||||
# 129 FireElemental
|
|
||||||
# 137 Sharpshooter
|
# 137 Sharpshooter
|
||||||
# 142 warrior
|
|
||||||
# 144 OgreShaman
|
|
||||||
# 149 ArrowTower
|
# 149 ArrowTower
|
||||||
# 150 SupremeArchangel
|
# 150 SupremeArchangel
|
||||||
# 151 DiamondDragon
|
# 151 DiamondDragon
|
||||||
|
@ -131,10 +131,8 @@
|
|||||||
123 IceElemental
|
123 IceElemental
|
||||||
124 NOTUSED
|
124 NOTUSED
|
||||||
125 StoneElemental
|
125 StoneElemental
|
||||||
126 ElectricityElemental
|
|
||||||
127 StormElemental
|
127 StormElemental
|
||||||
128 FireElemental
|
129 ElectricityElemental
|
||||||
129 FireElemental
|
|
||||||
130 Firebird
|
130 Firebird
|
||||||
131 Pheonix
|
131 Pheonix
|
||||||
132 AzureDragon
|
132 AzureDragon
|
||||||
|
@ -78,6 +78,7 @@ void CArtHandler::loadArtifacts(bool onlyTxt)
|
|||||||
artifacts.push_back(nart);
|
artifacts.push_back(nart);
|
||||||
}
|
}
|
||||||
sortArts();
|
sortArts();
|
||||||
|
if(!onlyTxt)
|
||||||
addBonuses();
|
addBonuses();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -319,3 +320,12 @@ void CArtHandler::addBonuses()
|
|||||||
giveArtBonus(125,HeroBonus::ENEMY_CANT_ESCAPE,0); //Shackles of War
|
giveArtBonus(125,HeroBonus::ENEMY_CANT_ESCAPE,0); //Shackles of War
|
||||||
giveArtBonus(126,HeroBonus::BLOCK_SPELLS_ABOVE_LEVEL,0);//Orb of Inhibition
|
giveArtBonus(126,HeroBonus::BLOCK_SPELLS_ABOVE_LEVEL,0);//Orb of Inhibition
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CArtHandler::clear()
|
||||||
|
{
|
||||||
|
artifacts.clear();
|
||||||
|
treasures.clear();
|
||||||
|
minors.clear();
|
||||||
|
majors.clear();
|
||||||
|
relics.clear();
|
||||||
|
}
|
@ -47,6 +47,7 @@ public:
|
|||||||
void loadArtifacts(bool onlyTxt);
|
void loadArtifacts(bool onlyTxt);
|
||||||
void sortArts();
|
void sortArts();
|
||||||
void addBonuses();
|
void addBonuses();
|
||||||
|
void clear();
|
||||||
static int convertMachineID(int id, bool creToArt);
|
static int convertMachineID(int id, bool creToArt);
|
||||||
CArtHandler();
|
CArtHandler();
|
||||||
|
|
||||||
|
@ -168,7 +168,17 @@ void CSoundHandler::initCreaturesSounds(std::vector<CCreature> &creatures)
|
|||||||
|
|
||||||
if (str.good() || (str.eof() && wince != ""))
|
if (str.good() || (str.eof() && wince != ""))
|
||||||
{
|
{
|
||||||
int id = CGI->creh->nameToID[cname];
|
int id = -1;
|
||||||
|
|
||||||
|
std::map<std::string,int>::iterator i = CGI->creh->nameToID.find(cname);
|
||||||
|
if(i != CGI->creh->nameToID.end())
|
||||||
|
id = i->second;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tlog1 << "Sound info for an unknown creature: " << cname << std::endl;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
CCreature &c = creatures[id];
|
CCreature &c = creatures[id];
|
||||||
|
|
||||||
if (c.sounds.killed != soundBase::invalid)
|
if (c.sounds.killed != soundBase::invalid)
|
||||||
|
@ -504,7 +504,7 @@ public:
|
|||||||
template <typename Handler> void serialize(Handler &h, const int version)
|
template <typename Handler> void serialize(Handler &h, const int version)
|
||||||
{
|
{
|
||||||
h & static_cast<CGObjectInstance&>(*this);
|
h & static_cast<CGObjectInstance&>(*this);
|
||||||
h & bonusType & id;
|
h & bonusType & bonusID;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -154,9 +154,6 @@ public:
|
|||||||
ui16 position; //position on battlefield
|
ui16 position; //position on battlefield
|
||||||
ui8 counterAttacks; //how many counter attacks can be performed more in this turn (by default set at the beginning of the round to 1)
|
ui8 counterAttacks; //how many counter attacks can be performed more in this turn (by default set at the beginning of the round to 1)
|
||||||
si16 shots; //how many shots left
|
si16 shots; //how many shots left
|
||||||
//ui8 speed; //speed of stack with hero bonus
|
|
||||||
//si32 attack; //attack of stack with hero bonus
|
|
||||||
//si32 defense; //defense of stack with hero bonus
|
|
||||||
si8 morale, luck; //base stack luck/morale
|
si8 morale, luck; //base stack luck/morale
|
||||||
|
|
||||||
std::vector<StackFeature> features;
|
std::vector<StackFeature> features;
|
||||||
@ -195,12 +192,12 @@ public:
|
|||||||
ui32 id;
|
ui32 id;
|
||||||
h & id;
|
h & id;
|
||||||
creature = &VLC->creh->creatures[id];
|
creature = &VLC->creh->creatures[id];
|
||||||
features = creature->abilities;
|
//features = creature->abilities;
|
||||||
}
|
}
|
||||||
template <typename Handler> void serialize(Handler &h, const int version)
|
template <typename Handler> void serialize(Handler &h, const int version)
|
||||||
{
|
{
|
||||||
h & ID & amount & baseAmount & firstHPleft & owner & slot & attackerOwned & position & state & counterAttacks
|
h & ID & amount & baseAmount & firstHPleft & owner & slot & attackerOwned & position & state & counterAttacks
|
||||||
& shots & morale & luck;
|
& shots & morale & luck & features;
|
||||||
if(h.saving)
|
if(h.saving)
|
||||||
save(h,version);
|
save(h,version);
|
||||||
else
|
else
|
||||||
|
@ -66,7 +66,7 @@ struct DLL_EXPORT HeroBonus
|
|||||||
}
|
}
|
||||||
template <typename Handler> void serialize(Handler &h, const int version)
|
template <typename Handler> void serialize(Handler &h, const int version)
|
||||||
{
|
{
|
||||||
h & duration & type & source & val & id & description;
|
h & duration & type & subtype & source & val & id & description;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool OneDay(const HeroBonus &hb)
|
static bool OneDay(const HeroBonus &hb)
|
||||||
|
@ -76,9 +76,9 @@ struct StackFeature
|
|||||||
SPELL_EFFECT
|
SPELL_EFFECT
|
||||||
};
|
};
|
||||||
|
|
||||||
ECombatFeatures type;
|
ui8 type;//ECombatFeatures
|
||||||
EDuration duration;
|
ui8 duration;//EDuration
|
||||||
ESource source;
|
ui8 source;//ESource
|
||||||
ui16 turnsRemain; //if duration is N_TURNS it describes how long the effect will last
|
ui16 turnsRemain; //if duration is N_TURNS it describes how long the effect will last
|
||||||
si16 subtype; //subtype of bonus/feature
|
si16 subtype; //subtype of bonus/feature
|
||||||
si32 value;
|
si32 value;
|
||||||
|
@ -690,7 +690,7 @@ void CGameHandler::newTurn()
|
|||||||
}
|
}
|
||||||
for(std::vector<CGTownInstance *>::iterator j=i->second.towns.begin();j!=i->second.towns.end();j++)//handle towns
|
for(std::vector<CGTownInstance *>::iterator j=i->second.towns.begin();j!=i->second.towns.end();j++)//handle towns
|
||||||
{
|
{
|
||||||
if(vstd::contains((**j).builtBuildings,15)) //there is resource silo
|
if(gs->day && vstd::contains((**j).builtBuildings,15)) //not first day and there is resource silo
|
||||||
{
|
{
|
||||||
if((**j).town->primaryRes == 127) //we'll give wood and ore
|
if((**j).town->primaryRes == 127) //we'll give wood and ore
|
||||||
{
|
{
|
||||||
@ -718,7 +718,7 @@ void CGameHandler::newTurn()
|
|||||||
}
|
}
|
||||||
n.cres.push_back(sac);
|
n.cres.push_back(sac);
|
||||||
}
|
}
|
||||||
if((gs->day) && i->first<PLAYER_LIMIT)//not the first day and town not neutral
|
if(gs->day && i->first<PLAYER_LIMIT)//not the first day and town not neutral
|
||||||
r.res[6] += (**j).dailyIncome();
|
r.res[6] += (**j).dailyIncome();
|
||||||
}
|
}
|
||||||
n.res.push_back(r);
|
n.res.push_back(r);
|
||||||
|
Loading…
Reference in New Issue
Block a user