diff --git a/BossHP/scripting/BossHP.sp b/BossHP/scripting/BossHP.sp index a36d4685..27661ebb 100644 --- a/BossHP/scripting/BossHP.sp +++ b/BossHP/scripting/BossHP.sp @@ -17,7 +17,9 @@ ArrayList g_aConfig; ArrayList g_aBoss; StringMap g_aHadOnce; +Handle g_hFwd_OnBossInitialized; Handle g_hFwd_OnBossDamaged; +Handle g_hFwd_OnBossKilled; char g_sHUDText[256]; @@ -32,7 +34,9 @@ public Plugin myinfo = public void OnPluginStart() { + g_hFwd_OnBossInitialized = CreateGlobalForward("OnBossInitialized", ET_Ignore, Param_Any); g_hFwd_OnBossDamaged = CreateGlobalForward("OnBossDamaged", ET_Ignore, Param_Any, Param_Cell, Param_Cell); + g_hFwd_OnBossKilled = CreateGlobalForward("OnBossKilled", ET_Ignore, Param_Any, Param_Cell); HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy); HookEntityOutput("env_entity_maker", "OnEntitySpawned", OnEnvEntityMakerEntitySpawned); @@ -60,6 +64,12 @@ void Cleanup() for(int i = 0; i < g_aBoss.Length; i++) { CBoss Boss = g_aBoss.Get(i); + + Call_StartForward(g_hFwd_OnBossKilled); + Call_PushCell(Boss); + Call_PushCell(0); + Call_Finish(); + delete Boss; } delete g_aBoss; @@ -721,6 +731,10 @@ void OnKillTrigger(int entity, const char[] output, SDKHookType HookType = view_ } else { + Call_StartForward(g_hFwd_OnBossKilled); + Call_PushCell(Boss); + Call_PushCell(1); + Call_Finish(); delete Boss; g_aBoss.Erase(j); j--; @@ -878,6 +892,10 @@ public void OnGameFrame() if(Boss.fKillAt && Boss.fKillAt < GetGameTime()) { // Delete Boss LogMessage("Deleting boss %d (KillAt)", i); + Call_StartForward(g_hFwd_OnBossKilled); + Call_PushCell(Boss); + Call_PushCell(1); + Call_Finish(); delete Boss; g_aBoss.Erase(i); i--; @@ -900,6 +918,10 @@ public void OnGameFrame() if(!BossProcess(Boss)) { // Delete Boss LogMessage("Deleting boss %d (dead)", i); + Call_StartForward(g_hFwd_OnBossKilled); + Call_PushCell(Boss); + Call_PushCell(2); + Call_Finish(); delete Boss; g_aBoss.Erase(i); i--; @@ -1241,6 +1263,10 @@ bool BossInit(CBoss _Boss) _Config.GetName(sBoss, sizeof(sBoss)); LogMessage("Initialized boss %s (template = %d)", sBoss, iTemplateNum); + Call_StartForward(g_hFwd_OnBossInitialized); + Call_PushCell(_Boss); + Call_Finish(); + return true; } diff --git a/BossHP/scripting/include/BossHP.inc b/BossHP/scripting/include/BossHP.inc index 7bfc5453..ec8aa4a1 100644 --- a/BossHP/scripting/include/BossHP.inc +++ b/BossHP/scripting/include/BossHP.inc @@ -5,3 +5,7 @@ #define BossHP_included forward void OnBossDamaged(any Boss, int entity, int activator); + +forward void OnBossIntialized(any Boss); + +forward void OnBossKilled(any Boss, int reason); //reason: 0 = RoundEnd/MapEnd, 1 = KillTrigger, 2 = "normal death"