diff --git a/l4d2_linux.h b/l4d2_linux.h index 1217ea2..afa1b37 100644 --- a/l4d2_linux.h +++ b/l4d2_linux.h @@ -16,5 +16,6 @@ #include "Activity_enum.h" #include "baseclient.h" #include "terror_bots.h" +#include "zombie_manager.h" #endif diff --git a/l4d2_windows.h b/l4d2_windows.h index ee771b7..8c706c8 100644 --- a/l4d2_windows.h +++ b/l4d2_windows.h @@ -13,5 +13,6 @@ #include "gamerules.h" #include "abilities.h" #include "activity_enum.h" +#include "zombie_manager.h" #endif diff --git a/zombie_manager.h b/zombie_manager.h new file mode 100644 index 0000000..3fe13d0 --- /dev/null +++ b/zombie_manager.h @@ -0,0 +1,55 @@ +#ifndef _INCLUDE_ZOMBIE_MANAGER_H_ +#define _INCLUDE_ZOMBIE_MANAGER_H_ + +#include "timers.h" + +enum PreferredMobDirection +{ + SPAWN_NO_PREFERENCE = -1, + SPAWN_ANYWHERE = 0, + SPAWN_BEHIND_SURVIVORS = 1, + SPAWN_NEAR_IT_VICTIM = 2, + SPAWN_FAR_AWAY_FROM_SURVIVORS = 5, + SPAWN_ABOVE_SURVIVORS = 6, + SPAWN_IN_FRONT_OF_SURVIVORS = 7, + SPAWN_LARGE_VOLUME = 9 +}; + +struct ZombieManager_UnknownStruct // 0x14, I guess it can be NavArea or CTerrorNavArea +{ + int m_iUnknown[5]; +}; + +struct ZombieManager +{ + void *vptr; // 0x0, virtual destructor only + bool unknown[4]; // 0x4, first two bytes are used + int m_nFallenSurvivors; // 0x8 + CountdownTimer m_FallenSurvivorTimer; // 0xC - 0x14 + bool m_bJimmyTimerExpired; // 0x18 + CountdownTimer m_JimmyTimer; // 0x1C - 0x24 + char unknown40[4]; // 0x28 + int m_iUnknown44; // 0x2C + CountdownTimer m_MegaMobTimer; // 0x30 - 0x38 + char unknown60[52]; // 0x3C - 0x6C + ZombieManager_UnknownStruct m_unknownStruct[11]; // 0x70 - 0x138 + CountdownTimer m_unknownTimer332[11]; // 0x14C - 0x1C4 + int m_iUnknown464[10]; // 0x1D0 - 0x1F4 + CountdownTimer m_unknownTimer504; // 0x1F8 - 0x200 + CountdownTimer m_unknownTimer516; // 0x204 - 0x20C + int m_nPendingMobCount; // 0x210 + PreferredMobDirection m_PreferredMobDirection; // 0x214 + int m_PreferredMobPosition; // 0x218 + int m_PreferredMobPositionRange; // 0x21C + int m_iUnknown544; // 0x220 + int m_iUnknown548; // 0x224 + CountdownTimer m_unknownTimer552; // 0x228 - 0x230 + int m_nAmbientMobCount; // 0x234 + int m_nAmbientMobUnknown; // 0x238 + int m_iUnknown572[16]; // 0x23C - 0x278 + char unknown636[12]; // 0x27C + char unknown648[4]; // 0x288 + int m_iUnknown652; // 0x28C +}; + +#endif