Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include maps\_utility;
- #include common_scripts\utility;
- #include maps\_zombiemode_utility;
- /* ==================== Credits ==================== //
- HyperFirez - Made the script.
- Harrybo21 - Tips on scripting.
- NG Caudle - Bug Fixes.
- Scobulua - Teaching me how to use 1 weapon file for the bottles.
- Mentality - Teaching me how to use 1 weapon file for the bottles.
- // ================================================= */
- // ===================== Init ====================== //
- init()
- {
- vending_triggers = GetEntArray( "zombie_vending", "targetname" );
- revive_trig = GetEnt("quick_revive_trig", "targetname");
- level.temp_org_revive = spawn("script_origin", revive_trig.origin);
- if ( vending_triggers.size < 1 )
- {
- return;
- }
- vending_upgrade_trigger = GetEntArray("zombie_vending_upgrade", "targetname");
- if ( vending_upgrade_trigger.size >= 1 )
- {
- array_thread( vending_upgrade_trigger, ::vending_upgrade );;
- }
- // Precaching Models, Bottles, Shaders and Effects
- PrecacheItem( "zombie_perk_bottle" );
- PrecacheItem( "zombie_knuckle_crack" );
- PrecacheShader( "specialty_juggernaut_zombies" );
- PrecacheShader( "specialty_fastreload_zombies" );
- PrecacheShader( "specialty_doubletap_zombies" );
- PrecacheShader( "specialty_quickrevive_zombies" );
- PrecacheShader( "specialty_phd_zombies" );
- PrecacheShader( "specialty_stamin_zombies" );
- PrecacheShader( "specialty_mule_zombies" );
- PrecacheShader( "specialty_deadshot_zombies" );
- PrecacheShader( "specialty_tomb_zombies" );
- PrecacheShader( "specialty_chugabud_zombies" );
- PrecacheShader( "specialty_cherry_zombies" );
- PrecacheShader( "specialty_vulture_aid_zombies" );
- PrecacheShader( "specialty_wunderfizz_zombies" );
- //PrecacheShader( "specialty_widows_wine_zombies" );
- // Items
- PrecacheModel("zombie_vending_jugg_on");
- PrecacheModel("zombie_vending_doubletap_on");
- PrecacheModel("zombie_vending_revive_on");
- PrecacheModel("zombie_vending_sleight_on");
- PrecacheModel("zombie_vending_phd_on");
- PrecacheModel("zombie_vending_stamin_on");
- PrecacheModel("zombie_vending_mule_on");
- PrecacheModel("zombie_vending_deadshot_on");
- PrecacheModel("zombie_vending_tomb_on");
- PrecacheModel("zombie_vending_chugabud_on");
- PrecacheModel("zombie_vending_cherry_on");
- PrecacheModel("zombie_vending_vulture_aid_on");
- PrecacheModel("zombie_vending_wunderfizz_on");
- //PrecacheModel("zombie_vending_widows_wine_on");
- PrecacheModel("zombie_vending_packapunch_on");
- 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["packapunch_fx"] = loadfx("maps/zombie/fx_zombie_packapunch");
- if( !isDefined( level.packapunch_timeout ) )
- {
- level.packapunch_timeout = 15;
- }
- PrecacheString( &"ZOMBIE_PERK_JUGGERNAUT" );
- PrecacheString( &"ZOMBIE_PERK_QUICKREVIVE" );
- PrecacheString( &"ZOMBIE_PERK_FASTRELOAD" );
- PrecacheString( &"ZOMBIE_PERK_DOUBLETAP" );
- PrecacheString( &"ZOMBIE_PERK_PACKAPUNCH" );
- set_zombie_var( "zombie_perk_cost", 2500 );
- set_zombie_var( "zombie_perk_juggernaut_health", 280 );
- array_thread( vending_triggers, :: vending_trigger_think );
- array_thread( vending_triggers, :: electric_perks_dialog );
- revive_trig thread vending_trigger_think();
- revive_trig thread electric_perks_dialog();
- level thread turn_jugger_on();
- level thread turn_doubletap_on();
- level thread turn_sleight_on();
- level thread turn_revive_on();
- level thread turn_phd_flopper_on();
- level thread turn_mule_kick_on();
- level thread turn_staminup_on();
- level thread turn_deadshot_on();
- level thread turn_tomb_on();
- level thread turn_chugabud_on();
- level thread turn_cherry_on();
- level thread turn_vulture_aid_on();
- level thread turn_wunderfizz_on();
- //level thread turn_widows_wine_on();
- level thread turn_PackAPunch_on();
- // Threading Perk Functions
- level thread machine_watcher();
- level.jugger_jingle = 1;
- level.speed_jingle = 1;
- level.revive_jingle = 1;
- level.doubletap_jingle = 1;
- level.phd_jingle = 1;
- level.stamin_jingle = 1;
- level.mule_jingle = 1;
- level.deadshot_jingle = 1;
- level.tomb_jingle = 1;
- level.chugabud_jingle = 1;
- level.cherry_jingle = 1;
- level.vulture_aid_jingle = 1;
- //level.widows_wine_jingle = 1;
- level.packa_jingle = 1;
- }
- third_person_weapon_upgrade( current_weapon, origin, angles, packa_rollers, perk_machine )
- {
- forward = anglesToForward( angles );
- interact_pos = origin + (forward*-25);
- worldgun = spawn( "script_model", interact_pos );
- worldgun.angles = self.angles;
- worldgun setModel( GetWeaponModel( current_weapon ) );
- PlayFx( level._effect["packapunch_fx"], origin+(0,1,-34), forward );
- worldgun rotateto( angles+(0,90,0), 0.35, 0, 0 );
- wait( 0.5 );
- worldgun moveto( origin, 0.5, 0, 0 );
- packa_rollers playsound( "packa_weap_upgrade" );
- if( isDefined( perk_machine.wait_flag ) )
- {
- perk_machine.wait_flag rotateto( perk_machine.wait_flag.angles+(179, 0, 0), 0.25, 0, 0 );
- }
- wait( 0.35 );
- worldgun delete();
- wait( 3 );
- packa_rollers playsound( "packa_weap_ready" );
- worldgun = spawn( "script_model", origin );
- worldgun.angles = angles+(0,90,0);
- worldgun setModel( GetWeaponModel( current_weapon+"_upgraded" ) );
- worldgun moveto( interact_pos, 0.5, 0, 0 );
- if( isDefined( perk_machine.wait_flag ) )
- {
- perk_machine.wait_flag rotateto( perk_machine.wait_flag.angles-(179, 0, 0), 0.25, 0, 0 );
- }
- wait( 0.5 );
- worldgun moveto( origin, level.packapunch_timeout, 0, 0);
- return worldgun;
- }
- vending_upgrade()
- {
- perk_machine = GetEnt( self.target, "targetname" );
- if( isDefined( perk_machine.target ) )
- {
- perk_machine.wait_flag = GetEnt( perk_machine.target, "targetname" );
- }
- self UseTriggerRequireLookAt();
- self SetHintString( "The power must be activated first" );
- self SetCursorHint( "HINT_NOICON" );
- level waittill("Pack_A_Punch_on");
- self thread maps\_zombiemode_weapons::decide_hide_show_hint();
- packa_rollers = spawn("script_origin", self.origin);
- packa_timer = spawn("script_origin", self.origin);
- packa_rollers playloopsound("packa_rollers_loop");
- self SetHintString( "Press & hold &&1 to buy Pack A Punch Upgrade [Cost: 5000]" );
- cost = level.zombie_vars["zombie_perk_cost"];
- for( ;; )
- {
- self waittill( "trigger", player );
- index = maps\_zombiemode_weapons::get_player_index(player);
- cost = 5000;
- plr = "plr_" + index + "_";
- if( !player maps\_zombiemode_weapons::can_buy_weapon() )
- {
- wait( 0.1 );
- continue;
- }
- if (player maps\_laststand::player_is_in_laststand() )
- {
- wait( 0.1 );
- continue;
- }
- if( player isThrowingGrenade() )
- {
- wait( 0.1 );
- continue;
- }
- if( player isSwitchingWeapons() )
- {
- wait(0.1);
- continue;
- }
- current_weapon = player getCurrentWeapon();
- if( !IsDefined( level.zombie_include_weapons[current_weapon] ) || !IsDefined( level.zombie_include_weapons[current_weapon + "_upgraded"] ) )
- {
- continue;
- }
- if(IsDefined(player.is_diving) && player.is_diving)
- continue;
- if ( player.score < cost )
- {
- //player iprintln( "Not enough points to buy Perk: " + perk );
- self playsound("deny");
- player thread play_no_money_perk_dialog();
- continue;
- }
- player maps\_zombiemode_score::minus_to_player_score( cost );
- self achievement_notify("perk_used");
- sound = "bottle_dispense3d";
- playsoundatposition(sound, self.origin);
- rand = randomintrange(1,100);
- if( rand <= 8 )
- {
- player thread play_packa_wait_dialog(plr);
- }
- self thread play_vendor_stings("mx_packa_sting");
- origin = self.origin;
- angles = self.angles;
- if( isDefined(perk_machine))
- {
- origin = perk_machine.origin+(0,0,35);
- angles = perk_machine.angles+(0,90,0);
- }
- self disable_trigger();
- player thread do_knuckle_crack();
- self.current_weapon = current_weapon;
- weaponmodel = player third_person_weapon_upgrade( current_weapon, origin, angles, packa_rollers, perk_machine );
- self enable_trigger();
- self SetHintString( "Press & Hold &&1 to take your upgraded weapon" );
- self setvisibletoplayer( player );
- self thread wait_for_player_to_take( player, current_weapon, packa_timer );
- self thread wait_for_timeout( packa_timer );
- self waittill_either( "pap_timeout", "pap_taken" );
- self.current_weapon = "";
- weaponmodel delete();
- self SetHintString( "Press & hold &&1 to Upgrade Weapon [Cost: 5000]" );
- self setvisibletoall();
- }
- }
- wait_for_player_to_take( player, weapon, packa_timer )
- {
- index = maps\_zombiemode_weapons::get_player_index(player);
- plr = "plr_" + index + "_";
- self endon( "pap_timeout" );
- while( true )
- {
- packa_timer playloopsound( "ticktock_loop" );
- self waittill( "trigger", trigger_player );
- packa_timer stoploopsound(.05);
- if( trigger_player == player )
- {
- if( !player maps\_laststand::player_is_in_laststand() )
- {
- self notify( "pap_taken" );
- primaries = player GetWeaponsListPrimaries();
- if( isDefined( primaries ) && primaries.size >= 2 )
- {
- player maps\_zombiemode_weapons::weapon_give( weapon+"_upgraded" );
- }
- else
- {
- player GiveWeapon( weapon+"_upgraded" );
- player GiveMaxAmmo( weapon+"_upgraded" );
- }
- player SwitchToWeapon( weapon+"_upgraded" );
- player achievement_notify( "DLC3_ZOMBIE_PAP_ONCE" );
- player achievement_notify( "DLC3_ZOMBIE_TWO_UPGRADED" );
- player thread play_packa_get_dialog(plr);
- return;
- }
- }
- wait( 0.05 );
- }
- }
- wait_for_timeout( packa_timer )
- {
- self endon( "pap_taken" );
- wait( level.packapunch_timeout );
- self notify( "pap_timeout" );
- packa_timer stoploopsound(.05);
- packa_timer playsound( "packa_deny" );
- }
- do_knuckle_crack()
- {
- gun = self upgrade_knuckle_crack_begin();
- self.is_drinking = 1;
- self waittill_any( "fake_death", "death", "player_downed", "weapon_change_complete" );
- self upgrade_knuckle_crack_end( gun );
- self.is_drinking = undefined;
- }
- upgrade_knuckle_crack_begin()
- {
- self DisableOffhandWeapons();
- self DisableWeaponCycling();
- self AllowLean( false );
- self AllowAds( false );
- self AllowSprint( false );
- self AllowProne( false );
- self AllowMelee( false );
- if ( self GetStance() == "prone" )
- {
- self SetStance( "crouch" );
- }
- primaries = self GetWeaponsListPrimaries();
- gun = self GetCurrentWeapon();
- weapon = "zombie_knuckle_crack";
- if ( gun != "none" && gun != "claymore_zm" )
- {
- self TakeWeapon( gun );
- }
- else
- {
- return;
- }
- if( primaries.size <= 1 )
- {
- self GiveWeapon( "zombie_colt" );
- }
- self GiveWeapon( weapon );
- self SwitchToWeapon( weapon );
- return gun;
- }
- upgrade_knuckle_crack_end( gun )
- {
- assert( gun != "zombie_perk_bottle" );
- assert( gun != "syrette" );
- self EnableOffhandWeapons();
- self EnableWeaponCycling();
- self AllowLean( true );
- self AllowAds( true );
- self AllowSprint( true );
- self AllowProne( true );
- self AllowMelee( true );
- weapon = "zombie_knuckle_crack";
- // TODO: race condition?
- if ( self maps\_laststand::player_is_in_laststand() )
- {
- self TakeWeapon(weapon);
- return;
- }
- self TakeWeapon(weapon);
- primaries = self GetWeaponsListPrimaries();
- if( isDefined( primaries ) && primaries.size > 0 )
- {
- self SwitchToWeapon( primaries[0] );
- }
- else
- {
- self SwitchToWeapon( "zombie_colt" );
- }
- }
- turn_PackAPunch_on()
- {
- level waittill("Pack_A_Punch_on");
- vending_upgrade_trigger = GetEntArray("zombie_vending_upgrade", "targetname");
- for(i=0; i<vending_upgrade_trigger.size; i++ )
- {
- perk = getent(vending_upgrade_trigger[i].target, "targetname");
- if(isDefined(perk))
- {
- perk thread activate_PackAPunch();
- }
- }
- }
- activate_PackAPunch()
- {
- self setmodel("zombie_vending_packapunch_on");
- self playsound("perks_power_on");
- self vibrate((0,-100,0), 0.3, 0.4, 3);
- timer = 0;
- duration = 0.05;
- level notify( "Carpenter_On" );
- }
- turn_sleight_on()
- {
- machine = getentarray("vending_sleight", "targetname");
- flag_wait("electricity_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_sleight_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()
- {
- revive_machine = GetEnt("vending_revive", "targetname");
- solo_trig = getent("specialty_quickrevive", "script_noteworthy");
- flag_wait( "all_players_connected" );
- players = get_players();
- if(players.size == 1)
- solo_trig SetHintString( "Press & hold @ to buy Quick Revive [Cost: 500]" );
- else
- flag_wait("electricity_on");
- revive_machine setmodel("zombie_vending_revive_on");
- revive_machine playsound("perks_power_on");
- revive_machine vibrate((0,-100,0), 0.3, 0.4, 3);
- revive_machine thread perk_fx( "revive_light" );
- level notify( "specialty_quickrevive_power_on" );
- }
- turn_jugger_on()
- {
- machine = getentarray("vending_jugg", "targetname");
- flag_wait("electricity_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] vibrate((0,-100,0), 0.3, 0.4, 3);
- machine[i] setmodel("zombie_vending_jugg_on");
- 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");
- flag_wait("electricity_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_doubletap_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_phd_flopper_on()
- {
- machine = getentarray("vending_phd_flopper", "targetname");
- flag_wait("electricity_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_phd_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_detectexplosive_power_on" );
- }
- turn_staminup_on()
- {
- machine = getentarray("vending_staminup", "targetname");
- flag_wait("electricity_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_stamin_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_longersprint_power_on" );
- }
- turn_mule_kick_on()
- {
- machine = getentarray("vending_mule_kick", "targetname");
- flag_wait("electricity_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_mule_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_extraammo_power_on" );
- }
- turn_deadshot_on()
- {
- machine = getentarray("vending_deadshot", "targetname");
- flag_wait("electricity_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_deadshot_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_bulletaccuracy_power_on" );
- }
- turn_tomb_on()
- {
- machine = getentarray("vending_tomb", "targetname");
- flag_wait("electricity_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_tomb_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_reconnaissance_power_on" );
- }
- turn_chugabud_on()
- {
- machine = getentarray("vending_chugabud", "targetname");
- flag_wait("electricity_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_chugabud_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_shades_power_on" );
- }
- turn_cherry_on()
- {
- machine = getentarray("vending_cherry", "targetname");
- flag_wait("electricity_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_cherry_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_boost_power_on" );
- }
- turn_vulture_aid_on()
- {
- machine = getentarray("vending_vulture_aid", "targetname");
- flag_wait("electricity_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_vulture_aid_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_ordinance_power_on" );
- }
- turn_wunderfizz_on()
- {
- machine = getentarray("vending_wunderfizz", "targetname");
- flag_wait("electricity_on");
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] setmodel("zombie_vending_wunderfizz_on");
- machine[i] vibrate((0,-100,0), 0.3, 0.4, 3);
- machine[i] playsound("perks_power_on");
- machine[i] thread perk_fx( "revive_light" );
- }
- level notify( "wunderfizz_power_on" );
- }
- perk_fx( fx )
- {
- wait(3);
- playfxontag( level._effect[ fx ], self, "tag_origin" );
- }
- electric_perks_dialog()
- {
- self endon ("warning_dialog");
- level endon("switch_flipped");
- timer =0;
- while(1)
- {
- wait(0.5);
- players = get_players();
- for(i = 0; i < players.size; i++)
- {
- dist = distancesquared(players[i].origin, self.origin );
- if(dist > 70*70)
- {
- timer = 0;
- continue;
- }
- if(dist < 70*70 && timer < 3)
- {
- wait(0.5);
- timer ++;
- }
- if(dist < 70*70 && timer == 3)
- {
- players[i] thread do_player_vo("vox_start", 5);
- wait(3);
- self notify ("warning_dialog");
- iprintlnbold("warning_given");
- }
- }
- }
- }
- vending_trigger_think()
- {
- //self thread turn_cola_off();
- perk = self.script_noteworthy;
- self.timesUsed = 0;
- self SetHintString( &"ZOMBIE_FLAMES_UNAVAILABLE" );
- self SetCursorHint( "HINT_NOICON" );
- self UseTriggerRequireLookAt();
- flag_wait("electricity_on");
- //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 );
- //iprintlnbold("triggered by " + player.playername);
- index = maps\_zombiemode_weapons::get_player_index(player);
- cost = level.zombie_vars["zombie_perk_cost"];
- switch( perk )
- {
- case "specialty_armorvest":
- cost = 2500;
- break;
- case "specialty_quickrevive":
- players = get_players();
- if (players.size == 1)
- cost = 500;
- else
- cost = 1500;
- break;
- case "specialty_fastreload":
- cost = 3000;
- break;
- case "specialty_rof":
- cost = 2000;
- break;
- case "specialty_detectexplosive": // phd flopper
- cost = 2000;
- break;
- case "specialty_longersprint": // staminup
- cost = 2000;
- break;
- case "specialty_extraammo": // mule kick
- cost = 4000;
- break;
- case "specialty_bulletaccuracy": // deadshot
- cost = 1000;
- break;
- case "specialty_reconnaissance": // tombstone
- if (player.size == 1)
- cost = 1000;
- else
- cost = 2000;
- break;
- case "specialty_shades": // who's who?
- cost = 2000;
- break;
- case "specialty_boost": // electric cherry
- cost = 2000;
- break;
- case "specialty_ordinance": // vulture aid
- cost = 2000;
- break;
- }
- if (player maps\_laststand::player_is_in_laststand() )
- {
- //iprintlnbold("laststand");
- continue;
- }
- if(player in_revive_trigger())
- {
- //iprintlnbold("in revive trig");
- continue;
- }
- if( player isThrowingGrenade() )
- {
- //iprintlnbold("throwing nade");
- wait( 0.1 );
- continue;
- }
- if( player isSwitchingWeapons() )
- {
- //iprintlnbold("switching weapons");
- wait(0.1);
- continue;
- }
- /* if( player.vars["perk_count"] >= 4 )
- {
- //iprintlnbold ("perk count too big " + player.vars["perk_count"]);
- self playsound("deny");
- wait(0.1);
- continue;
- }*/
- if ( player HasPerk( perk ) )
- {
- cheat = false;
- /#
- if ( GetDVarInt( "zombie_cheat" ) >= 5 )
- {
- cheat = true;
- }
- #/
- if ( cheat != true )
- {
- //player iprintlnbold( "Already using Perk: " + perk );
- self playsound("deny");
- player thread play_no_money_perk_dialog();
- continue;
- }
- }
- if(IsDefined(player.is_diving) && player.is_diving)
- continue;
- if ( player.score < cost )
- {
- //player iprintlnbold( "Not enough points to buy Perk: " + perk );
- self playsound("deny");
- player thread play_no_money_perk_dialog();
- continue;
- }
- sound = "bottle_dispense3d";
- player achievement_notify( "perk_used" );
- 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;
- case "specialty_detectexplosive":
- sound = "mx_phd_flopper_sting";
- break;
- case "specialty_longersprint":
- sound = "mx_staminup_sting";
- break;
- case "specialty_bulletaccuracy":
- sound = "mx_deadshot_sting";
- break;
- case "specialty_extraammo":
- sound = "mx_three_guns_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 thread perk_vo(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;
- }
- if( (perk == "specialty_quickrevive") && ( !is_coop() ) )
- {
- player.vars["revive_count"]++;
- if( player.vars["revive_count"] == 3 )
- {
- self thread remove_revive();
- }
- }
- player perk_hud_create( perk );
- if(perk == "specialty_extraammo")
- {
- player thread mule_kick();
- }
- //stat tracking
- player.stats["perks"]++;
- player.vars["perk_count"]++;
- //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 );
- }
- }
- remove_revive()
- {
- revive_machine = GetEnt("vending_revive", "targetname");
- revive_trig = GetEnt("revive_perk", "script_string");
- revive_machine_clip = GetEnt("quick_revive_clip", "targetname");
- revive_bump = GetEnt( "revive_bump_trigger", "targetname");
- revive_sound = GetEnt( "perksacola_revive", "targetname");
- revive_hack = GetEnt( "hack_revive", "script_string");
- revive_stuff = getentarray("specialty_quickrevive", "script_noteworthy");
- for(i=0;i<revive_stuff.size;i++)
- revive_stuff[i] delete();
- players = GetPlayers();
- revive_trig delete();
- revive_hack delete();
- revive_bump delete();
- revive_sound delete();
- level.temp_org_revive delete();
- for(i=0;i<players.size;i++)
- players[i] playsound("laugh_child");
- revive_machine Vibrate( (50, 0, 0), 5, 0.5, 5 );
- revive_machine MoveZ( 35, 5 );
- revive_machine waittill("movedone");
- playfx(level._effect["poltergeist"], revive_machine.origin);
- playsoundatposition ("box_poof", revive_machine.origin);
- wait(0.1);
- revive_machine delete();
- revive_machine_clip delete();
- }
- play_no_money_perk_dialog()
- {
- index = maps\_zombiemode_weapons::get_player_index(self);
- player_index = "plr_" + index + "_";
- if(!IsDefined (self.vox_nomoney_perk))
- {
- num_variants = maps\_zombiemode_spawner::get_number_variants(player_index + "vox_nomoney_perk");
- self.vox_nomoney_perk = [];
- for(i=0;i<num_variants;i++)
- {
- self.vox_nomoney_perk[self.vox_nomoney_perk.size] = "vox_nomoney_perk_" + i;
- }
- self.vox_nomoney_perk_available = self.vox_nomoney_perk;
- }
- sound_to_play = random(self.vox_nomoney_perk_available);
- self.vox_nomoney_perk_available = array_remove(self.vox_nomoney_perk_available,sound_to_play);
- if (self.vox_nomoney_perk_available.size < 1 )
- {
- self.vox_nomoney_perk_available = self.vox_nomoney_perk;
- }
- self maps\_zombiemode_spawner::do_player_playdialog(player_index, sound_to_play, 0.25);
- }
- 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( "^1Press & hold &&1 to buy Jugger-Nog [Cost: 2500]^1" );
- break;
- case "specialty_quickrevive":
- self SetHintString( "Press & hold &&1 to buy Quick Revive [Cost: 1500]^5" );
- break;
- case "specialty_fastreload":
- self SetHintString( "Press & hold &&1 to buy Speed Cola [Cost: 3000]^2" );
- break;
- case "specialty_rof":
- self SetHintString( "Press & hold &&1 to buy Double Tap 2 Root Beer [Cost: 2000]^6" );
- break;
- case "specialty_detectexplosive":
- cost = 2000;
- self SetHintString( "Press & hold &&1 to buy PHD Flopper [Cost: 2000]" );
- break;
- case "specialty_longersprint":
- cost = 2000;
- self SetHintString( "Press & hold &&1 to buy Stamin-Up [Cost: 2000]" );
- break;
- case "specialty_extraammo":
- cost = 4000;
- self SetHintString( "Press & hold &&1 to buy Mule Kick [Cost: 4000]" );
- break;
- case "specialty_bulletaccuracy":
- cost = 1500;
- self SetHintString( "Press & hold &&1 to buy Deadshot Daiquiri [Cost: 1000]" );
- break;
- case "specialty_reconnaissance":
- cost = 2000;
- self SetHintString( "Press & hold &&1 to buy Tombstone Soda [Cost: 2000]" );
- break;
- case "specialty_shades":
- cost = 2000;
- self SetHintString( "Press & hold &&1 to buy Who's Who? [Cost: 2000]" );
- break;
- case "specialty_boost":
- cost = 2000;
- self SetHintString( "Press & hold &&1 to buy Electric Cherry [Cost: 2000]" );
- break;
- case "specialty_ordinance":
- cost = 2000;
- self SetHintString( "Press & hold &&1 to buy Vulture Aid [Cost: 2000]" );
- 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", "player_remove_perks" );
- self UnsetPerk( perk );
- self.maxhealth = 100;
- self perk_hud_destroy( perk );
- if(perk == "specialty_extraammo")
- self.vars["max_weap"] = 2;
- self.vars["perk_count"] = 0;
- //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_detectexplosive":
- shader = "specialty_phd_zombies";
- break;
- case "specialty_longersprint":
- shader = "specialty_stamin_zombies";
- break;
- case "specialty_extraammo":
- shader = "specialty_mule_zombies";
- break;
- case "specialty_bulletaccuracy":
- shader = "specialty_deadshot_zombies";
- break;
- case "specialty_reconnaissance":
- shader = "vending_tomb_shader";
- break;
- case "specialty_shades":
- shader = "vending_chugabud_shader";
- break;
- case "specialty_ordinance":
- shader = "vending_vulture_aid_shader";
- 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 = self.perk_hud.size * 30;
- hud.y = hud.y - 70;
- hud.alpha = 1;
- hud SetShader( shader, 24, 24 );
- self.perk_hud[ perk ] = hud;
- }
- 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 = "";
- //self GiveWeapon( "zombie_perk_bottle", weapon );
- //self SwitchToWeapon( "zombie_perk_bottle" );
- //self waittill_any( "fake_death", "death", "player_downed", "weapon_change_complete" );
- //self TakeWeapon( "zombie_perk_bottle" );
- //self SwitchToWeapon( gun );
- switch( perk )
- {
- case "specialty_armorvest":
- weapon = "zombie_perk_bottle";
- break;
- /*case "specialty_quickrevive":
- //weapon = "zombie_perk_bottle_jugg";
- break;
- case "specialty_fastreload":
- //weapon = "zombie_perk_bottle_jugg";
- break;
- case "specialty_rof":
- //weapon = "zombie_perk_bottle_jugg";
- break;
- case "specialty_detectexplosive":
- //weapon = "zombie_perk_bottle_jugg";
- break;
- case "specialty_longersprint":
- //weapon = "zombie_perk_bottle_jugg";
- break;
- case "specialty_extraammo":
- //weapon = "zombie_perk_bottle_jugg";
- break;
- case "specialty_bulletaccuracy":
- //weapon = "zombie_perk_bottle_jugg";
- break;
- case "specialty_reconnaissance":
- //weapon = "zombie_perk_bottle_jugg";
- break;
- case "specialty_shades":
- //weapon = "zombie_perk_bottle_jugg";
- break;
- case "specialty_boost":
- //weapon = "zombie_perk_bottle_jugg";
- break;
- case "specialty_ordinance":
- //weapon = "zombie_perk_bottle_jugg";
- break;*/
- }
- //self GiveWeapon( weapon );
- //self SwitchToWeapon( weapon );
- self GiveWeapon( "zombie_perk_bottle", weapon );
- self SwitchToWeapon( "zombie_perk_bottle" );
- return gun;
- }
- perk_give_bottle_end( gun, perk )
- {
- assert( gun != "zombie_perk_bottle" );
- assert( gun != "syrette" );
- self EnableOffhandWeapons();
- self EnableWeaponCycling();
- self AllowLean( true );
- self AllowAds( true );
- self AllowSprint( true );
- self AllowProne( true );
- self AllowMelee( true );
- //gun = self GetCurrentWeapon();
- weapon = "";
- switch( perk )
- {
- case "specialty_armorvest":
- weapon = "zombie_perk_bottle";
- 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);
- }
- perk_vo(type)
- {
- self endon("death");
- self endon("disconnect");
- index = maps\_zombiemode_weapons::get_player_index(self);
- sound = undefined;
- if(!isdefined (level.player_is_speaking))
- {
- level.player_is_speaking = 0;
- }
- player_index = "plr_" + index + "_";
- //wait(randomfloatrange(1,2));
- //TUEY We need to eventually store the dialog in an array so you can add multiple variants...but we only have 1 now anyway.
- switch(type)
- {
- case "specialty_armorvest":
- sound_to_play = "vox_perk_jugga_0";
- break;
- case "specialty_fastreload":
- sound_to_play = "vox_perk_speed_0";
- break;
- case "specialty_quickrevive":
- sound_to_play = "vox_perk_revive_0";
- break;
- case "specialty_rof":
- sound_to_play = "vox_perk_doubletap_0";
- break;
- case "specialty_detectexplosive":
- sound_to_play = "vox_perk_flopper_0";
- break;
- case "specialty_longersprint":
- sound_to_play = "vox_perk_staminup_0";
- break;
- case "specialty_extraammo":
- sound_to_play = "vox_perk_mulekick_0";
- break;
- case "specialty_bulletaccuracy":
- sound_to_play = "vox_perk_deadshot_0";
- break;
- default:
- sound_to_play = "vox_perk_jugga_0";
- break;
- }
- wait(1.0);
- self maps\_zombiemode_spawner::do_player_playdialog(player_index, sound_to_play, 0.25);
- }
- machine_watcher()
- {
- //PI ESM - support for two level switches for Factory
- if (isDefined(level.DLC3.perksNeedPowerOn) && level.DLC3.perksNeedPowerOn)
- {
- level thread machine_watcher_factory("juggernog_on");
- level thread machine_watcher_factory("sleight_on");
- level thread machine_watcher_factory("doubletap_on");
- level thread machine_watcher_factory("revive_on");
- level thread machine_watcher_factory("phd_flopper_on");
- level thread machine_watcher_factory("mule_kick_on");
- level thread machine_watcher_factory("deadshot_on");
- level thread machine_watcher_factory("staminup_on");
- level thread machine_watcher_factory("tomb_on");
- level thread machine_watcher_factory("chugabud_on");
- level thread machine_watcher_factory("cherry_on");
- level thread machine_watcher_factory("vulture_on");
- level thread machine_watcher_factory("Pack_A_Punch_on");
- }
- else
- {
- level waittill("master_switch_activated");
- //array_thread(getentarray( "zombie_vending", "targetname" ), ::perks_a_cola_jingle);
- }
- }
- //PI ESM - added for support for two switches in factory
- machine_watcher_factory(vending_name)
- {
- level waittill(vending_name);
- switch(vending_name)
- {
- case "juggernog_on":
- temp_script_sound = "mx_jugger_jingle";
- break;
- case "sleight_on":
- temp_script_sound = "mx_speed_jingle";
- break;
- case "doubletap_on":
- temp_script_sound = "mx_doubletap_jingle";
- break;
- case "revive_on":
- temp_script_sound = "mx_revive_jingle";
- break;
- case "phd_flopper_on":
- temp_script_sound = "mx_phd_flopper_jingle";
- break;
- case "staminup_on":
- temp_script_sound = "mx_staminup_jingle";
- break;
- case "mule_kick_on":
- temp_script_sound = "mx_three_guns_jingle";
- break;
- case "deadshot_on":
- temp_script_sound = "mx_deadshot_jingle";
- break;
- case "Pack_A_Punch_on":
- temp_script_sound = "mx_packa_jingle";
- break;
- default:
- temp_script_sound = "mx_jugger_jingle";
- break;
- }
- temp_machines = getstructarray("perksacola", "targetname");
- revive_machine = GetEnt("perksacola_revive", "targetname");
- for (x = 0; x < temp_machines.size; x++)
- {
- if (temp_machines[x].script_sound == temp_script_sound)
- temp_machines[x] thread perks_a_cola_jingle();
- }
- revive_machine thread perks_a_cola_jingle();
- }
- 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.phd_flopper_jingle))
- {
- level.phd_flopper_jingle = 0;
- }
- if(!IsDefined (level.staminup_jingle))
- {
- level.staminup_jingle = 0;
- }
- if(!IsDefined (level.mule_kick_jingle))
- {
- level.mule_kick_jingle = 0;
- }
- if(!IsDefined (level.deadshot_jingle))
- {
- level.deadshot_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 )
- {
- 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();
- }
- else if(sound == "mx_revive_sting" && level.revive_jingle == 0)
- {
- level.revive_jingle = 1;
- 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();
- }
- else if(sound == "mx_doubletap_sting" && level.doubletap_jingle == 0)
- {
- level.doubletap_jingle = 1;
- 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();
- }
- else if(sound == "mx_jugger_sting" && level.jugger_jingle == 0)
- {
- level.jugger_jingle = 1;
- 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();
- }
- else if(sound == "mx_phd_flopper_sting" && level.phd_flopper_jingle == 0)
- {
- level.phd_flopper_jingle = 1;
- temp_org_phd_s = spawn("script_origin", self.origin);
- temp_org_phd_s playsound (sound, "sound_done");
- temp_org_phd_s waittill("sound_done");
- level.phd_flopper_jingle = 0;
- temp_org_phd_s delete();
- }
- else if(sound == "mx_staminup_sting" && level.staminup_jingle == 0)
- {
- level.staminup_jingle = 1;
- temp_org_stam_s = spawn("script_origin", self.origin);
- temp_org_stam_s playsound (sound, "sound_done");
- temp_org_stam_s waittill("sound_done");
- level.staminup_jingle = 0;
- temp_org_stam_s delete();
- }
- else if(sound == "mx_deadshot_sting" && level.deadshot_jingle == 0)
- {
- level.deadshot_jingle = 1;
- temp_org_dead_s = spawn("script_origin", self.origin);
- temp_org_dead_s playsound (sound, "sound_done");
- temp_org_dead_s waittill("sound_done");
- level.deadshot_jingle = 0;
- temp_org_dead_s delete();
- }
- else if(sound == "mx_three_guns_sting" && level.mule_kick_jingle == 0)
- {
- level.mule_kick_jingle = 1;
- temp_org_mule_s = spawn("script_origin", self.origin);
- temp_org_mule_s playsound (sound, "sound_done");
- temp_org_mule_s waittill("sound_done");
- level.mule_kick_jingle = 0;
- temp_org_mule_s delete();
- }
- else if(sound == "mx_packa_sting" && level.packa_jingle == 0)
- {
- level.packa_jingle = 1;
- 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();
- }
- }
- }
- 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;
- level.temp_org_revive = spawn("script_origin", self.origin);
- wait(0.05);
- level.temp_org_revive playsound (self.script_sound, "sound_done");
- level.temp_org_revive waittill("sound_done");
- level.revive_jingle = 0;
- level.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_phd_flopper_jingle" && level.phd_flopper_jingle == 0)
- {
- level.phd_flopper_jingle = 1;
- temp_org_phd = spawn("script_origin", self.origin);
- wait(0.05);
- temp_org_phd playsound (self.script_sound, "sound_done");
- temp_org_phd waittill("sound_done");
- level.phd_flopper_jingle = 0;
- temp_org_phd delete();
- }
- if(self.script_sound == "mx_staminup_jingle" && level.staminup_jingle == 0)
- {
- level.staminup_jingle = 1;
- temp_org_stam = spawn("script_origin", self.origin);
- wait(0.05);
- temp_org_stam playsound (self.script_sound, "sound_done");
- temp_org_stam waittill("sound_done");
- level.staminup_jingle = 0;
- temp_org_stam delete();
- }
- if(self.script_sound == "mx_deadshot_jingle" && level.deadshot_jingle == 0)
- {
- level.deadshot_jingle = 1;
- temp_org_dead = spawn("script_origin", self.origin);
- wait(0.05);
- temp_org_dead playsound (self.script_sound, "sound_done");
- temp_org_dead waittill("sound_done");
- level.deadshot_jingle = 0;
- temp_org_dead delete();
- }
- if(self.script_sound == "mx_mule_kick_jingle" && level.mule_kick_jingle == 0)
- {
- level.mule_kick_jingle = 1;
- temp_org_mule = spawn("script_origin", self.origin);
- wait(0.05);
- temp_org_mule playsound (self.script_sound, "sound_done");
- temp_org_mule waittill("sound_done");
- level.mule_kick_jingle = 0;
- temp_org_mule 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);
- }
- }
- }
- play_packa_wait_dialog(player_index)
- {
- waittime = 0.05;
- if(!IsDefined (self.vox_perk_packa_wait))
- {
- num_variants = maps\_zombiemode_spawner::get_number_variants(player_index + "vox_perk_packa_wait");
- self.vox_perk_packa_wait = [];
- for(i=0;i<num_variants;i++)
- {
- self.vox_perk_packa_wait[self.vox_perk_packa_wait.size] = "vox_perk_packa_wait_" + i;
- }
- self.vox_perk_packa_wait_available = self.vox_perk_packa_wait;
- }
- if(!isdefined (level.player_is_speaking))
- {
- level.player_is_speaking = 0;
- }
- sound_to_play = random(self.vox_perk_packa_wait_available);
- self maps\_zombiemode_spawner::do_player_playdialog(player_index, sound_to_play, waittime);
- self.vox_perk_packa_wait_available = array_remove(self.vox_perk_packa_wait_available,sound_to_play);
- if (self.vox_perk_packa_wait_available.size < 1 )
- {
- self.vox_perk_packa_wait_available = self.vox_perk_packa_wait;
- }
- }
- play_packa_get_dialog(player_index)
- {
- waittime = 0.05;
- if(!IsDefined (self.vox_perk_packa_get))
- {
- num_variants = maps\_zombiemode_spawner::get_number_variants(player_index + "vox_perk_packa_get");
- self.vox_perk_packa_get = [];
- for(i=0;i<num_variants;i++)
- {
- self.vox_perk_packa_get[self.vox_perk_packa_get.size] = "vox_perk_packa_get_" + i;
- }
- self.vox_perk_packa_get_available = self.vox_perk_packa_get;
- }
- if(!isdefined (level.player_is_speaking))
- {
- level.player_is_speaking = 0;
- }
- sound_to_play = random(self.vox_perk_packa_get_available);
- self maps\_zombiemode_spawner::do_player_playdialog(player_index, sound_to_play, waittime);
- self.vox_perk_packa_get_available = array_remove(self.vox_perk_packa_get_available,sound_to_play);
- if (self.vox_perk_packa_get_available.size < 1 )
- {
- self.vox_perk_packa_get_available = self.vox_perk_packa_get;
- }
- }
- staminup()
- {
- players = GetPlayers();
- while(1)
- {
- for(i=0;i<players.size;i++)
- {
- if(players[i] hasperk("specialty_longersprint"))
- {
- players[i] setmovespeedscale(1.1);
- players[i] SetClientDVar("perk_sprintMultiplier", "2");
- }
- else
- {
- players[i] setmovespeedscale(1);
- players[i] SetClientDVar("perk_sprintMultiplier", "1");
- }
- }
- wait(0.1);
- }
- }
- mule_kick()
- {
- self.vars["max_weap"] = 3;
- self endon("mule");
- while(1)
- {
- player_load = self GetWeaponsListPrimaries();
- if(( !self HasPerk("specialty_extraammo") && player_load.size == 3 ))
- {
- self takeweapon( self.mule_weapon );
- guns = self GetWeaponsListPrimaries();
- if(!isdefined(self.customLastStand))
- self SwitchToWeapon( guns[0] );
- self notify("mule");
- self.mule_weapon = undefined;
- }
- wait_network_frame();
- }
- }
- deadshot()
- {
- players = Get_Players();
- while(1)
- {
- for(i=0;i<players.size;i++)
- {
- if(players[i] hasperk("specialty_bulletaccuracy"))
- {
- players[i] SetClientDVar("perk_weapSpreadMultiplier", "0.5");
- players[i] SetClientDVar("perk_extraBreath", "2");
- }
- else
- {
- players[i] SetClientDVar("perk_weapSpreadMultiplier", "1");
- players[i] SetClientDVar("perk_extraBreath", "1");
- }
- }
- wait(0.1);
- }
- }
- give_random_perk()
- {
- vending_triggers = GetEntArray( "zombie_vending", "targetname" );
- players = GetPlayers();
- perks = [];
- for ( i = 0; i < vending_triggers.size; i++ )
- {
- perk = vending_triggers[i].script_noteworthy;
- if ( isdefined( self.perk_purchased ) && self.perk_purchased == perk )
- {
- continue;
- }
- if( players.size > 1 && perk == "specialty_null")
- {
- continue;
- }
- if ( !self HasPerk( perk ) )
- {
- perks[ perks.size ] = perk;
- }
- }
- if ( perks.size > 0 )
- {
- perks = array_randomize( perks );
- self give_perk( perks[0] );
- }
- }
- give_perk( perk, bought )
- {
- self SetPerk( perk );
- if(perk == "specialty_armorvest")
- {
- self.maxhealth = level.zombie_vars["zombie_perk_juggernaut_health"];
- self.health = level.zombie_vars["zombie_perk_juggernaut_health"];
- }
- if(perk == "specialty_extraammo")
- {
- self thread mule_kick();
- }
- self perk_hud_create( perk );
- //stat tracking
- self.stats["perks"]++;
- self.vars["perk_count"]++;
- self thread perk_think( perk );
- }
- give_all_perks()
- {
- vending_triggers = GetEntArray( "zombie_vending", "targetname" );
- players = GetPlayers();
- perks = [];
- for ( i = 0; i < vending_triggers.size; i++ )
- {
- perk = vending_triggers[i].script_noteworthy;
- if ( isdefined( self.perk_purchased ) && self.perk_purchased == perk )
- {
- continue;
- }
- if ( !self HasPerk( perk ) )
- {
- self give_perk( perk );
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement