local activeGenerator = null function OnGameEvent_mvm_begin_wave(params) { //generator think for (local generator; generator = Entities.FindByName(generator, "prop_button_turbine_1"); ) { //generator if (generator == null) continue AddThinkToEnt(generator, "GeneratorActivate") generator.ValidateScriptScope() generator.GetScriptScope().generatorNumberCount <- 0 // sets up local that is set to 0 } } ::GeneratorActivate <- function()// everything and anything can use this function { //printl(self) AddThinkToEnt(self, "GeneratorThink") self.ValidateScriptScope() self.GetScriptScope().generatorNumberCount <- 0 // sets up local that is set to 0 but as self } ::GeneratorThink <- function() { local generatorOrigin = self.GetOrigin() local generatorAngles = self.GetLocalAngles() activeGenerator = generatorOrigin local found_valid_player = false for (local player; player = FindByClassnameWithin(player, "player", generatorOrigin, 200);) { if (!player.IsUsingActionSlot()) continue if (!player.GetTeam() == 3) // if player isnt blu do not use code continue found_valid_player = true generatorNumberCount++ ClientPrint(player, 4, "Generator activation progress: "+generatorNumberCount+"%") if (generatorNumberCount == 100) { //EntFire("blu_generators", "add", "1", -1, null, null) // prop_dynamic already does this EntFireByHandle(self, "FireUser2", "", -1, null, null) //remove the think after hitting 100% NetProps.SetPropString(self, "m_iszScriptThinkFunction", ""); AddThinkToEnt(self, null); } break // stop looping because a valid player was found } //&& if (found_valid_player == false) { generatorNumberCount-- if (generatorNumberCount < 0) generatorNumberCount = 0 } return 0.03; // ticks generator up slower } ::PostPlayerSpawn <- function() { // "self" is the player entity here if (activeGenerator == null) return local botScale = self.GetModelScale() local botIsGiant = self.IsMiniBoss() if (botScale == null) return if (self.HasBotTag("bot_blu") == true) return if (botIsGiant == true) { self.SetModelScale(1, 0) self.SetModelScale(1.75, 1.5) return } self.Teleport(true, activeGenerator, false, QAngle(), false, self.GetAbsVelocity()) } function OnGameEvent_player_spawn(params) { local player = GetPlayerFromUserID(params.userid); if (player != null && IsPlayerABot(player) == true) { EntFireByHandle(player, "CallScriptFunction", "PostPlayerSpawn", -1, null, null); } } __CollectGameEventCallbacks(this)