diff options
author | faketruth <faketruth@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2011-10-03 20:41:19 +0200 |
---|---|---|
committer | faketruth <faketruth@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2011-10-03 20:41:19 +0200 |
commit | 386d58b5862d8b76925c6523721594887606e82a (patch) | |
tree | ef073e7a843f4b75a4008d4b7383f7cdf08ceee5 /source/cMonster.h | |
parent | Visual Studio 2010 solution and project files (diff) | |
download | cuberite-386d58b5862d8b76925c6523721594887606e82a.tar cuberite-386d58b5862d8b76925c6523721594887606e82a.tar.gz cuberite-386d58b5862d8b76925c6523721594887606e82a.tar.bz2 cuberite-386d58b5862d8b76925c6523721594887606e82a.tar.lz cuberite-386d58b5862d8b76925c6523721594887606e82a.tar.xz cuberite-386d58b5862d8b76925c6523721594887606e82a.tar.zst cuberite-386d58b5862d8b76925c6523721594887606e82a.zip |
Diffstat (limited to '')
-rw-r--r-- | source/cMonster.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/source/cMonster.h b/source/cMonster.h new file mode 100644 index 000000000..b0cb19543 --- /dev/null +++ b/source/cMonster.h @@ -0,0 +1,85 @@ +#pragma once
+#include "cPawn.h"
+
+class Vector3f;
+class cClientHandle;
+class cMonster : public cPawn //tolua_export
+{ //tolua_export
+public:
+
+ cMonster();
+ virtual ~cMonster();
+
+ virtual bool IsA( const char* a_EntityType );
+
+ virtual void SpawnOn( cClientHandle* a_Target );
+
+ virtual void Tick(float a_Dt);
+ virtual void HandlePhysics(float a_Dt);
+ virtual void ReplicateMovement();
+
+ virtual void TakeDamage( int a_Damage, cEntity* a_Instigator );
+ virtual void KilledBy( cEntity* a_Killer );
+
+ virtual void MoveToPosition( const Vector3f & a_Position );
+ virtual bool ReachedDestination();
+
+ const char *GetState();
+ void SetState(const char* str);
+ static void ListMonsters();
+
+ virtual void CheckEventSeePlayer();
+ virtual void EventSeePlayer(cEntity *);
+ float m_SightDistance;
+ static void ListClosePlayers(cMonster *);
+ virtual void GetMonsterConfig(const char* pm_name);
+ virtual void EventLosePlayer();
+ virtual void CheckEventLostPlayer();
+
+ virtual void InStateIdle(float a_Dt);
+ virtual void InStateChasing(float a_Dt);
+ virtual void InStateEscaping(float a_Dt);
+ virtual void InStateBurning(float a_Dt);
+
+ virtual void Attack(float a_Dt);
+ int GetMobType() {return m_MobType;}
+ int GetAttackRate(){return (int)m_AttackRate;}
+ void SetAttackRate(int ar);
+ void SetAttackRange(float ar);
+ void SetAttackDamage(float ad);
+ void SetSightDistance(float sd);
+ virtual void CheckMetaDataBurn();
+
+ enum MState{ATTACKING, IDLE, CHASING, ESCAPING} m_EMState;
+ enum MPersonality{PASSIVE,AGGRESSIVE,COWARDLY} m_EMPersonality;
+ enum MMetaState{NORMAL,BURNING,CROUCHED,RIDING} m_EMMetaState;
+
+protected:
+
+ cEntity* m_Target;
+ float m_AttackRate;
+ float idle_interval;
+
+ Vector3f* m_Destination;
+ bool m_bMovingToDestination;
+ bool m_bPassiveAggressive;
+ bool m_bBurnable;
+
+ Vector3f* m_Speed;
+ float m_DestinationTime;
+
+ float m_Gravity;
+ bool m_bOnGround;
+
+ float m_DestroyTimer;
+ float m_Jump;
+
+ char m_MobType;
+
+ float m_SeePlayerInterval;
+ float m_AttackDamage;
+ float m_AttackRange;
+ float m_AttackInterval;
+ float m_FireDamageInterval;
+ float m_BurnPeriod;
+}; //tolua_export
|