--please do not modify or copy this for your own needs --Note: I AM ok if you copy it for learning purposes and DO NOT claim it as your own --made by Wacev --https:\\steamcommunity.com\profiles\76561198009331097\ local ply_giants = 0 local ply_giant = nil local GiantStats = --the behemoth of a table that handles ALL giant attributes { [0] = --global giant attributes, can be overriden { {attribute = "is miniboss", value = 1, slot = -1}, {attribute = "health from packs decreased", value = 0.25, slot = -1}, {attribute = "head scale", value = 0.75, slot = -1}, {attribute = "voice pitch scale", value = 0.75, slot = -1}, {attribute = "increase player capture value", value = 4, slot = -1}, {attribute = "mult credit collect range", value = 1.75, slot = -1}, }, [1] = --first set of numbers is class { [0] = --second set of numbers is upgrade lvl { {attribute = "damage force reduction", value = 0.7, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.7, slot = -1}, {attribute = "override footstep sound set", value = 5, slot = -1}, {attribute = "max health additive penalty", value = 1075, slot = -1}, }, [1] = { {attribute = "damage force reduction", value = 0.7, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.7, slot = -1}, {attribute = "override footstep sound set", value = 5, slot = -1}, {attribute = "max health additive penalty", value = 1375, slot = -1}, }, [2] = { {attribute = "damage force reduction", value = 0.7, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.7, slot = -1}, {attribute = "override footstep sound set", value = 5, slot = -1}, {attribute = "max health additive penalty", value = 1375, slot = -1}, {attribute = "halloween increased jump height", value = 2, slot = -1}, {attribute = "cancel falling damage", value = 1, slot = -1}, }, [3] = { {attribute = "damage force reduction", value = 0.7, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.7, slot = -1}, {attribute = "override footstep sound set", value = 5, slot = -1}, {attribute = "max health additive penalty", value = 1375, slot = -1}, {attribute = "halloween increased jump height", value = 3.5, slot = -1}, {attribute = "cancel falling damage", value = 1, slot = -1}, {attribute = "burst fire count", value = 3, slot = 0}, {attribute = "burst fire rate mult", value = 2, slot = 0}, {attribute = "halloween fire rate bonus", value = 0.5, slot = 0}, }, [4] = { {attribute = "damage force reduction", value = 0.7, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.7, slot = -1}, {attribute = "override footstep sound set", value = 5, slot = -1}, {attribute = "max health additive penalty", value = 1375, slot = -1}, {attribute = "halloween increased jump height", value = 3.5, slot = -1}, {attribute = "cancel falling damage", value = 1, slot = -1}, {attribute = "burst fire count", value = 3, slot = 0}, {attribute = "burst fire rate mult", value = 2, slot = 0}, {attribute = "halloween fire rate bonus", value = 0.5, slot = 0}, {attribute = "mult_player_movespeed_active", value = 1.5, slot = -1}, --should work } }, [3] = --soldier { [0] = --index 0 for upgrade is base { {attribute = "damage force reduction", value = 0.4, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.4, slot = -1}, {attribute = "override footstep sound set", value = 3, slot = -1}, {attribute = "max health additive penalty", value = 3600, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, }, [1] = { {attribute = "damage force reduction", value = 0.4, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.4, slot = -1}, {attribute = "override footstep sound set", value = 3, slot = -1}, {attribute = "max health additive penalty", value = 3600, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "reload time decreased", value = 0.5, slot = -1}, }, [2] = { {attribute = "damage force reduction", value = 0.4, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.4, slot = -1}, {attribute = "override footstep sound set", value = 3, slot = -1}, {attribute = "max health additive penalty", value = 3600, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "reload time decreased", value = 0.5, slot = -1}, {attribute = "mod soldier buff range", value = 3, slot = 1}, }, [3] = { {attribute = "damage force reduction", value = 0.4, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.4, slot = -1}, {attribute = "override footstep sound set", value = 3, slot = -1}, {attribute = "max health additive penalty", value = 3600, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "reload time decreased", value = 0.5, slot = -1}, {attribute = "mod soldier buff range", value = 3, slot = 1}, {attribute = "melee attack rate bonus", value = 0.4, slot = 0}, {attribute = "projectile speed decreased", value = 0.75, slot = 0}, {attribute = "projectile spread angle penalty", value = 3, slot = -1}, }, [4] = { {attribute = "damage force reduction", value = 0.4, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.4, slot = -1}, {attribute = "override footstep sound set", value = 3, slot = -1}, {attribute = "max health additive penalty", value = 3600, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "reload time decreased", value = 0.2, slot = -1}, {attribute = "mod soldier buff range", value = 3, slot = 1}, {attribute = "melee attack rate bonus", value = 0.4, slot = 0}, {attribute = "projectile speed decreased", value = 0.75, slot = 0}, {attribute = "projectile spread angle penalty", value = 3, slot = -1}, {attribute = "clip size bonus", value = 5, slot = -1}, }, }, [7] = --pyro { [0] = --index 0 for upgrade is base { {attribute = "damage force reduction", value = 0.6, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.6, slot = -1}, {attribute = "override footstep sound set", value = 6, slot = -1}, {attribute = "max health additive penalty", value = 2825, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, }, [1] = { {attribute = "damage force reduction", value = 0.6, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.6, slot = -1}, {attribute = "override footstep sound set", value = 6, slot = -1}, {attribute = "max health additive penalty", value = 3325, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, }, [2] = { {attribute = "damage force reduction", value = 0.6, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.6, slot = -1}, {attribute = "override footstep sound set", value = 6, slot = -1}, {attribute = "max health additive penalty", value = 3325, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "flame_speed", value = 1225, slot = -1}, {attribute = "flame life bonus", value = 1.5, slot = 0}, {attribute = "damage bonus vs burning", value = 2, slot = -1}, }, [3] = { {attribute = "damage force reduction", value = 0.6, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.6, slot = -1}, {attribute = "override footstep sound set", value = 6, slot = -1}, {attribute = "max health additive penalty", value = 3325, slot = -1}, {attribute = "move speed penalty", value = 0.75, slot = -1}, {attribute = "flame_speed", value = 1225, slot = -1}, {attribute = "flame life bonus", value = 1.5, slot = 0}, {attribute = "damage bonus vs burning", value = 2, slot = -1}, }, [4] = { {attribute = "damage force reduction", value = 0.6, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.6, slot = -1}, {attribute = "override footstep sound set", value = 6, slot = -1}, {attribute = "max health additive penalty", value = 3325, slot = -1}, {attribute = "move speed penalty", value = 0.75, slot = -1}, {attribute = "flame_speed", value = 1225, slot = -1}, {attribute = "flame life bonus", value = 1.5, slot = 0}, {attribute = "damage bonus vs burning", value = 2, slot = -1}, {attribute = "add cond when active", value = 64, slot = 2}, {attribute = "mult_player_movespeed_active", value = 1.4, slot = 2}, {attribute = "cannot pick up intelligence", value = 1, slot = 2}, }, }, [4] = --demoman { [0] = --index 0 for upgrade is base { {attribute = "damage force reduction", value = 0.5, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.5, slot = -1}, {attribute = "override footstep sound set", value = 4, slot = -1}, {attribute = "max health additive penalty", value = 3125, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, }, [1] = { {attribute = "damage force reduction", value = 0.5, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.5, slot = -1}, {attribute = "override footstep sound set", value = 4, slot = -1}, {attribute = "max health additive penalty", value = 3125, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "Blast radius increased", value = 1.5, slot = -1}, {attribute = "CARD: damage bonus", value = 1.25, slot = 0}, {attribute = "CARD: damage bonus", value = 1.25, slot = 1}, }, [2] = { {attribute = "damage force reduction", value = 0.5, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.5, slot = -1}, {attribute = "override footstep sound set", value = 4, slot = -1}, {attribute = "max health additive penalty", value = 3125, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "Blast radius increased", value = 1.5, slot = -1}, {attribute = "CARD: damage bonus", value = 1.25, slot = 0}, {attribute = "CARD: damage bonus", value = 1.25, slot = 1}, {attribute = "halloween reload time decreased", value = 0.6, slot = -1}, }, [3] = { {attribute = "damage force reduction", value = 0.5, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.5, slot = -1}, {attribute = "override footstep sound set", value = 4, slot = -1}, {attribute = "max health additive penalty", value = 3125, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "Blast radius increased", value = 1.5, slot = -1}, {attribute = "CARD: damage bonus", value = 1.25, slot = 0}, {attribute = "CARD: damage bonus", value = 1.25, slot = 1}, {attribute = "halloween reload time decreased", value = 0.6, slot = -1}, {attribute = "fire rate bonus", value = 0.25, slot = -1}, {attribute = "clip size bonus", value = 2, slot = -1}, }, [4] = { {attribute = "damage force reduction", value = 0.5, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.5, slot = -1}, {attribute = "override footstep sound set", value = 4, slot = -1}, {attribute = "max health additive penalty", value = 3125, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "Blast radius increased", value = 2, slot = -1}, {attribute = "CARD: damage bonus", value = 2.25, slot = 0}, {attribute = "CARD: damage bonus", value = 1.25, slot = 1}, {attribute = "halloween reload time decreased", value = 0.6, slot = -1}, {attribute = "reload time increased", value = 3, slot = -1}, {attribute = "fire rate bonus", value = 0.25, slot = -1}, {attribute = "fire rate penalty", value = 3, slot = -1}, {attribute = "clip size bonus", value = 2, slot = -1}, }, }, [6] = --heavyweapons { [0] = --index 0 for upgrade is base { {attribute = "damage force reduction", value = 0.3, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.3, slot = -1}, {attribute = "override footstep sound set", value = 2, slot = -1}, {attribute = "max health additive penalty", value = 4700, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "damage bonus", value = 1.5, slot = -1}, }, [1] = { {attribute = "damage force reduction", value = 0.3, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.3, slot = -1}, {attribute = "override footstep sound set", value = 2, slot = -1}, {attribute = "max health additive penalty", value = 4700, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "maxammo primary increased", value = 2, slot = -1}, {attribute = "maxammo secondary increased", value = 2, slot = -1}, {attribute = "damage bonus", value = 1.5, slot = -1}, }, [2] = { {attribute = "damage force reduction", value = 0.3, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.3, slot = -1}, {attribute = "override footstep sound set", value = 2, slot = -1}, {attribute = "max health additive penalty", value = 5700, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "maxammo primary increased", value = 2, slot = -1}, {attribute = "maxammo secondary increased", value = 2, slot = -1}, {attribute = "damage bonus", value = 1.5, slot = -1}, }, [3] = { {attribute = "damage force reduction", value = 0.3, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.3, slot = -1}, {attribute = "override footstep sound set", value = 2, slot = -1}, {attribute = "max health additive penalty", value = 5700, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "maxammo primary increased", value = 2, slot = -1}, {attribute = "maxammo secondary increased", value = 2, slot = -1}, {attribute = "bullets per shot bonus", value = 3.5, slot = 1}, {attribute = "weapon spread bonus", value = 0.75, slot = 1}, {attribute = "damage bonus", value = 1.5, slot = -1}, }, [4] = { {attribute = "damage force reduction", value = 0.3, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.3, slot = -1}, {attribute = "override footstep sound set", value = 2, slot = -1}, {attribute = "max health additive penalty", value = 5700, slot = -1}, {attribute = "move speed penalty", value = 0.8, slot = -1}, {attribute = "maxammo primary increased", value = 2, slot = -1}, {attribute = "maxammo secondary increased", value = 2, slot = -1}, {attribute = "bullets per shot bonus", value = 3.5, slot = 1}, {attribute = "weapon spread bonus", value = 0.75, slot = 1}, {attribute = "damage bonus", value = 1.5, slot = -1}, }, }, [9] = --engineer { [0] = --index 0 for upgrade is base { {attribute = "damage force reduction", value = 0.65, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.65, slot = -1}, {attribute = "override footstep sound set", value = 7, slot = -1}, {attribute = "max health additive penalty", value = 1750, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, }, [1] = { {attribute = "damage force reduction", value = 0.65, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.65, slot = -1}, {attribute = "override footstep sound set", value = 7, slot = -1}, {attribute = "max health additive penalty", value = 1750, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "maxammo metal increased", value = 2.5, slot = -1}, }, [2] = { {attribute = "damage force reduction", value = 0.65, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.65, slot = -1}, {attribute = "override footstep sound set", value = 7, slot = -1}, {attribute = "max health additive penalty", value = 1750, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "maxammo metal increased", value = 2.5, slot = -1}, {attribute = "build rate bonus", value = 0.5, slot = -1}, {attribute = "upgrade rate decrease", value = 2, slot = -1}, }, [3] = { {attribute = "damage force reduction", value = 0.65, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.65, slot = -1}, {attribute = "override footstep sound set", value = 7, slot = -1}, {attribute = "max health additive penalty", value = 1750, slot = -1}, {attribute = "engy building health bonus", value = 1.5, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "maxammo metal increased", value = 2.5, slot = -1}, {attribute = "build rate bonus", value = 0.5, slot = -1}, {attribute = "Repair rate increased", value = 1.6, slot = -1}, {attribute = "upgrade rate decrease", value = 2, slot = -1}, }, [4] = { {attribute = "damage force reduction", value = 0.65, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.65, slot = -1}, {attribute = "override footstep sound set", value = 7, slot = -1}, {attribute = "max health additive penalty", value = 1750, slot = -1}, {attribute = "engy building health bonus", value = 1.5, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "maxammo metal increased", value = 2.5, slot = -1}, {attribute = "build rate bonus", value = 0.5, slot = -1}, {attribute = "Repair rate increased", value = 1.6, slot = -1}, {attribute = "engy dispenser radius increased", value = 1.5, slot = -1}, {attribute = "mult dispenser rate", value = 2, slot = -1}, {attribute = "upgrade rate decrease", value = 2, slot = -1}, }, }, [5] = --medic { [0] = --index 0 for upgrade is base { {attribute = "damage force reduction", value = 0.6, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.6, slot = -1}, {attribute = "max health additive penalty", value = 4350, slot = -1}, {attribute = "move speed penalty", value = 0.75, slot = -1}, {attribute = "heal rate bonus", value = 20, slot = -1}, }, [1] = { {attribute = "damage force reduction", value = 0.6, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.6, slot = -1}, {attribute = "max health additive penalty", value = 4350, slot = -1}, {attribute = "move speed penalty", value = 0.9, slot = -1}, {attribute = "heal rate bonus", value = 20, slot = -1}, }, [2] = { {attribute = "damage force reduction", value = 0.6, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.6, slot = -1}, {attribute = "max health additive penalty", value = 4350, slot = -1}, {attribute = "move speed penalty", value = 0.9, slot = -1}, {attribute = "heal rate bonus", value = 20, slot = -1}, {attribute = "overheal bonus", value = 2, slot = -1}, {attribute = "overheal decay disabled", value = 0.001, slot = -1}, --0.001 to disable decay }, [3] = { {attribute = "damage force reduction", value = 0.6, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.6, slot = -1}, {attribute = "max health additive penalty", value = 4350, slot = -1}, {attribute = "move speed penalty", value = 0.9, slot = -1}, {attribute = "heal rate bonus", value = 20, slot = -1}, {attribute = "overheal bonus", value = 2, slot = -1}, {attribute = "overheal decay disabled", value = 0.001, slot = -1}, {attribute = "medigun passive attributes", value = "halloween reload time decreased|0.8|halloween fire rate bonus|0.8|CARD: damage bonus|1.25", slot = -1}, }, [4] = { {attribute = "damage force reduction", value = 0.6, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.6, slot = -1}, {attribute = "max health additive penalty", value = 4350, slot = -1}, {attribute = "move speed penalty", value = 0.9, slot = -1}, {attribute = "heal rate bonus", value = 20, slot = -1}, {attribute = "overheal bonus", value = 2, slot = -1}, {attribute = "overheal decay disabled", value = 0.001, slot = -1}, {attribute = "medigun passive attributes", value = "halloween reload time decreased|0.8|halloween fire rate bonus|0.8|CARD: damage bonus|1.25", slot = -1}, {attribute = "increase buff duration", value = 2, slot = 1}, --fun fact: proj shield adds increase buff duration with a value of 1.2 to player attributes {attribute = "uber duration bonus", value = 8, slot = -1}, }, }, [2] = --sniper { [0] = --index 0 for upgrade is base { {attribute = "damage force reduction", value = 0.65, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.65, slot = -1}, {attribute = "max health additive penalty", value = 1475, slot = -1}, {attribute = "override footstep sound set", value = 7, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, }, [1] = { {attribute = "damage force reduction", value = 0.65, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.65, slot = -1}, {attribute = "max health additive penalty", value = 1475, slot = -1}, {attribute = "override footstep sound set", value = 7, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "CARD: health regen", value = 50, slot = -1}, }, [2] = { {attribute = "damage force reduction", value = 0.65, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.65, slot = -1}, {attribute = "max health additive penalty", value = 1475, slot = -1}, {attribute = "override footstep sound set", value = 7, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "CARD: health regen", value = 50, slot = -1}, {attribute = "headshot damage increase", value = 2.5, slot = -1}, }, [3] = { {attribute = "damage force reduction", value = 0.65, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.65, slot = -1}, {attribute = "max health additive penalty", value = 1475, slot = -1}, {attribute = "override footstep sound set", value = 7, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "CARD: health regen", value = 50, slot = -1}, {attribute = "headshot damage increase", value = 2.5, slot = -1}, {attribute = "ammo regen", value = 0.25, slot = -1}, }, [4] = { {attribute = "damage force reduction", value = 0.65, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.65, slot = -1}, {attribute = "max health additive penalty", value = 1475, slot = -1}, {attribute = "override footstep sound set", value = 7, slot = -1}, {attribute = "move speed penalty", value = 0.5, slot = -1}, {attribute = "CARD: health regen", value = 50, slot = -1}, {attribute = "headshot damage increase", value = 2.5, slot = -1}, {attribute = "ammo regen", value = 0.25, slot = -1}, {attribute = "ability master sniper", value = 1, slot = -1}, }, }, [8] = --spy { [0] = --index 0 for upgrade is base { {attribute = "damage force reduction", value = 0.65, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.65, slot = -1}, {attribute = "max health additive penalty", value = 2275, slot = -1}, {attribute = "override footstep sound set", value = 7, slot = -1}, {attribute = "move speed penalty", value = 0.65, slot = -1}, }, [1] = { {attribute = "damage force reduction", value = 0.65, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.65, slot = -1}, {attribute = "max health additive penalty", value = 2275, slot = -1}, {attribute = "override footstep sound set", value = 7, slot = -1}, {attribute = "move speed penalty", value = 0.65, slot = -1}, {attribute = "mult cloak meter regen rate", value = 1.6, slot = -1}, {attribute = "cloak consume rate decreased", value = 0.5, slot = -1}, }, [2] = { {attribute = "damage force reduction", value = 0.65, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.65, slot = -1}, {attribute = "max health additive penalty", value = 2275, slot = -1}, {attribute = "override footstep sound set", value = 7, slot = -1}, {attribute = "move speed penalty", value = 0.9, slot = -1}, {attribute = "mult cloak meter regen rate", value = 1.6, slot = -1}, {attribute = "cloak consume rate decreased", value = 0.5, slot = -1}, }, [3] = { {attribute = "damage force reduction", value = 0.65, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.65, slot = -1}, {attribute = "max health additive penalty", value = 2625, slot = -1}, {attribute = "override footstep sound set", value = 7, slot = -1}, {attribute = "move speed penalty", value = 0.9, slot = -1}, {attribute = "mult cloak meter regen rate", value = 1.6, slot = -1}, {attribute = "cloak consume rate decreased", value = 0.5, slot = -1}, }, [4] = { {attribute = "damage force reduction", value = 0.65, slot = -1}, {attribute = "airblast vulnerability multiplier", value = 0.65, slot = -1}, {attribute = "max health additive penalty", value = 2625, slot = -1}, {attribute = "override footstep sound set", value = 7, slot = -1}, {attribute = "move speed penalty", value = 0.9, slot = -1}, {attribute = "mult cloak meter regen rate", value = 1.6, slot = -1}, {attribute = "cloak consume rate decreased", value = 0.5, slot = -1}, {attribute = "CARD: damage bonus", value = 2, slot = 2}, }, } } --1 = scout, 2 = sniper, 3 = soldier, 4 = demoman, 5 = medic, 6 = heavyweapons, 7 = pyro, 8 = spy, 9 = engineer, 10 = civilian --slot 0 = primary, slot 1 = secondary, slot 2 = melee, slot -1 = body function OnPlayerConnected(player) -- very janky hack but it works so ¯\_(ツ)_\¯ if player:IsBot() then player.SapAttackCooldown = 0 end if player:IsRealPlayer() then player.GiantUpgradeLvL = 0 player:AddCallback(ON_DEATH, function() if ply_giants == 1 and ply_giant == player then unmakeGiant(player,player.GiantUpgradeLvL) ply_giants = 0 ply_giant = nil player:PlaySound("MVM.GiantCommonExplodes") for _, others in pairs(ents.GetAllPlayers()) do if others:IsRealPlayer() then others:Print(2,"Our giant has died!") end end elseif math.random(1,5) == 1 and ply_giants == 0 then --20% chance makeGiant(player,player.GiantUpgradeLvL) ply_giants = 1 ply_giant = player player:Print(2,"You will be a gaint next life!") for _, others in pairs(ents.GetAllPlayers()) do if others:IsRealPlayer() and others ~= player then others:Print(2,tostring(player:GetPlayerName()) .. ' will be a giant') end end end end) end end function DevAddLevel() for _, player in pairs(ents.GetAllPlayers()) do if player:IsRealPlayer() then player.GiantUpgradeLvL = player.GiantUpgradeLvL + 1 end end end function DevRemoveLevel() for _, player in pairs(ents.GetAllPlayers()) do if player:IsRealPlayer() then player.GiantUpgradeLvL = player.GiantUpgradeLvL - 1 end end end function OnWaveReset(wave) -- rests giant condition for _, reset in pairs(ents.GetAllPlayers()) do if reset:IsRealPlayer() and reset == ply_giant then unmakeGiant(reset,reset.GiantUpgradeLvL) end end ply_giants = 0 ply_giant = nil end function OnGameTick() for _, player in pairs(ents.GetAllPlayers()) do if player:IsRealPlayer() then local upgradeLvl = player:GetAttributeValue("tag__summer2014") if upgradeLvl == nil then upgradeLvl = 0 end if player.GiantUpgradeLvL ~= upgradeLvl then player.GiantUpgradeLvL = upgradeLvl if player.GiantUpgradeLvL == nil then player.GiantUpgradeLvL = 0 end end --print(player.GiantUpgradeLvL) end if player:IsBot() then if player:InCond(100) then if player.SapAttackCooldown <= 0 then local applier = player:GetConditionProvider(100) if not IsValid(applier) then applier = player end player.SapAttackCooldown = 3 player:TakeDamage({Attacker = applier, Damage = 5, DamageType = DMG_SHOCK, DamageCustom = TF_DMG_CUSTOM_PLASMA, DamagePosition = player:GetAbsOrigin(), ReportedPosition = applier:GetAbsOrigin()}) else player.SapAttackCooldown = player.SapAttackCooldown -1 end else player.SapAttackCooldown = 0 end end end end function OnWaveStart(wave) for _, reset in pairs(ents.GetAllPlayers()) do if reset:IsRealPlayer() and reset == ply_giant then unmakeGiant(reset,reset.GiantUpgradeLvL) reset:Print(2,"Pre-game giants DO NOT carry over into the wave") end end ply_giants = 0 ply_giant = nil ChatTableIndex = 1 LowTimeTable = { --text to put in chat when time is low [1] = "\x07e1eafaGray Mann\x07fbeccb : Will you robots hurry up, we are low on time damnit!", [2] = "\x07e1eafaGray Mann\x07fbeccb : Tic Toc, We don't got all day!", [3] = "\x07e1eafaGray Mann\x07fbeccb : We don't got all day so hurry up!", [4] = "\x07e1eafaGray Mann\x07fbeccb : One minute remains!", [5] = "\x07e1eafaGray Mann\x07fbeccb : Hurry up and deploy the damn bomb!", [6] = "\x07e1eafaGray Mann\x07fbeccb : One minute to deploy the bomb!", [7] = "\x07e1eafaGray Mann\x07fbeccb : Why didn't I make these robots faster?", [8] = "\x07e1eafaGray Mann\x07fbeccb : We are running low on time!", [9] = "\x07e1eafaGray Mann\x07fbeccb : Deploy the damn bomb already!", [10] = "\x07e1eafaGray Mann\x07fbeccb : One minute until backup enemy reinforcements arrive!", [11] = "\x07e1eafaGray Mann\x07fbeccb : We are low on time so hurry up!", [12] = "\x07e1eafaGray Mann\x07fbeccb : Enemy reinforcements are inbound, hurry up!", [13] = "\x07e1eafaGray Mann\x07fbeccb : We only have some much time, hurry up!", [14] = "\x07e1eafaGray Mann\x07fbeccb : Do you robots not understand what the word quick means? It means to hurry the hell up!" } ShuffleInPlace(LowTimeTable) end function ShuffleInPlace(t) --copied from stack overflow for i = #t, 2, -1 do local j = math.random(i) t[i], t[j] = t[j], t[i] end end function LowTimeRandom() util.PrintToChatAll(LowTimeTable[ChatTableIndex]) if ChatTableIndex == 14 then ShuffleInPlace(LowTimeTable) ChatTableIndex = 0 end ChatTableIndex = ChatTableIndex + 1 end function WaveOneChatText() --Wavespawn text is very buggy so I have to this util.PrintToChatAll("\x07e1eafaGray Mann\x07fbeccb : Well, crap, so much for being stealthy.") timer.Simple(2.5, function() util.PrintToChatAll("\x07e1eafaGray Mann\x07fbeccb : It looks like you'll have to use the bomb to destroy a shield protecting the hatch.") end) end function WaveThreeChatText() --Wavespawn text is very buggy so I have to this util.PrintToChatAll("\x07e1eafaGray Mann\x07fbeccb : Wait, WHAT! HO-") timer.Simple(1, function() util.PrintToChatAll("\x075bf071 ////////////////////////////////////////////") util.PrintToChatAll("\x075bf071 Intercom Connection Lost") util.PrintToChatAll("\x075bf071 ////////////////////////////////////////////") end) end function BombExplode() for _, player in pairs(ents.FindInSphere(ents.FindByName("intel"):GetAbsOrigin(),300)) do if player:IsPlayer() and player.m_iTeamNum == 3 then --TeamNum 3 is blu/robots team player:TakeDamage({Attacker = player, Damage = 1000000, DamageType = DMG_BLAST}) --deals 1m damage to nearby players end end end function stun_players() for _, player in pairs(ents.GetAllPlayers()) do if player:IsRealPlayer() then player:StunPlayer(10,1,TF_STUNFLAG_BONKSTUCK) elseif player:IsBot() then player:TakeDamage({Attacker = player, Damage = 1000000, DamageType = DMG_BLAST}) --deals 1m damage to all bots end end end function makeGiant(ply,level) --the small and silly looking function that makes the attribute table into real attributes for players and weapons for stats,extra in pairs(GiantStats[ply.m_iClass][level]) do local attribute = GiantStats[ply.m_iClass][level][stats].attribute local value = GiantStats[ply.m_iClass][level][stats].value local slot = GiantStats[ply.m_iClass][level][stats].slot if slot == -1 then ply:SetAttributeValue(attribute, value) else ply:GetPlayerItemBySlot(slot):SetAttributeValue(attribute, value) end end for stats,extra in pairs(GiantStats[0]) do local attribute = GiantStats[0][stats].attribute local value = GiantStats[0][stats].value local slot = GiantStats[0][stats].slot if slot == -1 then ply:SetAttributeValue(attribute, value) else ply:GetPlayerItemBySlot(slot):SetAttributeValue(attribute, value) end end end function unmakeGiant(ply,level) for stats,extra in pairs(GiantStats[ply.m_iClass][level]) do local attribute = GiantStats[ply.m_iClass][level][stats].attribute local value = nil local slot = GiantStats[ply.m_iClass][level][stats].slot if slot == -1 then ply:SetAttributeValue(attribute, value) else ply:GetPlayerItemBySlot(slot):SetAttributeValue(attribute, value) end end for stats,extra in pairs(GiantStats[0]) do local attribute = GiantStats[0][stats].attribute local value = nil local slot = GiantStats[0][stats].slot if slot == -1 then ply:SetAttributeValue(attribute, value) else ply:GetPlayerItemBySlot(slot):SetAttributeValue(attribute, value) end end end