BossHP: HammerID support and more configs

This commit is contained in:
BotoX 2017-03-19 00:35:54 +01:00
parent 81f79c51ca
commit c932ee868c
4 changed files with 275 additions and 30 deletions

View File

@ -0,0 +1,59 @@
"bosses"
{
"0" // Stage 2
{
"name" "Cannon"
"method" "hpbar"
"trigger" "delo_boss_hity:OnStartTouch"
"iterator" "boss_hp_iterations"
"counter" "delo_counter"
"backup" "boss_hp_backup"
}
"1" // Stage 3
{
"name" "Pirate"
"method" "hpbar"
"trigger" "pirate_add_hit:OnStartTouch"
"iterator" "pirate_hp_iterations"
"counter" "pirate_counter"
"backup" "pirate_hp_backup"
}
"2" // Stage 4
{
"name" "Barbossa"
"method" "hpbar"
"trigger" "barbossa2_pocty:OnStartTouch"
"iterator" "barbossa_hp_iterations"
"counter" "barbossa_counter"
"backup" "barbossa_hp_backup"
}
"3" // Stage 5
{
"name" "Kraken"
"method" "hpbar"
"trigger" "kraken_multipl:OnStartTouch"
"iterator" "kraken_hp_iterations"
"counter" "kraken_counter"
"backup" "kraken_hp_backup"
}
"4"
{
"name" "Barbossa"
"method" "counter"
"trigger" "final_barbossa_hity:OnStartTouch"
"counter" "final_barbossa_counter"
}
"5"
{
"name" "Barbossa"
"method" "counter"
"trigger" "bb_pocty:OnStartTouch"
"counter" "final_barbossa_counter2"
}
}

View File

@ -0,0 +1,129 @@
"bosses"
{
// Stage 1 - Bosses
"0"
{
"name" "Nidoqueen"
"method" "breakable"
"trigger" "nidoqueen_template:OnEntitySpawned"
"breakable" "nidoqueen"
}
// Stage 2 - Bosses
"1"
{
"name" "Regice"
"method" "counter"
"trigger" "addhealth_regi:OnStartTouch:3"
"killtrigger" "regiiceboss:OnBreak"
"counter" "regicehealth"
}
// Stage 3 - Bosses
"2"
{
"name" "Kirlia"
"method" "breakable"
"trigger" "KirliaSpawn:OnEntitySpawned"
"breakable" "kirlia"
}
"3"
{
"name" "Crobat"
"method" "breakable"
"trigger" "CrobatSpawn:OnEntitySpawned"
"breakable" "Crobat"
}
"4"
{
"name" "Groudon"
"method" "counter"
"trigger" "groudonaddhealth:OnStartTouch:1"
"killtrigger" "Groudon:OnBreak"
"counter" "groudonhp"
}
"5"
{
"name" "Kirlia"
"method" "counter"
"trigger" "crobatfinalbossspawn:OnEntitySpawned"
"killtrigger" "CrobatFinalboss:OnBreak"
"counter" "finalkirlia_hp"
}
"6" // Stage 4 - Bosses
{
"name" "Skuntank"
"method" "counter"
"trigger" "skuntank_spawn:OnEntitySpawned"
"killtrigger" "Skuntank:OnBreak"
"counter" "skuntankhealth"
}
"7"
{
"name" "Purugly"
"method" "counter"
"trigger" "purugly_spawn:OnEntitySpawned"
"killtrigger" "Purugly:OnBreak"
"counter" "puruglyhealth"
}
"8"
{
"name" "Honchkrow"
"method" "counter"
"trigger" "HonchkrowSpawn:OnEntitySpawned"
"killtrigger" "Honchkrow:OnBreak"
"counter" "honchkrowhp"
}
"9"
{
"name" "Crobat"
"method" "counter"
"trigger" "CrobatSpawnCyrus:OnEntitySpawned"
"killtrigger" "CrobatCyrus:OnBreak"
"counter" "crobatcyrushp"
}
"10"
{
"name" "Weavile"
"method" "counter"
"trigger" "WaevileSpawn:OnEntitySpawned"
"killtrigger" "Weavile:OnBreak"
"counter" "weavilehp"
}
"11"
{
"name" "Giratina"
"method" "counter"
"trigger" "addhealth_gira:OnStartTouch"
"killtrigger" "Giratina:OnBreak"
"counter" "giratinahp"
}
"12"
{
"name" "Crobat"
"method" "counter"
"trigger" "bottom_2_medium:OnStartTouch:1"
"killtrigger" "CrobatFinalPart2:OnBreak"
"counter" "crobatfinal2_health"
}
"13"
{
"name" "Weavile"
"method" "counter"
"trigger" "cyrusfinalspawner:OnEntitySpawned"
"killtrigger" "WeavileFinal:OnBreak"
"counter" "weavilefinalhp"
}
}

View File

@ -1,11 +1,11 @@
"bosses"
{
"0" // Glados
{
"name" "Glados"
"method" "counter"
"trigger" "lvl1_cts_counter_trigger:OnTrigger"
"counter" "lvl1_health_counter"
}
"bosses"
{
"0" // Glados
{
"name" "Glados"
"method" "counter"
"trigger" "lvl1_cts_counter_trigger:OnTrigger"
"counter" "lvl1_health_counter"
}
}

View File

@ -23,7 +23,7 @@ public Plugin myinfo =
name = "BossHP",
author = "BotoX",
description = "",
version = "0.1",
version = "0.2",
url = ""
};
@ -351,8 +351,9 @@ public void OnEntitySpawned(int entity)
return;
char sTargetname[64];
if(!GetEntPropString(entity, Prop_Data, "m_iName", sTargetname, sizeof(sTargetname)))
return;
GetEntPropString(entity, Prop_Data, "m_iName", sTargetname, sizeof(sTargetname));
int iHammerID = GetEntProp(entity, Prop_Data, "m_iHammerID");
for(int i = 0; i < g_aConfig.Length; i++)
{
@ -361,7 +362,11 @@ public void OnEntitySpawned(int entity)
char sTrigger[64];
Config.GetTrigger(sTrigger, sizeof(sTrigger));
if(StrEqual(sTargetname, sTrigger))
int iTriggerHammerID = -1;
if(sTrigger[0] == '#')
iTriggerHammerID = StringToInt(sTrigger[1]);
if((iTriggerHammerID == -1 && sTargetname[0] && StrEqual(sTargetname, sTrigger)) || iTriggerHammerID == iHammerID)
{
char sOutput[64];
Config.GetOutput(sOutput, sizeof(sOutput));
@ -382,7 +387,11 @@ public void OnEntitySpawned(int entity)
char sShowTrigger[64];
Config.GetShowTrigger(sShowTrigger, sizeof(sShowTrigger));
if(sShowTrigger[0] && StrEqual(sTargetname, sShowTrigger))
int iShowTriggerHammerID = -1;
if(sShowTrigger[0] == '#')
iShowTriggerHammerID = StringToInt(sShowTrigger[1]);
if((iShowTriggerHammerID == -1 && sShowTrigger[0] && StrEqual(sTargetname, sShowTrigger)) || iShowTriggerHammerID == iHammerID)
{
char sShowOutput[64];
Config.GetShowOutput(sShowOutput, sizeof(sShowOutput));
@ -403,7 +412,11 @@ public void OnEntitySpawned(int entity)
char sKillTrigger[64];
Config.GetKillTrigger(sKillTrigger, sizeof(sKillTrigger));
if(sKillTrigger[0] && StrEqual(sTargetname, sKillTrigger))
int iKillTriggerHammerID = -1;
if(sKillTrigger[0] == '#')
iKillTriggerHammerID = StringToInt(sKillTrigger[1]);
if((iKillTriggerHammerID == -1 && sKillTrigger[0] && StrEqual(sTargetname, sKillTrigger)) || iKillTriggerHammerID == iHammerID)
{
char sKillOutput[64];
Config.GetKillOutput(sKillOutput, sizeof(sKillOutput));
@ -426,8 +439,11 @@ public void OnEntitySpawned(int entity)
void OnTrigger(int entity, const char[] output, SDKHookType HookType = view_as<SDKHookType>(-1))
{
char sTargetname[64];
if(!GetEntPropString(entity, Prop_Data, "m_iName", sTargetname, sizeof(sTargetname)))
return;
GetEntPropString(entity, Prop_Data, "m_iName", sTargetname, sizeof(sTargetname));
int iHammerID = GetEntProp(entity, Prop_Data, "m_iHammerID");
PrintToServer("OnTrigger(%d:\"%s\":#%d, \"%s\")", entity, sTargetname, iHammerID, output);
for(int i = 0; i < g_aConfig.Length; i++)
{
@ -436,7 +452,15 @@ void OnTrigger(int entity, const char[] output, SDKHookType HookType = view_as<S
char sTrigger[64];
Config.GetTrigger(sTrigger, sizeof(sTrigger));
if(!StrEqual(sTargetname, sTrigger))
int iTriggerHammerID = -1;
if(sTrigger[0] == '#')
{
iTriggerHammerID = StringToInt(sTrigger[1]);
if(iTriggerHammerID != iHammerID)
continue;
}
else if(!sTargetname[0] || !StrEqual(sTargetname, sTrigger))
continue;
char sOutput[64];
@ -490,7 +514,10 @@ void OnTrigger(int entity, const char[] output, SDKHookType HookType = view_as<S
if(Once)
g_aHadOnce.SetValue(sTemp, true);
LogMessage("Triggered boss %s(%d) from output %s", sTargetname, entity, output);
if(iTriggerHammerID == -1)
LogMessage("Triggered boss %s(%d) from output %s", sTargetname, entity, output);
else
LogMessage("Triggered boss #%d(%d) from output %s", iTriggerHammerID, entity, output);
}
}
}
@ -498,8 +525,9 @@ void OnTrigger(int entity, const char[] output, SDKHookType HookType = view_as<S
void OnShowTrigger(int entity, const char[] output, SDKHookType HookType = view_as<SDKHookType>(-1))
{
char sTargetname[64];
if(!GetEntPropString(entity, Prop_Data, "m_iName", sTargetname, sizeof(sTargetname)))
return;
GetEntPropString(entity, Prop_Data, "m_iName", sTargetname, sizeof(sTargetname));
int iHammerID = GetEntProp(entity, Prop_Data, "m_iHammerID");
int iTemplateNum = -1;
int iTemplateLoc = FindCharInString(sTargetname, '&', true);
@ -516,7 +544,18 @@ void OnShowTrigger(int entity, const char[] output, SDKHookType HookType = view_
char sShowTrigger[64];
Config.GetShowTrigger(sShowTrigger, sizeof(sShowTrigger));
if(!StrEqual(sTargetname, sShowTrigger))
if(!sShowTrigger[0])
continue;
int iShowTriggerHammerID = -1;
if(sShowTrigger[0] == '#')
{
iShowTriggerHammerID = StringToInt(sShowTrigger[1]);
if(iShowTriggerHammerID != iHammerID)
continue;
}
else if(!sTargetname[0] || !StrEqual(sTargetname, sShowTrigger))
continue;
char sShowOutput[64];
@ -525,7 +564,10 @@ void OnShowTrigger(int entity, const char[] output, SDKHookType HookType = view_
if(!StrEqual(output, sShowOutput))
continue;
LogMessage("Triggered show boss %s(%d) from output %s", sTargetname, entity, output);
if(iShowTriggerHammerID == -1)
LogMessage("Triggered show boss %s(%d) from output %s", sTargetname, entity, output);
else
LogMessage("Triggered show boss #%d(%d) from output %s", iShowTriggerHammerID, entity, output);
if(HookType != view_as<SDKHookType>(-1) && !Config.bMultiTrigger)
{
@ -562,8 +604,9 @@ void OnShowTrigger(int entity, const char[] output, SDKHookType HookType = view_
void OnKillTrigger(int entity, const char[] output, SDKHookType HookType = view_as<SDKHookType>(-1))
{
char sTargetname[64];
if(!GetEntPropString(entity, Prop_Data, "m_iName", sTargetname, sizeof(sTargetname)))
return;
GetEntPropString(entity, Prop_Data, "m_iName", sTargetname, sizeof(sTargetname));
int iHammerID = GetEntProp(entity, Prop_Data, "m_iHammerID");
int iTemplateNum = -1;
int iTemplateLoc = FindCharInString(sTargetname, '&', true);
@ -580,7 +623,18 @@ void OnKillTrigger(int entity, const char[] output, SDKHookType HookType = view_
char sKillTrigger[64];
Config.GetKillTrigger(sKillTrigger, sizeof(sKillTrigger));
if(!sKillTrigger[0] || !StrEqual(sTargetname, sKillTrigger))
if(!sKillTrigger[0])
continue;
int iKillTriggerHammerID = -1;
if(sKillTrigger[0] == '#')
{
iKillTriggerHammerID = StringToInt(sKillTrigger[1]);
if(iKillTriggerHammerID != iHammerID)
continue;
}
else if(!sTargetname[0] || !StrEqual(sTargetname, sKillTrigger))
continue;
char sKillOutput[64];
@ -589,7 +643,10 @@ void OnKillTrigger(int entity, const char[] output, SDKHookType HookType = view_
if(!StrEqual(output, sKillOutput))
continue;
LogMessage("Triggered kill boss %s(%d) from output %s", sTargetname, entity, output);
if(iKillTriggerHammerID == -1)
LogMessage("Triggered kill boss %s(%d) from output %s", sTargetname, entity, output);
else
LogMessage("Triggered kill boss #%d(%d) from output %s", iKillTriggerHammerID, entity, output);
if(HookType != view_as<SDKHookType>(-1) && !Config.bMultiTrigger)
{
@ -636,8 +693,8 @@ public void OnEnvEntityMakerEntitySpawned(const char[] output, int caller, int a
if(!StrEqual(sClassname, "env_entity_maker"))
{
//LogError("[SOURCEMOD BUG] output: \"%s\", caller: %d, activator: %d, delay: %f, classname: \"%s\"",
// output, caller, activator, delay, sClassname);
LogError("[SOURCEMOD BUG] output: \"%s\", caller: %d, activator: %d, delay: %f, classname: \"%s\"",
output, caller, activator, delay, sClassname);
return;
}