Skip to content

Commit f6586e6

Browse files
committed
Fix grenade timer during civilian missions
1 parent 9932bcd commit f6586e6

1 file changed

Lines changed: 14 additions & 11 deletions

File tree

‎src/Battlescape/BattlescapeGame.cpp‎

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -372,21 +372,24 @@ void BattlescapeGame::endTurn()
372372
Position p;
373373

374374
// check for hot grenades on the ground
375-
for (int i = 0; i < _save->getMapSizeXYZ(); ++i)
375+
if (_save->getSide() != FACTION_NEUTRAL)
376376
{
377-
for (std::vector<BattleItem*>::iterator it = _save->getTiles()[i]->getInventory()->begin(); it != _save->getTiles()[i]->getInventory()->end(); )
377+
for (int i = 0; i < _save->getMapSizeXYZ(); ++i)
378378
{
379-
if ((*it)->getRules()->getBattleType() == BT_GRENADE && (*it)->getFuseTimer() == 0) // it's a grenade to explode now
379+
for (std::vector<BattleItem *>::iterator it = _save->getTiles()[i]->getInventory()->begin(); it != _save->getTiles()[i]->getInventory()->end(); )
380380
{
381-
p.x = _save->getTiles()[i]->getPosition().x*16 + 8;
382-
p.y = _save->getTiles()[i]->getPosition().y*16 + 8;
383-
p.z = _save->getTiles()[i]->getPosition().z*24 - _save->getTiles()[i]->getTerrainLevel();
384-
statePushNext(new ExplosionBState(this, p, (*it), (*it)->getPreviousOwner()));
385-
_save->removeItem((*it));
386-
statePushBack(0);
387-
return;
381+
if ((*it)->getRules()->getBattleType() == BT_GRENADE && (*it)->getFuseTimer() == 0) // it's a grenade to explode now
382+
{
383+
p.x = _save->getTiles()[i]->getPosition().x * 16 + 8;
384+
p.y = _save->getTiles()[i]->getPosition().y * 16 + 8;
385+
p.z = _save->getTiles()[i]->getPosition().z * 24 - _save->getTiles()[i]->getTerrainLevel();
386+
statePushNext(new ExplosionBState(this, p, (*it), (*it)->getPreviousOwner()));
387+
_save->removeItem((*it));
388+
statePushBack(0);
389+
return;
390+
}
391+
++it;
388392
}
389-
++it;
390393
}
391394
}
392395
}

0 commit comments

Comments
 (0)