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 } }