This repository has been archived on 2025-02-27. You can view files and clone it, but cannot push or open issues or pull requests.
CnC_Renegade/Code/Scripts/Mission04.cpp

10519 lines
327 KiB
C++
Raw Permalink Normal View History

/*
** 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;
}
}
}
};