1 #using scripts\codescripts\struct;
3 #using scripts\shared\audio_shared;
4 #using scripts\shared\system_shared;
6 #insert scripts\shared\shared.gsh;
14 surfaceArray = getSurfaceStrings();
20 movementArray[movementArray.size] =
"step_run";
22 movementArray[movementArray.size] =
"land";
25 level.playerFootSounds = [];
26 for ( movementArrayIndex = 0; movementArrayIndex < movementArray.size; movementArrayIndex++ )
28 movementType = movementArray[movementArrayIndex];
29 for ( surfaceArrayIndex = 0; surfaceArrayIndex < surfaceArray.size; surfaceArrayIndex++ )
31 surfaceType = surfaceArray[surfaceArrayIndex];
32 for ( index = 0; index < 4; index++ )
43 if ( ( index % 2 ) == 0 )
61 function playerJump(client_num, player, surfaceType, firstperson, quiet, isLouder)
63 if ( isdefined( player.audioMaterialOverride ) )
65 surfaceType = player.audioMaterialOverride;
68 sound_alias = level.playerFootSounds[
"step_run"][surfaceType][firstperson][isLouder];
70 player playsound( client_num, sound_alias );
73 function playerLand(client_num, player, surfaceType, firstperson, quiet, damagePlayer, isLouder)
75 if ( isdefined( player.audioMaterialOverride ) )
77 surfaceType = player.audioMaterialOverride;
80 sound_alias = level.playerFootSounds[
"land"][surfaceType][firstperson][isLouder];
82 player playsound( client_num, sound_alias );
84 if ( isdefined( player.step_sound ) && (!quiet) && (player.step_sound) !=
"none" )
88 player playsound (client_num, player.step_sound, player.origin, volume);
92 if (isdefined(level.playerFallDamageSound))
93 player [[level.playerFallDamageSound]](client_num, firstperson);
96 sound_alias =
"fly_land_damage_npc";
99 sound_alias =
"fly_land_damage_plr";
100 player playsound( client_num, sound_alias );
108 sound_alias =
"fly_movement_foliage_npc";
111 sound_alias =
"fly_movement_foliage_plr";
115 player playsound( client_num, sound_alias, player.origin, volume );
120 sound_alias =
"fly_" + movementtype;
124 sound_alias = sound_alias +
"_plr_";
128 sound_alias = sound_alias +
"_npc_";
131 sound_alias = sound_alias + surfaceType;
133 if ( !isdefined( level.playerFootSounds ) )
134 level.playerFootSounds = [];
136 if ( !isdefined( level.playerFootSounds[movementtype] ) )
137 level.playerFootSounds[movementtype] = [];
139 if ( !isdefined( level.playerFootSounds[movementtype][surfaceType] ) )
140 level.playerFootSounds[movementtype][surfaceType] = [];
142 if ( !isdefined( level.playerFootSounds[movementtype][surfaceType][firstperson] ) )
143 level.playerFootSounds[movementtype][surfaceType][firstperson] = [];
145 assert( isArray( level.playerFootSounds ) );
146 assert( isArray( level.playerFootSounds[movementtype] ) );
147 assert( isArray( level.playerFootSounds[movementtype][surfaceType] ) );
148 assert( isArray( level.playerFootSounds[movementtype][surfaceType][firstperson] ) );
150 level.playerFootSounds[movementtype][surfaceType][firstperson][isLouder] = sound_alias;
158 if(!isdefined(level._optionalStepEffects))
163 ground_type =
"fire";
166 for(i = 0; i < level._optionalStepEffects.size; i ++)
168 if(level._optionalStepEffects[i] == ground_type)
170 effect =
"fly_step_" + ground_type;
172 if(isdefined(level._effect[effect]))
174 playfx(client_num, level._effect[effect], foot_pos, foot_pos + (0,0,100));
188 if(!isdefined(
self.archetype))
190 /# PrintLn(
"*** Client script footstep callback on an entity that doesn't have an archetype defined. Ignoring."); #/
191 FootstepDoEverything();
195 if(!isdefined(level._footstepCBFuncs) || !isdefined(level._footstepCBFuncs[
self.archetype]))
198 FootstepDoEverything();
202 [[level._footstepCBFuncs[
self.archetype]]](client_num, pos, surface, notetrack, bone);