From 9d3b2d13351baf565ff0ee63767c1eaf6f66e04f Mon Sep 17 00:00:00 2001 From: "lapayo94@gmail.com" Date: Thu, 29 Dec 2011 22:55:25 +0000 Subject: [PATCH] - Animals burn now when moving into lava or fire - Monster health is now working properly git-svn-id: http://mc-server.googlecode.com/svn/trunk@157 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cMonsterConfig.cpp | 2 +- source/cPawn.cpp | 14 +++++++++----- source/cSandSimulator.cpp | 3 ++- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/source/cMonsterConfig.cpp b/source/cMonsterConfig.cpp index 1226c74e2..abb2ca2e7 100644 --- a/source/cMonsterConfig.cpp +++ b/source/cMonsterConfig.cpp @@ -87,7 +87,7 @@ void cMonsterConfig::AssignAttributes(cMonster *m, const char* n) m->SetAttackRange(itr->m_AttackRange); m->SetSightDistance(itr->m_SightDistance); m->SetAttackRate((int)itr->m_AttackRate); - m->SetMaxHealth((int)itr->m_AttackRate); + m->SetMaxHealth((int)itr->m_MaxHealth); } } } diff --git a/source/cPawn.cpp b/source/cPawn.cpp index 8b1c951bb..db61f734e 100644 --- a/source/cPawn.cpp +++ b/source/cPawn.cpp @@ -26,6 +26,7 @@ cPawn::cPawn() , m_bBurnable(true) , m_MetaData(NORMAL) , m_FireDamageInterval(0.f) + , m_BurnPeriod(0.f) { SetMaxHealth(20); SetMaxFoodLevel(125); @@ -125,17 +126,20 @@ void cPawn::SetMetaData(MetaData a_MetaData) void cPawn::CheckMetaDataBurn() { char Block = GetWorld()->GetBlock((int) m_Pos->x, (int) m_Pos->y, (int) m_Pos->z); - char BlockAbove = GetWorld()->GetBlock((int) m_Pos->x, (int) m_Pos->y + 1, (int) m_Pos->z); + char BlockBelow = GetWorld()->GetBlock((int) m_Pos->x, (int) m_Pos->y - 1, (int) m_Pos->z); + if(GetMetaData() == BURNING && (IsBlockWater(Block) - || IsBlockWater(BlockAbove))) + || IsBlockWater(BlockAbove) + || IsBlockWater(BlockBelow))) { SetMetaData(NORMAL); - }else if(m_bBurnable && GetMetaData() != BURNING + }else if(m_bBurnable && GetMetaData() != BURNING && (IsBlockLava(Block) || Block == E_BLOCK_FIRE - || IsBlockLava(BlockAbove) || BlockAbove == E_BLOCK_FIRE)) { - SetMetaData(BURNING); + || IsBlockLava(BlockAbove) || BlockAbove == E_BLOCK_FIRE + || IsBlockLava(BlockBelow) || BlockBelow == E_BLOCK_FIRE)) { + SetMetaData(BURNING); } } diff --git a/source/cSandSimulator.cpp b/source/cSandSimulator.cpp index c27607f73..c0ed2309b 100644 --- a/source/cSandSimulator.cpp +++ b/source/cSandSimulator.cpp @@ -72,7 +72,8 @@ bool cSandSimulator::IsPassable( char a_BlockID ) { return a_BlockID == E_BLOCK_AIR || IsBlockWater(a_BlockID) - || IsBlockLava(a_BlockID); + || IsBlockLava(a_BlockID) + || a_BlockID == E_BLOCK_FIRE; }