diff options
author | lapayo94@gmail.com <lapayo94@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2011-12-28 03:10:05 +0100 |
---|---|---|
committer | lapayo94@gmail.com <lapayo94@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2011-12-28 03:10:05 +0100 |
commit | 1e9af56a67ae3765291361d9bf01e9009cfb4dcc (patch) | |
tree | 65878a8c373ec163eed3439b7db0fc440810d95b /source/cMonster.cpp | |
parent | Fixed some things in Core to work for multiple worlds (diff) | |
download | cuberite-1e9af56a67ae3765291361d9bf01e9009cfb4dcc.tar cuberite-1e9af56a67ae3765291361d9bf01e9009cfb4dcc.tar.gz cuberite-1e9af56a67ae3765291361d9bf01e9009cfb4dcc.tar.bz2 cuberite-1e9af56a67ae3765291361d9bf01e9009cfb4dcc.tar.lz cuberite-1e9af56a67ae3765291361d9bf01e9009cfb4dcc.tar.xz cuberite-1e9af56a67ae3765291361d9bf01e9009cfb4dcc.tar.zst cuberite-1e9af56a67ae3765291361d9bf01e9009cfb4dcc.zip |
Diffstat (limited to 'source/cMonster.cpp')
-rw-r--r-- | source/cMonster.cpp | 75 |
1 files changed, 7 insertions, 68 deletions
diff --git a/source/cMonster.cpp b/source/cMonster.cpp index 2f7567b15..cee068b08 100644 --- a/source/cMonster.cpp +++ b/source/cMonster.cpp @@ -56,25 +56,12 @@ cMonster::cMonster() , m_AttackInterval(0)
, m_AttackRate(3)
, idle_interval(0)
- , m_bBurnable(true)
- , m_EMMetaState(NORMAL)
- , m_FireDamageInterval(0)
- , m_BurnPeriod(0)
{
LOG("cMonster::cMonster()");
- LOG("In state: %s",GetState());
- m_Health = 10;
+ LOG("In state: %s", GetState());
- MTRand r1;
- int RandVal = r1.randInt() % 4;
- if( RandVal == 0 )
- m_MobType = 90; // Pig
- else if( RandVal == 1 )
- m_MobType = 91; // Sheep
- else if( RandVal == 2 )
- m_MobType = 92; // Cow
- else
- m_MobType = 93; // Hen
+ m_bBurnable = true;
+ m_MetaData = NORMAL;
}
cMonster::~cMonster()
@@ -131,6 +118,8 @@ bool cMonster::ReachedDestination() void cMonster::Tick(float a_Dt)
{
+ cPawn::Tick(a_Dt);
+
if( m_Health <= 0 )
{
m_DestroyTimer += a_Dt/1000;
@@ -196,12 +185,6 @@ void cMonster::Tick(float a_Dt) SetPitch( Pitch );
}
- CheckMetaDataBurn(); //Check to see if Enemy should burn based on block they are on
-
- if(m_EMMetaState == BURNING) {
- InStateBurning(a_Dt);
- }
-
if(m_EMState == IDLE) { //If enemy passive we ignore checks for player visibility
InStateIdle(a_Dt);
}
@@ -448,37 +431,6 @@ void cMonster::InStateIdle(float a_Dt) { }
}
-//What to do if On fire
-void cMonster::InStateBurning(float a_Dt) {
- m_FireDamageInterval += a_Dt;
- char block = GetWorld()->GetBlock( (int)m_Pos->x, (int)m_Pos->y, (int)m_Pos->z );
- char bblock = GetWorld()->GetBlock( (int)m_Pos->x, (int)m_Pos->y +1, (int)m_Pos->z );
- if(m_FireDamageInterval > 1) {
-
- m_FireDamageInterval -= 1;
- TakeDamage(1, this);
-
- m_BurnPeriod++;
- if(block == E_BLOCK_LAVA || block == E_BLOCK_STATIONARY_LAVA || block == E_BLOCK_FIRE
- || bblock == E_BLOCK_LAVA || bblock == E_BLOCK_STATIONARY_LAVA || bblock == E_BLOCK_FIRE) {
- m_BurnPeriod = 0;
- TakeDamage(6, this);
- }else{
- TakeDamage(1, this);
- }
-
- if(m_BurnPeriod > 8) {
- cChunk* InChunk = GetWorld()->GetChunkUnreliable( m_ChunkX, m_ChunkY, m_ChunkZ );
- m_EMMetaState = NORMAL;
- cPacket_Metadata md(NORMAL, GetUniqueID());
- InChunk->Broadcast(md);
- m_BurnPeriod = 0;
-
- }
- }
-
-}
-
//What to do if in Chasing State
//This state should always be defined in each child class
void cMonster::InStateChasing(float a_Dt) {
@@ -508,20 +460,7 @@ void cMonster::Attack(float a_Dt) { ((cPawn *)m_Target)->TakeDamage((int)m_AttackDamage,this);
}
}
-//----Change Entity MetaData
-void cMonster::CheckMetaDataBurn() {
- char block = GetWorld()->GetBlock( (int)m_Pos->x, (int)m_Pos->y, (int)m_Pos->z );
- char bblock = GetWorld()->GetBlock( (int)m_Pos->x, (int)m_Pos->y -1, (int)m_Pos->z );
- if(m_bBurnable && m_EMMetaState != BURNING && (block == E_BLOCK_LAVA || block == E_BLOCK_STATIONARY_LAVA || block == E_BLOCK_FIRE
- || bblock == E_BLOCK_LAVA || bblock == E_BLOCK_STATIONARY_LAVA || bblock == E_BLOCK_FIRE)) {
- cChunk* InChunk = GetWorld()->GetChunkUnreliable( m_ChunkX, m_ChunkY, m_ChunkZ );
- if(!InChunk)
- return;
- m_EMMetaState = BURNING;
- cPacket_Metadata md(BURNING,GetUniqueID());
- InChunk->Broadcast(md);
- }
-}
+
//----Debug
@@ -601,5 +540,5 @@ void cMonster::DropItem(ENUM_ITEM_ID a_Item, unsigned int a_Count) void cMonster::RandomDropItem(ENUM_ITEM_ID a_Item, unsigned int a_Min, unsigned int a_Max)
{
MTRand r1;
- return cMonster::DropItem(a_Item, r1.randInt() % (a_Max + 1) + a_Min);
+ return cMonster::DropItem(a_Item, r1.randInt() % (a_Max + 1 - a_Min) + a_Min);
}
\ No newline at end of file |