Files
SMScripts/scripting/include/fartsy/ass_sudo.inc
Professor Fartsalot 441797c09c Fix issues with audio system again
+ Fixed multiple bugs with syncing music and playing it.
2025-08-24 14:06:53 -04:00

1245 lines
48 KiB
SourcePawn

public char PLUGIN_VERSION[8] = "8.4.2";
void sudo(int task) {
AssLogger(LOGLVL_DEBUG, "Calling sudo with %i", task);
switch (task) {
//When the map is complete
case 0: {
CPrintToChatAll(core.tacobell ? "WOWIE YOU DID IT! The server will restart in 30 seconds, prepare to do it again! LULW" : "{darkviolet}[{forestgreen}CORE{darkviolet}] {white}YOU HAVE SUCCESSFULLY COMPLETED PROF'S ASS ! THE SERVER WILL RESTART IN 10 SECONDS.");
CreateTimer(10.0, TimedOperator, 100);
}
//Prepare yourself!
case 1: {
GlobalAudio.Reset();
core.tacobell = false;
ServerCommand("fb_startmoney 50000");
CPrintToChatAll("{darkviolet}[{yellow}INFO{darkviolet}] {red}PROFESSOR'S ASS {white}v0x22 (Core-v%s). Prepare yourself for the unpredictable... [{limegreen}by TTV/ProfessorFartsalot{white}]", PLUGIN_VERSION);
FastFire2("rain", "Alpha", "0", 0.0, false);
UpdateGamemode();
PrintToChatAll("%i", core.gamemode);
if (core.gamemode == 2) {
PrintToChatAll("UH OH");
}
}
//Wave init
case 2: {
UpdateGamemode();
core.curWave = GetCurWave();
PerformWaveSetup();
float hwn = GetRandomFloat(core.HWNMin, core.HWNMax);
CreateTimer(hwn, HWBosses);
GlobalAudio.setBGM(core.tacobell ? tacoBellBGMIndex[core.curWave] : DefaultsArray[core.curWave].defBGMIndex, true);
return;
}
//Force Tornado
case 3: {
if (core.isWave && WeatherManager.canTornado && !WeatherManager.hasTornado) {
CreateTimer(0.1, TimedOperator, 41);
PrintCenterTextAll("OH NOES... PREPARE YOUR ANUS!");
} else PrintToServer("Error spawning manual tornado... Perhaps we are not in a wave, tornadoes are banished, or a tornado has already spawned???");
return;
}
//Signal that previous boss should spawn.
case 4: {
core.waveFlags--;
}
//Signal that a boss should spawn
case 5: {
if (core.waveFlags < 0) core.waveFlags = 0;
switch (core.waveFlags) {
case 0: {
PrintToChatAll("Caught unhandled exception: core.waveFlags 0 but operator 5 was invoked.");
return;
}
case 1: {
FastFire2("FB.OnslaughterBase", "SetModelScale", "0.19", 0.0, false);
FastFire2("FB.BruteJusticeTrain", "TeleportToPathTrack", "tank_path_a_10", 0.0, false);
FastFire2("FB.BruteJustice", "Enable", "", 3.0, false);
FastFire2("FB.BruteJusticeTrain", "StartForward", "", 3.0, false);
FastFire2("FB.BruteJusticeParticles", "Start", "", 3.0, false);
CreateTimer(5.0, OnslaughterATK);
FastFire2("tank_boss", "AddOutput", "rendermode 10", 3.0, false);
FastFire2("tank_boss", "AddOutput", "rendermode 10", 7.0, false);
CreateTimer(10.0, BossHPTimer);
}
case 2: {
FastFire2("FB.Sephiroth", "Enable", "", 0.0, false);
FastFire2("SephMeteor", "SetParent", "FB.Sephiroth", 0.0, false);
FastFire2("SephTrain", "SetSpeedReal", "12", 0.0, false);
FastFire2("SephTrain", "TeleportToPathTrack", "Seph01", 0.0, false);
FastFire2("SephTrain", "StartForward", "", 0.1, false);
FastFire2("SephTrain", "SetSpeedReal", "12", 20.5, false);
FastFire2("FB.SephParticles", "Start", "", 3.0, false);
FastFire2("tank_boss", "AddOutput", "rendermode 10", 3.0, false);
FastFire2("tank_boss", "AddOutput", "rendermode 10", 7.0, false);
FastFire2("FB.BruteJusticeDMGRelay", "Kill", "", 0.0, false);
switch (GetClientCount(true)) {
case 1: {
FastFire2("SephTrain", "SetSpeedReal", "40", 23.0, false);
FastFire2("tank_boss", "SetHealth", "409600", 1.0, false);
FastFire2("FB.SephDMGRelay", "SetHealth", "32768000", 1.0, false);
}
case 2: {
FastFire2("SephTrain", "SetSpeedReal", "35", 23.0, false);
FastFire2("tank_boss", "SetHealth", "614400", 1.0, false);
FastFire2("FB.SephDMGRelay", "SetHealth", "32768000", 1.0, false);
}
case 3: {
FastFire2("SephTrain", "SetSpeedReal", "35", 23.0, false);
FastFire2("tank_boss", "SetHealth", "614400", 1.0, false);
FastFire2("FB.SephDMGRelay", "SetHealth", "131072000", 1.0, false);
}
case 4: {
FastFire2("SephTrain", "SetSpeedReal", "30", 23.0, false);
FastFire2("tank_boss", "SetHealth", "819200", 1.0, false);
FastFire2("FB.SephDMGRelay", "SetHealth", "262144000", 1.0, false);
}
case 5, 6, 7, 8, 9, 10: {
FastFire2("SephTrain", "SetSpeedReal", "25", 23.0, false);
FastFire2("tank_boss", "SetHealth", "819200", 1.0, false);
FastFire2("FB.SephDMGRelay", "SetHealth", "655360000", 1.0, false);
}
}
CreateTimer(30.0, BossHPTimer);
}
}
}
//Signal that next boss should spawn
case 6: {
core.waveFlags++;
}
//Signal to fastforward boss spawn.
case 7: {
core.waveFlags = 2;
if (core.curWave == 8 && !core.tacobell) {
sudo(1001);
CreateTimer(0.0, TimedOperator, 8);
}
}
//When a tornado intersects a tank.
case 8: {
FastFire2("FB.FakeTankSpawner", "ForceSpawn", "", 0.1, false);
}
//Client was Sacrificed.
case 10: {
core.sacrificedByClient = true;
}
//Damage relay took damage
case 11: {
FastFire2("TankRelayDMG", "Enable", "", 0.0, false);
FastFire2("TankRelayDMG", "Disable", "", 0.5, false);
}
//dmg relay was killed
case 12: {
FastFire2("tank_boss", "SetHealth", "1", 0.0, false);
FastFire2("TankRelayDMG", "Enable", "", 0.1, false);
FastFire2("TankRelayDMG", "Enable", "", 0.5, false);
FastFire2("TankRelayDMG", "Enable", "", 1.0, false);
FastFire2("TankRelayDMG", "Disable", "", 60.0, false);
}
//Tank Destroyed (+1), includes disabling onslaughter.
case 13: {
switch (core.waveFlags) {
case 0: {
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {white}A tank has been destroyed. ({limegreen}+1 pt{white})");
core.sacPoints++;
}
case 1: {
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {red}ONSLAUGHTER {white}has been destroyed. ({limegreen}+25 pts{white})");
FastFire2("TankRelayDMG", "Enable", "", 1.0, false);
FastFire2("TankRelayDMG", "Disable", "", 60.0, false);
FastFire2("FB.BruteJustice", "Disable", "", 0.0, false);
FastFire2("FB.BruteJusticeTrain", "Stop", "", 0.0, false);
FastFire2("FB.BruteJusticeParticles", "Stop", "", 0.0, false);
FastFire2("FB.BruteJusticeDMGRelay", "Break", "", 0.0, false);
FastFire2("FB.BruteJusticeTrain", "TeleportToPathTrack", "tank_path_a_10", 0.5, false);
core.waveFlags = 0;
core.sacPoints += 25;
}
case 2: {
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {red}SEPHIROTH {white}has been destroyed. ({limegreen}+100 pts{white})");
FastFire2("TankRelayDMG", "Enable", "", 1.0, false);
FastFire2("TankRelayDMG", "Disable", "", 60.0, false);
FastFire2("FB.Sephiroth", "Disable", "", 0.0, false);
FastFire2("SephTrain", "TeleportToPathTrack", "Seph01", 0.0, false);
FastFire2("SephTrain", "Stop", "", 0.0, false);
core.canSephNuke = false;
core.sacPoints += 100;
core.waveFlags = 0;
WeatherManager.canTornado = false;
}
}
return;
}
//Bomb Reset (+5)
case 14: {
core.bombReset = true;
core.sacPoints += 5;
}
//Bomb Deployed
case 15: {
FastFire2("FB.PayloadWarning", "Disable", "", 0.0, false);
if (!core.isWave) return;
if (bombState[0].state == 69) {
bombState[7].explode(false);
bombState[0].stateMax = 64;
CreateTimer(5.0, TimedOperator, 99);
}
bombState[bombState[0].getCurBomb()].explode(true);
bombState[0].stateMax += 10;
if (bombState[0].state >= bombState[0].stateMax) return;
else bombState[0].state += 2;
return;
}
//Tank deployed its bomb or boss reached hatch
case 16: {
sudo(18);
CPrintToChatAll("{darkviolet}[{fartsyred}CORE{darkviolet}] {white}A tank has deployed its bomb!");
return;
}
case 17 : {
sudo(18);
CPrintToChatAll("{darkviolet}[{fartsyred}CORE{darkviolet}] {white}A robot has deployed its bomb!");
return;
}
case 18: {
if(!core.isWave) {
CPrintToChatAll("{fartsyred} PLEASE DO NOT ATTEMPT TO USE OPERATOR 18 WITHOUT A WAVE.");
return;
}
FastFire2("bots_win", "RoundWin", "", 1.0, false);
FastFire2("hatch_magnet_pit", "Enable", "", 1.0, false);
FastFire2("hatch_explo_kill_players", "Enable", "", 1.0, false);
FastFire2("cap_hatch_destroy_animated_prop", "Enable", "", 1.0, false);
FastFire2("cap_hatch_destroy_delete_prop", "Kill", "", 1.0, false);
FastFire2("end_pit_destroy_particle", "Start", "", 1.0, false);
FastFire2("trigger_hurt_hatch_fire", "Enable", "", 1.0, false);
FastFire2("cap_hatch_glasswindow", "Break", "", 1.0, false);
FastFire2("hatch_explo_kill_players", "Disable", "", 1.50, false);
FastFire2("hatch_magnet_pit", "Disable", "", 5.0, false);
FastFire2("cap_hatch_destroy_animated_prop", "SetAnimation", "explode", 1.0, false);
FastFire2("tank_boss", "DestroyIfAtCapturePoint", "1", 1.0, false);
FastFire2("tank_boss", "DestroyIfAtCapturePoint", "2", 1.0, false);
FastFire2("tank_boss", "DestroyIfAtCapturePoint", "3", 1.0, false);
EmitSoundToAll("MVM.BombExplodes");
return;
}
//Shark Enable & notify bomb push began
case 20: {
bombState[0].isMoving = true;
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {forestgreen}Bomb push in progress.");
FastFire2("FB.PayloadWarning", "Enable", "", 0.0, false);
CreateTimer(3.0, SharkTimer);
}
//Shark Disable
case 21: {
bombState[0].isMoving = false;
core.canSENTShark = false;
}
//HINDENBOOM ACTIVATION
case 28: {
EmitSoundToAll(SFXArray[5].realPath);
FastFire2("HindenTrain", "StartForward", "", 0.0, false);
FastFire2("DeliveryBurg", "Lock", "", 0.0, false);
FastFire2("Boom", "Enable", "", 0.0, false);
FastFire2("Bombs.TheHindenburg", "Enable", "", 0.0, false);
FastFire2("Boom", "Disable", "", 1.0, false);
}
//HINDENBOOM!!!
case 29: {
CPrintToChatAll("{darkviolet}[{red}CORE{darkviolet}] {white}OH GOD, THEY'RE {red}CRASHING THE HINDENBURG{white}!!!");
EmitSoundToAll(SFXArray[36].realPath);
CreateTimer(4.0, TimedOperator, 21);
CreateTimer(7.0, TimedOperator, 37);
FastFire2("LargeExplosion", "Explode", "", 7.0, false);
FastFire2("LargeExploShake", "StartShake", "", 7.0, false);
FastFire2("NukeAll", "Enable", "", 7.0, false);
FastFire2("FB.Fade", "Fade", "", 7.0, false);
FastFire2("NukeAll", "Disable", "", 9.0, false);
FastFire2("Bombs.TheHindenburg", "Disable", "", 7.0, false);
FastFire2("HindenTrain", "TeleportToPathTrack", "Hinden01", 7.0, false);
FastFire2("HindenTrain", "Stop", "", 7.0, false);
CreateTimer(8.0, TimedOperator, 99);
bombState[0].state = 4;
bombState[0].stateMax = 8;
}
//Bath Salts spend
case 30: {
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {white}INSTANT BATH SALT DETONATION! BOTS ARE FROZEN FOR 10 SECONDS! ({red}-10 pts{white})");
ServerCommand("sm_freeze @blue 10");
core.sacPoints -= 10;
bombState[3].explode(false);
}
//Goob/Kirb spend
case 31: {
int i = GetRandomInt(1, 2);
if (i == 1) CreateTimer(1.5, TimedOperator, 21);
FastFire2(i == 1 ? "FB.GiantGoobTemplate" : "FB.BlueKirbTemplate", "ForceSpawn", "", 0.0, false);
CPrintToChatAll(i == 1 ? "{darkviolet}[{forestgreen}CORE{darkviolet}] {white}GOOBBUE COMING IN FROM ORBIT! ({red}-20 pts{white})" : "{darkviolet}[{forestgreen}CORE{darkviolet}] {white}BLUE KIRBY FALLING OUT OF THE SKY! ({red}-20 pts{white})");
CustomSoundEmitter(i == 1 ? SFXArray[51].realPath : SFXArray[21].realPath, 65, false, 0, 1.0, 100);
core.sacPoints -= 20;
}
//35K ubup cash spend
case 32: {
if (!core.doFailsafe) {
core.doFailsafe = true;
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {white}Wave fail-safe activated! ({red}-30 pts{white})");
core.sacPoints -= 30;
} else return;
}
//Explosive paradise spend
case 33: {
CustomSoundEmitter(SFXArray[10].realPath, 65, false, 0, 1.0, 100);
FastFire2("FB.FadeBLCK", "Fade", "", 0.0, false);
ServerCommand("sm_evilrocket @blue");
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {white}We're spending most our lives living in an EXPLOSIVE PARADISE! Robots will be launched into orbit, too! ({red}-40 pts{white})");
//Add this to explosion array?
FastFire2("NukeAll", "Enable", "", 11.50, false);
FastFire2("HUGEExplosion", "Explode", "", 11.50, false);
FastFire2("FB.Fade", "Fade", "", 11.50, false);
FastFire2("FB.ShakeBOOM", "StartShake", "", 11.50, false);
FastFire2("NukeAll", "Disable", "", 12.30, false);
core.sacPoints -= 40;
}
//Banish Tornadoes
case 34: {
if (WeatherManager.canTornado && !WeatherManager.hasTornado) core.sacPoints -= 50;
CPrintToChatAll(WeatherManager.canTornado && !WeatherManager.hasTornado ? "{darkviolet}[{forestgreen}CORE{darkviolet}] {white}A PINK KIRBY HAS BANISHED TORNADOES FOR THIS WAVE! ({red}-50 pts{white})" : !WeatherManager.canTornado ? "{red}TTV/professorfartsalot {white}: Please do not, the tornado button. Thanks. ({red} -0 pts{white})" : "{red}TTV/professorfartsalot {white}: You fool. It is much too late for you. ({red} -0 pts{white})");
WeatherManager.canTornado = !WeatherManager.hasTornado ? false : true;
WeatherManager.Dissipate();
}
//Ass Gas spend
case 35: {
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {white}ANYTHING BUT THE ASS GAS!!!! ({red}-60 pts{white})");
core.sacPoints -= 60;
FastFire2("HurtAll", "AddOutput", "damagetype 524288", 0.0, false);
FastFire2("FB.ShakeBOOM", "StartShake", "", 0.1, false);
FastFire2("HurtAll", "AddOutput", "damage 400", 0.0, false);
FastFire2("HurtAll", "Enable", "", 0.1, false);
FastFire2("HurtAll", "Disable", "", 4.1, false); //Add a sound to this in the future. Maybe gas sound from gbombs? Maybe custom fart sounds? hmm....
FastFire2("FB.ShakeBOOM", "StopShake", "", 4.1, false);
}
//Nuclear fallout spend
case 36: {
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {white}INSTANT FAT MAN DETONATION! ({red}-70 pts{white})");
core.sacPoints -= 70;
bombState[7].explode(false);
}
//Meteor shower spend
case 37: {
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {white}COSMIC DEVASTATION IMMINENT. ({red}-80 pts{white})");
core.sacPoints -= 80;
core.canSENTMeteors = true;
CreateTimer(1.0, SENTMeteorTimer);
CreateTimer(30.0, TimedOperator, 12);
}
//300K UbUp Cash
case 38: {
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {white}150K UbUp Cash Granted to {red}RED{white}! ({red}-90 pts{white})");
core.sacPoints -= 90;
ServerCommand("sm_addcash @red 300000");
}
//Fartsy of the Seventh Taco Bell
case 39: {
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {white}NOW PRESENTING... PROFESSOR FARTSALOT OF THE SEVENTH TACO BELL! ({red}-100 points{white})");
core.sacPoints -= 100;
bombState[0].stateMax = 69;
bombState[0].state = 69;
FastFire2("Delivery", "Unlock", "", 0.0, false);
FastFire2("BombExplo*", "Disable", "", 0.0, false);
FastFire2("Bombs*", "Disable", "", 0.0, false);
FastFire2("Bombs.Professor", "Enable", "", 3.0, false);
}
//Found blue ball
case 40: {
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {forestgreen}What on earth IS that? It appears to be a... \x075050FFBLUE BALL{white}!");
CustomSoundEmitter(SFXArray[21].realPath, 65, false, 0, 1.0, 100);
FastFire2("FB.BlueKirbTemplate", "ForceSpawn", "", 4.0, false);
CreateTimer(4.0, TimedOperator, 21);
}
//Found burrito
case 41: {
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {forestgreen}Why would you even eat {red}The Forbidden Burrito{white}?");
CustomSoundEmitter("vo/sandwicheat09.mp3", 65, false, 0, 1.0, 100);
FastFire2("HurtAll", "AddOutput", "damagetype 8", 0.0, false);
FastFire2("HurtAll", "AddOutput", "damage 2000", 0.0, false);
FastFire2("HurtAll", "Enable", "", 4.0, false);
FastFire2("HurtAll", "Disable", "", 8.0, false);
}
//Found goobbue
case 42: {
isGoobbue = true;
CustomSoundEmitter(SFXArray[51].realPath, 65, false, 0, 1.0, 100);
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {forestgreen}ALL HAIL \x07FF00FFGOOBBUE{forestgreen}!");
CreateTimer(4.0, TimedOperator, 21);
FastFire2("FB.GiantGoobTemplate","ForceSpawn", "", 4.0, false);
}
//Found Mario
case 43: {
CustomSoundEmitter(SFXArray[52].realPath, 65, false, 0, 1.0, 100);
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {forestgreen}Welp, someone is playing \x0700FF00Mario{white}...");
}
//Found Waffle
case 44: {
CustomSoundEmitter(SFXArray[53].realPath, 65, false, 0, 1.0, 100);
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {forestgreen}Oh no, someone has found and (probably) consumed a {red}WAFFLE OF MASS DESTRUCTION{white}!");
//Yup, another one for the explosion array
FastFire2("HurtAll", "AddOutput", "damagetype 262144", 10.0, false);
FastFire2("HurtAll", "AddOutput", "damage 2000000", 0.0, false);
FastFire2("ShakeBOOM", "StartShake", "", 10.3, false);
FastFire2("HUGEExplosion", "Explode", "", 10.3, false);
FastFire2("FB.Fade", "Fade", "", 10.3, false);
FastFire2("HurtAll", "Enable", "", 10.3, false);
FastFire2("HurtAll", "Disable", "", 12.3, false);
}
//Medium Explosion (defined again, but we aren't using a bomb this time)
case 51: {
CustomSoundEmitter(SFXArray[3].realPath, 65, false, 0, 1.0, 100);
}
//Probably for the hindenburg... EDIT: NOPE. THIS IS FOR KIRB LANDING ON THE GROUND
case 52: {
EmitSoundToAll(SFXArray[35].realPath);
FastFire2("FB.BOOM", "StartShake", "", 0.0, false);
FastFire2("BlueBall*", "Kill", "", 0.0, false);
FastFire2("HUGEExplosion", "Explode", "", 0.0, false);
FastFire2("BlueKirb", "Kill", "", 0.0, false);
FastFire2("HurtAll", "AddOutput", "damagetype 32768", 0.0, false);
FastFire2("HurtAll", "AddOutput", "damage 777777.777", 0.0, false);
FastFire2("HurtAll", "Enable", "", 0.1, false);
FastFire2("HurtAll", "Disable", "", 2.1, false);
isGoobbue = false;
}
//Giant Goobbue
case 53: {
EmitSoundToAll(SFXArray[35].realPath);
FastFire2("FB.BOOM", "StartShake", "", 0.0, false);
FastFire2("GiantGoob*", "Kill", "", 0.0, false);
FastFire2("HUGEExplosion", "Explode", "", 0.0, false);
FastFire2("HurtAll", "AddOutput", "damagetype 1048576", 0.0, false);
FastFire2("HurtAll", "AddOutput", "damage 777777.777", 0.0, false);
FastFire2("HurtAll", "Enable", "", 0.1, false);
FastFire2("HurtAll", "Disable", "", 2.1, false);
}
//Prev wave
case 98: {
int prev_wave = GetCurWave() - 1;
if (prev_wave < 1) return;
JumpToWave(prev_wave);
}
//Next wave
case 99: {
int ent = FindEntityByClassname(-1, "tf_objective_resource");
if (ent == -1) {
LogMessage("tf_objective_resource not found");
return;
}
int max_wave = GetEntData(ent, FindSendPropInfo("CTFObjectiveResource", "m_nMannVsMachineMaxWaveCount"));
int next_wave = GetCurWave() + 1;
if (next_wave > max_wave) {
int flags = GetCommandFlags("tf_mvm_force_victory");
SetCommandFlags("tf_mvm_force_victory", flags & ~FCVAR_CHEAT);
ServerCommand("tf_mvm_force_victory 1");
FakeClientCommand(0, ""); //Not sure why, but this has to be here. Otherwise the specified commands simply refuse to work...
SetCommandFlags("tf_mvm_force_victory", flags | FCVAR_CHEAT);
CPrintToChatAll("{darkviolet}[{forestgreen}CORE{darkviolet}] {white}VICTORY HAS BEEN FORCED! THE SERVER WILL RESTART IN 10 SECONDS.");
CreateTimer(10.0, TimedOperator, 100);
return;
}
JumpToWave(next_wave);
}
//Code Entry from FC Keypad
case 100: {
if (core.CodeEntry == 17) {
FastFire2("FB.BOOM", "StartShake", "", 0.0, false);
CustomSoundEmitter(SFXArray[3].realPath, 65, false, 0, 1.0, 100);
FastFire2("FB.CodeCorrectKill", "Enable", "", 0.0, false);
FastFire2("FB.KP*", "Lock", "", 0.0, false);
FastFire2("FB.CodeCorrectKill", "Disable", "", 1.0, false);
} else {
core.CodeEntry = 0;
FastFire2("FB.CodeFailedKill", "Enable", "", 0.0, false);
FastFire2("FB.CodeFailedKill", "Disable", "", 1.0, false);
CustomSoundEmitter("fartsy/memes/priceisright_fail.wav", 65, false, 0, 1.0, 100);
}
}
case 101: {
core.CodeEntry++;
}
case 102: {
core.CodeEntry += 2;
}
case 103: {
core.CodeEntry += 3;
}
case 104: {
core.CodeEntry += 4;
}
case 105: {
core.CodeEntry += 5;
}
case 106: {
core.CodeEntry += 6;
}
case 107: {
core.CodeEntry += 7;
}
case 108: {
core.CodeEntry += 8;
}
case 109: {
core.CodeEntry += 9;
}
//Lighting Repairs
case 110: {
MapLighting[0].Repair();
}
case 111: {
MapLighting[1].Repair();
}
case 112:{
MapLighting[2].Repair();
}
case 113:{
MapLighting[3].Repair();
}
case 114:{
MapLighting[4].Repair();
}
case 115:{
MapLighting[5].Repair();
}
case 116:{
MapLighting[6].Repair();
}
case 117:{
MapLighting[7].Repair();
}
case 118:{
MapLighting[8].Repair();
}
case 119:{
MapLighting[9].Repair();
}
case 120:{
MapLighting[10].Repair();
}
case 121:{
MapLighting[11].Repair();
}
//Spoopy
case 130:{
FastFire2("gTrain", "StartForward", "", 0.0, false);
FastFire2("gTelefect", "Start", "", 0.0, false);
FastFire2("gTelefect", "Stop", "", 3.0, false);
FastFire2("gTrainSndHaunt", "PlaySound", "", GetRandomFloat(3.0, 7.0), false);
}
//Despawn ghosty boi in like 3 seconds
case 131:{
FastFire2("gTelefect", "Start", "", 3.0, false);
FastFire2("gTelefect", "Stop", "", 6.0, false);
FastFire2("gTrain", "TeleportToPathTrack", "gPathHome", 3.0, false);
}
//Determine what boss just deployed.
case 132:{
// if(MetalFaceDidIt){
//Force phase 4 metal face here
// }
switch(BossHandler.bossID){
// brute justice
case 0:{
FastFire2("bots_win", "roundwin", "", 0.0, false);
}
}
}
//Metal Face reached spawn point
case 133:{
CustomSoundEmitter(SFXArray[3].realPath, 45, false, 0, 1.0, 100);
FastFire2("FB.MetalFace.Train", "Stop", "", 0.0, false);
FastFire2("FB.MetalFace.Train", "SetSpeedReal", "50", 3.0, false);
FastFire2("FB.MetalFace.SpawnShake", "StartShake", "", 0.0, false);
FastFire2("FB.MetalFace.SpawnParticle", "Stop", "", 0.0, false);
}
//Tank deployed its bomb
case 134:{
BossHandler.TriggerVictory();
FastFire2("boss_deploy_relay", "Trigger", "", 5.0, false);
}
//Spawn metal face
case 135:{
BossHandler.TriggerSpawn(2);
}
//Metal Face dead
case 136:{
if(BossHandler.iBossPhase != 4){
BossHandler.iBossPhase = 4;
}
}
//Onslaughter dead
case 137:{
BossHandler.shouldTick = false;
FastFire2("OnslaughterTank", "SetHealth", "1", 0.0, false);
FastFire2("TankRelayDMG", "Enable", "", 0.0, false);
FastFire2("TankRelayDMG", "Disable", "", 10.0, false);
BossHandler.isAlive = false;
}
//Sephiroth dead (future code)
case 138:{
}
//Wipe mechanic down (MetalFace)
case 139:{
BossHandler.shouldTick = false;
FastFire2("FB.MetalFace", "Kill", "", 0.0, false);
FastFire2("FB.MetalFace.Train", "Kill", "", 0.0, false);
FastFire2("FB.MetalFace.SpawnParticle", "Kill", "", 0.0, false);
FastFire2("FB.MetalFace.SummonRockets", "Kill", "", 0.0, false);
FastFire2("FB.MetalFace.GigaBusterSNDTimer", "Kill", "", 0.0, false);
FastFire2("FB.MetalFace.GigaBuster.Explosion", "Kill", "", 0.0, false);
FastFire2("FB.MetalFace.GigaBusterMDL", "Kill", "", 0.0, false);
FastFire2("FB.MetalFace.GigaBusterSND", "Kill", "", 0.0, false);
BossHandler.TriggerDeath();
}
//Debug, somethingsomething aoe blah blah blah
case 200: {
CreateTimer(0.1, TimedOperator, 201);
}
//Debug, somethingsomething siren explosion thingy
case 201:{
WeatherManager.sirenPitch = 300.0;
}
case 203:{
BossHandler.bDoTankBuster = true;
}
case 205:{
PrintToChatAll("%N has the max emnity.", GetEmnityMax());
}
//Taco Bell Edition
case 210: {
core.tacobell = true;
ServerCommand("fb_startmoney 200000");
CPrintToChatAll("{darkviolet}[{orange}INFO{darkviolet}] {white}You have chosen {red}DOVAH'S ASS - TACO BELL EDITION{white}. Warning: All upgrade progress will be lost if you fail the wave. DO NOT FAIL US.");
}
//Reset Map
case 300: {
GlobalAudio.Reset();
BossHandler.shouldTick = false;
core.Reset();
for (int i = 0; i < sizeof(EmnityManager); i++) EmnityManager[i].Reset();
for (int i = 0; i < sizeof(MapLighting); i++) MapLighting[i].Repair();
WeatherManager.Reset();
bombState[0].isReady = false;
bombState[0].stateMax = 7;
bombState[0].state = 5;
iDmgHealingTotal = 0;
CreateTimer(1.0, PerformAdverts);
CreateTimer(40.0, SelectAdminTimer);
FastFire2("Barricade_Rebuild_Relay", "Trigger", "", 0.0, false);
FastFire2("FB.KP*", "Lock", "", 0.0, false);
FastFire2("OldSpawn", "Disable", "", 0.0, false);
FastFire2("NewSpawn", "Enable", "", 0.0, false);
FastFire2("CommonSpells", "Disable", "", 0.0, false);
FastFire2("RareSpells", "Disable","", 0.0, false);
FastFire2("dovahsassprefer", "Disable", "", 0.0, false);
FastFire2("bombpath_left_arrows", "Disable", "", 0.0, false);
FastFire2("bombpath_right_arrows", "Disable", "", 0.0, false);
sudo(1000);
sudo(1002);
sudo(1007);
}
//TEMP FUNCTIONS
case 301: {
EmitSoundToAll(BGMArray[5].realPath, _, g_chanBGM, BGMArray[5].SNDLVL, SND_CHANGEVOL, 0.05, _, _, _, _, _, _);
}
//TEMP FUNCTIONS
case 302: {
EmitSoundToAll(BGMArray[5].realPath, _, g_chanBGM, BGMArray[5].SNDLVL, SND_CHANGEVOL, 1.0, _, _, _, _, _, _);
}
case 304: {
EmitSoundToAll(BGMArray[6].realPath, _, g_chanBGM, BGMArray[6].SNDLVL, SND_CHANGEVOL, 0.05, _, _, _, _, _, _);
}
case 305: {
EmitSoundToAll(BGMArray[6].realPath, _, g_chanBGM, BGMArray[6].SNDLVL, SND_CHANGEVOL, 1.0, _, _, _, _, _, _);
}
case 420:{ // Init/Reset Wave Null.
UpdateGamemode();
if (core.gamemode != 2) return;
CPrintToChatAll("{fartsyred} [WARNING]: Initializing Wave Null...");
CPrintToChatAll("{fartsyred} [WARNING]: YOU HAVE CHOSEN TO LAUNCH WAVE NULL.");
CPrintToChatAll("{fartsyred} [WARNING]: SHOULD YOU FAIL THIS WAVE, YOU *WILL* BE RESTARTING FROM THE VERY BEGINNING WITH NO UPGRADES.");
CPrintToChatAll("{fartsyred} [WARNING]: THE FATE OF THIS SERVER IS IN YOUR HANDS. DO. NOT. FAIL.");
FastFire2("Weather.Sky", "Skin", "3", 0.0, false);
WeatherManager.fogDensity = 0.1;
}
case 421:{
UpdateGamemode();
if (core.gamemode != 2) return;
core.curWave = GetCurWave();
PerformWaveSetup();
//HandleWaveNull();
float hwn = GetRandomFloat(core.HWNMin, core.HWNMax);
CreateTimer(hwn, HWBosses);
PrintToChatAll("playing sound\\fartsy\\music\\wavenull_intro.mp3, waves should be timed so that the music changes right at the end of this intro.");
FastFire2("weather.sky", "Skin", "2", 0.0, false);
sudo(1001);
EmitSoundToAll("sound/fartsy/music/wavenull_intro.mp3");
WeatherManager.fogColorRTarget = 95.0;
WeatherManager.fogColorGTarget = 35.0;
WeatherManager.fogColorBTarget = 35.0;
}
case 422:{
GlobalAudio.setBGM(28, true);
//GlobalAudio.setBGM(29, false);
}
case 423:{
GlobalAudio.setBGM(30, false);
}
case 424:{
GlobalAudio.setBGM(31, false);
}
case 425:{
for (int i = 0; i < 32; i++) {
if (IsValidClient(i)) BossHandler.bustNukeTarget = i;
}
BossHandler.tickBusterNuclear = true;
}
case 426:{
// FastFire2("NukeTankBusterThing", "ForceSpawn", "", 0.0, false);
FastFire2("PL.CannonPitch", "SetPosition", "1.0", 0.0, false);
FastFire2("PL.SentCart", "ForceSpawn", "", 5.0, false);
FastFire2("PL.SentPhys", "Wake", "", 5.1, false);
FastFire2("PL.CannonFodder", "Enable", "", 5.1, false);
FastFire2("PL.CannonSND", "PlaySound", "", 5.1, false);
FastFire2("PL.CannonFodder", "Disable", "", 5.3, false);
FastFire2("PL.SentCartPhys", "Break", "", 6.0, false);
}
case 427:{
FastFire2("PL.NukeCart", "ForceSpawn", "", 0.0, false);
FastFire2("PL.NukeCartPhys", "Break", "", 1.25, false);
FastFire2("PL.NukeCartParticle", "Start", "", 1.25, false);
FastFire2("PL.NukeCartShake", "StartShake", "", 1.25, false);
FastFire2("PL.NukeCartExplo", "Explode", "", 1.25, false);
}
//LOOP SYSTEM
case 500: {
GlobalAudio.setBGM(9, false);
}
case 501: {
GlobalAudio.setBGM(10, false);
}
case 502: {
PrintToChatAll("Got 502 but not implemented in popfile, please report this to fartsy!");
PrintToConsoleAll("[CORE] Phase Change started... phase 4!");
GlobalAudio.setBGM(11, false);
}
// FINAL Music system rewrite (again) AGAINNNNNNNNNNNN.... and again!... and again :p and again!
case 1000: {
GlobalAudio.UpdateBGM();
}
//Stop current song
case 1001: {
for (int i = 0; i <= MaxClients; i++) {
if (StrEqual(BGMArray[AudioManager[i].indexBGM].realPath, "null")) continue;
StopSound(i, g_chanBGM, BGMArray[AudioManager[i].indexBGM].realPath);
}
return;
}
//Feature an admin
case 1002: {
char index[2];
int i = GetRandomInt(1, 10);
if (i == core.lastAdmin) i = GetRandomInt(1, 10);
IntToString(i, index, sizeof(index));
FastFire2("AdminPicker", "SetTextureIndex", index, 0.0, false);
core.lastAdmin = i;
return;
}
//Flash Lightning
case 1003: {
for (int i = 0; i < sizeof(lightningFlash); i++) FastFire2(lightningFlash[i].fireStr, "", "", 0.0, true);
}
//Activate Tornado Timer
case 1004: {
if (!core.isWave || !WeatherManager.canTornado || WeatherManager.hasTornado) return;
WeatherManager.TornadoTimerActive = true;
float f = (core.curWave == 4 ? GetRandomFloat(30.0, 60.0) : GetRandomFloat(90.0, 210.0));
CreateTimer(f - 20.0, TimedOperator, 40);
CreateTimer((f + GetRandomFloat(5.0, 25.0)), TimedOperator, 41);
}
//Despawn the tornado
case 1005: {
if (GetRandomInt(0, 9) != 9){
CPrintToChatAll("{red}TTV/professorfartsalot{white}: Nope :>");
return;
}
WeatherManager.Dissipate();
return;
}
//Crusader
case 1006: {
GlobalAudio.shouldTick = false;
sudo(1001);
core.crusader = true;
CreateTimer(1.75, CRUSADERINCOMING);
CreateTimer(25.20, TimedOperator, 9);
CreateTimer(25.20, TimedOperator, 78);
CreateTimer(42.60, TimedOperator, 10);
CreateTimer(63.20, TimedOperator, 80);
PrintToServer("Starting Crusader via plugin!");
EmitSoundToAll("fartsy/misc/fartsyscrusader_bgm_locus.mp3");
CreateTimer(80.0, TimedOperator, 79);
for (int i = 0; i < sizeof(crusaderAtk); i++) FastFire2(crusaderAtk[i].fireStr, "", "", 0.0, true);
}
//Choose bomb path
case 1007: {
FastFire2("Nest_*", "Disable", "", 0.0, false);
FastFire2("bombpath_right_prefer_flankers", "Disable", "", 0.0, false);
FastFire2("bombpath_left_prefer_flankers", "Disable", "", 0.0, false);
FastFire2("bombpath_left_navavoid", "Disable", "", 0.0, false);
FastFire2("bombpath_right_navavoid", "Disable", "", 0.0, false);
FastFire2("bombpath_right_arrows", "Disable", "", 0.0, false);
FastFire2("bombpath_left_arrows", "Disable", "", 0.0, false);
switch (GetRandomInt(1, 3)) {
case 1: {
FastFire2("Nest_R*", "Enable", "", 0.25, false);
FastFire2("bombpath_right_prefer_flankers", "Enable", "", 0.25, false);
FastFire2("bombpath_right_navavoid", "Enable", "", 0.25, false);
FastFire2("bombpath_right_arrows", "Enable", "", 0.25, false);
}
case 2: {
FastFire2("Nest_L*", "Enable", "", 0.25, false);
FastFire2("bombpath_left_prefer_flankers", "Enable", "", 0.25, false);
FastFire2("bombpath_left_navavoid", "Enable", "", 0.25, false);
FastFire2("bombpath_left_arrows", "Enable", "", 0.25, false);
}
case 3: {
FastFire2("dovahsassprefer", "Enable", "", 0.25, false);
FastFire2("Nest_EN*", "Enable","", 0.25, false);
FastFire2("bombpath_right_prefer_flankers", "Enable", "", 0.25, false);
FastFire2("bombpath_right_navavoid", "Enable", "", 0.25, false);
FastFire2("bombpath_right_arrows", "Enable", "", 0.25, false);
}
}
}
//Monitor power up/down!
case 1008: {
core.monitorOn = (!core.monitorOn ? true : false);
FastFire2("FB.MonitorSprite", "Color", !core.monitorColor && core.monitorOn ? "0 0 255" : core.monitorOn ? "0 255 0" : "255 0 0", 0.0, false);
FastFire2(!core.monitorColor && core.monitorOn ? "FB.MonitorBW" : core.monitorOn ? "FB.Monitor" : "FB.Monitor*", core.monitorOn ? "Enable" : "Disable", "", 0.0, false);
FastFire2(!core.monitorColor && core.monitorOn ? "FB.Monitor" : core.monitorOn ? "FB.MonitorBW" : "FB.MonitorBlank", core.monitorOn ? "Disable" : "Enable", "", 0.0, false);
FastFire2("FB.MonitorBlank", core.monitorOn ? "Disable" : "Enable", "", 0.2, false);
}
//Cycle monitor forward
case 1009: {
core.camSel++;
if (core.camSel >= 5) core.camSel = 0;
FastFire2("FB.Monitor", "SetCamera", SelectedCamera[core.camSel], 0.0, false);
FastFire2("FB.MonitorBW", "SetCamera", SelectedCamera[core.camSel], 0.0, false);
}
//Cycle monitor back
case 1010: {
core.camSel--;
if (core.camSel <= -1) core.camSel = 4;
FastFire2("FB.Monitor", "SetCamera", SelectedCamera[core.camSel], 0.0, false);
FastFire2("FB.MonitorBW", "SetCamera", SelectedCamera[core.camSel], 0.0, false);
}
//Toggle black and white mode.
case 1011: {
if (!core.monitorOn) return;
core.monitorColor = (!core.monitorColor ? true : false);
FastFire2("FB.MonitorSprite", "Color", core.monitorColor ? "0 255 0" : "0 0 255", 0.0, false);
FastFire2(core.monitorColor ? "FB.MonitorBW" : "FB.Monitor", "Disable", "", 0.0, false);
FastFire2(core.monitorColor ? "FB.Monitor" : "FB.MonitorBW", "Enable", "", 0.0, false);
}
case 6942: {
core.sacPoints = 2147483647;
}
//Do not EVER EVER execute this unless it's an emergency...
case 6969: {
CPrintToChatAll(!core.isWave ? "{darkred} [CORE] ERROR, attempted to invoke function without an active wave." : core.brawler_emergency ? "{darkred}[CORE] Failed to enter emergency mode, it is already active." : "{darkred}[CORE] EMERGENCY MODE ACTIVATED...");
if (!core.isWave || core.brawler_emergency) return;
Emerge(0);
}
//DEBUG
case 7500:{
FastFire2("LargeExplosion", "Explode", "", 0.5, false);
}
case 8000: {
SephBoss[GetRandomInt(0, 6)].attack();
}
case 9000: {
CreateTimer(10.0, BossHPTimer);
}
case 9010: {
CustomSoundEmitter(TBGM6, 65, true, 1, 1.0, 100);
CustomSoundEmitter(TBGM4, 65, true, 1, 0.05, 100);
CustomSoundEmitter(TBGM5, 65, true, 1, 0.05, 100);
CustomSoundEmitter(TBGM3, 65, true, 1, 0.05, 100);
}
case 9011: {
CustomSoundEmitter(TBGM6, 65, true, 1, 1.0, 100);
CustomSoundEmitter(TBGM4, 65, true, 1, 1.0, 100);
CustomSoundEmitter(TBGM5, 65, true, 1, 0.05, 100);
CustomSoundEmitter(TBGM3, 65, true, 1, 0.05, 100);
}
case 9012: {
CustomSoundEmitter(TBGM6, 65, true, 1, 1.0, 100);
CustomSoundEmitter(TBGM4, 65, true, 1, 1.0, 100);
CustomSoundEmitter(TBGM5, 65, true, 1, 1.0, 100);
CustomSoundEmitter(TBGM3, 65, true, 1, 0.05, 100);
}
case 9013: {
CustomSoundEmitter(TBGM6, 65, true, 1, 1.0, 100);
CustomSoundEmitter(TBGM4, 65, true, 1, 1.0, 100);
CustomSoundEmitter(TBGM5, 65, true, 1, 1.0, 100);
CustomSoundEmitter(TBGM3, 65, true, 1, 1.0, 100);
}
case 9014: {
CustomSoundEmitter(TBGM6, 65, true, 1, 0.05, 100);
CustomSoundEmitter(TBGM4, 65, true, 1, 1.0, 100);
CustomSoundEmitter(TBGM5, 65, true, 1, 1.0, 100);
CustomSoundEmitter(TBGM3, 65, true, 1, 1.0, 100);
}
case 9015: {
CustomSoundEmitter(TBGM6, 65, true, 1, 0.05, 100);
CustomSoundEmitter(TBGM4, 65, true, 1, 0.05, 100);
CustomSoundEmitter(TBGM5, 65, true, 1, 1.0, 100);
CustomSoundEmitter(TBGM3, 65, true, 1, 1.0, 100);
}
case 9016: {
CustomSoundEmitter(TBGM6, 65, true, 1, 0.05, 100);
CustomSoundEmitter(TBGM4, 65, true, 1, 0.05, 100);
CustomSoundEmitter(TBGM5, 65, true, 1, 0.05, 100);
CustomSoundEmitter(TBGM3, 65, true, 1, 1.0, 100);
}
//Play Instrumental
case 9020: {
CustomSoundEmitter(TBGM0, 65, true, 1, 1.0, 100);
CustomSoundEmitter(TBGM1, 65, true, 1, 0.05, 100);
}
//Play Both
case 9021: {
CustomSoundEmitter(TBGM0, 65, true, 1, 1.0, 100);
CustomSoundEmitter(TBGM1, 65, true, 1, 1.0, 100);
}
//Play vocal only
case 9022: {
CustomSoundEmitter(TBGM0, 65, true, 1, 0.05, 100);
CustomSoundEmitter(TBGM1, 65, true, 1, 1.0, 100);
}
//Test
case 10000:{
int ent = FindEntityByClassname(-1, "tf_objective_resource");
if (ent != -1){
PrintToChatAll("%i / 3", GetEntData(ent, FindSendPropInfo("CTFObjectiveResource", "m_nFlagCarrierUpgradeLevel")));
}
}
case 20000:{
BossHandler.EmitSpawnSound(2);
}
case 21000:{
int i = FindTarget(0, "Professor", true, false);
AudioManager[i].EnterEventMode(29);
}
case 22000:{
int i = FindTarget(0, "Professor", true, false);
AudioManager[i].ExitEventMode();
}
case 42690:{
BossHandler.bossID = 69;
BossHandler.shouldTick = true;
BossHandler.isAlive = true;
EmitSoundToAll("fartsy/misc/brawler/fartsy_dll/intro.mp3");
PrintToConsoleAll("Loading FARTSY.DLL from C:\\Windows\\System32 ...");
PrintToServer("Loading FARTSY.IMG from /boot/efi ...");
PrintToChatAll("FARTSY.DLL has joined the game");
ServerCommand("sm_mortal @all");
AddCommandListener(CommandOverride, "sm_buddha");
AddCommandListener(CommandOverride, "sm_gimme");
AddCommandListener(CommandOverride, "sm_givew");
AddCommandListener(CommandOverride, "sm_gi");
AddCommandListener(CommandOverride, "sm_god");
AddCommandListener(CommandOverride, "sm_admin");
AddCommandListener(CommandOverride, "sm_noclip");
AddCommandListener(CommandOverride, "sm_noclipme");
CreateTimer(6.1, TimedOperator, 50000);
}
case 42696:{
RemoveCommandListener(CommandOverride, "sm_buddha");
RemoveCommandListener(CommandOverride, "sm_god");
RemoveCommandListener(CommandOverride, "sm_gimme");
RemoveCommandListener(CommandOverride, "sm_givew");
RemoveCommandListener(CommandOverride, "sm_gi");
RemoveCommandListener(CommandOverride, "sm_admin");
RemoveCommandListener(CommandOverride, "sm_noclip");
RemoveCommandListener(CommandOverride, "sm_noclipme");
}
}
return;
}
public Action CommandOverride(int client, const char[] command, int argc)
{
ServerCommand(GetRandomInt(0, 1 == 1) ? "sm_slay #%i" : "sm_smite #i", GetClientUserId(client));
PrintToChatAll ("[FARTSY.DLL] Did you REALLY think I would let you cheat, %N? How about instead of using %s you actually play the game, loser!", client, command);
return Plugin_Handled;
}
//Timed commands
public Action TimedOperator(Handle timer, int job) {
switch (job) {
case 0: {
for (int i = 0; i < MaxClients; ++i) CPrintToChat(i, GlobalAudio.VIPBGM >= 0 ? "{darkviolet}[{forestgreen}CORE{darkviolet}] {white}Wave %i: {forestgreen}%s{white} (requested by VIP {forestgreen}%N{white})" : "{darkviolet}[{forestgreen}CORE{darkviolet}] {white}Wave %i: {forestgreen}%s", core.curWave, AudioManager[i].songName, GlobalAudio.VIPIndex);
}
//Boss script
case 2: {
ServerCommand("fb_operator 1001"); //Stop all bgm.
CreateTimer(0.0, TimedOperator, 3);
}
//Boss script pt 2
case 3: {
GlobalAudio.setBGM(16, true);
FastFire2("FB.FadeTotalBLCK", "Fade", "", 0.0, false);
FastFire2("FB.FadeTotalBLCK", "Fade", "", 3.0, false);
FastFire2("FB.FadeTotalBLCK", "Fade", "", 7.0, false);
FastFire2("FB.FadeTotalBLCK", "Fade", "", 12.0, false);
FastFire2("SephMeteor", "ForceSpawn", "", 19.6, false);
CreateTimer(23.0, TimedOperator, 4);
}
//Boss script pt 3
case 4: {
CustomSoundEmitter(SFXArray[9].realPath, 65, false, 0, 1.0, 100);
CreateTimer(4.1, TimedOperator, 5);
}
//Boss script pt 4
case 5: {
CustomSoundEmitter(SFXArray[58].realPath, 65, false, 0, 1.0, 100);
FastFire2("SephNuke", "ForceSpawn", "", 3.0, false);
CreateTimer(3.2, TimedOperator, 6);
}
//Boss script pt 5
case 6: {
CustomSoundEmitter(SFXArray[35].realPath, 65, false, 0, 1.0, 100);
FastFire2("FB.Fade", "Fade", "", 0.0, false);
CreateTimer(1.0, SephATK);
CreateTimer(1.7, TimedOperator, 7);
}
//DO THE THING ALREADY
case 7: {
core.sephiroth = true;
//AudioManager.ticksBGM = 0;
//AudioManager.loopSeconds = BGMArray[16].loopSeconds;
}
//Signal boss to actually spawn after delay.
case 8: {
CustomSoundEmitter(SFXArray[57].realPath, 65, false, 0, 1.0, 100);
CPrintToChatAll("{darkgreen}[CORE] You did it!!! {darkred}Or... did you...?");
FastFire2("FB.FadeBLCK", "Fade", "", 0.0, false);
CreateTimer(4.8, TimedOperator, 2);
}
//Crusader Nuke activation
case 9: {
core.canCrusaderNuke = true;
CreateTimer(1.0, NukeTimer, 1);
}
//Crusader Nuke Deactivation
case 10: {
core.canCrusaderNuke = false;
return Plugin_Stop;
}
//Seph Nuke Deactivation
case 11: {
core.canSephNuke = false;
return Plugin_Stop;
}
//SENTMeteor Timeout
case 12: {
core.canSENTMeteors = false;
return Plugin_Stop;
}
//SENTStars Timeout
case 14: {
core.canSENTStars = false;
return Plugin_Stop;
}
//Incoming
case 21: {
CustomSoundEmitter(SFXArray[37].realPath, 65, false, 0, 1.0, 100);
return Plugin_Stop;
}
case 37: {
EmitSoundToAll(SFXArray[35].realPath);
return Plugin_Stop;
}
//Severe storm coming!!!
case 40: {
if (core.isWave && WeatherManager.canTornado && !WeatherManager.sirenExploded) WeatherManager.IssueTornadoWarning();
return Plugin_Stop;
}
// start tornado
case 41: {
if (!core.isWave || !WeatherManager.canTornado || WeatherManager.hasTornado) return Plugin_Stop;
WeatherManager.FormTornado();
return Plugin_Stop;
}
case 42: {
WeatherManager.TornadoWarning = false;
WeatherManager.Dissipate();
sudo(1004);
}
case 60: {
CustomSoundEmitter(SFXArray[40].realPath, 65, false, 0, 1.0, 100);
return Plugin_Stop;
}
case 70: {
if (core.isWave) {
FastFire2("FB.KP*", "Unlock", "", 0.0, false);
CustomSoundEmitter(SFXArray[0].realPath, 65, false, 0, 1.0, 100);
}
return Plugin_Stop;
}
case 71: {
CustomSoundEmitter("fartsy/eee/the_horn.wav", 65, false, 0, 1.0, 100);
return Plugin_Stop;
}
case 78: {
EmitSoundToAll(SFXArray[7].realPath);
return Plugin_Handled;
}
case 79: {
core.crusader = false;
core.curWave = GetCurWave();
if (core.isWave && (core.curWave == 3 || core.curWave == 5)) {
sudo(99);
}
return Plugin_Stop;
}
case 80: {
EmitSoundToAll(SFXArray[59].realPath);
return Plugin_Stop;
}
case 99: {
if (core.isWave) sudo(99);
return Plugin_Stop;
}
case 100: {
ServerCommand("_restart");
}
case 200:{
for (int i = 0; i < sizeof(CircleAOEenabled); i++){
CircleAOEenabled[i] = true;
}
}
case 201:{
int i = GetRandomInt(0, sizeof(CircleAOEpos)-1);
if (!CircleAOEenabled[i]){
if (attemptSpawn >= sizeof(CircleAOEpos)) return Plugin_Stop;
attemptSpawn++;
ServerCommand("fb_operator 200");
return Plugin_Stop;
}
attemptSpawn = 0;
DispatchCircleAOE(CircleAOEpos[i]);
PrintToChatAll("AOE %i CircleAOEen[i] = %i attempt %i sizeof %i", i, CircleAOEenabled[i], attemptSpawn, sizeof(CircleAOEpos));
CircleAOEenabled[i] = false;
CreateTimer(3.0, TimedOperator, 200);
return Plugin_Stop;
}
case 6969: {
if (!core.isWave){
ExitEmergencyMode();
return Plugin_Stop;
}
BEM++;
Emerge(BEM);
return Plugin_Stop;
}
case 42690: {
BossHandler.sOverflow = false;
return Plugin_Stop;
}
case 50000: {
ServerCommand("sv_cheats 1");
for (int client = 1; client <= MaxClients; client++) if (IsClientInGame(client)) ClientCommand(client, "r_screenoverlay fartsy/fartsy_dll_core");
ServerCommand("sv_cheats 0");
FastFire2("FB.FadeBLCK", "Alpha", "127", 0.0, false);
FastFire2("FB.FadeBLCK", "Fade", "", 0.0, false);
SendHudTextAll(1, "Did you think this would be easy...?", 0.1, 0.15, 9.0, {0, 160, 0, 255}, {0, 255, 0, 255}, 2, 0.5, 0.05, 0.75);
EmitSoundToAll("fartsy/misc/brawler/fartsy_dll/terror.mp3");
CreateTimer(3.0, TimedOperator, 50001);
return Plugin_Stop;
}
case 50001: {
FastFire2("FB.FadeBLCK", "Alpha", "127", 0.0, false);
FastFire2("FB.FadeBLCK", "Fade", "", 0.0, false);
SendHudTextAll(2, "You can't possibly expect the same old tricks to work.... can you?~", 0.2, 0.2, 3.0, {0, 160, 0, 192}, {0, 255, 0, 192}, 2, 0.75, 0.05, 0.75);
CreateTimer(5.0, TimedOperator, 50002);
return Plugin_Stop;
}
case 50002: {
FastFire2("FB.FadeBLCK", "Alpha", "127", 0.0, false);
FastFire2("FB.FadeBLCK", "Fade", "", 0.0, false);
SendHudTextAll(1, "LAUGH IT UP. You and I both know this is 'just another boss fight'...", 0.15, 0.25, 7.0, {0, 160, 0, 192}, {0, 255, 0, 192}, 2, 0.5, 0.05, 0.75);
CreateTimer(5.0, TimedOperator, 50003);
return Plugin_Stop;
}
case 50003: {
FastFire2("FB.FadeBLCK", "Alpha", "192", 0.0, false);
FastFire2("FB.FadeBLCK", "Fade", "", 0.0, false);
SendHudTextAll(2, "...or is it?~", 0.2, 0.3, 2.0, {0, 160, 0, 192}, {0, 255, 0, 192}, 2, 0.5, 0.05, 0.75);
CreateTimer(4.0, TimedOperator, 50004);
return Plugin_Stop;
}
case 50004:{
FastFire2("FB.FadeBLCK", "Alpha", "224", 0.0, false);
FastFire2("FB.FadeBLCK", "Fade", "", 0.0, false);
SendHudTextAll(1, "ARE YOU HAPPY? All of you who knew what was happening...~", 0.25, 0.35, 7.0, {0, 160, 0, 192}, {0, 255, 0, 192}, 2, 0.5, 0.05, 0.75);
CreateTimer(5.0, TimedOperator, 50005);
return Plugin_Stop;
}
case 50005:{
FastFire2("FB.FadeBLCK", "Alpha", "224", 0.0, false);
FastFire2("FB.FadeBLCK", "Fade", "", 0.0, false);
SendHudTextAll(2, "Every last one of you...", 0.35, 0.4, 5.0, {0, 160, 0, 192}, {0, 255, 0, 192}, 1, 0.5, 0.5, 0.75);
CreateTimer(5.0, TimedOperator, 50006);
return Plugin_Stop;
}
case 50006:{
FastFire2("FB.FadeBLCK", "Alpha", "192", 0.0, false);
FastFire2("FB.FadeBLCK", "Fade", "", 0.0, false);
SendHudTextAll(1, "I hope you're as happy as I am...~", 0.15, 0.45, 7.0, {0, 160, 0, 192}, {0, 255, 0, 192}, 2, 0.5, 0.05, 0.75);
CreateTimer(4.0, TimedOperator, 50007);
return Plugin_Stop;
}
case 50007:{
FastFire2("FB.FadeBLCK", "Fade", "", 0.0, false);
SendHudTextAll(2, "...knowing you all just spent all your time here~", 0.25, 0.5, 5.0, {0, 160, 0, 192}, {0, 255, 0, 192}, 2, 0.5, 0.05, 0.75);
CreateTimer(5.0, TimedOperator, 50008);
return Plugin_Stop;
}
case 50008:{
FastFire2("FB.FadeBLCK", "Alpha", "255", 0.0, false);
FastFire2("FB.FadeBLCK", "Fade", "", 0.0, false);
ServerCommand("sv_cheats 1");
for (int client = 1; client <= MaxClients; client++) if (IsClientInGame(client)) ClientCommand(client, "r_screenoverlay fartsy/fartsy_dll_anon");
ServerCommand("sv_cheats 0");
FastFire2("FB.FadeBLCK", "Fade", "", 3.0, false);
SendHudTextAll(1, "JUST TO DIE!!!", 0.4, 0.6, 7.0, {255, 0, 0, 255}, {255, 0, 0, 255}, 1, 0.5, 0.05, 0.75);
CreateTimer(5.75, TimedOperator, 50009);
return Plugin_Stop;
}
case 50009:{
ServerCommand("sv_cheats 1");
for (int client = 1; client <= MaxClients; client++) if (IsClientInGame(client)) ClientCommand(client, "r_screenoverlay \\");
ServerCommand("sv_cheats 0");
EmitSoundToAll("fartsy/music/tcmusic/humanhypothesis.wav");
return Plugin_Stop;
}
case 51000:{
}
case 99999:{
AssLogger(LOGLVL_INFO, "Server empty for 600s, restarting!");
ServerCommand("_restart");
}
}
return Plugin_Stop;
}