/************************************************* ** PURE CHAOS EXTENDED ** ** ** ** THE CHAOS HAS JUST GOTTEN AN ORDER OF ** ** MAGNITUDE MORE INSANE. USE THIS PLUGIN ** ** AT YOUR OWN RISK. I WILL BE RESPONSIBLE ** ** FOR ANY TRUE CHAOS THAT HAPPENS WITHIN YOUR ** ** SERVER, BUT I WILL NOT BE RESPONSIBLE FOR ** ** THE TIMES WHEN EVERYTHING GOES EXTREMELY WAY ** ** OUT OF CONTROL. IF YOUR SERVER BREAKS, I AM ** ** NOT GOING TO TAKE RESPONSIBILITY. YOU HAVE ** ** BEEN WARNED. -- Dovahkiin-Warrior ** *** *** **** WARNING **** **** THIS PLUGIN REQUIRES THE FOLLOWING OTHER **** **** PLUGINS, PLEASE MAKE SURE THEY EXIST!!!! **** **** **** **** GODMODE **** **** BE THE SENTRYBUSTER **** **** BE THE ROBOT **** **** TF2ITEMS GIVE WEAPON **** **** ROLL THE DICE V2 **** **** BE THE DEFLECTOR **** **** BE THE HORSEMANN **** **** BE THE SKELETON KING **** **** BUILDING RESIZES **** **** NECRO-MASHED **** **** RESIZE PLAYERS **** **** SET PLAYER SPEED **** **** EVIL ADMIN: ROCKET **** **** SOUNDS **** **** TF2 SET CLASS **** **** TF2 FULL INFINITE AMMO **** **** TF2 RATE OF FIRE **** **** TF2 ATTRIBUTES **** **** TF2 THRILLER DANCE **** **** TRAIN RAIN **** **** **** **** **** **** AND THE TF2ITEMS EXTENSION **** **** **** ************************************************** *************************************************/ //Simple script setup #pragma semicolon 1 #include #include #include #define PLGVER "3.1.0" #undef REQUIRE_PLUGIN #undef REQUIRE_EXTENSIONS #include #define REQUIRE_EXTENSIONS #define TEAMSWITCH_ARRAY_SIZE 64 #pragma newdecls required // Team definitions #define TEAM_1 2 #define TEAM_2 3 #define TEAM_SPEC 1 //Initiate booleans bool cstrikeExtAvail = false; bool DeathIsHooked = false; bool PrettifyChat = true; bool Chaos = false; ConVar g_Prettify; char teamName1[5]; char teamName2[5]; //Ints int chaosIndex = 0; int shuffled = 0; //Give plugin info public Plugin myinfo ={ name = "Pure Chaos [Extended]", author = "ProfessorFartsalot", description = "Create inhuman amounts of absolute pure and true chaos..", version = PLGVER, url = "https://forums.firehostredux.com" }; //Enumerate Team switch module listener enum SwitchModuleEvent{ SwitchModuleEvent_Now = 0 }; //Initiate the core, register required commands & Precache and Allocate files public void OnPluginStart(){ ServerCommand("sm plugins unload chaos/instantrespawn; sm plugins unload chaos/train_rain"), PrintToServer("[Pure Chaos] *******WARNING: PLEASE MAKE SURE YOU HAVE ALL THE PLUGINS REQUIRED TO RUN THIS PLUGIN, OTHERWISE THINGS WILL NOT WORK AS INTENDED. YOU HAVE BEEN WARNED."), RegAdminCmd("sm_chaos", Command_LegacyChaos, ADMFLAG_ROOT, "Unleash Pure Chaos"); RegAdminCmd("sm_truechaos", Command_TrueChaos, ADMFLAG_ROOT, "Unleash Pure Chaos"); RegAdminCmd("sm_666", Command_DeleteThis, ADMFLAG_ROOT, "DELETE THIS"); RegAdminCmd("sm_randomizeall", Command_RandomizeAll, ADMFLAG_ROOT, "Randomize everyone to a single class"); g_Prettify = CreateConVar("sm_chaos_prettify", "1", " Prettify chat while chaos is active. 0/1 - On/off"); HookEvent("player_team", Event_PlayerTeam, EventHookMode_Pre); HookEvent("server_cvar", Event_Cvar, EventHookMode_Pre); PrecacheSound("chaos/warn.mp3", true), AddFileToDownloadsTable("sound/chaos/warn.mp3"), PrecacheSound("chaos/theme.mp3", true), AddFileToDownloadsTable("sound/chaos/theme.mp3"), PrecacheSound("chaos/bgm/canttouchthis.mp3", true), AddFileToDownloadsTable("sound/chaos/bgm/canttouchthis.mp3"), PrecacheSound("chaos/bgm/hampsterdance.mp3", true), AddFileToDownloadsTable("sound/chaos/bgm/hampsterdance.mp3"), PrecacheSound("chaos/bgm/finaldest.mp3", true), AddFileToDownloadsTable("sound/chaos/bgm/finaldest.mp3"), PrecacheSound("chaos/bgm/skeletons.mp3", true), AddFileToDownloadsTable("sound/chaos/bgm/skeletons.mp3"), PrecacheSound("chaos/bgm/somebody.mp3", true), AddFileToDownloadsTable("sound/chaos/bgm/somebody.mp3"), PrecacheSound("chaos/bgm/intro.mp3", true), AddFileToDownloadsTable("sound/chaos/bgm/intro.mp3"); PrecacheSound("trainsawlaser/extra/sound1.wav", true), AddFileToDownloadsTable("sound/trainsawlaser/extra/sound1.wav"), PrecacheSound("trainsawlaser/extra/sound2.wav", true), AddFileToDownloadsTable("sound/trainsawlaser/extra/sound2.wav"); } //Mute Player Team Changes if allowed public Action Event_PlayerTeam(Event event, const char[] name, bool dontBroadcast){ if(g_Prettify.BoolValue){ if(!event.GetBool("silent")){ event.BroadcastDisabled = true; } } return Plugin_Continue; } //Mute CVar changes if allowed public Action Event_Cvar(Event event, const char[] name, bool dontBroadcast){ if(g_Prettify.BoolValue){ event.BroadcastDisabled = true; } return Plugin_Continue; } //Get the current Team names and print team list to Server console public void OnMapStart(){ GetTeamName(2, teamName1, sizeof(teamName1)); GetTeamName(3, teamName2, sizeof(teamName2)); PrintToChatAll("\x079A769A [True Chaos] Team Names: %s %s - Using CStrike: %s - Muting sv_tags & sv_gravity to purify chat: %s", teamName1, teamName2, (cstrikeExtAvail ? "yes" : "no" ), (PrettifyChat ? "yes" : "no")), PrintToServer("[True Chaos] Team Names: %s %s - Using CStrike: %s - Muting sv_tags & sv_gravity to purify chat: %s", teamName1, teamName2, (cstrikeExtAvail ? "yes" : "no" ), (PrettifyChat ? "yes" : "no")); } //Execute switch command on player after they die public Action playerDeath(Event Spawn_Event, const char[] Spawn_Name, bool Spawn_Broadcast){ if(!Chaos){ PrintToServer("[True Chaos] Chaos is not active."); //If this event is properly unhooked, we should never get here. } else{ bool toSpec = false; //int client = GetClientOfUserId(GetEventInt(event, "userid")); int client = GetClientOfUserId(Spawn_Event.GetInt("userid")); int cTeam = GetClientTeam(client); int toTeam = (toSpec ? TEAM_SPEC : TEAM_1 + TEAM_2 - cTeam); if(cstrikeExtAvail && !toSpec){ CS_SwitchTeam(client, toTeam); } else{ ChangeClientTeam(client, toTeam); PrintToChatAll("\x0700FF00 [True Chaos] %N has been switched by death.", client); } } // new attacker = GetClientOfUserId(GetEventInt(event, "attacker")); // new weapon = GetClientWeapon(attacker, "weapon", -1); // PrintToChatAll("\x07888888 [True Chaos] %N was killed by %N", client, attacker); //Show that player was killed by attacker } //Randomize everyone to the same class, scramble classes public Action Command_RandomizeAll(int client, int args){ int ClassVal, NewClassVal = 0; while (ClassVal == NewClassVal){ ClassVal = GetRandomInt (1, 18); } NewClassVal = ClassVal; switch(NewClassVal){ case 1:{ ServerCommand("sm_setclass @all scout"); } case 2:{ ServerCommand("sm_setclass @all soldier"); } case 3:{ ServerCommand("sm_setclass @all pyro"); } case 4:{ ServerCommand("sm_setclass @all demo"); } case 5:{ ServerCommand("sm_setclass @all heavy"); } case 6:{ ServerCommand("sm_setclass @all engineer"); } case 7:{ ServerCommand("sm_setclass @all medic"); } case 8:{ ServerCommand("sm_setclass @all sniper"); } case 9:{ ServerCommand("sm_setclass @all spy"); } case 10:{ ServerCommand("sm_setclass @red scout"), ServerCommand("sm_setclass @blue soldier"); } case 11:{ ServerCommand("sm_setclass @red pyro"), ServerCommand("sm_setclass @blue spy"); } case 12:{ ServerCommand("sm_setclass @red demoman"), ServerCommand("sm_setclass @blue engineer"); } case 13:{ ServerCommand("sm_setclass @red heavy"), ServerCommand("sm_setclass @blue medic"); } case 14:{ ServerCommand("sm_setclass @red sniper"), ServerCommand("sm_setclass @blue soldier"); } case 15:{ ServerCommand("sm_setclass @red soldier"), ServerCommand("sm_setclass @blue pyro"); } case 16:{ ServerCommand("sm_setclass @red scout"), ServerCommand("sm_setclass @red heavy"); } case 17:{ ServerCommand("sm_setclass @red engineer"), ServerCommand("sm_setclass @blue spy"); } case 18:{ ServerCommand("sm_setclass @red pyro"), ServerCommand("sm_setclass @blue scout"); } } } /******************************* * LEGACY CHAOS BEGINS HERE * * * * Fun fact, legacy chaos was * * my first ever version of the * * plugin. It executed cfgs by * * using timers with a song in * * the background playing. I've * * decided to keep this as its * * own little module because I * * really just thought it's * * kinda cute. And chaotic! :) * *******************************/ //Execute chaos command and inform the server that true chaos is about to spawn public Action Command_LegacyChaos(int client, int args) { PrintCenterTextAll("GET READY FOR PURE CHAOS....."), PrintToChatAll("User %N has initiated two minutes of pure chaos... There will be many waves, prepare for absolute chaos and potential crashes!", client), EmitSoundToAll("chaos/warn.mp3", client), CreateTimer(3.0, Command_LegacyStart); if (g_Prettify.BoolValue){ PrintToChatAll("\x07AA0000[Chaos Engine v2.1] \x07999999Limiting chat spam : \x07009900true"); } if (!g_Prettify.BoolValue){ PrintToChatAll("\x07AA0000[Chaos Engine v2.1] \x07999999Limiting chat spam : \x07660000false"); } } //Execute when legacy initiated by command. public Action Command_LegacyStart(Handle timer){ EmitSoundToAll("chaos/theme.mp3"), CreateTimer(13.60, Command_Chaos1); } //Execute when true chaos requests initiation. public Action Command_LegacyStartByHook(Handle timer){ PrintToChatAll("\x07AA0000 [True Chaos] Initiating Legacy Pure Chaos... It is likely that everyone is now in grave danger. I highly suggest you flee immediately while you have the chance before it's too late..."), EmitSoundToAll("chaos/theme.mp3"), CreateTimer(13.60, Command_Chaos1); } /************************************************************************ * This is the configuration timing of the original pure chaos, * * feel free to edit if this is either lasting too long or doesn't * * fit your needs. You may also change the path to the configurations * * or you may change the events that occur when these timers fire. All * * of the following timers may be modified to fit your needs, just be * * very careful so as to not overdo things, as that is the job of True * * Chaos' module which is listed farther down. This version will send * * configuration execution requests to the server at a specified time, * * and as such, the commands contained within these configuration files * * will be executed when the server loads them individually. You should * * not really NEED to edit these commands unless you TRULY wish to use * * either more config files, or less config files. * ************************************************************************/ //Execute Configs in order. public Action Command_Chaos1(Handle timer){ ServerCommand("exec sourcemod/chaos/1.cfg"), CreateTimer(40.0, Command_Chaos2); } //Execute the Second Config public Action Command_Chaos2(Handle timer){ ServerCommand("exec sourcemod/chaos/2.cfg"), CreateTimer(25.40, Command_Chaos3); } //Execute the Third Config public Action Command_Chaos3(Handle timer){ ServerCommand("exec sourcemod/chaos/3.cfg"), CreateTimer(25.50, Command_Chaos4); } //Execute the Fourth Config public Action Command_Chaos4(Handle timer){ ServerCommand("exec sourcemod/chaos/4.cfg"), CreateTimer(25.50, Command_ChaosFinal); } //Execute the Final Config public Action Command_ChaosFinal(Handle timer){ ServerCommand("exec sourcemod/chaos/5.cfg"), PrintCenterTextAll("The chaos has settled.."), EmitSoundToAll("player/taunt_sfx_bell_single.wav"); if (DeathIsHooked == true){ UnhookEvent("player_death", playerDeath), //Unhook Player Death PrintToChatAll("\x07AA0000 [Pure Chaos] \x07AAAA00Unhooking Event: player_death"), //Notify that player death has been unhooked and thus teamswitch is off DeathIsHooked = false; } } //TRUE PURE CHAOS BEGINS HERE public Action Command_TrueChaos(int client, int args){ PrintToChatAll("[True Chaos] Initiation began by user %N... There will be many waves, prepare for the end times!", client), CreateTimer(1.0, Chaos_Operator, 0); if (g_Prettify.BoolValue){ PrintToChatAll("\x07AA0000[Chaos Engine v2.1] \x07999999Limiting chat spam : \x07009900true"); } else{ PrintToChatAll("\x07AA0000[Chaos Engine v2.1] \x07999999Limiting chat spam : \x07660000false"); } } //Screw this old system. Lets write an operator. public Action Chaos_Operator(Handle timer, int operation){ switch(operation){ case 0:{ int chaosLvl = GetRandomInt(0, 5); switch (chaosLvl){ case 0:{ //Difficulty 0. Lowest difficulty. Chaos = true; ServerCommand("sm plugins load chaos/instantrespawn; sm_buildingresizer_enabled 1; sm_building_minsize 0.8; sm_building_maxsize 1.4"), EmitSoundToAll("chaos/bgm/canttouchthis.mp3"), PrintToChatAll("\x07AA0000 [True Chaos] \x07999999Ensuring all Hammers are sharpened, I's are crossed, and T's are dotted for \x0700CCCCLevel 0\x07999999..."), CreateTimer(1.5, Chaos_TimedOperator, 0); } case 1:{ //Difficulty 1. Now we're talkin'! Chaos = true; ServerCommand("sm plugins load chaos/instantrespawn; sm_buildingresizer_enabled 1; sm_building_minsize 0.6; sm_building_maxsize 1.8"), EmitSoundToAll("chaos/bgm/hampsterdance.mp3"), PrintToChatAll("\x07AA0000 [True Chaos] \x07999999Recruiting robot hampsters for \x0700AA00Level 1\x07999999..."), CreateTimer(9.4, Chaos_TimedOperator, 10); } case 2:{ //Difficulty 2. Things are getting real. Chaos = true; ServerCommand("sm plugins load chaos/instantrespawn; sm_buildingresizer_enabled 1; sm_building_minsize 0.4; sm_building_maxsize 2.2"), EmitSoundToAll("chaos/bgm/finaldest.mp3"), PrintToChatAll("\x07AA0000 [True Chaos] \x07999999Downloading more RAM for \x07AAAA00Level 2\x07999999..."), CreateTimer(5.75, Chaos_TimedOperator, 20); } case 3:{ CreateTimer(0.05, Chaos_Operator, 0); } /* case 3:{ //Difficulty 3. Pure Chaos. * Chaos = true; * ServerCommand("sm plugins load chaos/instantrespawn; sm_buildingresizer_enabled 1; sm_building_minsize 0.2; sm_building_maxsize 2.6"), * PrintToChatAll("\x07AA0000 [True Chaos] \x07999999Power of the Sorcerer, to great to be controlled! Now rises his greatest minions for \x07CC8000Level 3\x07999999..."), * EmitSoundToAll("chaos/bgm/skeletons.mp3"), * CreateTimer(13.0, Chaos_TimedOperator, 30); }*/ case 4:{ //Difficulty 4. Madness. Chaos = true; ServerCommand("sm plugins load chaos/instantrespawn; sm_buildingresizer_enabled 1; sm_building_minsize 0.1; sm_building_maxsize 3.2"), EmitSoundToAll("chaos/bgm/somebody.mp3"), PrintToChatAll("\x07AA0000 [True Chaos] \x07999999Asking Meme-chan out on a date for \x07CC0000Level 4\x07999999..."), CreateTimer(18.50, Chaos_TimedOperator, 40); } case 5:{ //Difficulty 5. True Chaos. Chaos = true; PrintToServer("Got 5... PREPARE FOR THE END TIMES!!!"), ServerCommand("sm plugins load chaos/instantrespawn; sm_buildingresizer_enabled 1; sm_building_minsize 0.0125; sm_building_maxsize 4.0"), PrintToChatAll("\x07FF00FF [True Chaos] Very bad things are about to happen..."), EmitSoundToAll("chaos/bgm/intro.mp3"), CreateTimer(80.0, Chaos_TimedOperator, 50); } } return Plugin_Stop; } } return Plugin_Stop; } //Timed Operator, actually runs the chaos scripts. public Action Chaos_TimedOperator(Handle timer, int operation){ switch (operation){ //Chaos lvl 0 case 0:{ Chaos = true; HookEvent("player_death", playerDeath); //Begin hooking player_death for switch team functionality DeathIsHooked = true; PrintToChatAll("\x0700AAAA [True Chaos] Hooking event: player_death"); //Tell the chat we are hooking player death. CreateTimer(1.5, Chaos_TimedOperator, 1); } case 1:{ ServerCommand("sm_god @all 1"), PrintToChatAll("\x07AA0000 [True Chaos] \x07707020<\x0700AAAA00\x07707020> \x07707020All players are now in God Mode. You can't touch this!"), CreateTimer(3.5, Chaos_TimedOperator, 2); } case 2:{ ServerCommand("sm_slap @all 5"), PrintToChatAll("\x07AA0000 [True Chaos] \x07707020<\x0700AAAA00\x07707020> \x07707020Attempting to slap all players. Nope, still can't touch this!"), CreateTimer(4.2, Chaos_TimedOperator, 3); } case 3:{ ServerCommand("sm_thriller @all 13"), PrintToChatAll("\x07AA0000 [True Chaos] \x07707020<\x0700AAAA00\x07707020> \x07707020Break it down!"), CreateTimer(13.6, Chaos_TimedOperator, 4); } case 4:{ ServerCommand("sm_smash @all"), PrintToChatAll("\x07AA0000 [True Chaos] \x07707020<\x0700AAAA00\x07707020> \x07707020STOP! HAMMERTIME!!!"), CreateTimer(1.0, Chaos_TimedOperator, 5); } case 5:{ ServerCommand("sm_bedeflector @all; sm_mortal @all"), PrintToChatAll("\x07AA0000 [True Chaos] \x07707020<\x0700AAAA00\x07707020> \x07707020Be the deflector, go with the flow!"), CreateTimer(28.5, Chaos_TimedOperator, 6); } case 6:{ ServerCommand("sm_smash @all"), PrintToChatAll("\x07AA0000 [True Chaos] \x07707020<\x0700AAAA00\x07707020> \x07707020STOP! HAMMERTIME!!!"), CreateTimer(3.0, Chaos_TimedOperator, 7); } case 7:{ ServerCommand("sm plugins unload chaos/instantrespawn; sm_slay @all; sm_buildingresizer_enabled 0"), PrintToChatAll("\x07AA0000 [True Chaos] \x07707020<\x0700AAAA00\x07707020> \x07707020STOP! Chaos is over!!!"); if (DeathIsHooked){ UnhookEvent("player_death", playerDeath), //Unhook Player Death PrintToChatAll("\x07AA0000 [Pure Chaos] \x07AAAA00Unhooking Event: player_death"), //Notify that player death has been unhooked and thus teamswitch is off DeathIsHooked = false; } Chaos = false; return Plugin_Stop; } //Chaos lvl 1 case 10:{ PrintCenterTextAll("Current Song: The Hampsterdance"), ServerCommand("sm_noclip @all; sm_givew @all 9205; sm plugins load chaos/train_rain"), PrintToChatAll("\x07AA0000 [True Chaos] \x07700070<\x0700AA0001\x07700070> \x07700070All players will receive noclip and Robin Walker's Rocket Launcher, Trains will rain from the sky"), CreateTimer(9.4, Chaos_TimedOperator, 11); } case 11:{ PrintCenterTextAll("Current Song: The Hampsterdance"), ServerCommand("sm_smite @all; sm_forcertd @all; sm_smash @all;sm_buddha @all; sm_forcertd @all"), PrintToChatAll("\x07AA0000 [True Chaos] \x07007700<\x0700AA0001\x07007700> \x07007700All players will receive random RTD, Buddha, then another random RTD"), CreateTimer(14.6, Chaos_TimedOperator, 12); } case 12:{ ServerCommand("sm_slay @all"), CreateTimer(0.25, Chaos_TimedOperator, 13); } case 13:{ PrintCenterTextAll("Current Song: The Hampsterdance"), ServerCommand("sm_forcertd @all 2; sm_robot @all; sm_givew @all 9014"), PrintToChatAll("\x07AA0000 [True Chaos] \x07700070<\x0700AA0001\x07700070> \x07700070All players will receive lucky sandvich, robot, and a Valve Sniper Rifle"), CreateTimer(15.80, Chaos_TimedOperator, 100); CreateTimer(20.00, Chaos_TimedOperator, 14); } case 14:{ ServerCommand("sm_givew @blue 21; sm_fia @blue 1; sm_rof @blue 20; sm_givew @red 2228; sm_forcertd @red 13"), PrintToChatAll("\x07AA0000 [True Chaos] \x07700000<\x0700AA0001\x07700000> \x07700000LET'S PLAY DODGEBALL WITH SOME NUKES!!!"), CreateTimer(29.0, Chaos_TimedOperator, 15); } case 15:{ ServerCommand("sm_slay @all; sm_rof @all 1"), PrintToChatAll("\x07AA0000 [True Chaos] \x07007000<\x0700AA0001\x07007000> \x07007000Shuffling classes....."), CreateTimer(0.20, Chaos_TimedOperator, 102); CreateTimer(16.20, Chaos_TimedOperator, 100); CreateTimer(17.20, Chaos_TimedOperator, 16); } case 16:{ ServerCommand("sm_resizehands @all -2; sv_gravity 100"), PrintToChatAll("\x07AA0000 [True Chaos] \x07007070<\x0700AA0001\x07007070> \x07007070All players will have -2 hand size, gravity will be 100"), CreateTimer(8.0, Chaos_TimedOperator, 17); } case 17:{ ServerCommand("sv_gravity 800; sm_thriller @all 8"), PrintToChatAll("\x07AA0000 [True Chaos] \x07707000<\x0700AA0001\x07707000> \x07707000Dance, fools!"), CreateTimer(8.0, Chaos_TimedOperator, 18); } case 18:{ ServerCommand("sm_bedeflector @all"), PrintToChatAll("\x07AA0000 [True Chaos] \x07707020<\x0700AA0001\x07707020> \x07707020All players will become deflector"), CreateTimer(12.0, Chaos_TimedOperator, 100); CreateTimer(12.25, Chaos_TimedOperator, 19); } case 19:{ ServerCommand("sm_thriller @all 35; sm_resizehands @all 1"), ServerCommand("sm plugins unload chaos/instantrespawn; sm_fia @all 0; sm_buildingresizer_enabled 0; sm plugins unload chaos/train_rain"), PrintToChatAll("\x07AA0000 [True Chaos] \x07999999<\x0700AA0001\x07999999> True Chaos at level *1* has ended"); if (DeathIsHooked == true) { UnhookEvent("player_death", playerDeath), //Unhook Player Death PrintToChatAll("\x07AA0000 [Pure Chaos] \x07AAAA00Unhooking Event: player_death"), //Notify that player death has been unhooked and thus teamswitch is off DeathIsHooked = false; } Chaos = false; } //Chaos lvl 2 case 20:{ PrintCenterTextAll("Current Song: Final Destination - Super Smash Bros. Brawl"), ServerCommand("sm_bedeflector @blue; sm_behhh @red"), PrintToChatAll("\x07AA0000 [True Chaos] \x07E48C12<\x07AAAA0002\x07E48C12> \x07E48C12Blue team will become deflector, red team will become HHH"), CreateTimer(10.0, Chaos_TimedOperator, 21); } case 21:{ ServerCommand("sm_setspeed @all 520; sm_behhh @blue; sm_bedeflector @red"), PrintToChatAll("\x07AA0000 [True Chaos] \x07E48C12<\x07AAAA0002\x07E48C12> Blue team will become HHH, red team will become Deflector"), CreateTimer(15.0, Chaos_TimedOperator, 22); } case 22:{ ServerCommand("sm_givew @all 9205"), PrintToChatAll("\x07AA0000 [True Chaos] \x07700070<\x07AAAA0002\x07700070> All players will receive Robin Walker's Rocket Launcher"), CreateTimer(10.0, Chaos_TimedOperator, 23); } case 23: { ServerCommand("sm_slay @all; sm_resizetorso @all -1000; sm_noclip @all"), PrintToChatAll("\x07AA0000 [True Chaos] \x07008000<\x07AAAA0002\x07008000> All players will have -1000 torso size and noclip"), CreateTimer(12.0, Chaos_TimedOperator, 100); CreateTimer(12.75, Chaos_TimedOperator, 24); } case 24:{ ServerCommand("sm_resizetorso @all 10; sv_gravity -800; sm_fia @all 1; sm_givew @all 2228; sm_forcertd @all 13"), PrintToChatAll("\x07AA0000 [True Chaos] \x07B41262<\x07AAAA0002\x07B41262> All players will have 10 torso size, gravity will be -800, full infinite ammo will be activated, and all players will receive a nuke launcher, as well as homing projectiles"), CreateTimer(22.0, Chaos_TimedOperator, 25); } case 25:{ ServerCommand("sv_gravity 2000; sm_givew @all 2228; sm_rof @all 20; mp_friendlyfire 1"), PrintToChatAll("\x07AA0000 [True Chaos] \x07B41262<\x07AAAA0002\x07B41262> Gravity will be 2000, all players will receive a nuke launcher, rate of fire will be 20x, and friendly fire will be activated"), CreateTimer(11.0, Chaos_TimedOperator, 26); } case 26:{ ServerCommand("sv_gravity -2000; sm_rof @all 1; sm_fia @all 0; sm_givew @all 9205; mp_friendlyfire 0; sm_resizetorso @all -1; sm_setspeed @all 5000"), PrintToChatAll("\x07AA0000 [True Chaos] \x07AA0090<\x07AAAA0002\x07AA0090> Gravity will be -2000, all players will receive Robin Walker's Rocket Launcher, all players will have -1 torso size"), CreateTimer(35.0, Chaos_TimedOperator, 27); } case 27:{ ServerCommand("sv_gravity 800; sm_slay @all; sm plugins unload chaos/instantrespawn; sm_resizetorso @all 1; sm plugins reload bedeflector; sm_resetspeed @all; sm_buildingresizer_enabled 0"), PrintToChatAll("\x07AA0000 [True Chaos] \x07999999<\x07AAAA0002\x07999999> True chaos at level *2* has ended"); if (DeathIsHooked == true) { UnhookEvent("player_death", playerDeath), //Unhook Player Death PrintToChatAll("\x07AA0000 [Pure Chaos] \x07AAAA00Unhooking Event: player_death"), //Notify that player death has been unhooked and thus teamswitch is off DeathIsHooked = false; } Chaos = false; } //Chaos lvl 3 case 30:{ Chaos = true, HookEvent("player_death", playerDeath), //Begin hooking player_death for switch team functionality DeathIsHooked = true, //Tell the plugin Death has been hooked ServerCommand("sm_beskeleton @all 1"), PrintToChatAll("\x0700AAAA [True Chaos] \x07999999<\x07CC800004\x07999999> Spooky scary skeletons send shivers down your spine... Seal your doom tonight!"), CreateTimer(18.5, Chaos_TimedOperator, 31); } case 31:{ ServerCommand("sm_beskeleton @all 1"), PrintToChatAll("\x0700AAAA [True Chaos] \x07999999<\x07CC800004\x07999999> Spooky scary spooky scary..."), CreateTimer(18.5, Chaos_TimedOperator, 32); } case 32:{ ServerCommand("sm_beskeleton @all 1"), PrintToChatAll("\x0700AAAA [True Chaos] \x07999999<\x07CC800004\x07999999> You'll shake and shudder in surprise, when you hear these zombies shriek!"), CreateTimer(12.5, Chaos_TimedOperator, 104); CreateTimer(20.0, Chaos_TimedOperator, 104); CreateTimer(28.0, Chaos_TimedOperator, 104); CreateTimer(32.0, Chaos_TimedOperator, 104); CreateTimer(34.0, Chaos_TimedOperator, 104); CreateTimer(36.0, Chaos_TimedOperator, 104); CreateTimer(52.0, Chaos_TimedOperator, 104); CreateTimer(58.0, Chaos_TimedOperator, 104); CreateTimer(64.0, Chaos_TimedOperator, 33); } case 33:{ PrintToChatAll("\x0700AAAA [True Chaos] \x07999999<\x07CC800004\x07999999> True chaos at level *3* has ended"), ServerCommand("sm_slay @all"); if (DeathIsHooked == true) { UnhookEvent("player_death", playerDeath), //Unhook Player Death PrintToChatAll("\x07AA0000 [Pure Chaos] \x07AAAA00Unhooking Event: player_death"), //Notify that player death has been unhooked and thus teamswitch is off DeathIsHooked = false; } Chaos = false; } //Chaos lvl 4 case 40:{ Chaos = true, HookEvent("player_death", playerDeath), //Begin hooking player_death for switch team functionality DeathIsHooked = true, //Tell the plugin Death has been hooked PrintToChatAll("\x07AA0000 [True Chaos] \x07999999<\x07CC000004\x07999999> Meme-chan said yes OMG!!! UNLEASH DA CHAOSSSS!!!"), ServerCommand("sm_givew @all 9018; sm plugins load chaos/train_rain"), CreateTimer(40.0, Chaos_Operator, 0), CreateTimer(47.0, Chaos_TimedOperator, 41); } case 41:{ ServerCommand("sm_givew @all 9014"), CreateTimer(20.0, Chaos_TimedOperator, 42); } case 42:{ ServerCommand("sm_evilrocket @all"), PrintToChatAll("\x07AA0000 [True Chaos] \x07999999<\x07CC000004\x07999999> TO SPAAAAAAAAAAAAAAAAAAAAAAACE!!!"), CreateTimer(20.0, Chaos_TimedOperator, 43); } case 43:{ UnhookEvent("player_death", playerDeath), ServerCommand("sm_forcertd @all 13; sm plugins unload chaos/train_rain"), CreateTimer(60.0, Chaos_Operator, 0); } //Chaos lvl 5 case 50:{ HookEvent("player_death", playerDeath), //Begin hooking player_death for switch team functionality DeathIsHooked = true, //Tell the plugin Death has been hooked PrintToChatAll("\x0700AAAA [True Chaos] Hooking event: player_death"), //Tell the chat we are hooking player death. CreateTimer(60.0, Chaos_Operator, 0), CreateTimer(120.0, Chaos_Operator, 0), CreateTimer(0.05, Command_LegacyStartByHook); } //Special functions case 100:{ ServerCommand("sm_slay @all"); switch (chaosIndex){ case 1:{ PrintToChatAll("Got one via case 100."); } } } case 102:{ if (shuffled < 15){ ServerCommand("sm_randomizeall"), CreateTimer(1.0, Chaos_TimedOperator, 102); shuffled++; } else{ ServerCommand("sm_slay @all"); } } case 104:{ ServerCommand("sm_beskeleton @all 1"); } } return Plugin_Stop; } //Seriously, you should delete this, as well as the RegConsoleCmd line for sm_666 up at the beginning of the code. public Action Command_DeleteThis(int client, int args){ Chaos = true; PrintToChatAll("\x07880000 OOF, WHO SUMMONED SATAN?! ... hint ... it was %N!", client), CreateTimer(6.6, Command_UnleashSatan); } //Unleashes pure hell. public Action Command_UnleashSatan(Handle timer){ Chaos = true, CreateTimer(0.0, Chaos_TimedOperator, 0), CreateTimer(1.0, Chaos_TimedOperator, 10), CreateTimer(2.0, Chaos_TimedOperator, 20), CreateTimer(3.0, Chaos_TimedOperator, 30), CreateTimer(4.0, Chaos_TimedOperator, 40), CreateTimer(5.0, Chaos_TimedOperator, 50), CreateTimer(166.6, Command_EndSatan), ServerCommand("tf_bot_add 32"); } public Action Command_EndSatan (Handle timer){ PrintToChatAll("\x07AA0000 [Pure Chaos] \x07660000Satan has left.... for now..."), ServerCommand("tf_bot_kick all"); if (DeathIsHooked){ UnhookEvent("player_death", playerDeath), //Unhook Player Death PrintToChatAll("\x07AA0000 [Pure Chaos] \x07AAAA00Unhooking Event: player_death"), //Notify that player death has been unhooked and thus teamswitch is off DeathIsHooked = false; } Chaos = false; }