local models = { [1] = "models/bots/scout/bot_scout.mdl", [2] = "models/bots/sniper/bot_sniper.mdl", [3] = "models/bots/soldier/bot_soldier.mdl", [4] = "models/bots/demo/bot_demo.mdl", [5] = "models/bots/medic/bot_medic.mdl", [6] = "models/bots/heavy/bot_heavy.mdl", [7] = "models/bots/pyro/bot_pyro.mdl", [8] = "models/bots/spy/bot_spy.mdl", [9] = "models/bots/engineer/bot_engineer.mdl", } local modelsGiant = { [1] = "models/bots/scout_boss/bot_scout_boss.mdl", [2] = "models/bots/sniper/bot_sniper.mdl", [3] = "models/bots/soldier_boss/bot_soldier_boss.mdl", [4] = "models/bots/demo_boss/bot_demo_boss.mdl", [5] = "models/bots/medic/bot_medic.mdl", [6] = "models/bots/heavy_boss/bot_heavy_boss.mdl", [7] = "models/bots/pyro_boss/bot_pyro_boss.mdl", [8] = "models/bots/spy/bot_spy.mdl", [9] = "models/bots/engineer/bot_engineer.mdl", } local carboard_design = { [1] = "models/props_training/target_scout.mdl", [2] = "models/props_training/target_sniper.mdl", [3] = "models/props_training/target_soldier.mdl", [4] = "models/props_training/target_demoman.mdl", [5] = "models/props_training/target_medic.mdl", [6] = "models/props_training/target_heavy.mdl", [7] = "models/props_training/target_pyro.mdl", [8] = "models/props_training/target_spy.mdl", [9] = "models/props_training/target_engineer.mdl", } --// ROBOT SHENANIGANS function cardboard(_, activator) local scale = activator.m_flModelScale activator.m_flModelScale = (scale - 0.15) print(activator.m_iClass) print(carboard_design[activator.m_iClass]) activator:AcceptInput("SetCustomModel", carboard_design[activator.m_iClass]) -- pole:SetFakeParent(activator) -- cardboardbutitsactuallywood:SetFakeParent(activator) activator:AddCond(32,75) activator:SetAttributeValue("dmg taken increased", 2) end function ballerEnemy(_,owner) local name = "baller"..tostring(owner:GetHandleIndex()) print("Name of your gun is : "..name) owner:SetAttributeValue("halloween increased jump height", 2.50) owner:SetAttributeValue("increased air control", 2) owner:AcceptInput("$AddItemAttribute", "fire input on attack|"..name.."^fireonce|2") owner:AcceptInput("$AddItemAttribute", "custom item model|models/passtime/ball/passtime_ball.mdl|2") owner.shenanigans = ents.CreateWithKeys("tf_point_weapon_mimic", { targetname = name, teamnum = 3, ["$weaponname"] = "baller", ["$modules"] = "rotator", ["$lookat"] = "aim", ["$rotationspeedx"] = 350, ["$rotationspeedy"] = 350, }) print(owner.shenanigans:GetName()) owner.shenanigans:AcceptInput("$SetOwner", owner) owner.shenanigans:AcceptInput("SetParent", "!activator", owner) timer.Create(0.04, function() owner.shenanigans:SetAbsOrigin((owner:GetAbsOrigin() + Vector(0, 0, 85))) owner.shenanigans:AcceptInput("$RotateTowards", owner) end, 1) owner:AddCallback(ON_DEATH, function() owner.shenanigans:Kill() owner:RemoveAllCallbacks() end) owner:AddCallback(ON_DAMAGE_RECEIVED_POST, function(_, damageinfo) local playerInfo = { translation = owner:GetAbsOrigin(), } -- print(owner.m_hActiveWeapon) -- print(owner:GetPlayerItemBySlot(LOADOUT_POSITION_MELEE)) local scoutfix = owner:GetAllItems() if damageinfo.DamageType == 32 then if owner.m_hActiveWeapon == owner:GetPlayerItemBySlot(LOADOUT_POSITION_MELEE) or owner.m_hActiveWeapon == scoutfix[7] then print("fall damage detected. triggering bombs") ents.SpawnTemplate("ballerattack_enemy",playerInfo) owner:AddHealth((damageinfo.Damage), false) owner:AcceptInput("$PlaySequence", "a_kart_jump_start") timer.Simple(0.3, function() owner:AcceptInput("$PlaySequence", "stand_ITEM1") end) end end end) end --//TANKS function OnWaveSpawnTank(tank) --//THE TESLA TANK if tank:GetName() == "teslatank" then for _, player in pairs(ents.GetAllPlayers()) do player:PlaySoundToSelf('ui/hint.wav') player:AcceptInput("$DisplayTextChat", "{reset}A {71AFFF}TESLA-TANK {reset}HAS ARRIVED WITH {CBC3E3}"..tostring(tank.m_iHealth).." {reset}Health! {71AFFF}ELECTRIFIYING!") end local tesla = "fakemodel"..tostring(tank:GetHandleIndex()) local coil = "fakecoil"..tostring(tank:GetHandleIndex()) timer.Simple(0.02, function() tank:AddEffects(EF_NODRAW) print(tank) end,1) tank.fakemodel = ents.CreateWithKeys("prop_dynamic_override" , { targetname = tesla, model = "models/bots/boss_bot/boss_tank.mdl", }) tank.alsofakemodel = ents.CreateWithKeys("prop_dynamic_override" , { targetname = coil, model = "models/props_spytech/radio_tower001.mdl", modelscale = 0.01, ["$fakeparentoffset"] = "15 0 50", }) tank.fakemodel:SetFakeParent(tank) tank.fakemodel:SetAbsOrigin(tank:GetAbsOrigin()) tank.alsofakemodel:SetFakeParent(tank) tank.alsofakemodel:SetAbsOrigin(tank:GetAbsOrigin()) else for _, player in pairs(ents.GetAllPlayers()) do player:PlaySoundToSelf('ui/hint.wav') player:AcceptInput("$DisplayTextChat", "{RESET}A TANK HAS ARRIVED WITH {CBC3E3}"..tostring(tank.m_iHealth).." {reset}Health!") end end end function teslaSetUp(_, tank) timer.Create(1, function() print("amongus") tank.fakemodel:AcceptInput("SetAnimation", "deploy") tank.fakemodel:AcceptInput("SetPlaybackRate", "0.75") timer.Create(0.7, function() timer.Create(0.035, function() tank.alsofakemodel.m_flModelScale = tank.alsofakemodel.m_flModelScale + 0.004 end,55) end,1) timer.Create(7, function() tank.fakemodel:AcceptInput("SetPlaybackRate", "0") end,1) end,1) tank:AddOutput("OnKilled fake*:kill") tank:AddOutput("OnKilled bolt*:kill") tank:AddOutput("OnKilled charge*:kill") tank:AddOutput("OnKilled fixthebolt*:kill") tank:AddOutput("OnKilled rotateTesla:kill") tank:AddOutput("OnKilled lightningbolt:kill") tank:AddOutput("OnKilled teslabang*:kill") tank:AddOutput("OnKilled chapachapca*:kill") tank:AddOutput("OnKilled teslaAttack*:Kill") end function teslaAttack() --Simply put... fuck you beam -- print("laser attack test") local beamEndPoint = ents.FindByName("boltend") local vision = ents.FindByName("boltstart") -- print(beamEndPoint) -- print(vision) -- updateLaserPosition = timer.Create(-1, function() local beamLocation = { start = vision, angles = vision:GetAbsAngles(), mask = MASK_NPCWORLDSTATIC } local beamAttack = util.Trace(beamLocation) -- PrintTable(beamAttack) -- util.PrintToChatAll(tostring(beamAttack.HitPos)) ents.FindByName("teslabang"):SetAbsOrigin(beamAttack.HitPos) ents.FindByName("fixthebolt"):SetAbsOrigin(beamAttack.HitPos) -- end,0) end function skeleton(_, activator) --DECAPITATED if activator:GetClassname() == "player" and activator:IsRealPlayer() then print(activator) print(activator.IsSkeleton) if activator.IsSkeleton == 0 then print("should be a skeleton now") activator:AcceptInput("SetCustomModelWithClassAnimations", "models/bots/skeleton_sniper/skeleton_sniper.mdl") activator:AcceptInput("SetCustomModelVisibleToSelf", "1") activator:AcceptInput("SetForcedTauntCam", 1) activator:SetAttributeValue("CARD: move speed bonus", 2) activator:SetAttributeValue("dmg taken increased", 1.3) activator.IsSkeleton = 1 timer.Create(0.05, function() activator:AcceptInput("$DisplayTextCenter", "YOU HAVE BECOME A SKELETON! YOU'RE FASTER NOW BUT VERY FRAGILE") activator:AcceptInput("$PlaySoundToSelf", "boned.mp3") end,1) timer.Create(15, function() activator:AcceptInput("SetCustomModelWithClassAnimations", "") activator:SetAttributeValue("gesture speed increase", nil) activator:SetAttributeValue("dmg taken increased", nil) activator:SetAttributeValue("CARD: move speed bonus", nil) activator:AcceptInput("SetForcedTauntCam", 0) timer.Create(1.5, function() activator.IsSkeleton = 0 end,1) end,1) else print(activator:GetPlayerName().." is already a skeleton") end end end function clearTesla() timer.Stop(updateLaserPosition) print("byebye") end --////[BOSS FUNCTIONS HERE]////-- -- function chickenSpawn(a, b, c) -- -- print(a) -- -- print(b) -- -- print(c) -- local chicken = ents.CreateWithKeys("$tf_bot",{ -- ["=template"] = "Chickens_Evil", -- }) -- chicken:AcceptInput("$TeleportToEntity", c) -- end maxEvilChickens = 0 function chickenSpawn() if maxEvilChickens < 5 then print("Chickens Should Be Made") local chicken = ents.CreateWithKeys("$tf_bot",{ ["=template"] = "Chickens_Evil", }) chicken:AcceptInput("$TeleportToEntity", ents.FindByName("chickensSpawnHere")) chicken:AddCallback(ON_DEATH, function() maxEvilChickens = maxEvilChickens - 1 chicken:RemoveAllCallbacks() end) maxEvilChickens = maxEvilChickens + 1 else print("hilmao") end end function bossChicken(_, activator) print("Boss Should Be Active") activator.dmgCheck = 0 activator.extrachickens = 1 activator.penis = activator:AddCallback(ON_DAMAGE_RECEIVED_POST, function(_, damageinfo) activator.dmgCheck = activator.dmgCheck + damageinfo.Damage if activator.dmgCheck > 1000 and activator:IsAlive() then ents.FindByName("chickenRelay"):AcceptInput("Trigger") activator.dmgCheck = 0 end end) end function clearChicenBossAbility(_, activator) print("bye bye chiceksn") activator:RemoveCallback(activator.penis) ents.FindByName("chickenRelay"):AcceptInput("Kill") end function pianoBusterModel(_, owner) local name = "pepeno"..owner:GetHandleIndex() local piano = ents.CreateWithKeys("prop_dynamic_override", { targetname = name, model = "models/props_manor/baby_grand_01.mdl", modelscale = 0.8, solid = 0, skin = 0, disableshadows = 1, }) local hat = ents.CreateWithKeys("info_target", { targetname = "amonguser", }) hat:AcceptInput("SetParent", "!activator", owner) timer.Create(0.05, function() hat:SetAbsOrigin(owner:GetAbsOrigin()) hat:AcceptInput("SetParentAttachment", "partyhat") piano:AcceptInput("SetParent", "!activator", hat) piano:SetAbsOrigin(hat:GetAbsOrigin()) piano:AcceptInput("$SetLocalOrigin", "0 0 -71") owner:AddCallback(ON_DEATH, function() piano:Remove() hat:Remove() owner:RemoveAllCallbacks() end) end,1) end function hhh_cosmeticfix(_, activator) -- local cosmetics = for i, item in pairs(activator:GetAllItems()) do -- print(i) -- print(item) if not item:GetItemName() == "Horseless Headless Horseman's Head" then item.m_flModelScale = item.m_flModelScale + 0.95 else item.m_flModelScale = item.m_flModelScale + 0.5 end end end function clearAggro() for _, bot in pairs(ents.GetAllPlayers()) do if bot.isAngry == 1 then bot:BotCommand("switch_action Default") bot.isAngry = 0 end end end --//WAVE 3 BOSS ABILITIES function piano_attack(_, activator) local increment = 1 local pitchincrement = 100 timer.Create(0.8, function() -- local playerInfo = { -- translation = (ents.FindByName("zazspys"..increment):GetAbsOrigin()), -- } -- ents.SpawnTemplate("demozart_ability1", playerInfo) -- increment = increment + 1 -- ents.FindByName("pitcher"):AcceptInput("PlaySound") timer.Simple(0.3, function() ents.FindByName("pitcher"):AcceptInput("StopSound") ents.FindByName("pitcher"):AddOutput("pitch " ..pitchincrement) pitchincrement = pitchincrement + 25 end) end, 4) timer.Create(0.8, function() local playerInfo = { translation = (activator:GetAbsOrigin() + Vector(increment, 0, 0)), } ents.SpawnTemplate("demozart_ability1", playerInfo) increment = increment + 550 ents.FindByName("pitcher"):AcceptInput("PlaySound") timer.Simple(0.3, function() ents.FindByName("pitcher"):AcceptInput("StopSound") ents.FindByName("pitcher"):AddOutput("pitch " ..pitchincrement) pitchincrement = pitchincrement + 25 end) end, 4) timer.Simple(6, function() ents.FindByName("pitcher"):AddOutput("pitch 80") end) end function piano_rockets(_, activator) local rockets = ents.FindByName("funnybusiness") local location = ents.FindByName("scaleofpianos") -- local position = -100 local pitchshift = 80 local ding = ents.FindByName("ding") rockets:AcceptInput("$SetOwner", activator) timer.Create(0.3, function() rockets:SetAbsOrigin(location:GetAbsOrigin() + Vector(0, 0, 0)) rockets:AcceptInput("FireOnce") -- position = position + 20 ding:AcceptInput("PlaySound") pitchshift = pitchshift + 10 timer.Simple(0.25, function() ding:AcceptInput("StopSound") ding:AddOutput("pitch " ..pitchshift) end) end, 12) timer.Simple(11, function() ding:AddOutput("pitch 80") rockets:Kill() end) end