PrecacheSound("Weapon_AirBurster.Explode") ::OverclockNamespace <- { Cleanup = function() { // cleanup any persistent changes here // keep this at the end delete ::OverclockNamespace } // mandatory events OnGameEvent_recalculate_holidays = function(_) { if (GetRoundState() == 3) Cleanup() } OnGameEvent_mvm_wave_complete = function(_) { Cleanup() } // add stored variables or your own events here // // e.g. // myvar = 123 // // OnGameEvent_player_death = function(params) // { ... } gamerules = FindByClassname(null, "tf_gamerules") function IsMiniCritAttacker(entity) { local CritArray = [16, 19, 31] foreach(crit in CritArray) { if (entity.InCond(crit)) { return true } } return false } function IsMiniCritVictim(entity) { local CritArray = [24, 30] foreach(crit in CritArray) { if (entity.InCond(crit)) { return true } } return false } function IsCritAttacker(entity) { local CritArray = [11, 34, 37, 39, 40, 44, 56] foreach(crit in CritArray) { if (entity.InCond(crit)) { return true } } return false } function OnScriptHook_OnTakeDamage(params) { local victim = params.const_entity local weapon = params.weapon local attacker = params.attacker local entity = params.inflictor local damage = params.damage local dmgtype = params.damage_type local dmg_special = params.damage_stats local scope = victim.GetScriptScope() //knife overclock if (weapon.GetAttribute("never craftable", 0) == 1 && dmg_special == 2 && !victim.IsMiniBoss()) { local factor = 1 local user = weapon.GetOwner() local user_origin = user.GetOrigin() local weapon_damage = weapon.GetAttribute("armor piercing", 0) * 2 local sound_range = (40 + (20 * log10(3000 / 36.0))).tointeger(); for (local player; player = FindByClassnameWithin(player, "player", user_origin, 250);) { if (OverclockNamespace.IsCritAttacker(user)) { factor = 3 } else if (OverclockNamespace.IsMiniCritVictim(victim) || OverclockNamespace.IsMiniCritAttacker(user)) { factor = 1.35 } if (player.GetTeam() != user.GetTeam() && player.GetTeam() != TEAM_SPECTATOR) { player.TakeDamageEx(null, user, weapon, Vector(0, 0, 0), user_origin, weapon_damage + 50 * factor, 64) } } DispatchParticleEffect("bombinomicon_burningdebris", victim.GetOrigin(), Vector(0, 0, 0)) EmitSoundEx ({ sound_name = "Weapon_AirBurster.Explode", origin = user_origin, sound_level = sound_range }); } } function OnGameEvent_player_spawn(params) { local player = GetPlayerFromUserID(params.userid) local secondary = PopExtUtil.GetItemInSlot(player, 1) //printl(secondary) player.ValidateScriptScope() local playerscope = player.GetScriptScope() } }; __CollectGameEventCallbacks(OverclockNamespace)