From fa7def847b4565667b75f34502b2675c375057ad Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Tue, 27 Aug 2013 21:11:00 +0100 Subject: Zomb-ee and Skellingtons burning improvements They don't burn unless they are in direct view of the sun god or are protected by the sands of the souls of the underworld. --- source/Mobs/Skeleton.cpp | 11 ++++++----- source/Mobs/Zombie.cpp | 13 ++++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/source/Mobs/Skeleton.cpp b/source/Mobs/Skeleton.cpp index bec912afa..ad4037db9 100644 --- a/source/Mobs/Skeleton.cpp +++ b/source/Mobs/Skeleton.cpp @@ -21,12 +21,13 @@ void cSkeleton::Tick(float a_Dt, cChunk & a_Chunk) { cMonster::Tick(a_Dt, a_Chunk); - // TODO Outsource - // TODO should do SkyLight check, mobs in the dark donīt burn - if ((GetWorld()->GetTimeOfDay() < (12000 + 1000)) && !IsOnFire()) + if ((GetWorld()->GetBlockSkyLight(GetPosX(), GetPosY(), GetPosZ()) == 15) && (GetWorld()->GetBlock(GetPosX(), GetPosY(), GetPosZ()) != E_BLOCK_SOULSAND)) { - // Burn for 10 ticks, then decide again - StartBurning(10); + if ((GetWorld()->GetTimeOfDay() < (12000 + 1000)) && !IsOnFire()) + { + // Burn for 100 ticks, then decide again + StartBurning(100); + } } } diff --git a/source/Mobs/Zombie.cpp b/source/Mobs/Zombie.cpp index a6e39d6df..f3adf1283 100644 --- a/source/Mobs/Zombie.cpp +++ b/source/Mobs/Zombie.cpp @@ -3,10 +3,12 @@ #include "Zombie.h" #include "../World.h" +#include "../LineBlockTracer.h" +// They're eating your brains! cZombie::cZombie(void) : super("Zombie", 54, "mob.zombie.hurt", "mob.zombie.death", 0.6, 1.8) @@ -20,12 +22,13 @@ cZombie::cZombie(void) : void cZombie::Tick(float a_Dt, cChunk & a_Chunk) { super::Tick(a_Dt, a_Chunk); - - // TODO Same as in cSkeleton :D - if ((GetWorld()->GetTimeOfDay() < (12000 + 1000)) && !IsOnFire()) + if ((GetWorld()->GetBlockSkyLight(GetPosX(), GetPosY(), GetPosZ()) == 15) && (GetWorld()->GetBlock(GetPosX(), GetPosY(), GetPosZ()) != E_BLOCK_SOULSAND)) { - // Burn for 10 ticks, then decide again - StartBurning(10); + if ((GetWorld()->GetTimeOfDay() < (12000 + 1000)) && !IsOnFire()) + { + // Burn for 100 ticks, then decide again + StartBurning(100); + } } } -- cgit v1.2.3