Bumping up Special Infected
Someone on the forums wanted to up the limits on Hunters and increase their health. Unfortunately SendToConsole() respects cheats (which is kind of silly as scripts are server side), so here's a script that does that. Just call it from a logic_script, setting it's Think function to "Think"
The script code be easily modified to for any SI (or commons). Also you could extend it to give SI random amounts of health (some stronger, some weaker).
This example will issue a beginscript "hunterb.nut" on the director when the "boss" hunters are dispatched. This example will spawn a tank. Though you could call any script, including the built-in ones.
Press the button to start the "boss" hunter attack. In a real map, you'd want to disable the button so it can only be triggered once.
Example VMF - hunters.vmf
hunters.nut - hunters.nut (this goes in scripts\vscripts
huntersb.nut - huntersb.nut (this goes in scripts\vscripts
or all files as zip hunters.zip - hunters.zip
The script code be easily modified to for any SI (or commons). Also you could extend it to give SI random amounts of health (some stronger, some weaker).
This example will issue a beginscript "hunterb.nut" on the director when the "boss" hunters are dispatched. This example will spawn a tank. Though you could call any script, including the built-in ones.
Press the button to start the "boss" hunter attack. In a real map, you'd want to disable the button so it can only be triggered once.
Example VMF - hunters.vmf
hunters.nut - hunters.nut (this goes in scripts\vscripts
huntersb.nut - huntersb.nut (this goes in scripts\vscripts
or all files as zip hunters.zip - hunters.zip
/*
hunterhealth.nut
author: Lee Pumphret
https://www.leeland.info
*/
Msg("HUNTERS v3");
BossHunterCount <- 6; // how many you want
FoundBossHunters <- 0
UseBossHunters <- 0;
HunterHealth <- 1250
OurHunters <- [] // keep track of our bumped up hunters
OurLastSeen <- null // track the last we've seen so we don't have to traverse the entire entity list
function Think(){
if (UseBossHunters){
local z
while (z = Entities.FindByModel(OurLastSeen,"models/infected/hunter.mdl")){
if (FoundBossHunters++ < BossHunterCount){
z.SetHealth(HunterHealth);
OurHunters.push(z); // save a reference to our guys
printl("Hunter #"+FoundBossHunters+" "+z.GetClassname() + " health:"+z.GetHealth());
}else {
//printl("Hunter cap hit, disabling");
UseBossHunters = 0 // turns ourselves off
DirectorScript.DirectorOptions.HunterLimit = 0
}
OurLastSeen = z
}
}
if (OurHunters){
DeadHunters <- 0;
foreach (hunter in OurHunters){
//printl("looking at hunter " + hunter + " health is "+hunter.GetHealth());
if (!hunter.IsValid() || (hunter.GetHealth() <= 1)){ /* dead hunter has 1 health, why? */
DeadHunters++;
}
}
if (DeadHunters == BossHunterCount){
Msg("Boss Hunters dead...");
OurHunters = [];
StopBossHunters();
// EntFire your sound here...
EntFire("director","beginscript", "hunters_b.nut") // or scriptname.nuc if it's a nuc
}
}
}
function StartBossHunters(){
Msg("Activating Boss Hunters")
UseBossHunters = 1
FoundBossHunters = 0
local Dopts = DirectorScript.DirectorOptions // get a reference to the options
Dopts.BoomerLimit <- 0
Dopts.SmokerLimit <- 0
Dopts.HunterLimit <- BossHunterCount
Dopts.ChargerLimit <- 0
Dopts.SpitterLimit <- 0
Dopts.JockeyLimit <- 0
Dopts.DominatorLimit <- BossHunterCount
Dopts.MaxSpecials <- BossHunterCount
EntFire("spawn_hunter","spawnzombie", "hunter") // or scriptname.nuc if it's a nuc
}
function StopBossHunters(){
Msg("Deactivating Boss Hunters")
UseBossHunters = 0
local Dopts = DirectorScript.DirectorOptions // get a reference to the options
Dopts.BoomerLimit <- 1
Dopts.SmokerLimit <- 1
Dopts.HunterLimit <- 1
Dopts.ChargerLimit <- 1
Dopts.SpitterLimit <- 1
Dopts.JockeyLimit <- 1
Dopts.DominatorLimit <- 3
Dopts.MaxSpecials <- 4
}
}
