1 #using scripts\codescripts\struct;
3 #using scripts\shared\system_shared;
5 #insert scripts\shared\shared.gsh;
13 level.movementStateSound = [];
15 level.maxStateSoundDistance = 99999999;
17 level.movementStateSound[
"normal"] = spawnStruct();
18 level.movementStateSound[
"normal"].sound =
"aml_dog_bark";
19 level.movementStateSound[
"normal"].waitMax = 4;
20 level.movementStateSound[
"normal"].waitMin = 1;
21 level.movementStateSound[
"normal"].enemyrange = level.maxStateSoundDistance;
22 level.movementStateSound[
"normal"].localenemyonly =
false;
25 level.movementStateSound[
"attack_mid_everyone"] = spawnStruct();
26 level.movementStateSound[
"attack_mid_everyone"].sound =
"aml_dog_bark_mid";
27 level.movementStateSound[
"attack_mid_everyone"].waitMax = 2;
28 level.movementStateSound[
"attack_mid_everyone"].waitMin = 0.5;
29 level.movementStateSound[
"attack_mid_everyone"].enemyrange = 1500;
30 level.movementStateSound[
"attack_mid_everyone"].localenemyonly =
false;
33 level.movementStateSound[
"attack_mid_enemy"] = spawnStruct();
34 level.movementStateSound[
"attack_mid_enemy"].sound =
"aml_dog_bark_mid";
35 level.movementStateSound[
"attack_mid_enemy"].waitMax = 0.5;
36 level.movementStateSound[
"attack_mid_enemy"].waitMin = 0.01;
37 level.movementStateSound[
"attack_mid_enemy"].enemyrange = 1500;
38 level.movementStateSound[
"attack_mid_enemy"].localenemyonly =
true;
41 level.movementStateSound[
"attack_close_enemy"] = spawnStruct();
42 level.movementStateSound[
"attack_close_enemy"].sound =
"aml_dog_bark_close";
43 level.movementStateSound[
"attack_close_enemy"].waitMax = 0.1;
44 level.movementStateSound[
"attack_close_enemy"].waitMin = 0.01;
45 level.movementStateSound[
"attack_close_enemy"].enemyrange = 1000;
46 level.movementStateSound[
"attack_close_enemy"].localenemyonly =
true;
51 self endon(
"entityshutdown" );
59 self.animCategory = animCategory;
60 self notify(
"killanimscripts");
62 dog_print(
"anim category changed " + animCategory);
64 switch (animCategory )
82 self endon(
"entityshutdown");
84 if ( !isdefined(
self.animCategory) )
91 animCategory =
self GetAnimStateCategory();
93 if ( isdefined( animCategory) &&
self.animCategory != animCategory && animCategory !=
"traverse" )
103 self endon(
"entityshutdown");
107 self waittill(
"enemy");
113 if ( !isdefined(enemy) )
118 players = level.localPlayers;
120 if ( isdefined( players ) )
122 for ( i = 0; i < players.size; i++ )
124 if ( players[i] == enemy )
133 if ( !isdefined(last_enemy) && isdefined(
self.enemy) )
136 if ( isdefined(last_enemy) && !isdefined(
self.enemy) )
139 if ( last_enemy !=
self.enemy )
148 closest_dist = level.maxStateSoundDistance * level.maxStateSoundDistance;
149 closest_key =
"normal";
150 has_enemy = isdefined(
self.enemy);
153 enemy_distance = distancesquared(
self.origin,
self.enemy.origin );
160 stateArray = getArrayKeys( level.movementStateSound );
161 for ( i = 0; i < stateArray.size; i++ )
164 if ( level.movementStateSound[stateArray[i]].localenemyonly && !localPlayer )
167 state_dist = level.movementStateSound[stateArray[i]].enemyrange;
168 state_dist *= state_dist;
170 if ( state_dist < enemy_distance )
173 if ( state_dist < closest_dist )
175 closest_dist = state_dist;
176 closest_key = stateArray[i];
186 self endon(
"entityshutdown" );
187 self endon(
"killanimscripts" );
189 last_state =
"normal";
201 if ( state != last_state && level.movementStateSound[state].waitMax < wait_time )
207 if ( next_sound || ((last_time + wait_time) < GetRealTime()) )
209 if (isdefined(
self.enemy) )
211 dog_sound_print(
"enemy distance: " + distance(
self.origin,
self.enemy.origin ));
214 soundId =
self play_dog_sound( localClientNum, level.movementStateSound[state].sound );
219 while( soundplaying( soundId ) )
224 last_time = GetRealTime();
225 wait_time = 1000 * randomfloatrange( level.movementStateSound[state].waitMin, level.movementStateSound[state].waitMax );
242 self endon(
"entityshutdown" );
243 self endon(
"killanimscripts" );
250 self endon(
"entityshutdown" );
251 self endon(
"killanimscripts" );
258 self endon(
"entityshutdown" );
265 if ( note ==
"sound_dogstep_run_default" )
267 entity playsound( client_num,
"fly_dog_step_run_default" );
271 alias =
"aml" + getsubstr( note, 5 );
283 if ( GetDvarString( dvar ) !=
"" )
284 return getdvarfloat( dvar );
303 if ( isdefined( position ) )
305 return self playsound( localClientNum, sound, position );
308 return self playsound( localClientNum, sound );