//made by m1 //makes robots turn into more robots //why is this stuff here? /* foreach (k, v in ::NetProps.getclass()) if (k != "IsValid") getroottable()[k] <- ::NetProps[k].bindenv(::NetProps) local maxplayers = MaxClients().tointeger() for(local i = 1; i<=maxplayers; i++) { local player = PlayerInstanceFromIndex(i) if(!player) continue AddThinkToEnt(player,null) } */ ::Mitosis <- { thinker = null position = [Vector(),Vector(),Vector(),Vector(),Vector()] carposition = [Vector(), Vector()] function OnGameEvent_recalculate_holidays(_) {if(GetRoundState() == 3) Cleanup()} function OnGameEvent_mvm_wave_complete(_) {Cleanup()} function OnGameEvent_player_spawn(args) { local player = GetPlayerFromUserID(args.userid) if(player == null) return if(!IsPlayerABot(player)) return EntFireByHandle(player, "runscriptcode", "Mitosis.CheckTags()", -1, player, null) } function OnGameEvent_player_death(args) { local player = GetPlayerFromUserID(args.userid) if(!IsPlayerABot(player)) return if(player.HasBotTag("bot_multiplier1")) position[0] = player.GetOrigin() else if(player.HasBotTag("bot_multiplier2")) position[1] = player.GetOrigin() else if(player.HasBotTag("bot_multiplier3")) position[2] = player.GetOrigin() else if(player.HasBotTag("bot_multiplier4")) position[3] = player.GetOrigin() else if(player.HasBotTag("bot_multiplier5")) position[4] = player.GetOrigin() } function Cleanup() { if(thinker && thinker.IsValid()) { thinker.Kill() } delete ::CheckCarPosition delete ::Mitosis } function CheckTags() { if(activator.HasBotTag("bot_multiplied1")) { SetPos(activator, position[0]) } if(activator.HasBotTag("bot_multiplied2")) { SetPos(activator, position[1]) } if(activator.HasBotTag("bot_multiplied3")) { SetPos(activator, position[2]) } if(activator.HasBotTag("bot_multiplied4")) { SetPos(activator, position[3]) } if(activator.HasBotTag("bot_multiplied5")) { SetPos(activator, position[4]) } if(activator.HasBotTag("bot_clowncar1")) { SetPos(activator, carposition[0]) } if(activator.HasBotTag("bot_clowncar2")) { SetPos(activator, carposition[1]) } if(activator.HasBotTag("bot_clowncarexplode")) { //angle isn't randomized? local angle = 0 local randomdir = Vector(800*cos(angle), 800*sin(angle), 200) angle += 3.8832 // 2pi/phi activator.Teleport(true, carposition[1] + Vector(0, 0, 10), false, QAngle(), true, randomdir) activator.AddCondEx(51, 1.0, null) } } function SetPos(bot, origin) { bot.SetAbsOrigin(origin) bot.AddCondEx(51, 1.0, null) } } ::CheckCarPosition <- function() { //a info_target parented to a tank local carent = Entities.FindByName(null, "clowncar_position1") if(carent) { Mitosis.carposition[0] = carent.GetOrigin() } //another info_target parented to a tank carent = Entities.FindByName(null, "clowncar_position2") if(carent) { Mitosis.carposition[1] = carent.GetOrigin() } //a third info_target parented to a tank carent = Entities.FindByName(null, "clowncar_positionexplode") if(carent) { Mitosis.carposition[1] = carent.GetOrigin() } return 0.5 } Mitosis.thinker = SpawnEntityFromTable("logic_relay", {}) AddThinkToEnt(Mitosis.thinker, "CheckCarPosition") __CollectGameEventCallbacks(Mitosis)