cod5-sdk/raw/maps/hol1_util.gsc

300 lines
6.5 KiB
Plaintext

#include common_scripts\utility;
#include maps\_utility;
initialize_spawn_function( name, key, spawn_func )
{
spawners = getEntArray( name, key );
if( isdefined( spawn_func ) )
{
for( i = 0; i < spawners.size; i++ )
{
if( !isdefined( spawners[i].spawn_functions ) )
{
spawners[i].spawn_functions = [];
}
// CODER_MOD - JamesS
if( !isalive(spawners[i]) )
{
spawners[i] add_spawn_function( spawn_func );
}
else
{
println( "Warning - alive guys can't be spawners" );
}
}
}
}
get_script_origin_by_noteworthy( script_noteworthy_value )
{
origins = getentarray( script_noteworthy_value, "script_noteworthy" );
for( i = 0; i < origins.size; i++ )
{
if( origins[i].classname == "script_origin" )
{
return origins[i];
}
}
}
hold_fire( guy )
{
guy endon( "death" );
guy.ignoreall = true;
guy.pacifist = 1;
guy waittill( "open_fire" );
guy.ignoreall = false;
guy.pacifist = 0;
}
open_fire_fake( guy )
{
guy.ignoreall = false;
guy.pacifist = 0;
guy stopanimscripted();
guy setentitytarget( level.jeep1, 1 );
}
open_fire_fake2( guy )
{
guy.ignoreall = false;
guy.pacifist = 0;
guy stopanimscripted();
guy setentitytarget( level.jeep2, 1 );
}
start_rail_opel( start_node_noteworthy )
{
start_node = getvehiclenode( start_node_noteworthy, "script_noteworthy" );
opel = spawnvehicle( "vehicle_ger_wheeled_opel_blitz_winter",
"truck",
"opel",
start_node.origin,
start_node.angles );
wait( 0.1 );
playfxontag( level._effect["headlight"], opel, "tag_headlight_left" );
playfxontag( level._effect["headlight"], opel, "tag_headlight_right" );
//playfxontag( level._effect["brakelight"], opel, "tag_brakelight_left" );
opel attachPath( start_node );
opel startpath();
}
move_to_struct_pos( struct_name )
{
dest = getstruct( struct_name, "targetname" );
move_org = spawn( "script_origin", dest.origin );
self unlink();
self linkto( move_org );
move_org moveto( dest.origin, 1, 0.5, 0.3 );
wait( 1 );
self unlink();
move_org delete();
}
onFirstPlayerConnect()
{
level waittill( "connecting_first_player", player );
println( "First player connected to game." );
}
onPlayerConnect()
{
for(;;)
{
level waittill( "connecting", player );
player thread onPlayerDisconnect();
player thread onPlayerSpawned();
player thread onPlayerKilled();
player setthreatbiasgroup("allies");
// put any calls here that you want to happen when the player connects to the game
if( level.rail_sequence == true )
{
maps\hol1_rail::put_player_on_rail( player );
}
println( "Player connected to game." );
//wait( 2 );
//player thread maps\_stealth_logic::stealth_ai();
}
}
onPlayerDisconnect()
{
self waittill( "disconnect" );
// put any calls here that you want to happen when the player disconnects from the game
// this is a good place to do any clean up you need to do
if( level.rail_sequence == true )
{
maps\hol1_rail::remove_player_from_rail( self );
}
println( "Player disconnected from the game." );
}
onPlayerSpawned()
{
self endon( "disconnect" );
for(;;)
{
self waittill( "spawned_player" );
// put any calls here that you want to happen when the player spawns
// this will happen every time the player spawns
println("Player spawned in to game at " + self.origin);
if( level.rail_sequence == true )
{
maps\hol1_rail::put_player_on_rail( self );
}
}
}
onPlayerKilled()
{
self endon("disconnect");
for(;;)
{
self waittill( "killed_player" );
// put any calls here that you want to happen when the player gets killed
println( "Player killed at " + self.origin );
if( level.rail_sequence == true )
{
missionfailed();
}
}
}
// USED AT START
// Teleport players to positions of specified scrip_origins
teleport_players( struct_name )
{
starts = getstructarray( struct_name,"targetname" );
players = get_players();
for( i = 0; i < players.size; i++ )
{
players[i] setOrigin( starts[i].origin );
players[i] setPlayerAngles( starts[i].angles );
}
}
// teleport AIs to specified struct positions
// This will move the player temporarily out of the way
// ONLY use it during starts
friendlies_force_teleport( event_name )
{
if( event_name == "event3" )
{
goddard_start = getstruct( "ev2_goddard_off", "targetname" );
friend1_start = getstruct( "ev2_friend1_off", "targetname" );
friend2_start = getstruct( "ev2_friend2_off", "targetname" );
// teleport player out of the way first. AI won't teleport unless player can't see them
level thread teleport_player_temp_into_enclosure();
level.goddard teleport( goddard_start.origin );
level.friend1 teleport( friend1_start.origin );
level.friend2 teleport( friend2_start.origin );
wait( 0.1 );
level notify( "restore_player_positions" );
wait( 0.1 );
}
}
// teleport player to a temporary and fully enclosed position
// as to allow AI teleporting (currently they can't while player can see them)
// move players back once teleporting is complete
teleport_player_temp_into_enclosure()
{
players = get_players();
old_origins = [];
origs = getstructarray( "temp_teleport_position", "targetname" );
if( origs.size >= 4 )
{
// store original positions
for (i = 0; i < players.size; i++)
{
old_origins = add_to_array( old_origins, players[i].origin );
players[i] setOrigin( origs[i].origin );
}
level waittill( "restore_player_positions" );
// restore positions
for (i = 0; i < players.size; i++)
{
players[i] setOrigin( old_origins[i] );
}
}
}
initialize_spawn_func( name, key, spawn_func )
{
spawners = getEntArray( name, key );
if( isdefined( spawn_func ) )
{
for( i = 0; i < spawners.size; i++ )
{
if( !isdefined( spawners[i].spawn_functions ) )
{
spawners[i].spawn_functions = [];
}
spawners[i] add_spawn_function( spawn_func );
}
}
}
go_to_node_with_notify( node, msg )
{
self.goalradius = 4;
self setgoalnode( node );
self waittill( "goal" );
level notify( msg );
}
avoid_combat()
{
self.pacifist = true;
self.ignoreall = true;
self.script_sightrange = 4;
self.maxsightdistsqrd = 4;
}
resume_combat()
{
self.pacifist = false;
self.ignoreall = false;
self.script_sightrange = 4000000;
self.maxsightdistsqrd = 4000000;
self.goalradius = 512;
}