summaryrefslogtreecommitdiffstats
path: root/src/BlockEntities/MobSpawnerEntity.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/BlockEntities/MobSpawnerEntity.h')
-rw-r--r--src/BlockEntities/MobSpawnerEntity.h60
1 files changed, 41 insertions, 19 deletions
diff --git a/src/BlockEntities/MobSpawnerEntity.h b/src/BlockEntities/MobSpawnerEntity.h
index 0d1991e87..a037343f4 100644
--- a/src/BlockEntities/MobSpawnerEntity.h
+++ b/src/BlockEntities/MobSpawnerEntity.h
@@ -33,46 +33,68 @@ public: // tolua_export
virtual bool UsedBy(cPlayer * a_Player) override;
virtual bool Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk) override;
+ static const char * GetClassStatic(void) { return "cMobSpawnerEntity"; }
// tolua_begin
- /** Upate the active flag from the mob spawner. This function will called every 5 seconds from the Tick() function. */
+ /** Update the active flag from the mob spawner. This function will called every 5 seconds from the Tick() function. */
void UpdateActiveState(void);
/** Sets the spawn delay to a new random value. */
void ResetTimer(void);
- /** Spawns the entity. This function automaticly change the spawn delay! */
+ /** Spawns the entity. This function automatically change the spawn delay! */
void SpawnEntity(void);
- /** Returns the entity type that will be spawn by this mob spawner. */
- eMonsterType GetEntity(void) const { return m_Entity; }
-
- /** Sets the entity type who will be spawn by this mob spawner. */
- void SetEntity(eMonsterType a_EntityType) { m_Entity = a_EntityType; }
-
- /** Returns the spawn delay. This is the tick delay that is needed to spawn new monsters. */
- short GetSpawnDelay(void) const { return m_SpawnDelay; }
-
- /** Sets the spawn delay. */
- void SetSpawnDelay(short a_Delay) { m_SpawnDelay = a_Delay; }
-
- /** Returns the amount of the nearby players in a 16-block radius. */
+ // Getters
+ int GetNearbyMonsterNum(eMonsterType a_EntityType);
int GetNearbyPlayersNum(void);
- /** Returns the amount of this monster type in a 8-block radius (Y: 4-block radius). */
- int GetNearbyMonsterNum(eMonsterType a_EntityType);
+ eMonsterType GetEntity(void) const { return m_Entity; }
+ short GetSpawnCount(void) const { return m_SpawnCount; }
+ short GetSpawnRange(void) const { return m_SpawnRange; }
+ short GetSpawnDelay(void) const { return m_SpawnDelay; }
+ short GetMinSpawnDelay(void) const { return m_MinSpawnDelay; }
+ short GetMaxSpawnDelay(void) const { return m_MaxSpawnDelay; }
+ short GetMaxNearbyEntities(void) const { return m_MaxNearbyEntities; }
+ short GetRequiredPlayerRange(void) const { return m_RequiredPlayerRange; }
+
+ // Setters
+ void SetEntity(eMonsterType a_EntityType) { m_Entity = a_EntityType; }
+ void SetSpawnDelay(short a_Delay) { m_SpawnDelay = a_Delay; }
+ void SetSpawnCount(short a_SpawnCount) { m_SpawnCount = a_SpawnCount; }
+ void SetSpawnRange(short a_SpawnRange) { m_SpawnRange = a_SpawnRange; }
+ void SetMinSpawnDelay(short a_Min) { m_MinSpawnDelay = a_Min; }
+ void SetMaxSpawnDelay(short a_Max) { m_MaxSpawnDelay = a_Max; }
+ void SetMaxNearbyEntities(short a_MaxNearbyEntities) { m_MaxNearbyEntities = a_MaxNearbyEntities; }
+ void SetRequiredPlayerRange(short a_RequiredPlayerRange) { m_RequiredPlayerRange = a_RequiredPlayerRange; }
// tolua_end
- static const char * GetClassStatic(void) { return "cMobSpawnerEntity"; }
-
private:
/** The entity to spawn. */
eMonsterType m_Entity;
+ /** Time in ticks until the next entity spawns */
short m_SpawnDelay;
bool m_IsActive;
+
+ /** Number of entities the spawner tries to spawn each activation. */
+ short m_SpawnCount = 4;
+
+ /** Diameter of the square the new monsters are spawned in */
+ short m_SpawnRange = 8;
+
+ short m_MinSpawnDelay = 200;
+
+ short m_MaxSpawnDelay = 800;
+
+ /** Maximum amount of the same entity type in proximity. */
+ short m_MaxNearbyEntities = 6;
+
+ /** Maximum distance to player for activation */
+ short m_RequiredPlayerRange = 16;
+
} ; // tolua_end