Merge pull request #199 from tigerw/moar-bugfixes

Fixed a fire simulator bug
master
Mattes D 2013-10-01 02:38:48 -07:00
commit d7fa9c9ff2
1 changed files with 17 additions and 5 deletions

View File

@ -234,10 +234,6 @@ int cFireSimulator::GetBurnStepTime(cChunk * a_Chunk, int a_RelX, int a_RelY, in
return m_BurnStepTimeFuel;
}
}
if ((a_RelY < cChunkDef::Height - 1) && IsFuel(a_Chunk->GetBlock(a_RelX, a_RelY - 1, a_RelZ)))
{
return m_BurnStepTimeFuel;
}
for (int i = 0; i < ARRAYCOUNT(gCrossCoords); i++)
{
@ -251,8 +247,24 @@ int cFireSimulator::GetBurnStepTime(cChunk * a_Chunk, int a_RelX, int a_RelY, in
}
}
} // for i - gCrossCoords[]
if ((a_RelY > 0) && (a_RelY < cChunkDef::Height - 1))
{
// Checked through everything, nothing was flammable
// If block below isn't solid, we can't have fire, otherwise, we have non-fueled fire
BLOCKTYPE BlockBelow = a_Chunk->GetBlock(a_RelX, a_RelY - 1, a_RelZ);
if (g_BlockIsSolid[BlockBelow])
{
return m_BurnStepTimeNonfuel;
}
else
{
// SetBlock just to make sure fire doesn't spawn
a_Chunk->SetBlock(a_RelX, a_RelY, a_RelZ, E_BLOCK_AIR, 0);
return 0;
}
}
}