1 #using scripts\shared\ai_shared;
2 #using scripts\shared\ai\archetype_mannequin;
3 #using scripts\shared\music_shared;
4 #using scripts\shared\util_shared;
6 #insert scripts\shared\shared.gsh;
8 #define NUKETOWN_SPAWN_MANNEQUIN_FX "dlc0/nuketown/fx_de_rez_man_spawn"
10 #precache( "fx", NUKETOWN_SPAWN_MANNEQUIN_FX );
12 #namespace NuketownMannequin;
14 function SpawnMannequin( origin, angles, gender =
"male", speed = undefined, weepingAngel )
16 if(!IsDefined ( level.mannequinspawn_music))
18 level.mannequinspawn_music = 1;
19 music::setmusicstate(
"mann" );
22 if ( gender ==
"male" )
24 mannequin = SpawnActor(
"spawner_bo3_mannequin_male", origin, angles,
"",
true,
true );
28 mannequin = SpawnActor(
"spawner_bo3_mannequin_female", origin, angles,
"",
true,
true );
32 rand = RandomInt( 100 );
36 mannequin.zombie_move_speed =
"walk";
40 mannequin.zombie_move_speed =
"run";
44 mannequin.zombie_move_speed =
"sprint";
47 if ( IsDefined( speed ) )
49 mannequin.zombie_move_speed = speed;
52 if( IsDefined( level.zm_variant_type_max ) )
55 mannequin.variant_type = RandomIntRange( 1, level.zm_variant_type_max[ mannequin.zombie_move_speed ][ mannequin.zombie_arms_position ] );
59 mannequin ASMSetAnimationRate( RandomFloatRange( 0.98, 1.02 ) );
60 mannequin.holdFire =
true;
67 mannequin.canStumble =
true;
68 mannequin.should_turn =
true;
70 mannequin.team =
"free";
73 mannequins = GetAIArchetypeArray(
"mannequin" );
75 foreach ( otherMannequin
in mannequins )
77 if ( otherMannequin.archetype ==
"mannequin" )
79 otherMannequin SetIgnoreEnt( mannequin,
true );
80 mannequin SetIgnoreEnt( otherMannequin,
true );
87 mannequin.is_looking_at_me =
true;
88 mannequin.was_looking_at_me =
false;
97 function mannequinDamage( inflictor, attacker,
damage, dFlags, mod, weapon, point, dir, hitLoc, offsetTime, boneIndex, modelIndex )
99 if ( IsDefined( inflictor ) && IsActor( inflictor ) && inflictor.archetype ==
"mannequin" )
109 self endon (
"death" );
111 level waittill (
"game_ended" );
113 self SetEntityPaused(
true );
115 level waittill (
"endgame_sequence" );
122 self waittill(
"death" );
124 if ( IsDefined(
self ) )
126 self SetEntityPaused(
false );
128 if ( !
self IsRagdoll() )
137 self.is_looking_at_me = frozen;
139 if(
self.is_looking_at_me && !
self.was_looking_at_me )
141 self SetEntityPaused(
true );
143 else if( !
self.is_looking_at_me &&
self.was_looking_at_me )
145 self SetEntityPaused(
false );
148 self.was_looking_at_me =
self.is_looking_at_me;
153 level endon (
"game_ended" );
154 level endon (
"mannequin_force_cleanup" );
158 mannequins = GetAIArchetypeArray(
"mannequin" );
159 foreach( mannequin
in mannequins )
161 mannequin.can_player_see_me =
true;
164 players = GetPlayers();
166 unseenMannequins = mannequins;
167 foreach( player
in players )
169 unseenMannequins = player CantSeeEntities( unseenMannequins, .67,
false );
172 foreach( mannequin
in unseenMannequins )
174 mannequin.can_player_see_me =
false;
177 foreach( mannequin
in mannequins )