‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
footsteps_shared.csc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\audio_shared;
4 #using scripts\shared\system_shared;
5 
6 #insert scripts\shared\shared.gsh;
7 
8 #namespace footsteps;
9 
10 ‪REGISTER_SYSTEM( "footsteps", &‪__init__, undefined )
11 
12 function ‪__init__()
13 {
14  surfaceArray = getSurfaceStrings();
15 // footstepArray = getFootstepStrings();
16 
17  movementArray = [];
18 
19  // for playerJump() sound
20  movementArray[movementArray.size] = "step_run";
21  // for playerLand() sound
22  movementArray[movementArray.size] = "land";
23 
24  // building array of all sounds
25  level.playerFootSounds = [];
26  for ( movementArrayIndex = 0; movementArrayIndex < movementArray.size; movementArrayIndex++ )
27  {
28  movementType = movementArray[movementArrayIndex];
29  for ( surfaceArrayIndex = 0; surfaceArrayIndex < surfaceArray.size; surfaceArrayIndex++ )
30  {
31  surfaceType = surfaceArray[surfaceArrayIndex];
32  for ( index = 0; index < 4; index++ )
33  {
34  if ( index < 2 )
35  {
36  firstPerson = false;
37  }
38  else
39  {
40  firstPerson = true;
41  }
42 
43  if ( ( index % 2 ) == 0 )
44  {
45  isLouder = false;
46  }
47  else
48  {
49  isLouder = true;
50  }
51 
52  snd = ‪buildAndCacheSoundAlias( movementtype, surfaceType, firstperson, isLouder );
53 
54  //PrintLn(movementType + " " + surfaceType + " : " + snd);
55  }
56  }
57  }
58 
59 }
60 
61 function ‪playerJump(client_num, player, surfaceType, firstperson, quiet, isLouder)
62 {
63  if ( isdefined( player.audioMaterialOverride ) )
64  {
65  surfaceType = player.audioMaterialOverride;
66  }
67 
68  sound_alias = level.playerFootSounds["step_run"][surfaceType][firstperson][isLouder];
69 
70  player playsound( client_num, sound_alias );
71 }
72 
73 function ‪playerLand(client_num, player, surfaceType, firstperson, quiet, damagePlayer, isLouder)
74 {
75  if ( isdefined( player.audioMaterialOverride ) )
76  {
77  surfaceType = player.audioMaterialOverride;
78  }
79 
80  sound_alias = level.playerFootSounds["land"][surfaceType][firstperson][isLouder];
81 
82  player playsound( client_num, sound_alias );
83  // play step sound for landings if one exists
84  if ( isdefined( player.step_sound ) && (!quiet) && (player.step_sound) != "none" )
85  {
86  volume = ‪audio::get_vol_from_speed (player);
87 
88  player playsound (client_num, player.step_sound, player.origin, volume);
89  }
90  if ( damagePlayer )
91  {
92  if (isdefined(level.playerFallDamageSound))
93  player [[level.playerFallDamageSound]](client_num, firstperson);
94  else
95  {
96  sound_alias = "fly_land_damage_npc";
97  if ( firstperson )
98  {
99  sound_alias = "fly_land_damage_plr";
100  player playsound( client_num, sound_alias );
101  }
102  }
103  }
104 }
105 
106 function ‪playerFoliage(client_num, player, firstperson, quiet)
107 {
108  sound_alias = "fly_movement_foliage_npc";
109  if ( firstperson )
110  {
111  sound_alias = "fly_movement_foliage_plr";
112  }
113 
114  volume = ‪audio::get_vol_from_speed (player);
115  player playsound( client_num, sound_alias, player.origin, volume );
116 }
117 
118 function ‪buildAndCacheSoundAlias( movementtype, surfaceType, firstperson, isLouder )
119 {
120  sound_alias = "fly_" + movementtype;
121 
122  if ( firstperson )
123  {
124  sound_alias = sound_alias + "_plr_";
125  }
126  else
127  {
128  sound_alias = sound_alias + "_npc_";
129  }
130 
131  sound_alias = sound_alias + surfaceType;
132 
133  if ( !isdefined( level.playerFootSounds ) )
134  level.playerFootSounds = [];
135 
136  if ( !isdefined( level.playerFootSounds[movementtype] ) )
137  level.playerFootSounds[movementtype] = [];
138 
139  if ( !isdefined( level.playerFootSounds[movementtype][surfaceType] ) )
140  level.playerFootSounds[movementtype][surfaceType] = [];
141 
142  if ( !isdefined( level.playerFootSounds[movementtype][surfaceType][firstperson] ) )
143  level.playerFootSounds[movementtype][surfaceType][firstperson] = [];
144 
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] ) );
149 
150  level.playerFootSounds[movementtype][surfaceType][firstperson][isLouder] = sound_alias;
151 
152  return sound_alias;
153 }
154 
155 function ‪do_foot_effect(client_num, ground_type, foot_pos, on_fire)
156 {
157 
158  if(!isdefined(level._optionalStepEffects))
159  return;
160 
161  if( on_fire )
162  {
163  ground_type = "fire";
164  }
165 
166  for(i = 0; i < level._optionalStepEffects.size; i ++)
167  {
168  if(level._optionalStepEffects[i] == ground_type)
169  {
170  effect = "fly_step_" + ground_type;
171 
172  if(isdefined(level._effect[effect]))
173  {
174  playfx(client_num, level._effect[effect], foot_pos, foot_pos + (0,0,100));
175  return;
176  }
177  }
178  }
179 
180 }
181 
183 {
184 }
185 
186 function ‪playAIFootstep(client_num, pos, surface, notetrack, bone)
187 {
188  if(!isdefined(self.archetype))
189  {
190  /# PrintLn("*** Client script footstep callback on an entity that doesn't have an archetype defined. Ignoring."); #/
191  FootstepDoEverything();
192  return;
193  }
194 
195  if(!isdefined(level._footstepCBFuncs) || !isdefined(level._footstepCBFuncs[self.archetype]))
196  {
198  FootstepDoEverything();
199  return;
200  }
201 
202  [[level._footstepCBFuncs[self.archetype]]](client_num, pos, surface, notetrack, bone);
203 
204 }
‪buildAndCacheSoundAlias
‪function buildAndCacheSoundAlias(movementtype, surfaceType, firstperson, isLouder)
Definition: footsteps_shared.csc:118
‪get_vol_from_speed
‪function get_vol_from_speed(player)
Definition: audio_shared.csc:767
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪playerFoliage
‪function playerFoliage(client_num, player, firstperson, quiet)
Definition: footsteps_shared.csc:106
‪playerJump
‪function playerJump(client_num, player, surfaceType, firstperson, quiet, isLouder)
Definition: footsteps_shared.csc:61
‪__init__
‪function __init__()
Definition: footsteps_shared.csc:12
‪playAIFootstep
‪function playAIFootstep(client_num, pos, surface, notetrack, bone)
Definition: footsteps_shared.csc:186
‪missing_ai_footstep_callback
‪function missing_ai_footstep_callback()
Definition: footsteps_shared.csc:182
‪do_foot_effect
‪function do_foot_effect(client_num, ground_type, foot_pos, on_fire)
Definition: footsteps_shared.csc:155
‪playerLand
‪function playerLand(client_num, player, surfaceType, firstperson, quiet, damagePlayer, isLouder)
Definition: footsteps_shared.csc:73