diff --git a/BossHP/scripting/BossHP.sp b/BossHP/scripting/BossHP.sp index 1d29e379..c6a11c67 100644 --- a/BossHP/scripting/BossHP.sp +++ b/BossHP/scripting/BossHP.sp @@ -21,7 +21,7 @@ ConVar g_hCvar_DebugMode; char g_sHUDText[256]; -char g_aHurtEntityToBossIdx[2048] = {0xFF, ...}; +Handle g_aHurtEntityToBoss[2048] = {INVALID_HANDLE, ...}; public Plugin myinfo = { @@ -62,9 +62,9 @@ public void OnPluginEnd() void Cleanup() { - for(int entity = 0; entity < sizeof(g_aHurtEntityToBossIdx); entity++) + for(int entity = 0; entity < sizeof(g_aHurtEntityToBoss); entity++) { - g_aHurtEntityToBossIdx[entity] = 0xFF; + g_aHurtEntityToBoss[entity] = INVALID_HANDLE; } if(g_aBoss) @@ -374,9 +374,9 @@ public void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast) if(!g_aConfig) return; - for(int entity = 0; entity < sizeof(g_aHurtEntityToBossIdx); entity++) + for(int entity = 0; entity < sizeof(g_aHurtEntityToBoss); entity++) { - g_aHurtEntityToBossIdx[entity] = 0xFF; + g_aHurtEntityToBoss[entity] = INVALID_HANDLE; } if(g_aBoss) @@ -477,19 +477,19 @@ public void OnEntitySpawned(int entity, const char[] classname) char sHurtOutput[64]; Config.GetHurtOutput(sHurtOutput, sizeof(sHurtOutput)); - int iBoss = -1; + CBoss Boss = view_as(INVALID_HANDLE); for(int j = 0; j < g_aBoss.Length; j++) { - CBoss Boss = g_aBoss.Get(j); + CBoss _Boss = g_aBoss.Get(j); if(Boss.dConfig != Config) continue; - iBoss = j; + Boss = _Boss; break; } - if(iBoss == -1) + if(Boss == INVALID_HANDLE) { char sBoss[64]; Config.GetName(sBoss, sizeof(sBoss)); @@ -497,7 +497,7 @@ public void OnEntitySpawned(int entity, const char[] classname) continue; } - g_aHurtEntityToBossIdx[entity] = iBoss; + g_aHurtEntityToBoss[entity] = Boss; if(StrEqual(sHurtOutput, "OnTakeDamage")) { @@ -508,7 +508,7 @@ public void OnEntitySpawned(int entity, const char[] classname) HookSingleEntityOutput(entity, sHurtOutput, OnEntityOutputHurt); } - LogDebugMessage("Hooked hurttrigger %s:%s (iBoss %d)", sHurtTrigger, sHurtOutput, iBoss); + LogDebugMessage("Hooked hurttrigger %s:%s Late", sHurtTrigger, sHurtOutput); } } } @@ -518,8 +518,8 @@ public void OnEntityDestroyed(int entity) if(!g_aConfig) return; - if(entity >= 0 && entity < sizeof(g_aHurtEntityToBossIdx)) - g_aHurtEntityToBossIdx[entity] = 0xFF; + if(entity >= 0 && entity < sizeof(g_aHurtEntityToBoss)) + g_aHurtEntityToBoss[entity] = INVALID_HANDLE; } void OnTrigger(int entity, const char[] output, SDKHookType HookType = view_as(-1)) @@ -767,9 +767,7 @@ void OnKillTrigger(int entity, const char[] output, SDKHookType HookType = view_ Call_PushCell(1); Call_Finish(); - delete Boss; - g_aBoss.Erase(j); - OnBossDeleted(j); + DeleteBoss(j, Boss); j--; } } @@ -778,11 +776,10 @@ void OnKillTrigger(int entity, const char[] output, SDKHookType HookType = view_ void OnHurtTrigger(int entity, int activator, float damage = 1.0) { - int BossIdx = g_aHurtEntityToBossIdx[entity]; - if(BossIdx == 0xFF) + if(g_aHurtEntityToBoss[entity] == INVALID_HANDLE) return; - CBoss Boss = g_aBoss.Get(BossIdx); + CBoss Boss = view_as(g_aHurtEntityToBoss[entity]); Call_StartForward(g_hFwd_OnBossDamaged); Call_PushCell(Boss); @@ -881,9 +878,7 @@ public void OnGameFrame() Call_PushCell(1); Call_Finish(); - delete Boss; - g_aBoss.Erase(i); - OnBossDeleted(i); + DeleteBoss(i, Boss); i--; continue; @@ -898,7 +893,7 @@ public void OnGameFrame() Boss.fWaitUntil = 0.0; } - if(!BossInit(i, Boss)) + if(!BossInit(Boss)) continue; } @@ -917,9 +912,7 @@ public void OnGameFrame() Call_PushCell(2); Call_Finish(); - delete Boss; - g_aBoss.Erase(i); - OnBossDeleted(i); + DeleteBoss(i, Boss); i--; continue; @@ -959,7 +952,7 @@ public void OnGameFrame() } } -bool BossInit(int iBoss, CBoss _Boss) +bool BossInit(CBoss _Boss) { CConfig _Config = _Boss.dConfig; bool bNameFixup = _Config.bNameFixup; @@ -1279,7 +1272,7 @@ bool BossInit(int iBoss, CBoss _Boss) int entity = INVALID_ENT_REFERENCE; while((entity = FindEntityByTargetname(entity, sHurtTrigger)) != INVALID_ENT_REFERENCE) { - g_aHurtEntityToBossIdx[entity] = iBoss; + g_aHurtEntityToBoss[entity] = _Boss; if(StrEqual(sHurtOutput, "OnTakeDamage")) { @@ -1484,11 +1477,16 @@ int FindEntityByTargetname(int entity, const char[] sTargetname, const char[] sC return INVALID_ENT_REFERENCE; } -void OnBossDeleted(int iBoss) +void DeleteBoss(int index, CBoss Boss) { - for(int entity = 0; entity < sizeof(g_aHurtEntityToBossIdx); entity++) + for(int entity = 0; entity < sizeof(g_aHurtEntityToBoss); entity++) { - if(g_aHurtEntityToBossIdx[entity] == iBoss) - g_aHurtEntityToBossIdx[entity] = 0xFF; + if(g_aHurtEntityToBoss[entity] == Boss) + { + g_aHurtEntityToBoss[entity] = INVALID_HANDLE; + } } + + delete Boss; + g_aBoss.Erase(index); }