diff options
author | bibo38 <bibo38@github.com> | 2015-09-05 22:02:15 +0200 |
---|---|---|
committer | bibo38 <bibo38@github.com> | 2015-11-03 08:39:18 +0100 |
commit | 19b65ce35725bfe3764755003be0032abe6aba4c (patch) | |
tree | 6601818930e92582bf3335430c442f8c45222e90 /src/Mobs | |
parent | Merge pull request #2591 from cuberite/chunkprepare-deadlock (diff) | |
download | cuberite-19b65ce35725bfe3764755003be0032abe6aba4c.tar cuberite-19b65ce35725bfe3764755003be0032abe6aba4c.tar.gz cuberite-19b65ce35725bfe3764755003be0032abe6aba4c.tar.bz2 cuberite-19b65ce35725bfe3764755003be0032abe6aba4c.tar.lz cuberite-19b65ce35725bfe3764755003be0032abe6aba4c.tar.xz cuberite-19b65ce35725bfe3764755003be0032abe6aba4c.tar.zst cuberite-19b65ce35725bfe3764755003be0032abe6aba4c.zip |
Diffstat (limited to 'src/Mobs')
-rw-r--r-- | src/Mobs/Monster.cpp | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/src/Mobs/Monster.cpp b/src/Mobs/Monster.cpp index 7bf56bb47..99909aa66 100644 --- a/src/Mobs/Monster.cpp +++ b/src/Mobs/Monster.cpp @@ -451,27 +451,30 @@ void cMonster::Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk) m_Target = nullptr; } - // Process the undead burning in daylight. - HandleDaylightBurning(*Chunk, WouldBurnAt(GetPosition(), *Chunk)); - if (TickPathFinding(*Chunk)) - { - /* If I burn in daylight, and I won't burn where I'm standing, and I'll burn in my next position, and at least one of those is true: - 1. I am idle - 2. I was not hurt by a player recently. - Then STOP. */ - if ( - m_BurnsInDaylight && ((m_TicksSinceLastDamaged >= 100) || (m_EMState == IDLE)) && - WouldBurnAt(m_NextWayPointPosition, *Chunk) && - !WouldBurnAt(GetPosition(), *Chunk) - ) - { - // If we burn in daylight, and we would burn at the next step, and we won't burn where we are right now, and we weren't provoked recently: - StopMovingToPosition(); - m_GiveUpCounter = 40; // This doesn't count as giving up, keep the giveup timer as is. - } - else + if (GetPosY() >= 0) + { + // Process the undead burning in daylight. + HandleDaylightBurning(*Chunk, WouldBurnAt(GetPosition(), *Chunk)); + if (TickPathFinding(*Chunk)) { - MoveToWayPoint(*Chunk); + /* If I burn in daylight, and I won't burn where I'm standing, and I'll burn in my next position, and at least one of those is true: + 1. I am idle + 2. I was not hurt by a player recently. + Then STOP. */ + if ( + m_BurnsInDaylight && ((m_TicksSinceLastDamaged >= 100) || (m_EMState == IDLE)) && + WouldBurnAt(m_NextWayPointPosition, *Chunk) && + !WouldBurnAt(GetPosition(), *Chunk) + ) + { + // If we burn in daylight, and we would burn at the next step, and we won't burn where we are right now, and we weren't provoked recently: + StopMovingToPosition(); + m_GiveUpCounter = 40; // This doesn't count as giving up, keep the giveup timer as is. + } + else + { + MoveToWayPoint(*Chunk); + } } } |