Files
IL-GSC/BO1/PC/ZM/clientscripts/_waw_zombie_mode.csc
2024-02-18 17:32:07 -05:00

131 lines
3.3 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include clientscripts\_music;
#include clientscripts\_utility;
createZombieEyes(localClientNum)
{
if(isdefined(self._eyeArray))
{
if(!isdefined(self._eyeArray[localClientNum]))
{
linkTag = "J_Eyeball_LE";
fxModel = "tag_origin";
fxTag = "tag_origin";
fx_eye_glow = Spawn( localClientNum, self GetTagOrigin( linkTag ), "script_model" );
fx_eye_glow.angles = self GetTagAngles( linkTag );
fx_eye_glow SetModel( fxModel );
fx_eye_glow LinkTo( self, linkTag );
PlayFxOnTag( localClientNum, level._effect["eye_glow"], fx_eye_glow, fxTag );
self._eyeArray[localClientNum] = fx_eye_glow;
}
}
}
deleteZombieEyes(localClientNum)
{
if(isdefined(self._eyeArray))
{
if(isdefined(self._eyeArray[localClientNum]))
{
self._eyeArray[localClientNum] delete();
self._eyeArray[localClientNum] = undefined;
}
}
}
zombieEyeMonitor()
{
self waittill("entityshutdown");
if(isdefined(self._eyeArray))
{
for(i = 0; i < self._eyeArray.size; i ++)
{
self deleteZombieEyes(i);
}
}
}
zombie_eyes(localClientNum)
{
if(!isdefined(self._eyeArray))
{
self._eyeArray = [];
}
self thread zombieEyeMonitor();
if(self haseyes())
{
self createZombieEyes(localClientNum);
}
}
zombie_eye_callback(localClientNum, hasEyes)
{
if(hasEyes)
{
self createZombieEyes(localClientNum);
}
else
{
self deleteZombieEyes(localClientNum);
}
}
init_perk_machines()
{
if ( GetDvar( "createfx" ) == "on" )
{
return;
}
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 thread perk_start_up();
}
perk_start_up()
{
level waittill( "power_on" );
timer = 0;
duration = 0.1;
machines = GetStructArray( "perksacola", "targetname" );
while( true )
{
for( i = 0; i < machines.size; i++ )
{
switch( machines[i].script_sound )
{
case "mx_jugger_jingle":
machines[i] thread vending_machine_flicker_light( "jugger_light", duration );
break;
case "mx_speed_jingle":
machines[i] thread vending_machine_flicker_light( "sleight_light", duration );
break;
case "mx_doubletap_jingle":
machines[i] thread vending_machine_flicker_light( "doubletap_light", duration );
break;
case "mx_revive_jingle":
machines[i] thread vending_machine_flicker_light( "revive_light", duration );
break;
default:
machines[i] thread vending_machine_flicker_light( "jugger_light", duration );
break;
}
}
timer += duration;
duration += 0.2;
if( timer >= 3 )
{
break;
}
realwait( duration );
}
}
vending_machine_flicker_light( fx_light, duration )
{
players = getlocalplayers();
for( i = 0; i < players.size; i++ )
{
self thread play_perk_fx_on_client( i, fx_light, duration );
}
}
play_perk_fx_on_client( client_num, fx_light, duration )
{
fxObj = spawn( client_num, self.origin +( 0, 0, -50 ), "script_model" );
fxobj setmodel( "tag_origin" );
playfxontag( client_num, level._effect[fx_light], fxObj, "tag_origin" );
realwait( duration );
fxobj delete();
}