BossHP: General Kenobi cleans house.

This commit is contained in:
zaCade
2018-10-15 23:14:54 +02:00
parent 17dfe2f334
commit 2d3c9e1966
3 changed files with 72 additions and 66 deletions
+58 -37
View File
@@ -21,6 +21,8 @@ Handle g_hFwd_OnBossInitialized;
Handle g_hFwd_OnBossDamaged;
Handle g_hFwd_OnBossKilled;
ConVar g_hCvar_DebugMode;
char g_sHUDText[256];
public Plugin myinfo =
@@ -34,14 +36,27 @@ 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);
g_hFwd_OnBossInitialized = CreateGlobalForward("OnBossInitialized", ET_Ignore, Param_Any, Param_Any);
g_hFwd_OnBossDamaged = CreateGlobalForward("OnBossDamaged", ET_Ignore, Param_Any, Param_Any, Param_Cell);
g_hFwd_OnBossKilled = CreateGlobalForward("OnBossKilled", ET_Ignore, Param_Any, Param_Any, Param_Cell);
g_hCvar_DebugMode = CreateConVar("bosshp_debug", "0", _, _, true, 0.0, true, 1.0);
HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy);
HookEntityOutput("env_entity_maker", "OnEntitySpawned", OnEnvEntityMakerEntitySpawned);
}
void LogDebugMessage(const char[] message, any ...)
{
if(g_hCvar_DebugMode.BoolValue)
{
char buffer[1024];
VFormat(buffer, sizeof(buffer), message, 2);
LogMessage(buffer);
}
}
public void OnPluginEnd()
{
Cleanup();
@@ -49,16 +64,6 @@ public void OnPluginEnd()
void Cleanup()
{
if(g_aConfig)
{
for(int i = 0; i < g_aConfig.Length; i++)
{
CConfig Config = g_aConfig.Get(i);
delete Config;
}
delete g_aConfig;
}
if(g_aBoss)
{
for(int i = 0; i < g_aBoss.Length; i++)
@@ -67,6 +72,7 @@ void Cleanup()
Call_StartForward(g_hFwd_OnBossKilled);
Call_PushCell(Boss);
Call_PushCell(Boss.dConfig);
Call_PushCell(0);
Call_Finish();
@@ -74,6 +80,16 @@ void Cleanup()
}
delete g_aBoss;
}
if(g_aConfig)
{
for(int i = 0; i < g_aConfig.Length; i++)
{
CConfig Config = g_aConfig.Get(i);
delete Config;
}
delete g_aConfig;
}
}
public void OnMapEnd()
@@ -415,7 +431,7 @@ public void OnEntitySpawned(int entity)
HookSingleEntityOutput(entity, sOutput, OnEntityOutput, Once);
}
LogMessage("Hooked trigger %s:%s", sTrigger, sOutput);
LogDebugMessage("Hooked trigger %s:%s", sTrigger, sOutput);
}
char sShowTrigger[64];
@@ -440,7 +456,7 @@ public void OnEntitySpawned(int entity)
HookSingleEntityOutput(entity, sShowOutput, OnEntityOutputShow, Once);
}
LogMessage("Hooked showtrigger %s:%s", sShowTrigger, sShowOutput);
LogDebugMessage("Hooked showtrigger %s:%s", sShowTrigger, sShowOutput);
}
char sKillTrigger[64];
@@ -465,7 +481,7 @@ public void OnEntitySpawned(int entity)
HookSingleEntityOutput(entity, sKillOutput, OnEntityOutputKill, Once);
}
LogMessage("Hooked killtrigger %s:%s", sKillTrigger, sKillOutput);
LogDebugMessage("Hooked killtrigger %s:%s", sKillTrigger, sKillOutput);
}
char sHurtTrigger[64];
@@ -489,7 +505,7 @@ public void OnEntitySpawned(int entity)
HookSingleEntityOutput(entity, sHurtOutput, OnEntityOutputHurt);
}
LogMessage("Hooked hurttrigger %s:%s", sHurtTrigger, sHurtOutput);
LogDebugMessage("Hooked hurttrigger %s:%s", sHurtTrigger, sHurtOutput);
}
}
}
@@ -573,9 +589,9 @@ void OnTrigger(int entity, const char[] output, SDKHookType HookType = view_as<S
g_aHadOnce.SetValue(sTemp, true);
if(iTriggerHammerID == -1)
LogMessage("Triggered boss %s(%d) from output %s", sTargetname, entity, output);
LogDebugMessage("Triggered boss %s(%d) from output %s", sTargetname, entity, output);
else
LogMessage("Triggered boss #%d(%d) from output %s", iTriggerHammerID, entity, output);
LogDebugMessage("Triggered boss #%d(%d) from output %s", iTriggerHammerID, entity, output);
}
}
}
@@ -623,9 +639,9 @@ void OnShowTrigger(int entity, const char[] output, SDKHookType HookType = view_
continue;
if(iShowTriggerHammerID == -1)
LogMessage("Triggered show boss %s(%d) from output %s", sTargetname, entity, output);
LogDebugMessage("Triggered show boss %s(%d) from output %s", sTargetname, entity, output);
else
LogMessage("Triggered show boss #%d(%d) from output %s", iShowTriggerHammerID, entity, output);
LogDebugMessage("Triggered show boss #%d(%d) from output %s", iShowTriggerHammerID, entity, output);
if(HookType != view_as<SDKHookType>(-1) && !Config.bMultiTrigger)
{
@@ -648,12 +664,12 @@ void OnShowTrigger(int entity, const char[] output, SDKHookType HookType = view_
if(fShowTriggerDelay > 0)
{
Boss.fShowAt = GetGameTime() + fShowTriggerDelay;
LogMessage("Scheduled show(%f) boss %d", fShowTriggerDelay, j);
LogDebugMessage("Scheduled show(%f) boss %d", fShowTriggerDelay, j);
}
else
{
Boss.bShow = true;
LogMessage("Showing boss %d", j);
LogDebugMessage("Showing boss %d", j);
}
}
}
@@ -702,9 +718,9 @@ void OnKillTrigger(int entity, const char[] output, SDKHookType HookType = view_
continue;
if(iKillTriggerHammerID == -1)
LogMessage("Triggered kill boss %s(%d) from output %s", sTargetname, entity, output);
LogDebugMessage("Triggered kill boss %s(%d) from output %s", sTargetname, entity, output);
else
LogMessage("Triggered kill boss #%d(%d) from output %s", iKillTriggerHammerID, entity, output);
LogDebugMessage("Triggered kill boss #%d(%d) from output %s", iKillTriggerHammerID, entity, output);
if(HookType != view_as<SDKHookType>(-1) && !Config.bMultiTrigger)
{
@@ -727,14 +743,15 @@ void OnKillTrigger(int entity, const char[] output, SDKHookType HookType = view_
if(fKillTriggerDelay > 0)
{
Boss.fKillAt = GetGameTime() + fKillTriggerDelay;
LogMessage("Scheduled kill(%f) boss %d", fKillTriggerDelay, j);
LogDebugMessage("Scheduled kill(%f) boss %d", fKillTriggerDelay, j);
}
else
{
LogMessage("Killed boss %d", j);
LogDebugMessage("Killed boss %d", j);
Call_StartForward(g_hFwd_OnBossKilled);
Call_PushCell(Boss);
Call_PushCell(Boss.dConfig);
Call_PushCell(1);
Call_Finish();
@@ -788,10 +805,10 @@ void OnHurtTrigger(int entity, const char[] output, int activator)
if(!StrEqual(output, sHurtOutput))
continue;
// if(iHurtTriggerHammerID == -1)
// LogMessage("Triggered hurt boss %s(%d) from output %s", sTargetname, entity, output);
// else
// LogMessage("Triggered hurt boss #%d(%d) from output %s", iHurtTriggerHammerID, entity, output);
if(iHurtTriggerHammerID == -1)
LogDebugMessage("Triggered hurt boss %s(%d) from output %s", sTargetname, entity, output);
else
LogDebugMessage("Triggered hurt boss #%d(%d) from output %s", iHurtTriggerHammerID, entity, output);
for(int j = 0; j < g_aBoss.Length; j++)
{
@@ -805,6 +822,7 @@ void OnHurtTrigger(int entity, const char[] output, int activator)
Call_StartForward(g_hFwd_OnBossDamaged);
Call_PushCell(Boss);
Call_PushCell(Boss.dConfig);
Call_PushCell(activator);
Call_Finish();
}
@@ -892,10 +910,11 @@ public void OnGameFrame()
if(Boss.fKillAt && Boss.fKillAt < GetGameTime())
{ // Delete Boss
LogMessage("Deleting boss %d (KillAt)", i);
LogDebugMessage("Deleting boss %d (KillAt)", i);
Call_StartForward(g_hFwd_OnBossKilled);
Call_PushCell(Boss);
Call_PushCell(Boss.dConfig);
Call_PushCell(1);
Call_Finish();
@@ -921,10 +940,11 @@ public void OnGameFrame()
if(!BossProcess(Boss))
{ // Delete Boss
LogMessage("Deleting boss %d (dead)", i);
LogDebugMessage("Deleting boss %d (dead)", i);
Call_StartForward(g_hFwd_OnBossKilled);
Call_PushCell(Boss);
Call_PushCell(Boss.dConfig);
Call_PushCell(2);
Call_Finish();
@@ -1207,7 +1227,7 @@ bool BossInit(CBoss _Boss)
HookSingleEntityOutput(entity, sShowOutput, OnEntityOutputShow, Once);
}
LogMessage("Hooked showtrigger %s:%s", sShowTrigger, sShowOutput);
LogDebugMessage("Hooked showtrigger %s:%s", sShowTrigger, sShowOutput);
}
}
@@ -1234,7 +1254,7 @@ bool BossInit(CBoss _Boss)
HookSingleEntityOutput(entity, sKillOutput, OnEntityOutputKill, Once);
}
LogMessage("Hooked killtrigger %s:%s", sKillTrigger, sKillOutput);
LogDebugMessage("Hooked killtrigger %s:%s", sKillTrigger, sKillOutput);
}
}
@@ -1260,17 +1280,18 @@ bool BossInit(CBoss _Boss)
HookSingleEntityOutput(entity, sHurtOutput, OnEntityOutputHurt);
}
LogMessage("Hooked hurttrigger %s:%s", sHurtTrigger, sHurtOutput);
LogDebugMessage("Hooked hurttrigger %s:%s", sHurtTrigger, sHurtOutput);
}
}
}
char sBoss[64];
_Config.GetName(sBoss, sizeof(sBoss));
LogMessage("Initialized boss %s (template = %d)", sBoss, iTemplateNum);
LogDebugMessage("Initialized boss %s (template = %d)", sBoss, iTemplateNum);
Call_StartForward(g_hFwd_OnBossInitialized);
Call_PushCell(_Boss);
Call_PushCell(_Boss.dConfig);
Call_Finish();
return true;