this = getroottable() cleanup <- ["cleanup", "AOEMEDIC"] AOEMEDIC <- {} AOEMEDIC.setdelegate ( { function _newslot(key, value) { ::cleanup.insert(0, key) getroottable()[key] <- value } } ) this = AOEMEDIC AOEMEDIC_CALLBACKS <- { function OnGameEvent_recalculate_holidays(params) { foreach (k in cleanup) delete getroottable()[k] } function OnGameEvent_player_spawn(params) { local bot = GetPlayerFromUserID(params.userid) if (!bot.IsFakeClient()) return bot.ValidateScriptScope() EntFireByHandle(bot, "CallScriptFunction", "CheckForAoEMedic", -1.0, null, null) } } function CheckForAoEMedic() { if (self.HasBotTag("aoe_medic")) AddThinkToEnt(self, "AoEUber_Think") } function AoEUber_Think() { local scope = self.GetScriptScope() if (!("init" in scope)) { scope.init <- true scope.uber_beam_1 <- SpawnEntityFromTable("dispenser_touch_trigger", { targetname = "dispenser_trigger" origin = self.GetOrigin() spawnflags = 1 }) scope.uber_beam_2 <- SpawnEntityFromTable("mapobj_cart_dispenser", { origin = self.GetOrigin() TeamNum = 3, spawnflags = 12 touch_trigger = "dispenser_trigger" }) scope.uber_beam_1.KeyValueFromInt("solid", 2) scope.uber_beam_1.KeyValueFromString("mins", "-250 -250 -250") scope.uber_beam_1.KeyValueFromString("maxs", "250 250 250") EntFireByHandle(scope.uber_beam_1, "SetParent", "!activator", -1.0, self, null) EntFireByHandle(scope.uber_beam_2, "SetParent", "!activator", -1.0, self, null) self.AddCond(55) } if (!self.IsAlive()) { AddThinkToEnt(self, "") if (uber_beam_1.IsValid()) uber_beam_1.Kill() if (uber_beam_2.IsValid()) uber_beam_2.Kill() return } for (local player_to_shield; player_to_shield = Entities.FindByClassnameWithin(player_to_shield, "player", self.GetOrigin(), 250); ) { if (player_to_shield == null) continue if (player_to_shield.GetTeam() != 3) continue if (player_to_shield.HasBotTag("no_affect_uber") || player_to_shield.HasBotTag("aoe_medic")) continue player_to_shield.AddCondEx(52, 0.5, self) } return } foreach (name, callback in AOEMEDIC_CALLBACKS) AOEMEDIC_CALLBACKS[name] = callback.bindenv(getroottable()) __CollectGameEventCallbacks(AOEMEDIC_CALLBACKS)