10519 lines
327 KiB
C++
10519 lines
327 KiB
C++
|
/*
|
||
|
** Command & Conquer Renegade(tm)
|
||
|
** Copyright 2025 Electronic Arts Inc.
|
||
|
**
|
||
|
** This program is free software: you can redistribute it and/or modify
|
||
|
** it under the terms of the GNU General Public License as published by
|
||
|
** the Free Software Foundation, either version 3 of the License, or
|
||
|
** (at your option) any later version.
|
||
|
**
|
||
|
** This program is distributed in the hope that it will be useful,
|
||
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
** GNU General Public License for more details.
|
||
|
**
|
||
|
** You should have received a copy of the GNU General Public License
|
||
|
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||
|
*/
|
||
|
|
||
|
/******************************************************************************
|
||
|
*
|
||
|
* FILE
|
||
|
* Mission04.cpp
|
||
|
*
|
||
|
* DESCRIPTION
|
||
|
* Mission 4 scripts
|
||
|
*
|
||
|
* PROGRAMMER
|
||
|
* Design Team
|
||
|
*
|
||
|
* VERSION INFO
|
||
|
* $Author: Joe_g $
|
||
|
* $Revision: 122 $
|
||
|
* $Modtime: 2/12/02 10:10a $
|
||
|
* $Archive: /Commando/Code/Scripts/Mission04.cpp $
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
|
||
|
#include "scripts.h"
|
||
|
#include <string.h>
|
||
|
#include "toolkit.h"
|
||
|
#include "mission1.h"
|
||
|
#include "mission11.h"
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Objective_Controller_JDG, "")//this guys ID number is M04_OBJECTIVE_CONTROLLER_JDG 100424
|
||
|
{
|
||
|
int missile_01_sabotaged;
|
||
|
int missile_02_sabotaged;
|
||
|
int missile_03_sabotaged;
|
||
|
int missile_04_sabotaged;
|
||
|
int number_missiles_sabotaged;
|
||
|
bool missile_primary_active;
|
||
|
|
||
|
int torpedo_01_sabotaged;
|
||
|
int torpedo_02_sabotaged;
|
||
|
int number_torpedos_sabotaged;
|
||
|
bool torpedo_primary_active;
|
||
|
|
||
|
int engine_room_01_sabotaged;
|
||
|
int engine_room_02_sabotaged;
|
||
|
int engine_room_03_sabotaged;
|
||
|
int engine_room_04_sabotaged;
|
||
|
int number_engines_sabotaged;
|
||
|
|
||
|
int announce_prisoner_objective;
|
||
|
bool prisoner_primary_active;
|
||
|
|
||
|
int announce_first_mate_objective;
|
||
|
bool first_mate_primary_active;
|
||
|
|
||
|
int announce_captain_objective;
|
||
|
bool captain_primary_active;
|
||
|
|
||
|
int announce_engine_room_objective;
|
||
|
int announce_missile_room_objective;
|
||
|
int announce_torpedo_room_objective;
|
||
|
int announce_apache_objective;
|
||
|
int announce_get_back_to_sub;
|
||
|
|
||
|
int completed_prisoner_rescue;
|
||
|
int completed_first_mate_objective;
|
||
|
int completed_captain_objective;
|
||
|
int completed_engine_room_objective;
|
||
|
int completed_missile_room_objective;
|
||
|
int completed_torpedo_room_objective;
|
||
|
int completed_apache_objective;
|
||
|
bool mission_started;
|
||
|
|
||
|
int attach_havocs_script;
|
||
|
int announce_prison_guard_objective;
|
||
|
//int tell_where_guard_is;
|
||
|
int completed_get_the_key;
|
||
|
|
||
|
//new stuff
|
||
|
int protectPOWsConv;
|
||
|
int missionIntroConv;
|
||
|
int missileConv;
|
||
|
int engineIntroConv;
|
||
|
int prisonKeyIntroConv;
|
||
|
int medlab_conv;
|
||
|
int firstmateConv;
|
||
|
|
||
|
bool first_mate_primary_triggered;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( missile_01_sabotaged, 1 );
|
||
|
SAVE_VARIABLE( missile_02_sabotaged, 2 );
|
||
|
SAVE_VARIABLE( missile_03_sabotaged, 3 );
|
||
|
SAVE_VARIABLE( missile_04_sabotaged, 4 );
|
||
|
SAVE_VARIABLE( number_missiles_sabotaged, 5 );
|
||
|
SAVE_VARIABLE( missile_primary_active, 6 );
|
||
|
SAVE_VARIABLE( torpedo_01_sabotaged, 7 );
|
||
|
SAVE_VARIABLE( torpedo_02_sabotaged, 8 );
|
||
|
SAVE_VARIABLE( number_torpedos_sabotaged, 9 );
|
||
|
SAVE_VARIABLE( torpedo_primary_active, 10 );
|
||
|
|
||
|
SAVE_VARIABLE( engine_room_01_sabotaged, 11 );
|
||
|
SAVE_VARIABLE( engine_room_02_sabotaged, 12 );
|
||
|
SAVE_VARIABLE( engine_room_03_sabotaged, 13 );
|
||
|
SAVE_VARIABLE( engine_room_04_sabotaged, 14 );
|
||
|
SAVE_VARIABLE( number_engines_sabotaged, 15 );
|
||
|
SAVE_VARIABLE( announce_prisoner_objective, 16 );
|
||
|
SAVE_VARIABLE( prisoner_primary_active, 17 );
|
||
|
SAVE_VARIABLE( announce_first_mate_objective, 18 );
|
||
|
SAVE_VARIABLE( first_mate_primary_active, 19 );
|
||
|
SAVE_VARIABLE( announce_captain_objective, 20 );
|
||
|
|
||
|
SAVE_VARIABLE( captain_primary_active, 21 );
|
||
|
SAVE_VARIABLE( announce_engine_room_objective, 22 );
|
||
|
SAVE_VARIABLE( announce_missile_room_objective, 23 );
|
||
|
SAVE_VARIABLE( announce_torpedo_room_objective, 24 );
|
||
|
SAVE_VARIABLE( announce_apache_objective, 25 );
|
||
|
SAVE_VARIABLE( announce_get_back_to_sub, 26 );
|
||
|
SAVE_VARIABLE( completed_prisoner_rescue, 27 );
|
||
|
SAVE_VARIABLE( completed_first_mate_objective, 28 );
|
||
|
SAVE_VARIABLE( completed_captain_objective, 29 );
|
||
|
SAVE_VARIABLE( completed_engine_room_objective, 30 );
|
||
|
|
||
|
SAVE_VARIABLE( completed_missile_room_objective, 31 );
|
||
|
SAVE_VARIABLE( completed_torpedo_room_objective, 32 );
|
||
|
SAVE_VARIABLE( completed_apache_objective, 33 );
|
||
|
SAVE_VARIABLE( mission_started, 34 );
|
||
|
SAVE_VARIABLE( attach_havocs_script, 35 );
|
||
|
SAVE_VARIABLE( announce_prison_guard_objective, 36 );
|
||
|
SAVE_VARIABLE( firstmateConv, 37 );
|
||
|
SAVE_VARIABLE( completed_get_the_key, 38 );
|
||
|
SAVE_VARIABLE( protectPOWsConv, 39 );//
|
||
|
SAVE_VARIABLE( missionIntroConv, 40 );
|
||
|
|
||
|
SAVE_VARIABLE( missileConv, 41 );
|
||
|
SAVE_VARIABLE( engineIntroConv, 42 );
|
||
|
SAVE_VARIABLE( prisonKeyIntroConv, 43 );
|
||
|
SAVE_VARIABLE( medlab_conv, 44 );
|
||
|
SAVE_VARIABLE( firstmateConv, 45 );
|
||
|
SAVE_VARIABLE( first_mate_primary_triggered, 46 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
/**********************************************************************************************************
|
||
|
The following are the custom parameter number values used to control objectives in mission 04
|
||
|
***********************************************************************************************************/
|
||
|
missile_01_sabotaged = 100;
|
||
|
missile_02_sabotaged = 110;
|
||
|
missile_03_sabotaged = 120;
|
||
|
missile_04_sabotaged = 130;
|
||
|
number_missiles_sabotaged = 0;
|
||
|
missile_primary_active = false;
|
||
|
|
||
|
torpedo_01_sabotaged = 200;
|
||
|
torpedo_02_sabotaged = 210;
|
||
|
number_torpedos_sabotaged = 0;
|
||
|
torpedo_primary_active = false;
|
||
|
|
||
|
engine_room_01_sabotaged = 300;
|
||
|
engine_room_02_sabotaged = 310;
|
||
|
engine_room_03_sabotaged = 320;
|
||
|
engine_room_04_sabotaged = 330;
|
||
|
number_engines_sabotaged = 0;
|
||
|
|
||
|
announce_prisoner_objective = 400;
|
||
|
announce_prison_guard_objective = 401;
|
||
|
//tell_where_guard_is = 402;
|
||
|
prisoner_primary_active = false;
|
||
|
|
||
|
announce_first_mate_objective = 410;
|
||
|
first_mate_primary_active = false;
|
||
|
first_mate_primary_triggered = false;
|
||
|
|
||
|
announce_captain_objective = 420;
|
||
|
captain_primary_active = false;
|
||
|
|
||
|
announce_engine_room_objective = 430;
|
||
|
announce_missile_room_objective = 440;
|
||
|
announce_torpedo_room_objective = 450;
|
||
|
announce_apache_objective = 460;
|
||
|
announce_get_back_to_sub = 470;
|
||
|
|
||
|
completed_prisoner_rescue = 500;
|
||
|
completed_first_mate_objective = 510;
|
||
|
completed_captain_objective = 520;
|
||
|
completed_engine_room_objective = 530;
|
||
|
completed_missile_room_objective = 540;
|
||
|
completed_torpedo_room_objective = 550;
|
||
|
completed_apache_objective = 560;
|
||
|
completed_get_the_key = 590;
|
||
|
mission_started = false;
|
||
|
|
||
|
attach_havocs_script = 600;
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, announce_prisoner_objective, 3 );
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
switch (complete_reason)
|
||
|
{
|
||
|
case ACTION_COMPLETE_CONVERSATION_ENDED: //
|
||
|
{
|
||
|
if (action_id == missionIntroConv) //rescue prisoners here
|
||
|
{
|
||
|
Commands->Debug_Message ( "**********************mission start conversation over--sending custom\n" );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 1, 0 );
|
||
|
|
||
|
Commands->Add_Objective( 100, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M04_01, NULL, IDS_Enc_Obj_Primary_M04_01 );
|
||
|
Commands->Add_Radar_Marker ( 101, Commands->Get_Position( Commands->Find_Object ( M04_PRISON_PRISONER_01_JDG )), RADAR_BLIP_SHAPE_OBJECTIVE, RADAR_BLIP_COLOR_PRIMARY_OBJECTIVE );
|
||
|
Commands->Add_Radar_Marker ( 102, Commands->Get_Position( Commands->Find_Object ( M04_PRISON_PRISONER_02_JDG )), RADAR_BLIP_SHAPE_OBJECTIVE, RADAR_BLIP_COLOR_PRIMARY_OBJECTIVE );
|
||
|
Commands->Add_Radar_Marker ( 103, Commands->Get_Position( Commands->Find_Object ( M04_PRISON_PRISONER_03_JDG )), RADAR_BLIP_SHAPE_OBJECTIVE, RADAR_BLIP_COLOR_PRIMARY_OBJECTIVE );
|
||
|
|
||
|
Vector3 prisoner01_position = Commands->Get_Position ( Commands->Find_Object ( M04_PRISON_PRISONER_01_JDG ) );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 100, 90, "POG_M04_1_01.tga", IDS_POG_RESCUE, prisoner01_position );
|
||
|
}
|
||
|
|
||
|
else if (action_id == missileConv) //sabotage missile racks M04_Add_MissileRoom_Objective_Conversation_02
|
||
|
{
|
||
|
//Commands->Send_Custom_Event( obj, obj, 0, 1, 2 );
|
||
|
|
||
|
//Commands->Create_Sound ( "00-n040e", Vector3 (0,0,0), obj);
|
||
|
Commands->Add_Objective( 300, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M04_03, NULL, IDS_Enc_Obj_Primary_M04_03 );
|
||
|
|
||
|
GameObject * missile_target01 = Commands->Find_Object ( 100421 );
|
||
|
GameObject * missile_target02 = Commands->Find_Object ( 100422 );
|
||
|
GameObject * missile_target03 = Commands->Find_Object ( 100423 );
|
||
|
GameObject * missile_target04 = Commands->Find_Object ( 100420 );
|
||
|
if (missile_target01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, missile_target01, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (missile_target02 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, missile_target02, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (missile_target03 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, missile_target03, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (missile_target04 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, missile_target04, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
/*int missileConv02 = Commands->Create_Conversation( "M04_Add_MissileRoom_Objective_Conversation_02", 100, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, missileConv02, false, false );
|
||
|
Commands->Start_Conversation( missileConv02, missileConv02 );*/
|
||
|
|
||
|
GameObject * pogController = Commands->Find_Object ( 104693 );
|
||
|
if (pogController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, pogController, M01_ADD_OBJECTIVE_POG_JDG, 300, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (action_id == engineIntroConv) //destroy engine terminals
|
||
|
{
|
||
|
//Commands->Send_Custom_Event( obj, obj, 0, 1, 2 );
|
||
|
|
||
|
Commands->Add_Objective( 200, OBJECTIVE_TYPE_SECONDARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Secondary_M04_02, NULL, IDS_Enc_Obj_Secondary_M04_02 );
|
||
|
|
||
|
GameObject * pogController = Commands->Find_Object ( 104693 );
|
||
|
if (pogController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, pogController, M01_ADD_OBJECTIVE_POG_JDG, 200, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject * target01 = Commands->Find_Object ( M04_ENGINEROOM_TARGET_01_JDG );
|
||
|
GameObject * target02 = Commands->Find_Object ( M04_ENGINEROOM_TARGET_02_JDG );
|
||
|
GameObject * target03 = Commands->Find_Object ( M04_ENGINEROOM_TARGET_03_JDG );
|
||
|
GameObject * target04 = Commands->Find_Object ( M04_ENGINEROOM_TARGET_04_JDG );
|
||
|
|
||
|
if (target01 != NULL)
|
||
|
{
|
||
|
Commands->Set_Obj_Radar_Blip_Shape ( target01, RADAR_BLIP_SHAPE_OBJECTIVE );
|
||
|
Commands->Set_Obj_Radar_Blip_Color ( target01, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
|
||
|
}
|
||
|
|
||
|
if (target02 != NULL)
|
||
|
{
|
||
|
Commands->Set_Obj_Radar_Blip_Shape ( target02, RADAR_BLIP_SHAPE_OBJECTIVE );
|
||
|
Commands->Set_Obj_Radar_Blip_Color ( target02, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
|
||
|
}
|
||
|
|
||
|
if (target03 != NULL)
|
||
|
{
|
||
|
Commands->Set_Obj_Radar_Blip_Shape ( target03, RADAR_BLIP_SHAPE_OBJECTIVE );
|
||
|
Commands->Set_Obj_Radar_Blip_Color ( target03, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
|
||
|
}
|
||
|
|
||
|
if (target04 != NULL)
|
||
|
{
|
||
|
Commands->Set_Obj_Radar_Blip_Shape ( target04, RADAR_BLIP_SHAPE_OBJECTIVE );
|
||
|
Commands->Set_Obj_Radar_Blip_Color ( target04, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (action_id == prisonKeyIntroConv) //get prison key from guard
|
||
|
{
|
||
|
Commands->Add_Objective( 110, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M04_02, NULL, IDS_Enc_Obj_Primary_M04_02 );
|
||
|
|
||
|
medlab_conv = Commands->Create_Conversation( "M04_Eva_Tells_Where_Guard_Is", 100, 100, false);
|
||
|
Commands->Join_Conversation( NULL, medlab_conv, false, true );
|
||
|
Commands->Start_Conversation( medlab_conv, medlab_conv );
|
||
|
Commands->Monitor_Conversation (obj, medlab_conv);
|
||
|
}
|
||
|
|
||
|
else if (action_id == medlab_conv) //get prison key from guard
|
||
|
{
|
||
|
GameObject * warden = Commands->Find_Object ( M04_PRISON_WARDEN_JDG );
|
||
|
if (warden != NULL)
|
||
|
{
|
||
|
Vector3 wardenLocation = Commands->Get_Position(warden );
|
||
|
Commands->Add_Radar_Marker ( 111, wardenLocation, RADAR_BLIP_SHAPE_OBJECTIVE, RADAR_BLIP_COLOR_PRIMARY_OBJECTIVE );
|
||
|
|
||
|
Commands->Set_Objective_HUD_Info_Position( 110, 92, "POG_M04_1_02.tga", IDS_POG_ACQUIRE, wardenLocation );
|
||
|
}//
|
||
|
}
|
||
|
|
||
|
else if (action_id == firstmateConv) //get level 2 key from first mate protectPOWsConv
|
||
|
{
|
||
|
Commands->Create_Sound ( "00-n040e", Vector3 (0,0,0), obj);
|
||
|
Commands->Add_Objective( 600, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M04_07, NULL, IDS_Enc_Obj_Primary_M04_07 );
|
||
|
Commands->Add_Radar_Marker ( 601, Commands->Get_Position( Commands->Find_Object ( M04_SHIPS_FIRST_MATE_JDG )), RADAR_BLIP_SHAPE_OBJECTIVE, RADAR_BLIP_COLOR_PRIMARY_OBJECTIVE );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 1, 2 );//this sets a small delay before havoc responds
|
||
|
|
||
|
GameObject * firstmate = Commands->Find_Object ( M04_SHIPS_FIRST_MATE_JDG );
|
||
|
if (firstmate != NULL)
|
||
|
{
|
||
|
Vector3 firstmateLocation = Commands->Get_Position(firstmate);
|
||
|
Commands->Set_Objective_HUD_Info_Position( 600, 93, "POG_M04_1_07.tga", IDS_POG_ACQUIRE, firstmateLocation );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (action_id == protectPOWsConv) //give protect prisoner objective
|
||
|
{
|
||
|
Commands->Add_Objective( 800, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M04_06, NULL, IDS_Enc_Obj_Primary_M04_06 );
|
||
|
Commands->Add_Radar_Marker ( 801, Vector3 (2.55f, -5.29f, -16.96f), RADAR_BLIP_SHAPE_OBJECTIVE, RADAR_BLIP_COLOR_PRIMARY_OBJECTIVE );
|
||
|
|
||
|
Vector3 subLocation (-0.401f, 3.878f, -8.850f);
|
||
|
Commands->Set_Objective_HUD_Info_Position( 800, 99, "POG_M04_1_06.tga", IDS_POG_PROTECT, subLocation );
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
/**********************************************************************************************************
|
||
|
The following are params for when the individual objectives are activated and announced
|
||
|
***********************************************************************************************************/
|
||
|
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == 1)//this will play a twiddler of Havoc accepting the objective
|
||
|
{
|
||
|
Commands->Debug_Message ( "**********************controller should be playing havoc affirmative twiddler now\n" );
|
||
|
Vector3 playerPosition = Commands->Get_Position (STAR);
|
||
|
Commands->Create_Sound ( "M04_Havoc_Affirmative_Twiddler", playerPosition, obj);
|
||
|
}
|
||
|
|
||
|
else if (param == 2)//this will play a twiddler of Havoc having finished the objective
|
||
|
{
|
||
|
//Commands->Create_Sound ( "Havoc Finished Objective Twiddler", Vector3 (0,0,0), obj);
|
||
|
}
|
||
|
|
||
|
else if (param == announce_prisoner_objective)
|
||
|
{
|
||
|
Commands->Debug_Message ( "**********************starting mission start conversation\n" );
|
||
|
missionIntroConv = Commands->Create_Conversation( "M04_Mission_Start_Conversation", 100, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, missionIntroConv, false, false );
|
||
|
///Commands->Join_Conversation( STAR, missionIntroConv, false, false );
|
||
|
Commands->Start_Conversation( missionIntroConv, missionIntroConv );
|
||
|
Commands->Monitor_Conversation (obj, missionIntroConv);
|
||
|
|
||
|
prisoner_primary_active = true;
|
||
|
//Commands->Create_Sound ( "00-n040e", Vector3 (0,0,0), obj);
|
||
|
|
||
|
//Commands->Send_Custom_Event( obj, obj, 0, 1, 2 );//this sets a small delay before havoc responds
|
||
|
mission_started = true;
|
||
|
//Commands->Send_Custom_Event( obj, obj, 0, attach_havocs_script, 0 );
|
||
|
|
||
|
GameObject * objectiveReminder = Commands->Find_Object ( 105760 );
|
||
|
if (objectiveReminder != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, objectiveReminder, M01_ADD_OBJECTIVE_POG_JDG, 0, 0 );
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
else if (param == announce_prison_guard_objective)
|
||
|
{
|
||
|
prisonKeyIntroConv = Commands->Create_Conversation( "M04_Add_PrisonKey_Objective", 100, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, prisonKeyIntroConv, false, false );
|
||
|
Commands->Start_Conversation( prisonKeyIntroConv, prisonKeyIntroConv );
|
||
|
Commands->Monitor_Conversation (obj, prisonKeyIntroConv);
|
||
|
|
||
|
GameObject * objectiveReminder = Commands->Find_Object ( 105760 );
|
||
|
if (objectiveReminder != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, objectiveReminder, M01_ADD_OBJECTIVE_POG_JDG, 2, 0 );
|
||
|
}
|
||
|
|
||
|
|
||
|
//Commands->Create_Sound ( "00-n040e", Vector3 (0,0,0), obj);
|
||
|
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 1, 2 );//this sets a small delay before havoc responds
|
||
|
//Commands->Send_Custom_Event( obj, obj, 0, tell_where_guard_is, 5 );
|
||
|
}
|
||
|
|
||
|
/*else if (param == attach_havocs_script)
|
||
|
{
|
||
|
if (STAR)
|
||
|
{
|
||
|
Commands->Attach_Script(STAR, "M04_Havocs_Script_JDG", "");
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, attach_havocs_script, 1 );
|
||
|
}
|
||
|
|
||
|
}*/
|
||
|
|
||
|
else if (param == announce_engine_room_objective)
|
||
|
{
|
||
|
engineIntroConv = Commands->Create_Conversation( "M04_Add_EngineRoom_Objective_Conversation", 100, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, engineIntroConv, false, false );
|
||
|
//Commands->Join_Conversation( STAR, engineIntroConv, false, false );
|
||
|
Commands->Start_Conversation( engineIntroConv, engineIntroConv );
|
||
|
Commands->Monitor_Conversation (obj, engineIntroConv);
|
||
|
}
|
||
|
|
||
|
else if (param == announce_missile_room_objective)//
|
||
|
{
|
||
|
missileConv = Commands->Create_Conversation( "M04_Add_MissileRoom_Objective_Conversation", 100, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, missileConv, false, false );
|
||
|
Commands->Start_Conversation( missileConv, missileConv );
|
||
|
Commands->Monitor_Conversation (obj, missileConv);
|
||
|
|
||
|
missile_primary_active = true;
|
||
|
|
||
|
GameObject * objectiveReminder = Commands->Find_Object ( 105760 );
|
||
|
if (objectiveReminder != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, objectiveReminder, M01_ADD_OBJECTIVE_POG_JDG, 1, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == announce_torpedo_room_objective)
|
||
|
{
|
||
|
torpedo_primary_active = true;
|
||
|
//Commands->Create_Sound ( "00-n040e", Vector3 (0,0,0), obj);
|
||
|
Commands->Add_Objective( 400, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M04_04, NULL, IDS_Enc_Obj_Primary_M04_04 );
|
||
|
Commands->Add_Radar_Marker ( 401, Commands->Get_Position( Commands->Find_Object ( 100409 )), RADAR_BLIP_SHAPE_OBJECTIVE, RADAR_BLIP_COLOR_PRIMARY_OBJECTIVE );
|
||
|
Commands->Add_Radar_Marker ( 402, Commands->Get_Position( Commands->Find_Object ( 100410 )), RADAR_BLIP_SHAPE_OBJECTIVE, RADAR_BLIP_COLOR_PRIMARY_OBJECTIVE );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 1, 2 );//this sets a small delay before havoc responds
|
||
|
|
||
|
GameObject * objectiveReminder = Commands->Find_Object ( 105760 );
|
||
|
if (objectiveReminder != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, objectiveReminder, M01_ADD_OBJECTIVE_POG_JDG, 5, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == announce_apache_objective)
|
||
|
{
|
||
|
Commands->Create_Sound ( "00-n042e", Vector3 (0,0,0), obj);
|
||
|
|
||
|
Commands->Add_Objective( 500, OBJECTIVE_TYPE_SECONDARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Secondary_M04_03, NULL, IDS_Enc_Obj_Secondary_M04_03 );
|
||
|
Commands->Set_Objective_Radar_Blip_Object(500, sender );
|
||
|
Commands->Set_Objective_HUD_Info( 500, 95, "POG_M04_2_02.tga", IDS_POG_DESTROY );
|
||
|
}
|
||
|
|
||
|
else if (param == announce_first_mate_objective && first_mate_primary_active != true && first_mate_primary_triggered == false)//
|
||
|
{
|
||
|
first_mate_primary_triggered = true;
|
||
|
first_mate_primary_active = true;
|
||
|
|
||
|
firstmateConv = Commands->Create_Conversation( "M04_Add_FirstMate_Objective_JDG", 100, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, firstmateConv, false, false );
|
||
|
Commands->Start_Conversation( firstmateConv, firstmateConv );
|
||
|
Commands->Monitor_Conversation (obj, firstmateConv);
|
||
|
|
||
|
GameObject * objectiveReminder = Commands->Find_Object ( 105760 );
|
||
|
if (objectiveReminder != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, objectiveReminder, M01_ADD_OBJECTIVE_POG_JDG, 3, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == announce_captain_objective)//M04_Add_Captains_Key_Objective_Conversation
|
||
|
{
|
||
|
int captainConv = Commands->Create_Conversation( "M04_Add_Captains_Key_Objective_Conversation", 100, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, captainConv, false, false );
|
||
|
Commands->Start_Conversation( captainConv, captainConv );
|
||
|
|
||
|
captain_primary_active = true;
|
||
|
//Commands->Create_Sound ( "00-n040e", Vector3 (0,0,0), obj);
|
||
|
Commands->Add_Objective( 700, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M04_05, NULL, IDS_Enc_Obj_Primary_M04_05 );
|
||
|
Commands->Add_Radar_Marker ( 701, Commands->Get_Position( Commands->Find_Object ( M04_SHIPS_CAPTAIN_JDG )), RADAR_BLIP_SHAPE_OBJECTIVE, RADAR_BLIP_COLOR_PRIMARY_OBJECTIVE );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 1, 4 );//this sets a small delay before havoc responds
|
||
|
|
||
|
GameObject * captain = Commands->Find_Object ( M04_SHIPS_CAPTAIN_JDG );
|
||
|
if (captain != NULL)
|
||
|
{
|
||
|
Vector3 captainLocation = Commands->Get_Position(captain);
|
||
|
Commands->Set_Objective_HUD_Info_Position( 700, 94, "POG_M04_1_05.tga", IDS_POG_ACQUIRE, captainLocation );
|
||
|
}
|
||
|
|
||
|
GameObject * objectiveReminder = Commands->Find_Object ( 105760 );
|
||
|
if (objectiveReminder != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, objectiveReminder, M01_ADD_OBJECTIVE_POG_JDG, 4, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == announce_get_back_to_sub)//
|
||
|
{
|
||
|
protectPOWsConv = Commands->Create_Conversation( "M04_Protect_The_Prisoners_Conversation", 100, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, protectPOWsConv, false, false );
|
||
|
Commands->Start_Conversation( protectPOWsConv, protectPOWsConv );
|
||
|
Commands->Monitor_Conversation (obj, protectPOWsConv);
|
||
|
|
||
|
GameObject * objectiveReminder = Commands->Find_Object ( 105760 );
|
||
|
if (objectiveReminder != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, objectiveReminder, M01_ADD_OBJECTIVE_POG_JDG, 6, 0 );
|
||
|
}
|
||
|
|
||
|
//Commands->Create_Sound ( "00-n040e", Vector3 (0,0,0), obj);
|
||
|
|
||
|
}
|
||
|
/**********************************************************************************************************
|
||
|
The following are params for when the individual objectives are completed.
|
||
|
***********************************************************************************************************/
|
||
|
else if (param == completed_prisoner_rescue)
|
||
|
{
|
||
|
prisoner_primary_active = false;
|
||
|
Commands->Create_Sound ( "00-n048e", Vector3 (0,0,0), obj);
|
||
|
Commands->Set_Objective_Status( 100, OBJECTIVE_STATUS_ACCOMPLISHED );
|
||
|
Commands->Clear_Radar_Marker ( 101 );
|
||
|
Commands->Clear_Radar_Marker ( 102 );
|
||
|
Commands->Clear_Radar_Marker ( 103 );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 2, 2 );//this sets a small delay before havoc responds
|
||
|
|
||
|
GameObject * objectiveReminder = Commands->Find_Object ( 105760 );
|
||
|
if (objectiveReminder != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, objectiveReminder, M01_REMOVE_OBJECTIVE_POG_JDG, 0, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == completed_get_the_key)
|
||
|
{
|
||
|
Commands->Create_Sound ( "00-n048e", Vector3 (0,0,0), obj);
|
||
|
Commands->Set_Objective_Status( 110, OBJECTIVE_STATUS_ACCOMPLISHED );
|
||
|
Commands->Clear_Radar_Marker ( 111 );
|
||
|
|
||
|
int cargo_conv1 = Commands->Create_Conversation( "M04_NowGoFreeThePrisoners_Conversation", 100, 1000, false);
|
||
|
//Commands->Join_Conversation( NULL, cargo_conv1, false, false, false);
|
||
|
Commands->Join_Conversation( STAR, cargo_conv1, false, false, false );
|
||
|
Commands->Start_Conversation( cargo_conv1, cargo_conv1 );
|
||
|
|
||
|
GameObject * objectiveReminder = Commands->Find_Object ( 105760 );
|
||
|
if (objectiveReminder != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, objectiveReminder, M01_REMOVE_OBJECTIVE_POG_JDG, 2, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == completed_engine_room_objective)
|
||
|
{
|
||
|
//Commands->Create_Sound ( "00-n050e", Vector3 (0,0,0), obj);
|
||
|
Commands->Set_Objective_Status( 200, OBJECTIVE_STATUS_ACCOMPLISHED );
|
||
|
|
||
|
Commands->Create_Object ( "POW_Armor_100", Vector3 (0.039f, -85.758f, -14.999f));
|
||
|
Commands->Create_Object ( "POW_Health_100", Vector3 (0.014f, -98.215f, -14.999f));
|
||
|
|
||
|
|
||
|
Commands->Create_Object ( "POW_GrenadeLauncher_Player", Vector3 (0.020f, -89.237f, -14.999f));
|
||
|
Commands->Create_Object ( "POW_GrenadeLauncher_Player", Vector3 (0.050f, -92.541f, -14.999f));
|
||
|
Commands->Create_Object ( "POW_GrenadeLauncher_Player", Vector3 (0.023f, -95.280f, -14.999f));
|
||
|
}
|
||
|
|
||
|
else if (param == completed_missile_room_objective)
|
||
|
{
|
||
|
missile_primary_active = false;
|
||
|
Commands->Create_Sound ( "00-n048e", Vector3 (0,0,0), obj);
|
||
|
Commands->Set_Objective_Status( 300, OBJECTIVE_STATUS_ACCOMPLISHED );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 2, 2 );//this sets a small delay before havoc responds
|
||
|
|
||
|
GameObject * objectiveReminder = Commands->Find_Object ( 105760 );
|
||
|
if (objectiveReminder != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, objectiveReminder, M01_REMOVE_OBJECTIVE_POG_JDG, 1, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == completed_torpedo_room_objective)
|
||
|
{
|
||
|
torpedo_primary_active = false;
|
||
|
Commands->Create_Sound ( "00-n048e", Vector3 (0,0,0), obj);
|
||
|
Commands->Set_Objective_Status( 400, OBJECTIVE_STATUS_ACCOMPLISHED );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 2, 2 );//this sets a small delay before havoc responds
|
||
|
|
||
|
GameObject * objectiveReminder = Commands->Find_Object ( 105760 );
|
||
|
if (objectiveReminder != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, objectiveReminder, M01_REMOVE_OBJECTIVE_POG_JDG, 5, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == completed_apache_objective)
|
||
|
{
|
||
|
Commands->Create_Sound ( "00-n050e", Vector3 (0,0,0), obj);
|
||
|
Commands->Set_Objective_Status( 500, OBJECTIVE_STATUS_ACCOMPLISHED );
|
||
|
}
|
||
|
|
||
|
else if (param == completed_first_mate_objective)
|
||
|
{
|
||
|
first_mate_primary_triggered = true;
|
||
|
first_mate_primary_active = false;
|
||
|
Commands->Create_Sound ( "00-n048e", Vector3 (0,0,0), obj);
|
||
|
Commands->Set_Objective_Status( 600, OBJECTIVE_STATUS_ACCOMPLISHED );
|
||
|
Commands->Clear_Radar_Marker ( 601 );
|
||
|
//Commands->Send_Custom_Event( obj, obj, 0, 2, 2 );//this sets a small delay before havoc responds
|
||
|
|
||
|
GameObject * shipCaptain = Commands->Find_Object ( M04_SHIPS_CAPTAIN_JDG );
|
||
|
if (shipCaptain != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, announce_captain_objective, 6 );
|
||
|
}
|
||
|
|
||
|
else if (shipCaptain == NULL)
|
||
|
{
|
||
|
//Commands->Send_Custom_Event( obj, obj, 0, announce_captain_objective, 6 );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, completed_captain_objective, 6 );
|
||
|
}
|
||
|
|
||
|
GameObject * objectiveReminder = Commands->Find_Object ( 105760 );
|
||
|
if (objectiveReminder != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, objectiveReminder, M01_REMOVE_OBJECTIVE_POG_JDG, 3, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == completed_captain_objective)
|
||
|
{
|
||
|
captain_primary_active = false;
|
||
|
//Commands->Create_Sound ( "00-n048e", Vector3 (0,0,0), obj);
|
||
|
Commands->Set_Objective_Status( 700, OBJECTIVE_STATUS_ACCOMPLISHED );
|
||
|
Commands->Clear_Radar_Marker ( 701 );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 2, 2 );//this sets a small delay before havoc responds
|
||
|
|
||
|
GameObject * objectiveReminder = Commands->Find_Object ( 105760 );
|
||
|
if (objectiveReminder != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, objectiveReminder, M01_REMOVE_OBJECTIVE_POG_JDG, 4, 0 );
|
||
|
}
|
||
|
|
||
|
if (prisoner_primary_active == false)
|
||
|
{
|
||
|
int reminderConv = Commands->Create_Conversation( "M04_Rally_Round_The_Sub_Boy_Conversation", 50, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, reminderConv, false, false );
|
||
|
Commands->Start_Conversation( reminderConv, reminderConv );
|
||
|
|
||
|
GameObject * objectiveReminder = Commands->Find_Object ( 105760 );
|
||
|
if (objectiveReminder != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, objectiveReminder, M01_ADD_OBJECTIVE_POG_JDG, 6, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (prisoner_primary_active == true)
|
||
|
{
|
||
|
int reminderConv = Commands->Create_Conversation( "M04_Mission_Start_Conversation", 50, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, reminderConv, false, false );
|
||
|
Commands->Start_Conversation( reminderConv, reminderConv );
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
else if (param == M01_END_MISSION_PASS_JDG)
|
||
|
{
|
||
|
Commands->Create_Sound ( "00-n048e", Vector3 (0,0,0), obj);
|
||
|
Commands->Mission_Complete ( true );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_DO_END_MISSION_CHECK_JDG)
|
||
|
{
|
||
|
if ((mission_started == true) && (captain_primary_active == false) && (first_mate_primary_active == false) && (torpedo_primary_active == false) && (missile_primary_active == false) && (prisoner_primary_active == false))
|
||
|
{
|
||
|
//Commands->Send_Custom_Event( obj, Commands->Find_Object (101194), 0, M01_START_ACTING_JDG, 0 );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_END_MISSION_PASS_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
/**********************************************************************************************************
|
||
|
The following are params for when the individual missiles and whatnot get acted on or destroyed.
|
||
|
***********************************************************************************************************/
|
||
|
else if (param == missile_01_sabotaged)//
|
||
|
{
|
||
|
//Commands->Clear_Radar_Marker ( 301 );
|
||
|
number_missiles_sabotaged++;
|
||
|
|
||
|
if (number_missiles_sabotaged == 1)
|
||
|
{
|
||
|
int missile_conv1 = Commands->Create_Conversation( "M04_MissileRack_01_Sabotaged_Conversation", 100, 1000, true);
|
||
|
Commands->Join_Conversation( NULL, missile_conv1, false, false, false);
|
||
|
Commands->Start_Conversation( missile_conv1, missile_conv1 );
|
||
|
}
|
||
|
|
||
|
else if (number_missiles_sabotaged == 2)
|
||
|
{
|
||
|
int missile_conv1 = Commands->Create_Conversation( "M04_MissileRack_02_Sabotaged_Conversation", 100, 1000, true);
|
||
|
Commands->Join_Conversation( NULL, missile_conv1, false, false, false);
|
||
|
Commands->Start_Conversation( missile_conv1, missile_conv1 );
|
||
|
}
|
||
|
|
||
|
else if (number_missiles_sabotaged == 3)
|
||
|
{
|
||
|
int missile_conv1 = Commands->Create_Conversation( "M04_MissileRack_03_Sabotaged_Conversation", 100, 1000, true);
|
||
|
Commands->Join_Conversation( NULL, missile_conv1, false, false, false);
|
||
|
Commands->Start_Conversation( missile_conv1, missile_conv1 );
|
||
|
}
|
||
|
|
||
|
else if (number_missiles_sabotaged >= 4)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, completed_missile_room_objective, 0 );
|
||
|
|
||
|
GameObject * bigSamZone = Commands->Find_Object ( 104942 );
|
||
|
if (bigSamZone != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, bigSamZone, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == missile_02_sabotaged)
|
||
|
{
|
||
|
//Commands->Clear_Radar_Marker ( 302 );
|
||
|
number_missiles_sabotaged++;
|
||
|
|
||
|
if (number_missiles_sabotaged == 1)
|
||
|
{
|
||
|
int missile_conv1 = Commands->Create_Conversation( "M04_MissileRack_01_Sabotaged_Conversation", 100, 1000, true);
|
||
|
Commands->Join_Conversation( NULL, missile_conv1, false, false, false);
|
||
|
Commands->Start_Conversation( missile_conv1, missile_conv1 );
|
||
|
}
|
||
|
|
||
|
else if (number_missiles_sabotaged == 2)
|
||
|
{
|
||
|
int missile_conv1 = Commands->Create_Conversation( "M04_MissileRack_02_Sabotaged_Conversation", 100, 1000, true);
|
||
|
Commands->Join_Conversation( NULL, missile_conv1, false, false, false);
|
||
|
Commands->Start_Conversation( missile_conv1, missile_conv1 );
|
||
|
}
|
||
|
|
||
|
else if (number_missiles_sabotaged == 3)
|
||
|
{
|
||
|
int missile_conv1 = Commands->Create_Conversation( "M04_MissileRack_03_Sabotaged_Conversation", 100, 1000, true);
|
||
|
Commands->Join_Conversation( NULL, missile_conv1, false, false, false);
|
||
|
Commands->Start_Conversation( missile_conv1, missile_conv1 );
|
||
|
}
|
||
|
|
||
|
else if (number_missiles_sabotaged >= 4)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, completed_missile_room_objective, 0 );
|
||
|
|
||
|
GameObject * bigSamZone = Commands->Find_Object ( 104942 );
|
||
|
if (bigSamZone != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, bigSamZone, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == missile_03_sabotaged)
|
||
|
{
|
||
|
//Commands->Clear_Radar_Marker ( 303 );
|
||
|
number_missiles_sabotaged++;
|
||
|
|
||
|
if (number_missiles_sabotaged == 1)
|
||
|
{
|
||
|
int missile_conv1 = Commands->Create_Conversation( "M04_MissileRack_01_Sabotaged_Conversation", 100, 1000, true);
|
||
|
Commands->Join_Conversation( NULL, missile_conv1, false, false, false);
|
||
|
Commands->Start_Conversation( missile_conv1, missile_conv1 );
|
||
|
}
|
||
|
|
||
|
else if (number_missiles_sabotaged == 2)
|
||
|
{
|
||
|
int missile_conv1 = Commands->Create_Conversation( "M04_MissileRack_02_Sabotaged_Conversation", 100, 1000, true);
|
||
|
Commands->Join_Conversation( NULL, missile_conv1, false, false, false);
|
||
|
Commands->Start_Conversation( missile_conv1, missile_conv1 );
|
||
|
}
|
||
|
|
||
|
else if (number_missiles_sabotaged == 3)
|
||
|
{
|
||
|
int missile_conv1 = Commands->Create_Conversation( "M04_MissileRack_03_Sabotaged_Conversation", 100, 1000, true);
|
||
|
Commands->Join_Conversation( NULL, missile_conv1, false, false, false);
|
||
|
Commands->Start_Conversation( missile_conv1, missile_conv1 );
|
||
|
}
|
||
|
|
||
|
else if (number_missiles_sabotaged >= 4)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, completed_missile_room_objective, 0 );
|
||
|
|
||
|
GameObject * bigSamZone = Commands->Find_Object ( 104942 );
|
||
|
if (bigSamZone != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, bigSamZone, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == missile_04_sabotaged)
|
||
|
{
|
||
|
//Commands->Clear_Radar_Marker ( 304 );
|
||
|
number_missiles_sabotaged++;
|
||
|
|
||
|
if (number_missiles_sabotaged == 1)
|
||
|
{
|
||
|
int missile_conv1 = Commands->Create_Conversation( "M04_MissileRack_01_Sabotaged_Conversation", 100, 1000, true);
|
||
|
Commands->Join_Conversation( NULL, missile_conv1, false, false, false);
|
||
|
Commands->Start_Conversation( missile_conv1, missile_conv1 );
|
||
|
}
|
||
|
|
||
|
else if (number_missiles_sabotaged == 2)
|
||
|
{
|
||
|
int missile_conv1 = Commands->Create_Conversation( "M04_MissileRack_02_Sabotaged_Conversation", 100, 1000, true);
|
||
|
Commands->Join_Conversation( NULL, missile_conv1, false, false, false);
|
||
|
Commands->Start_Conversation( missile_conv1, missile_conv1 );
|
||
|
}
|
||
|
|
||
|
else if (number_missiles_sabotaged == 3)
|
||
|
{
|
||
|
int missile_conv1 = Commands->Create_Conversation( "M04_MissileRack_03_Sabotaged_Conversation", 100, 1000, true);
|
||
|
Commands->Join_Conversation( NULL, missile_conv1, false, false, false);
|
||
|
Commands->Start_Conversation( missile_conv1, missile_conv1 );
|
||
|
}
|
||
|
|
||
|
else if (number_missiles_sabotaged >= 4)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, completed_missile_room_objective, 0 );
|
||
|
|
||
|
GameObject * bigSamZone = Commands->Find_Object ( 104942 );
|
||
|
if (bigSamZone != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, bigSamZone, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == engine_room_01_sabotaged)
|
||
|
{
|
||
|
number_engines_sabotaged++;
|
||
|
|
||
|
if (number_engines_sabotaged == 1)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0040I1EVAG_SND", Vector3 (0,0,0), obj);
|
||
|
}
|
||
|
|
||
|
else if (number_engines_sabotaged == 2)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0090I1EVAN_SND", Vector3 (0,0,0), obj);//intruder detected
|
||
|
}
|
||
|
|
||
|
else if (number_engines_sabotaged == 3)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0094I1EVAN_SND", Vector3 (0,0,0), obj);//engine failure emiment
|
||
|
}
|
||
|
|
||
|
else if (number_engines_sabotaged >= 4)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0095I1EVAN_SND", Vector3 (0,0,0), obj);//engine off line
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, completed_engine_room_objective, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == engine_room_02_sabotaged)
|
||
|
{
|
||
|
number_engines_sabotaged++;
|
||
|
|
||
|
if (number_engines_sabotaged == 1)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0040I1EVAG_SND", Vector3 (0,0,0), obj);
|
||
|
}
|
||
|
|
||
|
else if (number_engines_sabotaged == 2)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0090I1EVAN_SND", Vector3 (0,0,0), obj);//intruder detected
|
||
|
}
|
||
|
|
||
|
else if (number_engines_sabotaged == 3)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0094I1EVAN_SND", Vector3 (0,0,0), obj);//engine failure emiment
|
||
|
}
|
||
|
|
||
|
else if (number_engines_sabotaged >= 4)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0095I1EVAN_SND", Vector3 (0,0,0), obj);//engine off line
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, completed_engine_room_objective, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == engine_room_03_sabotaged)
|
||
|
{
|
||
|
number_engines_sabotaged++;
|
||
|
|
||
|
if (number_engines_sabotaged == 1)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0040I1EVAG_SND", Vector3 (0,0,0), obj);
|
||
|
}
|
||
|
|
||
|
else if (number_engines_sabotaged == 2)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0090I1EVAN_SND", Vector3 (0,0,0), obj);//intruder detected
|
||
|
}
|
||
|
|
||
|
else if (number_engines_sabotaged == 3)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0094I1EVAN_SND", Vector3 (0,0,0), obj);//engine failure emiment
|
||
|
}
|
||
|
|
||
|
else if (number_engines_sabotaged >= 4)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0095I1EVAN_SND", Vector3 (0,0,0), obj);//engine off line
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, completed_engine_room_objective, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == engine_room_04_sabotaged)
|
||
|
{
|
||
|
number_engines_sabotaged++;
|
||
|
|
||
|
if (number_engines_sabotaged == 1)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0040I1EVAG_SND", Vector3 (0,0,0), obj);
|
||
|
}
|
||
|
|
||
|
else if (number_engines_sabotaged == 2)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0090I1EVAN_SND", Vector3 (0,0,0), obj);//intruder detected
|
||
|
}
|
||
|
|
||
|
else if (number_engines_sabotaged == 3)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0094I1EVAN_SND", Vector3 (0,0,0), obj);//engine failure emiment
|
||
|
}
|
||
|
|
||
|
else if (number_engines_sabotaged >= 4)
|
||
|
{
|
||
|
Commands->Create_Sound ( "M04DSGN_DSGN0095I1EVAN_SND", Vector3 (0,0,0), obj);//engine off line
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, completed_engine_room_objective, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == torpedo_01_sabotaged)
|
||
|
{
|
||
|
Commands->Clear_Radar_Marker ( 401 );
|
||
|
number_torpedos_sabotaged++;
|
||
|
|
||
|
if (number_torpedos_sabotaged < 2)
|
||
|
{
|
||
|
int missile_conv1 = Commands->Create_Conversation( "M04_Torpedo_Sabotaged_Conversation", 100, 1000, true);
|
||
|
Commands->Join_Conversation( NULL, missile_conv1, false, false, false);
|
||
|
Commands->Start_Conversation( missile_conv1, missile_conv1 );
|
||
|
}
|
||
|
|
||
|
else if (number_torpedos_sabotaged >= 2)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, completed_torpedo_room_objective, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == torpedo_02_sabotaged)
|
||
|
{
|
||
|
Commands->Clear_Radar_Marker ( 402 );
|
||
|
number_torpedos_sabotaged++;
|
||
|
|
||
|
if (number_torpedos_sabotaged < 2)
|
||
|
{
|
||
|
int missile_conv1 = Commands->Create_Conversation( "M04_Torpedo_Sabotaged_Conversation", 100, 1000, true);
|
||
|
Commands->Join_Conversation( NULL, missile_conv1, false, false, false);
|
||
|
Commands->Start_Conversation( missile_conv1, missile_conv1 );
|
||
|
}
|
||
|
|
||
|
else if (number_torpedos_sabotaged >= 2)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, completed_torpedo_room_objective, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
/*****************************************************************************************************************
|
||
|
The following are the scripts for the dudes in the sub bay when the mission first starts.
|
||
|
*****************************************************************************************************************/
|
||
|
DECLARE_SCRIPT(M04_PointGuard_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
if (obj)
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_A01_Sniper_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( Vector3(-0.238f, 0.743f, 5.034f), WALK, .25f );
|
||
|
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
if (action_id == M01_WALKING_WAYPATH_01_JDG)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_01_JDG)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_02_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 100167;
|
||
|
params.WaypointStartID = 100168;
|
||
|
params.WaypointEndID = 100169;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_02_JDG)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_02_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_02_JDG)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_03_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 100171;
|
||
|
params.WaypointStartID = 100172;
|
||
|
params.WaypointEndID = 100175;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_03_JDG)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_03_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_03_JDG)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_04_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 100177;
|
||
|
params.WaypointStartID = 100178;
|
||
|
params.WaypointEndID = 100179;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_04_JDG)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_04_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_04_JDG)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_05_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 100181;
|
||
|
params.WaypointStartID = 100182;
|
||
|
params.WaypointEndID = 100183;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_05_JDG)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_05_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_05_JDG)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_02_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 100167;
|
||
|
params.WaypointStartID = 100168;
|
||
|
params.WaypointEndID = 100169;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_A01_PatrolGuy_01_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
|
||
|
}
|
||
|
};
|
||
|
/*********************************************************************************************************
|
||
|
The following scripts all deal with the first time through the cargo and missile rooms.
|
||
|
*************************************************************************************************************/
|
||
|
DECLARE_SCRIPT(M04_MissileRoom_EnterZone_Left_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_CARGOHOLD_CONTROLLER_JDG), 0, 600, 0 );//have leftside guard come in
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_CARGOHOLD_CONTROLLER_JDG), 0, 200, 0 );//put missile room guys to 50% priority
|
||
|
|
||
|
GameObject * zone02 = Commands->Find_Object (100583);//stays
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone04 = Commands->Find_Object (100585);
|
||
|
if (zone04 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone04 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_MissileRoom_EnterZone_Right_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_CARGOHOLD_CONTROLLER_JDG), 0, 500, 0 );//have rightside guard come in
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_CARGOHOLD_CONTROLLER_JDG), 0, 200, 0 );//put missile room guys to 50% priority
|
||
|
|
||
|
GameObject * zone02 = Commands->Find_Object (100583);//stays
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone04 = Commands->Find_Object (100585);//stays
|
||
|
if (zone04 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone04 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_CargoMissileRooms_Dude_Controller_JDG, "")//this guys ID number is M04_CARGOHOLD_CONTROLLER_JDG 100558
|
||
|
{
|
||
|
int missileRoomguardOne_ID;
|
||
|
int missileRoomguardTwo_ID;
|
||
|
int guardFive_ID;
|
||
|
int upperGuard01_ID;
|
||
|
int upperGuard02_ID;
|
||
|
|
||
|
//int cargo_conv1;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( missileRoomguardOne_ID, 1 );
|
||
|
SAVE_VARIABLE( missileRoomguardTwo_ID, 2 );
|
||
|
SAVE_VARIABLE( guardFive_ID, 3 );
|
||
|
SAVE_VARIABLE( upperGuard01_ID, 4 );
|
||
|
SAVE_VARIABLE( upperGuard02_ID, 5 );
|
||
|
//SAVE_VARIABLE( cargo_conv1, 6 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Enable_Hibernation( obj, false );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (param == 100)
|
||
|
{
|
||
|
GameObject *guardOne = Commands->Find_Object ( M04_CARGO_TALKGUY_01_JDG );
|
||
|
GameObject *guardTwo = Commands->Find_Object ( M04_CARGO_TALKGUY_02_JDG );
|
||
|
GameObject *guardThree = Commands->Find_Object ( M04_CARGO_TALKGUY_03_JDG );
|
||
|
|
||
|
if ((guardOne != NULL) && (guardTwo != NULL) && (guardThree != NULL))//
|
||
|
{
|
||
|
//cargo_conv1 = Commands->Create_Conversation( "M04_CargoHold_Conversation_01", 45, 1000, true);
|
||
|
//Commands->Join_Conversation( guardOne, cargo_conv1, false, false, false);
|
||
|
//Commands->Join_Conversation( guardTwo, cargo_conv1, false, false, false );
|
||
|
//Commands->Start_Conversation( cargo_conv1, cargo_conv1 );
|
||
|
//Commands->Monitor_Conversation( obj, cargo_conv1);
|
||
|
}
|
||
|
|
||
|
GameObject *guardSix = Commands->Create_Object ( "Nod_MiniGunner_1Off", Vector3(-14.44f, -40.82f, -9.00f));
|
||
|
Commands->Attach_Script(guardSix, "M04_CargoHold_Blackhand_02_JDG", "");//M01_Hunt_The_Player_JDG
|
||
|
|
||
|
GameObject *missileRoomguardOne = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-13.38f, -53.56f, -15.00f));
|
||
|
Commands->Attach_Script(missileRoomguardOne, "M04_MissileRoom_Guard_01_JDG", "");
|
||
|
|
||
|
GameObject *missileRoomguardTwo = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(13.37f, -61.28f, -15.00f));
|
||
|
Commands->Attach_Script(missileRoomguardTwo, "M04_MissileRoom_Guard_02_JDG", "");
|
||
|
|
||
|
GameObject *missileRoomUpperguardOne = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(9.485f, -66.975f, -9.00f));
|
||
|
Commands->Attach_Script(missileRoomUpperguardOne, "M04_MissileRoom_UpperGuard_01_JDG", "");
|
||
|
Commands->Set_Facing ( missileRoomUpperguardOne, 85 );
|
||
|
upperGuard01_ID = Commands->Get_ID ( missileRoomUpperguardOne );
|
||
|
|
||
|
GameObject *missileRoomUpperguardTwo = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-9.456f, -61.862f, -9.00f));
|
||
|
Commands->Attach_Script(missileRoomUpperguardTwo, "M04_MissileRoom_UpperGuard_02_JDG", "");
|
||
|
Commands->Set_Facing ( missileRoomUpperguardTwo, 95 );
|
||
|
upperGuard02_ID = Commands->Get_ID ( missileRoomUpperguardTwo );
|
||
|
|
||
|
missileRoomguardOne_ID = Commands->Get_ID ( missileRoomguardOne );
|
||
|
missileRoomguardTwo_ID = Commands->Get_ID ( missileRoomguardTwo );
|
||
|
}
|
||
|
|
||
|
else if (param == 200)//this sets the missile guards priority to 50 probably from 100
|
||
|
{
|
||
|
GameObject *missileRoomguardOne = Commands->Find_Object ( missileRoomguardOne_ID );
|
||
|
GameObject *missileRoomguardTwo = Commands->Find_Object ( missileRoomguardTwo_ID );
|
||
|
|
||
|
if (missileRoomguardOne != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, missileRoomguardOne, 200, 50, 0 );
|
||
|
}
|
||
|
|
||
|
if (missileRoomguardTwo != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, missileRoomguardTwo, 200, 50, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == 300)//this is when one of the missile room guards dies
|
||
|
{
|
||
|
float reinforceka = Commands->Get_Random ( 0.5, 2.5 );
|
||
|
|
||
|
if ((reinforceka >= 0.5) && (reinforceka < 1.5))
|
||
|
{
|
||
|
Commands->Trigger_Spawner( 100579 );
|
||
|
Commands->Trigger_Spawner( 100581 );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Commands->Trigger_Spawner( 100581 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == 500)//user is going through the right side door into missile room
|
||
|
{
|
||
|
GameObject *upperGuard01 = Commands->Find_Object ( upperGuard01_ID );
|
||
|
GameObject *upperGuard02 = Commands->Find_Object ( upperGuard02_ID );
|
||
|
|
||
|
if (upperGuard01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, upperGuard01, 0, M01_START_ATTACKING_01_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (upperGuard02 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, upperGuard02, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == 600)//user is going through the left side door into missile room
|
||
|
{
|
||
|
GameObject *upperGuard01 = Commands->Find_Object ( upperGuard01_ID );
|
||
|
GameObject *upperGuard02 = Commands->Find_Object ( upperGuard02_ID );
|
||
|
|
||
|
if (upperGuard01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, upperGuard01, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (upperGuard02 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, upperGuard02, 0, M01_START_ATTACKING_01_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == 800)//Officer has ragged on grunts--tell them to salute
|
||
|
{
|
||
|
GameObject * guardOne = Commands->Find_Object ( M04_CARGO_TALKGUY_01_JDG );
|
||
|
if (guardOne != NULL)
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 0, 1.5f );
|
||
|
Commands->Send_Custom_Event( obj, guardOne, 0, 100, delayTimer );
|
||
|
}
|
||
|
|
||
|
GameObject * guardTwo = Commands->Find_Object ( M04_CARGO_TALKGUY_02_JDG );
|
||
|
if (guardTwo != NULL)
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 0, 1.5f );
|
||
|
Commands->Send_Custom_Event( obj, guardTwo, 0, 100, delayTimer );
|
||
|
}
|
||
|
|
||
|
GameObject * guardThree = Commands->Find_Object ( M04_CARGO_TALKGUY_03_JDG );
|
||
|
if (guardThree != NULL)
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 0, 1.5f );
|
||
|
Commands->Send_Custom_Event( obj, guardThree, 0, 100, delayTimer );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
|
||
|
{
|
||
|
if (action_id == cargo_conv1)
|
||
|
{
|
||
|
GameObject *blackHand01 = Commands->Find_Object ( M04_CARGO_BLACKHAND_01_JDG );
|
||
|
|
||
|
if (blackHand01 != NULL)
|
||
|
{
|
||
|
Commands->Debug_Message ( "**********************cargo conv 01 is over--sending custom to blackhand guy\n" );
|
||
|
Commands->Send_Custom_Event( obj, blackHand01, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}*/
|
||
|
};
|
||
|
|
||
|
|
||
|
DECLARE_SCRIPT(M04_MissileRoom_UpperGuard_01_JDG, "")//left side
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
//Commands->Innate_Soldier_Enable_Actions ( obj, false );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (param == M01_START_ACTING_JDG)//player has entered area--back peddle towards the engine room
|
||
|
{
|
||
|
Vector3 gotoSpot (4.302f, -67.224f, -9);
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
|
||
|
params.Set_Movement( gotoSpot, RUN, .25f );
|
||
|
params.MoveBackup = true;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_START_ATTACKING_01_JDG)//player has entered area--attack him
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
//Commands->Innate_Soldier_Enable_Actions ( obj, true );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
if (action_id == M01_WALKING_WAYPATH_01_JDG)//you've reached your final guard spot--goto stationary
|
||
|
{
|
||
|
Commands->Attach_Script(obj, "M01_Hunt_The_Player_JDG", "");
|
||
|
//Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_MissileRoom_UpperGuard_02_JDG, "")//right side
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
//Commands->Innate_Soldier_Enable_Actions ( obj, false );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (param == M01_START_ACTING_JDG)//player has entered area--back peddle towards the engine room
|
||
|
{
|
||
|
Vector3 gotoSpot (-4.336f, -66.975f, -9);
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
|
||
|
params.Set_Movement( gotoSpot, RUN, .25f );
|
||
|
params.MoveBackup = true;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_START_ATTACKING_01_JDG)//player has entered area--attack him
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
//Commands->Innate_Soldier_Enable_Actions ( obj, true );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
if (action_id == M01_WALKING_WAYPATH_01_JDG)//you've reached your final guard spot--goto stationary
|
||
|
{
|
||
|
Commands->Attach_Script(obj, "M01_Hunt_The_Player_JDG", "");
|
||
|
//Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_CargoHold_TalkGuy01_JDG, "")//M04_CARGO_TALKGUY_01_JDG 101463
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
GameObject *blackhand = Commands->Find_Object ( M04_CARGO_BLACKHAND_01_JDG );
|
||
|
if (blackhand != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event ( obj, blackhand, 0, M01_START_ATTACKING_01_JDG, 0.5f );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_MODIFY_YOUR_ACTION_JDG)//you've been ragged on--salute then carry on
|
||
|
{
|
||
|
GameObject *blackhand = Commands->Find_Object ( M04_CARGO_BLACKHAND_01_JDG );
|
||
|
if (blackhand != NULL)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_START_ACTING_JDG);
|
||
|
params.Set_Attack( blackhand, 0, 0, true );
|
||
|
|
||
|
Commands->Action_Attack ( obj, params );
|
||
|
|
||
|
float delayTimer = Commands->Get_Random ( 0, 1 );
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_MODIFY_YOUR_ACTION_02_JDG, delayTimer );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_DOING_ANIMATION_01_JDG);
|
||
|
params.Set_Animation("H_A_J19A", false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
Vector3 myGotoSpot (-9.192f, 15.344f, -8.998f);
|
||
|
|
||
|
if (complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
if (action_id == M01_DOING_ANIMATION_01_JDG)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_DOING_ANIMATION_02_JDG);
|
||
|
params.Set_Animation("H_A_J19S", false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_02_JDG)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_DOING_ANIMATION_03_JDG);
|
||
|
params.Set_Animation("H_A_J19C", false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_03_JDG)
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
params.Set_Basic(this, 80, M01_WALKING_WAYPATH_01_JDG);
|
||
|
params.Set_Movement( myGotoSpot, WALK, 3, false );
|
||
|
Commands->Action_Goto ( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_03_JDG)
|
||
|
{
|
||
|
Commands->Set_Innate_Soldier_Home_Location ( obj, myGotoSpot, 10 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_CargoHold_TalkGuy02_JDG, "")//M04_CARGO_TALKGUY_02_JDG 101464
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
GameObject *blackhand = Commands->Find_Object ( M04_CARGO_BLACKHAND_01_JDG );
|
||
|
if (blackhand != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event ( obj, blackhand, 0, M01_START_ATTACKING_01_JDG, 0.5f );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_MODIFY_YOUR_ACTION_JDG)//you've been ragged on--salute then carry on
|
||
|
{
|
||
|
GameObject *blackhand = Commands->Find_Object ( M04_CARGO_BLACKHAND_01_JDG );
|
||
|
if (blackhand != NULL)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_START_ACTING_JDG);
|
||
|
params.Set_Attack( blackhand, 0, 0, true );
|
||
|
|
||
|
Commands->Action_Attack ( obj, params );
|
||
|
|
||
|
float delayTimer = Commands->Get_Random ( 0, 1 );
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_MODIFY_YOUR_ACTION_02_JDG, delayTimer );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_DOING_ANIMATION_01_JDG);
|
||
|
params.Set_Animation("H_A_J19A", false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
Vector3 myGotoSpot (11.168f, 19.847f, -15);
|
||
|
|
||
|
if (complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
if (action_id == M01_DOING_ANIMATION_01_JDG)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_DOING_ANIMATION_02_JDG);
|
||
|
params.Set_Animation("H_A_J19S", false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_02_JDG)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_DOING_ANIMATION_03_JDG);
|
||
|
params.Set_Animation("H_A_J19C", false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_03_JDG)
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
params.Set_Basic(this, 80, M01_WALKING_WAYPATH_01_JDG);
|
||
|
params.Set_Movement( myGotoSpot, WALK, 3, false );
|
||
|
Commands->Action_Goto ( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_03_JDG)
|
||
|
{
|
||
|
Commands->Set_Innate_Soldier_Home_Location ( obj, myGotoSpot, 10 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_CargoHold_TalkGuy03_JDG, "")//M04_CARGO_TALKGUY_03_JDG 101465
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
|
||
|
GameObject *guardOne = Commands->Find_Object ( M04_CARGO_TALKGUY_01_JDG );
|
||
|
if (guardOne != NULL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic(this, 100, M01_START_ACTING_JDG);
|
||
|
params.Set_Attack( guardOne, 0, 0, true );
|
||
|
|
||
|
Commands->Action_Attack ( obj, params );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
GameObject *blackhand = Commands->Find_Object ( M04_CARGO_BLACKHAND_01_JDG );
|
||
|
if (blackhand != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event ( obj, blackhand, 0, M01_START_ATTACKING_01_JDG, 0.5f );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_MODIFY_YOUR_ACTION_JDG)//you've been ragged on--salute then carry on
|
||
|
{
|
||
|
GameObject *blackhand = Commands->Find_Object ( M04_CARGO_BLACKHAND_01_JDG );
|
||
|
if (blackhand != NULL)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_START_ACTING_JDG);
|
||
|
params.Set_Attack( blackhand, 0, 0, true );
|
||
|
|
||
|
Commands->Action_Attack ( obj, params );
|
||
|
|
||
|
float delayTimer = Commands->Get_Random ( 0, 1 );
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_MODIFY_YOUR_ACTION_02_JDG, delayTimer );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_DOING_ANIMATION_01_JDG);
|
||
|
params.Set_Animation("H_A_J19A", false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
Vector3 myGotoSpot (-0.099f, -71.767f, -15);
|
||
|
|
||
|
if (complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
if (action_id == M01_DOING_ANIMATION_01_JDG)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_DOING_ANIMATION_02_JDG);
|
||
|
params.Set_Animation("H_A_J19S", false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_02_JDG)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_DOING_ANIMATION_03_JDG);
|
||
|
params.Set_Animation("H_A_J19C", false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_03_JDG)
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
params.Set_Basic(this, 80, M01_WALKING_WAYPATH_01_JDG);
|
||
|
params.Set_Movement( myGotoSpot, WALK, 3, false );
|
||
|
Commands->Action_Goto ( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_03_JDG)
|
||
|
{
|
||
|
Commands->Set_Innate_Soldier_Home_Location ( obj, myGotoSpot, 10 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_MissileRoom_Guard_01_JDG, "")
|
||
|
{
|
||
|
int curr_action_id;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( curr_action_id, 1 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, 1.5f );
|
||
|
params.WaypathID = 100555;
|
||
|
params.WaypointStartID = 100556;
|
||
|
params.WaypointEndID = 100557;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_CARGOHOLD_CONTROLLER_JDG), 0, 300, 0 );//tell controller youre dead
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 101 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, 1.5f );
|
||
|
params.WaypathID = 100541;
|
||
|
params.WaypointStartID = 100542;
|
||
|
params.WaypointEndID = 100544;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == 102 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 103 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, 1.5f );
|
||
|
params.WaypathID = 100546;
|
||
|
params.WaypointStartID = 100547;
|
||
|
params.WaypointEndID = 100548;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == 104 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 105 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, 1.5f );
|
||
|
params.WaypathID = 100550;
|
||
|
params.WaypointStartID = 100551;
|
||
|
params.WaypointEndID = 100553;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == 106 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 107 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, 1.5f );
|
||
|
params.WaypathID = 100555;
|
||
|
params.WaypointStartID = 100556;
|
||
|
params.WaypointEndID = 100557;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_MissileRoom_Guard_02_JDG, "")
|
||
|
{
|
||
|
int curr_action_id;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( curr_action_id, 1 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, 1.5f );
|
||
|
params.WaypathID = 100546;
|
||
|
params.WaypointStartID = 100547;
|
||
|
params.WaypointEndID = 100548;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_CARGOHOLD_CONTROLLER_JDG), 0, 300, 0 );//tell controller you're dead
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
if (action_id == 101 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, 1.5f );
|
||
|
params.WaypathID = 100550;
|
||
|
params.WaypointStartID = 100551;
|
||
|
params.WaypointEndID = 100553;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
if (action_id == 102 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 50, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
if (action_id == 103 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, 1.5f );
|
||
|
params.WaypathID = 100555;
|
||
|
params.WaypointStartID = 100556;
|
||
|
params.WaypointEndID = 100557;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
if (action_id == 104 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
if (action_id == 105 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, 1.5f );
|
||
|
params.WaypathID = 100541;
|
||
|
params.WaypointStartID = 100542;
|
||
|
params.WaypointEndID = 100544;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
if (action_id == 106 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
if (action_id == 107 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, 1.5f );
|
||
|
params.WaypathID = 100546;
|
||
|
params.WaypointStartID = 100547;
|
||
|
params.WaypointEndID = 100548;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_CargoHold_Blackhand_01_JDG, "")//M04_CARGO_BLACKHAND_01_JDG 101534
|
||
|
{
|
||
|
int cargo_conv2;
|
||
|
bool idle;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( cargo_conv2, 1 );
|
||
|
SAVE_VARIABLE( idle, 2 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
idle = true;
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
idle = false;
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
GameObject *guardOne = Commands->Find_Object ( M04_CARGO_TALKGUY_01_JDG );
|
||
|
if (guardOne != NULL)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( guardOne, WALK, 3.0f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 20 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == M01_START_ATTACKING_01_JDG && idle == true)
|
||
|
{
|
||
|
idle = false;
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
params.Set_Basic( this, 75, M01_WALKING_WAYPATH_03_JDG );
|
||
|
params.Set_Movement( STAR, RUN, 1 );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
if (action_id == M01_WALKING_WAYPATH_01_JDG)
|
||
|
{
|
||
|
/*GameObject *guardOne = Commands->Find_Object ( M04_CARGO_TALKGUY_01_JDG );
|
||
|
if (guardOne != NULL)
|
||
|
{
|
||
|
cargo_conv2 = Commands->Create_Conversation( "M04_CargoHold_Conversation_02", 50, 1000, true);
|
||
|
Commands->Join_Conversation( obj, cargo_conv2, false, false );
|
||
|
Commands->Join_Conversation( guardOne, cargo_conv2, false, false );
|
||
|
Commands->Start_Conversation( cargo_conv2, cargo_conv2 );
|
||
|
Commands->Monitor_Conversation( obj, cargo_conv2);
|
||
|
}*/
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_02_JDG)
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 20 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
|
||
|
{
|
||
|
if (action_id == cargo_conv2)
|
||
|
{
|
||
|
GameObject *guardOne = Commands->Find_Object ( M04_CARGO_TALKGUY_01_JDG );
|
||
|
GameObject *guardTwo = Commands->Find_Object ( M04_CARGO_TALKGUY_02_JDG );
|
||
|
GameObject *guardThree = Commands->Find_Object ( M04_CARGO_TALKGUY_03_JDG );
|
||
|
|
||
|
if (guardOne != NULL)
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 0, 1 );
|
||
|
Commands->Send_Custom_Event ( obj, guardOne, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
|
||
|
}
|
||
|
|
||
|
if (guardTwo != NULL)
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 0, 1 );
|
||
|
Commands->Send_Custom_Event ( obj, guardTwo, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
|
||
|
}
|
||
|
|
||
|
if (guardThree != NULL)
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 0, 1 );
|
||
|
Commands->Send_Custom_Event ( obj, guardThree, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
|
||
|
}
|
||
|
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_02_JDG );
|
||
|
params.Set_Movement( Vector3 (10.075f, -44.802f, -15), WALK, 1.5f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_CargoHold_Blackhand_02_JDG, "")
|
||
|
{
|
||
|
int curr_action_id;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( curr_action_id, 1 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, 1.5f );
|
||
|
params.WaypathID = 101018;
|
||
|
params.WaypointStartID = 101019;
|
||
|
params.WaypointEndID = 101022;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
if (action_id == 101 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, 1.5f );
|
||
|
params.WaypathID = 101024;
|
||
|
params.WaypointStartID = 101025;
|
||
|
params.WaypointEndID = 101028;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
if (action_id == 102 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
if (action_id == 103 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, 1.5f );
|
||
|
params.WaypathID = 101024;
|
||
|
params.WaypointStartID = 101028;
|
||
|
params.WaypointEndID = 101025;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
if (action_id == 104 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
if (action_id == 105 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, 1.5f );
|
||
|
params.WaypathID = 101018;
|
||
|
params.WaypointStartID = 101022;
|
||
|
params.WaypointEndID = 101019;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
/****************************************************************************************************************
|
||
|
The following scripts deal with the engine room--first time through
|
||
|
****************************************************************************************************************/
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_EnterZone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 430, 0 );//tell objective controller to announce objective
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_CARGOHOLD_CONTROLLER_JDG), 0, 700, 0 );//tell cargo/missile contoller to turn off spawners
|
||
|
|
||
|
GameObject * zone01 = Commands->Find_Object (100425);//stays
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone04 = Commands->Find_Object (100428);//stays
|
||
|
if (zone04 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone04 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_BuildingController_JDG, "")//M04_ENGINEROOM_BUILDING_CONTROLLER_JDG 150001
|
||
|
{
|
||
|
int targetsDestroyed;
|
||
|
int engineroom_sound01;
|
||
|
int engineroom_sound02;
|
||
|
int engineroom_sound03;
|
||
|
int engineroom_sound04;
|
||
|
int engineroom_sound05;
|
||
|
int engineroom_sound06;
|
||
|
int engineroom_sound07;
|
||
|
int engineroom_sound08;
|
||
|
int engineroom_sound09;
|
||
|
int engineroom_sound10;
|
||
|
int engineroom_sound11;
|
||
|
int engineroom_sound12;
|
||
|
int engineroom_sound13;
|
||
|
int engineroom_sound14;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( targetsDestroyed, 1 );
|
||
|
SAVE_VARIABLE( engineroom_sound01, 2 );
|
||
|
SAVE_VARIABLE( engineroom_sound02, 3 );
|
||
|
SAVE_VARIABLE( engineroom_sound03, 4 );
|
||
|
SAVE_VARIABLE( engineroom_sound04, 5 );
|
||
|
SAVE_VARIABLE( engineroom_sound05, 6 );
|
||
|
SAVE_VARIABLE( engineroom_sound06, 7 );
|
||
|
SAVE_VARIABLE( engineroom_sound07, 8 );
|
||
|
SAVE_VARIABLE( engineroom_sound08, 9 );
|
||
|
SAVE_VARIABLE( engineroom_sound09, 10 );
|
||
|
SAVE_VARIABLE( engineroom_sound10, 11 );
|
||
|
SAVE_VARIABLE( engineroom_sound11, 12 );
|
||
|
SAVE_VARIABLE( engineroom_sound12, 13 );
|
||
|
SAVE_VARIABLE( engineroom_sound13, 14 );
|
||
|
SAVE_VARIABLE( engineroom_sound14, 15 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
targetsDestroyed = 0;
|
||
|
engineroom_sound01 = Commands->Create_Sound ( "SFX.Machine_Turbine_01", Vector3 (5.970f, -104.759f, -15.143f), obj );
|
||
|
engineroom_sound02 = Commands->Create_Sound ( "SFX.Machine_Turbine_01_offset2", Vector3 (-6.021f, -104.445f, -15.157f), obj );
|
||
|
engineroom_sound03 = Commands->Create_Sound ( "SFX.Ship_Amb_Engineroom", Vector3 (-0.942f, -74.017f, -11.840f), obj );
|
||
|
engineroom_sound04 = Commands->Create_Sound ( "SFX.Steam_Med_Pressure_01_offset1", Vector3 (-9.838f, -76.426f, -13.498f), obj );
|
||
|
engineroom_sound05 = Commands->Create_Sound ( "Ship_Engine_01", Vector3 (-10.846f, -94.205f, -13.432f), obj );
|
||
|
engineroom_sound06 = Commands->Create_Sound ( "Ship_Engine_01", Vector3 (0.359f, -131.034f, 2.580f), obj );
|
||
|
engineroom_sound07 = Commands->Create_Sound ( "Ship_Engine_01_offset1", Vector3 (9.045f, -96.538f, -13.366f), obj );
|
||
|
engineroom_sound08 = Commands->Create_Sound ( "Ship_Engine_02", Vector3 (9.192f, -89.680f, -12.902f), obj );
|
||
|
engineroom_sound09 = Commands->Create_Sound ( "Ship_Engine_02", Vector3 (3.033f, -92.739f, 16.208f), obj );
|
||
|
engineroom_sound10 = Commands->Create_Sound ( "Ship_Engine_03", Vector3 (-5.870f, -84.200f, -13.423f), obj );
|
||
|
engineroom_sound11 = Commands->Create_Sound ( "Ship_Engine_03", Vector3 (7.588f, -83.956f, -13.481f), obj );
|
||
|
engineroom_sound12 = Commands->Create_Sound ( "Steam_Med_Pressure_01", Vector3 (9.726f, -78.736f, -14.079f), obj );
|
||
|
engineroom_sound13 = Commands->Create_Sound ( "SFX.Machine_Turbine_01", Vector3 (-0.757f, -60.372f, -7.924f), obj );
|
||
|
engineroom_sound14 = Commands->Create_Sound ( "Roomtone_Industrial_04_verb", Vector3 (8.568f, -67.182f, -6.454f), obj );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_IVE_BEEN_KILLED_JDG)
|
||
|
{
|
||
|
targetsDestroyed++;
|
||
|
|
||
|
if (targetsDestroyed == 4)
|
||
|
{
|
||
|
Commands->Stop_Sound ( engineroom_sound01, true);
|
||
|
Commands->Stop_Sound ( engineroom_sound02, true);
|
||
|
Commands->Stop_Sound ( engineroom_sound03, true);
|
||
|
Commands->Stop_Sound ( engineroom_sound04, true);
|
||
|
Commands->Stop_Sound ( engineroom_sound05, true);
|
||
|
Commands->Stop_Sound ( engineroom_sound06, true);
|
||
|
Commands->Stop_Sound ( engineroom_sound07, true);
|
||
|
Commands->Stop_Sound ( engineroom_sound08, true);
|
||
|
Commands->Stop_Sound ( engineroom_sound09, true);
|
||
|
Commands->Stop_Sound ( engineroom_sound10, true);
|
||
|
Commands->Stop_Sound ( engineroom_sound11, true);
|
||
|
Commands->Stop_Sound ( engineroom_sound12, true);
|
||
|
Commands->Stop_Sound ( engineroom_sound13, true);
|
||
|
Commands->Stop_Sound ( engineroom_sound14, true);
|
||
|
|
||
|
engineroom_sound01 = Commands->Create_Sound ( "SFX.Klaxon_Alert_02", Vector3 (-2.309f, -94.553f, -11.050f), obj );
|
||
|
engineroom_sound02 = Commands->Create_Sound ( "SFX.Klaxon_Alert_04", Vector3 (-0.715f, -88.220f, -10.745f), obj );
|
||
|
engineroom_sound03 = Commands->Create_Sound ( "SFX.Ship_Engine_Broken_01", Vector3 (9.731f, -95.172f, -11.028f), obj );
|
||
|
engineroom_sound04 = Commands->Create_Sound ( "SFX.Ship_Engine_Broken_01", Vector3 (-2.976f, -91.511f, -12.275f), obj );
|
||
|
engineroom_sound05 = Commands->Create_Sound ( "SFX.Ship_Engine_Broken_02", Vector3 (3.918f, -84.200f, -11.625f), obj );
|
||
|
engineroom_sound06 = Commands->Create_Sound ( "SFX.Ship_Engine_Broken_02", Vector3 (-9.033f, -96.617f, -12.678f), obj );
|
||
|
engineroom_sound07 = Commands->Create_Sound ( "SFX.Ship_Engine_Broken_03", Vector3 (2.750f, -93.408f, -12.047f), obj );
|
||
|
engineroom_sound08 = Commands->Create_Sound ( "SFX.Ship_Engine_Broken_03", Vector3 (-7.275f, -83.744f, -12.941f), obj );
|
||
|
engineroom_sound09 = Commands->Create_Sound ( "Ship_Engine_01", Vector3 (6.854f, -75.227f, -14.270f), obj );
|
||
|
engineroom_sound10 = Commands->Create_Sound ( "Ship_Engine_02", Vector3 (-9.464f, -76.808f, -15.745f), obj );
|
||
|
|
||
|
Commands->Debug_Message ( "**********************all engine room targets destroyed--applying damage to engine room\n" );
|
||
|
//Commands->Set_Health ( obj, 1 );
|
||
|
Commands->Apply_Damage( obj, 1000, "BlamoKiller", STAR );
|
||
|
|
||
|
Commands->Create_2D_Sound ( "SFX.Ship_Engine_Stop" );
|
||
|
//Commands->Create_2D_Sound ( "M04_EngineRoom_Alarm" );
|
||
|
|
||
|
Commands->Enable_Spawner( M04_ENGINEROOM_SPAWNER_01_JDG, true );
|
||
|
Commands->Enable_Spawner( M04_ENGINEROOM_SPAWNER_02_JDG, true );
|
||
|
|
||
|
GameObject * engineer = Commands->Find_Object ( M04_ENGINEROOM_CHIEF_ENGINEER_JDG );
|
||
|
GameObject * jimmy = Commands->Find_Object (M04_ENGINEROOM_TECH_01_JDG);
|
||
|
GameObject * johnny = Commands->Find_Object (M04_ENGINEROOM_TECH_02_JDG);
|
||
|
GameObject * bobby = Commands->Find_Object (M04_ENGINEROOM_TECH_03_JDG);
|
||
|
GameObject * williams = Commands->Find_Object (M04_ENGINEROOM_TECH_04_JDG);//M01_MODIFY_YOUR_ACTION_02_JDG
|
||
|
|
||
|
if (engineer != NULL)
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 0, 0.5f );
|
||
|
Commands->Send_Custom_Event ( obj, engineer, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
|
||
|
}
|
||
|
|
||
|
if (jimmy != NULL)
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 0, 0.5f );
|
||
|
Commands->Send_Custom_Event ( obj, jimmy, 0, M01_MODIFY_YOUR_ACTION_02_JDG, delayTimer );
|
||
|
}
|
||
|
|
||
|
if (johnny != NULL)
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 0, 0.5f );
|
||
|
Commands->Send_Custom_Event ( obj, johnny, 0, M01_MODIFY_YOUR_ACTION_02_JDG, delayTimer );
|
||
|
}
|
||
|
|
||
|
if (bobby != NULL)
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 0, 0.5f );
|
||
|
Commands->Send_Custom_Event ( obj, bobby, 0, M01_MODIFY_YOUR_ACTION_02_JDG, delayTimer );
|
||
|
}
|
||
|
|
||
|
if (williams != NULL)
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 0, 0.5f );
|
||
|
Commands->Send_Custom_Event ( obj, williams, 0, M01_MODIFY_YOUR_ACTION_02_JDG, delayTimer );
|
||
|
}
|
||
|
|
||
|
GameObject* guard01 = Commands->Find_Object ( M04_ENGINEROOM_PRISONGUARD_01_JDG );
|
||
|
if (guard01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, guard01, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject* guard02 = Commands->Find_Object ( M04_ENGINEROOM_PRISONGUARD_02_JDG );
|
||
|
if (guard02 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, guard02, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject* hunterController = Commands->Find_Object ( M04_ENGINEROOM_HUNTING_CONTROLLER_JDG );
|
||
|
if (hunterController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, hunterController, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_ChiefEngineer_JDG, "")// M04_ENGINEROOM_CHIEF_ENGINEER_JDG 101762
|
||
|
{
|
||
|
typedef enum {
|
||
|
IDLE,
|
||
|
GOING_TO_WILLIAMS_01,
|
||
|
GOING_TO_BOBBY_01,
|
||
|
GOING_TO_JIMMY_01,
|
||
|
GOING_TO_JOHNNY,
|
||
|
GOING_TO_BOBBY_02,
|
||
|
GOING_TO_JIMMY_02,
|
||
|
GOING_TO_WILLIAMS_02,
|
||
|
ALERTED,
|
||
|
FINISHED,
|
||
|
|
||
|
} M04EngineRoom_Location;
|
||
|
|
||
|
M04EngineRoom_Location chiefs_location;
|
||
|
|
||
|
bool williams_is_dead;
|
||
|
bool bobby_is_dead;
|
||
|
bool johnny_is_dead;
|
||
|
bool jimmy_is_dead;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( williams_is_dead, 1 );
|
||
|
SAVE_VARIABLE( bobby_is_dead, 2 );
|
||
|
SAVE_VARIABLE( johnny_is_dead, 3 );
|
||
|
SAVE_VARIABLE( jimmy_is_dead, 4 );
|
||
|
SAVE_VARIABLE( chiefs_location, 5 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
williams_is_dead = false;
|
||
|
bobby_is_dead = false;
|
||
|
johnny_is_dead = false;
|
||
|
jimmy_is_dead = false;
|
||
|
|
||
|
Commands->Innate_Soldier_Enable_Footsteps_Heard ( obj, false );
|
||
|
chiefs_location = IDLE;
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, 1 );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_IVE_BEEN_KILLED_JDG)
|
||
|
{
|
||
|
GameObject * jimmy = Commands->Find_Object (M04_ENGINEROOM_TECH_01_JDG);
|
||
|
GameObject * johnny = Commands->Find_Object (M04_ENGINEROOM_TECH_02_JDG);
|
||
|
GameObject * bobby = Commands->Find_Object (M04_ENGINEROOM_TECH_03_JDG);
|
||
|
GameObject * williams = Commands->Find_Object (M04_ENGINEROOM_TECH_04_JDG);
|
||
|
|
||
|
if (sender == jimmy)
|
||
|
{
|
||
|
jimmy_is_dead = true;
|
||
|
}
|
||
|
|
||
|
else if (sender == johnny)
|
||
|
{
|
||
|
johnny_is_dead = true;
|
||
|
}
|
||
|
|
||
|
else if (sender == bobby)
|
||
|
{
|
||
|
bobby_is_dead = true;
|
||
|
}
|
||
|
|
||
|
else if (sender == williams)
|
||
|
{
|
||
|
williams_is_dead = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_JDG)//someone's missing--look around then goto innate
|
||
|
{
|
||
|
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation( "H_A_J21C", false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
chiefs_location = ALERTED;
|
||
|
}
|
||
|
|
||
|
else if (param == M01_PICK_A_NEW_LOCATION_JDG)
|
||
|
{
|
||
|
Vector3 jimmys_location (7.6f, -107.2f, -15);
|
||
|
Vector3 johnnys_location (-2.5f, -102.8f, -15);
|
||
|
Vector3 bobbys_location (-0.6f, -74.4f, -18);
|
||
|
Vector3 williams_location (5.8f, -82, -18);
|
||
|
|
||
|
if (chiefs_location == IDLE)
|
||
|
{
|
||
|
params.Set_Basic( this, 50, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( williams_location, WALK, 0.5f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
chiefs_location = GOING_TO_WILLIAMS_01;
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_WILLIAMS_01)
|
||
|
{
|
||
|
params.Set_Basic( this, 50, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( bobbys_location, WALK, 0.5f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
chiefs_location = GOING_TO_BOBBY_01;
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_BOBBY_01)
|
||
|
{
|
||
|
params.Set_Basic( this, 50, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( jimmys_location, WALK, 0.5f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
chiefs_location = GOING_TO_JIMMY_01;
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_JIMMY_01)
|
||
|
{
|
||
|
params.Set_Basic( this, 50, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( johnnys_location, WALK, 0.5f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
chiefs_location = GOING_TO_JOHNNY;
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_JOHNNY)
|
||
|
{
|
||
|
params.Set_Basic( this, 50, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( bobbys_location, WALK, 0.5f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
chiefs_location = GOING_TO_BOBBY_02;
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_BOBBY_02)
|
||
|
{
|
||
|
params.Set_Basic( this, 50, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( jimmys_location, WALK, 0.5f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
chiefs_location = GOING_TO_JIMMY_02;
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_JIMMY_02)
|
||
|
{
|
||
|
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( williams_location, WALK, 0.5f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
chiefs_location = GOING_TO_WILLIAMS_02;
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_WILLIAMS_02)
|
||
|
{
|
||
|
Vector3 gotoPosition (-0.82f, -91.56f, -15);
|
||
|
params.Set_Basic( this, 50, M01_WALKING_WAYPATH_02_JDG );
|
||
|
params.Set_Movement( gotoPosition, WALK, 0.5f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
chiefs_location = FINISHED;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
GameObject * jimmy = Commands->Find_Object (M04_ENGINEROOM_TECH_01_JDG);
|
||
|
GameObject * johnny = Commands->Find_Object (M04_ENGINEROOM_TECH_02_JDG);
|
||
|
GameObject * bobby = Commands->Find_Object (M04_ENGINEROOM_TECH_03_JDG);
|
||
|
GameObject * williams = Commands->Find_Object (M04_ENGINEROOM_TECH_04_JDG);
|
||
|
|
||
|
if (complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
if (action_id == M01_DOING_ANIMATION_01_JDG)
|
||
|
{
|
||
|
Vector3 gotoPosition (-0.82f, -91.56f, -15);
|
||
|
params.Set_Basic( this, 80, M01_WALKING_WAYPATH_02_JDG );
|
||
|
params.Set_Movement( gotoPosition, RUN, 0.5f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_02_JDG)
|
||
|
{
|
||
|
Vector3 gotoPosition (-0.82f, -91.56f, -15);
|
||
|
Commands->Set_Innate_Soldier_Home_Location ( obj, gotoPosition, 10 );
|
||
|
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Create_Sound ( "TargetHasBeenEngaged_2", myPosition, obj );
|
||
|
|
||
|
GameObject * jimmy = Commands->Find_Object (M04_ENGINEROOM_TECH_01_JDG);
|
||
|
GameObject * johnny = Commands->Find_Object (M04_ENGINEROOM_TECH_02_JDG);
|
||
|
GameObject * bobby = Commands->Find_Object (M04_ENGINEROOM_TECH_03_JDG);
|
||
|
GameObject * williams = Commands->Find_Object (M04_ENGINEROOM_TECH_04_JDG);
|
||
|
|
||
|
if (jimmy != NULL)
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 0, 0.5f );
|
||
|
Commands->Send_Custom_Event ( obj, jimmy, 0, M01_MODIFY_YOUR_ACTION_02_JDG, delayTimer );
|
||
|
}
|
||
|
|
||
|
if (johnny != NULL)
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 0, 0.5f );
|
||
|
Commands->Send_Custom_Event ( obj, johnny, 0, M01_MODIFY_YOUR_ACTION_02_JDG, delayTimer );
|
||
|
}
|
||
|
|
||
|
if (bobby != NULL)
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 0, 0.5f );
|
||
|
Commands->Send_Custom_Event ( obj, bobby, 0, M01_MODIFY_YOUR_ACTION_02_JDG, delayTimer );
|
||
|
}
|
||
|
|
||
|
if (williams != NULL)
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 0, 0.5f );
|
||
|
Commands->Send_Custom_Event ( obj, williams, 0, M01_MODIFY_YOUR_ACTION_02_JDG, delayTimer );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_01_JDG)
|
||
|
{
|
||
|
if (chiefs_location == GOING_TO_WILLIAMS_01)
|
||
|
{
|
||
|
if (williams != NULL && williams_is_dead == false)
|
||
|
{
|
||
|
//int williams01 = Commands->Create_Conversation( "M04_EngineRoom_Williams_01_Conversation", 50, 50, true);
|
||
|
//Commands->Join_Conversation( obj, williams01, false, true, true );
|
||
|
//Commands->Join_Conversation( williams, williams01, false, true, true );
|
||
|
//Commands->Start_Conversation( williams01, williams01 );
|
||
|
//Commands->Monitor_Conversation( obj, williams01 );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
chiefs_location = ALERTED;
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_BOBBY_01)
|
||
|
{
|
||
|
if (bobby != NULL && bobby_is_dead == false)
|
||
|
{
|
||
|
//int bobby01 = Commands->Create_Conversation( "M04_EngineRoom_Bobby_01_Conversation", 50, 50, true);
|
||
|
//Commands->Join_Conversation( obj, bobby01, false, true, true );
|
||
|
//Commands->Join_Conversation( bobby, bobby01, false, true, true );
|
||
|
//Commands->Start_Conversation( bobby01, bobby01 );
|
||
|
//Commands->Monitor_Conversation( obj, bobby01 );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
chiefs_location = ALERTED;//
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_JIMMY_01)
|
||
|
{
|
||
|
if (jimmy != NULL && jimmy_is_dead == false)
|
||
|
{
|
||
|
//int jimmy01 = Commands->Create_Conversation( "M04_EngineRoom_Jimmy_01_Conversation", 50, 50, true);
|
||
|
//Commands->Join_Conversation( obj, jimmy01, false, true, true );
|
||
|
//Commands->Join_Conversation( jimmy, jimmy01, false, true, true );
|
||
|
//Commands->Start_Conversation( jimmy01, jimmy01 );
|
||
|
//Commands->Monitor_Conversation( obj, jimmy01 );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
chiefs_location = ALERTED;//GOING_TO_JIMMY_01
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_JOHNNY)
|
||
|
{
|
||
|
if (johnny != NULL && johnny_is_dead == false)
|
||
|
{
|
||
|
//int johnny01 = Commands->Create_Conversation( "M04_EngineRoom_Tech04_01_Conversation", 50, 50, true);
|
||
|
//Commands->Join_Conversation( obj, johnny01, false, true, true );
|
||
|
//Commands->Join_Conversation( johnny, johnny01, false, true, true );
|
||
|
//Commands->Start_Conversation( johnny01, johnny01 );
|
||
|
//Commands->Monitor_Conversation( obj, johnny01 );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
chiefs_location = ALERTED;//GOING_TO_JIMMY_01
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_BOBBY_02)
|
||
|
{
|
||
|
if (bobby != NULL && bobby_is_dead == false)
|
||
|
{
|
||
|
//int bobby01 = Commands->Create_Conversation( "M04_EngineRoom_Bobby_02_Conversation", 50, 50, true);
|
||
|
//Commands->Join_Conversation( obj, bobby01, false, true, true );
|
||
|
//Commands->Join_Conversation( bobby, bobby01, false, true, true );
|
||
|
//Commands->Start_Conversation( bobby01, bobby01 );
|
||
|
//Commands->Monitor_Conversation( obj, bobby01 );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
chiefs_location = ALERTED;//
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_JIMMY_02)
|
||
|
{
|
||
|
if (jimmy != NULL && jimmy_is_dead == false)
|
||
|
{
|
||
|
//int jimmy01 = Commands->Create_Conversation( "M04_EngineRoom_Jimmy_02_Conversation", 50, 50, true);
|
||
|
//Commands->Join_Conversation( obj, jimmy01, false, true, true );
|
||
|
//Commands->Join_Conversation( jimmy, jimmy01, false, true, true );
|
||
|
//Commands->Start_Conversation( jimmy01, jimmy01 );
|
||
|
//Commands->Monitor_Conversation( obj, jimmy01 );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
chiefs_location = ALERTED;//GOING_TO_JIMMY_01
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_WILLIAMS_02)
|
||
|
{
|
||
|
if (williams != NULL && williams_is_dead == false)
|
||
|
{
|
||
|
//int williams01 = Commands->Create_Conversation( "M04_EngineRoom_Williams_02_Conversation", 50, 50, true);
|
||
|
//Commands->Join_Conversation( obj, williams01, false, true, true );
|
||
|
//Commands->Join_Conversation( williams, williams01, false, true, true );
|
||
|
//Commands->Start_Conversation( williams01, williams01 );
|
||
|
//Commands->Monitor_Conversation( obj, williams01 );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
chiefs_location = ALERTED;
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, 1 );
|
||
|
|
||
|
GameObject * jimmy = Commands->Find_Object (M04_ENGINEROOM_TECH_01_JDG);
|
||
|
GameObject * johnny = Commands->Find_Object (M04_ENGINEROOM_TECH_02_JDG);
|
||
|
GameObject * bobby = Commands->Find_Object (M04_ENGINEROOM_TECH_03_JDG);
|
||
|
GameObject * williams = Commands->Find_Object (M04_ENGINEROOM_TECH_04_JDG);
|
||
|
|
||
|
if (chiefs_location == GOING_TO_WILLIAMS_01)
|
||
|
{
|
||
|
if (williams != NULL && williams_is_dead == false)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, williams, 0, M01_START_ACTING_JDG, 0.25f );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_BOBBY_01)
|
||
|
{
|
||
|
if (bobby != NULL && bobby_is_dead == false)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, bobby, 0, M01_START_ACTING_JDG, 0.25f );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_JIMMY_01)
|
||
|
{
|
||
|
if (jimmy != NULL && jimmy_is_dead == false)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, jimmy, 0, M01_START_ACTING_JDG, 0.25f );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_JOHNNY)
|
||
|
{
|
||
|
if (johnny != NULL && johnny_is_dead == false)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, johnny, 0, M01_START_ACTING_JDG, 0.25f );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_BOBBY_02)
|
||
|
{
|
||
|
if (bobby != NULL && bobby_is_dead == false)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, bobby, 0, M01_START_ACTING_JDG, 0.25f );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_JIMMY_02)
|
||
|
{
|
||
|
if (jimmy != NULL && jimmy_is_dead == false)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, jimmy, 0, M01_START_ACTING_JDG, 0.25f );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (chiefs_location == GOING_TO_WILLIAMS_02)
|
||
|
{
|
||
|
if (williams != NULL && williams_is_dead == false)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, williams, 0, M01_START_ACTING_JDG, 0.25f );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_PrisonLift_EnterZone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
Vector3 spawnSpot (-0.512f, -95.434f, 0);
|
||
|
GameObject * liftEngineer = Commands->Create_Object ( "Nod_Engineer_0", spawnSpot );
|
||
|
Commands->Attach_Script(liftEngineer, "M04_EngineRoom_LiftEngineer_JDG", "");
|
||
|
|
||
|
GameObject * zone01 = Commands->Find_Object (101121);
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone02 = Commands->Find_Object (101122);
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone03 = Commands->Find_Object (101123);
|
||
|
if (zone03 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone03 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_LiftEngineer_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, 101 );
|
||
|
params.Set_Movement( Vector3(-0.19f, -105.53f, -9), RUN, 1 );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_Start_Guard_Conversation_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
GameObject * prisonGuard01 = Commands->Find_Object ( M04_ENGINEROOM_PRISONGUARD_01_JDG );
|
||
|
GameObject * prisonGuard02 = Commands->Find_Object ( M04_ENGINEROOM_PRISONGUARD_02_JDG );
|
||
|
|
||
|
if (prisonGuard01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, prisonGuard01, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (prisonGuard02 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, prisonGuard02, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_Prison_Guard_01_JDG, "")//M04_ENGINEROOM_PRISONGUARD_01_JDG 101988
|
||
|
{
|
||
|
int haze_prisoner_conv;
|
||
|
int counter;
|
||
|
bool engineDestroyed;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(engineDestroyed, 1);
|
||
|
SAVE_VARIABLE(haze_prisoner_conv, 2);
|
||
|
SAVE_VARIABLE(counter, 3);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
engineDestroyed = false;
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
Commands->Innate_Soldier_Enable_Footsteps_Heard ( obj, false );
|
||
|
counter = 0;
|
||
|
|
||
|
GameObject * prisoner = Commands->Find_Object ( 100011 );
|
||
|
if (prisoner != NULL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_FACING_SPECIFIED_DIRECTION_01_JDG);
|
||
|
params.Set_Attack( prisoner, 0, 0, true );
|
||
|
Commands->Action_Attack ( obj, params );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
if (obj && damager == STAR)
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
|
||
|
GameObject* guard02 = Commands->Find_Object ( M04_ENGINEROOM_PRISONGUARD_02_JDG );
|
||
|
if (guard02 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, guard02, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
GameObject* prisoner01 = Commands->Find_Object ( M04_PRISON_PRISONER_01_JDG );
|
||
|
if (prisoner01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, prisoner01, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject* guard02 = Commands->Find_Object ( M04_ENGINEROOM_PRISONGUARD_02_JDG );
|
||
|
if (guard02 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, guard02, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom (GameObject* obj, int type, int param, GameObject* sender)
|
||
|
{
|
||
|
if (param == M01_START_ACTING_JDG && engineDestroyed == false)//controller is telling you to start acting
|
||
|
{
|
||
|
if (obj)
|
||
|
{
|
||
|
if (counter >= 3)
|
||
|
{
|
||
|
counter = 0;
|
||
|
}
|
||
|
GameObject* guard02 = Commands->Find_Object ( M04_ENGINEROOM_PRISONGUARD_02_JDG );
|
||
|
if (obj && guard02 != NULL )
|
||
|
{
|
||
|
char *conversations[3] =
|
||
|
{
|
||
|
"M04_PrisonHazing_Conversation_01",
|
||
|
"M04_PrisonHazing_Conversation_02",
|
||
|
"M04_PrisonHazing_Conversation_03",
|
||
|
//"M04_PrisonHazing_Conversation_04",
|
||
|
};
|
||
|
|
||
|
haze_prisoner_conv = Commands->Create_Conversation( conversations[counter], 65, 100, true);
|
||
|
Commands->Join_Conversation( obj, haze_prisoner_conv, false, false );
|
||
|
Commands->Join_Conversation( guard02, haze_prisoner_conv, false, false );
|
||
|
Commands->Start_Conversation( haze_prisoner_conv, haze_prisoner_conv );
|
||
|
Commands->Monitor_Conversation( obj, haze_prisoner_conv );
|
||
|
counter++;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == M01_START_ACTING_JDG && engineDestroyed == true)//controller is telling you to start acting--engines destroyed
|
||
|
{
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
Commands->Innate_Soldier_Enable_Footsteps_Heard ( obj, true );
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_IVE_BEEN_KILLED_JDG)//guard two has been killed/injured M01_MODIFY_YOUR_ACTION_JDG
|
||
|
{
|
||
|
if (obj)
|
||
|
{
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_FACING_SPECIFIED_DIRECTION_01_JDG);
|
||
|
params.Set_Attack( STAR, 10, 0, true );
|
||
|
Commands->Action_Attack ( obj, params );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_JDG)//the engine has been destroyed--enable foostep hearing
|
||
|
{
|
||
|
engineDestroyed = true;
|
||
|
Commands->Innate_Soldier_Enable_Footsteps_Heard ( obj, true );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
switch (complete_reason)
|
||
|
{
|
||
|
case ACTION_COMPLETE_CONVERSATION_ENDED:
|
||
|
{
|
||
|
if (action_id == haze_prisoner_conv)
|
||
|
{
|
||
|
if ( obj)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ACTING_JDG, 1 );//pick a new conversation
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_Prison_Guard_02_JDG, "")//M04_ENGINEROOM_PRISONGUARD_02_JDG 101989
|
||
|
{
|
||
|
bool engineDestroyed;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(engineDestroyed, 1);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
engineDestroyed = false;
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
Commands->Innate_Soldier_Enable_Footsteps_Heard ( obj, false );
|
||
|
|
||
|
GameObject * prisoner = Commands->Find_Object ( M04_PRISON_PRISONER_01_JDG );
|
||
|
if (prisoner != NULL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, 999);
|
||
|
params.Set_Attack( prisoner, 0, 0, true );
|
||
|
Commands->Action_Attack ( obj, params );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
if (obj && damager == STAR)
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
GameObject* guard01 = Commands->Find_Object ( M04_ENGINEROOM_PRISONGUARD_01_JDG );
|
||
|
if (guard01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, guard01, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
GameObject* prisoner01 = Commands->Find_Object ( M04_PRISON_PRISONER_01_JDG );
|
||
|
if (prisoner01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, prisoner01, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject* guard01 = Commands->Find_Object ( M04_ENGINEROOM_PRISONGUARD_01_JDG );
|
||
|
if (guard01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, guard01, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom (GameObject* obj, int type, int param, GameObject* sender)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (param == M01_START_ACTING_JDG && engineDestroyed == false)//controller is telling you to start acting
|
||
|
{
|
||
|
}
|
||
|
|
||
|
else if (param == M01_START_ACTING_JDG && engineDestroyed == true)//controller is telling you to start acting--engines destroyed
|
||
|
{
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
Commands->Innate_Soldier_Enable_Footsteps_Heard ( obj, true );
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_IVE_BEEN_KILLED_JDG)//guard one has been killed/injured
|
||
|
{
|
||
|
if (obj)
|
||
|
{
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_FACING_SPECIFIED_DIRECTION_01_JDG);
|
||
|
params.Set_Attack( STAR, 10, 0, true );
|
||
|
Commands->Action_Attack ( obj, params );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_JDG)//the engine has been destroyed--enable foostep hearing
|
||
|
{
|
||
|
engineDestroyed = true;
|
||
|
Commands->Innate_Soldier_Enable_Footsteps_Heard ( obj, true );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_TalkToPrisoners_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
bool playerHasLev01Card = Commands->Has_Key( STAR, 1 );
|
||
|
|
||
|
if (playerHasLev01Card == false)
|
||
|
{
|
||
|
GameObject * prisoner01 = Commands->Find_Object (M04_PRISON_PRISONER_01_JDG);
|
||
|
if (prisoner01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, prisoner01, 0, M01_MODIFY_YOUR_ACTION_04_JDG, 0 );//tell prisoner 3 that Havoc is close by
|
||
|
}
|
||
|
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_Prisoner_01_JDG, "")//this guys ID number is M04_PRISON_PRISONER_01_JDG 100011
|
||
|
{
|
||
|
bool prison_guard_01_dead;
|
||
|
bool prison_guard_02_dead;
|
||
|
bool firstTimeDamaged;
|
||
|
bool freedYet;
|
||
|
bool seenHavoc;
|
||
|
int its_gdi_conv;
|
||
|
int wave_counter;
|
||
|
int medlab_conv;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(prison_guard_01_dead, 1);
|
||
|
SAVE_VARIABLE(prison_guard_02_dead, 2);
|
||
|
SAVE_VARIABLE(firstTimeDamaged, 3);
|
||
|
SAVE_VARIABLE(freedYet, 4);
|
||
|
SAVE_VARIABLE(seenHavoc, 5);
|
||
|
SAVE_VARIABLE(its_gdi_conv, 6);
|
||
|
SAVE_VARIABLE(wave_counter, 7);
|
||
|
SAVE_VARIABLE(medlab_conv, 8);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
wave_counter = 0;
|
||
|
seenHavoc = false;
|
||
|
firstTimeDamaged = true;
|
||
|
prison_guard_01_dead = false;
|
||
|
prison_guard_02_dead = false;
|
||
|
freedYet = false;
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true);
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
if (obj)
|
||
|
{
|
||
|
if (damager == STAR )
|
||
|
{
|
||
|
int myMaxHealth = Commands->Get_Max_Health ( obj );
|
||
|
Commands->Set_Health ( obj, myMaxHealth );
|
||
|
|
||
|
if (firstTimeDamaged == true)
|
||
|
{
|
||
|
Commands->Create_Sound ( "00-N066E", Vector3 (0,0,0), obj );//you are firing on a friendly unit
|
||
|
firstTimeDamaged = false;
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
|
||
|
params.Set_Animation( "H_A_J21C", false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
//Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
//Commands->Create_Sound ( "M04 PanicGuy 01 Twiddler", myPosition, obj );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom (GameObject* obj, int type, int param, GameObject* sender)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (param == M01_IVE_BEEN_KILLED_JDG)//prison guard one is dead
|
||
|
{
|
||
|
GameObject * prisonGuard01 = Commands->Find_Object ( M04_ENGINEROOM_PRISONGUARD_01_JDG );
|
||
|
GameObject * prisonGuard02 = Commands->Find_Object ( M04_ENGINEROOM_PRISONGUARD_02_JDG );
|
||
|
|
||
|
if (sender == prisonGuard01)
|
||
|
{
|
||
|
prison_guard_01_dead = true;
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_DO_DAMAGE_CHECK_JDG, 1 );
|
||
|
}
|
||
|
|
||
|
if (sender == prisonGuard02)
|
||
|
{
|
||
|
prison_guard_02_dead = true;
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_DO_DAMAGE_CHECK_JDG, 1 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == M01_DO_DAMAGE_CHECK_JDG)//check if both are dead yet
|
||
|
{
|
||
|
if ((prison_guard_01_dead == true) && (prison_guard_02_dead == true) && freedYet == false && seenHavoc == false)
|
||
|
{
|
||
|
seenHavoc = true;
|
||
|
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_FACING_SPECIFIED_DIRECTION_01_JDG);
|
||
|
params.Set_Attack( STAR, 0, 0, true );
|
||
|
Commands->Action_Attack ( obj, params );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_02_JDG, 1 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG)
|
||
|
{
|
||
|
its_gdi_conv = Commands->Create_Conversation( "M04_Is_That_a_GDI_Soldier", 100, 100, false);
|
||
|
Commands->Join_Conversation( obj, its_gdi_conv, false, true, true );
|
||
|
Commands->Join_Conversation( STAR, its_gdi_conv, false, true, true );
|
||
|
Commands->Start_Conversation( its_gdi_conv, its_gdi_conv );
|
||
|
Commands->Monitor_Conversation( obj, its_gdi_conv );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_03_JDG && wave_counter <= 4)//
|
||
|
{
|
||
|
params.Set_Basic( this, 100, M01_MODIFY_YOUR_ACTION_03_JDG);
|
||
|
params.Set_Animation( "H_A_J01C", false );//this is animation for hanging head down
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
wave_counter++;
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_04_JDG && wave_counter < 100)//playre is in first talk zone--start conversation
|
||
|
{
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
wave_counter = 100;
|
||
|
|
||
|
medlab_conv = Commands->Create_Conversation( "M04_Prisoner_Guard_is_in_Medlab_Conversation", 100, 100, false);
|
||
|
Commands->Join_Conversation( obj, medlab_conv, false, true, true );
|
||
|
Commands->Join_Conversation( STAR, medlab_conv, false, true, true );
|
||
|
Commands->Start_Conversation( medlab_conv, medlab_conv );
|
||
|
Commands->Monitor_Conversation( obj, medlab_conv );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_JDG)//you've been freed--cheer you ungrateful bastard
|
||
|
{
|
||
|
freedYet = true;
|
||
|
char *animationName = M01_Choose_Cheer_Animation ( );
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation( animationName, false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Create_Sound ( "M01_GDI_Thanks_Twiddler", myPosition, obj );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == 101 && complete_reason == ACTION_COMPLETE_NORMAL)//prisoner one is at his hazing spot
|
||
|
{
|
||
|
params.Set_Basic( this, 100, 102);
|
||
|
params.Set_Animation( "H_A_J06C", false );//this is animation for hanging head down
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
firstTimeDamaged = true;
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_MODIFY_YOUR_ACTION_03_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic( this, 100, M01_FACING_SPECIFIED_DIRECTION_01_JDG);
|
||
|
params.Set_Attack( STAR, 0, 0, true );
|
||
|
Commands->Action_Attack ( obj, params );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 1 );
|
||
|
}
|
||
|
|
||
|
else if (action_id == its_gdi_conv && complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
|
||
|
{
|
||
|
params.Set_Basic( this, 100, M01_FACING_SPECIFIED_DIRECTION_01_JDG);
|
||
|
params.Set_Attack( STAR, 0, 0, true );
|
||
|
Commands->Action_Attack ( obj, params );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 1 );
|
||
|
}
|
||
|
|
||
|
else if (action_id == medlab_conv && complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
|
||
|
{
|
||
|
GameObject * objectiveController = Commands->Find_Object ( M04_OBJECTIVE_CONTROLLER_JDG );
|
||
|
if (objectiveController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, objectiveController, 0, 401, 1 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_Prisoner_02_JDG, "")//this guys ID number is M04_PRISON_PRISONER_02_JDG 101196
|
||
|
{
|
||
|
bool firstTimeDamaged;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(firstTimeDamaged, 1);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Innate_Disable(obj);
|
||
|
Commands->Set_Loiters_Allowed( obj, false );
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation( "H_A_7002", true );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
if (obj && damager == STAR)
|
||
|
{
|
||
|
int myMaxHealth = Commands->Get_Max_Health ( obj );
|
||
|
Commands->Set_Health ( obj, myMaxHealth );
|
||
|
|
||
|
if (firstTimeDamaged == true)
|
||
|
{
|
||
|
Commands->Create_Sound ( "00-N066E", Vector3 (0,0,0), obj );//you are firing on a friendly unit
|
||
|
firstTimeDamaged = false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
/*DECLARE_SCRIPT(M04_EngineRoom_Prisoner_02_JDG, "")//this guys ID number is M04_PRISON_PRISONER_02_JDG 101196
|
||
|
{
|
||
|
bool firstTimeDamaged;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(firstTimeDamaged, 1);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true);
|
||
|
firstTimeDamaged = true;
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
if (obj && damager == STAR)
|
||
|
{
|
||
|
int myMaxHealth = Commands->Get_Max_Health ( obj );
|
||
|
Commands->Set_Health ( obj, myMaxHealth );
|
||
|
|
||
|
if (firstTimeDamaged == true)
|
||
|
{
|
||
|
Commands->Create_Sound ( "00-N066E", Vector3 (0,0,0), obj );//you are firing on a friendly unit
|
||
|
firstTimeDamaged = false;
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
|
||
|
params.Set_Animation( "H_A_J21C", false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Create_Sound ( "M04 PanicGuy 01 Twiddler", myPosition, obj );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom (GameObject* obj, int type, int param, GameObject* sender)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (param == M01_MODIFY_YOUR_ACTION_JDG)//you've been freed--cheer you ungrateful bastard
|
||
|
{
|
||
|
char *animationName = M01_Choose_Cheer_Animation ( );
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation( animationName, false );
|
||
|
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Create_Sound ( "M01_GDI_Thanks_Twiddler", myPosition, obj );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
if (action_id == M01_DOING_ANIMATION_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
firstTimeDamaged = true;
|
||
|
}
|
||
|
}
|
||
|
};*/
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_Prisoner_03_JDG, "")//this guys ID number is M04_PRISON_PRISONER_03_JDG 100013
|
||
|
{
|
||
|
bool firstTimeDamaged;
|
||
|
bool freedYet;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(freedYet, 1);
|
||
|
SAVE_VARIABLE(firstTimeDamaged, 2);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true);
|
||
|
firstTimeDamaged = true;
|
||
|
freedYet = false;
|
||
|
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, 102);
|
||
|
params.Set_Animation( "H_A_J13B", true );//this is animation for looping pushups
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
if (obj && damager == STAR)
|
||
|
{
|
||
|
int myMaxHealth = Commands->Get_Max_Health ( obj );
|
||
|
Commands->Set_Health ( obj, myMaxHealth );
|
||
|
|
||
|
if (firstTimeDamaged == true)
|
||
|
{
|
||
|
Commands->Create_Sound ( "00-N066E", Vector3 (0,0,0), obj );//you are firing on a friendly unit
|
||
|
firstTimeDamaged = false;
|
||
|
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
|
||
|
params.Set_Animation( "H_A_J21C", false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
//Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
//Commands->Create_Sound ( "M04 PanicGuy 01 Twiddler", myPosition, obj );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom (GameObject* obj, int type, int param, GameObject* sender)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (param == 3000)
|
||
|
{
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_START_ATTACKING_01_JDG );
|
||
|
params.Set_Attack( STAR, 0, 0, true);
|
||
|
Commands->Action_Attack(obj, params);
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_02_JDG, 2 );
|
||
|
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG)//ask havco if he has the key yet
|
||
|
{
|
||
|
if (freedYet == false)
|
||
|
{
|
||
|
int key_conv = Commands->Create_Conversation( "M04_DoYouHaveTheKey_Conversation", 100, 1000, false);
|
||
|
Commands->Join_Conversation( obj, key_conv, false, false, false);
|
||
|
Commands->Join_Conversation( STAR, key_conv, false, false, false);
|
||
|
Commands->Start_Conversation( key_conv, key_conv );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_JDG)//you've been freed--cheer you ungrateful bastard
|
||
|
{
|
||
|
freedYet = true;
|
||
|
char *animationName = M01_Choose_Cheer_Animation ( );
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation( animationName, false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
//Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
//Commands->Create_Sound ( "M01_GDI_Thanks_Twiddler", myPosition, obj );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Poked( GameObject * obj, GameObject * poker )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_START_ATTACKING_01_JDG );
|
||
|
params.Set_Attack( STAR, 0, 0, true);
|
||
|
Commands->Action_Attack(obj, params);
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_02_JDG, 1 );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == M01_DOING_ANIMATION_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
firstTimeDamaged = true;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Prison_CellDoor_Zone_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Static_Anim_Phys_Goto_Frame ( M04_PRISON_DOOR_JDG, 0, "SHP_DOORP01.SHP_DOORP01" );//182085
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_MODIFY_YOUR_ACTION_JDG)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
bool playerHasPrisonKey = Commands->Has_Key( STAR, 1 );
|
||
|
|
||
|
if (playerHasPrisonKey == true)
|
||
|
{
|
||
|
GameObject *prisoner01 = Commands->Find_Object (M04_PRISON_PRISONER_01_JDG);
|
||
|
GameObject *prisoner02 = Commands->Find_Object (M04_PRISON_PRISONER_02_JDG);
|
||
|
GameObject *prisoner03 = Commands->Find_Object (M04_PRISON_PRISONER_03_JDG);
|
||
|
|
||
|
if (prisoner01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( prisoner01 );
|
||
|
}
|
||
|
|
||
|
if (prisoner02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( prisoner02 );
|
||
|
}
|
||
|
|
||
|
if (prisoner03 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( prisoner03 );
|
||
|
}
|
||
|
|
||
|
Commands->Set_Position ( STAR, Vector3(-7.478f, -80.231f, -0.000) );
|
||
|
Commands->Set_Facing ( STAR, -125 );
|
||
|
Commands->Control_Enable ( STAR, false );
|
||
|
Commands->Set_Is_Rendered( STAR, false );
|
||
|
|
||
|
GameObject *controller = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
|
||
|
Commands->Attach_Script(controller, "Test_Cinematic", "X4A_MIDTRO.txt");
|
||
|
|
||
|
Commands->Static_Anim_Phys_Goto_Frame ( M04_PRISON_DOOR_JDG, 6, "SHP_DOORP01.SHP_DOORP01" );
|
||
|
Commands->Destroy_Object ( obj );//cleaning up this zone
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
GameObject * prisoner03 = Commands->Find_Object (M04_PRISON_PRISONER_03_JDG);
|
||
|
if (prisoner03 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, prisoner03, 0, 3000, 0 );//tell prisoner 3 that Havoc is close by
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
/**********************************************************************************************************
|
||
|
The following scripts all deal with the aft deck on the way to kill the first mate.
|
||
|
***********************************************************************************************************/
|
||
|
DECLARE_SCRIPT(M04_AftDeck_InnerSanctum_Entry_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR)
|
||
|
{
|
||
|
Commands->Create_Sound ( "00-n060e", Commands->Get_Position ( obj ), obj );//updating radar flags
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_AFT_DECK_CONTROLLER_JDG), 0, 4000, 0 );//tell aft deck controller that player is moving forward
|
||
|
|
||
|
GameObject *zone02 = Commands->Find_Object ( 100648 );
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object (zone02);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_AftDeck_InnerSanctum_02_Entry_Zone_JDG, "")//player is almost to secondary bridge
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR)
|
||
|
{
|
||
|
Commands->Create_Sound ( "00-n060e", Commands->Get_Position ( obj ), obj );//updating radar flags
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_AFT_DECK_CONTROLLER_JDG), 0, 5000, 0 );//tell aft deck controller that player is moving forward
|
||
|
Commands->Destroy_Object ( obj ); //clean up the zone
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_AftDeck_02_Controller_JDG, "")//this guys number is M04_AFT_DECK_CONTROLLER_JDG 100624
|
||
|
{
|
||
|
int number_of_guys_killed;
|
||
|
int prisoner_reinforcements;
|
||
|
int patrolGuy01_ID;
|
||
|
int patrolGuy02_ID ;
|
||
|
int pointGuard01_ID;
|
||
|
int pointGuard02_ID;
|
||
|
int BHpatrolGuy_ID;
|
||
|
int prisonGuard01_ID;
|
||
|
int prisonGuard02_ID;
|
||
|
int lockerRoompatrolGuy01_ID;
|
||
|
int lockerRoompatrolGuy02_ID;
|
||
|
int leftBarracksTalkGuy01_ID;
|
||
|
int leftBarracksTalkGuy02_ID;
|
||
|
int leftBarracksTalkGuy03_ID;
|
||
|
int rightBarrackspatrolGuy_ID;
|
||
|
int blackHandPointGuard01_ID;
|
||
|
int blackHandPointGuard02_ID;
|
||
|
int miniGunnerGuard01_ID;
|
||
|
int miniGunnerGuard02_ID;
|
||
|
int miniGunnerGuard03_ID;
|
||
|
int blackHandMateGuard01_ID;
|
||
|
int blackHandMateGuard02_ID;
|
||
|
int blackHandMateGuard03_ID;
|
||
|
int blackHandMateGuard04_ID;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( number_of_guys_killed, 1 );
|
||
|
SAVE_VARIABLE( prisoner_reinforcements, 2 );
|
||
|
SAVE_VARIABLE( patrolGuy01_ID, 3 );
|
||
|
SAVE_VARIABLE( patrolGuy02_ID, 4 );
|
||
|
SAVE_VARIABLE( pointGuard01_ID, 5 );
|
||
|
SAVE_VARIABLE( pointGuard02_ID, 6 );
|
||
|
SAVE_VARIABLE( BHpatrolGuy_ID, 7 );
|
||
|
SAVE_VARIABLE( prisonGuard01_ID, 8 );
|
||
|
SAVE_VARIABLE( prisonGuard02_ID, 9 );
|
||
|
SAVE_VARIABLE( lockerRoompatrolGuy01_ID, 10 );
|
||
|
SAVE_VARIABLE( lockerRoompatrolGuy02_ID, 11 );
|
||
|
SAVE_VARIABLE( leftBarracksTalkGuy01_ID, 12 );
|
||
|
SAVE_VARIABLE( leftBarracksTalkGuy02_ID, 13 );
|
||
|
SAVE_VARIABLE( leftBarracksTalkGuy03_ID, 14 );
|
||
|
SAVE_VARIABLE( rightBarrackspatrolGuy_ID, 15 );
|
||
|
SAVE_VARIABLE( blackHandPointGuard01_ID, 16 );
|
||
|
SAVE_VARIABLE( blackHandPointGuard02_ID, 17 );
|
||
|
SAVE_VARIABLE( miniGunnerGuard01_ID, 18 );
|
||
|
SAVE_VARIABLE( miniGunnerGuard02_ID, 19 );
|
||
|
SAVE_VARIABLE( miniGunnerGuard03_ID, 20 );
|
||
|
SAVE_VARIABLE( blackHandMateGuard01_ID, 21 );
|
||
|
SAVE_VARIABLE( blackHandMateGuard02_ID, 22 );
|
||
|
SAVE_VARIABLE( blackHandMateGuard03_ID, 23 );
|
||
|
SAVE_VARIABLE( blackHandMateGuard04_ID, 24 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
number_of_guys_killed = 0;
|
||
|
prisoner_reinforcements = 0;
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (param == 100)//recieved custom from enter zone to start scenario
|
||
|
{
|
||
|
GameObject *patrolGuy01 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-.90f, -127.01f, 3.00f));
|
||
|
Commands->Attach_Script(patrolGuy01, "M04_AftDeck_02_PatrolGuy_01_JDG", "");
|
||
|
|
||
|
GameObject *patrolGuy02 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(6.64f, -116.10f, 3.00f));
|
||
|
Commands->Attach_Script(patrolGuy02, "M04_AftDeck_02_PatrolGuy_02_JDG", "");
|
||
|
|
||
|
GameObject *pointGuard01 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-14.09f, -108.50f, 3.00f));
|
||
|
Commands->Attach_Script(pointGuard01, "M04_AftDeck_02_Pointguard_JDG", "");
|
||
|
|
||
|
GameObject *pointGuard02 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(13.83f, -108.00f, 3.00f));
|
||
|
Commands->Attach_Script(pointGuard02, "M04_AftDeck_02_Pointguard_JDG", "");
|
||
|
|
||
|
GameObject *BHpatrolGuy = Commands->Create_Object ( "Nod_MiniGunner_1Off", Vector3(8.51f, -108.05f, 6.00f));
|
||
|
Commands->Attach_Script(BHpatrolGuy, "M04_AftDeck_02_Blackhand_PatrolGuy_JDG", "");
|
||
|
|
||
|
GameObject *prisonGuard01 = Commands->Create_Object ( "Nod_MiniGunner_1Off", Vector3(9.80f, -72.88f, 0));
|
||
|
Commands->Attach_Script(prisonGuard01, "M04_PointGuard_JDG", "");
|
||
|
|
||
|
GameObject *prisonGuard02 = Commands->Create_Object ( "Nod_MiniGunner_1Off", Vector3(-9.39f, -72.49f, 0));
|
||
|
Commands->Attach_Script(prisonGuard02, "M04_PointGuard_JDG", "");
|
||
|
|
||
|
patrolGuy01_ID = Commands->Get_ID ( patrolGuy01 );;
|
||
|
patrolGuy02_ID = Commands->Get_ID ( patrolGuy02 );
|
||
|
pointGuard01_ID = Commands->Get_ID ( pointGuard01 );
|
||
|
pointGuard02_ID = Commands->Get_ID ( pointGuard02 );
|
||
|
BHpatrolGuy_ID = Commands->Get_ID ( BHpatrolGuy );
|
||
|
prisonGuard01_ID = Commands->Get_ID ( prisonGuard01 );
|
||
|
prisonGuard02_ID = Commands->Get_ID ( prisonGuard02 );
|
||
|
}
|
||
|
|
||
|
else if (param == 200)//someone's been killed
|
||
|
{
|
||
|
number_of_guys_killed++;
|
||
|
|
||
|
if ((number_of_guys_killed == 2) )
|
||
|
{
|
||
|
//Commands->Create_Sound ( "ThereHeIs", Vector3(8.51f, -108.05f, 6.00f), obj );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 2000, 2 );//play second dialog line "call reinforcements"
|
||
|
}
|
||
|
|
||
|
if ((number_of_guys_killed >= 2) && (number_of_guys_killed <= 5) )
|
||
|
{
|
||
|
GameObject *reinforceGuy02 = Commands->Trigger_Spawner( 100630 );
|
||
|
Commands->Attach_Script(reinforceGuy02, "M04_AftDeck_Reinforcement_JDG", "");
|
||
|
float motto_reinforce_ka = Commands->Get_Random ( 0.5, 2.5 );
|
||
|
if ((motto_reinforce_ka >= 0.5) && (motto_reinforce_ka < 1.5) )
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 2, 5 );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 1000, delayTimer );//spawn 2 more guys
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == 1000)//spawn 2 more guys after short delay
|
||
|
{
|
||
|
if ((number_of_guys_killed >= 2) && (number_of_guys_killed <= 5) )
|
||
|
{
|
||
|
GameObject *reinforceGuy01 = Commands->Trigger_Spawner( 100629 );
|
||
|
GameObject *reinforceGuy02 = Commands->Trigger_Spawner( 100630 );
|
||
|
Commands->Attach_Script(reinforceGuy01, "M04_AftDeck_Reinforcement_JDG", "");
|
||
|
Commands->Attach_Script(reinforceGuy02, "M04_AftDeck_Reinforcement_JDG", "");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == 2000)//play dialog line "call reinforcements"
|
||
|
{
|
||
|
//Commands->Create_Sound ( "CallReinforcements", Vector3(8.51f, -108.05f, 6.00f), obj );
|
||
|
}
|
||
|
|
||
|
else if ((param == 3000) && (prisoner_reinforcements <= 5) )//prisoners have been rescued--release the hounds
|
||
|
{
|
||
|
prisoner_reinforcements++;
|
||
|
GameObject *reinforceGuy01 = NULL;
|
||
|
GameObject *reinforceGuy02 = NULL;
|
||
|
reinforceGuy01 = Commands->Trigger_Spawner( 100629 );
|
||
|
reinforceGuy02 = Commands->Trigger_Spawner( 100630 );
|
||
|
Commands->Attach_Script(reinforceGuy01, "M04_AftDeck_Reinforcement_JDG", "");
|
||
|
Commands->Attach_Script(reinforceGuy02, "M04_AftDeck_Reinforcement_JDG", "");
|
||
|
}
|
||
|
|
||
|
else if (param == 4000) //player is moving up toward first mate
|
||
|
{
|
||
|
GameObject *lockerRoompatrolGuy01 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(2.53f, -76.81f, 6.00f));
|
||
|
Commands->Attach_Script(lockerRoompatrolGuy01, "M04_Aft_LockerRoom_PatrolGuy01_JDG", "");
|
||
|
|
||
|
GameObject *lockerRoompatrolGuy02 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-1.65f, -76.81f, 6.00f));
|
||
|
Commands->Attach_Script(lockerRoompatrolGuy02, "M04_Aft_LockerRoom_PatrolGuy02_JDG", "");
|
||
|
|
||
|
GameObject *leftBarracksTalkGuy01 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(11.01f, -103.69f, 6.00f));
|
||
|
Commands->Attach_Script(leftBarracksTalkGuy01, "M04_Aft_LeftBarracks_TalkGuy_JDG", "");
|
||
|
Commands->Set_Facing ( leftBarracksTalkGuy01, 160);
|
||
|
|
||
|
GameObject *leftBarracksTalkGuy02 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(9.25f, -100.55f, 6.00f));
|
||
|
Commands->Attach_Script(leftBarracksTalkGuy02, "M04_Aft_LeftBarracks_TalkGuy_JDG", "");
|
||
|
Commands->Set_Facing ( leftBarracksTalkGuy02, -75);
|
||
|
|
||
|
GameObject *leftBarracksTalkGuy03 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(9.33f, -103.77f, 6.00f));
|
||
|
Commands->Attach_Script(leftBarracksTalkGuy03, "M04_Aft_LeftBarracks_TalkGuy_JDG", "");
|
||
|
Commands->Set_Facing ( leftBarracksTalkGuy03, 60);
|
||
|
|
||
|
GameObject *rightBarrackspatrolGuy = Commands->Create_Object ( "Nod_MiniGunner_1Off", Vector3(-9.33f, -102.35f, 6.00f));
|
||
|
Commands->Attach_Script(rightBarrackspatrolGuy, "M04_Aft_RightBarracks_PatrolGuy_JDG", "");
|
||
|
|
||
|
lockerRoompatrolGuy01_ID = Commands->Get_ID ( lockerRoompatrolGuy01 );
|
||
|
lockerRoompatrolGuy02_ID = Commands->Get_ID ( lockerRoompatrolGuy02 );
|
||
|
leftBarracksTalkGuy01_ID = Commands->Get_ID ( leftBarracksTalkGuy01 );
|
||
|
leftBarracksTalkGuy02_ID = Commands->Get_ID ( leftBarracksTalkGuy02 );
|
||
|
leftBarracksTalkGuy03_ID = Commands->Get_ID ( leftBarracksTalkGuy03 );
|
||
|
rightBarrackspatrolGuy_ID = Commands->Get_ID ( rightBarrackspatrolGuy );
|
||
|
}
|
||
|
|
||
|
else if (param == 5000) //player is almost at first mate
|
||
|
{
|
||
|
GameObject *blackHandPointGuard02 = Commands->Create_Object ( "Nod_FlameThrower_0", Vector3(9.13f, -86.51f, 9.00f));
|
||
|
Commands->Set_Facing ( blackHandPointGuard02, -90);
|
||
|
|
||
|
GameObject *miniGunnerGuard01 = Commands->Create_Object ( "Nod_FlameThrower_1Off", Vector3(-9.25f, -76.39f, 9.00f));
|
||
|
GameObject *miniGunnerGuard02 = Commands->Create_Object ( "Nod_FlameThrower_1Off", Vector3(0.46f, -75.99f, 9.00f));
|
||
|
GameObject *miniGunnerGuard03 = Commands->Create_Object ( "Nod_FlameThrower_1Off", Vector3(11.11f, -76.49f, 9.00f));
|
||
|
|
||
|
GameObject *blackHandMateGuard01 = Commands->Create_Object ( "Nod_FlameThrower_0", Vector3(3.24f, -79.21f, 12.00f));
|
||
|
Commands->Attach_Script(blackHandMateGuard01, "M04_Aft_FirstMateBodyguard_JDG", "");
|
||
|
Commands->Set_Facing ( blackHandMateGuard01, 0);
|
||
|
|
||
|
GameObject *blackHandMateGuard02 = Commands->Create_Object ( "Nod_FlameThrower_0", Vector3(3.85f, -85.44f, 12.00f));
|
||
|
Commands->Attach_Script(blackHandMateGuard02, "M04_Aft_FirstMateBodyguard_JDG", "");
|
||
|
Commands->Set_Facing ( blackHandMateGuard02, 0);
|
||
|
|
||
|
GameObject *blackHandMateGuard03 = Commands->Create_Object ( "Nod_FlameThrower_0", Vector3(-4.25f, -85.21f, 12.00f));
|
||
|
Commands->Attach_Script(blackHandMateGuard03, "M04_Aft_FirstMateBodyguard_JDG", "");
|
||
|
Commands->Set_Facing ( blackHandMateGuard03, 175);
|
||
|
|
||
|
GameObject *blackHandMateGuard04 = Commands->Create_Object ( "Nod_FlameThrower_0", Vector3(-4.19f, -79.31f, 12.00f));
|
||
|
Commands->Attach_Script(blackHandMateGuard04, "M04_Aft_FirstMateBodyguard_JDG", "");
|
||
|
Commands->Set_Facing ( blackHandMateGuard04, 175);
|
||
|
|
||
|
blackHandPointGuard02_ID = Commands->Get_ID ( blackHandPointGuard02 );
|
||
|
miniGunnerGuard01_ID = Commands->Get_ID ( miniGunnerGuard01 );
|
||
|
miniGunnerGuard02_ID = Commands->Get_ID ( miniGunnerGuard02 );
|
||
|
miniGunnerGuard03_ID = Commands->Get_ID ( miniGunnerGuard03 );
|
||
|
|
||
|
blackHandMateGuard01_ID = Commands->Get_ID ( blackHandMateGuard01 );
|
||
|
blackHandMateGuard02_ID = Commands->Get_ID ( blackHandMateGuard02 );
|
||
|
blackHandMateGuard03_ID = Commands->Get_ID ( blackHandMateGuard03 );
|
||
|
blackHandMateGuard04_ID = Commands->Get_ID ( blackHandMateGuard04 );
|
||
|
}
|
||
|
|
||
|
else if (param == 5500) //tell body guards to goto innate
|
||
|
{
|
||
|
GameObject *blackHandMateGuard01 = Commands->Find_Object ( blackHandMateGuard01_ID );
|
||
|
if (blackHandMateGuard01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, blackHandMateGuard01, 0, 100, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject *blackHandMateGuard02 = Commands->Find_Object ( blackHandMateGuard02_ID );
|
||
|
if (blackHandMateGuard02 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, blackHandMateGuard02, 0, 100, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject *blackHandMateGuard03 = Commands->Find_Object ( blackHandMateGuard03_ID );
|
||
|
if (blackHandMateGuard03 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, blackHandMateGuard03, 0, 100, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject *blackHandMateGuard04 = Commands->Find_Object ( blackHandMateGuard04_ID );
|
||
|
if (blackHandMateGuard04 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, blackHandMateGuard04, 0, 100, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == 6000) //player is leaving the aft deck...clean up any remaing soldiers
|
||
|
{
|
||
|
GameObject *patrolGuy01 = Commands->Find_Object ( patrolGuy01_ID );
|
||
|
if (patrolGuy01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( patrolGuy01 );
|
||
|
}
|
||
|
|
||
|
GameObject *patrolGuy02 = Commands->Find_Object ( patrolGuy02_ID );
|
||
|
if (patrolGuy02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( patrolGuy02 );
|
||
|
}
|
||
|
|
||
|
GameObject *pointGuard01 = Commands->Find_Object ( pointGuard01_ID );
|
||
|
if (pointGuard01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( pointGuard01 );
|
||
|
}
|
||
|
|
||
|
GameObject *pointGuard02 = Commands->Find_Object ( pointGuard02_ID );
|
||
|
if (pointGuard02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( pointGuard02 );
|
||
|
}
|
||
|
|
||
|
GameObject *BHpatrolGuy = Commands->Find_Object ( BHpatrolGuy_ID );
|
||
|
if (BHpatrolGuy != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( BHpatrolGuy );
|
||
|
}
|
||
|
|
||
|
GameObject *prisonGuard01 = Commands->Find_Object ( prisonGuard01_ID );
|
||
|
if (prisonGuard01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( prisonGuard01 );
|
||
|
}
|
||
|
|
||
|
GameObject *prisonGuard02 = Commands->Find_Object ( prisonGuard02_ID );
|
||
|
if (prisonGuard02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( prisonGuard02 );
|
||
|
}
|
||
|
|
||
|
GameObject *lockerRoompatrolGuy01 = Commands->Find_Object ( lockerRoompatrolGuy01_ID );
|
||
|
if (lockerRoompatrolGuy01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( lockerRoompatrolGuy01 );
|
||
|
}
|
||
|
|
||
|
GameObject *lockerRoompatrolGuy02 = Commands->Find_Object ( lockerRoompatrolGuy02_ID );
|
||
|
if (lockerRoompatrolGuy02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( lockerRoompatrolGuy02 );
|
||
|
}
|
||
|
|
||
|
GameObject *leftBarracksTalkGuy01 = Commands->Find_Object ( leftBarracksTalkGuy01_ID );
|
||
|
if (leftBarracksTalkGuy01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( leftBarracksTalkGuy01 );
|
||
|
}
|
||
|
|
||
|
GameObject *leftBarracksTalkGuy02 = Commands->Find_Object ( leftBarracksTalkGuy02_ID );
|
||
|
if (leftBarracksTalkGuy02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( leftBarracksTalkGuy02 );
|
||
|
}
|
||
|
|
||
|
GameObject *leftBarracksTalkGuy03 = Commands->Find_Object ( leftBarracksTalkGuy03_ID );
|
||
|
if (leftBarracksTalkGuy03 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( leftBarracksTalkGuy03 );
|
||
|
}
|
||
|
|
||
|
GameObject *rightBarrackspatrolGuy = Commands->Find_Object ( rightBarrackspatrolGuy_ID );
|
||
|
if (rightBarrackspatrolGuy != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( rightBarrackspatrolGuy );
|
||
|
}
|
||
|
|
||
|
GameObject *blackHandPointGuard01 = Commands->Find_Object ( blackHandPointGuard01_ID );
|
||
|
if (blackHandPointGuard01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( blackHandPointGuard01 );
|
||
|
}
|
||
|
|
||
|
GameObject *blackHandPointGuard02 = Commands->Find_Object ( blackHandPointGuard02_ID );
|
||
|
if (blackHandPointGuard02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( blackHandPointGuard02 );
|
||
|
}
|
||
|
|
||
|
GameObject *miniGunnerGuard01 = Commands->Find_Object ( miniGunnerGuard01_ID );
|
||
|
if (miniGunnerGuard01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( miniGunnerGuard01 );
|
||
|
}
|
||
|
|
||
|
GameObject *miniGunnerGuard02 = Commands->Find_Object ( miniGunnerGuard02_ID );
|
||
|
if (miniGunnerGuard02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( miniGunnerGuard02 );
|
||
|
}
|
||
|
|
||
|
GameObject *miniGunnerGuard03 = Commands->Find_Object ( miniGunnerGuard03_ID );
|
||
|
if (miniGunnerGuard03 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( miniGunnerGuard03 );
|
||
|
}
|
||
|
|
||
|
GameObject *blackHandMateGuard01 = Commands->Find_Object ( blackHandMateGuard01_ID );
|
||
|
if (blackHandMateGuard01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( blackHandMateGuard01 );
|
||
|
}
|
||
|
|
||
|
GameObject *blackHandMateGuard02 = Commands->Find_Object ( blackHandMateGuard02_ID );
|
||
|
if (blackHandMateGuard02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( blackHandMateGuard02 );
|
||
|
}
|
||
|
|
||
|
GameObject *blackHandMateGuard03 = Commands->Find_Object ( blackHandMateGuard03_ID );
|
||
|
if (blackHandMateGuard03 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( blackHandMateGuard03 );
|
||
|
}
|
||
|
|
||
|
GameObject *blackHandMateGuard04 = Commands->Find_Object ( blackHandMateGuard04_ID );
|
||
|
if (blackHandMateGuard04 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( blackHandMateGuard04 );
|
||
|
}
|
||
|
|
||
|
GameObject *reinforceGuy01 = Commands->Trigger_Spawner( 100724 );
|
||
|
GameObject *reinforceGuy02 = Commands->Trigger_Spawner( 100725 );
|
||
|
GameObject *reinforceGuy03 = Commands->Trigger_Spawner( 100579 );
|
||
|
GameObject *reinforceGuy04 = Commands->Trigger_Spawner( 100581 );
|
||
|
|
||
|
Commands->Attach_Script(reinforceGuy01, "M04_AftDeck_Reinforcement_JDG", "");
|
||
|
Commands->Attach_Script(reinforceGuy02, "M04_AftDeck_Reinforcement_JDG", "");
|
||
|
Commands->Attach_Script(reinforceGuy03, "M04_AftDeck_Reinforcement_JDG", "");
|
||
|
Commands->Attach_Script(reinforceGuy04, "M04_AftDeck_Reinforcement_JDG", "");
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Aft_FirstMateBodyguard_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Innate_Disable( obj);
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (param == 100)//here comes the player--goto innate
|
||
|
{
|
||
|
if (obj)
|
||
|
{
|
||
|
Commands->Innate_Enable(obj);
|
||
|
Commands->Set_Innate_Aggressiveness ( obj, .50f );
|
||
|
Commands->Set_Innate_Take_Cover_Probability ( obj, 1.0f );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_SecondaryBridge_Enter_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_SHIPS_FIRST_MATE_JDG), 0, 100, 0 );//tell first mate to start hearing stuff
|
||
|
//Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 1000, 0 );//tell objective controller to play battle music
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_AFT_DECK_CONTROLLER_JDG), 0, 5500, 0 );//tell bodyguards to goto innate
|
||
|
|
||
|
GameObject * zone01 = Commands->Find_Object ( 100684 );
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );//clean up the two zones
|
||
|
}
|
||
|
|
||
|
GameObject * zone02 = Commands->Find_Object ( 100686 );
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );//clean up the two zones
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Player_Is_Leaving_Aft_Deck_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if (enterer == STAR)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_AFT_DECK_CONTROLLER_JDG), 0, 6000, 0 );//tell aft deck controller to clean up any remaining soldiers
|
||
|
|
||
|
GameObject * zone01 = Commands->Find_Object ( 100726 );
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );//clean up the two zones
|
||
|
}
|
||
|
|
||
|
GameObject * zone02 = Commands->Find_Object ( 100727 );
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );//clean up the two zones
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Aft_RightBarracks_PatrolGuy_JDG, "")
|
||
|
{
|
||
|
int curr_action_id;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( curr_action_id, 1 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100667;
|
||
|
params.WaypointStartID = 100668;
|
||
|
params.WaypointEndID = 100669;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 101 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100671;
|
||
|
params.WaypointStartID = 100672;
|
||
|
params.WaypointEndID = 100673;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == 102 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 103 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100667;
|
||
|
params.WaypointStartID = 100668;
|
||
|
params.WaypointEndID = 100669;
|
||
|
Commands->Action_Goto( obj, params );;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Aft_LeftBarracks_TalkGuy_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
Vector3 goto_spot = Commands->Get_Position( obj );
|
||
|
params.Set_Basic(this, 45, 100);
|
||
|
params.Set_Movement( goto_spot, .750f, .25f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 45, 100 );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Aft_LockerRoom_PatrolGuy01_JDG, "")
|
||
|
{
|
||
|
int curr_action_id;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( curr_action_id, 1 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100649;
|
||
|
params.WaypointStartID = 100650;
|
||
|
params.WaypointEndID = 100651;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 101 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100653;
|
||
|
params.WaypointStartID = 100654;
|
||
|
params.WaypointEndID = 100655;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == 102 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 103 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100657;
|
||
|
params.WaypointStartID = 100658;
|
||
|
params.WaypointEndID = 100659;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Aft_LockerRoom_PatrolGuy02_JDG, "")
|
||
|
{
|
||
|
int curr_action_id;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( curr_action_id, 1 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100661;
|
||
|
params.WaypointStartID = 100662;
|
||
|
params.WaypointEndID = 100663;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 101 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100657;
|
||
|
params.WaypointStartID = 100658;
|
||
|
params.WaypointEndID = 100659;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == 102 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 103 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100653;
|
||
|
params.WaypointStartID = 100654;
|
||
|
params.WaypointEndID = 100655;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_AftDeck_Reinforcement_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
Vector3 player_location = Commands->Get_Position ( STAR );
|
||
|
params.Set_Basic( this, 45, 100 );
|
||
|
params.Set_Movement( player_location, 1.0f, 7.0f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
|
||
|
Commands->Grant_Key( obj, 1, true );
|
||
|
Commands->Grant_Key( obj, 2, true );
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_AFT_DECK_CONTROLLER_JDG), 0, 200, 0 );//tell aft deck controller that you've been killed
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
Vector3 player_location = Commands->Get_Position ( STAR );
|
||
|
params.Set_Basic( this, 50, 100 );
|
||
|
params.Set_Movement( player_location, 1.0f, 7.0f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_AftDeck_02_PatrolGuy_01_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, 100 );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100249;
|
||
|
params.WaypointStartID = 100250;
|
||
|
params.WaypointEndID = 100251;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_AFT_DECK_CONTROLLER_JDG), 0, 200, 0 );//tell aft deck controller that you've been killed
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, 101 );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100253;
|
||
|
params.WaypointStartID = 100254;
|
||
|
params.WaypointEndID = 100255;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == 101 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, 100 );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100249;
|
||
|
params.WaypointStartID = 100250;
|
||
|
params.WaypointEndID = 100251;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_AftDeck_02_PatrolGuy_02_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, 100 );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100238;
|
||
|
params.WaypointStartID = 100239;
|
||
|
params.WaypointEndID = 100242;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_AFT_DECK_CONTROLLER_JDG), 0, 200, 0 );//tell aft deck controller that you've been killed
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, 101 );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100244;
|
||
|
params.WaypointStartID = 100245;
|
||
|
params.WaypointEndID = 100247;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == 101 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, 100 );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100238;
|
||
|
params.WaypointStartID = 100239;
|
||
|
params.WaypointEndID = 100242;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_AftDeck_02_Blackhand_PatrolGuy_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
float delayTimer = Commands->Get_Random ( 2, 5 );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 100, delayTimer );
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_AFT_DECK_CONTROLLER_JDG), 0, 200, 0 );//tell aft deck controller that you've been killed
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
Vector3 look_to_spot(-0.69f, -128.52f, 4.05f);
|
||
|
Vector3 present_location = Commands->Get_Position ( obj );;
|
||
|
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, 500 );
|
||
|
params.Set_Movement( present_location, .20f, .25f );
|
||
|
params.Set_Attack (look_to_spot, 0,0, true);
|
||
|
Commands->Action_Attack( obj, params);
|
||
|
|
||
|
float delayTimer = Commands->Get_Random ( 2, 5 );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 101, delayTimer );
|
||
|
}
|
||
|
|
||
|
else if (action_id == 101 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, 500 );
|
||
|
params.Set_Movement( present_location, .20f, .25f );
|
||
|
params.Set_Attack (look_to_spot, 0,0, true);
|
||
|
Commands->Action_Attack( obj, params);
|
||
|
float delayTimer = Commands->Get_Random ( 2, 5 );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 102, delayTimer );
|
||
|
}
|
||
|
|
||
|
else if (action_id == 102 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
params.Set_Basic( this, 45, 500 );
|
||
|
params.Set_Movement( present_location, .20f, .25f );
|
||
|
params.Set_Attack (look_to_spot, 0,0, true);
|
||
|
Commands->Action_Attack( obj, params);
|
||
|
float delayTimer = Commands->Get_Random ( 2, 5 );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 103, delayTimer );
|
||
|
}
|
||
|
|
||
|
else if (action_id == 103 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
params.Set_Basic( this, 45, 500 );
|
||
|
params.Set_Movement( present_location, .20f, .25f );
|
||
|
params.Set_Attack (look_to_spot, 0,0, true);
|
||
|
Commands->Action_Attack( obj, params);
|
||
|
float delayTimer = Commands->Get_Random ( 2, 5 );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 100, delayTimer );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (param == 100)//recieved custom to goto next waypath
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, 100 );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100607;
|
||
|
params.WaypointStartID = 100608;
|
||
|
params.WaypointEndID = 100609;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (param == 101)//recieved custom to goto next waypath
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, 101 );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100611;
|
||
|
params.WaypointStartID = 100612;
|
||
|
params.WaypointEndID = 100613;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (param == 102)//recieved custom to goto next waypath
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, 102 );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100615;
|
||
|
params.WaypointStartID = 100616;
|
||
|
params.WaypointEndID = 100617;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (param == 103)//recieved custom to goto next waypath
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, 103 );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100619;
|
||
|
params.WaypointStartID = 100620;
|
||
|
params.WaypointEndID = 100621;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_AftDeck_02_Pointguard_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
if (obj)
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_AFT_DECK_CONTROLLER_JDG), 0, 200, 0 );//tell aft deck controller that you've been killed
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_AftDeck_02_Entry_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR)
|
||
|
{
|
||
|
Commands->Create_Sound ( "00-n060e", Commands->Get_Position ( obj ), obj );//updating radar flags
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_AFT_DECK_CONTROLLER_JDG), 0, 100, 0 );//tell aft deck controller to start scenario
|
||
|
|
||
|
GameObject * sniperTarget01 = Commands->Create_Object ( "Nod_MiniGunner_1Off", Vector3(-9.160f, -89.962f, 9.000f));
|
||
|
Commands->Attach_Script(sniperTarget01, "M04_Doorway_Enterer_JDG", "-0.091 -107.613 6");
|
||
|
|
||
|
GameObject * sniperTarget02 = Commands->Create_Object ( "Nod_MiniGunner_1Off", Vector3(9.194f, -77.535f, 3));
|
||
|
Commands->Attach_Script(sniperTarget02, "M04_Doorway_Enterer_JDG", "14.657 -94.107 3");
|
||
|
|
||
|
GameObject * surpriseApache = Commands->Create_Object ( "Nod_Apache", Vector3(-50.075f, 8.732f, 5.534f));
|
||
|
Commands->Attach_Script(surpriseApache, "M04_Surprise_Apache_JDG", "");
|
||
|
|
||
|
Commands->Destroy_Object ( obj ); //clean up the zone
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Surprise_Apache_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Disable_Physical_Collisions ( obj );
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
|
||
|
params.Set_Movement( Vector3(0,0,0), .15f, 10 );
|
||
|
params.WaypathID = 104437;
|
||
|
params.MovePathfind = false;
|
||
|
//params.WaypointStartID = 104439;
|
||
|
//params.WaypointEndID = 101276;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
if (action_id == M01_WALKING_WAYPATH_01_JDG)
|
||
|
{
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
/*************************************************************************************************************
|
||
|
The following are all the temp scripts for the apache hanger
|
||
|
*************************************************************************************************************/
|
||
|
DECLARE_SCRIPT(M04_Apache_Enter_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_APACHE_CONTROLLER_JDG), 0, 100, 0 );//tell apache controller to place actors
|
||
|
|
||
|
GameObject * sniperTarget01 = Commands->Create_Object ( "Nod_MiniGunner_1Off", Vector3(-10.057f, 81.803f, -15));
|
||
|
Commands->Attach_Script(sniperTarget01, "M04_Doorway_Enterer_JDG", "-12.689 69.327 -15");
|
||
|
|
||
|
GameObject * huntercontroller = Commands->Find_Object (M04_ENGINEROOM_HUNTING_CONTROLLER_JDG);
|
||
|
if (huntercontroller != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, huntercontroller, 0, M01_GOTO_IDLE_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone02 = Commands->Find_Object (200006);
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );//clean up these zones
|
||
|
}
|
||
|
|
||
|
GameObject * zone03 = Commands->Find_Object (200008);
|
||
|
if (zone03 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone03 );//clean up these zones
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
DECLARE_SCRIPT(M04_ApacheRoom_Controller_JDG, "")//this guys ID number is M04_APACHE_CONTROLLER_JDG 200586
|
||
|
{
|
||
|
int m04apache_ID;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(m04apache_ID, 1);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
m04apache_ID = 0;
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (param == 100)//recieved custom from enter zones--here comes the player(s)
|
||
|
{
|
||
|
GameObject *m04apache = Commands->Create_Object ( "NOD_Apache", Vector3(1.469f, 50.814f, -14.00f));
|
||
|
Commands->Attach_Script(m04apache, "M04_ApacheRoom_Apache_JDG", "");
|
||
|
Commands->Set_Facing ( m04apache, -125 );
|
||
|
|
||
|
GameObject *m04apacheSniper01 = Commands->Create_Object ( "Nod_MiniGunner_2SF", Vector3(-13.728f, 63.244f, -9.003f));
|
||
|
Commands->Attach_Script(m04apacheSniper01, "M04_ApacheRoom_Sniper01_JDG", "");
|
||
|
|
||
|
GameObject *m04apacheSniper02 = Commands->Create_Object ( "Nod_MiniGunner_2SF", Vector3(13.45f, 33.93f, -9.003f));
|
||
|
Commands->Attach_Script(m04apacheSniper02, "M04_ApacheRoom_Sniper02_JDG", "");
|
||
|
|
||
|
m04apache_ID = Commands->Get_ID ( m04apache );
|
||
|
|
||
|
GameObject * tailgun01 = Commands->Find_Object (M04_ROCKET_EMPLACEMENT_01_JDG);
|
||
|
GameObject * tailgun02 = Commands->Find_Object (M04_ROCKET_EMPLACEMENT_02_JDG);
|
||
|
|
||
|
if (tailgun01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, tailgun01, M01_MODIFY_YOUR_ACTION_JDG, m04apache_ID, 0 );
|
||
|
}
|
||
|
|
||
|
if (tailgun02 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, tailgun02, M01_MODIFY_YOUR_ACTION_JDG, m04apache_ID, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == 200)//recieved custom from trigger zone--tell apache to take off and attack player
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (m04apache_ID), 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_ApacheRoom_Sniper01_JDG, "")
|
||
|
{
|
||
|
int curr_action_id;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(curr_action_id, 1);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 200592;
|
||
|
params.WaypointStartID = 200593;
|
||
|
params.WaypointEndID = 200594;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 101 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 200596;
|
||
|
params.WaypointStartID = 200597;
|
||
|
params.WaypointEndID = 200598;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == 102 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 103 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 200592;
|
||
|
params.WaypointStartID = 200593;
|
||
|
params.WaypointEndID = 200594;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_ApacheRoom_Sniper02_JDG, "")
|
||
|
{
|
||
|
int curr_action_id;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(curr_action_id, 1);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 200601;
|
||
|
params.WaypointStartID = 200602;
|
||
|
params.WaypointEndID = 200603;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 101 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 200605;
|
||
|
params.WaypointStartID = 200606;
|
||
|
params.WaypointEndID = 200607;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == 102 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 103 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 200601;
|
||
|
params.WaypointStartID = 200602;
|
||
|
params.WaypointEndID = 200603;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
/***********************************************************************************************************
|
||
|
The following are the initial scripts for the fore deck
|
||
|
***********************************************************************************************************/
|
||
|
DECLARE_SCRIPT(M04_ForeDeck_RocketGuy_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
if (obj && damager == STAR)
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_ForeDeck_Initial_Enter_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_FORE_DECK_CONTROLLER_JDG), 0, 100, 0 );//tell ForeDeck controller that player(s) is approaching
|
||
|
|
||
|
GameObject * zone01 = Commands->Find_Object (100784);
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );//clean up these zones
|
||
|
}
|
||
|
|
||
|
GameObject * zone06 = Commands->Find_Object (100789);
|
||
|
if (zone06 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone06 );//clean up these zones
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_MedLab_Enter_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_PRISON_WARDEN_JDG), 0, 100, 0 );//tell prison warden to start acting
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_MEDLAB_TECHNICIAN_JDG), 0, 100, 0 );//tell medlab tech to start acting
|
||
|
|
||
|
GameObject * zone01 = Commands->Find_Object (101054);
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );//clean up these zones
|
||
|
}
|
||
|
|
||
|
GameObject * zone02 = Commands->Find_Object (101055);
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );//clean up these zones
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_ForeDeck_Reinforcement_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
Vector3 players_position = Commands->Get_Position ( STAR );
|
||
|
params.Set_Basic( this, 50, 100 );
|
||
|
params.Set_Movement( players_position, 1.0f, .25f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
Vector3 players_position = Commands->Get_Position ( STAR );
|
||
|
params.Set_Basic( this, 50, 100 );
|
||
|
params.Set_Movement( players_position, 1.0f, .25f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_FORE_DECK_CONTROLLER_JDG), 0, 200, 0 );//tell controller you've been killed
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_ForeDeck_MapRoom_Guard01_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_FORE_DECK_CONTROLLER_JDG), 0, 200, 0 );//tell controller you've been killed
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_ForeDeck_MapRoom_Guard02_JDG, "")
|
||
|
{
|
||
|
int curr_action_id;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(curr_action_id, 1);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100842;
|
||
|
params.WaypointStartID = 100843;
|
||
|
params.WaypointEndID = 100845;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 101 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100842;
|
||
|
params.WaypointStartID = 100845;
|
||
|
params.WaypointEndID = 100843;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == 102 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
curr_action_id++;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == 103 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
curr_action_id = 100;
|
||
|
params.Set_Basic( this, 45, curr_action_id );
|
||
|
params.Set_Movement( Vector3(0,0,0), .20f, .25f );
|
||
|
params.WaypathID = 100842;
|
||
|
params.WaypointStartID = 100843;
|
||
|
params.WaypointEndID = 100845;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_ForeDeck_TorpedoRoom_Guard_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 15 );
|
||
|
}
|
||
|
};
|
||
|
/*************************************************************************************************************
|
||
|
The following scripts are for the foredeck. They include both the messhalls and the captain's encounter.
|
||
|
*************************************************************************************************************/
|
||
|
DECLARE_SCRIPT(M04_ForeDeck_Controller_JDG, "")//this guys ID number is M04_FORE_DECK_CONTROLLER_JDG 100790
|
||
|
{
|
||
|
int active_soldier_count;
|
||
|
int total_mess_reinforcements;
|
||
|
int total_BHmess_reinforcements;
|
||
|
int torpedoRoomGuard_ID;
|
||
|
int mapRoomGuard01_ID;
|
||
|
int mapRoomGuard02_ID;
|
||
|
int closetGuy01_ID;
|
||
|
int BH_messhall_guy01_ID;
|
||
|
int BH_messhall_guy02_ID;
|
||
|
int BH_messhall_guy03_ID;
|
||
|
int BH_messhall_guy04_ID;
|
||
|
int BH_messhall_guy05_ID;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(active_soldier_count, 1);
|
||
|
SAVE_VARIABLE(total_mess_reinforcements, 2);
|
||
|
SAVE_VARIABLE(total_BHmess_reinforcements, 3);
|
||
|
SAVE_VARIABLE(torpedoRoomGuard_ID, 4);
|
||
|
SAVE_VARIABLE(mapRoomGuard01_ID, 5);
|
||
|
SAVE_VARIABLE(mapRoomGuard02_ID, 6);
|
||
|
SAVE_VARIABLE(closetGuy01_ID, 7);
|
||
|
SAVE_VARIABLE(BH_messhall_guy01_ID, 8);
|
||
|
SAVE_VARIABLE(BH_messhall_guy02_ID, 9);
|
||
|
SAVE_VARIABLE(BH_messhall_guy03_ID, 10);
|
||
|
SAVE_VARIABLE(BH_messhall_guy04_ID, 11);
|
||
|
SAVE_VARIABLE(BH_messhall_guy05_ID, 12);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
active_soldier_count = 0;
|
||
|
total_mess_reinforcements = 0;
|
||
|
total_BHmess_reinforcements = 0;
|
||
|
}
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (param == 100)//recieved custom from enter zones--here comes the player(s)
|
||
|
{
|
||
|
Commands->Create_Sound ( "00-n060e", Commands->Get_Position ( obj ), obj );
|
||
|
|
||
|
GameObject *torpedoRoomGuard = Commands->Create_Object ( "Nod_FlameThrower_0", Vector3(-.44f, 90.39f, -15.01f));
|
||
|
Commands->Attach_Script(torpedoRoomGuard, "M04_ForeDeck_TorpedoRoom_Guard_JDG", "");
|
||
|
|
||
|
GameObject *mapRoomGuard01 = Commands->Create_Object ( "Nod_Minigunner_2SF_AutoRifle", Vector3(5.99f, 91.56f, -6.0f));
|
||
|
Commands->Attach_Script(mapRoomGuard01, "M04_ForeDeck_MapRoom_Guard01_JDG", "");
|
||
|
|
||
|
GameObject *mapRoomGuard02 = Commands->Create_Object ( "Nod_Minigunner_2SF_AutoRifle", Vector3(-6.46f, 92.67f, -6.0f));
|
||
|
Commands->Attach_Script(mapRoomGuard02, "M04_ForeDeck_MapRoom_Guard02_JDG", "");
|
||
|
|
||
|
active_soldier_count = 3;
|
||
|
|
||
|
torpedoRoomGuard_ID = Commands->Get_ID ( torpedoRoomGuard );
|
||
|
mapRoomGuard01_ID = Commands->Get_ID ( mapRoomGuard01 );
|
||
|
mapRoomGuard02_ID = Commands->Get_ID ( mapRoomGuard02 );
|
||
|
}
|
||
|
|
||
|
else if (param == 200)//someone's been killed...spawn reinforcements if needed
|
||
|
{
|
||
|
active_soldier_count--;
|
||
|
total_BHmess_reinforcements++;
|
||
|
|
||
|
if (( active_soldier_count <= 6) && (total_BHmess_reinforcements < 4))
|
||
|
{
|
||
|
GameObject *foreDeckReinforcement01 = Commands->Trigger_Spawner(100853);
|
||
|
GameObject *foreDeckReinforcement02 = Commands->Trigger_Spawner(100854);
|
||
|
active_soldier_count++;
|
||
|
active_soldier_count++;
|
||
|
Commands->Attach_Script(foreDeckReinforcement01, "M04_ForeDeck_Reinforcement_JDG", "");
|
||
|
Commands->Attach_Script(foreDeckReinforcement02, "M04_ForeDeck_Reinforcement_JDG", "");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == 300)//player is going up to grunt's mess hall
|
||
|
{
|
||
|
active_soldier_count = active_soldier_count + 4;
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 301, 2 );
|
||
|
}
|
||
|
|
||
|
else if (param == 301)//play "proceed with caution" warning
|
||
|
{
|
||
|
Commands->Create_Sound ( "00-c164e", Commands->Get_Position ( obj ), obj );//proceed with caution
|
||
|
}
|
||
|
|
||
|
else if (param == 500)//player is moving toward captain from grunt mess hall
|
||
|
{
|
||
|
//find any guys from torpedo or map room and clean them up if needed
|
||
|
GameObject * torpedoGuy_01 = Commands->Find_Object (torpedoRoomGuard_ID);
|
||
|
if (torpedoGuy_01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( torpedoGuy_01 );
|
||
|
active_soldier_count--;
|
||
|
}
|
||
|
|
||
|
GameObject * mapGuy_01 = Commands->Find_Object (mapRoomGuard01_ID);
|
||
|
if (mapGuy_01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( mapGuy_01 );
|
||
|
active_soldier_count--;
|
||
|
}
|
||
|
|
||
|
GameObject * mapGuy_02 = Commands->Find_Object (mapRoomGuard02_ID);
|
||
|
if (mapGuy_02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( mapGuy_02 );
|
||
|
active_soldier_count--;
|
||
|
}
|
||
|
|
||
|
//put down the closet surprise guy
|
||
|
GameObject *closetGuy01 = Commands->Create_Object ( "Nod_Minigunner_2SF_AutoRifle", Vector3(-3.361f, 79.633f, 3.0f));
|
||
|
Commands->Attach_Script(closetGuy01, "M04_ForeDeck_ClosetSurprise_Guy_JDG", "");
|
||
|
|
||
|
closetGuy01_ID = Commands->Get_ID ( closetGuy01 );
|
||
|
|
||
|
//put down the 5 BH mess hall guys
|
||
|
GameObject * BH_messhall_guy01 = Commands->Create_Object ( "Nod_Minigunner_2SF_AutoRifle", Vector3(5.89f, 88.47f, 6.0f));
|
||
|
Commands->Attach_Script(BH_messhall_guy01, "M04_BH_MessHall_Guy_JDG", "");
|
||
|
Commands->Set_Facing ( BH_messhall_guy01, -135 );
|
||
|
|
||
|
GameObject * BH_messhall_guy02 = Commands->Create_Object ( "Nod_Minigunner_2SF_AutoRifle", Vector3(5.30f, 87.52f, 6.0f));
|
||
|
Commands->Attach_Script(BH_messhall_guy02, "M04_BH_MessHall_Guy_JDG", "");
|
||
|
Commands->Set_Facing ( BH_messhall_guy02, -155 );
|
||
|
|
||
|
GameObject * BH_messhall_guy03 = Commands->Create_Object ( "Nod_Minigunner_2SF_AutoRifle", Vector3(2.64f, 88.12f, 6.0f));
|
||
|
Commands->Attach_Script(BH_messhall_guy03, "M04_BH_MessHall_Guy_JDG", "");
|
||
|
Commands->Set_Facing ( BH_messhall_guy03, -135 );
|
||
|
|
||
|
GameObject * BH_messhall_guy04 = Commands->Create_Object ( "Nod_Minigunner_2SF_AutoRifle", Vector3(2.08f, 87.44f, 6.0f));
|
||
|
Commands->Attach_Script(BH_messhall_guy04, "M04_BH_MessHall_Guy_JDG", "");
|
||
|
Commands->Set_Facing ( BH_messhall_guy04, -140 );
|
||
|
|
||
|
GameObject * BH_messhall_guy05 = Commands->Create_Object ( "Nod_Minigunner_2SF_AutoRifle", Vector3(-0.38f, 87.29f, 6.0f));
|
||
|
Commands->Attach_Script(BH_messhall_guy05, "M04_BH_MessHall_Guy_JDG", "");
|
||
|
Commands->Set_Facing ( BH_messhall_guy05, -110 );
|
||
|
|
||
|
BH_messhall_guy01_ID = Commands->Get_ID ( BH_messhall_guy01 );
|
||
|
BH_messhall_guy02_ID = Commands->Get_ID ( BH_messhall_guy02 );
|
||
|
BH_messhall_guy03_ID = Commands->Get_ID ( BH_messhall_guy03 );
|
||
|
BH_messhall_guy04_ID = Commands->Get_ID ( BH_messhall_guy04 );
|
||
|
BH_messhall_guy05_ID = Commands->Get_ID ( BH_messhall_guy05 );
|
||
|
}
|
||
|
|
||
|
else if (param == 505)//time for homey to come out of the closet
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (closetGuy01_ID), 0, 100, 0 );
|
||
|
}
|
||
|
|
||
|
else if (param == 650)//received param from BH messhall enter zone--tell BH guys its okay to react now
|
||
|
{
|
||
|
GameObject * BH_messhall_guy01 = Commands->Find_Object ( BH_messhall_guy01_ID);
|
||
|
GameObject * BH_messhall_guy02 = Commands->Find_Object ( BH_messhall_guy02_ID);
|
||
|
GameObject * BH_messhall_guy03 = Commands->Find_Object ( BH_messhall_guy03_ID);
|
||
|
GameObject * BH_messhall_guy04 = Commands->Find_Object ( BH_messhall_guy04_ID);
|
||
|
GameObject * BH_messhall_guy05 = Commands->Find_Object ( BH_messhall_guy05_ID);
|
||
|
|
||
|
if (BH_messhall_guy01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, BH_messhall_guy01, 0, 600, 0 );
|
||
|
}
|
||
|
|
||
|
if (BH_messhall_guy02 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, BH_messhall_guy02, 0, 600, 0 );
|
||
|
}
|
||
|
|
||
|
if (BH_messhall_guy03 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, BH_messhall_guy03, 0, 600, 0 );
|
||
|
}
|
||
|
|
||
|
if (BH_messhall_guy04 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, BH_messhall_guy04, 0, 600, 0 );
|
||
|
}
|
||
|
|
||
|
if (BH_messhall_guy05 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, BH_messhall_guy05, 0, 600, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == 700)//player is approaching main bridge--put down captain's bodyguards
|
||
|
{
|
||
|
GameObject *captains_bodyguard_01 = Commands->Create_Object ( "Nod_FlameThrower_1Off", Vector3(-17.79f, 85.49f, 13.13f));
|
||
|
Commands->Attach_Script(captains_bodyguard_01, "M04_Captains_Bodyguard_JDG", "");
|
||
|
GameObject *captains_bodyguard_02 = Commands->Create_Object ( "Nod_FlameThrower_1Off", Vector3(-15.26f, 79.5f, 13.13f));
|
||
|
Commands->Attach_Script(captains_bodyguard_02, "M04_Captains_Bodyguard_JDG", "");
|
||
|
GameObject *captains_bodyguard_03 = Commands->Create_Object ( "Nod_FlameThrower_1Off", Vector3(17.79f, 85.49f, 13.13f));
|
||
|
Commands->Attach_Script(captains_bodyguard_03, "M04_Captains_Bodyguard_JDG", "");
|
||
|
GameObject *captains_bodyguard_04 = Commands->Create_Object ( "Nod_FlameThrower_1Off", Vector3(15.26f, 79.5f, 13.13f));
|
||
|
Commands->Attach_Script(captains_bodyguard_04, "M04_Captains_Bodyguard_JDG", "");
|
||
|
GameObject *captains_bodyguard_05 = Commands->Create_Object ( "Nod_FlameThrower_1Off", Vector3(-8.67f, 81.66f, 13.13f));
|
||
|
Commands->Attach_Script(captains_bodyguard_05, "M04_Captains_Bodyguard_JDG", "");
|
||
|
GameObject *captains_bodyguard_06 = Commands->Create_Object ( "Nod_FlameThrower_1Off", Vector3(8.67f, 81.66f, 13.13f));
|
||
|
Commands->Attach_Script(captains_bodyguard_06, "M04_Captains_Bodyguard_JDG", "");
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Captains_Bodyguard_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 2 );
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
float reinforce_ka = Commands->Get_Random ( 0.5f, 3.5f );
|
||
|
|
||
|
if ((reinforce_ka >= 0.5) && (reinforce_ka < 1.5))
|
||
|
{
|
||
|
GameObject * captains_bodyguard_reinforceguy = Commands->Trigger_Spawner( 100918 );
|
||
|
Commands->Attach_Script(captains_bodyguard_reinforceguy, "M04_Captains_Bodyguard_Reinforcement_JDG", "");
|
||
|
}
|
||
|
|
||
|
else if ((reinforce_ka >= 1.5) && (reinforce_ka < 2.0))
|
||
|
{
|
||
|
GameObject * captains_bodyguard_reinforceguy = Commands->Trigger_Spawner( 100918 );
|
||
|
GameObject * captains_bodyguard_reinforceguy02 = Commands->Trigger_Spawner( 100919 );
|
||
|
Commands->Attach_Script(captains_bodyguard_reinforceguy, "M04_Captains_Bodyguard_Reinforcement_JDG", "");
|
||
|
Commands->Attach_Script(captains_bodyguard_reinforceguy02, "M04_Captains_Bodyguard_Reinforcement02_JDG", "");
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Captains_Bodyguard_Reinforcement_JDG, "")
|
||
|
{
|
||
|
bool engaged;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(engaged, 1);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
engaged = false;
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, 100 );
|
||
|
params.Set_Movement( Vector3(0,0,0), 1.0f, .25f );
|
||
|
params.WaypathID = 100927;
|
||
|
params.WaypointStartID = 100928;
|
||
|
params.WaypointEndID = 100932;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Enemy_Seen( GameObject * obj, GameObject * enemy )
|
||
|
{
|
||
|
if (enemy == STAR)
|
||
|
{
|
||
|
if (engaged == false)
|
||
|
{
|
||
|
engaged = true;
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
Vector3 players_position = Commands->Get_Position ( STAR );
|
||
|
Commands->Action_Reset ( obj, 0 );
|
||
|
params.Set_Basic( this, 45, 100 );
|
||
|
params.Set_Movement( players_position, 1.0f, .25f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Captains_Bodyguard_Reinforcement02_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, 100 );
|
||
|
params.Set_Movement( Vector3(0,0,0), 1.0f, .25f );
|
||
|
params.WaypathID = 100920;
|
||
|
params.WaypointStartID = 100921;
|
||
|
params.WaypointEndID = 100925;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
Vector3 players_position = Commands->Get_Position ( STAR );
|
||
|
Commands->Action_Reset ( obj, 0 );
|
||
|
params.Set_Basic( this, 45, 100 );
|
||
|
params.Set_Movement( players_position, 1.0f, .25f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Captains_Bridge_Enter_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_FORE_DECK_CONTROLLER_JDG), 0, 700, 0 );//tell foredeck controller that player is approaching main bridge
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_SHIPS_CAPTAIN_JDG), 0, 100, 0 );//this tells captain to turn on hearing
|
||
|
Commands->Create_Sound ( "00-n060e", Commands->Get_Position ( obj ), obj );//updating radar flags
|
||
|
|
||
|
GameObject *zone01 = Commands->Find_Object (100876);
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_BH_MessHall_Trigger_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_FORE_DECK_CONTROLLER_JDG), 0, 650, 0 );//tell foredeck controller that player is entering BH messhall
|
||
|
Commands->Create_Sound ( "00-c164e", Commands->Get_Position ( obj ), obj );//proceed with caution
|
||
|
//clean up this zone
|
||
|
GameObject *zone01 = Commands->Find_Object (100873);
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_BH_MessHall_Guy_JDG, "")
|
||
|
{
|
||
|
bool ok_to_react;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(ok_to_react, 1);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
ok_to_react = false;
|
||
|
ActionParamsStruct params;//M04 Nod Alert Twiddler
|
||
|
Vector3 look_position = Commands->Get_Position ( Commands->Find_Object ( 100455 ) );
|
||
|
params.Set_Basic(this, 89, 100);
|
||
|
params.Set_Attack(look_position, 0, 0, false);
|
||
|
Commands->Action_Attack(obj, params);
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
if (damager == STAR)
|
||
|
{
|
||
|
if (obj)
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
float reinforce_ka = Commands->Get_Random ( 0.5f, 2.5f );
|
||
|
|
||
|
if ((reinforce_ka >= 0.5) && (reinforce_ka < 1.5))
|
||
|
{
|
||
|
GameObject * BH_messhall_reinforceguy = Commands->Trigger_Spawner( 100875 );
|
||
|
Commands->Attach_Script(BH_messhall_reinforceguy, "M04_ForeDeck_Reinforcement_03_JDG", "");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Sound_Heard( GameObject * obj, const CombatSound & sound )
|
||
|
{
|
||
|
if (ok_to_react == true)
|
||
|
{
|
||
|
if (obj)
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (param == 600)//recieved custom from controller--you can react to gunshots now
|
||
|
{
|
||
|
ok_to_react = true;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_ForeDeck_ClosetSurprise_Guy_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Innate_Disable( obj );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (param == 100)//recieved custom from enter zones--here comes the player(s)
|
||
|
{
|
||
|
if (obj)
|
||
|
{
|
||
|
Commands->Innate_Enable(obj);
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, 100 );
|
||
|
params.Set_Movement( Vector3(0,0,0), .750f, .25f );
|
||
|
params.WaypathID = 100864;
|
||
|
params.WaypointStartID = 100865;
|
||
|
params.WaypointEndID = 100867;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == 100 && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
Vector3 players_position = Commands->Get_Position ( STAR );
|
||
|
params.Set_Basic( this, 45, 100 );
|
||
|
params.Set_Movement( players_position, 1.0f, .25f );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_ForeDeck_ClosetSurprise_Trigger_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if (enterer == STAR)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_FORE_DECK_CONTROLLER_JDG), 0, 505, 0 );//tell foredeck controller that player is leaving mess hall
|
||
|
|
||
|
GameObject * sniperTarget01 = Commands->Create_Object ( "Nod_Minigunner_2SF_AutoRifle", Vector3(8.937f, 83.264f, 6.000f));
|
||
|
Commands->Attach_Script(sniperTarget01, "M04_Doorway_Enterer_JDG", "8.149 76.787 3.000");
|
||
|
|
||
|
GameObject *zone01 = Commands->Find_Object (100869);
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
|
||
|
GameObject *zone02 = Commands->Find_Object (100870);
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_GruntMessHall_Exit_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_FORE_DECK_CONTROLLER_JDG), 0, 500, 0 );//tell foredeck controller that player is leaving mess hall
|
||
|
|
||
|
GameObject *zone01 = Commands->Find_Object (100857);
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_GruntMessHall_Entry_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_FORE_DECK_CONTROLLER_JDG), 0, 300, 0 );//tell foredeck controller that player is entering mess hall
|
||
|
|
||
|
GameObject *zone01 = Commands->Find_Object (100459);
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
|
||
|
GameObject *zone02 = Commands->Find_Object (100460);
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
/**********************************************************************************************************
|
||
|
The following are the scripts and controller for the end fire fight.
|
||
|
**********************************************************************************************************/
|
||
|
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Firefight_Start_Battle_Music_JDG, "")
|
||
|
{
|
||
|
bool playerHasLevel3Keycard;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( playerHasLevel3Keycard, 1 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
playerHasLevel3Keycard = false;
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (param == 100)//level 3 keycard acquired
|
||
|
{
|
||
|
playerHasLevel3Keycard = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR && playerHasLevel3Keycard == true)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_END_FIREFIGHT_CONTROLLER_JDG), 0, 100, 0 );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Firefight_NodGuys, "")
|
||
|
{
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_END_FIREFIGHT_CONTROLLER_JDG), 0, 666, 0 );//tell controller you've been killed
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
DECLARE_SCRIPT(M04_PostFirstMate_SamRoom_PatrolGuy_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 101208;
|
||
|
params.WaypointStartID = 101209;
|
||
|
params.WaypointEndID = 101210;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == M01_WALKING_WAYPATH_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_02_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 101212;
|
||
|
params.WaypointStartID = 101213;
|
||
|
params.WaypointEndID = 101214;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_02_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_03_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 101216;
|
||
|
params.WaypointStartID = 101217;
|
||
|
params.WaypointEndID = 101218;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_03_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_03_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_03_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_04_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 101220;
|
||
|
params.WaypointStartID = 101221;
|
||
|
params.WaypointEndID = 101222;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_04_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_04_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_04_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 101208;
|
||
|
params.WaypointStartID = 101209;
|
||
|
params.WaypointEndID = 101210;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_PostFirstMate_MissileRoom_PatrolGuy_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 100550;
|
||
|
params.WaypointStartID = 100551;
|
||
|
params.WaypointEndID = 100553;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == M01_WALKING_WAYPATH_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic( this, 60, M01_WALKING_WAYPATH_02_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 100555;
|
||
|
params.WaypointStartID = 100556;
|
||
|
params.WaypointEndID = 100557;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_02_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_03_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 100541;
|
||
|
params.WaypointStartID = 100542;
|
||
|
params.WaypointEndID = 100544;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_03_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_03_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_03_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_04_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 100546;
|
||
|
params.WaypointStartID = 100547;
|
||
|
params.WaypointEndID = 100548;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_04_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_04_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_04_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 100550;
|
||
|
params.WaypointStartID = 100551;
|
||
|
params.WaypointEndID = 100553;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_PostFirstMate_OfficerQuarters_PatrolGuy_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 101237;
|
||
|
params.WaypointStartID = 101238;
|
||
|
params.WaypointEndID = 101241;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == M01_WALKING_WAYPATH_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_02_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 101243;
|
||
|
params.WaypointStartID = 101244;
|
||
|
params.WaypointEndID = 101247;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_02_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 101237;
|
||
|
params.WaypointStartID = 101238;
|
||
|
params.WaypointEndID = 101241;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_PostFirstMate_FrontDeck_PatrolGuy01_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 101250;
|
||
|
params.WaypointStartID = 101251;
|
||
|
params.WaypointEndID = 101255;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == M01_WALKING_WAYPATH_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_02_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 101250;
|
||
|
params.WaypointStartID = 101255;
|
||
|
params.WaypointEndID = 101251;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_02_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 101250;
|
||
|
params.WaypointStartID = 101251;
|
||
|
params.WaypointEndID = 101255;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_PostFirstMate_FrontDeck_PatrolGuy02_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 101258;
|
||
|
params.WaypointStartID = 101259;
|
||
|
params.WaypointEndID = 101263;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == M01_WALKING_WAYPATH_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_02_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 101258;
|
||
|
params.WaypointStartID = 101263;
|
||
|
params.WaypointEndID = 101259;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_02_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
|
||
|
params.WaypathID = 101258;
|
||
|
params.WaypointStartID = 101259;
|
||
|
params.WaypointEndID = 101263;
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EnterCargoBay_BottomRight_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_CARGOHOLD_CONTROLLER_JDG), 0, 100, 0 );
|
||
|
|
||
|
GameObject * zone01 = Commands->Find_Object (100497);
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone03 = Commands->Find_Object (100499);
|
||
|
if (zone03 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone03 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EnterCargoBay_TopLeft_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_CARGOHOLD_CONTROLLER_JDG), 0, 100, 0 );
|
||
|
|
||
|
GameObject * zone01 = Commands->Find_Object (100497);
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone03 = Commands->Find_Object (100499);
|
||
|
if (zone03 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone03 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_RocketEmplacement_01_JDG, "")//103461
|
||
|
{
|
||
|
int apache_id;
|
||
|
bool secondary_apache_spawned;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(apache_id, 1);
|
||
|
SAVE_VARIABLE(secondary_apache_spawned, 2);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
secondary_apache_spawned = false;
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == M01_MODIFY_YOUR_ACTION_JDG)
|
||
|
{
|
||
|
apache_id = param;
|
||
|
}
|
||
|
|
||
|
else if (type == CUSTOM_EVENT_VEHICLE_ENTERED)
|
||
|
{
|
||
|
Commands->Debug_Message ( "***************************player has entered tailgun 01--send custom to apache\n" );
|
||
|
GameObject * apache = Commands->Find_Object ( apache_id );
|
||
|
if (apache != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event ( obj, apache, 0, M01_MODIFY_YOUR_ACTION_05_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
else if (secondary_apache_spawned == false)
|
||
|
{
|
||
|
secondary_apache_spawned = true;
|
||
|
Vector3 spawnSpot (-5.496f, -52.198f, 22.300f);
|
||
|
GameObject * secondaryapache = Commands->Create_Object ( "NOD_Apache", spawnSpot );
|
||
|
Commands->Attach_Script(secondaryapache, "M04_SecondaryApache01_JDG", "");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_SecondaryApache01_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
|
||
|
params.Set_Movement(Vector3 (0,0,0), 1.0f, 5);
|
||
|
params.WaypathID = 103531;
|
||
|
|
||
|
Commands->Action_Goto(obj, params);
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Vector3 spawnSpot (-3.732f, -59.579f, 2.704f);
|
||
|
Commands->Create_Object ( "POW_Armor_100", spawnSpot );
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
if (action_id == M01_WALKING_WAYPATH_01_JDG)
|
||
|
{
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_SecondaryApache02_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
|
||
|
params.Set_Movement(Vector3 (0,0,0), 1.0f, 1);
|
||
|
params.WaypathID = 103608;
|
||
|
|
||
|
Commands->Action_Goto(obj, params);
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Vector3 spawnSpot (-3.701f, -55.248f, 2.704f);
|
||
|
Commands->Create_Object ( "POW_Health_100", spawnSpot );
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
if (action_id == M01_WALKING_WAYPATH_01_JDG)
|
||
|
{
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_RocketEmplacement_02_JDG, "")//103462
|
||
|
{
|
||
|
int apache_id;
|
||
|
bool secondary_apache_spawned;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(apache_id, 1);
|
||
|
SAVE_VARIABLE(secondary_apache_spawned, 2);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
secondary_apache_spawned = false;
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == M01_MODIFY_YOUR_ACTION_JDG)
|
||
|
{
|
||
|
apache_id = param;
|
||
|
}
|
||
|
|
||
|
else if (type == CUSTOM_EVENT_VEHICLE_ENTERED)
|
||
|
{
|
||
|
Commands->Debug_Message ( "***************************player has entered tailgun 02--send custom to apache\n" );
|
||
|
GameObject * apache = Commands->Find_Object ( apache_id );
|
||
|
if (apache != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event ( obj, apache, 0, M01_MODIFY_YOUR_ACTION_04_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
else if (secondary_apache_spawned == false)
|
||
|
{
|
||
|
secondary_apache_spawned = true;
|
||
|
Vector3 spawnSpot (13.267f, -52.984f, 22.650f);
|
||
|
GameObject * secondaryapache = Commands->Create_Object ( "NOD_Apache", spawnSpot );
|
||
|
Commands->Attach_Script(secondaryapache, "M04_SecondaryApache02_JDG", "");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_Stationary_Tech_JDG, "Console_ID :int")
|
||
|
{
|
||
|
int myConsole_id;
|
||
|
bool deadYet;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( deadYet, 1 );
|
||
|
SAVE_VARIABLE( myConsole_id, 2 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
deadYet = false;
|
||
|
myConsole_id = Get_Int_Parameter("Console_ID");
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
Commands->Set_Loiters_Allowed( obj, false );
|
||
|
Commands->Innate_Soldier_Enable_Footsteps_Heard ( obj, false );
|
||
|
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_START_ACTING_JDG, 1 );
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
deadYet = true;
|
||
|
GameObject * engineer = Commands->Find_Object ( M04_ENGINEROOM_CHIEF_ENGINEER_JDG );
|
||
|
if (engineer != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event ( obj, engineer, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (type == 0 && deadYet == false)//
|
||
|
{
|
||
|
if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
GameObject * myConsole = Commands->Find_Object ( myConsole_id );
|
||
|
if (myConsole != NULL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic(this, 100, M01_START_ACTING_JDG);
|
||
|
params.Set_Attack( myConsole, 0, 0, true );
|
||
|
|
||
|
Commands->Action_Attack ( obj, params );
|
||
|
|
||
|
float delayTimer = Commands->Get_Random ( 0, 0.5f );
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Commands->Debug_Message ( "**********************startionary tech cannot find his console\n" );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_JDG)
|
||
|
{
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
params.Set_Basic(this, 50, M01_DOING_ANIMATION_01_JDG);
|
||
|
params.Set_Animation( "H_A_CON2", false );
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG)
|
||
|
{
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_IVE_BEEN_KILLED_JDG)//M04 PanicGuy 01 Twiddler
|
||
|
{
|
||
|
Commands->Innate_Disable(obj);
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
params.Set_Basic(this, 100, M01_FACING_SPECIFIED_DIRECTION_01_JDG);
|
||
|
params.Set_Attack( STAR, 0, 0, true );
|
||
|
Commands->Action_Attack (obj, params);
|
||
|
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 1 );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_03_JDG)
|
||
|
{
|
||
|
//Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
//Commands->Create_Sound ( "M04 PanicGuy 01 Twiddler", myPosition, obj );
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
params.Set_Basic(this, 100, M01_DOING_ANIMATION_03_JDG);
|
||
|
params.Set_Animation ("H_A_HOST_L1A", false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_04_JDG)//stand back up then start hunting player
|
||
|
{
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
params.Set_Basic(this, 100, M01_DOING_ANIMATION_05_JDG);
|
||
|
params.Set_Animation ("H_A_HOST_L2C", false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
if (action_id == M01_DOING_ANIMATION_01_JDG)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
params.Set_Basic( this, 50, M01_DOING_ANIMATION_02_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_02_JDG)
|
||
|
{
|
||
|
GameObject * myConsole = Commands->Find_Object ( myConsole_id );
|
||
|
if (myConsole != NULL)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_START_ACTING_JDG);
|
||
|
params.Set_Attack( myConsole, 0, 0, true );
|
||
|
|
||
|
Commands->Action_Attack ( obj, params );
|
||
|
|
||
|
float delayTimer = Commands->Get_Random ( 0, 0.5f );
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_03_JDG)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_DOING_ANIMATION_04_JDG);
|
||
|
params.Set_Animation ("H_A_HOST_L2A", false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_04_JDG)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_DOING_ANIMATION_04_JDG);
|
||
|
params.Set_Animation ("H_A_HOST_L2B", true);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
|
||
|
float delayTimer = Commands->Get_Random ( 10, 30 );
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_MODIFY_YOUR_ACTION_04_JDG, delayTimer );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_05_JDG)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_DOING_ANIMATION_06_JDG);
|
||
|
params.Set_Animation ("H_A_HOST_L1C", false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_DOING_ANIMATION_06_JDG)
|
||
|
{
|
||
|
if (obj)
|
||
|
{
|
||
|
Commands->Innate_Enable(obj);
|
||
|
Commands->Attach_Script(obj, "M01_Hunt_The_Player_JDG", "");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Catwalk_Enter_Zone_01_JDG, "")//this guy comes out level 2 door
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if (enterer == STAR)
|
||
|
{
|
||
|
GameObject * sniperTarget01 = Commands->Create_Object ( "Nod_MiniGunner_1Off", Vector3(-14.594f, 27.717f, -9));
|
||
|
Commands->Attach_Script(sniperTarget01, "M04_Doorway_Enterer_JDG", "-9.3 8.9 -9");
|
||
|
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Catwalk_Enter_Zone_02_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if (enterer == STAR)
|
||
|
{
|
||
|
GameObject * sniperTarget01 = Commands->Create_Object ( "Nod_MiniGunner_1Off", Vector3(12.913f, -27.628f, -9));
|
||
|
Commands->Attach_Script(sniperTarget01, "M04_Doorway_Enterer_JDG", "10.868 -6.359 -9");
|
||
|
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Doorway_Enterer_JDG, "first_location:vector3")
|
||
|
{
|
||
|
Vector3 runToPosition;
|
||
|
Vector3 leavePosition;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(runToPosition, 1);
|
||
|
SAVE_VARIABLE(leavePosition, 2);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
runToPosition = Get_Vector3_Parameter("first_location");
|
||
|
leavePosition = Commands->Get_Position ( obj );
|
||
|
|
||
|
Commands->Enable_Hibernation( obj, false );
|
||
|
Commands->Grant_Key( obj, 1, true );
|
||
|
Commands->Grant_Key( obj, 2, true );
|
||
|
Commands->Grant_Key( obj, 3, true );
|
||
|
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( runToPosition, WALK, 1);
|
||
|
|
||
|
Commands->Action_Goto ( obj, params );
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Vector3 powerupSpawnLocation = Commands->Get_Position (obj );
|
||
|
powerupSpawnLocation.Z += 0.75f;
|
||
|
|
||
|
char *powerups[2] =
|
||
|
{//this is a list of potential powerups to be dropped by sniper target guys
|
||
|
"POW_Health_100",
|
||
|
"POW_Armor_100",
|
||
|
};
|
||
|
int random = Commands->Get_Random_Int(0, 2);
|
||
|
|
||
|
//GameObject *spawn_effect = Commands->Create_Object( "Spawner Created Special Effect", powerupSpawnLocation );
|
||
|
|
||
|
//if (spawn_effect)
|
||
|
//{
|
||
|
// Commands->Attach_Script( spawn_effect, "M00_Create_Anim_Effect_DAY", "C4_EX1A.C4_EX1A");
|
||
|
//}
|
||
|
|
||
|
Commands->Create_Object ( powerups[random], powerupSpawnLocation );
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
switch (complete_reason)
|
||
|
{
|
||
|
case ACTION_COMPLETE_NORMAL:
|
||
|
{
|
||
|
switch (action_id)
|
||
|
{
|
||
|
case M01_WALKING_WAYPATH_01_JDG:
|
||
|
{
|
||
|
char *animationName = M01_Choose_Search_Animation ( );
|
||
|
|
||
|
params.Set_Basic( this, 45, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation( animationName, false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case M01_DOING_ANIMATION_01_JDG:
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_02_JDG );
|
||
|
params.Set_Movement( leavePosition, WALK, 1);
|
||
|
|
||
|
Commands->Action_Goto ( obj, params );
|
||
|
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case M01_WALKING_WAYPATH_02_JDG:
|
||
|
{
|
||
|
Commands->Enable_Hibernation( obj, true );
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Hunter_Controller_JDG, "")//M04_ENGINEROOM_HUNTING_CONTROLLER_JDG
|
||
|
{
|
||
|
int hunter_01_id;
|
||
|
int hunter_02_id;
|
||
|
int hunter_03_id;
|
||
|
bool messagePlayed;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(hunter_01_id, 1);
|
||
|
SAVE_VARIABLE(hunter_02_id, 2);
|
||
|
SAVE_VARIABLE(hunter_03_id, 3);
|
||
|
SAVE_VARIABLE(messagePlayed, 4);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
hunter_01_id = NULL;
|
||
|
hunter_02_id = NULL;
|
||
|
hunter_03_id = NULL;
|
||
|
messagePlayed = false;
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
GameObject *hunter_01 = Commands->Find_Object ( hunter_01_id );
|
||
|
if (hunter_01 == NULL)
|
||
|
{
|
||
|
messagePlayed = false;
|
||
|
Vector3 hunter01_spawnlocation (-13.523f, 48.665f, -9.003f);
|
||
|
GameObject *hunter_01 = Commands->Create_Object ( "Nod_Minigunner_2SF_AutoRifle", hunter01_spawnlocation );
|
||
|
hunter_01_id = Commands->Get_ID ( hunter_01 );
|
||
|
Commands->Attach_Script(hunter_01, "M04_Hunter_JDG", "");
|
||
|
}
|
||
|
|
||
|
GameObject *hunter_02 = Commands->Find_Object ( hunter_02_id );
|
||
|
if (hunter_02 == NULL)
|
||
|
{
|
||
|
Vector3 hunter02_spawnlocation (11.943f, 42.201f, -15.000f);
|
||
|
GameObject *hunter_02 = Commands->Create_Object ( "Nod_Minigunner_2SF_AutoRifle", hunter02_spawnlocation );
|
||
|
hunter_02_id = Commands->Get_ID ( hunter_02 );
|
||
|
Commands->Attach_Script(hunter_02, "M04_Hunter_JDG", "");
|
||
|
}
|
||
|
|
||
|
GameObject *hunter_03 = Commands->Find_Object ( hunter_03_id );
|
||
|
if (hunter_03 == NULL)
|
||
|
{
|
||
|
Vector3 hunter03_spawnlocation (3.834f, 60.196f, -15.000f);
|
||
|
GameObject *hunter_03 = Commands->Create_Object ( "Nod_Minigunner_2SF_AutoRifle", hunter03_spawnlocation );
|
||
|
hunter_03_id = Commands->Get_ID ( hunter_03 );
|
||
|
Commands->Attach_Script(hunter_03, "M04_Hunter_JDG", "");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_JDG)
|
||
|
{
|
||
|
if (messagePlayed == false)
|
||
|
{
|
||
|
messagePlayed = true;
|
||
|
int conv = Commands->Create_Conversation( "M04_Eva_WarnsAboutHunters_Conversation", 30, 50, false);
|
||
|
Commands->Join_Conversation( NULL, conv, false, false, false );
|
||
|
Commands->Start_Conversation( conv, conv );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == M01_GOTO_IDLE_JDG)
|
||
|
{
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Hunter_JDG, "")
|
||
|
{
|
||
|
float myPriority;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(myPriority, 1);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
if (STAR)
|
||
|
{
|
||
|
Commands->Grant_Key( obj, 1, true );
|
||
|
Commands->Grant_Key( obj, 2, true );
|
||
|
myPriority = 85;
|
||
|
Commands->Enable_Hibernation( obj, false );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_02_JDG, 5 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_MODIFY_YOUR_ACTION_JDG)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, myPriority, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( STAR, RUN, 5 );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 5 );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG)//monitor how close you are to player
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Vector3 playerPosition = Commands->Get_Position ( STAR );
|
||
|
float distanceFromStar = Commands->Get_Distance ( myPosition, playerPosition );
|
||
|
|
||
|
if (distanceFromStar <= 40)//******play eva warning conversation here*****
|
||
|
{
|
||
|
myPriority = 45;
|
||
|
|
||
|
GameObject * hunterController = Commands->Find_Object ( M04_ENGINEROOM_HUNTING_CONTROLLER_JDG );
|
||
|
if (hunterController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, hunterController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
myPriority = 100;
|
||
|
}
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_02_JDG, 5 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Destroyed( GameObject * obj )
|
||
|
{
|
||
|
GameObject * myController = Commands->Find_Object ( M04_ENGINEROOM_HUNTING_CONTROLLER_JDG );
|
||
|
if (myController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, myController, 0, M01_START_ACTING_JDG, 1 );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
/*DECLARE_SCRIPT(M04_Hunter_JDG, "MyLeaders_ID :int")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
int leaders_id = Get_Int_Parameter("MyLeaders_ID");
|
||
|
|
||
|
if (leaders_id == 0)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_02_JDG, 5 );
|
||
|
}
|
||
|
|
||
|
GameObject * leader = Commands->Find_Object ( leaders_id );
|
||
|
|
||
|
Commands->Grant_Key( obj, 1, true );
|
||
|
Commands->Grant_Key( obj, 2, true );
|
||
|
|
||
|
Commands->Enable_Hibernation( obj, false );
|
||
|
if (leader != NULL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( leader, RUN, 2 );
|
||
|
params.AttackActive = false;
|
||
|
params.MoveFollow= true;
|
||
|
|
||
|
Commands->Action_Attack( obj, params );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( STAR, RUN, 5 );
|
||
|
params.AttackActive = false;
|
||
|
|
||
|
Commands->Action_Attack( obj, params );
|
||
|
}
|
||
|
|
||
|
Commands->Start_Timer ( obj, this, 120, M01_GOTO_IDLE_JDG );
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
if (obj)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_MODIFY_YOUR_ACTION_JDG)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( STAR, RUN, 10 );
|
||
|
params.Set_Attack( STAR, 50, 0, true );
|
||
|
params.AttackActive = true;
|
||
|
|
||
|
Commands->Modify_Action ( obj, M01_WALKING_WAYPATH_01_JDG, params, true, true );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG)//monitor how close you are to player
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Vector3 playerPosition = Commands->Get_Position ( STAR );
|
||
|
float distanceFromStar = Commands->Get_Distance ( myPosition, playerPosition );
|
||
|
|
||
|
if (distanceFromStar <= 40)//******play eva warning conversation here*****
|
||
|
{
|
||
|
int conv = Commands->Create_Conversation( "M04_Eva_WarnsAboutHunters_Conversation", 100, 50, false);
|
||
|
Commands->Join_Conversation( NULL, conv, false, false, false );
|
||
|
Commands->Start_Conversation( conv, conv );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_02_JDG, 5 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Destroyed( GameObject * obj )
|
||
|
{
|
||
|
GameObject * myController = Commands->Find_Object ( M04_ENGINEROOM_HUNTING_CONTROLLER_JDG );
|
||
|
if (myController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, myController, 0, M01_START_ACTING_JDG, 1 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
if (obj && damager == STAR)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Enemy_Seen( GameObject * obj, GameObject * enemy )
|
||
|
{
|
||
|
if (enemy == STAR)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Timer_Expired( GameObject * obj, int timer_id )
|
||
|
{
|
||
|
if (timer_id == M01_GOTO_IDLE_JDG)
|
||
|
{
|
||
|
//Commands->Enable_Hibernation( obj, true );
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Vector3 playerPosition = Commands->Get_Position ( STAR );
|
||
|
float distanceFromStar = Commands->Get_Distance ( myPosition, playerPosition );
|
||
|
|
||
|
if (distanceFromStar >= 150)
|
||
|
{
|
||
|
bool visible = Commands->Is_Object_Visible( obj, STAR );
|
||
|
|
||
|
if (visible != true)
|
||
|
{
|
||
|
Commands->Apply_Damage( obj, 100000, "BlamoKiller", NULL );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Commands->Start_Timer ( obj, this, 20, M01_GOTO_IDLE_JDG );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Commands->Start_Timer ( obj, this, 20, M01_GOTO_IDLE_JDG );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};*/
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Front_ofThe_Boat_Population_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 3 );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Cooks_Script_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
Commands->Set_Player_Type (obj, SCRIPT_PLAYERTYPE_NOD );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Prison_Keycard_CheckZone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if (enterer == STAR)
|
||
|
{
|
||
|
GameObject * prisonGuard01 = Commands->Find_Object (M04_ENGINEROOM_PRISONGUARD_01_JDG);
|
||
|
GameObject * prisonGuard02 = Commands->Find_Object (M04_ENGINEROOM_PRISONGUARD_02_JDG);
|
||
|
|
||
|
if (prisonGuard01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( prisonGuard01 );
|
||
|
}
|
||
|
|
||
|
if (prisonGuard02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( prisonGuard02 );
|
||
|
}
|
||
|
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_TiberiumHold_EntryZone_and_Controller_JDG, "")//this guys ID number is M04_TIBERIUM_HOLD_CONTROLLER_JDG 100572
|
||
|
{
|
||
|
bool entered;
|
||
|
bool ok_to_clean_up;
|
||
|
int cargo_conv1;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( entered, 1 );
|
||
|
SAVE_VARIABLE( ok_to_clean_up, 2 );
|
||
|
SAVE_VARIABLE( cargo_conv1, 3 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
entered = false;
|
||
|
ok_to_clean_up = false;
|
||
|
}
|
||
|
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR && (ok_to_clean_up == true))
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_AFT_DECK_CONTROLLER_JDG), 0, 6000, 0 );//tell aft deck controller to clean up any remaining soldiers
|
||
|
}
|
||
|
|
||
|
if ( enterer == STAR && (entered == false))
|
||
|
{
|
||
|
entered = true;
|
||
|
|
||
|
if (STAR != NULL)
|
||
|
{
|
||
|
cargo_conv1 = Commands->Create_Conversation( "M04_TiberiumHold_Entry_Conversation", 100, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, cargo_conv1, false, false, false);
|
||
|
//Commands->Join_Conversation( STAR, cargo_conv1, false, false, false );
|
||
|
Commands->Start_Conversation( cargo_conv1, cargo_conv1 );
|
||
|
}
|
||
|
|
||
|
GameObject * cryochamber = Commands->Find_Object (M04_TIBERIUM_CRYOCHAMBER_JDG);
|
||
|
if (cryochamber != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, cryochamber, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject *visceroidGuy01 = Commands->Find_Object (M04_TIBERIUM_HOLD_TECH01_JDG);
|
||
|
if (visceroidGuy01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, visceroidGuy01, 0, M01_START_ACTING_JDG, 3 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_TibHold_MutantChamber_JDG, "")
|
||
|
{
|
||
|
int cryoShakeCounter;
|
||
|
bool released;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( cryoShakeCounter, 1 );
|
||
|
SAVE_VARIABLE( released, 2 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Animation_Frame ( obj, "DSP_CRYOBIG2.DSP_CRYOBIG2", 0 );
|
||
|
cryoShakeCounter = 0;
|
||
|
released = false;
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
float myHealth = Commands->Get_Health ( obj );
|
||
|
|
||
|
if (myHealth <= 10)
|
||
|
{
|
||
|
Commands->Set_Health ( obj, 0.25f );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Animation_Complete( GameObject * obj, const char * animation_name )
|
||
|
{
|
||
|
if (cryoShakeCounter < 10)
|
||
|
{
|
||
|
Commands->Set_Animation ( obj, "DSP_CRYOBIG2.DSP_CRYOBIG2", false, NULL, 0, 9 );
|
||
|
cryoShakeCounter++;
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
Commands->Set_Animation ( obj, "DSP_CRYOBIG2.DSP_CRYOBIG2", false, NULL, 0, 9 );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_JDG && released == false)
|
||
|
{
|
||
|
released = true;
|
||
|
Commands->Set_Animation ( obj, "DSP_CRYOBIG2.DSP_CRYOBIG2", false, NULL, 0, 15 );
|
||
|
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Create_Explosion ( "Explosion_Barrel_Toxic", myPosition, NULL );
|
||
|
|
||
|
Vector3 spawnLocation (-14.4f, -112.2f, -9);
|
||
|
GameObject * realMutant = Commands->Create_Object ( "Mutant_0_Mutant", spawnLocation );
|
||
|
Commands->Attach_Script(realMutant, "M04_TibHold_RealMutant_JDG", "");
|
||
|
|
||
|
GameObject * simpleMutant = Commands->Find_Object (M04_TIBERIUM_SIMPLEMUTANT_JDG);
|
||
|
if (simpleMutant != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( simpleMutant );
|
||
|
}
|
||
|
|
||
|
float myFacing = Commands->Get_Facing ( obj );
|
||
|
|
||
|
GameObject *destroyedVersion = Commands->Create_Object ( "Simple_Large_CryoChamber_Destroyed", myPosition );
|
||
|
Commands->Set_Facing ( destroyedVersion, myFacing );
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_TibHold_SimpleMutant_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Animation_Frame ( obj, "S_A_HUMAN.H_A_822A", 15 );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
/*DECLARE_SCRIPT(M11_MutantCrypt_Spawner03_Guy_JDG, "")
|
||
|
{
|
||
|
typedef enum {
|
||
|
IDLE,
|
||
|
ATTACKING,
|
||
|
DEAD,
|
||
|
} M11_Mutant_State;
|
||
|
|
||
|
M11_Mutant_State myState;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(myState, 1);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
myState = IDLE;
|
||
|
float delayTimer = Commands->Get_Random ( 10, 20 );
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_START_ACTING_JDG, delayTimer );
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
myState = DEAD;
|
||
|
|
||
|
GameObject * mutantController = Commands->Find_Object ( M11_MUTANT_CRYPT_SPAWNER_CONTROLLER_JDG );
|
||
|
if (mutantController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event ( obj, mutantController, 0, M01_SPAWNER_IS_DEAD_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Enemy_Seen( GameObject * obj, GameObject * enemy )
|
||
|
{
|
||
|
if (obj && enemy == STAR && myState == IDLE)//
|
||
|
{
|
||
|
myState = ATTACKING;
|
||
|
char *soundName = M11_Choose_Mutant_Alerted_Sound ( );
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Create_Sound ( soundName, myPosition, obj );
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_HUNT_THE_PLAYER_JDG, 1 );
|
||
|
|
||
|
Commands->Create_Logical_Sound (obj, M11_MUTANT_IS_NEARBY_JDG, myPosition, 50 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Sound_Heard( GameObject * obj, const CombatSound & sound )
|
||
|
{
|
||
|
if ( sound.Type == M11_MUTANT_IS_NEARBY_JDG )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_HUNT_THE_PLAYER_JDG, 1 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
if (obj && myState == IDLE)
|
||
|
{
|
||
|
char *soundName = M11_Choose_Mutant_Idle_Sound ( );
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Create_Sound ( soundName, myPosition, obj );
|
||
|
|
||
|
float delayTimer = Commands->Get_Random ( 10, 20 );
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_START_ACTING_JDG, delayTimer );
|
||
|
}
|
||
|
|
||
|
else if (obj && myState != DEAD)
|
||
|
{
|
||
|
char *soundName = M11_Choose_Mutant_Attack_Sound ( );
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Create_Sound ( soundName, myPosition, obj );
|
||
|
|
||
|
float delayTimer = Commands->Get_Random ( 0, 10 );
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_START_ACTING_JDG, delayTimer );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (obj && param == M01_PICK_A_NEW_LOCATION_JDG)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic(this, 80, M01_PICK_A_NEW_LOCATION_JDG);
|
||
|
params.Set_Movement( Vector3(-15.128f, 17.965f, -63.748f), .1f, 1 );
|
||
|
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (obj && param == M01_HUNT_THE_PLAYER_JDG)
|
||
|
{
|
||
|
if (STAR)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic(this, 100, M01_HUNT_THE_PLAYER_JDG);
|
||
|
params.Set_Movement(STAR, 2, 1);
|
||
|
|
||
|
Commands->Action_Goto ( obj, params );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_HUNT_THE_PLAYER_JDG, 1 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
if (obj && action_id == M01_PICK_A_NEW_LOCATION_JDG)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic(this, 80, M01_WALKING_WAYPATH_01_JDG);
|
||
|
params.Set_Movement( Vector3(0,0,0), .1f, 1 );
|
||
|
|
||
|
int random = Commands->Get_Random_Int(0, 4);
|
||
|
|
||
|
if (random == 0)
|
||
|
{
|
||
|
params.WaypathID = 100076;
|
||
|
params.WaypointStartID = 100077;
|
||
|
params.WaypointEndID = 100085;
|
||
|
}
|
||
|
|
||
|
else if (random == 1)
|
||
|
{
|
||
|
params.WaypathID = 100087;
|
||
|
params.WaypointStartID = 100088;
|
||
|
params.WaypointEndID = 100096;
|
||
|
}
|
||
|
|
||
|
else if (random == 3)
|
||
|
{
|
||
|
params.WaypathID = 100076;
|
||
|
params.WaypointStartID = 100085;
|
||
|
params.WaypointEndID = 100077;
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
params.WaypathID = 100087;
|
||
|
params.WaypointStartID = 100096;
|
||
|
params.WaypointEndID = 100088;
|
||
|
}
|
||
|
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
else if (obj && action_id == M01_WALKING_WAYPATH_01_JDG)
|
||
|
{
|
||
|
char *animationName = M01_Choose_Idle_Animation ( );
|
||
|
|
||
|
params.Set_Basic( this, 60, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (obj && action_id == M01_DOING_ANIMATION_01_JDG)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic(this, 80, M01_PICK_A_NEW_LOCATION_JDG);
|
||
|
params.Set_Movement( Vector3(-15.128f, 17.965f, -63.748f), .1f, 1 );
|
||
|
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (obj && action_id == M01_HUNT_THE_PLAYER_JDG)
|
||
|
{
|
||
|
if (STAR)
|
||
|
{
|
||
|
char *soundName = M11_Choose_Mutant_Attack_Sound ( );
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Create_Sound ( soundName, myPosition, obj );
|
||
|
|
||
|
char *animationName = M11_Choose_Mutant_Attack_Animation ( );
|
||
|
|
||
|
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
|
||
|
Commands->Apply_Damage( STAR, 5, "TiberiumRaw", obj );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_HUNT_THE_PLAYER_JDG, 1 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};*/
|
||
|
|
||
|
DECLARE_SCRIPT(M04_TibHold_RealMutant_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Enable_Hibernation(obj, false );
|
||
|
char *mutantAnimations[4] =
|
||
|
{
|
||
|
"S_A_HUMAN.H_A_A0A0_L02",
|
||
|
"S_A_HUMAN.H_A_A0A0_L04",
|
||
|
"S_A_HUMAN.H_A_J11C",
|
||
|
"S_A_HUMAN.H_A_J21C",
|
||
|
};
|
||
|
int random = Commands->Get_Random_Int(0, 4);
|
||
|
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation( mutantAnimations[random], false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (obj && param == M01_HUNT_THE_PLAYER_JDG)
|
||
|
{
|
||
|
if (STAR)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic(this, 100, M01_GOING_TO_HAVOC_JDG);
|
||
|
params.Set_Movement(STAR, 1, 0.5f);
|
||
|
|
||
|
Commands->Action_Goto ( obj, params );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_HUNT_THE_PLAYER_JDG, 1 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
if (action_id == M01_DOING_ANIMATION_01_JDG)
|
||
|
{
|
||
|
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
|
||
|
params.Set_Movement( STAR, 1.0f, 0.5f );
|
||
|
Commands->Action_Goto (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_GOING_TO_HAVOC_JDG)
|
||
|
{
|
||
|
if (obj && STAR)
|
||
|
{
|
||
|
char *soundName = M11_Choose_Mutant_Attack_Sound ( );
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Create_Sound ( soundName, myPosition, obj );
|
||
|
|
||
|
char *animationName = M11_Choose_Mutant_Attack_Animation ( );
|
||
|
|
||
|
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation (animationName, false);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
|
||
|
Commands->Apply_Damage( STAR, 5, "TiberiumRaw", obj );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_HUNT_THE_PLAYER_JDG, 1 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_TibHold_MutantChambers_Controller_JDG, "")//M04_TIBERIUM_CHAMBERCONTROLLER_JDG 104113
|
||
|
{
|
||
|
int mutantChamber01_id;
|
||
|
int mutantChamber02_id;
|
||
|
int mutantChamber03_id;
|
||
|
int mutantChamber04_id;
|
||
|
|
||
|
int mutant01_id;
|
||
|
int mutant02_id;
|
||
|
int mutant03_id;
|
||
|
int mutant04_id;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( mutantChamber01_id, 1 );
|
||
|
SAVE_VARIABLE( mutantChamber02_id, 2 );
|
||
|
SAVE_VARIABLE( mutantChamber03_id, 3 );
|
||
|
SAVE_VARIABLE( mutantChamber04_id, 4 );
|
||
|
|
||
|
SAVE_VARIABLE( mutant01_id, 5 );
|
||
|
SAVE_VARIABLE( mutant02_id, 6 );
|
||
|
SAVE_VARIABLE( mutant03_id, 7 );
|
||
|
SAVE_VARIABLE( mutant04_id, 8 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Vector3 mutantChamber01_Position (12.322f, -113.537f, -9);
|
||
|
float mutantChamber01_Facing = 155;
|
||
|
Vector3 mutantChamber02_Position (5.007f, -111.035f, -9);
|
||
|
float mutantChamber02_Facing = -90;
|
||
|
Vector3 mutantChamber03_Position (-5.646f, -113.485f, -9);
|
||
|
float mutantChamber03_Facing = -90;
|
||
|
Vector3 mutantChamber04_Position (-11.817f, -111.029f, -9);
|
||
|
float mutantChamber04_Facing = -90;
|
||
|
|
||
|
Vector3 mutant01_Position (12.330f, -113.560f, -8.224f);
|
||
|
float mutant01_Facing = 65;
|
||
|
Vector3 mutant02_Position (4.999f, -111.061f, -8.254f);
|
||
|
float mutant02_Facing = -175;
|
||
|
Vector3 mutant03_Position (-5.614f, -113.500f, -8.263f);
|
||
|
float mutant03_Facing = 180;
|
||
|
Vector3 mutant04_Position (-11.767f, -111.026f, -8.257f);
|
||
|
float mutant04_Facing = 180;
|
||
|
|
||
|
GameObject * mutantChamber01 = Commands->Create_Object ( "Simple_Large_CryoChamber", mutantChamber01_Position );
|
||
|
Commands->Set_Facing ( mutantChamber01, mutantChamber01_Facing );
|
||
|
Commands->Attach_Script(mutantChamber01, "M04_TibHold_MutantChamber_NoThreat_JDG", "");
|
||
|
GameObject * mutantChamber02 = Commands->Create_Object ( "Simple_Large_CryoChamber", mutantChamber02_Position );
|
||
|
Commands->Set_Facing ( mutantChamber02, mutantChamber02_Facing );
|
||
|
Commands->Attach_Script(mutantChamber02, "M04_TibHold_MutantChamber_NoThreat_JDG", "");
|
||
|
GameObject * mutantChamber03 = Commands->Create_Object ( "Simple_Large_CryoChamber", mutantChamber03_Position );
|
||
|
Commands->Set_Facing ( mutantChamber03, mutantChamber03_Facing );
|
||
|
Commands->Attach_Script(mutantChamber03, "M04_TibHold_MutantChamber_NoThreat_JDG", "");
|
||
|
GameObject * mutantChamber04 = Commands->Create_Object ( "Simple_Large_CryoChamber", mutantChamber04_Position );
|
||
|
Commands->Set_Facing ( mutantChamber04, mutantChamber04_Facing );
|
||
|
Commands->Attach_Script(mutantChamber04, "M04_TibHold_MutantChamber_NoThreat_JDG", "");
|
||
|
|
||
|
GameObject * mutant01 = Commands->Create_Object ( "M11_Mutant_1_Simple", mutant01_Position );
|
||
|
Commands->Set_Facing ( mutant01, mutant01_Facing );
|
||
|
Commands->Attach_Script(mutant01, "M04_TibHold_Mutant_NoThreat_JDG", "");
|
||
|
GameObject * mutant02 = Commands->Create_Object ( "M11_Mutant_1_Simple", mutant02_Position );
|
||
|
Commands->Set_Facing ( mutant02, mutant02_Facing );
|
||
|
Commands->Attach_Script(mutant02, "M04_TibHold_Mutant_NoThreat_JDG", "");
|
||
|
GameObject * mutant03 = Commands->Create_Object ( "M11_Mutant_1_Simple", mutant03_Position );
|
||
|
Commands->Set_Facing ( mutant03, mutant03_Facing );
|
||
|
Commands->Attach_Script(mutant03, "M04_TibHold_Mutant_NoThreat_JDG", "");
|
||
|
GameObject * mutant04 = Commands->Create_Object ( "M11_Mutant_1_Simple", mutant04_Position );
|
||
|
Commands->Set_Facing ( mutant04, mutant04_Facing );
|
||
|
Commands->Attach_Script(mutant04, "M04_TibHold_Mutant_NoThreat_JDG", "");
|
||
|
|
||
|
mutantChamber01_id = Commands->Get_ID ( mutantChamber01 );
|
||
|
mutantChamber02_id = Commands->Get_ID ( mutantChamber02 );
|
||
|
mutantChamber03_id = Commands->Get_ID ( mutantChamber03 );
|
||
|
mutantChamber04_id = Commands->Get_ID ( mutantChamber04 );
|
||
|
|
||
|
mutant01_id = Commands->Get_ID ( mutant01 );
|
||
|
mutant02_id = Commands->Get_ID ( mutant02 );
|
||
|
mutant03_id = Commands->Get_ID ( mutant03 );
|
||
|
mutant04_id = Commands->Get_ID ( mutant04 );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_IVE_BEEN_KILLED_JDG)//a chamber's been destroyed--do swap and whatnot
|
||
|
{
|
||
|
Commands->Debug_Message ( "***************************Mutant chamber received custom that non-destroyed version has been killed\n" );
|
||
|
GameObject * mutantChamber01 = Commands->Find_Object ( mutantChamber01_id );
|
||
|
GameObject * mutantChamber02 = Commands->Find_Object ( mutantChamber02_id );
|
||
|
GameObject * mutantChamber03 = Commands->Find_Object ( mutantChamber03_id );
|
||
|
GameObject * mutantChamber04 = Commands->Find_Object ( mutantChamber04_id );
|
||
|
|
||
|
Vector3 chamberPosition = Commands->Get_Position ( sender );
|
||
|
float chamberFacing = Commands->Get_Facing ( sender );
|
||
|
|
||
|
GameObject *destroyedVersion = Commands->Create_Object ( "Simple_Large_CryoChamber_Destroyed", chamberPosition );
|
||
|
Commands->Set_Facing ( destroyedVersion, chamberFacing );
|
||
|
Commands->Destroy_Object ( sender );
|
||
|
GameObject * simpleMutant = NULL;
|
||
|
|
||
|
if (sender == mutantChamber01)
|
||
|
{
|
||
|
simpleMutant = Commands->Find_Object ( mutant01_id );
|
||
|
}
|
||
|
|
||
|
else if (sender == mutantChamber02)
|
||
|
{
|
||
|
simpleMutant = Commands->Find_Object ( mutant02_id );
|
||
|
}
|
||
|
|
||
|
else if (sender == mutantChamber03)
|
||
|
{
|
||
|
simpleMutant = Commands->Find_Object ( mutant03_id );
|
||
|
}
|
||
|
|
||
|
else if (sender == mutantChamber04)
|
||
|
{
|
||
|
simpleMutant = Commands->Find_Object ( mutant04_id );
|
||
|
}
|
||
|
|
||
|
if (simpleMutant != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, simpleMutant, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_TibHold_MutantChamber_NoThreat_JDG, "")
|
||
|
{
|
||
|
bool switched;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( switched, 1 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
switched = false;
|
||
|
Commands->Set_Animation_Frame ( obj, "DSP_CRYOBIG2.DSP_CRYOBIG2", 0 );
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
float myHealth = Commands->Get_Health ( obj );
|
||
|
|
||
|
if (obj && switched == true)
|
||
|
{
|
||
|
Commands->Set_Health ( obj, 0.25f );
|
||
|
}
|
||
|
|
||
|
else if (obj && myHealth <= 10 && switched == false)
|
||
|
{
|
||
|
switched = true;
|
||
|
Commands->Set_Animation ( obj, "DSP_CRYOBIG2.DSP_CRYOBIG2", false, NULL, 0, 15 );
|
||
|
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Create_Explosion ( "Explosion_Barrel_Toxic", myPosition, NULL );
|
||
|
|
||
|
Commands->Set_Health ( obj, 0.25f );
|
||
|
GameObject * myController = Commands->Find_Object ( M04_TIBERIUM_CHAMBERCONTROLLER_JDG );
|
||
|
|
||
|
if (myController != NULL)
|
||
|
{
|
||
|
Commands->Debug_Message ( "***************************Mutant chamber sending custom that non-destroyed version has been killed\n" );
|
||
|
Commands->Send_Custom_Event( obj, myController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Commands->Set_Animation ( obj, "DSP_CRYOBIG2.DSP_CRYOBIG2", false, NULL, 0, 9 );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_TibHold_Mutant_NoThreat_JDG, "")
|
||
|
{
|
||
|
float myMaxHealth;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( myMaxHealth, 1 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
myMaxHealth = Commands->Get_Max_Health ( obj );
|
||
|
Commands->Set_Animation_Frame ( obj, "S_A_HUMAN.H_A_822A", 15 );
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
if (obj)
|
||
|
{
|
||
|
Commands->Set_Health ( obj, myMaxHealth );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_IVE_BEEN_KILLED_JDG)//your chamber's been destroyed--do swap and whatnot
|
||
|
{
|
||
|
Commands->Set_Animation ( obj, "S_C_Human.H_C_Tubedie", false, NULL, 0, 22 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Animation_Complete(GameObject * obj, const char *anim)
|
||
|
{
|
||
|
if (stricmp(anim, "S_C_Human.H_C_Tubedie") == 0)
|
||
|
{
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Visceroid_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
|
||
|
params.Set_Movement( STAR, 1.0f, 1 );
|
||
|
Commands->Action_Goto (obj, params);
|
||
|
|
||
|
int cargo_conv1 = Commands->Create_Conversation( "M04_TiberiumHold_Visceroid_Conversation", 100, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, cargo_conv1, false, false, false);
|
||
|
//Commands->Join_Conversation( STAR, cargo_conv1, false, false, false );
|
||
|
Commands->Start_Conversation( cargo_conv1, cargo_conv1 );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_MODIFY_YOUR_ACTION_JDG)
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
GameObject * myTarget = Commands->Find_Closest_Soldier ( myPosition, 0, 10, true );
|
||
|
|
||
|
if (myTarget != NULL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
|
||
|
params.Set_Movement( myTarget, 1.0f, 3 );
|
||
|
Commands->Action_Goto (obj, params);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
if (action_id == M01_GOING_TO_HAVOC_JDG)
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
GameObject * myTarget = Commands->Find_Closest_Soldier ( myPosition, 0, 10, true );
|
||
|
|
||
|
if (myTarget != NULL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_START_ATTACKING_01_JDG );
|
||
|
params.Set_Attack( myTarget, 5, 0, true );
|
||
|
Commands->Action_Attack (obj, params);
|
||
|
}
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 2 );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Visceroid_Dude_01_JDG, "")//M04_TIBERIUM_HOLD_TECH01_JDG 102147
|
||
|
{
|
||
|
int spill_conv1;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( spill_conv1, 1 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
Commands->Innate_Soldier_Enable_Footsteps_Heard ( obj, false );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
GameObject *visceroidGuy02 = Commands->Find_Object (M04_TIBERIUM_HOLD_TECH02_JDG);
|
||
|
if (obj && visceroidGuy02 != NULL)
|
||
|
{
|
||
|
spill_conv1 = Commands->Create_Conversation( "M04_Tiberium_Tech_Conversation", 30, 20, true);
|
||
|
Commands->Join_Conversation( obj, spill_conv1, false, false, false);
|
||
|
Commands->Join_Conversation( visceroidGuy02, spill_conv1, false, false, false );
|
||
|
Commands->Start_Conversation( spill_conv1, spill_conv1 );
|
||
|
Commands->Monitor_Conversation( obj, spill_conv1);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
|
||
|
{
|
||
|
if (action_id == spill_conv1)
|
||
|
{
|
||
|
GameObject *visceroidGuy02 = Commands->Find_Object (M04_TIBERIUM_HOLD_TECH02_JDG);
|
||
|
if (visceroidGuy02 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, visceroidGuy02, 0, M01_START_ACTING_JDG, 2 );
|
||
|
}
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( Vector3 (-9.622f, -5.406f, -15), WALK, 5, false );
|
||
|
Commands->Action_Goto ( obj, params );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
if (action_id == M01_WALKING_WAYPATH_01_JDG)
|
||
|
{
|
||
|
Commands->Set_Innate_Soldier_Home_Location (obj, Vector3 (-9.622f, -5.406f, -15), 10 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Visceroid_Dude_02_JDG, "")//M04_TIBERIUM_HOLD_TECH02_JDG 102148
|
||
|
{
|
||
|
bool first_time_damaged;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( first_time_damaged, 1 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
Commands->Innate_Soldier_Enable_Footsteps_Heard ( obj, false );
|
||
|
first_time_damaged = true;
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
|
||
|
params.Set_Animation( "H_A_A0A0_L28A", false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_JDG)
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
myPosition.Z += 0.25f;
|
||
|
Commands->Create_Explosion ( "Explosion_Barrel_Toxic", myPosition, NULL );//
|
||
|
GameObject * visceroid = Commands->Create_Object ( "Visceroid", myPosition );
|
||
|
Commands->Attach_Script(visceroid, "M04_Visceroid_JDG", "");
|
||
|
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
if (action_id == M01_DOING_ANIMATION_01_JDG)
|
||
|
{
|
||
|
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
|
||
|
params.Set_Animation( "H_A_A0A0_L28B", true );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
Commands->Set_Health (obj, 0.25f );
|
||
|
|
||
|
if (first_time_damaged == true)
|
||
|
{
|
||
|
first_time_damaged = false;
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_DOING_ANIMATION_03_JDG );
|
||
|
params.Set_Animation( "H_A_601A", false );
|
||
|
Commands->Action_Play_Animation ( obj, params );
|
||
|
|
||
|
float delayTimer = Commands->Get_Random ( 1, 2 );
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Keycard_01_Script_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Enable_Hibernation( obj, false );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if ( type == CUSTOM_EVENT_POWERUP_GRANTED )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 590, 2 );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Keycard_02_Script_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Enable_Hibernation( obj, false );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if ( type == CUSTOM_EVENT_POWERUP_GRANTED )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 510, 4 );
|
||
|
//Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 1001, 2 );//tell objective controller to go back to regular background music
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_TIBERIUM_HOLD_CONTROLLER_JDG) , 0, 2000, 0);//this custom tells the tib zone that its okay clean up aft deck soldiers next time entered
|
||
|
|
||
|
GameObject *zone02 = Commands->Find_Object (100438);//stays--subbay door
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );
|
||
|
}
|
||
|
|
||
|
GameObject *zone04 = Commands->Find_Object (100440);//stays--subbay door
|
||
|
if (zone04 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone04 );
|
||
|
}
|
||
|
|
||
|
GameObject *zone06 = Commands->Find_Object (100442);//stays--yellow door by prison
|
||
|
if (zone06 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone06 );
|
||
|
}
|
||
|
|
||
|
GameObject *zone01 = Commands->Find_Object (104762);//stays-- yellow door by big sam
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Keycard_03_Script_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Enable_Hibernation( obj, false );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if ( type == CUSTOM_EVENT_POWERUP_GRANTED )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 520, 4 );
|
||
|
//Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 470, 8 );
|
||
|
|
||
|
//Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 1001, 2 );//tell objective controller to go back to regular background music
|
||
|
//controller to start action
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (101126), 0, 100, 0 );//tells subbay zones to okay battle music
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (101127), 0, 100, 0 );//tells subbay zones to okay battle music
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (101128), 0, 100, 0 );//tells subbay zones to okay battle music
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (101129), 0, 100, 0 );//tells subbay zones to okay battle music
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (101130), 0, 100, 0 );//tells subbay zones to okay battle music
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (101131), 0, 100, 0 );//tells subbay zones to okay battle music
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (101132), 0, 100, 0 );//tells subbay zones to okay battle music
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (101133), 0, 100, 0 );//tells subbay zones to okay battle music
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (101134), 0, 100, 0 );//tells subbay zones to okay battle music
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (101135), 0, 100, 0 );//tells subbay zones to okay battle music
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (101136), 0, 100, 0 );//tells subbay zones to okay battle music
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (101137), 0, 100, 0 );//tells subbay zones to okay battle music
|
||
|
|
||
|
Commands->Create_Object ( "Nod_Minigunner_2SF_Shotgun", Vector3(0.084f, 95.837f, 3) );
|
||
|
Commands->Create_Object ( "Nod_Minigunner_2SF_Shotgun", Vector3(-1.983f, 72.772f, 0) );
|
||
|
Commands->Create_Object ( "Nod_Minigunner_2SF_Shotgun", Vector3(9.840f, 89.533f, 0) );
|
||
|
Commands->Create_Object ( "Nod_Minigunner_2SF_Shotgun", Vector3(11.822f, 39.659f, -15) );
|
||
|
Commands->Create_Object ( "Nod_Minigunner_2SF_Shotgun", Vector3(-13.725f, 38.871f, -9) );
|
||
|
Commands->Create_Object ( "Nod_Minigunner_2SF_Shotgun", Vector3(-10.606f, 32.021f, 0) );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Ships_Captain_JDG, "")//this guys ID number is M04_SHIPS_CAPTAIN_JDG 100401
|
||
|
{
|
||
|
#define STATIONARY_DELAY_TIMER 0x1234553
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Start_Timer ( obj, this, 1, STATIONARY_DELAY_TIMER );
|
||
|
}
|
||
|
|
||
|
void Timer_Expired( GameObject * obj, int timer_id )
|
||
|
{
|
||
|
if (timer_id == STATIONARY_DELAY_TIMER)
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Vector3 spawn_location = Commands->Get_Position ( obj );
|
||
|
spawn_location.Z = spawn_location.Z + 0.25f;
|
||
|
|
||
|
Commands->Create_Object ( "M04_L03_Keycard", spawn_location );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Ships_FirstMate_JDG, "")//this guys ID number is M04_SHIPS_FIRST_MATE_JDG 100400
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Vector3 spawn_location = Commands->Get_Position ( obj );
|
||
|
spawn_location.Z = spawn_location.Z + 0.25f;
|
||
|
|
||
|
Commands->Create_Object ( "M04_L02_Keycard", spawn_location );
|
||
|
|
||
|
//putting down patrol guys for trip back towards captain
|
||
|
GameObject * samRoomPatrolGuy = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(11.503f, -51.722f, 2.704f));
|
||
|
Commands->Attach_Script(samRoomPatrolGuy, "M04_PostFirstMate_SamRoom_PatrolGuy_JDG", "");
|
||
|
|
||
|
GameObject * missileRoomPatrolGuy = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(13.213f, -53.008f, -15.0f));
|
||
|
Commands->Attach_Script(missileRoomPatrolGuy, "M04_PostFirstMate_MissileRoom_PatrolGuy_JDG", "");
|
||
|
|
||
|
GameObject * subBayPatrolGuy = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(12.527f, 19.447f, -15.0f));
|
||
|
Commands->Attach_Script(subBayPatrolGuy, "M04_Front_ofThe_Boat_Population_JDG", "");
|
||
|
|
||
|
GameObject * officerQuartersPatrolGuy = Commands->Create_Object ( "Nod_MiniGunner_1Off", Vector3(8.342f, 80.0f, 3.0f));
|
||
|
Commands->Attach_Script(officerQuartersPatrolGuy, "M04_PostFirstMate_OfficerQuarters_PatrolGuy_JDG", "");
|
||
|
|
||
|
GameObject * foreDeckPatrolGuy01 = Commands->Create_Object ( "Nod_MiniGunner_1Off", Vector3(0.345f, 106.479f, 3.001f));
|
||
|
Commands->Attach_Script(foreDeckPatrolGuy01, "M04_PostFirstMate_FrontDeck_PatrolGuy01_JDG", "");
|
||
|
|
||
|
GameObject * foreDeckPatrolGuy02 = Commands->Create_Object ( "Nod_MiniGunner_1Off", Vector3(-13.320f, 71.885f, 0));
|
||
|
Commands->Attach_Script(foreDeckPatrolGuy02, "M04_PostFirstMate_FrontDeck_PatrolGuy02_JDG", "");
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Prison_Warden_JDG, "")//this guys ID is M04_PRISON_WARDEN_JDG 100399
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
GameObject * medTech = Commands->Find_Object ( M04_MEDLAB_TECHNICIAN_JDG);
|
||
|
if (medTech != NULL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 90, M01_START_ATTACKING_01_JDG );
|
||
|
params.Set_Attack( medTech, 0, 0, true);
|
||
|
Commands->Action_Attack(obj, params);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
if (damager == STAR)
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, false );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom (GameObject* obj, int type, int param, GameObject* sender)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (param == 100)//warden has received custom to start acting
|
||
|
{
|
||
|
GameObject *medTech = Commands->Find_Object ( M04_MEDLAB_TECHNICIAN_JDG);
|
||
|
if (obj && medTech != NULL)
|
||
|
{
|
||
|
int medlabConversation = Commands->Create_Conversation( "M04_MedLab_Conversation", 80, 50, true);
|
||
|
Commands->Join_Conversation( obj, medlabConversation, true, true, true );
|
||
|
Commands->Join_Conversation( medTech, medlabConversation, true, true, true );
|
||
|
Commands->Start_Conversation( medlabConversation, medlabConversation );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Vector3 spawn_location = Commands->Get_Position ( obj );
|
||
|
spawn_location.Z = spawn_location.Z + 0.25f;
|
||
|
|
||
|
Commands->Create_Object ( "M04_L01_Keycard", spawn_location );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_MedLab_Tech_JDG, "")//this guys ID is M04_MEDLAB_TECHNICIAN_JDG 101202
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
Commands->Set_Player_Type ( obj, SCRIPT_PLAYERTYPE_NOD );
|
||
|
|
||
|
GameObject * prisonGuard = Commands->Find_Object ( M04_PRISON_WARDEN_JDG );
|
||
|
if (prisonGuard != NULL)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 90, M01_START_ATTACKING_01_JDG );
|
||
|
params.Set_Attack( prisonGuard, 0, 0, true);
|
||
|
Commands->Action_Attack(obj, params);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
//Commands->Action_Reset ( obj, 100 );
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
|
||
|
params.Set_Movement( Vector3 (5.3f, -83.6f, 3.000f), RUN, 1 );
|
||
|
Commands->Action_Goto( obj, params );
|
||
|
}
|
||
|
|
||
|
else if (param == 100)
|
||
|
{
|
||
|
GameObject * prisonGuard = Commands->Find_Object ( M04_PRISON_WARDEN_JDG );
|
||
|
if (prisonGuard != NULL)
|
||
|
{
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
Vector3 wardenLocation = Commands->Get_Position ( prisonGuard );
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_START_ATTACKING_01_JDG );
|
||
|
params.Set_Face_Location( wardenLocation, 2 );
|
||
|
Commands->Action_Face_Location ( obj, params );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
if (action_id == M01_WALKING_WAYPATH_01_JDG)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic(this, 100, M01_START_ACTING_JDG);
|
||
|
params.Set_Animation ("H_A_A0C0", true);
|
||
|
Commands->Action_Play_Animation (obj, params);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
if (damager == STAR)
|
||
|
{
|
||
|
if (obj)
|
||
|
{
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Enemy_Seen( GameObject * obj, GameObject * enemy )
|
||
|
{
|
||
|
if (obj && enemy == STAR)
|
||
|
{
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
/****************************************************************************************************************
|
||
|
The Following are all the scripts associated with the objectives...including controller
|
||
|
****************************************************************************************************************/
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Prisoners_Rescued_Controller_JDG, "")
|
||
|
{
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == 1)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_END_FIREFIGHT_CONTROLLER_JDG), 0, 1, 2 );//telling firefight controller to allow end firefight
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 500, 2 );
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_AFT_DECK_CONTROLLER_JDG), 0, 3000, 2 );//tell aft deck controller that prisoners have been rescued
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 410, 6 );
|
||
|
|
||
|
Commands->Set_Position ( STAR, Vector3(2.542f, -80.526f, 0) );
|
||
|
Commands->Set_Facing ( STAR, -125 );
|
||
|
Commands->Control_Enable ( STAR, true );
|
||
|
Commands->Set_Is_Rendered( STAR, true );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_MissileRoom_ObjectiveZone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 440, 0 );//tell objective controller to announce missile objective
|
||
|
|
||
|
GameObject *zone01 = Commands->Find_Object (100429);//stays
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
|
||
|
GameObject *zone03 = Commands->Find_Object (100431);//stays
|
||
|
if (zone03 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone03 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Announce_Keycard_02_Objective_Zone_JDG, "")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 410, 5 );
|
||
|
|
||
|
GameObject *zone02 = Commands->Find_Object (100438);//stays
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );
|
||
|
}
|
||
|
|
||
|
GameObject *zone04 = Commands->Find_Object (100440);//stays
|
||
|
if (zone04 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone04 );
|
||
|
}
|
||
|
|
||
|
GameObject *zone06 = Commands->Find_Object (100442);//stays also add 104762
|
||
|
if (zone06 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone06 );
|
||
|
}
|
||
|
|
||
|
GameObject *zone01 = Commands->Find_Object (104762);//stays
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_SniperScript_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
int easy = 0;
|
||
|
|
||
|
int currentDifficulty = Commands->Get_Difficulty_Level( );
|
||
|
|
||
|
if (currentDifficulty == easy)
|
||
|
{
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_MissileRoom_Target01_JDG, "")//100420
|
||
|
{
|
||
|
bool poked_yet;
|
||
|
Vector3 myPosition;
|
||
|
bool pokable;
|
||
|
int sabotageSound;
|
||
|
int timesSoundPlayed;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( poked_yet, 1 );
|
||
|
SAVE_VARIABLE( myPosition, 2 );
|
||
|
SAVE_VARIABLE( pokable, 3 );
|
||
|
SAVE_VARIABLE( sabotageSound, 4 );
|
||
|
SAVE_VARIABLE( timesSoundPlayed, 5 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
timesSoundPlayed = 0;
|
||
|
Commands->Enable_HUD_Pokable_Indicator ( obj, true );
|
||
|
pokable = false;
|
||
|
poked_yet = false;
|
||
|
myPosition = Commands->Get_Position ( obj );
|
||
|
|
||
|
Commands->Set_Animation_Frame ( obj, "DSP_L4MISSRACK.DSP_L4MISSRACK", 1 );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == CUSTOM_EVENT_SOUND_ENDED )
|
||
|
{
|
||
|
if (param == sabotageSound)
|
||
|
{
|
||
|
timesSoundPlayed++;
|
||
|
|
||
|
if (timesSoundPlayed >= 4)
|
||
|
{
|
||
|
Commands->Create_Sound ("SFX.Electric_Fire_02", myPosition, obj );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
sabotageSound = Commands->Create_Sound ("SFX.L04_Sabotage", myPosition, obj );
|
||
|
Commands->Monitor_Sound ( obj, sabotageSound );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (type == 0)
|
||
|
{
|
||
|
if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
if (poked_yet == false)
|
||
|
{
|
||
|
pokable = true;
|
||
|
Commands->Set_Obj_Radar_Blip_Shape ( obj, RADAR_BLIP_SHAPE_OBJECTIVE );
|
||
|
Commands->Set_Obj_Radar_Blip_Color ( obj, RADAR_BLIP_COLOR_PRIMARY_OBJECTIVE );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Poked( GameObject * obj, GameObject * poker )
|
||
|
{
|
||
|
if (poked_yet == false && pokable == true)
|
||
|
{
|
||
|
if (STAR != NULL)
|
||
|
{
|
||
|
sabotageSound = Commands->Create_Sound ("SFX.L04_Sabotage", myPosition, obj );
|
||
|
Commands->Monitor_Sound ( obj, sabotageSound );
|
||
|
Commands->Enable_HUD_Pokable_Indicator ( obj, false );
|
||
|
poked_yet = true;
|
||
|
Commands->Set_Animation ( obj, "DSP_L4MISSRACK.DSP_L4MISSRACK", false);
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 100, 0 );
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );//104693
|
||
|
|
||
|
Commands->Set_Obj_Radar_Blip_Shape ( obj, -1 );
|
||
|
Commands->Set_Obj_Radar_Blip_Color ( obj, -1 );
|
||
|
|
||
|
GameObject * pogController = Commands->Find_Object ( 104693 );
|
||
|
if (pogController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, pogController, M01_CHANGE_OBJECTIVE_POG_JDG, 300, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_MissileRoom_Target02_JDG, "")//100421
|
||
|
{
|
||
|
bool poked_yet;
|
||
|
Vector3 myPosition;
|
||
|
bool pokable;
|
||
|
int sabotageSound;
|
||
|
int timesSoundPlayed;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( poked_yet, 1 );
|
||
|
SAVE_VARIABLE( myPosition, 2 );
|
||
|
SAVE_VARIABLE( pokable, 3 );
|
||
|
SAVE_VARIABLE( sabotageSound, 4 );
|
||
|
SAVE_VARIABLE( timesSoundPlayed, 5 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
timesSoundPlayed = 0;
|
||
|
Commands->Enable_HUD_Pokable_Indicator ( obj, true );
|
||
|
pokable = false;
|
||
|
poked_yet = false;
|
||
|
myPosition = Commands->Get_Position ( obj );
|
||
|
|
||
|
Commands->Set_Animation_Frame ( obj, "DSP_L4MISSRACK.DSP_L4MISSRACK", 1 );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == CUSTOM_EVENT_SOUND_ENDED )
|
||
|
{
|
||
|
if (param == sabotageSound)
|
||
|
{
|
||
|
timesSoundPlayed++;
|
||
|
|
||
|
if (timesSoundPlayed >= 4)
|
||
|
{
|
||
|
Commands->Create_Sound ("SFX.Electric_Fire_02", myPosition, obj );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
sabotageSound = Commands->Create_Sound ("SFX.L04_Sabotage", myPosition, obj );
|
||
|
Commands->Monitor_Sound ( obj, sabotageSound );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (type == 0)
|
||
|
{
|
||
|
if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
if (poked_yet == false)
|
||
|
{
|
||
|
pokable = true;
|
||
|
Commands->Set_Obj_Radar_Blip_Shape ( obj, RADAR_BLIP_SHAPE_OBJECTIVE );
|
||
|
Commands->Set_Obj_Radar_Blip_Color ( obj, RADAR_BLIP_COLOR_PRIMARY_OBJECTIVE );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Poked( GameObject * obj, GameObject * poker )
|
||
|
{
|
||
|
if (poked_yet == false && pokable == true)
|
||
|
{
|
||
|
if (STAR != NULL)
|
||
|
{
|
||
|
sabotageSound = Commands->Create_Sound ("SFX.L04_Sabotage", myPosition, obj );
|
||
|
Commands->Monitor_Sound ( obj, sabotageSound );
|
||
|
Commands->Enable_HUD_Pokable_Indicator ( obj, false );
|
||
|
poked_yet = true;
|
||
|
Commands->Set_Animation ( obj, "DSP_L4MISSRACK.DSP_L4MISSRACK", false);
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 110, 0 );
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
|
||
|
Commands->Set_Obj_Radar_Blip_Shape ( obj, -1 );
|
||
|
Commands->Set_Obj_Radar_Blip_Color ( obj, -1 );
|
||
|
|
||
|
GameObject * pogController = Commands->Find_Object ( 104693 );
|
||
|
if (pogController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, pogController, M01_CHANGE_OBJECTIVE_POG_JDG, 300, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_MissileRoom_Target03_JDG, "")//100422
|
||
|
{
|
||
|
bool poked_yet;
|
||
|
Vector3 myPosition;
|
||
|
bool pokable;
|
||
|
int sabotageSound;
|
||
|
int timesSoundPlayed;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( poked_yet, 1 );
|
||
|
SAVE_VARIABLE( myPosition, 2 );
|
||
|
SAVE_VARIABLE( pokable, 3 );
|
||
|
SAVE_VARIABLE( sabotageSound, 4 );
|
||
|
SAVE_VARIABLE( timesSoundPlayed, 5 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
timesSoundPlayed = 0;
|
||
|
Commands->Enable_HUD_Pokable_Indicator ( obj, true );
|
||
|
pokable = false;
|
||
|
poked_yet = false;
|
||
|
myPosition = Commands->Get_Position ( obj );
|
||
|
|
||
|
Commands->Set_Animation_Frame ( obj, "DSP_L4MISSRACK.DSP_L4MISSRACK", 1 );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == CUSTOM_EVENT_SOUND_ENDED )
|
||
|
{
|
||
|
if (param == sabotageSound)
|
||
|
{
|
||
|
timesSoundPlayed++;
|
||
|
|
||
|
if (timesSoundPlayed >= 4)
|
||
|
{
|
||
|
Commands->Create_Sound ("SFX.Electric_Fire_02", myPosition, obj );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
sabotageSound = Commands->Create_Sound ("SFX.L04_Sabotage", myPosition, obj );
|
||
|
Commands->Monitor_Sound ( obj, sabotageSound );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (type == 0)
|
||
|
{
|
||
|
if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
if (poked_yet == false)
|
||
|
{
|
||
|
pokable = true;
|
||
|
Commands->Set_Obj_Radar_Blip_Shape ( obj, RADAR_BLIP_SHAPE_OBJECTIVE );
|
||
|
Commands->Set_Obj_Radar_Blip_Color ( obj, RADAR_BLIP_COLOR_PRIMARY_OBJECTIVE );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Poked( GameObject * obj, GameObject * poker )
|
||
|
{
|
||
|
if (poked_yet == false && pokable == true)
|
||
|
{
|
||
|
if (STAR != NULL)
|
||
|
{
|
||
|
sabotageSound = Commands->Create_Sound ("SFX.L04_Sabotage", myPosition, obj );
|
||
|
Commands->Monitor_Sound ( obj, sabotageSound );
|
||
|
Commands->Enable_HUD_Pokable_Indicator ( obj, false );
|
||
|
poked_yet = true;
|
||
|
Commands->Set_Animation ( obj, "DSP_L4MISSRACK.DSP_L4MISSRACK", false);
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 120, 0 );
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
|
||
|
Commands->Set_Obj_Radar_Blip_Shape ( obj, -1 );
|
||
|
Commands->Set_Obj_Radar_Blip_Color ( obj, -1 );
|
||
|
|
||
|
GameObject * pogController = Commands->Find_Object ( 104693 );
|
||
|
if (pogController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, pogController, M01_CHANGE_OBJECTIVE_POG_JDG, 300, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_MissileRoom_Target04_JDG, "")//100423
|
||
|
{
|
||
|
bool poked_yet;
|
||
|
Vector3 myPosition;
|
||
|
bool pokable;
|
||
|
int sabotageSound;
|
||
|
int timesSoundPlayed;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( poked_yet, 1 );
|
||
|
SAVE_VARIABLE( myPosition, 2 );
|
||
|
SAVE_VARIABLE( pokable, 3 );
|
||
|
SAVE_VARIABLE( sabotageSound, 4 );
|
||
|
SAVE_VARIABLE( timesSoundPlayed, 5 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
timesSoundPlayed = 0;
|
||
|
Commands->Enable_HUD_Pokable_Indicator ( obj, true );
|
||
|
pokable = false;
|
||
|
poked_yet = false;
|
||
|
myPosition = Commands->Get_Position ( obj );
|
||
|
|
||
|
Commands->Set_Animation_Frame ( obj, "DSP_L4MISSRACK.DSP_L4MISSRACK", 1 );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == CUSTOM_EVENT_SOUND_ENDED )
|
||
|
{
|
||
|
if (param == sabotageSound)
|
||
|
{
|
||
|
timesSoundPlayed++;
|
||
|
|
||
|
if (timesSoundPlayed >= 4)
|
||
|
{
|
||
|
Commands->Create_Sound ("SFX.Electric_Fire_02", myPosition, obj );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
sabotageSound = Commands->Create_Sound ("SFX.L04_Sabotage", myPosition, obj );
|
||
|
Commands->Monitor_Sound ( obj, sabotageSound );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (type == 0)
|
||
|
{
|
||
|
if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
if (poked_yet == false)
|
||
|
{
|
||
|
pokable = true;
|
||
|
Commands->Set_Obj_Radar_Blip_Shape ( obj, RADAR_BLIP_SHAPE_OBJECTIVE );
|
||
|
Commands->Set_Obj_Radar_Blip_Color ( obj, RADAR_BLIP_COLOR_PRIMARY_OBJECTIVE );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Poked( GameObject * obj, GameObject * poker )
|
||
|
{
|
||
|
if (poked_yet == false && pokable == true)
|
||
|
{
|
||
|
if (STAR != NULL)
|
||
|
{
|
||
|
sabotageSound = Commands->Create_Sound ("SFX.L04_Sabotage", myPosition, obj );
|
||
|
Commands->Monitor_Sound ( obj, sabotageSound );
|
||
|
Commands->Enable_HUD_Pokable_Indicator ( obj, false );
|
||
|
poked_yet = true;
|
||
|
Commands->Set_Animation ( obj, "DSP_L4MISSRACK.DSP_L4MISSRACK", false);
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 130, 0 );
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
|
||
|
Commands->Set_Obj_Radar_Blip_Shape ( obj, -1 );
|
||
|
Commands->Set_Obj_Radar_Blip_Color ( obj, -1 );
|
||
|
|
||
|
GameObject * pogController = Commands->Find_Object ( 104693 );
|
||
|
if (pogController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, pogController, M01_CHANGE_OBJECTIVE_POG_JDG, 300, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_Target01_JDG, "")
|
||
|
{
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Create_Explosion ( "Explosion_Barrel_Fuel", myPosition, obj );
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 300, 0 );
|
||
|
|
||
|
GameObject * pogController = Commands->Find_Object ( 104693 );
|
||
|
if (pogController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, pogController, M01_CHANGE_OBJECTIVE_POG_JDG, 200, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject * engineBuildingController = Commands->Find_Object (M04_ENGINEROOM_BUILDING_CONTROLLER_JDG);
|
||
|
if (engineBuildingController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, engineBuildingController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject * myOperator = Commands->Find_Object (M04_ENGINEROOM_TECH_04_JDG);
|
||
|
if (myOperator != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, myOperator, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_Target02_JDG, "")
|
||
|
{
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Create_Explosion ( "Explosion_Barrel_Fuel", myPosition, obj );
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 310, 0 );
|
||
|
|
||
|
GameObject * pogController = Commands->Find_Object ( 104693 );
|
||
|
if (pogController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, pogController, M01_CHANGE_OBJECTIVE_POG_JDG, 200, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject * engineBuildingController = Commands->Find_Object (M04_ENGINEROOM_BUILDING_CONTROLLER_JDG);
|
||
|
if (engineBuildingController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, engineBuildingController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject * myOperator = Commands->Find_Object (M04_ENGINEROOM_TECH_01_JDG);
|
||
|
if (myOperator != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, myOperator, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_Target03_JDG, "")
|
||
|
{
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Create_Explosion ( "Explosion_Barrel_Fuel", myPosition, obj );
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 320, 0 );
|
||
|
|
||
|
GameObject * pogController = Commands->Find_Object ( 104693 );
|
||
|
if (pogController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, pogController, M01_CHANGE_OBJECTIVE_POG_JDG, 200, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject * engineBuildingController = Commands->Find_Object (M04_ENGINEROOM_BUILDING_CONTROLLER_JDG);
|
||
|
if (engineBuildingController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, engineBuildingController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject * myOperator = Commands->Find_Object (M04_ENGINEROOM_TECH_02_JDG);
|
||
|
if (myOperator != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, myOperator, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_EngineRoom_Target04_JDG, "")
|
||
|
{
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Vector3 myPosition = Commands->Get_Position ( obj );
|
||
|
Commands->Create_Explosion ( "Explosion_Barrel_Fuel", myPosition, obj );
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 330, 0 );
|
||
|
|
||
|
GameObject * pogController = Commands->Find_Object ( 104693 );
|
||
|
if (pogController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, pogController, M01_CHANGE_OBJECTIVE_POG_JDG, 200, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject * engineBuildingController = Commands->Find_Object (M04_ENGINEROOM_BUILDING_CONTROLLER_JDG);
|
||
|
if (engineBuildingController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, engineBuildingController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject * myOperator = Commands->Find_Object (M04_ENGINEROOM_TECH_03_JDG);
|
||
|
if (myOperator != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, myOperator, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_ApacheRoom_Second_EntryZone_TopFloor_JDG, "")//105011 105012
|
||
|
{
|
||
|
int apache_id;
|
||
|
bool commandClearance;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( apache_id, 1 );
|
||
|
SAVE_VARIABLE( commandClearance, 2 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
apache_id = NULL;
|
||
|
commandClearance = false;
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_CHOPPER_IS_SENDING_ID_JDG)//apache is sending you his id
|
||
|
{
|
||
|
apache_id = Commands->Get_ID ( sender );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
commandClearance = true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if (enterer == STAR)
|
||
|
{
|
||
|
if (commandClearance == true)
|
||
|
{
|
||
|
GameObject * apache = Commands->Find_Object ( apache_id );
|
||
|
if (apache != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, apache, 0, M01_MODIFY_YOUR_ACTION_07_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone01 = Commands->Find_Object ( 105011 );
|
||
|
GameObject * zone02 = Commands->Find_Object ( 105012 );
|
||
|
GameObject * zone03 = Commands->Find_Object ( 105081 );
|
||
|
GameObject * zone04 = Commands->Find_Object ( 105082 );
|
||
|
GameObject * zone05 = Commands->Find_Object ( 105083 );
|
||
|
GameObject * zone06 = Commands->Find_Object ( 105084 );
|
||
|
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );
|
||
|
}
|
||
|
|
||
|
if (zone03 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone03 );
|
||
|
}
|
||
|
|
||
|
if (zone04 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone04 );
|
||
|
}
|
||
|
|
||
|
if (zone05 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone05 );
|
||
|
}
|
||
|
|
||
|
if (zone06 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone06 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_ApacheRoom_Second_EntryZone_MiddleFloor_JDG, "")//105081 105082
|
||
|
{
|
||
|
int apache_id;
|
||
|
bool commandClearance;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( apache_id, 1 );
|
||
|
SAVE_VARIABLE( commandClearance, 2 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
apache_id = NULL;
|
||
|
commandClearance = false;
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_CHOPPER_IS_SENDING_ID_JDG)//apache is sending you his id
|
||
|
{
|
||
|
apache_id = Commands->Get_ID ( sender );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
commandClearance = true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if (enterer == STAR)
|
||
|
{
|
||
|
if (commandClearance == true)
|
||
|
{
|
||
|
GameObject * apache = Commands->Find_Object ( apache_id );
|
||
|
if (apache != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, apache, 0, M01_MODIFY_YOUR_ACTION_08_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone01 = Commands->Find_Object ( 105011 );
|
||
|
GameObject * zone02 = Commands->Find_Object ( 105012 );
|
||
|
GameObject * zone03 = Commands->Find_Object ( 105081 );
|
||
|
GameObject * zone04 = Commands->Find_Object ( 105082 );
|
||
|
GameObject * zone05 = Commands->Find_Object ( 105083 );
|
||
|
GameObject * zone06 = Commands->Find_Object ( 105084 );
|
||
|
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );
|
||
|
}
|
||
|
|
||
|
if (zone03 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone03 );
|
||
|
}
|
||
|
|
||
|
if (zone04 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone04 );
|
||
|
}
|
||
|
|
||
|
if (zone05 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone05 );
|
||
|
}
|
||
|
|
||
|
if (zone06 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone06 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_ApacheRoom_Second_EntryZone_BottomFloor_JDG, "")//105083 105084
|
||
|
{
|
||
|
int apache_id;
|
||
|
bool commandClearance;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( apache_id, 1 );
|
||
|
SAVE_VARIABLE( commandClearance, 2 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
apache_id = NULL;
|
||
|
commandClearance = false;
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_CHOPPER_IS_SENDING_ID_JDG)//apache is sending you his id
|
||
|
{
|
||
|
apache_id = Commands->Get_ID ( sender );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
commandClearance = true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if (enterer == STAR)
|
||
|
{
|
||
|
if (commandClearance == true)
|
||
|
{
|
||
|
GameObject * apache = Commands->Find_Object ( apache_id );
|
||
|
if (apache != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, apache, 0, M01_MODIFY_YOUR_ACTION_09_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone01 = Commands->Find_Object ( 105011 );
|
||
|
GameObject * zone02 = Commands->Find_Object ( 105012 );
|
||
|
GameObject * zone03 = Commands->Find_Object ( 105081 );
|
||
|
GameObject * zone04 = Commands->Find_Object ( 105082 );
|
||
|
GameObject * zone05 = Commands->Find_Object ( 105083 );
|
||
|
GameObject * zone06 = Commands->Find_Object ( 105084 );
|
||
|
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );
|
||
|
}
|
||
|
|
||
|
if (zone03 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone03 );
|
||
|
}
|
||
|
|
||
|
if (zone04 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone04 );
|
||
|
}
|
||
|
|
||
|
if (zone05 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone05 );
|
||
|
}
|
||
|
|
||
|
if (zone06 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone06 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Apache_GoBackToHangar_EntryZone_JDG, "")//105085
|
||
|
{
|
||
|
int apache_id;
|
||
|
bool commandClearance;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( apache_id, 1 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
apache_id = NULL;
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_CHOPPER_IS_SENDING_ID_JDG)//apache is sending you his id
|
||
|
{
|
||
|
apache_id = Commands->Get_ID ( sender );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if (enterer == STAR)
|
||
|
{
|
||
|
GameObject * apache = Commands->Find_Object ( apache_id );
|
||
|
if (apache != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, apache, 0, M01_MODIFY_YOUR_ACTION_06_JDG, 0 );//tell helicopter to go wait above hangar
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_ApacheRoom_Apache_JDG, "")
|
||
|
{
|
||
|
bool objective_active;
|
||
|
bool fighting_rocket_turrets;
|
||
|
bool waitingInAmbush;
|
||
|
bool fightingInHangar;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(objective_active, 1);
|
||
|
SAVE_VARIABLE(fighting_rocket_turrets, 2);
|
||
|
SAVE_VARIABLE(waitingInAmbush, 3);
|
||
|
SAVE_VARIABLE(fightingInHangar, 4);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
fightingInHangar = false;
|
||
|
waitingInAmbush = false;
|
||
|
fighting_rocket_turrets = false;
|
||
|
Commands->Enable_Hibernation( obj, false );
|
||
|
objective_active = false;
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 2 );
|
||
|
|
||
|
GameObject * zone01 = Commands->Find_Object ( 105011 );
|
||
|
GameObject * zone02 = Commands->Find_Object ( 105012 );
|
||
|
GameObject * zone03 = Commands->Find_Object ( 105081 );
|
||
|
GameObject * zone04 = Commands->Find_Object ( 105082 );
|
||
|
GameObject * zone05 = Commands->Find_Object ( 105083 );
|
||
|
GameObject * zone06 = Commands->Find_Object ( 105084 );
|
||
|
GameObject * zone07 = Commands->Find_Object ( 105085 );
|
||
|
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, zone01, 0, M01_CHOPPER_IS_SENDING_ID_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, zone02, 0, M01_CHOPPER_IS_SENDING_ID_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (zone03 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, zone03, 0, M01_CHOPPER_IS_SENDING_ID_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (zone04 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, zone04, 0, M01_CHOPPER_IS_SENDING_ID_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (zone05 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, zone05, 0, M01_CHOPPER_IS_SENDING_ID_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (zone06 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, zone06, 0, M01_CHOPPER_IS_SENDING_ID_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (zone07 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, zone07, 0, M01_CHOPPER_IS_SENDING_ID_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Vector3 spawnSpot_01;
|
||
|
Vector3 spawnSpot_02;
|
||
|
Vector3 spawnSpot_03;
|
||
|
Vector3 spawnSpot_04;
|
||
|
Vector3 spawnSpot_05;
|
||
|
Vector3 spawnSpot_06;
|
||
|
|
||
|
if (objective_active == true)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 560, 0 );
|
||
|
}
|
||
|
|
||
|
if (fighting_rocket_turrets == true)
|
||
|
{
|
||
|
spawnSpot_01.Set (8.677f, -50.970f, 2.954f);
|
||
|
spawnSpot_02.Set (4.673f, -51.027f, 2.954f);
|
||
|
spawnSpot_03.Set (1.000f, -51.069f, 3.004f);
|
||
|
//spawnSpot_04.Set (-2.019f, -51.078f, 3.104f);
|
||
|
spawnSpot_05.Set (-4.850f, -51.075f, 3.104f);
|
||
|
spawnSpot_06.Set (-7.130f, -51.057f, 3.204f);
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
spawnSpot_01.Set (4.535f, 92.136f, 3.001f);
|
||
|
spawnSpot_02.Set (1.191f, 92.178f, 3.001f);
|
||
|
spawnSpot_03.Set (-1.902f, 92.156f, 3.001f);
|
||
|
//spawnSpot_04.Set (3.983f, 94.662f, 3.001f);
|
||
|
spawnSpot_05.Set (1.366f, 94.766f, 3.001f);
|
||
|
spawnSpot_06.Set (-1.817f, 94.600f, 3.001f);
|
||
|
}
|
||
|
|
||
|
Commands->Create_Object ( "POW_RocketLauncher_Player", spawnSpot_01 );
|
||
|
Commands->Create_Object ( "POW_GrenadeLauncher_Player", spawnSpot_02 );
|
||
|
Commands->Create_Object ( "POW_ChemSprayer_Player", spawnSpot_03 );
|
||
|
//Commands->Create_Object ( "POW_Shotgun_Player", spawnSpot_04 );
|
||
|
Commands->Create_Object ( "POW_AutoRifle_Player", spawnSpot_05 );
|
||
|
Commands->Create_Object ( "POW_Chaingun_Player", spawnSpot_06 );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (param == M01_MODIFY_YOUR_ACTION_JDG)//recieved custom from controller--take off and attack player
|
||
|
{
|
||
|
objective_active = true;
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 460, 0 );
|
||
|
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
|
||
|
params.Set_Movement(Vector3 (0,0,0), 1.0f, 0.25f);
|
||
|
params.WaypathID = 101264;
|
||
|
params.WaypointStartID = 101265;
|
||
|
params.WaypointEndID = 101266;
|
||
|
Commands->Action_Goto(obj, params);
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG)//now please leave the hanger
|
||
|
{
|
||
|
Commands->Disable_Physical_Collisions ( obj );
|
||
|
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_02_JDG);
|
||
|
params.Set_Movement(Vector3 (0,0,0), 1.0f, 0.25f);
|
||
|
params.WaypathSplined = false;
|
||
|
params.WaypathID = 200611;
|
||
|
params.WaypointStartID = 200612;
|
||
|
params.WaypointEndID = 101324;
|
||
|
Commands->Action_Goto(obj, params);
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_03_JDG)//now please cirlce the ship
|
||
|
{
|
||
|
Commands->Enable_Collisions ( obj );
|
||
|
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_03_JDG);
|
||
|
params.Set_Attack( STAR, 1000, 0, true );
|
||
|
params.Set_Movement(Vector3 (0,0,0), 1.0f, 0.25f);
|
||
|
params.WaypathID = 101267;
|
||
|
params.WaypointStartID = 101268;
|
||
|
Commands->Modify_Action ( obj, M01_WALKING_WAYPATH_03_JDG, params, false, true );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_04_JDG)//player is in tailun 02--go fight him
|
||
|
{
|
||
|
fighting_rocket_turrets = true;
|
||
|
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_03_JDG);
|
||
|
params.Set_Attack( STAR, 1000, 0, true );
|
||
|
params.Set_Movement(Vector3 (-50.839f, -58.626f, 6.053f), 1.0f, 5);
|
||
|
|
||
|
Commands->Action_Attack (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_05_JDG)//player is in tailun 01--go fight him
|
||
|
{
|
||
|
fighting_rocket_turrets = true;
|
||
|
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_03_JDG);
|
||
|
params.Set_Attack( STAR, 1000, 0, true );
|
||
|
params.Set_Movement(Vector3 (50.153f, -59.665f, 1.7f), 1.0f, 5);
|
||
|
|
||
|
Commands->Action_Attack (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_06_JDG)//player is in blackhand area--go wait at hangar
|
||
|
{
|
||
|
Commands->Debug_Message ( "***************************apache has received custom to go back to hangar\n" );
|
||
|
waitingInAmbush = true;
|
||
|
Commands->Action_Reset ( obj, 100 );
|
||
|
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_04_JDG);//going to above hangar
|
||
|
params.Set_Movement(Vector3 (2.310f, 50.897f, 56.500f), 1.0f, 5);
|
||
|
params.MovePathfind = false;
|
||
|
Commands->Action_Goto (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_07_JDG && waitingInAmbush == true && fightingInHangar == false)//player is on top floor hangar--spring the trap
|
||
|
{
|
||
|
Commands->Debug_Message ( "***************************apache has received custom that player is on top floor hangar\n" );
|
||
|
waitingInAmbush = false;
|
||
|
fightingInHangar = true;
|
||
|
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_05_JDG);
|
||
|
params.Set_Attack( STAR, 1000, 0, true );
|
||
|
params.MovePathfind = false;
|
||
|
params.Set_Movement(Vector3 (1.971f, 49.491f, 1.618f), 1.0f, 5);
|
||
|
|
||
|
Commands->Action_Attack (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_08_JDG && waitingInAmbush == true && fightingInHangar == false)//player is on middle floor hangar--spring the trap
|
||
|
{
|
||
|
Commands->Debug_Message ( "***************************apache has received custom that player is on middle floor hangar\n" );
|
||
|
waitingInAmbush = false;
|
||
|
fightingInHangar = true;
|
||
|
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_05_JDG);
|
||
|
params.Set_Attack( STAR, 1000, 0, true );
|
||
|
params.MovePathfind = false;
|
||
|
params.Set_Movement(Vector3 (1.971f, 49.491f, -7.482f), 1.0f, 5);
|
||
|
|
||
|
Commands->Action_Attack (obj, params);
|
||
|
}
|
||
|
|
||
|
else if (param == M01_MODIFY_YOUR_ACTION_09_JDG && waitingInAmbush == true && fightingInHangar == false)//player is on bottom floor hangar--spring the trap
|
||
|
{
|
||
|
Commands->Debug_Message ( "***************************apache has received custom that player is on bottom floor hangar\n" );
|
||
|
waitingInAmbush = false;
|
||
|
fightingInHangar = true;
|
||
|
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_05_JDG);
|
||
|
params.Set_Attack( STAR, 1000, 0, true );
|
||
|
params.MovePathfind = false;
|
||
|
params.Set_Movement(Vector3 (1.971f, 49.491f, -11.432f), 1.0f, 5);
|
||
|
|
||
|
Commands->Action_Attack (obj, params);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
|
||
|
if (action_id == M01_WALKING_WAYPATH_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_START_ATTACKING_01_JDG);
|
||
|
params.Set_Attack( STAR, 1000, 0, true );
|
||
|
Commands->Action_Attack(obj, params);
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_02_JDG, 3 );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{
|
||
|
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_03_JDG);
|
||
|
params.Set_Movement(Vector3 (0,0,0), 1.0f, 0.25f);
|
||
|
params.WaypathID = 101267;
|
||
|
params.WaypointStartID = 101268;
|
||
|
params.AttackActive = false;
|
||
|
Commands->Action_Attack(obj, params);
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
else if (action_id == M01_WALKING_WAYPATH_04_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
|
||
|
{ //you are now waiting above the hangar
|
||
|
Commands->Debug_Message ( "***************************apache should now be waiting over hangar\n" );
|
||
|
|
||
|
GameObject * zone01 = Commands->Find_Object ( 105011 );//these are the enter zones for going back through the apache hangar
|
||
|
GameObject * zone02 = Commands->Find_Object ( 105012 );
|
||
|
GameObject * zone03 = Commands->Find_Object ( 105081 );
|
||
|
GameObject * zone04 = Commands->Find_Object ( 105082 );
|
||
|
GameObject * zone05 = Commands->Find_Object ( 105083 );
|
||
|
GameObject * zone06 = Commands->Find_Object ( 105084 );
|
||
|
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, zone01, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, zone02, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (zone03 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, zone03, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (zone04 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, zone04, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (zone05 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, zone05, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
if (zone06 != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, zone06, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
DECLARE_SCRIPT(M04_CargoHold_Stationary_Officer_JDG, "")
|
||
|
{
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Innate_Is_Stationary ( obj, true );
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Firefight_Prisoner, "")
|
||
|
{
|
||
|
float last_health;
|
||
|
bool rallying;
|
||
|
bool pokable;
|
||
|
bool warningPlayed;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(last_health, 1);
|
||
|
SAVE_VARIABLE(rallying, 2);
|
||
|
SAVE_VARIABLE(pokable, 3);
|
||
|
SAVE_VARIABLE(warningPlayed, 3);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
warningPlayed = false;
|
||
|
pokable = false;
|
||
|
rallying = false;
|
||
|
Vector3 home_spot = Commands->Get_Position ( obj);
|
||
|
Commands->Set_Innate_Soldier_Home_Location ( obj, home_spot, 2.0f );
|
||
|
last_health = Commands->Get_Health ( obj );
|
||
|
}
|
||
|
|
||
|
void Damaged( GameObject * obj, GameObject * damager, float amount )
|
||
|
{
|
||
|
float myCurrentHealth = Commands->Get_Health ( obj );
|
||
|
float myMaxHealth = Commands->Get_Max_Health ( obj );
|
||
|
|
||
|
if (((myCurrentHealth/myMaxHealth) * 100 ) <= 50)
|
||
|
{
|
||
|
if (warningPlayed == false)
|
||
|
{
|
||
|
Commands->Set_HUD_Help_Text ( IDS_M04DSGN_DSGN0204I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
|
||
|
warningPlayed = true;
|
||
|
int medlabConversation = Commands->Create_Conversation( "M04_POW_Health_Warning_Conversation", 100, 50, false);
|
||
|
Commands->Join_Conversation( NULL, medlabConversation, false, true );
|
||
|
//Commands->Join_Conversation( medTech, medlabConversation, false, true );
|
||
|
Commands->Start_Conversation( medlabConversation, medlabConversation );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (damager == STAR)
|
||
|
{
|
||
|
Commands->Set_Health ( obj, last_health );
|
||
|
}
|
||
|
|
||
|
else if (obj)
|
||
|
{
|
||
|
last_health = Commands->Get_Health ( obj );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Poked( GameObject * obj, GameObject * poker )
|
||
|
{
|
||
|
if (rallying == false && pokable == true)
|
||
|
{
|
||
|
Commands->Enable_HUD_Pokable_Indicator ( obj, false );
|
||
|
int medlabConversation = Commands->Create_Conversation( "M04_Firefight_POW_Poke_Conversation", 100, 50, false);
|
||
|
Commands->Join_Conversation( STAR, medlabConversation, false, true );
|
||
|
//Commands->Join_Conversation( medTech, medlabConversation, false, true );
|
||
|
Commands->Start_Conversation( medlabConversation, medlabConversation );
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 667, 2 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Killed( GameObject * obj, GameObject * killer )
|
||
|
{
|
||
|
Commands->Set_HUD_Help_Text ( IDS_M04DSGN_DSGN0205I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_END_FIREFIGHT_CONTROLLER_JDG), 0, 10, 0 );//tell controller you've been killed
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == 1)//you are prisoner #3--you are now pokable
|
||
|
{
|
||
|
Commands->Enable_HUD_Pokable_Indicator ( obj, true );
|
||
|
pokable = true;
|
||
|
}
|
||
|
|
||
|
else if (param == 666)//everybody rally in front of the sub
|
||
|
{
|
||
|
rallying = true;
|
||
|
ActionParamsStruct params;
|
||
|
Vector3 rally_spot (-8.57f,-0.72f,-9.00f);
|
||
|
params.Set_Basic(this, 50, 100);
|
||
|
params.Set_Movement(rally_spot, 0.75f, 1.0f);
|
||
|
Commands->Action_Goto (obj, params);
|
||
|
Commands->Set_Innate_Soldier_Home_Location ( obj, rally_spot, 1.0f );
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 666, 1 );
|
||
|
}
|
||
|
|
||
|
else if (param == 667)//everybody rally in front of the sub
|
||
|
{
|
||
|
rallying = true;
|
||
|
ActionParamsStruct params;
|
||
|
Vector3 rally_spot (-8.57f,-0.72f,-9.00f);
|
||
|
params.Set_Basic(this, 100, 100);
|
||
|
params.Set_Movement(rally_spot, RUN, 1.0f);
|
||
|
Commands->Action_Goto (obj, params);
|
||
|
Commands->Set_Innate_Soldier_Home_Location ( obj, rally_spot, 1.0f );
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 666, 1 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Firefight_Controller_JDG, "")//this guys ID number is M04_END_FIREFIGHT_CONTROLLER_JDG 100948
|
||
|
{
|
||
|
int spawned_nod_guys;
|
||
|
int prisonerOne_ID;
|
||
|
int prisonerTwo_ID;
|
||
|
int prisonerThree_ID;
|
||
|
int missionIntroConv;
|
||
|
|
||
|
bool prisoners_rescued;
|
||
|
bool missionIntroConv_playing;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(spawned_nod_guys, 1);
|
||
|
SAVE_VARIABLE(prisonerOne_ID, 2);
|
||
|
SAVE_VARIABLE(prisonerTwo_ID, 3);
|
||
|
SAVE_VARIABLE(prisonerThree_ID, 4);
|
||
|
SAVE_VARIABLE(prisoners_rescued, 5);
|
||
|
SAVE_VARIABLE(missionIntroConv, 6);
|
||
|
SAVE_VARIABLE(missionIntroConv_playing, 7);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
spawned_nod_guys = 0;
|
||
|
prisoners_rescued = false;
|
||
|
missionIntroConv_playing = false;
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
switch (complete_reason)
|
||
|
{
|
||
|
case ACTION_COMPLETE_CONVERSATION_ENDED: //
|
||
|
{
|
||
|
if (action_id == missionIntroConv) //rescue prisoners here
|
||
|
{
|
||
|
missionIntroConv_playing = false;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (param == 1)//player has freed prisoners--give clearance for end firefight
|
||
|
{
|
||
|
prisoners_rescued = true;
|
||
|
}
|
||
|
|
||
|
else if (param == 10)//one of the prisoners has been killed...give lose message
|
||
|
{
|
||
|
Commands->Create_Sound ( "00-n100e", Commands->Get_Position ( obj ), obj );//your mission is a failure
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 11, 3 );//send custom to fail mission
|
||
|
}
|
||
|
|
||
|
else if (param == 11)//a prisoner has been killed, fail the mission
|
||
|
{
|
||
|
Commands->Mission_Complete ( false );
|
||
|
}
|
||
|
|
||
|
else if (param == 20)//tell POWs to gather at sub
|
||
|
{
|
||
|
GameObject *prisonerOne = Commands->Find_Object (prisonerOne_ID);
|
||
|
if (prisonerOne != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, prisonerOne, 0, 666, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject *prisonerTwo = Commands->Find_Object (prisonerTwo_ID);
|
||
|
if (prisonerTwo != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, prisonerTwo, 0, 666, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject *prisonerThree = Commands->Find_Object (prisonerThree_ID);
|
||
|
if (prisonerThree != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, prisonerThree, 0, 666, 0 );//
|
||
|
}
|
||
|
|
||
|
int medlabConversation = Commands->Create_Conversation( "M04_Rally_Round_The_Sub_Boy_Conversation", 100, 50, false);
|
||
|
Commands->Join_Conversation( NULL, medlabConversation, false, true );
|
||
|
//Commands->Join_Conversation( medTech, medlabConversation, false, true );
|
||
|
Commands->Start_Conversation( medlabConversation, medlabConversation );
|
||
|
}
|
||
|
|
||
|
else if (param == 100 )//player has picked up the level 3 key card...place actors and give alert
|
||
|
{
|
||
|
if (prisoners_rescued == true)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 470, 0 );
|
||
|
|
||
|
GameObject * zone01 = Commands->Find_Object (101126);//stays
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone04 = Commands->Find_Object (101129);//stays
|
||
|
if (zone04 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone04 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone06 = Commands->Find_Object (101131);//stays
|
||
|
if (zone06 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone06 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone10 = Commands->Find_Object (101135);//stays
|
||
|
if (zone10 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone10 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone12 = Commands->Find_Object (101137);//stays
|
||
|
if (zone12 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone12 );
|
||
|
}
|
||
|
|
||
|
int currentDifficulty = Commands->Get_Difficulty_Level( );
|
||
|
int medium = 1;
|
||
|
int hard = 2;
|
||
|
float delayTimer;
|
||
|
|
||
|
if (currentDifficulty == hard)
|
||
|
{
|
||
|
delayTimer = 90;
|
||
|
|
||
|
//put down the 3 prisoners in their siege spots
|
||
|
GameObject *prisonerOne = Commands->Create_Object ( "GDI_Prisoner_v0b", Vector3(-8.58f, 0.06f,-9.0f));
|
||
|
Commands->Attach_Script(prisonerOne, "M04_Firefight_Prisoner", "");
|
||
|
|
||
|
GameObject *prisonerTwo = Commands->Create_Object ( "GDI_Prisoner_v1b", Vector3(-14.70f, -9.84f,-9.0f));
|
||
|
Commands->Attach_Script(prisonerTwo, "M04_Firefight_Prisoner", "");
|
||
|
|
||
|
GameObject *prisonerThree = Commands->Create_Object ( "GDI_Prisoner_v2b", Vector3(8.99f, -1.80f,-9.0f));
|
||
|
Commands->Attach_Script(prisonerThree, "M04_Firefight_Prisoner", "");
|
||
|
Commands->Send_Custom_Event( obj, prisonerThree, 0, 1, 0 );//tell this guy he is pokable
|
||
|
|
||
|
prisonerOne_ID = Commands->Get_ID ( prisonerOne );
|
||
|
prisonerTwo_ID = Commands->Get_ID ( prisonerTwo );
|
||
|
prisonerThree_ID = Commands->Get_ID ( prisonerThree );
|
||
|
}
|
||
|
|
||
|
else if (currentDifficulty == medium)
|
||
|
{
|
||
|
delayTimer = 45;
|
||
|
|
||
|
//put down the 3 prisoners in their siege spots
|
||
|
GameObject *prisonerOne = Commands->Create_Object ( "GDI_Prisoner_v0b", Vector3(-8.58f, 0.06f,-9.0f));
|
||
|
Commands->Attach_Script(prisonerOne, "M04_Firefight_Prisoner", "");
|
||
|
|
||
|
GameObject *prisonerTwo = Commands->Create_Object ( "GDI_Prisoner_v1b", Vector3(-14.70f, -9.84f,-9.0f));
|
||
|
Commands->Attach_Script(prisonerTwo, "M04_Firefight_Prisoner", "");
|
||
|
|
||
|
GameObject *prisonerThree = Commands->Create_Object ( "GDI_Prisoner_v2b", Vector3(8.99f, -1.80f,-9.0f));
|
||
|
Commands->Attach_Script(prisonerThree, "M04_Firefight_Prisoner", "");
|
||
|
Commands->Send_Custom_Event( obj, prisonerThree, 0, 1, 0 );//tell this guy he is pokable
|
||
|
|
||
|
prisonerOne_ID = Commands->Get_ID ( prisonerOne );
|
||
|
prisonerTwo_ID = Commands->Get_ID ( prisonerTwo );
|
||
|
prisonerThree_ID = Commands->Get_ID ( prisonerThree );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
delayTimer = 5;
|
||
|
|
||
|
//put down the 3 prisoners in their siege spots
|
||
|
GameObject *prisonerOne = Commands->Create_Object ( "GDI_Prisoner_v0b", Vector3(-8.58f, 0.06f,-9.0f));
|
||
|
Commands->Attach_Script(prisonerOne, "M04_Firefight_Prisoner", "");
|
||
|
|
||
|
GameObject *prisonerTwo = Commands->Create_Object ( "GDI_Prisoner_v1b", Vector3(-14.70f, -9.84f,-9.0f));
|
||
|
Commands->Attach_Script(prisonerTwo, "M04_Firefight_Prisoner", "");
|
||
|
|
||
|
GameObject *prisonerThree = Commands->Create_Object ( "GDI_Prisoner_v2b", Vector3(-12.061f, -7.909f,-9.0f));
|
||
|
Commands->Attach_Script(prisonerThree, "M04_Firefight_Prisoner", "");
|
||
|
|
||
|
prisonerOne_ID = Commands->Get_ID ( prisonerOne );
|
||
|
prisonerTwo_ID = Commands->Get_ID ( prisonerTwo );
|
||
|
prisonerThree_ID = Commands->Get_ID ( prisonerThree );
|
||
|
}
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 20, delayTimer );//tell prisoners to gather at sub
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, 110, 1 );//give verbal alert
|
||
|
|
||
|
//the following 3 customs tell the end-mission zone what the prisoner's ID numbers are
|
||
|
GameObject * rallyZone = Commands->Find_Object (101194);
|
||
|
if (rallyZone != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, rallyZone, 1, prisonerOne_ID, 0 );
|
||
|
Commands->Send_Custom_Event( obj, rallyZone, 2, prisonerTwo_ID, 0 );
|
||
|
Commands->Send_Custom_Event( obj, rallyZone, 3, prisonerThree_ID, 0 );
|
||
|
Commands->Send_Custom_Event( obj, rallyZone, 0, M01_START_ACTING_JDG, 0 );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Commands->Debug_Message ( "***************************firefight controller cannot find rally zone\n" );
|
||
|
}
|
||
|
|
||
|
//trigger the first three spawners
|
||
|
GameObject * nodGuy01 = Commands->Trigger_Spawner( 100938 );
|
||
|
Commands->Attach_Script(nodGuy01, "M04_Firefight_NodGuys", "");
|
||
|
Commands->Grant_Key( nodGuy01, 2, true );
|
||
|
Commands->Grant_Key( nodGuy01, 3, true );
|
||
|
|
||
|
GameObject * nodGuy02 = Commands->Trigger_Spawner( 100952 );
|
||
|
Commands->Attach_Script(nodGuy02, "M04_Firefight_NodGuys", "");
|
||
|
Commands->Grant_Key( nodGuy02, 2, true );
|
||
|
Commands->Grant_Key( nodGuy02, 3, true );
|
||
|
|
||
|
GameObject * nodGuy03 = Commands->Trigger_Spawner( 100951 );
|
||
|
Commands->Attach_Script(nodGuy03, "M04_Firefight_NodGuys", "");
|
||
|
Commands->Grant_Key( nodGuy03, 2, true );
|
||
|
Commands->Grant_Key( nodGuy03, 3, true );
|
||
|
|
||
|
spawned_nod_guys = 3;
|
||
|
}
|
||
|
|
||
|
else if (missionIntroConv_playing == false)//remind player to go rescue the prisoners
|
||
|
{
|
||
|
missionIntroConv_playing = true;
|
||
|
missionIntroConv = Commands->Create_Conversation( "M04_Mission_Start_Conversation", 100, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, missionIntroConv, false, false );
|
||
|
///Commands->Join_Conversation( STAR, missionIntroConv, false, false );
|
||
|
Commands->Start_Conversation( missionIntroConv, missionIntroConv );
|
||
|
Commands->Monitor_Conversation (obj, missionIntroConv);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == 110)//announce that our ally is under attack
|
||
|
{
|
||
|
//Commands->Create_Sound ( "00-d404e", Commands->Get_Position ( obj ), obj );//updating radar flags..temp placeholder
|
||
|
}
|
||
|
|
||
|
else if (param == 666)//a nod attacker has been killed
|
||
|
{
|
||
|
float doko_ni_reinforceka = Commands->Get_Random ( 0.5f, 3.5f );
|
||
|
|
||
|
if ((doko_ni_reinforceka >= 0.5) && (doko_ni_reinforceka < 1.5) && (spawned_nod_guys < 15))
|
||
|
{
|
||
|
GameObject * nodGuy01 = Commands->Trigger_Spawner( 100938 );
|
||
|
Commands->Attach_Script(nodGuy01, "M04_Firefight_NodGuys", "");
|
||
|
Commands->Grant_Key( nodGuy01, 2, true );
|
||
|
Commands->Grant_Key( nodGuy01, 3, true );
|
||
|
}
|
||
|
|
||
|
else if ((doko_ni_reinforceka >= 1.5) && (doko_ni_reinforceka < 2.5) && (spawned_nod_guys < 15))
|
||
|
{
|
||
|
GameObject * nodGuy02 = Commands->Trigger_Spawner( 100952 );
|
||
|
Commands->Attach_Script(nodGuy02, "M04_Firefight_NodGuys", "");
|
||
|
Commands->Grant_Key( nodGuy02, 2, true );
|
||
|
Commands->Grant_Key( nodGuy02, 3, true );
|
||
|
}
|
||
|
|
||
|
else if ((doko_ni_reinforceka >= 2.5) && (doko_ni_reinforceka < 3.5) && (spawned_nod_guys < 15))
|
||
|
{
|
||
|
GameObject * nodGuy03 = Commands->Trigger_Spawner( 100951 );
|
||
|
Commands->Attach_Script(nodGuy03, "M04_Firefight_NodGuys", "");
|
||
|
Commands->Grant_Key( nodGuy03, 2, true );
|
||
|
Commands->Grant_Key( nodGuy03, 3, true );
|
||
|
}
|
||
|
|
||
|
/*if (spawned_nod_guys == 8)
|
||
|
{
|
||
|
GameObject *prisonerOne = Commands->Find_Object (prisonerOne_ID);
|
||
|
if (prisonerOne != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, prisonerOne, 0, 666, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject *prisonerTwo = Commands->Find_Object (prisonerTwo_ID);
|
||
|
if (prisonerTwo != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, prisonerTwo, 0, 666, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject *prisonerThree = Commands->Find_Object (prisonerThree_ID);
|
||
|
if (prisonerThree != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, prisonerThree, 0, 666, 0 );
|
||
|
}
|
||
|
|
||
|
Commands->Create_Sound ( "00-d406e", Commands->Get_Position ( obj ), obj );
|
||
|
}*/
|
||
|
|
||
|
spawned_nod_guys++;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Firefight_RallyZone, "")//this guys ID number is 101194
|
||
|
{
|
||
|
bool ok_to_end;
|
||
|
int prisoner01_ID;
|
||
|
int prisoner02_ID;
|
||
|
int prisoner03_ID;
|
||
|
bool prisoner01_at_rallypoint;
|
||
|
bool prisoner02_at_rallypoint;
|
||
|
bool prisoner03_at_rallypoint;
|
||
|
bool player_at_rallypoint;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(ok_to_end, 1);
|
||
|
SAVE_VARIABLE(prisoner01_ID, 2);
|
||
|
SAVE_VARIABLE(prisoner02_ID, 3);
|
||
|
SAVE_VARIABLE(prisoner03_ID, 4);
|
||
|
SAVE_VARIABLE(prisoner01_at_rallypoint, 5);
|
||
|
SAVE_VARIABLE(prisoner02_at_rallypoint, 6);
|
||
|
SAVE_VARIABLE(prisoner03_at_rallypoint, 7);
|
||
|
SAVE_VARIABLE(player_at_rallypoint, 8);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
ok_to_end = false;
|
||
|
|
||
|
player_at_rallypoint = false;
|
||
|
|
||
|
int currentDifficulty = Commands->Get_Difficulty_Level( );
|
||
|
int easy = 0;
|
||
|
|
||
|
if (currentDifficulty == easy)
|
||
|
{
|
||
|
prisoner01_at_rallypoint = true;
|
||
|
prisoner02_at_rallypoint = true;
|
||
|
prisoner03_at_rallypoint = true;
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
prisoner01_at_rallypoint = true;
|
||
|
prisoner02_at_rallypoint = true;
|
||
|
prisoner03_at_rallypoint = false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 1)
|
||
|
{
|
||
|
prisoner01_ID = param;
|
||
|
}
|
||
|
|
||
|
else if (type == 2)
|
||
|
{
|
||
|
prisoner02_ID = param;
|
||
|
}
|
||
|
|
||
|
else if (type == 3)
|
||
|
{
|
||
|
prisoner03_ID = param;
|
||
|
}
|
||
|
|
||
|
else if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
ok_to_end = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
GameObject *prisoner01 = Commands->Find_Object ( prisoner01_ID );
|
||
|
GameObject *prisoner02 = Commands->Find_Object ( prisoner02_ID );
|
||
|
GameObject *prisoner03 = Commands->Find_Object ( prisoner03_ID );
|
||
|
|
||
|
if (enterer == STAR)
|
||
|
{
|
||
|
//if (ok_to_end == true)
|
||
|
//{
|
||
|
player_at_rallypoint = true;
|
||
|
//}
|
||
|
|
||
|
//else
|
||
|
//{
|
||
|
// Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, M01_DO_END_MISSION_CHECK_JDG, 0 );
|
||
|
//}
|
||
|
}
|
||
|
|
||
|
else if (enterer == prisoner01)
|
||
|
{
|
||
|
prisoner01_at_rallypoint = true;
|
||
|
}
|
||
|
|
||
|
else if (enterer == prisoner02)
|
||
|
{
|
||
|
prisoner02_at_rallypoint = true;
|
||
|
}
|
||
|
|
||
|
else if (enterer == prisoner03)
|
||
|
{
|
||
|
prisoner03_at_rallypoint = true;
|
||
|
}
|
||
|
|
||
|
if ((player_at_rallypoint == true) && (prisoner01_at_rallypoint == true) && (prisoner02_at_rallypoint == true) && (prisoner03_at_rallypoint == true))
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, M01_DO_END_MISSION_CHECK_JDG, 0 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Exited( GameObject * obj, GameObject * exiter )
|
||
|
{
|
||
|
GameObject *prisoner01 = Commands->Find_Object ( prisoner01_ID );
|
||
|
GameObject *prisoner02 = Commands->Find_Object ( prisoner01_ID );
|
||
|
GameObject *prisoner03 = Commands->Find_Object ( prisoner01_ID );
|
||
|
|
||
|
if (exiter == STAR)
|
||
|
{
|
||
|
player_at_rallypoint = false;
|
||
|
}
|
||
|
|
||
|
else if ( exiter == prisoner01)
|
||
|
{
|
||
|
prisoner01_at_rallypoint = false;
|
||
|
}
|
||
|
|
||
|
else if ( exiter == prisoner02)
|
||
|
{
|
||
|
prisoner02_at_rallypoint = false;
|
||
|
}
|
||
|
|
||
|
else if ( exiter == prisoner03)
|
||
|
{
|
||
|
prisoner03_at_rallypoint = false;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Mutant_UpdateDisc_JDG, "")
|
||
|
{
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if ( type == CUSTOM_EVENT_POWERUP_GRANTED )
|
||
|
{
|
||
|
Commands->Reveal_Encyclopedia_Character ( 27 );
|
||
|
Commands->Set_HUD_Help_Text ( IDS_M00EVAG_DSGN0104I1EVAG_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_TorpedoRoom_Target01_JDG, "")//DSP_L4TORPEDO
|
||
|
{
|
||
|
bool poked_yet;
|
||
|
Vector3 myPosition;
|
||
|
int animationCount;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( poked_yet, 1 );
|
||
|
SAVE_VARIABLE( myPosition, 2 );
|
||
|
SAVE_VARIABLE( animationCount, 3 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Enable_HUD_Pokable_Indicator ( obj, true );
|
||
|
poked_yet = false;
|
||
|
animationCount = 0;
|
||
|
myPosition = Commands->Get_Position ( obj );
|
||
|
|
||
|
Commands->Set_Animation_Frame ( obj, "DSP_L4TORPEDO.DSP_L4TORPEDO", 0 );
|
||
|
}
|
||
|
|
||
|
void Animation_Complete(GameObject * obj, const char *anim)
|
||
|
{
|
||
|
if (stricmp(anim, "DSP_L4TORPEDO.DSP_L4TORPEDO") == 0)
|
||
|
{
|
||
|
animationCount++;
|
||
|
if (animationCount >= 2)
|
||
|
{
|
||
|
Commands->Create_Sound ("SFX.Electric_Fire_02", myPosition, obj );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Commands->Set_Animation ( obj, "DSP_L4TORPEDO.DSP_L4TORPEDO", false);
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Poked( GameObject * obj, GameObject * poker )
|
||
|
{
|
||
|
if (poked_yet == false)
|
||
|
{
|
||
|
if (STAR != NULL)
|
||
|
{
|
||
|
Commands->Create_Sound ("SFX.L04_Sabotage", myPosition, obj );
|
||
|
Commands->Enable_HUD_Pokable_Indicator ( obj, false );
|
||
|
poked_yet = true;
|
||
|
|
||
|
Commands->Set_Animation ( obj, "DSP_L4TORPEDO.DSP_L4TORPEDO", false);
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 200, 0 );
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
|
||
|
GameObject * pogController = Commands->Find_Object ( 104693 );
|
||
|
if (pogController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, pogController, M01_CHANGE_OBJECTIVE_POG_JDG, 400, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_TorpedoRoom_Target02_JDG, "")//DSP_L4TORPEDOR
|
||
|
{
|
||
|
bool poked_yet;
|
||
|
Vector3 myPosition;
|
||
|
int animationCount;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( poked_yet, 1 );
|
||
|
SAVE_VARIABLE( myPosition, 2 );
|
||
|
SAVE_VARIABLE( animationCount, 3 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Enable_HUD_Pokable_Indicator ( obj, true );
|
||
|
poked_yet = false;
|
||
|
animationCount = 0;
|
||
|
myPosition = Commands->Get_Position ( obj );
|
||
|
|
||
|
Commands->Set_Animation_Frame ( obj, "DSP_L4TORPEDOR.DSP_L4TORPEDOR", 0 );
|
||
|
}
|
||
|
|
||
|
void Animation_Complete(GameObject * obj, const char *anim)
|
||
|
{
|
||
|
if (stricmp(anim, "DSP_L4TORPEDOR.DSP_L4TORPEDOR") == 0)
|
||
|
{
|
||
|
animationCount++;
|
||
|
if (animationCount >= 2)
|
||
|
{
|
||
|
Commands->Create_Sound ("SFX.Electric_Fire_02", myPosition, obj );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Commands->Set_Animation ( obj, "DSP_L4TORPEDOR.DSP_L4TORPEDOR", false);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Poked( GameObject * obj, GameObject * poker )
|
||
|
{
|
||
|
if (poked_yet == false)
|
||
|
{
|
||
|
if (STAR != NULL)
|
||
|
{
|
||
|
Commands->Create_Sound ("SFX.L04_Sabotage", myPosition, obj );
|
||
|
Commands->Enable_HUD_Pokable_Indicator ( obj, false );
|
||
|
poked_yet = true;
|
||
|
|
||
|
Commands->Set_Animation ( obj, "DSP_L4TORPEDOR.DSP_L4TORPEDOR", false);
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 210, 0 );
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
|
||
|
|
||
|
GameObject * pogController = Commands->Find_Object ( 104693 );
|
||
|
if (pogController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, pogController, M01_CHANGE_OBJECTIVE_POG_JDG, 400, 0 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Pog_Controller_JDG, "")//104693
|
||
|
{
|
||
|
bool missile_target01_poked;
|
||
|
bool missile_target02_poked;
|
||
|
bool missile_target03_poked;
|
||
|
bool missile_target04_poked;
|
||
|
|
||
|
bool missile_target01_active;
|
||
|
bool missile_target02_active;
|
||
|
bool missile_target03_active;
|
||
|
bool missile_target04_active;
|
||
|
|
||
|
bool engineroom_target01_active;
|
||
|
bool engineroom_target02_active;
|
||
|
bool engineroom_target03_active;
|
||
|
bool engineroom_target04_active;
|
||
|
|
||
|
bool torpedo_target01_active;
|
||
|
bool torpedo_target02_active;
|
||
|
bool torpedo_target01_poked;
|
||
|
bool torpedo_target02_poked;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( missile_target01_poked, 1 );
|
||
|
SAVE_VARIABLE( missile_target02_poked, 2 );
|
||
|
SAVE_VARIABLE( missile_target03_poked, 3 );
|
||
|
SAVE_VARIABLE( missile_target04_poked, 4 );
|
||
|
SAVE_VARIABLE( missile_target01_active, 5 );
|
||
|
SAVE_VARIABLE( missile_target02_active, 6 );
|
||
|
SAVE_VARIABLE( missile_target03_active, 7 );
|
||
|
SAVE_VARIABLE( missile_target04_active, 8 );
|
||
|
SAVE_VARIABLE( engineroom_target01_active, 9 );
|
||
|
SAVE_VARIABLE( engineroom_target02_active, 10 );
|
||
|
SAVE_VARIABLE( engineroom_target03_active, 11 );
|
||
|
SAVE_VARIABLE( engineroom_target04_active, 12 );
|
||
|
SAVE_VARIABLE( torpedo_target01_active, 13 );
|
||
|
SAVE_VARIABLE( torpedo_target02_active, 14 );
|
||
|
SAVE_VARIABLE( torpedo_target01_poked, 15 );
|
||
|
SAVE_VARIABLE( torpedo_target02_poked, 16 );
|
||
|
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
missile_target01_poked = false;
|
||
|
missile_target02_poked = false;
|
||
|
missile_target03_poked = false;
|
||
|
missile_target04_poked = false;
|
||
|
|
||
|
missile_target01_active = false;
|
||
|
missile_target02_active = false;
|
||
|
missile_target03_active = false;
|
||
|
missile_target04_active = false;
|
||
|
|
||
|
engineroom_target01_active = false;
|
||
|
engineroom_target02_active = false;
|
||
|
engineroom_target03_active = false;
|
||
|
engineroom_target04_active = false;
|
||
|
|
||
|
torpedo_target01_active = false;
|
||
|
torpedo_target02_active = false;
|
||
|
torpedo_target01_poked = false;
|
||
|
torpedo_target02_poked = false;
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == M01_ADD_OBJECTIVE_POG_JDG)
|
||
|
{
|
||
|
if (param == 200)//add first pog for engine room
|
||
|
{
|
||
|
GameObject * engineroom_target01 = Commands->Find_Object ( 100419 );
|
||
|
GameObject * engineroom_target02 = Commands->Find_Object ( 100416 );
|
||
|
GameObject * engineroom_target03 = Commands->Find_Object ( 100418 );
|
||
|
GameObject * engineroom_target04 = Commands->Find_Object ( 100417 );
|
||
|
|
||
|
if (engineroom_target01 != NULL)
|
||
|
{
|
||
|
engineroom_target01_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( engineroom_target01 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 200, 92, "POG_M04_2_01.tga", IDS_POG_DESTROY, pogLocation );
|
||
|
}
|
||
|
|
||
|
else if (engineroom_target02 != NULL)
|
||
|
{
|
||
|
engineroom_target02_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( engineroom_target02 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 200, 92, "POG_M04_2_01.tga", IDS_POG_DESTROY, pogLocation );
|
||
|
}
|
||
|
|
||
|
else if (engineroom_target03 != NULL)
|
||
|
{
|
||
|
engineroom_target03_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( engineroom_target03 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 200, 92, "POG_M04_2_01.tga", IDS_POG_DESTROY, pogLocation );
|
||
|
}
|
||
|
|
||
|
else if (engineroom_target04 != NULL)
|
||
|
{
|
||
|
engineroom_target04_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( engineroom_target04 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 200, 92, "POG_M04_2_01.tga", IDS_POG_DESTROY, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == 300)//add first pog for missile room
|
||
|
{
|
||
|
if (missile_target01_poked == false)
|
||
|
{
|
||
|
GameObject * missile_target01 = Commands->Find_Object ( 100421 );
|
||
|
if (missile_target01 != NULL)
|
||
|
{
|
||
|
missile_target01_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( missile_target01 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 300, 91, "POG_M04_1_03.tga", IDS_POG_SABOTAGE, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (missile_target02_poked == false)
|
||
|
{
|
||
|
GameObject * missile_target02 = Commands->Find_Object ( 100422 );
|
||
|
if (missile_target02 != NULL)
|
||
|
{
|
||
|
missile_target02_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( missile_target02 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 300, 91, "POG_M04_1_03.tga", IDS_POG_SABOTAGE, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (missile_target03_poked == false)
|
||
|
{
|
||
|
GameObject * missile_target03 = Commands->Find_Object ( 100423 );
|
||
|
if (missile_target03 != NULL)
|
||
|
{
|
||
|
missile_target03_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( missile_target03 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 300, 91, "POG_M04_1_03.tga", IDS_POG_SABOTAGE, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (missile_target04_poked == false)
|
||
|
{
|
||
|
GameObject * missile_target04 = Commands->Find_Object ( 100420 );
|
||
|
if (missile_target04 != NULL)
|
||
|
{
|
||
|
missile_target04_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( missile_target04 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 300, 91, "POG_M04_1_03.tga", IDS_POG_SABOTAGE, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == 400)//add first pog for torpedo room
|
||
|
{
|
||
|
GameObject * torpedo_target01 = Commands->Find_Object ( 100410 );
|
||
|
if (torpedo_target01 != NULL)
|
||
|
{
|
||
|
torpedo_target01_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( torpedo_target01 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 400, 91, "POG_M04_1_04.tga", IDS_POG_SABOTAGE, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (type == M01_CHANGE_OBJECTIVE_POG_JDG)
|
||
|
{
|
||
|
if (param == 200)//an engineroom target has been destroyed--change pog over
|
||
|
{
|
||
|
GameObject * engineroom_target01 = Commands->Find_Object ( 100419 );
|
||
|
GameObject * engineroom_target02 = Commands->Find_Object ( 100416 );
|
||
|
GameObject * engineroom_target03 = Commands->Find_Object ( 100418 );
|
||
|
GameObject * engineroom_target04 = Commands->Find_Object ( 100417 );
|
||
|
|
||
|
if (sender == engineroom_target01)
|
||
|
{
|
||
|
if (engineroom_target01_active == true)
|
||
|
{
|
||
|
engineroom_target01_active = false;
|
||
|
Commands->Set_Objective_HUD_Info( 200, -1, "POG_M04_2_01.tga", IDS_POG_DESTROY );
|
||
|
|
||
|
if (engineroom_target02 != NULL)
|
||
|
{
|
||
|
engineroom_target02_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( engineroom_target02 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 200, 92, "POG_M04_2_01.tga", IDS_POG_DESTROY, pogLocation );
|
||
|
}
|
||
|
|
||
|
else if (engineroom_target03 != NULL)
|
||
|
{
|
||
|
engineroom_target03_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( engineroom_target03 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 200, 92, "POG_M04_2_01.tga", IDS_POG_DESTROY, pogLocation );
|
||
|
}
|
||
|
|
||
|
else if (engineroom_target04 != NULL)
|
||
|
{
|
||
|
engineroom_target04_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( engineroom_target04 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 200, 92, "POG_M04_2_01.tga", IDS_POG_DESTROY, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (sender == engineroom_target02)
|
||
|
{
|
||
|
if (engineroom_target02_active == true)
|
||
|
{
|
||
|
engineroom_target02_active = false;
|
||
|
Commands->Set_Objective_HUD_Info( 200, -1, "POG_M04_2_01.tga", IDS_POG_DESTROY );
|
||
|
|
||
|
if (engineroom_target03 != NULL)
|
||
|
{
|
||
|
engineroom_target03_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( engineroom_target03 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 200, 92, "POG_M04_2_01.tga", IDS_POG_DESTROY, pogLocation );
|
||
|
}
|
||
|
|
||
|
else if (engineroom_target04 != NULL)
|
||
|
{
|
||
|
engineroom_target04_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( engineroom_target04 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 200, 92, "POG_M04_2_01.tga", IDS_POG_DESTROY, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (sender == engineroom_target03)
|
||
|
{
|
||
|
if (engineroom_target03_active == true)
|
||
|
{
|
||
|
engineroom_target03_active = false;
|
||
|
Commands->Set_Objective_HUD_Info( 200, -1, "POG_M04_2_01.tga", IDS_POG_DESTROY );
|
||
|
|
||
|
if (engineroom_target04 != NULL)
|
||
|
{
|
||
|
engineroom_target04_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( engineroom_target04 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 200, 92, "POG_M04_2_01.tga", IDS_POG_DESTROY, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (sender == engineroom_target04)
|
||
|
{
|
||
|
if (engineroom_target04_active == true)
|
||
|
{
|
||
|
engineroom_target04_active = false;
|
||
|
Commands->Set_Objective_HUD_Info( 200, -1, "POG_M04_2_01.tga", IDS_POG_DESTROY );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == 300)//missile room target has been poked--see who it is and take action
|
||
|
{
|
||
|
GameObject * missile_target01 = Commands->Find_Object ( 100421 );
|
||
|
GameObject * missile_target02 = Commands->Find_Object ( 100422 );
|
||
|
GameObject * missile_target03 = Commands->Find_Object ( 100423 );
|
||
|
GameObject * missile_target04 = Commands->Find_Object ( 100420 );
|
||
|
|
||
|
if (sender == missile_target01)
|
||
|
{
|
||
|
missile_target01_poked = true;
|
||
|
}
|
||
|
|
||
|
else if (sender == missile_target02)
|
||
|
{
|
||
|
missile_target02_poked = true;
|
||
|
}
|
||
|
|
||
|
else if (sender == missile_target03)
|
||
|
{
|
||
|
missile_target03_poked = true;
|
||
|
}
|
||
|
|
||
|
else if (sender == missile_target04)
|
||
|
{
|
||
|
missile_target04_poked = true;
|
||
|
}
|
||
|
|
||
|
if (missile_target01_poked == true && missile_target01_active == true)//done with #1 light up next one
|
||
|
{
|
||
|
Commands->Set_Objective_HUD_Info( 300, -1, "POG_M04_1_03.tga", IDS_POG_SABOTAGE );
|
||
|
|
||
|
if (missile_target02_poked == false)
|
||
|
{
|
||
|
GameObject * missile_target02 = Commands->Find_Object ( 100422 );
|
||
|
if (missile_target02 != NULL)
|
||
|
{
|
||
|
missile_target02_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( missile_target02 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 300, 91, "POG_M04_1_03.tga", IDS_POG_SABOTAGE, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (missile_target03_poked == false)
|
||
|
{
|
||
|
GameObject * missile_target03 = Commands->Find_Object ( 100423 );
|
||
|
if (missile_target03 != NULL)
|
||
|
{
|
||
|
missile_target03_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( missile_target03 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 300, 91, "POG_M04_1_03.tga", IDS_POG_SABOTAGE, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (missile_target04_poked == false)
|
||
|
{
|
||
|
GameObject * missile_target04 = Commands->Find_Object ( 100420 );
|
||
|
if (missile_target04 != NULL)
|
||
|
{
|
||
|
missile_target04_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( missile_target04 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 300, 91, "POG_M04_1_03.tga", IDS_POG_SABOTAGE, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (missile_target02_poked == true && missile_target02_active == true)//done with #2 light up next one
|
||
|
{
|
||
|
Commands->Set_Objective_HUD_Info( 300, -1, "POG_M04_1_03.tga", IDS_POG_SABOTAGE );
|
||
|
|
||
|
if (missile_target03_poked == false)
|
||
|
{
|
||
|
GameObject * missile_target03 = Commands->Find_Object ( 100423 );
|
||
|
if (missile_target03 != NULL)
|
||
|
{
|
||
|
missile_target03_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( missile_target03 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 300, 91, "POG_M04_1_03.tga", IDS_POG_SABOTAGE, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (missile_target04_poked == false)
|
||
|
{
|
||
|
GameObject * missile_target04 = Commands->Find_Object ( 100420 );
|
||
|
if (missile_target04 != NULL)
|
||
|
{
|
||
|
missile_target04_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( missile_target04 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 300, 91, "POG_M04_1_03.tga", IDS_POG_SABOTAGE, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (missile_target03_poked == true && missile_target03_active == true)//done with #3 light up next one
|
||
|
{
|
||
|
Commands->Set_Objective_HUD_Info( 300, -1, "POG_M04_1_03.tga", IDS_POG_SABOTAGE );
|
||
|
|
||
|
if (missile_target04_poked == false)
|
||
|
{
|
||
|
GameObject * missile_target04 = Commands->Find_Object ( 100420 );
|
||
|
if (missile_target04 != NULL)
|
||
|
{
|
||
|
missile_target04_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( missile_target04 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 300, 91, "POG_M04_1_03.tga", IDS_POG_SABOTAGE, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (param == 400)//torpedo target has been poked--see who it is and take action
|
||
|
{
|
||
|
GameObject * torpedo_target01 = Commands->Find_Object ( 100410 );
|
||
|
GameObject * torpedo_target02 = Commands->Find_Object ( 100409 );
|
||
|
|
||
|
if (sender == torpedo_target01)
|
||
|
{
|
||
|
torpedo_target01_poked = true;
|
||
|
}
|
||
|
|
||
|
if (sender == torpedo_target02)
|
||
|
{
|
||
|
torpedo_target02_poked = true;
|
||
|
}
|
||
|
|
||
|
if (torpedo_target01_poked == true )
|
||
|
{
|
||
|
GameObject * torpedo_target02 = Commands->Find_Object ( 100409 );
|
||
|
if (torpedo_target02 != NULL && torpedo_target02_poked == false)
|
||
|
{
|
||
|
torpedo_target02_active = true;
|
||
|
Vector3 pogLocation = Commands->Get_Position ( torpedo_target02 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 400, 91, "POG_M04_1_04.tga", IDS_POG_SABOTAGE, pogLocation );
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
Vector3 pogLocation = Commands->Get_Position ( torpedo_target02 );
|
||
|
Commands->Set_Objective_HUD_Info_Position( 400, -1, "POG_M04_1_04.tga", IDS_POG_SABOTAGE, pogLocation );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Start_TorpedoObjective_Zone_JDG, "")//105238 105239
|
||
|
{
|
||
|
bool conversationPlaying;
|
||
|
int missionIntroConv;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( conversationPlaying, 1 );
|
||
|
SAVE_VARIABLE( missionIntroConv, 2 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
conversationPlaying = false;
|
||
|
}
|
||
|
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR && conversationPlaying == false)//M04_Add_Torpedo_Objective_Conversation
|
||
|
{
|
||
|
conversationPlaying = true;
|
||
|
missionIntroConv = Commands->Create_Conversation( "M04_Add_Torpedo_Objective_Conversation", 100, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, missionIntroConv, false, false );
|
||
|
Commands->Start_Conversation( missionIntroConv, missionIntroConv );
|
||
|
Commands->Monitor_Conversation (obj, missionIntroConv);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
|
||
|
{
|
||
|
switch (complete_reason)
|
||
|
{
|
||
|
case ACTION_COMPLETE_CONVERSATION_ENDED:
|
||
|
{
|
||
|
if (action_id == missionIntroConv)//conversation is over, now add objective and pogs
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, Commands->Find_Object (M04_OBJECTIVE_CONTROLLER_JDG), 0, 450, 0 );
|
||
|
|
||
|
GameObject * pogController = Commands->Find_Object ( 104693 );
|
||
|
if (pogController != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, pogController, M01_ADD_OBJECTIVE_POG_JDG, 400, 0 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone01 = Commands->Find_Object ( 105238 );
|
||
|
if (zone01 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone01 );
|
||
|
}
|
||
|
|
||
|
GameObject * zone02 = Commands->Find_Object ( 105239 );
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_TorpedoRoom_EnterZone_JDG, "")// 105240
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if ( enterer == STAR )
|
||
|
{
|
||
|
int missionIntroConv = Commands->Create_Conversation( "M04_Poke_The_Torpedos_Conversation", 100, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, missionIntroConv, false, false );
|
||
|
Commands->Start_Conversation( missionIntroConv, missionIntroConv );
|
||
|
|
||
|
GameObject *zone02 = Commands->Find_Object (105240);
|
||
|
if (zone02 != NULL)
|
||
|
{
|
||
|
Commands->Destroy_Object ( zone02 );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_BigSam_EntryZone_JDG, "")//104942
|
||
|
{
|
||
|
bool missilesSabotaged;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE(missilesSabotaged, 1);
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
missilesSabotaged = false;
|
||
|
}
|
||
|
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if (enterer == STAR)
|
||
|
{
|
||
|
if (missilesSabotaged == true)
|
||
|
{
|
||
|
GameObject * bigSam = Commands->Find_Object ( 104873 );
|
||
|
if (bigSam != NULL)
|
||
|
{
|
||
|
Commands->Send_Custom_Event( obj, bigSam, 0, M01_START_ACTING_JDG, 1 );
|
||
|
Commands->Destroy_Object ( obj );//one time only zone--cleaning up
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == 0)
|
||
|
{
|
||
|
if (param == M01_START_ACTING_JDG)
|
||
|
{
|
||
|
missilesSabotaged = true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_BigSam_Script_JDG, "")//104873
|
||
|
{
|
||
|
int civWarning;
|
||
|
int missileStuckSound;
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
Commands->Set_Animation_Frame ( obj, "DSP_L4GIANTGUN.DSP_L4GIANTGUN", 0 );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == CUSTOM_EVENT_SOUND_ENDED )
|
||
|
{
|
||
|
if (param == civWarning)
|
||
|
{
|
||
|
Commands->Set_Animation ( obj, "DSP_L4GIANTGUN.DSP_L4GIANTGUN", false, NULL, 0, 119 );
|
||
|
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_START_ATTACKING_01_JDG, 10 );
|
||
|
}
|
||
|
|
||
|
else if (param == missileStuckSound)
|
||
|
{
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_START_ACTING_JDG );
|
||
|
params.AttackActive = false;
|
||
|
Commands->Action_Attack ( obj, params );
|
||
|
|
||
|
Vector3 explosion01_spot (0.122f, -57.477f, 13.000f);//
|
||
|
Commands->Create_Explosion ("Explosion_SAM_Site", explosion01_spot, NULL );
|
||
|
Commands->Set_Animation ( obj, "DSP_L4GIANTGUN.DSP_L4GIANTGUN", false, NULL, 120, 200 );
|
||
|
Commands->Set_Health ( obj, 0.25f );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (type == 0)
|
||
|
{
|
||
|
if (param == M01_START_ACTING_JDG )//missiles sabotaged/player entered room...start destruction sequence
|
||
|
{
|
||
|
civWarning = Commands->Create_2D_Sound ( "M04DSGN_DSGN0087I1EVAN_SND" );
|
||
|
Commands->Monitor_Sound ( obj, civWarning );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_START_ATTACKING_01_JDG )
|
||
|
{
|
||
|
Vector3 myTarget = Commands->Get_Position ( obj );
|
||
|
myTarget.X += Commands->Get_Random(-30.0f, 30.0f);
|
||
|
myTarget.Y += Commands->Get_Random(-30.0f, 30.0f);
|
||
|
myTarget.Z += Commands->Get_Random(0, 30.0f);
|
||
|
|
||
|
ActionParamsStruct params;
|
||
|
params.Set_Basic( this, 100, M01_START_ACTING_JDG );
|
||
|
params.Set_Attack( myTarget, 1000, 0, true );
|
||
|
params.AttackCheckBlocked = false;
|
||
|
Commands->Action_Attack ( obj, params );
|
||
|
|
||
|
Commands->Send_Custom_Event ( obj, obj, 0, M01_START_ATTACKING_02_JDG, 3 );
|
||
|
}
|
||
|
|
||
|
else if (param == M01_START_ATTACKING_02_JDG )
|
||
|
{
|
||
|
missileStuckSound = Commands->Create_2D_Sound ( "Metal_Thunk_03" );
|
||
|
Commands->Monitor_Sound ( obj, missileStuckSound );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_PlaySound_OnZoneEntry_OneTime_JDG, "SoundName:string")
|
||
|
{
|
||
|
void Entered( GameObject * obj, GameObject * enterer )
|
||
|
{
|
||
|
if (enterer == STAR)
|
||
|
{
|
||
|
const char * sound_name = Get_Parameter("SoundName");
|
||
|
|
||
|
Vector3 playersPosition = Commands->Get_Position ( obj );
|
||
|
Vector3 speaker01_Position = playersPosition;
|
||
|
Vector3 speaker02_Position = playersPosition;
|
||
|
Vector3 speaker03_Position = playersPosition;
|
||
|
|
||
|
speaker01_Position.X += Commands->Get_Random(-10,10);
|
||
|
speaker01_Position.Y += Commands->Get_Random(-10,10);
|
||
|
speaker01_Position.Z += Commands->Get_Random(-10,10);
|
||
|
|
||
|
speaker02_Position.X += Commands->Get_Random(-10,10);
|
||
|
speaker02_Position.Y += Commands->Get_Random(-10,10);
|
||
|
speaker02_Position.Z += Commands->Get_Random(-10,10);
|
||
|
|
||
|
speaker03_Position.X += Commands->Get_Random(-10,10);
|
||
|
speaker03_Position.Y += Commands->Get_Random(-10,10);
|
||
|
speaker03_Position.Z += Commands->Get_Random(-10,10);
|
||
|
|
||
|
Commands->Create_Sound ( sound_name, speaker01_Position, NULL );
|
||
|
Commands->Create_Sound ( sound_name, speaker02_Position, NULL );
|
||
|
Commands->Create_Sound ( sound_name, speaker03_Position, NULL );
|
||
|
|
||
|
Commands->Destroy_Object ( obj );
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DECLARE_SCRIPT(M04_Objective_Reminder_Controller_JDG, "")//105760
|
||
|
{
|
||
|
bool prisoner_primaryActive;
|
||
|
bool missile_primaryActive;
|
||
|
bool l01keycard_primaryActive;
|
||
|
bool l02keycard_primaryActive;
|
||
|
bool l03keycard_primaryActive;
|
||
|
bool torpedo_primaryActive;
|
||
|
bool escape_primaryActive;
|
||
|
|
||
|
bool commandClearance;
|
||
|
|
||
|
REGISTER_VARIABLES()
|
||
|
{
|
||
|
SAVE_VARIABLE( prisoner_primaryActive, 1 );
|
||
|
SAVE_VARIABLE( missile_primaryActive, 2 );
|
||
|
SAVE_VARIABLE( l01keycard_primaryActive, 3 );
|
||
|
SAVE_VARIABLE( l02keycard_primaryActive, 4 );
|
||
|
SAVE_VARIABLE( l03keycard_primaryActive, 5 );
|
||
|
SAVE_VARIABLE( torpedo_primaryActive, 6 );
|
||
|
SAVE_VARIABLE( escape_primaryActive, 7 );
|
||
|
SAVE_VARIABLE( commandClearance, 8 );
|
||
|
}
|
||
|
|
||
|
void Created( GameObject * obj )
|
||
|
{
|
||
|
prisoner_primaryActive = false;
|
||
|
missile_primaryActive = false;
|
||
|
l01keycard_primaryActive = false;
|
||
|
l02keycard_primaryActive = false;
|
||
|
l03keycard_primaryActive = false;
|
||
|
torpedo_primaryActive = false;
|
||
|
escape_primaryActive = false;
|
||
|
commandClearance = true;
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 1, 1, 90 );
|
||
|
}
|
||
|
|
||
|
void Custom( GameObject * obj, int type, int param, GameObject * sender )
|
||
|
{
|
||
|
if (type == M01_ADD_OBJECTIVE_POG_JDG)
|
||
|
{
|
||
|
if (param == 0)//rescue the prisoner objective added
|
||
|
{
|
||
|
prisoner_primaryActive = true;
|
||
|
}
|
||
|
|
||
|
else if (param == 1)//sabotage the missile rack objective added
|
||
|
{
|
||
|
missile_primaryActive = true;
|
||
|
}
|
||
|
|
||
|
else if (param == 2)//get the level 01 keycard
|
||
|
{
|
||
|
l01keycard_primaryActive = true;
|
||
|
}
|
||
|
|
||
|
else if (param == 3)//get the level 02 keycard
|
||
|
{
|
||
|
l02keycard_primaryActive = true;
|
||
|
}
|
||
|
|
||
|
else if (param == 4)//get the level 03 keycard
|
||
|
{
|
||
|
l03keycard_primaryActive = true;
|
||
|
}
|
||
|
|
||
|
else if (param == 5)//sabotage the torpedo racks
|
||
|
{
|
||
|
torpedo_primaryActive = true;
|
||
|
}
|
||
|
|
||
|
else if (param == 6)//escape with the prisoners
|
||
|
{
|
||
|
escape_primaryActive = true;
|
||
|
}
|
||
|
|
||
|
commandClearance = false;
|
||
|
Commands->Send_Custom_Event( obj, obj, 1, 2, 15 );
|
||
|
}
|
||
|
|
||
|
else if (type == M01_REMOVE_OBJECTIVE_POG_JDG)
|
||
|
{
|
||
|
if (param == 0)//rescue the prisoner objective added
|
||
|
{
|
||
|
prisoner_primaryActive = false;
|
||
|
}
|
||
|
|
||
|
else if (param == 1)//sabotage the missile rack objective added
|
||
|
{
|
||
|
missile_primaryActive = false;
|
||
|
}
|
||
|
|
||
|
else if (param == 2)//get the level 01 keycard
|
||
|
{
|
||
|
l01keycard_primaryActive = false;
|
||
|
}
|
||
|
|
||
|
else if (param == 3)//get the level 02 keycard
|
||
|
{
|
||
|
l02keycard_primaryActive = false;
|
||
|
}
|
||
|
|
||
|
else if (param == 4)//get the level 03 keycard
|
||
|
{
|
||
|
l03keycard_primaryActive = false;
|
||
|
}
|
||
|
|
||
|
else if (param == 5)//sabotage the missile racks
|
||
|
{
|
||
|
torpedo_primaryActive = false;
|
||
|
}
|
||
|
|
||
|
else if (param == 6)//escape with the prisoners
|
||
|
{
|
||
|
escape_primaryActive = false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (type == 1)
|
||
|
{
|
||
|
if (param == 1)//give reminder message
|
||
|
{
|
||
|
if (missile_primaryActive == true && commandClearance == true)
|
||
|
{//M04_Add_MissileRoom_Objective_Conversation
|
||
|
int reminderConv = Commands->Create_Conversation( "M04_Add_MissileRoom_Objective_Conversation", 10, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, reminderConv, false, false );
|
||
|
Commands->Start_Conversation( reminderConv, reminderConv );
|
||
|
}
|
||
|
|
||
|
else if (torpedo_primaryActive == true && commandClearance == true)
|
||
|
{//M04_Add_Torpedo_Objective_Conversation
|
||
|
int reminderConv = Commands->Create_Conversation( "M04_Add_Torpedo_Objective_Conversation", 10, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, reminderConv, false, false );
|
||
|
Commands->Start_Conversation( reminderConv, reminderConv );
|
||
|
}
|
||
|
|
||
|
else if (l01keycard_primaryActive == true && commandClearance == true)
|
||
|
{//M04_Add_PrisonKey_Objective
|
||
|
int reminderConv = Commands->Create_Conversation( "M04_Add_PrisonKey_Objective", 10, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, reminderConv, false, false );
|
||
|
Commands->Start_Conversation( reminderConv, reminderConv );
|
||
|
}
|
||
|
|
||
|
else if (prisoner_primaryActive == true && commandClearance == true)
|
||
|
{//M04_Mission_Start_Conversation
|
||
|
int reminderConv = Commands->Create_Conversation( "M04_Mission_Start_Conversation", 10, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, reminderConv, false, false );
|
||
|
Commands->Start_Conversation( reminderConv, reminderConv );
|
||
|
}
|
||
|
|
||
|
else if (l03keycard_primaryActive == true && commandClearance == true)
|
||
|
{//M04_Add_Captains_Key_Objective_Conversation
|
||
|
int reminderConv = Commands->Create_Conversation( "M04_Add_Captains_Key_Objective_Conversation", 10, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, reminderConv, false, false );
|
||
|
Commands->Start_Conversation( reminderConv, reminderConv );
|
||
|
}
|
||
|
|
||
|
else if (l02keycard_primaryActive == true && commandClearance == true)
|
||
|
{//M04_Add_FirstMate_Objective_JDG
|
||
|
int reminderConv = Commands->Create_Conversation( "M04_Add_FirstMate_Objective_JDG", 10, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, reminderConv, false, false );
|
||
|
Commands->Start_Conversation( reminderConv, reminderConv );
|
||
|
}
|
||
|
|
||
|
else if (escape_primaryActive == true && commandClearance == true)
|
||
|
{//M04_Rally_Round_The_Sub_Boy_Conversation
|
||
|
int reminderConv = Commands->Create_Conversation( "M04_Rally_Round_The_Sub_Boy_Conversation", 10, 1000, false);
|
||
|
Commands->Join_Conversation( NULL, reminderConv, false, false );
|
||
|
Commands->Start_Conversation( reminderConv, reminderConv );
|
||
|
}
|
||
|
|
||
|
Commands->Send_Custom_Event( obj, obj, 1, 1, 90 );
|
||
|
}
|
||
|
|
||
|
if (param == 2)//give reminder message
|
||
|
{
|
||
|
commandClearance = true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|