Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- File : _xperk.gsc
- Authors : Rampage
- How to use:
- Place _zombiemode_utility_new.gsc and _xperk.gsc into raw\maps\. Then follow these steps:
- 1) Go to the map_setup() function and add coordinates for where you want your Perk machines.
- 2) You may also have to add a blocker to the same coordinates because you will be able to walk
- through the machine(s) if you don't
- 3) Put this in your zone source CSV file (or mod.csv):
- rawfile,maps/_xperk.gsc
- xmodel,zombie_vending_doubletap_on
- xmodel,zombie_vending_jugg_on
- xmodel,zombie_vending_revive_on
- xmodel,zombie_vending_sleight_on
- xmodel,zombie_vending_doubletap
- xmodel,zombie_vending_jugg
- xmodel,zombie_vending_revive
- xmodel,zombie_vending_sleight
- xmodel,collision_geo_64x64x128
- weapon,sp/zombie_perk_bottle_doubletap
- weapon,sp/zombie_perk_bottle_jugg
- weapon,sp/zombie_perk_bottle_revive
- weapon,sp/zombie_perk_bottle_sleight
- material,specialty_juggernaut_zombies
- material,specialty_fastreload_zombies
- material,specialty_doubletap_zombies
- material,specialty_quickrevive_zombies
- 4) Put this in the main() of _zombiemode.gsc:
- maps\_xperk::init();
- */
- #include common_scripts\utility;
- #include maps\_utility;
- #include maps\_zombiemode_utility;
- init()
- {
- // PRECACHE SECTION
- PrecacheShader( "specialty_juggernaut_zombies" );
- PrecacheShader( "specialty_fastreload_zombies" );
- PrecacheShader( "specialty_doubletap_zombies" );
- PrecacheShader( "specialty_quickrevive_zombies" );
- PrecacheShader( "specialty_bulletdamage" );
- PrecacheShader( "specialty_boost" );
- PrecacheShader( "zct_fast_rebuild" );
- preCacheShader( "zct_self_defense" );
- PrecacheModel("zombie_vending_jugg_sumpf");
- PrecacheModel("zombie_vending_doubletap_sumpf");
- PrecacheModel("zombie_vending_revive_sumpf");
- PrecacheModel("zombie_vending_sleight_sumpf");
- PrecacheModel("zombie_vending_jugg_sumpf_on");
- PrecacheModel("zombie_vending_doubletap_sumpf_on");
- PrecacheModel("zombie_vending_revive_sumpf_on");
- PrecacheModel("zombie_vending_fixzpop_on");
- PrecacheModel("zombie_vending_sleight_sumpf_on");
- precachemodel("collision_geo_64x64x128");
- PrecacheItem( "zombie_perk_bottle_doubletap" );
- PrecacheItem( "zombie_perk_bottle_jugg" );
- PrecacheItem( "zombie_perk_bottle_fixzpop" );
- PrecacheItem( "zombie_perk_bottle_revive" );
- PrecacheItem( "zombie_perk_bottle_sleight" );
- level._effect["sleight_light"] = loadfx("misc/fx_zombie_cola_on");
- level._effect["doubletap_light"] = loadfx("misc/fx_zombie_cola_dtap_on");
- level._effect["jugger_light"] = loadfx("misc/fx_zombie_cola_jugg_on");
- level._effect["revive_light"] = loadfx("misc/fx_zombie_cola_revive_on");
- level._effect["fixzpop_light"] = loadfx("misc/fx_zombie_titancola_on");
- PrecacheString( &"ZOMBIE_PERK_JUGGERNAUT" );
- PrecacheString( &"ZOMBIE_PERK_QUICKREVIVE" );
- PrecacheString( &"ZOMBIE_PERK_FASTRELOAD" );
- PrecacheString( &"ZOMBIE_PERK_DOUBLETAP" );
- PrecacheString( &"ZOMBIE_PERK_FIXZPOP" );
- set_zombie_var( "zombie_perk_cost", 2000 );
- set_zombie_var( "zombie_perk_juggernaut_health", 160 );
- // END PRECACHE SECTION
- thread map_setup();
- thread trigger_setup();
- level thread turn_jugger_on();
- level thread turn_doubletap_on();
- level thread turn_sleight_on();
- level thread turn_revive_on();
- level thread turn_fixzpop_on();
- level thread machine_watcher();
- level.speed_jingle = 0;
- level.revive_jingle = 0;
- level.doubletap_jingle = 0;
- level.jugger_jingle = 0;
- }
- map_setup()
- {
- m = getDvar( "mapname" );
- switch(m)
- {
- //***** Nacht Der Untoten *****
- case "nazi_zombie_prototype":
- level.perk_machine = [];
- level.perk_machine[0] = spawn("script_model",(0,0,0));
- level.perk_machine[0].origin = (-186,49,-1);
- level.perk_machine[0].angles = (0,90,0);
- level.perk_machine[0].targetname = "vending_revive";
- level.perk_machine[0] setModel( "zombie_vending_revive_sumpf" );
- level.perk_machine[1] = spawn("script_model",(0,0,0));
- level.perk_machine[1].origin = (504,644,-1);
- level.perk_machine[1].angles = (0,180,0);
- level.perk_machine[1].targetname = "vending_sleight";
- level.perk_machine[1] setModel( "zombie_vending_sleight_sumpf" );
- level.perk_machine[2] = spawn("script_model",(0,0,0));
- level.perk_machine[2].origin = (169,324,144);
- level.perk_machine[2].angles = (0,0,0);
- level.perk_machine[2].targetname = "vending_jugg";
- level.perk_machine[2] setModel( "zombie_vending_jugg_sumpf" );
- level.perk_machine[3] = spawn("script_model",(0,0,0));
- level.perk_machine[3].origin = (192,658,144);
- level.perk_machine[3].angles = (0,-90,0);
- level.perk_machine[3].targetname = "vending_doubletap";
- level.perk_machine[3] setModel( "zombie_vending_doubletap_sumpf" );
- level.perk_machine[4] = spawn("script_model",(0,0,0));
- level.perk_machine[4].origin = (935,634,148);
- level.perk_machine[4].angles = (0,180,0);
- level.perk_machine[4].targetname = "vending_fixzpop";
- level.perk_machine[4] setModel( "zombie_vending_fixzpop_on" );
- level.perk_machineCount = level.perk_machine.size;
- break;
- case "nazi_zombie_anzio":
- level.perk_machine = [];
- level.perk_machine[0] = spawn("script_model",(0,0,0));
- level.perk_machine[0].origin = (1,-59,16);
- level.perk_machine[0].angles = (0,-90,0);
- level.perk_machine[0].targetname = "vending_revive";
- level.perk_machine[0] setModel( "zombie_vending_revive_sumpf" );
- level.perk_machine[1] = spawn("script_model",(0,0,0));
- level.perk_machine[1].origin = (323,331,-240);
- level.perk_machine[1].angles = (0,-90,0);
- level.perk_machine[1].targetname = "vending_sleight";
- level.perk_machine[1] setModel( "zombie_vending_sleight_sumpf" );
- level.perk_machine[2] = spawn("script_model",(0,0,0));
- level.perk_machine[2].origin = (321,-402,-240);
- level.perk_machine[2].angles = (0,-90,0);
- level.perk_machine[2].targetname = "vending_jugg";
- level.perk_machine[2] setModel( "zombie_vending_jugg_sumpf" );
- level.perk_machine[3] = spawn("script_model",(0,0,0));
- level.perk_machine[3].origin = (905,153,15);
- level.perk_machine[3].angles = (0,-90,0);
- level.perk_machine[3].targetname = "vending_doubletap";
- level.perk_machine[3] setModel( "zombie_vending_doubletap_sumpf" );
- level.perk_machineCount = level.perk_machine.size;
- break;
- }
- }
- trigger_setup()
- {
- if( isDefined( level.perk_machine ) )
- {
- for( i = 0; i < level.perk_machineCount; i++ )
- {
- level.perk_trigger[0] = spawn("trigger_radius",(0,0,0),1,35,64);
- level.perk_trigger[0].origin = level.perk_machine[0].origin;
- level.perk_trigger[0].angles = level.perk_machine[0].angles;
- level.perk_trigger[0].targetname = "zombie_vending";
- level.perk_trigger[0].script_noteworthy = "specialty_quickrevive";
- level.perk_trigger[1] = spawn("trigger_radius",(0,0,0),1,35,64);
- level.perk_trigger[1].origin = level.perk_machine[1].origin;
- level.perk_trigger[1].angles = level.perk_machine[1].angles;
- level.perk_trigger[1].targetname = "zombie_vending";
- level.perk_trigger[1].script_noteworthy = "specialty_fastreload";
- level.perk_trigger[2] = spawn("trigger_radius",(0,0,0),1,35,64);
- level.perk_trigger[2].origin = level.perk_machine[2].origin;
- level.perk_trigger[2].angles = level.perk_machine[2].angles;
- level.perk_trigger[2].targetname = "zombie_vending";
- level.perk_trigger[2].script_noteworthy = "specialty_armorvest";
- level.perk_trigger[3] = spawn("trigger_radius",(0,0,0),1,34,64);
- level.perk_trigger[3].origin = level.perk_machine[3].origin +(-5,0,0);
- level.perk_trigger[3].angles = level.perk_machine[3].angles;
- level.perk_trigger[3].targetname = "zombie_vending";
- level.perk_trigger[3].script_noteworthy = "specialty_rof";
- level.perk_trigger[4] = spawn("trigger_radius",(0,0,0),1,34,64);
- level.perk_trigger[4].origin = level.perk_machine[4].origin +(-5,0,0);
- level.perk_trigger[4].angles = level.perk_machine[4].angles;
- level.perk_trigger[4].targetname = "zombie_vending";
- level.perk_trigger[4].script_noteworthy = "specialty_recon";
- level.perk_trigger[i] thread vending_trigger_think();
- level.perk_clip[0] = spawnCollision("collision_geo_64x64x128","collider",level.perk_machine[i].origin+(0,0,35),(0,0,0));
- level.perk_clip[0].origin = level.perk_machine[0].origin;
- level.perk_clip[0].angles = level.perk_machine[0].angles;
- level.perk_clip[1] = spawnCollision("collision_geo_64x64x128","collider",level.perk_machine[i].origin+(0,0,35),(0,0,0));
- level.perk_clip[1].origin = level.perk_machine[1].origin;
- level.perk_clip[1].angles = level.perk_machine[1].angles;
- level.perk_clip[2] = spawnCollision("collision_geo_64x64x128","collider",level.perk_machine[i].origin+(0,0,35),(0,0,0));
- level.perk_clip[2].origin = level.perk_machine[2].origin;
- level.perk_clip[2].angles = level.perk_machine[2].angles;
- level.perk_clip[3] = spawnCollision("collision_geo_64x64x128","collider",level.perk_machine[i].origin+(13,0,35),(0,0,0));
- level.perk_clip[3].origin = level.perk_machine[3].origin;
- level.perk_clip[3].angles = level.perk_machine[3].angles;
- level.perk_clip[4] = spawnCollision("collision_geo_64x64x128","collider",level.perk_machine[i].origin+(13,0,35),(0,0,0));
- level.perk_clip[4].origin = level.perk_machine[4].origin;
- level.perk_clip[4].angles = level.perk_machine[4].angles;
- }
- }
- }
- turn_sleight_on()
- {
- machine = getentarray("vending_sleight", "targetname");
- //level waittill("sleight_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_sleight_sumpf_on");
- machine[i] vibrate((0,-100,0), 0.3, 0.4, 3);
- machine[i] playsound("perks_power_on");
- machine[i] thread perk_fx( "sleight_light" );
- }
- level notify( "specialty_fastreload_power_on" );
- }
- turn_revive_on()
- {
- machine = getentarray("vending_revive", "targetname");
- //level waittill("revive_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_revive_sumpf_on");
- machine[i] playsound("perks_power_on");
- machine[i] vibrate((0,-100,0), 0.3, 0.4, 3);
- machine[i] thread perk_fx( "revive_light" );
- }
- level notify( "specialty_quickrevive_power_on" );
- }
- turn_jugger_on()
- {
- machine = getentarray("vending_jugg", "targetname");
- //level waittill("juggernog_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_jugg_sumpf_on");
- machine[i] vibrate((0,-100,0), 0.3, 0.4, 3);
- machine[i] playsound("perks_power_on");
- machine[i] thread perk_fx( "jugger_light" );
- }
- level notify( "specialty_armorvest_power_on" );
- }
- turn_doubletap_on()
- {
- machine = getentarray("vending_doubletap", "targetname");
- //level waittill("doubletap_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_doubletap_sumpf_on");
- machine[i] vibrate((0,-100,0), 0.3, 0.4, 3);
- machine[i] playsound("perks_power_on");
- machine[i] thread perk_fx( "doubletap_light" );
- }
- level notify( "specialty_rof_power_on" );
- }
- turn_fixzpop_on()
- {
- machine = getentarray("vending_fixzpop", "targetname");
- //level waittill("doubletap_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_fixzpop_on");
- machine[i] vibrate((0,-100,0), 0.3, 0.4, 3);
- machine[i] playsound("perks_power_on");
- machine[i] thread perk_fx( "fixzpop_light" );
- }
- level notify( "specialty_fixzpop_power_on" );
- }
- perk_fx( fx )
- {
- wait(3);
- playfxontag( level._effect[ fx ], self, "tag_origin" );
- }
- vending_trigger_think()
- {
- //self thread turn_cola_off();
- perk = self.script_noteworthy;
- self SetHintString( &"ZOMBIE_FLAMES_UNAVAILABLE" );
- self SetCursorHint( "HINT_NOICON" );
- self UseTriggerRequireLookAt();
- notify_name = perk + "_power_on";
- //level waittill( notify_name );
- perk_hum = spawn("script_origin", self.origin);
- perk_hum playloopsound("perks_machine_loop");
- self thread check_player_has_perk(perk);
- self vending_set_hintstring(perk);
- for( ;; )
- {
- self waittill( "trigger", player );
- if( !player useButtonPressed() )
- {
- continue;
- }
- cost = level.zombie_vars["zombie_perk_cost"];
- switch( perk )
- {
- case "specialty_armorvest":
- cost = 2500;
- break;
- case "specialty_quickrevive":
- cost = 1500;
- break;
- case "specialty_fastreload":
- cost = 3000;
- break;
- case "specialty_rof":
- cost = 2000;
- break;
- case "specialty_recon":
- cost = 3500;
- break;
- }
- if ( perk == "specialty_recon" )
- {
- perk = randomInt( 8 );
- switch( perk )
- {
- case "specialty_bulletdamage":
- break;
- case "specialty_fastreload":
- break;
- case "specialty_rof":
- break;
- case "specialty_armorvest":
- break;
- case "specialty_boost":
- break;
- case "specialty_quickrevive":
- break;
- case "specialty_extraammo":
- break;
- case "specialty_holdbreath":
- break;
- }
- }
- if (player maps\_laststand::player_is_in_laststand() )
- {
- continue;
- }
- if(player in_revive_trigger())
- {
- continue;
- }
- if( player isThrowingGrenade() )
- {
- wait( 0.1 );
- continue;
- }
- if( player isSwitchingWeapons() )
- {
- wait(0.1);
- continue;
- }
- if ( player HasPerk( perk ) )
- {
- cheat = false;
- /#
- if ( GetDVarInt( "zombie_cheat" ) >= 5 )
- {
- cheat = true;
- }
- #/
- if ( cheat != true )
- {
- //player iprintln( "Already using Perk: " + perk );
- self playsound("deny");
- //player thread play_no_money_perk_dialog();
- continue;
- }
- }
- if ( player.score < cost )
- {
- //player iprintln( "Not enough points to buy Perk: " + perk );
- self playsound("deny");
- continue;
- }
- sound = "bottle_dispense3d";
- playsoundatposition(sound, self.origin);
- player maps\_zombiemode_score::minus_to_player_score( cost );
- ///bottle_dispense
- switch( perk )
- {
- case "specialty_armorvest":
- sound = "mx_jugger_sting";
- break;
- case "specialty_quickrevive":
- sound = "mx_revive_sting";
- break;
- case "specialty_fastreload":
- sound = "mx_speed_sting";
- break;
- case "specialty_rof":
- sound = "mx_doubletap_sting";
- break;
- default:
- sound = "mx_jugger_sting";
- break;
- }
- self thread play_vendor_stings(sound);
- // self waittill("sound_done");
- // do the drink animation
- gun = player perk_give_bottle_begin( perk );
- player.is_drinking = 1;
- player waittill_any( "fake_death", "death", "player_downed", "weapon_change_complete" );
- // restore player controls and movement
- player perk_give_bottle_end( gun, perk );
- player.is_drinking = undefined;
- // TODO: race condition?
- if ( player maps\_laststand::player_is_in_laststand() )
- {
- continue;
- }
- player SetPerk( perk );
- player setblur( 4, 0.1 );
- wait(0.1);
- player setblur(0, 0.1);
- //earthquake (0.4, 0.2, self.origin, 100);
- if(perk == "specialty_armorvest")
- {
- player.maxhealth = level.zombie_vars["zombie_perk_juggernaut_health"];
- player.health = level.zombie_vars["zombie_perk_juggernaut_health"];
- //player.health = 160;
- }
- player perk_hud_create( perk );
- //stat tracking
- player.stats["perks"]++;
- //player iprintln( "Bought Perk: " + perk );
- bbPrint( "zombie_uses: playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type perk",
- player.playername, player.score, level.round_number, cost, perk, self.origin );
- player thread perk_think( perk );
- }
- }
- check_player_has_perk(perk)
- {
- /#
- if ( GetDVarInt( "zombie_cheat" ) >= 5 )
- {
- return;
- }
- #/
- dist = 128 * 128;
- while(true)
- {
- players = get_players();
- for( i = 0; i < players.size; i++ )
- {
- if(DistanceSquared( players[i].origin, self.origin ) < dist)
- {
- if(!players[i] hasperk(perk) && !(players[i] in_revive_trigger()))
- {
- //PI CHANGE: this change makes it so that if there are multiple players within the trigger for the perk machine, the hint string is still
- // visible to all of them, rather than the last player this check is done for
- if (IsDefined(level.script) && level.script == "nazi_zombie_theater")
- self setinvisibletoplayer(players[i], false);
- else
- self setvisibletoplayer(players[i]);
- //END PI CHANGE
- //iprintlnbold("turn it off to player");
- }
- else
- {
- self SetInvisibleToPlayer(players[i]);
- //iprintlnbold(players[i].health);
- }
- }
- }
- wait(0.1);
- }
- }
- vending_set_hintstring( perk )
- {
- switch( perk )
- {
- case "specialty_armorvest":
- self SetHintString( &"ZOMBIE_PERK_JUGGERNAUT" );
- break;
- case "specialty_quickrevive":
- self SetHintString( &"ZOMBIE_PERK_QUICKREVIVE" );
- break;
- case "specialty_fastreload":
- self SetHintString( &"ZOMBIE_PERK_FASTRELOAD" );
- break;
- case "specialty_rof":
- self SetHintString( &"ZOMBIE_PERK_DOUBLETAP" );
- break;
- case "specialty_fixzpop":
- self SetHintString( "Press & hold &&1 to buy Fixz Pop [Cost: 3500]" );
- break;
- default:
- self SetHintString( perk + " Cost: " + level.zombie_vars["zombie_perk_cost"] );
- break;
- }
- }
- perk_think( perk )
- {
- /#
- if ( GetDVarInt( "zombie_cheat" ) >= 5 )
- {
- if ( IsDefined( self.perk_hud[ perk ] ) )
- {
- return;
- }
- }
- #/
- self waittill_any( "fake_death", "death", "player_downed" );
- self UnsetPerk( perk );
- self.maxhealth = 100;
- self perk_hud_destroy( perk );
- //self iprintln( "Perk Lost: " + perk );
- }
- perk_hud_create( perk )
- {
- if ( !IsDefined( self.perk_hud ) )
- {
- self.perk_hud = [];
- }
- /#
- if ( GetDVarInt( "zombie_cheat" ) >= 5 )
- {
- if ( IsDefined( self.perk_hud[ perk ] ) )
- {
- return;
- }
- }
- #/
- shader = "";
- switch( perk )
- {
- case "specialty_armorvest":
- shader = "specialty_juggernaut_zombies";
- break;
- case "specialty_quickrevive":
- shader = "specialty_quickrevive_zombies";
- break;
- case "specialty_fastreload":
- shader = "specialty_fastreload_zombies";
- break;
- case "specialty_rof":
- shader = "specialty_doubletap_zombies";
- break;
- case "specialty_boost":
- shader = "specialty_boost";
- break;
- case "specialty_bulletdamage":
- shader = "specialty_bulletdamage";
- break;
- case "specialty_extraammo":
- shader = "zct_fast_rebuild";
- break;
- case "specialty_holdbreath":
- shader = "zct_self_defense";
- break;
- default:
- shader = "";
- break;
- }
- hud = create_simple_hud( self );
- hud.foreground = true;
- hud.sort = 1;
- hud.hidewheninmenu = false;
- hud.alignX = "left";
- hud.alignY = "bottom";
- hud.horzAlign = "left";
- hud.vertAlign = "bottom";
- hud.x = 45;
- hud.y = hud.y - 70;
- self thread perk_shuffle_hud();
- hud.alpha = 1;
- hud SetShader( shader, 64, 64 );
- hud MoveOverTime(2);
- hud.x = 5;
- hud ScaleOverTime( 2, 24, 24 );
- self.perk_hud[ perk ] = hud;
- }
- perk_shuffle_hud()
- {
- // custom function to move the perks up.
- keys = GetArrayKeys( self.perk_hud );
- for(i=0; i<keys.size; i++)
- {
- self.perk_hud[keys[i]] MoveOverTime(2);
- self.perk_hud[keys[i]].y = self.perk_hud[keys[i]].y - 30;
- }
- }
- perk_hud_destroy( perk )
- {
- self.perk_hud[ perk ] destroy_hud();
- self.perk_hud[ perk ] = undefined;
- }
- perk_give_bottle_begin( perk )
- {
- self DisableOffhandWeapons();
- self DisableWeaponCycling();
- self AllowLean( false );
- self AllowAds( false );
- self AllowSprint( false );
- self AllowProne( false );
- self AllowMelee( false );
- wait( 0.05 );
- if ( self GetStance() == "prone" )
- {
- self SetStance( "crouch" );
- }
- gun = self GetCurrentWeapon();
- weapon = "";
- switch( perk )
- {
- case "specialty_armorvest":
- weapon = "zombie_perk_bottle_jugg";
- break;
- case "specialty_quickrevive":
- weapon = "zombie_perk_bottle_revive";
- break;
- case "specialty_fastreload":
- weapon = "zombie_perk_bottle_sleight";
- break;
- case "specialty_rof":
- weapon = "zombie_perk_bottle_doubletap";
- break;
- case "specialty_bulletdamage":
- weapon = "zombie_perk_bottle_fixzpop";
- break;
- case "specialty_boost":
- weapon = "zombie_perk_bottle_fixzpop";
- break;
- case "specialty_extraammo":
- weapon = "zombie_perk_bottle_fixzpop";
- break;
- case "specialty_holdbreath":
- weapon = "zombie_perk_bottle_fixzpop";
- break;
- }
- self GiveWeapon( weapon );
- self SwitchToWeapon( weapon );
- return gun;
- }
- perk_give_bottle_end( gun, perk )
- {
- assert( gun != "zombie_perk_bottle_doubletap" );
- assert( gun != "zombie_perk_bottle_revive" );
- assert( gun != "zombie_perk_bottle_jugg" );
- assert( gun != "zombie_perk_bottle_fixzpop" );
- assert( gun != "zombie_perk_bottle_sleight" );
- assert( gun != "syrette" );
- self EnableOffhandWeapons();
- self EnableWeaponCycling();
- self AllowLean( true );
- self AllowAds( true );
- self AllowSprint( true );
- self AllowProne( true );
- self AllowMelee( true );
- weapon = "";
- switch( perk )
- {
- case "specialty_armorvest":
- weapon = "zombie_perk_bottle_jugg";
- break;
- case "specialty_quickrevive":
- weapon = "zombie_perk_bottle_revive";
- break;
- case "specialty_fastreload":
- weapon = "zombie_perk_bottle_sleight";
- break;
- case "specialty_rof":
- weapon = "zombie_perk_bottle_doubletap";
- break;
- case "specialty_bulletdamage":
- weapon = "zombie_perk_bottle_fixzpop";
- break;
- case "specialty_boost":
- weapon = "zombie_perk_bottle_fixzpop";
- break;
- case "specialty_extraammo":
- weapon = "zombie_perk_bottle_fixzpop";
- break;
- case "specialty_holdbreath":
- weapon = "zombie_perk_bottle_fixzpop";
- break;
- }
- // TODO: race condition?
- if ( self maps\_laststand::player_is_in_laststand() )
- {
- self TakeWeapon(weapon);
- return;
- }
- if ( gun != "none" && gun != "mine_bouncing_betty" )
- {
- self SwitchToWeapon( gun );
- }
- else
- {
- // try to switch to first primary weapon
- primaryWeapons = self GetWeaponsListPrimaries();
- if( IsDefined( primaryWeapons ) && primaryWeapons.size > 0 )
- {
- self SwitchToWeapon( primaryWeapons[0] );
- }
- }
- self TakeWeapon(weapon);
- }
- machine_watcher()
- {
- //level waittill("master_switch_activated");
- }
- play_vendor_stings(sound)
- {
- if(!IsDefined (level.speed_jingle))
- {
- level.speed_jingle = 0;
- }
- if(!IsDefined (level.revive_jingle))
- {
- level.revive_jingle = 0;
- }
- if(!IsDefined (level.doubletap_jingle))
- {
- level.doubletap_jingle = 0;
- }
- if(!IsDefined (level.jugger_jingle))
- {
- level.jugger_jingle = 0;
- }
- if(!IsDefined (level.packa_jingle))
- {
- level.packa_jingle = 0;
- }
- if(!IsDefined (level.eggs))
- {
- level.eggs = 0;
- }
- if (level.eggs == 0)
- {
- if(sound == "mx_speed_sting" && level.speed_jingle == 0 )
- {
- // iprintlnbold("stinger speed:" + level.speed_jingle);
- level.speed_jingle = 1;
- temp_org_speed_s = spawn("script_origin", self.origin);
- temp_org_speed_s playsound (sound, "sound_done");
- temp_org_speed_s waittill("sound_done");
- level.speed_jingle = 0;
- temp_org_speed_s delete();
- // iprintlnbold("stinger speed:" + level.speed_jingle);
- }
- else if(sound == "mx_revive_sting" && level.revive_jingle == 0)
- {
- level.revive_jingle = 1;
- // iprintlnbold("stinger revive:" + level.revive_jingle);
- temp_org_revive_s = spawn("script_origin", self.origin);
- temp_org_revive_s playsound (sound, "sound_done");
- temp_org_revive_s waittill("sound_done");
- level.revive_jingle = 0;
- temp_org_revive_s delete();
- // iprintlnbold("stinger revive:" + level.revive_jingle);
- }
- else if(sound == "mx_doubletap_sting" && level.doubletap_jingle == 0)
- {
- level.doubletap_jingle = 1;
- // iprintlnbold("stinger double:" + level.doubletap_jingle);
- temp_org_dp_s = spawn("script_origin", self.origin);
- temp_org_dp_s playsound (sound, "sound_done");
- temp_org_dp_s waittill("sound_done");
- level.doubletap_jingle = 0;
- temp_org_dp_s delete();
- // iprintlnbold("stinger double:" + level.doubletap_jingle);
- }
- else if(sound == "mx_jugger_sting" && level.jugger_jingle == 0)
- {
- level.jugger_jingle = 1;
- // iprintlnbold("stinger juggernog" + level.jugger_jingle);
- temp_org_jugs_s = spawn("script_origin", self.origin);
- temp_org_jugs_s playsound (sound, "sound_done");
- temp_org_jugs_s waittill("sound_done");
- level.jugger_jingle = 0;
- temp_org_jugs_s delete();
- // iprintlnbold("stinger juggernog:" + level.jugger_jingle);
- }
- else if(sound == "mx_packa_sting" && level.packa_jingle == 0)
- {
- level.packa_jingle = 1;
- // iprintlnbold("stinger packapunch:" + level.packa_jingle);
- temp_org_pack_s = spawn("script_origin", self.origin);
- temp_org_pack_s playsound (sound, "sound_done");
- temp_org_pack_s waittill("sound_done");
- level.packa_jingle = 0;
- temp_org_pack_s delete();
- // iprintlnbold("stinger packapunch:" + level.packa_jingle);
- }
- }
- }
- perks_a_cola_jingle()
- {
- self thread play_random_broken_sounds();
- if(!IsDefined(self.perk_jingle_playing))
- {
- self.perk_jingle_playing = 0;
- }
- if (!IsDefined (level.eggs))
- {
- level.eggs = 0;
- }
- while(1)
- {
- //wait(randomfloatrange(60, 120));
- wait(randomfloatrange(31,45));
- if(randomint(100) < 15 && level.eggs == 0)
- {
- level notify ("jingle_playing");
- //playfx (level._effect["electric_short_oneshot"], self.origin);
- playsoundatposition ("electrical_surge", self.origin);
- if(self.script_sound == "mx_speed_jingle" && level.speed_jingle == 0)
- {
- level.speed_jingle = 1;
- temp_org_speed = spawn("script_origin", self.origin);
- wait(0.05);
- temp_org_speed playsound (self.script_sound, "sound_done");
- temp_org_speed waittill("sound_done");
- level.speed_jingle = 0;
- temp_org_speed delete();
- }
- if(self.script_sound == "mx_revive_jingle" && level.revive_jingle == 0)
- {
- level.revive_jingle = 1;
- temp_org_revive = spawn("script_origin", self.origin);
- wait(0.05);
- temp_org_revive playsound (self.script_sound, "sound_done");
- temp_org_revive waittill("sound_done");
- level.revive_jingle = 0;
- temp_org_revive delete();
- }
- if(self.script_sound == "mx_doubletap_jingle" && level.doubletap_jingle == 0)
- {
- level.doubletap_jingle = 1;
- temp_org_doubletap = spawn("script_origin", self.origin);
- wait(0.05);
- temp_org_doubletap playsound (self.script_sound, "sound_done");
- temp_org_doubletap waittill("sound_done");
- level.doubletap_jingle = 0;
- temp_org_doubletap delete();
- }
- if(self.script_sound == "mx_jugger_jingle" && level.jugger_jingle == 0)
- {
- level.jugger_jingle = 1;
- temp_org_jugger = spawn("script_origin", self.origin);
- wait(0.05);
- temp_org_jugger playsound (self.script_sound, "sound_done");
- temp_org_jugger waittill("sound_done");
- level.jugger_jingle = 0;
- temp_org_jugger delete();
- }
- if(self.script_sound == "mx_packa_jingle" && level.packa_jingle == 0)
- {
- level.packa_jingle = 1;
- temp_org_packa = spawn("script_origin", self.origin);
- temp_org_packa playsound (self.script_sound, "sound_done");
- temp_org_packa waittill("sound_done");
- level.packa_jingle = 0;
- temp_org_packa delete();
- }
- self thread play_random_broken_sounds();
- }
- }
- }
- play_random_broken_sounds()
- {
- level endon ("jingle_playing");
- if (!isdefined (self.script_sound))
- {
- self.script_sound = "null";
- }
- if (self.script_sound == "mx_revive_jingle")
- {
- while(1)
- {
- wait(randomfloatrange(7, 18));
- playsoundatposition ("broken_random_jingle", self.origin);
- //playfx (level._effect["electric_short_oneshot"], self.origin);
- playsoundatposition ("electrical_surge", self.origin);
- }
- }
- else
- {
- while(1)
- {
- wait(randomfloatrange(7, 18));
- // playfx (level._effect["electric_short_oneshot"], self.origin);
- playsoundatposition ("electrical_surge", self.origin);
- }
- }
- }
- set_perk_time( perk, perk_string )
- {
- time = RandomIntRange( 30, 60 );
- self iprintln( "You got " + perk_string + " for " + time + " seconds!" );
- self SetPerk( perk );
- self setblur( 4, 0.1 );
- wait(0.1);
- self setblur(0, 0.1);
- if(perk == "specialty_armorvest")
- {
- self.maxhealth = 160;
- self.health = 160;
- }
- self perk_hud_create( perk );
- self thread perk_think( perk );
- wait( time );
- self UnsetPerk( perk );
- self.maxhealth = 100;
- self perk_hud_destroy( perk );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement