2 #using scripts\codescripts\struct;
4 #using scripts\shared\callbacks_shared;
5 #using scripts\shared\clientfield_shared;
6 #using scripts\shared\doors_shared;
7 #using scripts\shared\flag_shared;
8 #using scripts\shared\flagsys_shared;
9 #using scripts\shared\scene_shared;
10 #using scripts\shared\system_shared;
11 #using scripts\shared\util_shared;
12 #using scripts\shared\visionset_mgr_shared;
14 #insert scripts\shared\shared.gsh;
15 #insert scripts\shared\version.gsh;
18 #namespace containers;
21 #define STR_OPEN_CONTAINER_MESSAGE "Press [{+activate}] to open"
43 if( !IsDefined(str_xmodel) )
45 str_xmodel =
"script_origin";
64 foreach ( s_instance
in a_containers )
66 c_container = s_instance
init();
67 if( IsDefined(c_container) )
69 s_instance.c_container = c_container;
84 if( !IsDefined(
self.angles) )
86 self.angles = ( 0, 0 ,0 );
103 c_container.m_s_container_bundle = s_bundle;
105 c_container.m_s_container_instance = s_container_instance;
111 self scene::init( s_bundle.theeffectbundle, c_container.m_e_container );
115 return( c_container );
134 e_ent = c_container.m_e_container;
146 s_bundle = c_container.m_s_container_bundle;
148 targetname = c_container.m_s_container_instance.targetname;
161 if( IsDefined(s_bundle.loot_offset_x) )
163 v_loot_offset = ( s_bundle.loot_offset_x, s_bundle.loot_offset_y, s_bundle.loot_offset_z );
167 v_loot_offset = ( 0, 0, 0 );
172 n_radius = s_bundle.trigger_radius;
174 e_trigger waittill(
"trigger", e_who );
199 v_pos = ( v_pos[0], v_pos[1], v_pos[2]+50 );
201 e_trig =
spawn(
"trigger_radius_use", v_pos, 0, n_radius, 100 );
202 e_trig TriggerIgnoreTeam();
204 e_trig SetVisibleToAll();
205 e_trig SetTeamForTrigger(
"none" );
206 e_trig UseTriggerRequireLookAt();
207 e_trig SetCursorHint(
"HINT_NOICON" );
208 e_trig SetHintString( str_message );
222 s_struct =
struct::get( str_targetname,
"targetname" );
223 if( !IsDefined(s_struct) )
236 if( !IsDefined(force_open) || (force_open ==
false) )
238 e_trigger waittill(
"trigger", e_who );
243 rand_time = RandomFloatRange( 1.0, 1.5 );
250 level thread
scene::play( str_targetname ,
"targetname" );
253 if( IsDefined(s_struct.a_entity) )
255 for( i=0; i<s_struct.a_entity.size; i++ )
257 s_struct.a_entity[i] notify(
"opened" );
262 if( IsDefined(str_narrative_collectable_model) )
264 v_pos = s_struct.origin + ( 0, 0, 30 );
266 if( !IsDefined(s_struct.angles) )
268 v_angles = ( 0, 0, 0 );
272 v_angles = s_struct.angles;
275 v_angles = ( v_angles[0], v_angles[1]+90, v_angles[2] );
277 e_collectable =
spawn(
"script_model", v_pos );
278 e_collectable setModel(
"p7_int_narrative_collectable" );
279 e_collectable.angles = v_angles;
284 e_trigger waittill(
"trigger", e_who );
287 e_collectable
delete();
290 if( IsDefined(str_intel_vo) )
292 e_who PlaySound( str_intel_vo );
306 a_left_doors = getentarray( str_left_door_name,
"targetname" );
307 if( !IsDefined(a_left_doors) )
313 a_right_doors = getentarray( str_right_door_name,
"targetname" );
314 if( !IsDefined(a_right_doors) )
321 for( i=0; i<a_left_doors.size; i++ )
323 e_left_door = a_left_doors[i];
325 if( IsDefined(center_point_offset) )
327 v_forward = AnglesToForward( e_left_door.angles );
328 v_search_pos = e_left_door.origin + ( v_forward * center_point_offset );
332 v_search_pos = e_left_door.origin;
346 e_closest = undefined;
347 n_closest_dist = 9999999;
349 for( i=0; i<
a_ents.size; i++ )
351 dist = distance( v_pos,
a_ents[i].origin );
352 if( dist < n_closest_dist )
354 n_closest_dist = dist;
369 v_locker_pos = ( e_left_door.origin + e_right_door.origin ) / 2;
370 n_trigger_radius = 48;
372 e_trigger waittill(
"trigger" );
375 e_left_door playsound(
"evt_cabinet_open" );
378 v_angle = ( e_left_door.angles[0], e_left_door.angles[1]-door_open_angle, e_left_door.angles[2] );
379 e_left_door RotateTo( v_angle, door_open_time );
380 v_angle = ( e_right_door.angles[0], e_right_door.angles[1]+door_open_angle, e_right_door.angles[2] );
381 e_right_door RotateTo( v_angle, door_open_time );