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/Mission01.cpp

22059 lines
636 KiB
C++

/*
** Command & Conquer Renegade(tm)
** Copyright 2025 Electronic Arts Inc.
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/******************************************************************************
*
* FILE
* Mission01.cpp
*
* DESCRIPTION
* Mission 1 scripts
*
* PROGRAMMER
* Design Team
*
* VERSION INFO
* $Author: Joe_g $
* $Revision: 268 $
* $Modtime: 1/23/02 12:00p $
* $Archive: /Commando/Code/Scripts/Mission01.cpp $
*
******************************************************************************/
#include "scripts.h"
#include <string.h>
#include "toolkit.h"
#include "mission1.h"
DECLARE_SCRIPT(M01_Mission_Controller_JDG, "")//this guys ID number is 100376
{
typedef enum {
IDLE,
ACTIVE,
UNDER_ATTACK,
DESTROYED,
} M01_Building_State;
typedef enum {
LANDING_BEACH,
INSIDE_GDI_CON,
AT_GDI_BASE,
INSIDE_GDI_POWERPLANT,
BY_HAND_OF_NOD,
INSIDE_HAND_OF_NOD,
BY_REFINERY,
INSIDE_REFINERY,
BY_COMM_CENTER,
INSIDE_COMM_CENTER,
BY_TUNNEL,
INSIDE_TUNNEL,
BY_WATERFALL,
INSIDE_WATERFALL,
AT_SNIPER_SCENARIO,
} M01_Location;
bool is_startup;
bool first_time_in_handofnod;
bool first_time_in_hon_gruntlevel;
bool first_time_in_hon_dojolevel;
bool first_time_poking_gate_lock;
bool players_first_time_by_commcenter;
bool first_time_at_barn;
bool gate_objective_done;
bool church_guard_is_dead;
bool loveshack_guard_is_dead;
bool player_has_an_escort;
bool clergy_are_boarding;
bool church_pickup_chinook_is_on_its_way;
bool player_has_unlocked_pen;
bool radar_is_scrambled;
bool unlock_gate_objective_active;
bool commcenter_sam_objective_active;
bool prisoners_are_freed;
bool m01_hon_spawned_guy_01_alive;
bool m01_hon_spawned_guy_02_alive;
bool m01_hon_spawned_guy_03_alive;
bool turret_01_is_dead;
bool turret_02_is_dead;
bool medium_tank_spawned;
bool barn_prisoner_01_is_dead;
bool barn_prisoner_02_is_dead;
bool barn_prisoner_03_is_dead;
bool barn_objective_active;
bool kane_and_no2_conv01_active;
bool kane_and_no2_conv02_active;
bool kane_and_havoc_conv_active;
bool m01_bridgeWeather_is_Set;
bool m01_nodBase_weather_is_Set;
bool missionStart;
bool barn_objective_failed;
bool barn_announcement_active;
bool barn_objective_ended;
bool turret_objective_over;
bool final_conv_played;
int m01_church_interior_nun02_ID;
int m01_whack_a_mole_guy_ID;
int m01_hon_spawned_guy_01_ID;
int m01_hon_spawned_guy_02_ID;
int m01_hon_spawned_guy_03_ID;
int m01_medium_tank_ID;
int m01_hon_spawners_tally;
int m01_hon_total_spawners_tally;
int m01_HON_SpawnRate;
int new_turretbeach_engineers;
int kane_ID;
int eva_comm_center_line_01;
int eva_comm_center_line_02;
int eva_comm_center_line_03;
int eva_comm_center_line_04;
int eva_comm_center_line_05;
int billy_conv;
int babushka_conv;
int start_conv;
int start_conv2;
int kane_and_no2_conv01;
int kane_and_no2_conv02;
int kane_and_havoc_conv;
int lockes_hon_mct_conv1;
int lockes_hon_mct_conv2;
int barnEvac_conv;
int barnfailed_conv;
int civ3_conv;
int missionIntro;
int endMission_conv;
int unlocked_gate_conv;
int turrets_conv;
int players_escorts_ID;
int havocs_targets_ID;
int m01_hon_chinook_guys_killed;
int dead_barn_guard_tally;
int dead_barn_prisoner_tally;
//new stuff
bool firstNodCommanderKilled;
int loveshack_conv;
bool loveshack_conv_playing;
int priest_conv;
bool priest_conv_playing;
int interior_nun_conv;
bool interior_nun_conv_playing;
bool player_has_reached_grunt_level;
bool civs_scattered;
bool commcenter_sam_destroyed;
M01_Building_State hand_of_nod_state, comm_center_state;
M01_Location players_location;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(is_startup, 1);
SAVE_VARIABLE(first_time_in_handofnod, 2);
SAVE_VARIABLE(first_time_in_hon_gruntlevel, 3);
SAVE_VARIABLE(first_time_in_hon_dojolevel, 4);
SAVE_VARIABLE(first_time_poking_gate_lock, 5);
SAVE_VARIABLE(players_first_time_by_commcenter, 6);
SAVE_VARIABLE(first_time_at_barn, 7);
SAVE_VARIABLE(gate_objective_done, 8);
SAVE_VARIABLE(church_guard_is_dead, 9);
SAVE_VARIABLE(loveshack_guard_is_dead, 10);
SAVE_VARIABLE(player_has_an_escort, 11);
SAVE_VARIABLE(clergy_are_boarding, 12);
SAVE_VARIABLE(church_pickup_chinook_is_on_its_way, 13);
SAVE_VARIABLE(player_has_unlocked_pen, 14);
SAVE_VARIABLE(radar_is_scrambled, 15);
SAVE_VARIABLE(unlock_gate_objective_active, 16);
SAVE_VARIABLE(commcenter_sam_objective_active, 17);
SAVE_VARIABLE(prisoners_are_freed, 18);
SAVE_VARIABLE(m01_hon_spawned_guy_01_alive, 19);
SAVE_VARIABLE(m01_hon_spawned_guy_02_alive, 20);
SAVE_VARIABLE(m01_hon_spawned_guy_03_alive, 21);
SAVE_VARIABLE(turret_01_is_dead, 22);
SAVE_VARIABLE(turret_02_is_dead, 23);
SAVE_VARIABLE(medium_tank_spawned, 24);
SAVE_VARIABLE(barn_prisoner_01_is_dead, 25);
SAVE_VARIABLE(barn_prisoner_02_is_dead, 26);
SAVE_VARIABLE(barn_prisoner_03_is_dead, 27);
SAVE_VARIABLE(barn_objective_active, 28);
SAVE_VARIABLE(kane_and_no2_conv01_active, 29);
SAVE_VARIABLE(kane_and_no2_conv02_active, 30);
SAVE_VARIABLE(kane_and_havoc_conv_active, 31);
SAVE_VARIABLE(m01_bridgeWeather_is_Set, 32);
SAVE_VARIABLE(m01_nodBase_weather_is_Set, 33);
SAVE_VARIABLE(missionStart, 34);
SAVE_VARIABLE(barn_objective_failed, 35);
SAVE_VARIABLE(barn_announcement_active, 36);
SAVE_VARIABLE(barn_objective_ended, 37);
SAVE_VARIABLE(turret_objective_over, 38);
SAVE_VARIABLE(final_conv_played, 39);
SAVE_VARIABLE(m01_church_interior_nun02_ID, 40);
SAVE_VARIABLE(m01_whack_a_mole_guy_ID, 41);
SAVE_VARIABLE(m01_hon_spawned_guy_01_ID, 42);
SAVE_VARIABLE(m01_hon_spawned_guy_02_ID, 43);
SAVE_VARIABLE(m01_hon_spawned_guy_03_ID, 44);
SAVE_VARIABLE(m01_medium_tank_ID, 45);
SAVE_VARIABLE(m01_hon_spawners_tally, 46);
SAVE_VARIABLE(m01_hon_total_spawners_tally, 47);
SAVE_VARIABLE(m01_HON_SpawnRate, 48);
SAVE_VARIABLE(new_turretbeach_engineers, 49);
SAVE_VARIABLE(kane_ID, 50);
SAVE_VARIABLE(eva_comm_center_line_01, 51);
SAVE_VARIABLE(eva_comm_center_line_02, 52);
SAVE_VARIABLE(eva_comm_center_line_03, 53);
SAVE_VARIABLE(eva_comm_center_line_04, 54);
SAVE_VARIABLE(eva_comm_center_line_05, 55);
SAVE_VARIABLE(billy_conv, 56);
SAVE_VARIABLE(babushka_conv, 57);
SAVE_VARIABLE(start_conv, 58);
SAVE_VARIABLE(start_conv2, 59);
SAVE_VARIABLE(kane_and_no2_conv01, 60);
SAVE_VARIABLE(kane_and_no2_conv02, 61);
SAVE_VARIABLE(kane_and_havoc_conv, 62);
SAVE_VARIABLE(lockes_hon_mct_conv1, 63);
SAVE_VARIABLE(lockes_hon_mct_conv2, 64);
SAVE_VARIABLE(barnEvac_conv, 65);
SAVE_VARIABLE(barnfailed_conv, 66);
SAVE_VARIABLE(civ3_conv, 67);
SAVE_VARIABLE(missionIntro, 68);
SAVE_VARIABLE(endMission_conv, 69);
SAVE_VARIABLE(unlocked_gate_conv, 70);
SAVE_VARIABLE(turrets_conv, 71);
SAVE_VARIABLE(players_escorts_ID, 72);
SAVE_VARIABLE(havocs_targets_ID, 73);
SAVE_VARIABLE(m01_hon_chinook_guys_killed, 74);
SAVE_VARIABLE(dead_barn_guard_tally, 75);
SAVE_VARIABLE(dead_barn_prisoner_tally, 76);
SAVE_VARIABLE(hand_of_nod_state, 77);
SAVE_VARIABLE(comm_center_state, 78);
SAVE_VARIABLE(players_location, 79);
SAVE_VARIABLE(firstNodCommanderKilled, 80);
SAVE_VARIABLE(loveshack_conv, 81);
SAVE_VARIABLE(loveshack_conv_playing, 82);
SAVE_VARIABLE(priest_conv, 83);
SAVE_VARIABLE(priest_conv_playing, 84);//
SAVE_VARIABLE(interior_nun_conv, 85);
SAVE_VARIABLE(interior_nun_conv_playing, 86);
SAVE_VARIABLE(player_has_reached_grunt_level, 87);
SAVE_VARIABLE(civs_scattered, 88);
SAVE_VARIABLE(commcenter_sam_destroyed, 89);
}
void Created( GameObject * obj )
{
Commands->Enable_Hibernation( obj, false );
hand_of_nod_state = IDLE;
comm_center_state = IDLE;
players_location = LANDING_BEACH;
is_startup = true;
first_time_in_handofnod = true;
first_time_in_hon_gruntlevel = true;
first_time_in_hon_dojolevel = true;
first_time_poking_gate_lock = true;
players_first_time_by_commcenter = true;
first_time_at_barn = true;
missionStart = true;
church_guard_is_dead = false;
loveshack_guard_is_dead = false;
player_has_an_escort = false;
church_pickup_chinook_is_on_its_way = false;
clergy_are_boarding = false;
player_has_unlocked_pen = false;
radar_is_scrambled = false;
unlock_gate_objective_active = false;
commcenter_sam_objective_active = false;
prisoners_are_freed = false;
m01_hon_spawned_guy_01_alive = false;
m01_hon_spawned_guy_02_alive = false;
m01_hon_spawned_guy_03_alive = false;
turret_01_is_dead = false;
turret_02_is_dead = false;
medium_tank_spawned = false;
barn_prisoner_01_is_dead = false;
barn_prisoner_02_is_dead = false;
barn_prisoner_03_is_dead = false;
barn_objective_active = false;
kane_and_no2_conv01_active = false;
kane_and_no2_conv02_active = false;
kane_and_havoc_conv_active = false;
m01_bridgeWeather_is_Set = false;
m01_nodBase_weather_is_Set = false;
barn_objective_failed = false;
barn_announcement_active = false;
barn_objective_ended = false;
turret_objective_over = false;
final_conv_played = false;
gate_objective_done = false;
firstNodCommanderKilled = false;
loveshack_conv_playing = false;
priest_conv_playing = false;
interior_nun_conv_playing = false;
player_has_reached_grunt_level = false;
civs_scattered = false;
commcenter_sam_destroyed = false;
m01_hon_chinook_guys_killed = 0;
m01_hon_spawners_tally = 0;
m01_hon_total_spawners_tally = 0;
new_turretbeach_engineers = 0;
dead_barn_guard_tally = 0;
dead_barn_prisoner_tally = 0;
m01_HON_SpawnRate = 14;
players_escorts_ID = 0;
havocs_targets_ID = 0;
//Commands->Set_Clouds (0.25f, 0.25f, 0);
Commands->Set_Wind (0, 0, 0, 0);
Commands->Set_Rain (0, 0, true);
Commands->Set_Lightning (0.25f, 0.75f, 1, 0, 0.10f, 0);
//putting datalink updates here
Commands->Reveal_Encyclopedia_Character ( 19 );//gdi minigunner
Commands->Reveal_Encyclopedia_Character ( 21 );//gdi minigunner officer
Commands->Reveal_Encyclopedia_Character ( 14 );//gdi grenadier
Commands->Reveal_Encyclopedia_Character ( 38 );//nod minigunner
Commands->Reveal_Encyclopedia_Character ( 18 );//Lt Maus -- whoever that is
Commands->Reveal_Encyclopedia_Character ( 16 );//General Locke
Commands->Reveal_Encyclopedia_Character ( 39 );//sakura
Commands->Reveal_Encyclopedia_Character ( 13 );//hotwire
Commands->Reveal_Encyclopedia_Character ( 15 );//patch
Commands->Reveal_Encyclopedia_Character ( 22 );//deadeye
Commands->Reveal_Encyclopedia_Character ( 26 );//gunner
Commands->Reveal_Encyclopedia_Character ( 24 );//gdi rocket guy
Commands->Reveal_Encyclopedia_Character ( 25 );//gdi rocket guy officer
Commands->Reveal_Encyclopedia_Character ( 23 );//gdi POW
Commands->Reveal_Encyclopedia_Weapon ( 14 );//pistol
Commands->Reveal_Encyclopedia_Weapon ( 20 );//sniper rifle
Commands->Reveal_Encyclopedia_Weapon ( 5 );//remote c4
Commands->Reveal_Encyclopedia_Vehicle ( 18 );//orca
Commands->Reveal_Encyclopedia_Vehicle ( 19 );//gdi transport helicopter
Commands->Reveal_Encyclopedia_Building ( 4 );//gdi powerplant
Commands->Reveal_Encyclopedia_Building ( 2 );//gdi con yard
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == CUSTOM_EVENT_SOUND_ENDED )
{
if (param == eva_comm_center_line_01)
{
eva_comm_center_line_02 = Commands->Create_Sound ( "00-N002E", Vector3 (0,0,0), obj );//please stand by
Commands->Monitor_Sound ( obj, eva_comm_center_line_02 );
}
else if (param == eva_comm_center_line_02)
{
eva_comm_center_line_03 = Commands->Create_Sound ( "00-N026E", Vector3 (0,0,0), obj );//transmitting
Commands->Monitor_Sound ( obj, eva_comm_center_line_03 );
}
else if (param == eva_comm_center_line_03)
{
eva_comm_center_line_04 = Commands->Create_Sound ( "00-N028E", Vector3 (0,0,0), obj );//receiving
Commands->Monitor_Sound ( obj, eva_comm_center_line_04 );
}
else if (param == eva_comm_center_line_04)
{
eva_comm_center_line_05 = Commands->Create_Sound ( "00-N030E", Vector3 (0,0,0), obj );//data acquisition complete
Commands->Monitor_Sound ( obj, eva_comm_center_line_05 );
}
else if (param == eva_comm_center_line_05)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_CLEAR_UNLOCK_GATE_OBJECTIVE_JDG, 0 );
player_has_unlocked_pen = true;
}
}
else if (type == 0)
{
switch (param)
{
case 0://mission is over--end pass
{
Commands->Mission_Complete ( true );
}
break;
case M01_HON_HAS_BEEN_DESTROYED_JDG://Hand of Nod has been destroyed
{
Commands->Send_Custom_Event( obj, obj, 0, M01_CLEAR_HON_OBJECTIVE_PASS_JDG, 2 );
float pick_a_sound = Commands->Get_Random ( 0.5f, 2.5f );
if (pick_a_sound >= 0.5 && pick_a_sound < 1.5)
{
Commands->Create_Sound ( "EVA_Enemy_Structure_Destroyed", Vector3 (0,0,0), obj);
}
else
{
Commands->Create_Sound ( "EVA_Nod_Structure_Destroyed", Vector3 (0,0,0), obj);
}
hand_of_nod_state = DESTROYED;
Commands->Give_Points( STAR, 5000, false );
GameObject * honCafeteriaGuy01 = Commands->Find_Object ( M01_HON_CAFETERIA_EATING_GUY_ID );
if (honCafeteriaGuy01 != NULL)
{
Commands->Send_Custom_Event( obj, honCafeteriaGuy01, 0, M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG, 0 );
}
GameObject * honCafeteriaGuy02 = Commands->Find_Object ( M01_HON_CAFETERIA_WALKING_GUY_ID );
if (honCafeteriaGuy02 != NULL)
{
Commands->Send_Custom_Event( obj, honCafeteriaGuy02, 0, M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG, 0 );
}
GameObject * honJudoGuy01 = Commands->Find_Object ( M01_HON_CAFETERIA_JUDO_GUY_ID );
if (honJudoGuy01 != NULL)
{
Commands->Send_Custom_Event( obj, honJudoGuy01, 0, M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG, 0 );
}
GameObject * honDormGuy01 = Commands->Find_Object ( M01_HON_DORMROOM_MINIGUNNER_ID );
if (honDormGuy01 != NULL)
{
Commands->Send_Custom_Event( obj, honDormGuy01, 0, M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG, 0 );
}
GameObject * honDormGuy02 = Commands->Find_Object ( M01_HON_DORMROOM_ROCKET_GUY_ID );
if (honDormGuy02 != NULL)
{
Commands->Send_Custom_Event( obj, honDormGuy02, 0, M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG, 0 );
}
GameObject * honDormGuy03 = Commands->Find_Object ( M01_HON_DORMROOM_CHEM_GUY_ID );
if (honDormGuy03 != NULL)
{
Commands->Send_Custom_Event( obj, honDormGuy03, 0, M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG, 0 );
}
GameObject * honDormGuy04 = Commands->Find_Object ( M01_HON_DORMROOM_FLAME_GUY_ID );
if (honDormGuy04 != NULL)
{
Commands->Send_Custom_Event( obj, honDormGuy04, 0, M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG, 0 );
}
GameObject * honDormGuy05 = Commands->Find_Object ( M01_HON_DORMROOM_CRAPPER_ID );
if (honDormGuy05 != NULL)
{
Commands->Send_Custom_Event( obj, honDormGuy05, 0, M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG, 0 );
}
GameObject * honDojoSensei = Commands->Find_Object ( M01_HON_DOJO_SENSEI_JDG );
if (honDojoSensei != NULL)
{
Commands->Send_Custom_Event( obj, honDojoSensei, 0, M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG, 0 );
}
GameObject * honDojoCiv01 = Commands->Find_Object ( M01_HON_DOJO_CIV_01_JDG );
if (honDojoCiv01 != NULL)
{
Commands->Send_Custom_Event( obj, honDojoCiv01, 0, M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG, 0 );
}
GameObject * honDojoCiv02 = Commands->Find_Object ( M01_HON_DOJO_CIV_02_JDG );
if (honDojoCiv02 != NULL)
{
Commands->Send_Custom_Event( obj, honDojoCiv02, 0, M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG, 0 );
}
GameObject * honDojoCiv03 = Commands->Find_Object ( M01_HON_DOJO_CIV_03_JDG );
if (honDojoCiv03 != NULL)
{
Commands->Send_Custom_Event( obj, honDojoCiv03, 0, M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG, 0 );
}
if (players_location != INSIDE_HAND_OF_NOD)
{
if (player_has_reached_grunt_level == false)
{
GameObject * m01_hon_evacuator_guy01 = Commands->Trigger_Spawner( M01_HON_FRONTDOOR_DESTROYED_SPAWNER_JDG );
Commands->Attach_Script(m01_hon_evacuator_guy01, "M01_HON_FrontDoor_Evacuator_JDG", "");
GameObject * m01_hon_evacuator_guy02 = Commands->Trigger_Spawner( M01_HON_FRONTDOOR_DESTROYED_SPAWNER_JDG );
Commands->Attach_Script(m01_hon_evacuator_guy02, "M01_HON_FrontDoor_Evacuator_JDG", "");
GameObject * m01_hon_evacuator_guy03 = Commands->Trigger_Spawner( M01_HON_FRONTDOOR_DESTROYED_SPAWNER_JDG );
Commands->Attach_Script(m01_hon_evacuator_guy03, "M01_HON_FrontDoor_Evacuator_JDG", "");
GameObject * m01_hon_evacuator_guy04 = Commands->Trigger_Spawner( M01_HON_BACKDOOR_DESTROYED_SPAWNER_JDG );
Commands->Attach_Script(m01_hon_evacuator_guy04, "M01_HON_BackDoor_Evacuator_JDG", "");
GameObject * m01_hon_evacuator_guy05 = Commands->Trigger_Spawner( M01_HON_BACKDOOR_DESTROYED_SPAWNER_JDG );
Commands->Attach_Script(m01_hon_evacuator_guy05, "M01_HON_BackDoor_Evacuator_JDG", "");
GameObject * m01_hon_evacuator_guy06 = Commands->Trigger_Spawner( M01_HON_BACKDOOR_DESTROYED_SPAWNER_JDG );
Commands->Attach_Script(m01_hon_evacuator_guy06, "M01_HON_BackDoor_Evacuator_JDG", "");
}
}
}
break;
case M01_COMM_CENTER_HAS_BEEN_DESTROYED_JDG://Comm Center has been destroyed
{
if (players_location != INSIDE_COMM_CENTER)
{
GameObject * m01_commcenter_evacuator_guy01 = Commands->Trigger_Spawner( M01_COMMCENTER_DESTROYED_SPAWNER_JDG );
Commands->Attach_Script(m01_commcenter_evacuator_guy01, "M01_CommCenter_Evacuator_JDG", "");
GameObject * m01_commcenter_evacuator_guy02 = Commands->Trigger_Spawner( M01_COMMCENTER_DESTROYED_SPAWNER_JDG );
Commands->Attach_Script(m01_commcenter_evacuator_guy02, "M01_CommCenter_Evacuator_JDG", "");
GameObject * m01_commcenter_evacuator_guy03 = Commands->Trigger_Spawner( M01_COMMCENTER_DESTROYED_SPAWNER_JDG );
Commands->Attach_Script(m01_commcenter_evacuator_guy03, "M01_CommCenter_Evacuator_JDG", "");
GameObject * m01_commcenter_evacuator_guy04 = Commands->Trigger_Spawner( M01_COMMCENTER_DESTROYED_SPAWNER_JDG );
Commands->Attach_Script(m01_commcenter_evacuator_guy04, "M01_CommCenter_Evacuator_JDG", "");
GameObject * m01_commcenter_evacuator_guy05 = Commands->Trigger_Spawner( M01_COMMCENTER_DESTROYED_SPAWNER_JDG );
Commands->Attach_Script(m01_commcenter_evacuator_guy05, "M01_CommCenter_Evacuator_JDG", "");
}
if (player_has_unlocked_pen == false)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_CLEAR_UNLOCK_GATE_OBJECTIVE_JDG, 0 );
player_has_unlocked_pen = true;
}
if (radar_is_scrambled == true)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_UNSCRAMBLE_THE_RADAR_JDG, 0 );
}
float pick_a_sound = Commands->Get_Random ( 0.5f, 2.5f );
if (pick_a_sound >= 0.5 && pick_a_sound < 1.5)
{
Commands->Create_Sound ( "EVA_Enemy_Structure_Destroyed", Vector3 (0,0,0), obj);
}
else if (pick_a_sound >= 1.5 && pick_a_sound <= 2.5)
{
Commands->Create_Sound ( "EVA_Nod_Structure_Destroyed", Vector3 (0,0,0), obj);
}
comm_center_state = DESTROYED;
}
break;
case M01_PLAYER_IS_INSIDE_HON_JDG://Player is inside HON--kill rain sounds
{
players_location = INSIDE_HAND_OF_NOD;
GameObject * soundController = Commands->Find_Object ( M01_AMBIENT_SOUND_CONTROLLER_JDG );
if (soundController != NULL)
{
Commands->Send_Custom_Event( obj, soundController, 0, M01_TURN_OFF_OUTSIDE_AMBIENTS_JDG, 0 );
Commands->Send_Custom_Event( obj, soundController, 0, M01_PLAYER_IS_INSIDE_HON_JDG, 0 );
}
if (first_time_in_handofnod == true)
{
first_time_in_handofnod = false;
Commands->Send_Custom_Event( obj, obj, 0, M01_HON_CUE_WARROOM_LEVEL_ACTORS_JDG, 0 );
}
}
break;
case M01_PLAYER_IS_OUTSIDE_HON_JDG://Player is outside HON--restart rain sounds
{
players_location = BY_HAND_OF_NOD;
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_AMBIENT_SOUND_CONTROLLER_JDG ), 0, M01_TURN_ON_OUTSIDE_AMBIENTS_JDG, 0 );
}
break;
case M01_PLAYER_IS_INSIDE_COMM_CENTER_JDG://Player is inside Comm Center--kill rain sounds--start internal pagings
{
players_location = INSIDE_COMM_CENTER;
GameObject * soundController = Commands->Find_Object ( M01_AMBIENT_SOUND_CONTROLLER_JDG );
if (soundController != NULL)
{
Commands->Send_Custom_Event( obj, soundController, 0, M01_TURN_OFF_OUTSIDE_AMBIENTS_JDG, 0 );
Commands->Send_Custom_Event( obj, soundController, 0, M01_PLAYER_IS_INSIDE_COMM_CENTER_JDG, 0 );
}
GameObject * baseCommander = Commands->Find_Object ( M01_COMMCENTER_BASE_COMMANDER_JDG );
if (baseCommander != NULL)
{
Commands->Send_Custom_Event( obj, baseCommander, 0, M01_PLAYER_IS_INSIDE_COMM_CENTER_JDG, 0 );
}
GameObject * baseScapeGoat = Commands->Find_Object ( M01_COMMCENTER_BASE_SCAPEGOAT_JDG );
if (baseScapeGoat != NULL)
{
Commands->Send_Custom_Event( obj, baseScapeGoat, 0, M01_PLAYER_IS_INSIDE_COMM_CENTER_JDG, 0 );
}
GameObject * upstairsTech = Commands->Find_Object ( M01_COMMCENTER_UPSTAIRS_TECH_JDG );
if (upstairsTech != NULL)
{
Commands->Send_Custom_Event( obj, upstairsTech, 0, M01_PLAYER_IS_INSIDE_COMM_CENTER_JDG, 0 );
}
GameObject * warroomTech01 = Commands->Find_Object ( M01_COMMCENTER_WAROOM_TECH_01_JDG );
if (warroomTech01 != NULL)
{
Commands->Send_Custom_Event( obj, warroomTech01, 0, M01_PLAYER_IS_INSIDE_COMM_CENTER_JDG, 0 );
}
GameObject * warroomTech02 = Commands->Find_Object ( M01_COMMCENTER_WAROOM_TECH_02_JDG );
if (warroomTech02 != NULL)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_COMMCENTER_WAROOM_TECH_02_JDG ), 0, M01_PLAYER_IS_INSIDE_COMM_CENTER_JDG, 0 );
}
GameObject * mainframeTech = Commands->Find_Object ( M01_COMMCENTER_COMPUTERROOM_TECH_JDG );
if (mainframeTech != NULL)
{
Commands->Send_Custom_Event( obj, mainframeTech, 0, M01_PLAYER_IS_INSIDE_COMM_CENTER_JDG, 0 );
}
GameObject * upstairsGuard = Commands->Find_Object ( M01_COMMCENTER_UPSTAIRS_GUARD_JDG );
if (upstairsGuard != NULL)
{
Commands->Send_Custom_Event( obj, upstairsGuard, 0, M01_PLAYER_IS_INSIDE_COMM_CENTER_JDG, 0 );
}
}
break;
case M01_PLAYER_IS_OUTSIDE_COMM_CENTER_JDG://Player is outside Comm Center--restart rain sounds
{
players_location = BY_COMM_CENTER;
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_AMBIENT_SOUND_CONTROLLER_JDG ), 0, M01_TURN_ON_OUTSIDE_AMBIENTS_JDG, 0 );
}
break;
case M01_PLAYER_IS_INSIDE_TUNNEL_JDG://Player is inside TUNNEL leading to tailgun run--stop rain sounds
{
players_location = INSIDE_TUNNEL;
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_AMBIENT_SOUND_CONTROLLER_JDG ), 0, M01_TURN_OFF_OUTSIDE_AMBIENTS_JDG, 0 );
}
break;
case M01_PLAYER_IS_OUTSIDE_TUNNEL_JDG://Player is outside TUNNEL--restart rain sounds
{
players_location = BY_TUNNEL;
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_AMBIENT_SOUND_CONTROLLER_JDG ), 0, M01_TURN_ON_OUTSIDE_AMBIENTS_JDG, 0 );
}
break;
case M01_PLAYER_IS_INSIDE_WATERFALL_JDG://Player is inside WATERFALL cave--stop rain sounds
{
players_location = INSIDE_WATERFALL;
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_AMBIENT_SOUND_CONTROLLER_JDG ), 0, M01_TURN_OFF_OUTSIDE_AMBIENTS_JDG, 0 );
}
break;
case M01_PLAYER_IS_OUTSIDE_WATERFALL_JDG://Player is outside WATERFALL cave--restart rain sounds
{
players_location = BY_WATERFALL;
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_AMBIENT_SOUND_CONTROLLER_JDG ), 0, M01_TURN_ON_OUTSIDE_AMBIENTS_JDG, 0 );
}
break;
case M01_PLAYER_IS_IN_HON_GRUNT_LEVEL_JDG://Player is entering Grunt level--cue actors
{
player_has_reached_grunt_level = true;
if ((hand_of_nod_state != DESTROYED) && (first_time_in_hon_gruntlevel == true))
{
first_time_in_hon_gruntlevel = false;
GameObject * honCafeteriaGuy01 = Commands->Find_Object ( M01_HON_CAFETERIA_EATING_GUY_ID );
if (honCafeteriaGuy01 != NULL)
{
Commands->Send_Custom_Event( obj, honCafeteriaGuy01, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * honCafeteriaGuy02 = Commands->Find_Object ( M01_HON_CAFETERIA_WALKING_GUY_ID );
if (honCafeteriaGuy02 != NULL)
{
Commands->Send_Custom_Event( obj, honCafeteriaGuy02, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * honJudoGuy01 = Commands->Find_Object ( M01_HON_CAFETERIA_JUDO_GUY_ID );
if (honJudoGuy01 != NULL)
{
Commands->Send_Custom_Event( obj, honJudoGuy01, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * honDormGuy01 = Commands->Find_Object ( M01_HON_DORMROOM_MINIGUNNER_ID );
if (honDormGuy01 != NULL)
{
Commands->Send_Custom_Event( obj, honDormGuy01, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * honDormGuy02 = Commands->Find_Object ( M01_HON_DORMROOM_ROCKET_GUY_ID );
if (honDormGuy02 != NULL)
{
Commands->Send_Custom_Event( obj, honDormGuy02, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * honDormGuy03 = Commands->Find_Object ( M01_HON_DORMROOM_CHEM_GUY_ID );
if (honDormGuy03 != NULL)
{
Commands->Send_Custom_Event( obj, honDormGuy03, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * honDormGuy04 = Commands->Find_Object ( M01_HON_DORMROOM_FLAME_GUY_ID );
if (honDormGuy04 != NULL)
{
Commands->Send_Custom_Event( obj, honDormGuy04, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * honDormGuy05 = Commands->Find_Object ( M01_HON_DORMROOM_CRAPPER_ID );
if (honDormGuy05 != NULL)
{
Commands->Send_Custom_Event( obj, honDormGuy05, 0, M01_START_ACTING_JDG, 0 );
}
}
}
break;
case M01_PLAYER_IS_IN_HON_DOJO_JDG://Player is entering DOJO--cue actors
{
if ((hand_of_nod_state != DESTROYED) && (first_time_in_hon_dojolevel == true))
{
first_time_in_hon_dojolevel = false;
if (Commands->Find_Object ( M01_HON_DOJO_SENSEI_JDG ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_HON_DOJO_SENSEI_JDG ), 0, M01_START_ACTING_JDG, 0 );
}
}
}
break;
case M01_HON_SAMSITE_HAS_BEEN_DESTROYED_JDG://hand of nod sam site has been destroyed--duh!
{
//Commands->Set_Objective_Status( M01_HON_SAM_OBJECTIVE_JDG, OBJECTIVE_STATUS_ACCOMPLISHED );
GameObject * handOfNod = Commands->Find_Object ( M01_HAND_OF_NOD_JDG );
float handOfNodHealth = Commands->Get_Health ( handOfNod );
if (handOfNodHealth > 0)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_ANNOUNCE_REINFORCEMENTS_JDG, 3 );
float delayTimer_A = Commands->Get_Random ( 0, 2 );
Commands->Send_Custom_Event( obj, obj, 0, M01_SEND_HON_REINFORCEMENTS_A_JDG, delayTimer_A );
float delayTimer_B = Commands->Get_Random ( 2, 4 );
Commands->Send_Custom_Event( obj, obj, 0, M01_SEND_HON_REINFORCEMENTS_B_JDG, delayTimer_B );
}
}
break;
case M01_COMMCENTER_SAMSITE_HAS_BEEN_DESTROYED_JDG://Comm Center sam site has been destroyed--duh!
{
commcenter_sam_destroyed = true;
if (commcenter_sam_objective_active == true)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_PASS_COMM_SAM_OBJECTIVE_JDG, 0 );
}
if (player_has_unlocked_pen == true)
{
unlocked_gate_conv = Commands->Create_Conversation( "M01_Remove_Unlock_Gate_Objective", 100, 1000, false);
Commands->Join_Conversation( NULL, unlocked_gate_conv, false, false );
Commands->Start_Conversation( unlocked_gate_conv, unlocked_gate_conv );
Commands->Monitor_Conversation( obj, unlocked_gate_conv );
}
//Commands->Send_Custom_Event( obj, obj, 0, M01_ANNOUNCE_REINFORCEMENTS_JDG, 5 );
Commands->Send_Custom_Event( obj, obj, 0, M01_SEND_COMMCENTER_REINFORCEMENTS_JDG, 10 );
}
break;
case M01_ANNOUNCE_AIRSTRIKE_JDG://EVA announces incoming airstrike
{
Commands->Create_Sound ( "00-N036E", Vector3 (0,0,0), obj);
}
break;
case M01_ANNOUNCE_REINFORCEMENTS_JDG://EVA announces incoming reinforcements
{
Commands->Create_Sound ( "00-N180E", Vector3 (0,0,0), obj);
}
break;
case M01_SEND_COMMCENTER_REINFORCEMENTS_JDG://Starting Elie drop off animation at Comm Center
{
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-296.388f, 497.455f, 29.122f));
Commands->Set_Facing(chinook_obj1, -130.00f);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1I_GDI_CommCenter_TroopDrop.txt");
}
break;
case M01_SEND_HON_REINFORCEMENTS_A_JDG://Starting Elie drop off animation at Hand of Nod
{
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-147.1f, 558.8f, 4.4f));
Commands->Set_Facing(chinook_obj1, -130.00f);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1I_GDI_HON_TroopDrop01a.txt");
}
break;
case M01_SEND_HON_REINFORCEMENTS_B_JDG://Starting Elie drop off animation at Hand of Nod
{
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-154.679f, 519.009f, 4.97f));
Commands->Set_Facing(chinook_obj1, 130.00f);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1I_GDI_HON_TroopDrop01b.txt");
}
break;
case M01_HON_CHINOOK_GUY_HAS_BEEN_KILLED_JDG://a reinforcement guy's been killed--spawn more if needed
{
m01_hon_chinook_guys_killed++;
if (m01_hon_chinook_guys_killed == 3)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_ANNOUNCE_REINFORCEMENTS_JDG, 3 );
float pick_a_chinook = Commands->Get_Random ( 0.5f, 2.5f );
if (pick_a_chinook >= 0.5 && pick_a_chinook < 1.5)
{
float delayTimer = Commands->Get_Random ( 0, 2 );
Commands->Send_Custom_Event( obj, obj, 0, M01_SEND_HON_REINFORCEMENTS_A_JDG, delayTimer );
}
else
{
float delayTimer = Commands->Get_Random ( 0, 2 );
Commands->Send_Custom_Event( obj, obj, 0, M01_SEND_HON_REINFORCEMENTS_B_JDG, delayTimer );
}
}
}
break;
case M01_PLAYER_IS_APPROACHING_CHURCH_JDG://cue church actors
{
if (m01_bridgeWeather_is_Set == false)
{
m01_bridgeWeather_is_Set = true;
//Commands->Set_Clouds (0.75f, 0.75f, 30);
Commands->Set_Wind (60, 3.0f, 0.5f, 15);
Commands->Set_Rain (0.75f, 30, false);
Commands->Set_Lightning (0.5f, 0.25f, 0.75f, 10, 0.33f, 5);
Vector3 spawnLocation (-98.937f, 380.721f, 20.022f);
GameObject * harvester = Commands->Create_Object ( "Nod_Harvester", spawnLocation );
Commands->Attach_Script(harvester, "M01_HarvesterScript_New_JDG", "");
GameObject * chemGuy01 = Commands->Find_Object ( 103270 );
if (chemGuy01 != NULL)
{
Commands->Send_Custom_Event( obj, chemGuy01, 0, M01_START_ACTING_JDG, 5 );
}
}
int church_upadate = Commands->Create_Conversation( "M01_Add_Church_Objective", 100, 1000, false);
Commands->Join_Conversation( NULL, church_upadate, false, false );
//Commands->Join_Conversation( STAR, church_upadate, false, false );
Commands->Start_Conversation( church_upadate, 0 );
Commands->Send_Custom_Event( obj, obj, 0, M01_ADD_CHURCH_OBJECTIVE_JDG, 8 );
GameObject * loveshackGuard = Commands->Find_Object ( M01_CHURCH_LOVESHACK_MINIGUNNER_ID );
if (loveshackGuard != NULL)
{
Commands->Send_Custom_Event( obj, loveshackGuard, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * loveshackNun = Commands->Find_Object ( M01_CHURCH_LOVESHACK_NUN_ID );
if (loveshackNun != NULL)
{
Commands->Send_Custom_Event( obj, loveshackNun, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * exteriorGuard = Commands->Find_Object ( M01_CHURCH_EXTERIOR_MINIGUNNER_ID );
if (exteriorGuard != NULL)
{
Commands->Send_Custom_Event( obj, exteriorGuard, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * balconyGuard = Commands->Find_Object ( M01_CHURCH_BALCONY_MINIGUNNER_ID );
if (balconyGuard != NULL)
{
Commands->Send_Custom_Event( obj, balconyGuard, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * rectoryGuard = Commands->Find_Object ( M01_CHURCH_GUARD_MINIGUNNER_ID );
if (rectoryGuard != NULL)
{
Commands->Send_Custom_Event( obj, rectoryGuard, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * churchNun = Commands->Find_Object ( M01_CHURCH_INTERIOR_NUN_ID );
if (churchNun != NULL)
{
Commands->Send_Custom_Event( obj, churchNun, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * churchPriest = Commands->Find_Object ( M01_CHURCH_PRIEST_ID );
if (churchPriest != NULL)
{
Commands->Send_Custom_Event( obj, churchPriest, 0, M01_START_ACTING_JDG, 0 );
}
}
break;
case M01_ADD_CHURCH_OBJECTIVE_JDG://Loveshack guard is dead--let nun know
{
Commands->Add_Objective( M01_CHURCH_OBJECTIVE_JDG, OBJECTIVE_TYPE_SECONDARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Secondary_M01_05, NULL, IDS_Enc_Obj_Secondary_M01_05 );
GameObject * pogController = Commands->Find_Object ( M01_MISSION_POG_CONTROLLER_JDG );
if (pogController != NULL)
{
Commands->Send_Custom_Event( obj, pogController, M01_ADD_OBJECTIVE_POG_JDG, M01_CHURCH_OBJECTIVE_JDG, 0 );
}
GameObject * loveshackNun = Commands->Find_Object ( M01_CHURCH_LOVESHACK_NUN_ID );
if (loveshackNun != NULL)
{
Commands->Set_Obj_Radar_Blip_Shape ( loveshackNun, RADAR_BLIP_SHAPE_OBJECTIVE );
Commands->Set_Obj_Radar_Blip_Color ( loveshackNun, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
}
GameObject * churchNun = Commands->Find_Object ( M01_CHURCH_INTERIOR_NUN_ID );
if (churchNun != NULL)
{
Commands->Set_Obj_Radar_Blip_Shape ( churchNun, RADAR_BLIP_SHAPE_OBJECTIVE );
Commands->Set_Obj_Radar_Blip_Color ( churchNun, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
}
GameObject * churchPriest = Commands->Find_Object ( M01_CHURCH_PRIEST_ID );
if (churchPriest != NULL)
{
Commands->Set_Obj_Radar_Blip_Shape ( churchPriest, RADAR_BLIP_SHAPE_OBJECTIVE );
Commands->Set_Obj_Radar_Blip_Color ( churchPriest, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
}
}
break;
case M01_CLEAR_FIRST_NOD_COMMANDER_PASS_JDG://guard tower commander is destroyed--clear objective
{
Commands->Set_Objective_Status( M01_FIRST_NOD_COMMANDER_OBJECTIVE_JDG, OBJECTIVE_STATUS_ACCOMPLISHED );
firstNodCommanderKilled = true;
}
break;
case M01_CLEAR_HON_OBJECTIVE_PASS_JDG://HON is destroyed--clear objective
{
Commands->Set_Objective_Status( M01_HON_OBJECTIVE_JDG, OBJECTIVE_STATUS_ACCOMPLISHED );
}
break;
case M01_CLEAR_CHURCH_OBJECTIVE_PASS_JDG://player has rescued clergy
{
Commands->Set_Objective_Status( M01_CHURCH_OBJECTIVE_JDG, OBJECTIVE_STATUS_ACCOMPLISHED );
}
break;
case M01_CLEAR_CHURCH_OBJECTIVE_FAIL_JDG://player has rescued clergy
{
Commands->Set_Objective_Status( M01_CHURCH_OBJECTIVE_JDG, OBJECTIVE_STATUS_FAILED );
}
break;
case M01_LOVESHACK_GUARD_IS_DEAD_JDG://Loveshack guard is dead--let nun know
{
loveshack_guard_is_dead = true;
GameObject * loveshackNun = Commands->Find_Object ( M01_CHURCH_LOVESHACK_NUN_ID );
if (loveshackNun != NULL)
{
float delayTimer = Commands->Get_Random ( 0, 2 );
Commands->Send_Custom_Event( obj, loveshackNun, 0, M01_LOVESHACK_GUARD_IS_DEAD_JDG, delayTimer );
}
if ((loveshack_guard_is_dead == true) && (church_guard_is_dead == true) && (church_pickup_chinook_is_on_its_way == false))
{
GameObject * churchEvacController = Commands->Find_Object ( 103394 );
if (churchEvacController != NULL)
{
Commands->Send_Custom_Event( obj, churchEvacController, 0, M01_START_ACTING_JDG, 3 );//giving clearance to havoc exit zone for conversation
}
church_pickup_chinook_is_on_its_way = true;
}
}
break;
case M01_CHURCH_GUARD_IS_DEAD_JDG://inner guard is dead--let nuns & prist know
{
church_guard_is_dead = true;
GameObject * churchNun = Commands->Find_Object ( M01_CHURCH_INTERIOR_NUN_ID );
if (churchNun != NULL)
{
float delayTimer = Commands->Get_Random ( 0, 2 );
Commands->Send_Custom_Event( obj, churchNun, 0, M01_CHURCH_GUARD_IS_DEAD_JDG, delayTimer );
}
GameObject * churchPriest = Commands->Find_Object ( M01_CHURCH_PRIEST_ID );
if (churchPriest != NULL)
{
float delayTimer = Commands->Get_Random ( 0, 2 );
Commands->Send_Custom_Event( obj, churchPriest, 0, M01_CHURCH_GUARD_IS_DEAD_JDG, delayTimer );
}
if ((loveshack_guard_is_dead == true) && (church_guard_is_dead == true) && (church_pickup_chinook_is_on_its_way == false))
{
church_pickup_chinook_is_on_its_way = true;
GameObject * churchEvacController = Commands->Find_Object ( 103394 );
if (churchEvacController != NULL)
{
Commands->Send_Custom_Event( obj, churchEvacController, 0, M01_START_ACTING_JDG, 3 );//giving clearance to havoc exit zone for conversation
}
}
}
break;
case M01_CHURCH_CLERGY_HAS_BOARDED_JDG://when all clergy have boarded--tell chinook to take off
{
if (Commands->Find_Object ( M01_CHURCH_LOVESHACK_NUN_ID ) || (Commands->Find_Object ( M01_CHURCH_INTERIOR_NUN_ID )) || (Commands->Find_Object ( m01_church_interior_nun02_ID )) || (Commands->Find_Object ( M01_CHURCH_PRIEST_ID )))
{
Commands->Send_Custom_Event( obj, obj, 0, M01_CHURCH_CLERGY_HAS_BOARDED_JDG, 2 );
}
else
{
if ((clergy_are_boarding == false))
{
clergy_are_boarding = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_CLEAR_CHURCH_OBJECTIVE_PASS_JDG, 2 );
}
}
}
break;
case M01_CARD_CARRIER_HAS_BEEN_KILLED_JDG://a card carrier has been killed--drop necessary card
{
bool playerHasLevel01KeyCard = Commands->Has_Key( STAR, 1 );;
bool playerHasLevel02KeyCard = Commands->Has_Key( STAR, 2 );;
bool playerHasLevel03KeyCard = Commands->Has_Key( STAR, 3 );;
if (playerHasLevel01KeyCard == false)
{
Vector3 spawn_location = Commands->Get_Position ( sender );
spawn_location.Z = spawn_location.Z + 0.75f;
GameObject * keycard01 = Commands->Create_Object ( "Level_01_Keycard", spawn_location );
Commands->Attach_Script(keycard01, "M01_KeyCard01_Script_JDG", "");
}
else if (playerHasLevel02KeyCard == false)
{
Vector3 spawn_location = Commands->Get_Position ( sender );
spawn_location.Z = spawn_location.Z + 0.75f;
Commands->Create_Object ( "Level_02_Keycard", spawn_location );
}
else if (playerHasLevel03KeyCard == false)
{
Vector3 spawn_location = Commands->Get_Position ( sender );
spawn_location.Z = spawn_location.Z + 0.75f;
Commands->Create_Object ( "Level_03_Keycard", spawn_location );
}
else
{
Vector3 spawn_location = Commands->Get_Position ( sender );
spawn_location.Z = spawn_location.Z + 0.75f;
Commands->Create_Object ( "POW_Health_100", spawn_location );
}
}
break;
case M01_GDI_GUY_HAS_BEEN_POKED_JDG://player has poked a GDI soldier--if player is alone assign escort
{
int poked_guys_ID = Commands->Get_ID ( sender );
if (player_has_an_escort == false)
{
Commands->Send_Custom_Event( obj, sender, 0, M01_PLEASE_START_ESCORTING_PLAYER_JDG, 0 );
players_escorts_ID = poked_guys_ID;
player_has_an_escort = true;
}
else if (player_has_an_escort == true)
{
if (poked_guys_ID == players_escorts_ID)//this guy is escorting player--tell him to hold position
{
Commands->Send_Custom_Event( obj, sender, 0, M01_PLEASE_STOP_ESCORTING_PLAYER_JDG, 0 );
player_has_an_escort = false;
}
}
}
break;
case M01_PLAYERS_ESCORT_HAS_BEEN_KILLED_JDG://player's escort has been killed--reset escort parameters
{
player_has_an_escort = false;
}
break;
case M01_PLAYER_IS_ATTACKING_ME_JDG://if player is being escorted--tell escort who havoc's target is
{
if (player_has_an_escort == true)
{
havocs_targets_ID = Commands->Get_ID ( sender );
float delayTimer = Commands->Get_Random ( 0, 1 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( players_escorts_ID ), M01_PLAYER_IS_ATTACKING_ME_JDG, havocs_targets_ID, delayTimer );
}
}
break;
case M01_PLAYER_IS_LEAVING_CHURCH_01_JDG://if havoc has escort--tell them to go somewhere else
{
if (player_has_an_escort == true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( players_escorts_ID ), 0, M01_PLAYER_IS_LEAVING_CHURCH_01_JDG, 0 );
}
}
break;
case M01_PLAYER_IS_LEAVING_CHURCH_02_JDG://if havoc has escort--tell them to go somewhere else
{
if (player_has_an_escort == true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( players_escorts_ID ), 0, M01_PLAYER_IS_LEAVING_CHURCH_02_JDG, 0 );
}
}
break;
case M01_PLAYER_IS_LEAVING_HON_01_JDG://if havoc has escort--tell them to go somewhere else
{
if (player_has_an_escort == true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( players_escorts_ID ), 0, M01_PLAYER_IS_LEAVING_HON_01_JDG, 0 );
}
}
break;
case M01_PLAYER_IS_LEAVING_HON_02_JDG://if havoc has escort--tell them to go somewhere else
{
if (player_has_an_escort == true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( players_escorts_ID ), 0, M01_PLAYER_IS_LEAVING_HON_02_JDG, 0 );
}
}
break;
case M01_PLAYER_IS_CROSSING_THE_BRIDGE_JDG://havoc is crossing bridge for first time--cue driveby actors
{
if (m01_bridgeWeather_is_Set == false)
{
m01_bridgeWeather_is_Set = true;
//Commands->Set_Clouds (0.75f, 0.75f, 30);
Commands->Set_Wind (60, 3.0f, 0.5f, 15);
Commands->Set_Rain (0.75f, 30, false);
Commands->Set_Lightning (0.5f, 0.25f, 0.75f, 10, 0.33f, 5);
Vector3 spawnLocation (-98.937f, 380.721f, 20.022f);
GameObject * harvester = Commands->Create_Object ( "Nod_Harvester", spawnLocation );
Commands->Attach_Script(harvester, "M01_HarvesterScript_New_JDG", "");
GameObject * chemGuy01 = Commands->Find_Object ( 103270 );
if (chemGuy01 != NULL)
{
Commands->Send_Custom_Event( obj, chemGuy01, 0, M01_START_ACTING_JDG, 5 );
}
}
Commands->Send_Custom_Event( obj, obj, 0, M01_SEND_CHURCH_CHINOOK_JDG, 10 );
GameObject * churchAreaCommander = Commands->Find_Object ( M01_CHURCHAREA_NOD_COMMANDER_JDG );
if (churchAreaCommander != NULL)
{
Commands->Send_Custom_Event( obj, churchAreaCommander, 0, M01_START_ACTING_JDG, 0 );
}
}
break;
case M01_PLAYER_IS_CROSSING_THE_BRIDGE_VIA_CAVE_JDG://havoc is crossing bridge for first time--cue actors driveby actors
{
if (m01_bridgeWeather_is_Set == false)
{
m01_bridgeWeather_is_Set = true;
//Commands->Set_Clouds (0.75f, 0.75f, 30);
Commands->Set_Wind (60, 3.0f, 0.5f, 15);
Commands->Set_Rain (0.75f, 30, false);
Commands->Set_Lightning (0.5f, 0.25f, 0.75f, 10, 0.33f, 5);
Vector3 spawnLocation (-98.937f, 380.721f, 20.022f);
GameObject * harvester = Commands->Create_Object ( "Nod_Harvester", spawnLocation );
Commands->Attach_Script(harvester, "M01_HarvesterScript_New_JDG", "");
GameObject * chemGuy01 = Commands->Find_Object ( 103270 );
if (chemGuy01 != NULL)
{
Commands->Send_Custom_Event( obj, chemGuy01, 0, M01_START_ACTING_JDG, 5 );
}
}
Commands->Send_Custom_Event( obj, obj, 0, M01_SEND_CHURCH_CHINOOK_JDG, 10 );
GameObject * churchAreaCommander = Commands->Find_Object ( M01_CHURCHAREA_NOD_COMMANDER_JDG );
if (churchAreaCommander != NULL)
{
Commands->Send_Custom_Event( obj, churchAreaCommander, 0, M01_START_ACTING_JDG, 0 );
}
}
break;
case M01_SPAWN_TIB_CAVE_HELICOPTER_JDG://player is in tib cave--spawn surprise helicopter
{
GameObject * m01_tiberium_cave_helicopter = Commands->Create_Object ( "NOD_Apache", Vector3(-40.708f, 375.387f, 30.275f) );
Commands->Set_Facing ( m01_tiberium_cave_helicopter, -30 );
Commands->Attach_Script(m01_tiberium_cave_helicopter, "M01_Tiberium_Cave_Helicopter_JDG", "");
}
break;
case M01_ANNOUNCE_HON_OBJECTIVE_JDG://player is approaching hand of nod--give objective
{
if (m01_nodBase_weather_is_Set == false)
{
m01_nodBase_weather_is_Set = true;
//Commands->Set_Clouds (1.0f, 1.0f, 15);
Commands->Set_Wind (60, 5.0f, 1.0f, 15);
Commands->Set_Rain (1.0f, 15, false);
Commands->Set_Lightning (0.5f, 0, 0.25f, 0, 1, 15);
}
int hand_of_nod_conv = Commands->Create_Conversation( "M01_Add_HON_Objective", 100, 1000, false);
Commands->Join_Conversation( NULL, hand_of_nod_conv, false, false );
Commands->Start_Conversation( hand_of_nod_conv, 0 );
Commands->Send_Custom_Event( obj, obj, 0, M01_ADD_HON_OBJECTIVE_JDG, 10 );
}
break;
case M01_ADD_HON_OBJECTIVE_JDG://adding objective
{
Commands->Add_Objective( M01_HON_OBJECTIVE_JDG, OBJECTIVE_TYPE_SECONDARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Secondary_M01_07, NULL, IDS_Enc_Obj_Secondary_M01_07 );
Commands->Set_Objective_Radar_Blip( M01_HON_OBJECTIVE_JDG, Vector3 (-179.3f, 541.9f, 3.518f) );
GameObject * pogController = Commands->Find_Object ( M01_MISSION_POG_CONTROLLER_JDG );
if (pogController != NULL)
{
Commands->Send_Custom_Event( obj, pogController, M01_ADD_OBJECTIVE_POG_JDG, M01_HON_OBJECTIVE_JDG, 0 );
}
}
break;
case M01_KILL_THE_COMM_JDG://apply damage to COMM CENTER
{
if (comm_center_state != DESTROYED)
{
Commands->Apply_Damage( Commands->Find_Object ( M01_COMM_CENTER_JDG ), 100000000, "BlamoKiller", obj );
}
}
break;
case M01_KILL_THE_HON_JDG://apply damage to HON
{
if (hand_of_nod_state != DESTROYED)
{
Commands->Apply_Damage( Commands->Find_Object ( M01_HAND_OF_NOD_JDG ), 100000000, "BlamoKiller", obj );
}
}
break;
case M01_PLAYER_HAS_POKED_COMM_CENTER_PCT_JDG:
{
if (player_has_unlocked_pen == false)//player is poking PCT--play EVA messages
{
eva_comm_center_line_01 = Commands->Create_Sound ( "00-N000E", Vector3 (0,0,0), obj );//accessing
Commands->Monitor_Sound ( obj, eva_comm_center_line_01 );
//Commands->Send_Custom_Event( obj, obj, 0, M01_CLEAR_UNLOCK_GATE_OBJECTIVE_JDG, 0 );
//player_has_unlocked_pen = true;
}
}
break;
case M01_PLAYER_HAS_POKED_PEN_GATE_JDG:
{
if (player_has_unlocked_pen != true)
{
if (first_time_poking_gate_lock == true)
{
first_time_poking_gate_lock = false;
int prisoner_conv = Commands->Create_Conversation( "M01_Add_Unlock_Gate_Objective", 100, 1000, false);
Commands->Join_Conversation( NULL, prisoner_conv, false, false );
Commands->Start_Conversation( prisoner_conv, prisoner_conv );
}
else
{
Commands->Create_Sound ( "00-N008E", Vector3 (0,0,0), obj );//access denied
}
}
else if (gate_objective_done == false)
{
gate_objective_done = true;
Commands->Set_Objective_Status( M01_OPEN_THE_GATE_JDG, OBJECTIVE_STATUS_ACCOMPLISHED );
Commands->Static_Anim_Phys_Goto_Last_Frame (M01_COMMCENTER_DETENTION_GATE_JDG, NULL );
//Vector3 gatePosition = Commands->Get_Position ( Commands->Find_Object ( M01_COMMCENTER_DETENTION_GATE_JDG ) );
//Vector3 gatePosition = Commands->Get_Position ( STAR );
Vector3 gatePosition (-313.060f, 575.220f, 28.513f);
Commands->Create_Sound ( "Gate_Down_01", gatePosition, obj );
if (Commands->Find_Object ( M01_COMMCENTER_SAM_JDG ))
{
Commands->Create_Logical_Sound ( obj, M01_DETENTION_GATE_IS_DOWN_JDG, Vector3 (-315.383f, 572.805f, 27.623f), 50.0f );
Commands->Send_Custom_Event( obj, obj, 0, M01_ANNOUNCE_COMMCENTER_SAM_OBJECTIVE_JDG, 0 );
}
else
{
Commands->Create_Logical_Sound ( obj, M01_DETENTION_GATE_DOWN_SAM_DEAD_JDG, Vector3 (-315.383f, 572.805f, 27.623f), 50.0f );
}
if (prisoners_are_freed == false)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_CLEAR_PRISONERS_PASS_JDG, 0 );
prisoners_are_freed = true;
}
}
}
break;
case M01_ANNOUNCE_COMMCENTER_SAM_OBJECTIVE_JDG:
{
int comm_sam_conv = Commands->Create_Conversation( "M01_Add_Comm_SAM_Objective", 100, 1000, false);
Commands->Join_Conversation( NULL, comm_sam_conv, false, false );
//Commands->Join_Conversation( STAR, comm_sam_conv, false, false );
Commands->Start_Conversation( comm_sam_conv, 0 );
Commands->Send_Custom_Event( obj, obj, 0, M01_ADD_COMM_SAM_OBJECTIVE_JDG, 6 );
commcenter_sam_objective_active = true;
}
break;
case M01_ADD_COMM_SAM_OBJECTIVE_JDG:
{
GameObject * commSamSite = Commands->Find_Object ( M01_COMMCENTER_SAM_JDG );
if (commSamSite != NULL)
{
Commands->Add_Objective( M01_COMM_SAM_OBJECTIVE_JDG, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M01_04, NULL, IDS_Enc_Obj_Primary_M01_04 );
Commands->Set_Objective_Radar_Blip_Object( M01_COMM_SAM_OBJECTIVE_JDG, commSamSite );
GameObject * pogController = Commands->Find_Object ( M01_MISSION_POG_CONTROLLER_JDG );
if (pogController != NULL)
{
Commands->Send_Custom_Event( obj, pogController, M01_ADD_OBJECTIVE_POG_JDG, M01_COMM_SAM_OBJECTIVE_JDG, 0 );
}
}
}
break;
case M01_ANNOUNCE_UNLOCK_GATE_OBJECTIVE_JDG:
{
int unlock_gate_conv = Commands->Create_Conversation( "M01_Add_Unlock_Gate_Objective", 100, 1000, false);
Commands->Join_Conversation( NULL, unlock_gate_conv, false, false );
Commands->Start_Conversation( unlock_gate_conv, 0 );
}
break;
case M01_ADD_UNLOCK_GATE_OBJECTIVE_JDG:
{
Vector3 pogMarker (-296.505f, 521.090f, 27.090f);
Commands->Add_Objective( M01_UNLOCK_GATE_OBJECTIVE_JDG, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M01_02, NULL, IDS_Enc_Obj_Primary_M01_02 );
Commands->Set_Objective_HUD_Info_Position( M01_UNLOCK_GATE_OBJECTIVE_JDG, 93, "POG_M01_1_02.tga", IDS_POG_HACK, pogMarker );
unlock_gate_objective_active = true;
//Vector3 green (0,1,0);
Commands->Set_HUD_Help_Text ( IDS_Enc_ObjTitle_Primary_M01_02, TEXT_COLOR_OBJECTIVE_PRIMARY );
GameObject * invisibleCrate = Commands->Find_Object ( 107809 );
if (invisibleCrate != NULL)
{
Commands->Send_Custom_Event( obj, invisibleCrate, 0, M01_COMM_SAM_OBJECTIVE_JDG, 0 );
}
}
break;
case M01_CLEAR_UNLOCK_GATE_OBJECTIVE_JDG:
{
if (commcenter_sam_destroyed == true)
{
unlocked_gate_conv = Commands->Create_Conversation( "M01_Remove_Unlock_Gate_Objective", 100, 1000, false);
Commands->Join_Conversation( NULL, unlocked_gate_conv, false, false );
Commands->Start_Conversation( unlocked_gate_conv, unlocked_gate_conv );
Commands->Monitor_Conversation( obj, unlocked_gate_conv );
}
else if (commcenter_sam_destroyed == false)//
{
Commands->Send_Custom_Event( obj, obj, 0, M01_ANNOUNCE_COMMCENTER_SAM_OBJECTIVE_JDG, 0 );
}
if (unlock_gate_objective_active == true)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_PASS_UNLOCK_GATE_OBJECTIVE_JDG, 6 );
}
}
break;
case M01_PASS_UNLOCK_GATE_OBJECTIVE_JDG:
{
Commands->Set_Objective_Status( M01_UNLOCK_GATE_OBJECTIVE_JDG, OBJECTIVE_STATUS_ACCOMPLISHED );
}
break;
case M01_PASS_COMM_SAM_OBJECTIVE_JDG:
{
Commands->Set_Objective_Status( M01_COMM_SAM_OBJECTIVE_JDG, OBJECTIVE_STATUS_ACCOMPLISHED );
commcenter_sam_objective_active = false;
if (prisoners_are_freed == true)
{
Commands->Create_Logical_Sound ( obj, M01_DETENTION_GATE_DOWN_SAM_DEAD_JDG, Vector3 (-315.383f, 572.805f, 27.623f), 50.0f );
Commands->Send_Custom_Event( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 60 );
}
}
break;
case M01_SCRAMBLE_THE_RADAR_JDG:
{
if (players_first_time_by_commcenter == true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( 103099 ), 0, M01_START_ACTING_JDG, 0 );//telling propaganda to start up
players_first_time_by_commcenter = false;
int radar_conv = Commands->Create_Conversation( "M01_Radar_Scrambled_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, radar_conv, false, false, false );
Commands->Join_Conversation( NULL, radar_conv, false, false, false );
Commands->Start_Conversation( radar_conv, radar_conv );
}
if ((radar_is_scrambled == false) && (comm_center_state != DESTROYED) )
{
radar_is_scrambled = true;
Commands->Enable_Radar ( false );
}
}
break;
case M01_UNSCRAMBLE_THE_RADAR_JDG:
{
if (radar_is_scrambled == true)
{
Commands->Enable_Radar ( true);
radar_is_scrambled = false;
}
}
break;
case M01_ANNOUNCE_PRISONER_OBJECTIVE_JDG:
{
int prisoner_conv = Commands->Create_Conversation( "M01_Add_Unlock_Gate_Objective", 100, 1000, false);
Commands->Join_Conversation( NULL, prisoner_conv, false, false );
Commands->Start_Conversation( prisoner_conv, prisoner_conv );
Commands->Send_Custom_Event( obj, obj, 0, M01_ADD_UNLOCK_GATE_OBJECTIVE_JDG, 10 );
Commands->Set_Objective_Status( M01_PRISONER_OBJECTIVE_JDG, OBJECTIVE_STATUS_ACCOMPLISHED );
}
break;
case M01_CLEAR_PRISONERS_PASS_JDG://prisoners have been freed
{
Commands->Send_Custom_Event( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 0 );
}
break;
case M01_DO_END_MISSION_CHECK_JDG://see if any primary objectives are active
{
if ( (commcenter_sam_objective_active != true) && (prisoners_are_freed == true) )
{
//Commands->Set_Clouds (0, 0, 5);
Commands->Set_Wind (0, 0, 0, 5);
Commands->Set_Rain (0, 5, false);
Commands->Set_Lightning (0, 0, 0, 0, 0, 5);
if (final_conv_played == false)
{
final_conv_played = true;
//GameObject * evacController01 = Commands->Find_Object ( 103380 );
//GameObject * evacController02 = Commands->Find_Object ( 103381 );
//if (evacController01 != NULL)
//{
// Commands->Send_Custom_Event( obj, evacController01, 0, M01_START_ACTING_JDG, 0 );
//}
//if (evacController02 != NULL)
//{
// Commands->Send_Custom_Event( obj, evacController02, 0, M01_START_ACTING_JDG, 0 );
//}
GameObject * detentionPenCiv01 = Commands->Find_Object ( M01_DETENTION_CIVILIAN_01_JDG );
GameObject * detentionPenCiv02 = Commands->Find_Object ( M01_DETENTION_CIVILIAN_02_JDG );
GameObject * detentionPenCiv03 = Commands->Find_Object ( M01_DETENTION_CIVILIAN_03_JDG );
GameObject * detentionPenGDI01 = Commands->Find_Object ( M01_DETENTION_GDI_GUY_01_JDG );
GameObject * detentionPenGDI02 = Commands->Find_Object ( M01_DETENTION_GDI_GUY_02_JDG );
GameObject * detentionPenGDI03 = Commands->Find_Object ( M01_DETENTION_GDI_GUY_03_JDG );
if (detentionPenCiv01 != NULL)
{
Commands->Destroy_Object ( detentionPenCiv01 );
}
if (detentionPenCiv02 != NULL)
{
Commands->Destroy_Object ( detentionPenCiv02 );
}
if (detentionPenCiv03 != NULL)
{
Commands->Destroy_Object ( detentionPenCiv03 );
}
if (detentionPenGDI01 != NULL)
{
Commands->Destroy_Object ( detentionPenGDI01 );
}
if (detentionPenGDI02 != NULL)
{
Commands->Destroy_Object ( detentionPenGDI02 );
}
if (detentionPenGDI03 != NULL)
{
Commands->Destroy_Object ( detentionPenGDI03 );
}
Vector3 newPosition (51.023f, -35.918f, 0.246f);
Commands->Set_Position ( STAR, newPosition );
Commands->Set_Is_Rendered( obj, false );
GameObject *controller1 = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(controller1, "Test_Cinematic", "X1Z_Finale.txt");
Commands->Send_Custom_Event( obj, obj, 0, M01_END_MISSION_PASS_JDG, 20 );
}
}
}
break;
case M01_END_MISSION_PASS_JDG://see if any primary objectives are active
{
GameObject * propagandaController = Commands->Find_Object ( 103099 );
if (propagandaController != NULL)
{
Commands->Send_Custom_Event( obj, propagandaController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
Commands->Mission_Complete ( true );
}
break;
case M01_SPAWN_WHACK_A_MOLE_GUY_JDG:
{
GameObject * m01_whack_a_mole_guy = Commands->Create_Object ( "Nod_MiniGunner_1Off", Vector3(-198.088f, 525.828f, 10.035f) );
Commands->Attach_Script(m01_whack_a_mole_guy, "M01_Whack_A_Mole_Minigunner_JDG", "");
m01_whack_a_mole_guy_ID = Commands->Get_ID ( m01_whack_a_mole_guy );
}
break;
case M01_CHANGE_WHACK_A_MOLE_GUY_JDG:
{
GameObject * whackAmole = Commands->Find_Object ( m01_whack_a_mole_guy_ID );
if (whackAmole != NULL)
{
Commands->Send_Custom_Event( obj, whackAmole, 0, M01_CHANGE_WHACK_A_MOLE_GUY_JDG, 0 );
}
}
break;
case M01_HON_SPAWNS_MINIGUNNER_JDG:
{
if (hand_of_nod_state != DESTROYED)
{
m01_HON_SpawnRate = 21;
if (m01_hon_total_spawners_tally <= 6)
{
if ((m01_hon_spawned_guy_01_alive == false) && (players_location != INSIDE_HAND_OF_NOD))
{
GameObject * m01_hon_spawned_guy_01 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-212.6f, 541.1f, 4));
Commands->Attach_Script(m01_hon_spawned_guy_01, "M01_HON_Easy_Spawned_Guy_01_JDG", "");
m01_hon_spawned_guy_01_ID = Commands->Get_ID ( m01_hon_spawned_guy_01 );
m01_hon_spawned_guy_01_alive = true;
m01_hon_spawners_tally++;
m01_hon_total_spawners_tally++;
}
else if ((m01_hon_spawned_guy_02_alive == false) && (players_location != INSIDE_HAND_OF_NOD))
{
GameObject * m01_hon_spawned_guy_02 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-217.2f, 540.2f, 4) );
Commands->Attach_Script(m01_hon_spawned_guy_02, "M01_HON_Easy_Spawned_Guy_02_JDG", "");
m01_hon_spawned_guy_02_ID = Commands->Get_ID ( m01_hon_spawned_guy_02 );
m01_hon_spawned_guy_02_alive = true;
m01_hon_spawners_tally++;
m01_hon_total_spawners_tally++;
}
else if ((m01_hon_spawned_guy_03_alive == false) && (players_location != INSIDE_HAND_OF_NOD))
{
GameObject * m01_hon_spawned_guy_03 = Commands->Create_Object ( "Nod_FlameThrower_0", Vector3(-217.6f, 533.6f, 4));
Commands->Attach_Script(m01_hon_spawned_guy_03, "M01_HON_Easy_Spawned_Guy_03_JDG", "");
m01_hon_spawned_guy_03_ID = Commands->Get_ID ( m01_hon_spawned_guy_03 );
m01_hon_spawned_guy_03_alive = true;
m01_hon_spawners_tally++;
m01_hon_total_spawners_tally++;
}
}
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_HON_SPAWNS_MINIGUNNER_JDG, m01_HON_SpawnRate );
}
}
break;
case M01_HON_SPAWNER_IN_POSITION_JDG:
{
if (m01_hon_spawners_tally == 3)
{
GameObject * honSpawn01 = Commands->Find_Object ( m01_hon_spawned_guy_01_ID );
if (honSpawn01 != NULL)
{
Commands->Send_Custom_Event( obj, honSpawn01, 0, M01_HUNT_THE_PLAYER_JDG, 0 );
m01_hon_spawned_guy_01_alive = false;
m01_hon_spawned_guy_01_ID = NULL;
}
GameObject * honSpawn02 = Commands->Find_Object ( m01_hon_spawned_guy_02_ID );
if (honSpawn02 != NULL)
{
Commands->Send_Custom_Event( obj, honSpawn02, 0, M01_HUNT_THE_PLAYER_JDG, 0 );
m01_hon_spawned_guy_02_alive = false;
m01_hon_spawned_guy_02_ID = NULL;
}
GameObject * honSpawn03 = Commands->Find_Object ( m01_hon_spawned_guy_03_ID );
if (honSpawn03 != NULL)
{
Commands->Send_Custom_Event( obj, honSpawn03, 0, M01_HUNT_THE_PLAYER_JDG, 0 );
m01_hon_spawned_guy_03_alive = false;
m01_hon_spawned_guy_03_ID = NULL;
}
m01_hon_spawners_tally = 0;
}
}
break;
case M01_HON_SPAWNER_01_IS_DEAD_JDG:
{
m01_hon_spawned_guy_01_alive = false;
m01_hon_spawners_tally--;
}
break;
case M01_HON_SPAWNER_02_IS_DEAD_JDG:
{
m01_hon_spawned_guy_02_alive = false;
m01_hon_spawners_tally--;
}
break;
case M01_HON_SPAWNER_03_IS_DEAD_JDG:
{
m01_hon_spawned_guy_03_alive = false;
m01_hon_spawners_tally--;
}
break;
case M01_HON_SPAWNER_IS_DEAD_JDG:
{
m01_hon_total_spawners_tally--;
}
break;
case M01_CUE_LOVESHACK_NUN_CONVERSATION_JDG:
{
GameObject * loveshackNun = Commands->Find_Object ( M01_CHURCH_LOVESHACK_NUN_ID );
if (loveshackNun != NULL && (church_guard_is_dead != true))
{
if (loveshack_conv_playing == false)
{
loveshack_conv_playing = true;
loveshack_conv = Commands->Create_Conversation( "M01_Locke_ChurchReminder_Conversation", 45, 1000, true);
Commands->Join_Conversation( NULL, loveshack_conv, false, false );
//Commands->Join_Conversation( STAR, loveshack_conv, false, false );
Commands->Start_Conversation( loveshack_conv, loveshack_conv );
Commands->Monitor_Conversation( obj, loveshack_conv );
}
}
}
break;
case M01_CUE_PRIEST_CONVERSATION_JDG:
{
GameObject * priest = Commands->Find_Object ( M01_CHURCH_PRIEST_ID );
if (priest != NULL && (loveshack_guard_is_dead != true))
{
if (priest_conv_playing == false)
{
priest_conv_playing = true;
priest_conv = Commands->Create_Conversation( "M01_PriestReminder_Conversation", 100, 1000, false);
Commands->Join_Conversation( priest, priest_conv, false, true, true );
Commands->Join_Conversation( STAR, priest_conv, false, false, false );
Commands->Start_Conversation( priest_conv, priest_conv );
Commands->Monitor_Conversation( obj, priest_conv );
}
}
}
break;
case M01_CUE_INTERIOR_NUN_CONVERSATION_JDG:
{
GameObject * interiorNun = Commands->Find_Object ( M01_CHURCH_INTERIOR_NUN_ID );
if (interiorNun != NULL && (loveshack_guard_is_dead != true))
{
if (interior_nun_conv_playing == false)
{
interior_nun_conv_playing = true;
interior_nun_conv = Commands->Create_Conversation( "M01_Interior_Nun_Conversation", 100, 1000, false);
Commands->Join_Conversation( interiorNun, interior_nun_conv, false, true, true );
Commands->Join_Conversation( STAR, interior_nun_conv, false, false, false);
Commands->Start_Conversation( interior_nun_conv, interior_nun_conv);
Commands->Monitor_Conversation( obj, interior_nun_conv );
}
}
}
break;
case M01_TURRET_HAS_BEEN_DESTROYED_JDG:
{
GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
if (turret01 == NULL)
{
turret_01_is_dead = true;
}
GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if (turret02 == NULL)
{
turret_02_is_dead = true;
}
if ((turret_01_is_dead == true) && (turret_02_is_dead == true) )
{
Commands->Send_Custom_Event( obj, obj, 0, M01_END_TURRETS_OBJECTIVE_PASS_JDG, 0 );
}
}
break;
case M01_SPAWN_THE_MEDIUM_TANK_JDG:
{
if (medium_tank_spawned == false)
{
//Commands->Create_Sound ( "00-N180E", Vector3 (0,0,0), obj);
medium_tank_spawned = true;
//GameObject *controller1 = Commands->Create_Object("Invisible_Object", Vector3(-85.808f, 125.455f, 3.927f));
//Commands->Set_Facing ( controller1, 180 );
//Commands->Attach_Script(controller1, "Test_Cinematic", "X1I_GDI_Drop_MediumTank.txt");
//GameObject *controller2 = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
//Commands->Attach_Script(controller2, "Test_Cinematic", "X1D_Hover_MTank.txt");
}
}
break;
case M01_ADD_BARN_COMMANDER_OBJECTIVE_JDG:
{
GameObject * barnCommander = Commands->Find_Object ( M01_BARNAREA_NOD_COMMANDER_JDG );
if (barnCommander != NULL )
{
Commands->Add_Objective( M01_FIRST_NOD_COMMANDER_OBJECTIVE_JDG, OBJECTIVE_TYPE_SECONDARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Secondary_M01_01, NULL, IDS_Enc_Obj_Secondary_M01_01 );
Commands->Set_Obj_Radar_Blip_Shape ( barnCommander, RADAR_BLIP_SHAPE_OBJECTIVE ); // Set to -1 to reset default
Commands->Set_Obj_Radar_Blip_Color ( barnCommander, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
GameObject * pogController = Commands->Find_Object ( M01_MISSION_POG_CONTROLLER_JDG );
if (pogController != NULL)
{
Commands->Send_Custom_Event( obj, pogController, M01_ADD_OBJECTIVE_POG_JDG, M01_FIRST_NOD_COMMANDER_OBJECTIVE_JDG, 0 );
}
if (firstNodCommanderKilled == true)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_CLEAR_FIRST_NOD_COMMANDER_PASS_JDG, 3 );
}
}
}
break;
case M01_PLAYER_APPROACHING_BARN_AREA_JDG:
{
if (first_time_at_barn == true)
{
first_time_at_barn = false;
GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
if (turret01 != NULL)
{
Commands->Send_Custom_Event( obj, turret01, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if (turret02 != NULL)
{
Commands->Send_Custom_Event( obj, turret02, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * turretGunboat = Commands->Find_Object ( M01_TURRETBEACH_GUNBOAT_ID );
if (turretGunboat != NULL)
{
Commands->Send_Custom_Event( obj, turretGunboat, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * turretEngineer = Commands->Find_Object ( M01_TURRETBEACH_ENGINEER_ID );
if (turretEngineer != NULL)
{
Commands->Send_Custom_Event( obj, turretEngineer, 0, M01_START_ACTING_JDG, 0 );
}
Commands->Send_Custom_Event( obj, obj, 0, M01_ANNOUNCE_TURRETS_OBJECTIVE_JDG, 0 );
GameObject * barnAreaCommander = Commands->Find_Object ( M01_BARNAREA_NOD_COMMANDER_02_JDG );
if (barnAreaCommander != NULL)
{
Commands->Send_Custom_Event( obj, barnAreaCommander, 0, M01_START_ACTING_JDG, 5 );
}
//Commands->Send_Custom_Event( obj, obj, 0, M01_SEND_BARN_CHINOOK_JDG, 30 );
//Setting new weather values for barn area
//Commands->Set_Clouds (0.5f, 0.5f, 120);
Commands->Set_Wind (60, 1.0f, 0.5f, 120);
Commands->Set_Rain (0.5f, 120, false);
}
}
break;
case M01_PLAYER_IS_APPROACHING_TAILGUN_ALLEY_JDG:
{
GameObject * tailgunCommander = Commands->Find_Object ( M01_TAILGUNAREA_NOD_COMMANDER_JDG);
if (tailgunCommander != NULL)
{
Commands->Send_Custom_Event( obj, tailgunCommander, 0, M01_START_ACTING_JDG, 8 );
}
GameObject * artilleryController = Commands->Find_Object ( M01_GDIBASE_ARTILLERY_CONTROLLER_ID);
if (artilleryController != NULL)
{
Commands->Send_Custom_Event( obj, artilleryController, 0, M01_GOTO_IDLE_JDG, 0 );
}
GameObject * lightTank = Commands->Find_Object ( M01_TAILGUNAREA_NOD_LIGHTTANK_JDG);
if (lightTank != NULL)
{
Commands->Send_Custom_Event( obj, lightTank, 0, M01_START_ACTING_JDG, 0 );
}
}
break;
case M01_PLAYER_APPROACHING_GDI_BASE_AREA_JDG:
{
GameObject * artilleryController = Commands->Find_Object ( M01_GDIBASE_ARTILLERY_CONTROLLER_ID);
if (artilleryController != NULL)
{
Commands->Send_Custom_Event( obj, artilleryController, 0, M01_START_ACTING_JDG, 0 );
}
}
break;
case M01_ANNOUNCE_TURRETS_OBJECTIVE_JDG:
{
turrets_conv = Commands->Create_Conversation( "M01_Add_Turrets_Objective", 100, 1000, false);
Commands->Join_Conversation( NULL, turrets_conv, false, false );
Commands->Join_Conversation( NULL, turrets_conv, false, false );
Commands->Start_Conversation( turrets_conv, turrets_conv );
Commands->Monitor_Conversation( obj, turrets_conv );
}
break;
case M01_ADD_TURRETS_OBJECTIVE_JDG:
{
Commands->Add_Objective( M01_TURRETS_OBJECTIVE_JDG, OBJECTIVE_TYPE_SECONDARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Secondary_M01_02, NULL, IDS_Enc_Obj_Secondary_M01_02 );
GameObject * pogController = Commands->Find_Object ( M01_MISSION_POG_CONTROLLER_JDG );
if (pogController != NULL)
{
Commands->Send_Custom_Event( obj, pogController, M01_ADD_OBJECTIVE_POG_JDG, M01_TURRETS_OBJECTIVE_JDG, 0 );
}
GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
if (turret01 != NULL)
{
Commands->Set_Obj_Radar_Blip_Shape ( turret01, RADAR_BLIP_SHAPE_OBJECTIVE );
Commands->Set_Obj_Radar_Blip_Color ( turret01, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
}
GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if (turret02 != NULL)
{
Commands->Set_Obj_Radar_Blip_Shape ( turret02, RADAR_BLIP_SHAPE_OBJECTIVE );
Commands->Set_Obj_Radar_Blip_Color ( turret02, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
}
int c4_conv = Commands->Create_Conversation( "M01_Locke_Sending_C4_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, c4_conv, false, false );
Commands->Start_Conversation( c4_conv, c4_conv );
Vector3 airdropPosition (-82.786f, 113.665f, 2.221f);
GameObject *controller = Commands->Create_Object("Invisible_Object", airdropPosition);
Commands->Attach_Script(controller, "Test_Cinematic", "X1D_GTower_FlareDrop.txt");
}
break;
case M01_END_TURRETS_OBJECTIVE_FAIL_JDG:
{
if (turret_objective_over == false)
{
turret_objective_over = true;
Commands->Set_Objective_Status( M01_TURRETS_OBJECTIVE_JDG, OBJECTIVE_STATUS_FAILED );
}
}
break;
case M01_END_TURRETS_OBJECTIVE_PASS_JDG:
{
if (turret_objective_over == false)
{
turret_objective_over = true;
GameObject * gunboat = Commands->Find_Object ( M01_TURRETBEACH_GUNBOAT_ID );
if (gunboat != NULL)
{
Commands->Send_Custom_Event( obj, gunboat, 0, M01_END_TURRETS_OBJECTIVE_PASS_JDG, 0 );
int turrets_conv_02 = Commands->Create_Conversation( "M01_Remove_Turrets_Objective", 100, 1000, false);
Commands->Join_Conversation( NULL, turrets_conv_02, false, false );
Commands->Start_Conversation( turrets_conv_02, 0 );
Commands->Send_Custom_Event( obj, obj, 0, M01_PASS_TURRETS_OBJECTIVE_JDG, 5 );
}
else
{
//turrets_hummVee_conv = Commands->Create_Conversation( "M01_Locke_GiveHummVee_Conversation", 100, 1000, false);
//Commands->Join_Conversation( NULL, turrets_hummVee_conv, false, false );
//Commands->Join_Conversation( STAR, turrets_hummVee_conv, false, false );
//Commands->Start_Conversation( turrets_hummVee_conv, turrets_hummVee_conv );
//Commands->Monitor_Conversation( obj, turrets_hummVee_conv );
Commands->Send_Custom_Event( obj, obj, 0, M01_PASS_TURRETS_OBJECTIVE_JDG, 5 );
}
}
}
break;
case M01_PASS_TURRETS_OBJECTIVE_JDG:
{
Commands->Set_Objective_Status( M01_TURRETS_OBJECTIVE_JDG, OBJECTIVE_STATUS_ACCOMPLISHED );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_SPAWN_THE_MEDIUM_TANK_JDG, 0 );
}
break;
/*case M01_START_BARN_OBJECTIVE_JDG:
{
Commands->Send_Custom_Event( obj, obj, 0, M01_ANNOUNCE_BARN_OBJECTIVE_JDG, 0 );
}
break;
case M01_ANNOUNCE_BARN_OBJECTIVE_JDG:
{
if (barn_announcement_active == false)
{
int barn_conv = Commands->Create_Conversation( "M01_Add_Barn_Objective", 100, 1000, false);
Commands->Join_Conversation( NULL, barn_conv, false, false );
Commands->Join_Conversation( STAR, barn_conv, false, false );
Commands->Start_Conversation( barn_conv, 0 );
Commands->Send_Custom_Event( obj, obj, 0, M01_ADD_BARN_OBJECTIVE_JDG, 6 );
barn_announcement_active = true;
GameObject * barnObjectiveZone = Commands->Find_Object ( M01_BARN_OBJECTIVE_ZONE_ID );
if (barnObjectiveZone != NULL)
{
Commands->Destroy_Object ( barnObjectiveZone );
}
}
}
break;*/
/*case M01_ADD_BARN_OBJECTIVE_JDG:
{
if (barn_objective_active == false)
{
barn_objective_active = true;
Commands->Add_Objective( M01_BARN_OBJECTIVE_JDG, OBJECTIVE_TYPE_SECONDARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Secondary_M01_03, NULL, IDS_Enc_Obj_Secondary_M01_03 );
GameObject * pogController = Commands->Find_Object ( M01_MISSION_POG_CONTROLLER_JDG );
if (pogController != NULL)
{
Commands->Send_Custom_Event( obj, pogController, M01_ADD_OBJECTIVE_POG_JDG, M01_BARN_OBJECTIVE_JDG, 0 );
}
GameObject * barnPrisoner01 = Commands->Find_Object ( M01_BARN_PRISONER_01_ID );
if (barnPrisoner01 != NULL)
{
Commands->Set_Obj_Radar_Blip_Shape ( barnPrisoner01, RADAR_BLIP_SHAPE_OBJECTIVE );
Commands->Set_Obj_Radar_Blip_Color ( barnPrisoner01, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
}
GameObject * barnPrisoner02 = Commands->Find_Object ( M01_BARN_PRISONER_02_ID );
if (barnPrisoner02 != NULL)
{
Commands->Set_Obj_Radar_Blip_Shape ( barnPrisoner02, RADAR_BLIP_SHAPE_OBJECTIVE );
Commands->Set_Obj_Radar_Blip_Color ( barnPrisoner02, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
}
GameObject * barnPrisoner03 = Commands->Find_Object ( M01_BARN_PRISONER_03_ID );
if (barnPrisoner03 != NULL)
{
Commands->Set_Obj_Radar_Blip_Shape ( barnPrisoner03, RADAR_BLIP_SHAPE_OBJECTIVE );
Commands->Set_Obj_Radar_Blip_Color ( barnPrisoner03, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
}
}
}
break;*/
case M01_END_BARN_OBJECTIVE_JDG:
{
if (barn_objective_failed != true && civs_scattered == false)
{
civs_scattered = true;
//Commands->Send_Custom_Event( obj, obj, 0, M01_CHANGE_BARN_OBJECTIVE_JDG, 5 );
GameObject * barnPrisoner01 = Commands->Find_Object ( M01_BARN_PRISONER_01_ID );
if (barnPrisoner01 != NULL)
{
//Commands->Set_Obj_Radar_Blip_Shape ( barnPrisoner01, RADAR_BLIP_SHAPE_OBJECTIVE );
//Commands->Set_Obj_Radar_Blip_Color ( barnPrisoner01, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
Commands->Send_Custom_Event( obj, barnPrisoner01, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
GameObject * barnPrisoner02 = Commands->Find_Object ( M01_BARN_PRISONER_02_ID );
if (barnPrisoner02 != NULL)
{
//Commands->Set_Obj_Radar_Blip_Shape ( barnPrisoner02, RADAR_BLIP_SHAPE_OBJECTIVE );
//Commands->Set_Obj_Radar_Blip_Color ( barnPrisoner02, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
Commands->Send_Custom_Event( obj, barnPrisoner02, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
GameObject * barnPrisoner03 = Commands->Find_Object ( M01_BARN_PRISONER_03_ID );
if (barnPrisoner03 != NULL)
{
//Commands->Set_Obj_Radar_Blip_Shape ( barnPrisoner03, RADAR_BLIP_SHAPE_OBJECTIVE );
//Commands->Set_Obj_Radar_Blip_Color ( barnPrisoner03, RADAR_BLIP_COLOR_SECONDARY_OBJECTIVE );
Commands->Send_Custom_Event( obj, barnPrisoner03, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
}
}
break;
/*case M01_CHANGE_BARN_OBJECTIVE_JDG:
{
if (barn_objective_failed != true)
{
int roundupcivs_conv = Commands->Create_Conversation( "M01_Add_Barn_Roundup_Objective", 100, 1000, false);
Commands->Join_Conversation( NULL, roundupcivs_conv, false, false );
Commands->Start_Conversation( roundupcivs_conv, roundupcivs_conv );
Commands->Set_Objective_Status( M01_BARN_OBJECTIVE_JDG, OBJECTIVE_STATUS_ACCOMPLISHED );
Commands->Add_Objective( M01_BARN_ROUNDUP_OBJECTIVE_JGD, OBJECTIVE_TYPE_SECONDARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Secondary_M01_04, NULL, IDS_Enc_Obj_Secondary_M01_04 );
GameObject * pogController = Commands->Find_Object ( M01_MISSION_POG_CONTROLLER_JDG );
if (pogController != NULL)
{
Commands->Send_Custom_Event( obj, pogController, M01_ADD_OBJECTIVE_POG_JDG, M01_BARN_ROUNDUP_OBJECTIVE_JGD, 0 );
}
}
}
break;*/
case M01_END_BARN_ROUNDUP_OBJECTIVE_JDG:
{
if (barn_objective_ended == false)
{
barn_objective_ended = true;
/*if (barn_objective_failed == true)
{
Commands->Set_Objective_Status( M01_BARN_OBJECTIVE_JDG, OBJECTIVE_STATUS_FAILED );
Commands->Set_Objective_Status( M01_BARN_ROUNDUP_OBJECTIVE_JGD, OBJECTIVE_STATUS_FAILED );
barnfailed_conv = Commands->Create_Conversation( "M01_Locke_3CivsDead_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, barnfailed_conv, false, false );
Commands->Join_Conversation( STAR, barnfailed_conv, false, false );
Commands->Start_Conversation( barnfailed_conv, barnfailed_conv );
Commands->Monitor_Conversation( obj, barnfailed_conv );
}*/
if (barn_objective_failed != true)
{
//Commands->Set_Objective_Status( M01_BARN_ROUNDUP_OBJECTIVE_JGD, OBJECTIVE_STATUS_ACCOMPLISHED );
//barnfailed_conv = Commands->Create_Conversation( "M01_AirDrop_Conversation", 100, 1000, false);
//Commands->Join_Conversation( NULL, barnfailed_conv, false, false );
//Commands->Start_Conversation( barnfailed_conv, barnfailed_conv );
//Commands->Monitor_Conversation( obj, barnfailed_conv );
}
}
}
break;
case M01_TURRET_BEACH_ENGINEER_IS_DEAD_JDG:
{
GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if ( (turret01 != NULL) || (turret02 != NULL) )
{
Commands->Create_Sound ( "M01EVAG_DSGN0268I1EVAG_SND", Vector3 (0,0,0), obj );//enemy aircraft detected
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-93.689f, 52.850f, -1.95f));
Commands->Set_Facing(chinook_obj1, 60.0f);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1I_Nod_TurretBeach_TroopDrop.txt");
}
}
break;
case M01_CUE_BILLYS_CONVERSATION_JDG:
{
GameObject * barnPrisoner02 = Commands->Find_Object ( M01_BARN_PRISONER_02_ID );
if ( barnPrisoner02 != NULL && barn_prisoner_02_is_dead != true) //this is billy
{
billy_conv = Commands->Create_Conversation( "M01_Billys_Conversation", 100, 1000, true);
Commands->Join_Conversation( barnPrisoner02, billy_conv, true, true );
Commands->Join_Conversation( STAR, billy_conv, false, true, true );
Commands->Join_Conversation( NULL, billy_conv, false, false );
Commands->Start_Conversation( billy_conv, billy_conv );
Commands->Monitor_Conversation( obj, billy_conv );
}
}
break;
case M01_CUE_BABUSHKA_CONVERSATION_JDG:
{
GameObject * barnPrisoner01 = Commands->Find_Object ( M01_BARN_PRISONER_01_ID );
GameObject * barnPrisoner03 = Commands->Find_Object ( M01_BARN_PRISONER_03_ID );
if ( barnPrisoner01 != NULL && barn_prisoner_01_is_dead != true) //this is babushka
{
babushka_conv = Commands->Create_Conversation( "M01_Barn_Babushka_Conversation", 100, 1000, true);
Commands->Join_Conversation( barnPrisoner01, babushka_conv, true, true, true );
Commands->Join_Conversation( STAR, babushka_conv, false, false, false );
Commands->Join_Conversation( NULL, babushka_conv, false, false, false );
Commands->Start_Conversation( babushka_conv, babushka_conv );
Commands->Monitor_Conversation( obj, babushka_conv );
Commands->Send_Custom_Event( obj, barnPrisoner01, 0, M01_MODIFY_YOUR_ACTION_04_JDG, 0 );
if ( barnPrisoner03 != NULL && barn_prisoner_03_is_dead != true) //this is babushka
{
Commands->Send_Custom_Event( obj, barnPrisoner03, 0, M01_MODIFY_YOUR_ACTION_11_JDG, 0 );
}
}
else if ( barnPrisoner03 != NULL && barn_prisoner_03_is_dead != true) //this is babushka
{
civ3_conv = Commands->Create_Conversation( "M01_Civ03_Conversation", 100, 1000, true);
Commands->Join_Conversation( barnPrisoner03, civ3_conv, true, true, true );
Commands->Join_Conversation( STAR, civ3_conv, false, false, false );
Commands->Join_Conversation( NULL, civ3_conv, false, true, true );
Commands->Start_Conversation( civ3_conv, civ3_conv );
Commands->Monitor_Conversation( obj, civ3_conv );
}
}
break;
case M01_BARN_GUARD_IS_DEAD_JDG:
{
dead_barn_guard_tally++;
if (dead_barn_guard_tally >= 4)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_END_BARN_OBJECTIVE_JDG, 0 );
}
}
break;
case M01_CIVILIAN_KILLED_JDG:
{
/*if (sender == Commands->Find_Object ( M01_BARN_PRISONER_01_ID ))//this is babushka
{
barn_prisoner_01_is_dead = true;
dead_barn_prisoner_tally++;
}
else if (sender == Commands->Find_Object ( M01_BARN_PRISONER_02_ID ))//this is billy
{
barn_prisoner_02_is_dead = true;
dead_barn_prisoner_tally++;
}
else if (sender == Commands->Find_Object ( M01_BARN_PRISONER_03_ID ))//this is pierre
{
barn_prisoner_03_is_dead = true;
dead_barn_prisoner_tally++;
}
if (dead_barn_prisoner_tally > 2)
{
barn_objective_failed = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_END_BARN_ROUNDUP_OBJECTIVE_JDG, 0 );
}*/
}
break;
case M01_KILL_THE_GDI_POWER_PLANT_JDG:
{
Commands->Debug_Message ( "***************************Starting the GDI base encounter\n" );
if (missionStart == true)
{
missionStart = false;
}
//GameObject * crashed_orca = Commands->Find_Object ( 103121 );
//if (crashed_orca != NULL)
//{
// Commands->Send_Custom_Event( obj, crashed_orca, 0, M01_START_ACTING_JDG, 0 );
//}
}
break;
case M01_DO_DAMAGE_CHECK_JDG://a building has been damaged--take appropriate action
{
if (sender == Commands->Find_Object(M01_HAND_OF_NOD_JDG))//hand of nod under attack--refinery okay--send engineer
{
GameObject * honEngineer = Commands->Find_Object ( M01_HON_REPAIR_ENGINEER_ID );
if (honEngineer != NULL)
{
Commands->Send_Custom_Event( obj, honEngineer, 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
else if (sender == Commands->Find_Object(M01_COMM_CENTER_JDG))
{
GameObject * commEngineer = Commands->Find_Object ( M01_COMM_CENTER_ENGINEER_ID );
if (commEngineer != NULL)
{
Commands->Send_Custom_Event( obj, commEngineer, 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
}
break;
case M01_CUE_KANE_AND_NUMBER2_CONVERSATION_JDG://player is in comm center--cue kane encounter
{
GameObject * holograph = Commands->Find_Object ( 157978 );
if (holograph != NULL)
{
GameObject * kane = Commands->Create_Object_At_Bone ( holograph, "Nod_Kane_HologramHead", "KANEBONE" );
Commands->Attach_To_Object_Bone( kane, holograph, "KANEBONE" );
Commands->Set_Loiters_Allowed( kane, false );
kane_ID = Commands->Get_ID ( kane );
GameObject * commBaseCommander = Commands->Find_Object ( M01_COMMCENTER_BASE_COMMANDER_JDG );
if (commBaseCommander != NULL)
{
kane_and_no2_conv01_active = true;
kane_and_no2_conv01 = Commands->Create_Conversation( "M01_Kane_and_Number02_Conversation_01", 100, 1000, true);
Commands->Join_Conversation( kane, kane_and_no2_conv01, false, true );
Commands->Join_Conversation( commBaseCommander, kane_and_no2_conv01, false, true );
Commands->Start_Conversation( kane_and_no2_conv01, kane_and_no2_conv01 );
}
}
}
break;
case M01_CUE_KANE_AND_HAVOC_CONVERSATION_JDG://player is in comm center war room--cue kane encounter
{
if (kane_and_no2_conv01_active == true)
{
}
else if (kane_and_no2_conv02_active == true)
{
}
if (kane_and_havoc_conv_active == false)
{
GameObject * kane = Commands->Find_Object ( kane_ID );
if (kane != NULL)
{
kane_and_havoc_conv_active = true;
kane_and_havoc_conv = Commands->Create_Conversation( "M01_Kane_and_Havoc_Conversation", 100, 1000, false);
Commands->Join_Conversation( kane, kane_and_havoc_conv, false, true );
Commands->Join_Conversation( STAR, kane_and_havoc_conv, false, false );
Commands->Start_Conversation( kane_and_havoc_conv, kane_and_havoc_conv );
Commands->Monitor_Conversation( obj, kane_and_havoc_conv );
}
}
}
break;
case M01_SEND_BARN_CHINOOK_JDG://havoc is in barn area--send reinforcements
{
Commands->Create_Sound ( "M01EVAG_DSGN0268I1EVAG_SND", Vector3 (0,0,0), obj );//enemy aircraft detected
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-87.561f, 114.225f, 1.874f));
Commands->Set_Facing(chinook_obj1, 0.0f);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1I_EasyNodChinook01.txt");
}
break;
case M01_SEND_GUARD_TOWER_CHINOOK_JDG://havoc is at GDI guard tower
{
Commands->Create_Sound ( "M01EVAG_DSGN0268I1EVAG_SND", Vector3 (0,0,0), obj );
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(12.703f, 84.163f, 1.898f));
Commands->Set_Facing(chinook_obj1, -130.0f);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1I_EasyNodChinook01.txt");
}
break;
case M01_SEND_TAILGUN_CHINOOK_JDG://havoc is in tailgun area--send reinforcementsM01_SEND_CHURCH_CHINOOK_JDG
{
Commands->Create_Sound ( "M01EVAG_DSGN0268I1EVAG_SND", Vector3 (0,0,0), obj );//enemy aircraft detected
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-7.831f, 292.034f, 2.665f));
Commands->Set_Facing(chinook_obj1, 0.0f);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1I_EasyNodChinook01.txt");
}
break;
case M01_SEND_CHURCH_CHINOOK_JDG://havoc is in church area--send reinforcements
{
Commands->Create_Sound ( "M01EVAG_DSGN0268I1EVAG_SND", Vector3 (0,0,0), obj );//enemy aircraft detected
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-91.898f, 424.178f, 20.761f));
Commands->Set_Facing(chinook_obj1, 0.0f);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1I_EasyNodChinook.txt");
}
break;
case M01_SEND_BARN_CIVILIANS_RESCUE_CHINOOK_JDG://havoc has found one of the barn civs--send in the chinook
{
GameObject * barnEvacController = Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG );
if (barnEvacController != NULL)
{
Commands->Send_Custom_Event( obj, barnEvacController, 0, M01_SEND_BARN_CIVILIANS_RESCUE_CHINOOK_JDG, 0 );
}
}
break;
}
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
switch (complete_reason)
{
case ACTION_COMPLETE_CONVERSATION_ENDED:
{
if (action_id == billy_conv)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_SEND_BARN_CIVILIANS_RESCUE_CHINOOK_JDG, 0 );
}
else if (action_id == babushka_conv)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_SEND_BARN_CIVILIANS_RESCUE_CHINOOK_JDG, 0 );
GameObject * barnPrisoner01 = Commands->Find_Object ( M01_BARN_PRISONER_01_ID );
if ( barnPrisoner01 != NULL && barn_prisoner_01_is_dead != true) //this is babushka
{
Commands->Send_Custom_Event( obj, barnPrisoner01, 0, M01_MODIFY_YOUR_ACTION_05_JDG, 0 );
}//int
}
else if (action_id == civ3_conv)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_SEND_BARN_CIVILIANS_RESCUE_CHINOOK_JDG, 0 );
}
else if (action_id == turrets_conv)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_ADD_TURRETS_OBJECTIVE_JDG, 0 );
}
//else if (action_id == turrets_hummVee_conv) //send in the humm vee
//{
//GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-96.744f, 138.498f, 1));
//Commands->Set_Facing(chinook_obj1, 60.0f);
//Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "XG_M01_HumveeDrop.txt");
//}
else if (action_id == barnfailed_conv)
{
//int honAlerted_conv = Commands->Create_Conversation( "M01_HandOfNod_Alerted_Conversation", 100, 1000, false);
//Commands->Join_Conversation( NULL, honAlerted_conv, false, false );
//Commands->Join_Conversation( STAR, honAlerted_conv, false, false );
//Commands->Start_Conversation( honAlerted_conv, honAlerted_conv );
}
else if (action_id == kane_and_no2_conv01)
{
kane_and_no2_conv01_active = false;
GameObject * securityCamera = Commands->Find_Object ( M01_COMMCENTER_CEILING_CAMERA_JDG);
if (securityCamera != NULL)
{
Commands->Send_Custom_Event( obj, securityCamera, 0, M01_START_ATTACKING_01_JDG, 0 );
}
}
else if (action_id == kane_and_no2_conv02)
{
kane_and_no2_conv02_active = false;
}
else if (action_id == kane_and_havoc_conv)
{
GameObject * kane = Commands->Find_Object ( kane_ID);
if (kane != NULL)
{
Commands->Destroy_Object ( kane );
}
}
else if (action_id == unlocked_gate_conv) //
{
Vector3 radarMarker (-310.727f, 571.824f, 28.484f);
Commands->Add_Objective( M01_OPEN_THE_GATE_JDG, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M01_03, NULL, IDS_Enc_Obj_Primary_M01_03 );
Commands->Set_Objective_Radar_Blip( M01_OPEN_THE_GATE_JDG, radarMarker );
Commands->Set_Objective_HUD_Info_Position( M01_OPEN_THE_GATE_JDG, 95, "POG_M01_1_03.tga", IDS_POG_OPEN, radarMarker );
//Vector3 green (0,1,0);
Commands->Set_HUD_Help_Text ( IDS_Enc_ObjTitle_Primary_M01_03, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
else if (action_id == endMission_conv)
{
Commands->Create_2D_Sound ( "00-N048E" );//eva primary accomplished
Commands->Send_Custom_Event( obj, obj, 0, M01_END_MISSION_PASS_JDG, 3 );
}
else if (action_id == loveshack_conv)
{
loveshack_conv_playing = false;
}
else if (action_id == priest_conv)
{
priest_conv_playing = false;
}
else if (action_id == interior_nun_conv)
{
interior_nun_conv_playing = false;
}
}
break;
}
}
};
DECLARE_SCRIPT(M01_HON_Medlab_DropOff_Guy_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
Commands->Enable_Hibernation( obj, false );
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.H_A_TroopDrop") == 0)
{
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement(Vector3 (0,0,0), RUN, 1);
params.WaypathID = 125265;
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)
{
Commands->Destroy_Object ( obj );
}
else
{
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement(Vector3 (0,0,0), RUN, 1);
params.WaypathID = 125265;
Commands->Action_Goto(obj, params);
}
}
};
DECLARE_SCRIPT(M01_Hand_of_Nod_Building_Script_JDG, "")
{
int memorial_sound;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(memorial_sound, 1);
}
void Created( GameObject * obj )
{
Vector3 memorialSpot (-195.053f, 533.737f, 10.953f);
memorial_sound = Commands->Create_Sound ( "m01eval_dsgn0254r1ncxk_snd", memorialSpot, obj );
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Stop_Sound ( memorial_sound, true );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_HON_HAS_BEEN_DESTROYED_JDG, 0 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_AMBIENT_SOUND_CONTROLLER_JDG ), 0, M01_HON_HAS_BEEN_DESTROYED_JDG, 0 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( 103371 ), 0, M01_HON_HAS_BEEN_DESTROYED_JDG, 0 );//this is the final escort zone
Commands->Create_Object ( "POW_Medal_Armor", Vector3 (-180.312f, 541.400f, 3.518f) );
Commands->Create_Object ( "POW_Medal_Health", Vector3 (-178.349f, 541.471f, 3.518f) );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (obj )
{
GameObject * myEngineer = Commands->Find_Object ( M01_HON_REPAIR_ENGINEER_ID );
if (myEngineer != NULL)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_DO_DAMAGE_CHECK_JDG, 0 );
if (damager == myEngineer)
{
float MyMaxHealth = Commands->Get_Max_Health ( obj );
float MyMaxShield = Commands->Get_Max_Shield_Strength ( obj );
Commands->Set_Health ( obj, MyMaxHealth );
Commands->Set_Shield_Strength ( obj, MyMaxShield );
}
}
}
}
};
DECLARE_SCRIPT(M01_Flyover_Generic_Script_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Disable_Physical_Collisions ( obj );
Commands->Enable_Hibernation( obj, false );
Commands->Enable_Cinematic_Freeze( obj, false );
float MyMaxHealth = Commands->Get_Max_Health ( obj );
float fudgeFactor = Commands->Get_Random ( .05f, 1.0f);
float myNewHealth = MyMaxHealth * fudgeFactor;
float MyMaxShield = Commands->Get_Max_Shield_Strength ( obj );
float fudgeFactor2 = Commands->Get_Random ( .05f, 1.0f);
float myNewShield = MyMaxShield * fudgeFactor2;
Commands->Set_Health ( obj, myNewHealth );
Commands->Set_Shield_Strength ( obj, myNewShield );
}
};
DECLARE_SCRIPT(M01_Ambient_Sound_Controller_JDG, "")
{
enum
{
play_destroyed_building_sound = 101,
pick_refinery_sound,
play_refinery_klaxon,
play_refinery_sound,
pick_commcenter_sound,
play_commcenter_klaxon,
play_commcenter_sound,
};
typedef enum {
ACTIVE,
DESTROYED,
} M01_Building_State;
typedef enum {
INSIDE_GDI_CON,
INSIDE_GDI_POWERPLANT,
INSIDE_HAND_OF_NOD,
INSIDE_REFINERY,
INSIDE_COMM_CENTER,
OUTSIDE,
} M01_Location;
M01_Building_State hand_of_nod_state, comm_center_state;
M01_Location players_location;
int building_sound;
int destroyed_building_sound;
int klaxon;
int sound;
bool outside_ambients_playing;
bool building_ambients_playing;
bool destroyed_building_ambients_playing;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(hand_of_nod_state, 1);
SAVE_VARIABLE(comm_center_state, 2);
SAVE_VARIABLE(players_location, 3);
SAVE_VARIABLE(building_sound, 4);
SAVE_VARIABLE(destroyed_building_sound, 5);
SAVE_VARIABLE(klaxon, 6);
SAVE_VARIABLE(sound, 7);
SAVE_VARIABLE(outside_ambients_playing, 8);
SAVE_VARIABLE(building_ambients_playing, 9);
SAVE_VARIABLE(destroyed_building_ambients_playing, 10);
}
void Created( GameObject * obj )
{
Commands->Enable_Hibernation( obj, false );
hand_of_nod_state = ACTIVE;
comm_center_state = ACTIVE;
klaxon = 0;
sound = 0;
outside_ambients_playing = false;
building_ambients_playing = false;
destroyed_building_ambients_playing = false;
players_location = OUTSIDE;
Commands->Send_Custom_Event( obj, obj, 0, M01_TURN_ON_OUTSIDE_AMBIENTS_JDG, 0 );
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ((param == M01_TURN_ON_OUTSIDE_AMBIENTS_JDG) && (outside_ambients_playing == false))
{
players_location = OUTSIDE;
outside_ambients_playing = true;
if (building_ambients_playing == true /*&& building_sound != NULL*/)
{
Commands->Stop_Sound ( building_sound, true );
}
building_ambients_playing = false;
destroyed_building_ambients_playing = false;
}
else if ((param == M01_TURN_OFF_OUTSIDE_AMBIENTS_JDG) && (outside_ambients_playing == true))
{
outside_ambients_playing = false;
}
else if ((param == M01_HON_HAS_BEEN_DESTROYED_JDG))//Hand of Nod has been destroyed
{
hand_of_nod_state = DESTROYED;
}
else if ((param == M01_COMM_CENTER_HAS_BEEN_DESTROYED_JDG))//Comm Center has been destroyed
{
comm_center_state = DESTROYED;
}
else if (param == M01_PLAYER_IS_INSIDE_GDI_CON_JDG)
{
players_location = INSIDE_GDI_CON;
}
else if (param == M01_PLAYER_IS_INSIDE_GDI_POWERPLANT_JDG)
{
players_location = INSIDE_GDI_POWERPLANT;
}
else if (param == M01_PLAYER_IS_INSIDE_COMM_CENTER_JDG)
{
players_location = INSIDE_COMM_CENTER;
if ((comm_center_state == ACTIVE) && (building_ambients_playing != true) )
{
Commands->Debug_Message ( "**********************turning on active Comm Center ambient noise\n" );
building_sound = Commands->Create_Sound ("CC_Ambient_M01", Vector3 (0,0,0), obj );
building_ambients_playing = true;
float delayTimer = Commands->Get_Random ( 5, 10 );
Commands->Send_Custom_Event( obj, obj, 0, pick_commcenter_sound, delayTimer );
}
}
else if (param == M01_PLAYER_IS_INSIDE_HON_JDG)
{
players_location = INSIDE_HAND_OF_NOD;
if ((hand_of_nod_state == ACTIVE) && (building_ambients_playing != true) )
{
building_ambients_playing = true;
}
}
else if ((param == play_commcenter_klaxon) && (players_location == INSIDE_COMM_CENTER) && (comm_center_state != DESTROYED))
{
char *klaxonNames[2] = {
"Klaxon Warning",
"Klaxon Info"
};
char *klaxonName = klaxonNames[klaxon];
GameObject * star = Commands->Get_A_Star (Vector3(0.0f,0.0f,0.0f));
if ( star != NULL )
{
Vector3 playerPosition = Commands->Get_Position ( star );
float x_factor = Commands->Get_Random(-5,5);
float y_factor = Commands->Get_Random(-5,5);
playerPosition.X += x_factor;
playerPosition.Y += y_factor;
playerPosition.Z += 3;
Commands->Create_Sound ( klaxonName, playerPosition, obj );
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_sound, 1.5 );
}
}
else if ((param == play_commcenter_sound) && (players_location == INSIDE_COMM_CENTER) && (comm_center_state != DESTROYED))
{
char *sounds[15] = {
"01-I022E",
"01-I028E",
"01-I030E",
"01-I032E",
"01-I034E",
"01-I036E",
"01-I038E",
"01-I040E",
"01-I042E",
"01-I044E",
"01-I046E",
"01-I048E",
"01-I050E",
"01-I062E",
"01-I066E"
};
char *soundName = sounds[sound];
GameObject * star = Commands->Get_A_Star (Vector3(0.0f,0.0f,0.0f));
if ( star != NULL )
{
Vector3 playerPosition = Commands->Get_Position ( star );
float x_factor = Commands->Get_Random(-5,5);
float y_factor = Commands->Get_Random(-5,5);
playerPosition.X += x_factor;
playerPosition.Y += y_factor;
playerPosition.Z += 3;
Commands->Create_Sound ( soundName, playerPosition, obj );
float delayTimer = Commands->Get_Random ( 10, 25 );
Commands->Send_Custom_Event( obj, obj, 0, pick_commcenter_sound, delayTimer );
}
}
else if ((param == pick_commcenter_sound) && (players_location == INSIDE_COMM_CENTER) && (comm_center_state != DESTROYED))
{
float lineNumber = Commands->Get_Random ( 0.5f, 15.5f);
if ((lineNumber >= 0.5) && (lineNumber < 1.5))
{
sound = 0;
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_sound, 0 );
}
else if ((lineNumber >= 1.5) && (lineNumber < 2.5))
{
sound = 1;
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_sound, 0 );
}
else if ((lineNumber >= 2.5) && (lineNumber < 3.5))
{
sound = 2;
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_sound, 0 );
}
else if ((lineNumber >= 3.5) && (lineNumber < 4.5))
{
klaxon = 1;
sound = 3;
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_klaxon, 0 );
}
else if ((lineNumber >= 4.5) && (lineNumber < 5.5))
{
sound = 4;
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_sound, 0 );
}
else if ((lineNumber >= 5.5) && (lineNumber < 6.5))
{
klaxon = 1;
sound = 5;
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_klaxon, 0 );
}
else if ((lineNumber >= 6.5) && (lineNumber < 7.5))
{
klaxon = 1;
sound = 6;
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_klaxon, 0 );
}
else if ((lineNumber >= 7.5) && (lineNumber < 8.5))
{
klaxon = 0;
sound = 7;
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_klaxon, 0 );
}
else if ((lineNumber >= 8.5) && (lineNumber < 9.5))
{
sound = 8;
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_sound, 0 );
}
else if ((lineNumber >= 9.5) && (lineNumber < 10.5))
{
klaxon = 0;
sound = 9;
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_klaxon, 0 );
}
else if ((lineNumber >= 10.5) && (lineNumber < 11.5))
{
klaxon = 0;
sound = 10;
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_klaxon, 0 );
}
else if ((lineNumber >= 11.5) && (lineNumber < 12.5))
{
klaxon = 1;
sound = 11;
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_klaxon, 0 );
}
else if ((lineNumber >= 12.5) && (lineNumber < 13.5))
{
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_sound, 0 );
}
else if ((lineNumber >= 13.5) && (lineNumber < 14.5))
{
sound = 13;
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_sound, 0 );
}
else
{
sound = 14;
Commands->Send_Custom_Event( obj, obj, 0, play_commcenter_sound, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_Entering_Church_Area_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_APPROACHING_CHURCH_JDG, 0 );
if (Commands->Find_Object ( 100801 ))//these are the three zones leading to the church--clean them up
{
Commands->Destroy_Object ( Commands->Find_Object ( 100801 ) );
}
if (Commands->Find_Object ( 100802 ))
{
Commands->Destroy_Object ( Commands->Find_Object ( 100802 ) );
}
if (Commands->Find_Object ( 100803 ))
{
Commands->Destroy_Object ( Commands->Find_Object ( 100803 ) );
}
}
}
};
DECLARE_SCRIPT(M01_Hand_Of_Nod_Interior_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_INSIDE_HON_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Hand_Of_Nod_Exterior_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_OUTSIDE_HON_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Comm_Center_Interior_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_INSIDE_COMM_CENTER_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Comm_Center_Exterior_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_OUTSIDE_COMM_CENTER_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Tunnel_Interior_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_INSIDE_TUNNEL_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Tunnel_Exterior_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_OUTSIDE_TUNNEL_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Waterfall_Interior_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_INSIDE_WATERFALL_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Waterfall_Exterior_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_OUTSIDE_WATERFALL_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Player_is_Leaving_GDI_Base_Zone, "")
{
bool firstEntry;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(firstEntry, 1);
}
void Created( GameObject * obj )
{
firstEntry = true;
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
if (firstEntry == true)
{
firstEntry = false;
GameObject * barnSpawnerController = Commands->Find_Object (M01_GDIBASE_SPAWNER_CONTROLLER_JDG);
if (barnSpawnerController != NULL)
{
Commands->Send_Custom_Event( obj, barnSpawnerController, 0, M01_SPAWNER_SPAWN_PLEASE_JDG, 0 );
}
}
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_APPROACHING_BARN_AREA_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Player_is_Entering_GDI_Base_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_APPROACHING_GDI_BASE_AREA_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Lose_Any_Church_Escorts_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_LEAVING_CHURCH_01_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Lose_Any_Church_Escorts_Zone_02, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_LEAVING_CHURCH_02_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Lose_Any_HON_Escorts_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_LEAVING_HON_01_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Lose_Any_HON_Escorts_Zone_02, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_LEAVING_HON_02_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Announce_Prisoner_Objective_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_ANNOUNCE_PRISONER_OBJECTIVE_JDG, 0 );
Commands->Destroy_Object ( obj );//this is a one-time only zone--clean it up
}
}
};
DECLARE_SCRIPT(M01_Scramble_Radar_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_SCRAMBLE_THE_RADAR_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_UnScramble_Radar_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_UNSCRAMBLE_THE_RADAR_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_HON_Commander_Guy, "")
{
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG), 0, M01_CARD_CARRIER_HAS_BEEN_KILLED_JDG, 0 );//tell controller you've been killed
}
};
DECLARE_SCRIPT(M01_COMM_Commander_Guy, "")
{
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG), 0, M01_CARD_CARRIER_HAS_BEEN_KILLED_JDG, 0 );//tell controller you've been killed
}
};
DECLARE_SCRIPT(M01_HandOfNod_SAMSite_Script, "")//M01_HON_SAM_SITE_JDG==100031
{
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == (STAR))
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object (M01_MISSION_CONTROLLER_JDG), 0, M01_HON_SAMSITE_HAS_BEEN_DESTROYED_JDG, 5 );
}
};
DECLARE_SCRIPT(M01_Destroyed_SAMSITE_JDG, "")
{
void Created( GameObject * obj )
{
ActionParamsStruct params;
Vector3 my_target = Commands->Get_Position ( obj );
my_target.Z -= -5;
params.Set_Basic( this, 100, 20 );
params.Set_Attack( my_target, 0, 0, true );
params.AttackCheckBlocked = true;
Commands->Action_Attack (obj, params);
}
};
DECLARE_SCRIPT(M01_CommCenter_Evacuator_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Enable_Hibernation( obj, false );
ActionParamsStruct params;
Vector3 evac_spot;
float evac_location = Commands->Get_Random ( 0.5, 2.5f );
if (evac_location >= 0.5 && evac_location < 1.5)
{
evac_spot.Set(-286.904f, 557.896f, 27.616f);
}
else
{
evac_spot.Set(-318.149f, 530.868f, 27.971f);
}
float x_factor = Commands->Get_Random(-5,5);
float y_factor = Commands->Get_Random(-5,5);
evac_spot.X += x_factor;
evac_spot.Y += y_factor;
params.Set_Basic(this, M01_EVAC_PRIORITY_JDG, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evac_spot, 1.0f, 2 );
Commands->Action_Goto( obj, params );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR )
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
if (action_id == M01_GOING_TO_EVAC_SPOT_JDG && complete_reason == ACTION_COMPLETE_NORMAL)//Tech is at workstation--face monitor
{
Commands->Enable_Hibernation( obj, true );
}
}
};
DECLARE_SCRIPT(M01_HON_FrontDoor_Evacuator_JDG, "")
{
void Created( GameObject * obj )
{
ActionParamsStruct params;
Commands->Enable_Hibernation( obj, false );
params.Set_Basic(this, M01_EVAC_PRIORITY_JDG, M01_PICK_A_NEW_LOCATION_JDG);
params.Set_Movement( Vector3(-150.3f, 532.0f, 4.2f), 1.0f, 0.25f );
Commands->Action_Goto( obj, params );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR )
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
}
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
{
ActionParamsStruct params;
if (action_id == M01_PICK_A_NEW_LOCATION_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
Vector3 evac_spot;
float evac_location = Commands->Get_Random ( 0.5, 3.5f );
if (evac_location >= 0.5 && evac_location < 1.5)
{
evac_spot.Set(-156.637f, 553.163f, 4.295f);
}
else if (evac_location >= 1.5 && evac_location < 2.5)
{
evac_spot.Set(-145.746f, 531.964f, 4.271f);
}
else
{
evac_spot.Set(-163.828f, 515.290f, 4.258f);
}
float x_factor = Commands->Get_Random(-10,10);
float y_factor = Commands->Get_Random(-10,10);
evac_spot.X += x_factor;
evac_spot.Y += y_factor;
params.Set_Basic(this, M01_EVAC_PRIORITY_JDG, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evac_spot, 1.0f, 3 );
Commands->Action_Goto( obj, params );
}
else if (action_id == M01_GOING_TO_EVAC_SPOT_JDG && complete_reason == ACTION_COMPLETE_NORMAL)//Tech is evac'd allow hibernation
{
Commands->Enable_Hibernation( obj, true );
}
}
};
DECLARE_SCRIPT(M01_HON_BackDoor_Evacuator_JDG, "")
{
void Created( GameObject * obj )
{
ActionParamsStruct params;
Commands->Enable_Hibernation( obj, false );
Vector3 evac_spot;
evac_spot.Set(-221.947f, 515.124f, 4.012f);
float x_factor = Commands->Get_Random(-10,10);
float y_factor = Commands->Get_Random(-10,10);
evac_spot.X += x_factor;
evac_spot.Y += y_factor;
params.Set_Basic(this, M01_EVAC_PRIORITY_JDG, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evac_spot, 1.0f, 3 );
Commands->Action_Goto( obj, params );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR )
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
}
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
{
if (action_id == M01_GOING_TO_EVAC_SPOT_JDG && complete_reason == ACTION_COMPLETE_NORMAL)//Tech is evac'd allow hibernation
{
Commands->Enable_Hibernation( obj, true );
}
}
};
DECLARE_SCRIPT(M01_HON_Dorm_Crapper_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
Commands->Set_Facing ( obj, -120 );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR )
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//Player is entering Grunt level--cue actors
{
if (obj)
{
Commands->Innate_Enable( obj );
//params.Set_Basic(this, 60, 100);
//params.Set_Animation ("H_A_V22A", true);
//Commands->Action_Play_Animation (obj, params);
}
}
else if ((param == M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG))//Your building has been destroyed--evacuate
{
if (obj)
{
Commands->Innate_Enable( obj );
Commands->Enable_Hibernation( obj, false );
Vector3 evac_spot;
float evac_location = Commands->Get_Random ( 0.5, 4.5f );
if (evac_location >= 0.5 && evac_location < 1.5)
{
evac_spot.Set(-156.637f, 553.163f, 4.295f);
}
else if (evac_location >= 1.5 && evac_location < 2.5)
{
evac_spot.Set(-145.746f, 531.964f, 4.271f);
}
else if (evac_location >= 2.5 && evac_location < 3.5)
{
evac_spot.Set(-163.828f, 515.290f, 4.258f);
}
else
{
evac_spot.Set(-221.947f, 515.124f, 4.012f);
}
float x_factor = Commands->Get_Random(-10,10);
float y_factor = Commands->Get_Random(-10,10);
evac_spot.X += x_factor;
evac_spot.Y += y_factor;
params.Set_Basic(this, M01_EVAC_PRIORITY_JDG, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evac_spot, 1.0f, 3 );
Commands->Action_Goto( obj, params );
}
}
}
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
{
ActionParamsStruct params;
if (action_id == M01_GOING_TO_EVAC_SPOT_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
GameObject * star = Commands->Get_A_Star (Vector3(0.0f,0.0f,0.0f));
if ( star != NULL )
{
int players_ID_number = Commands->Get_ID ( star );
params.Set_Basic( this, 90, 50 );
params.Set_Movement( Commands->Find_Object ( players_ID_number ), .8f, 1.5f );
params.MoveFollow = true;
Commands->Action_Goto( obj, params );
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG), 0, M01_CARD_CARRIER_HAS_BEEN_KILLED_JDG, 0 );//tell controller you've been killed
}
};
DECLARE_SCRIPT(M01_HON_Dorm_FlameGuy_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
Commands->Set_Facing ( obj, 90 );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR )
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//Player is entering Grunt level--cue actors
{
if (obj)
{
Commands->Innate_Enable( obj );
params.Set_Basic(this, 60, 100);
params.Set_Animation ("H_A_601A", true);
Commands->Action_Play_Animation (obj, params);
}
}
else if ((param == M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG))//Your building has been destroyed--evacuate
{
if (obj)
{
Commands->Innate_Enable( obj );
Commands->Enable_Hibernation( obj, false );
Vector3 evac_spot;
float evac_location = Commands->Get_Random ( 0.5, 4.5f );
if (evac_location >= 0.5 && evac_location < 1.5)
{
evac_spot.Set(-156.637f, 553.163f, 4.295f);
}
else if (evac_location >= 1.5 && evac_location < 2.5)
{
evac_spot.Set(-145.746f, 531.964f, 4.271f);
}
else if (evac_location >= 2.5 && evac_location < 3.5)
{
evac_spot.Set(-163.828f, 515.290f, 4.258f);
}
else
{
evac_spot.Set(-221.947f, 515.124f, 4.012f);
}
float x_factor = Commands->Get_Random(-10,10);
float y_factor = Commands->Get_Random(-10,10);
evac_spot.X += x_factor;
evac_spot.Y += y_factor;
params.Set_Basic(this, M01_EVAC_PRIORITY_JDG, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evac_spot, 1.0f, 3 );
Commands->Action_Goto( obj, params );
}
}
}
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
{
ActionParamsStruct params;
if (action_id == M01_GOING_TO_EVAC_SPOT_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
Commands->Enable_Hibernation( obj, true );
}
}
};
DECLARE_SCRIPT(M01_HON_Dorm_ChemGuy_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
Commands->Set_Facing ( obj, -90 );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR )
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//Player is entering Grunt level--cue actors
{
if (obj)
{
Commands->Innate_Enable( obj );
params.Set_Basic(this, 60, 100);
params.Set_Animation ("H_A_613A", true);
Commands->Action_Play_Animation (obj, params);
}
}
else if ((param == M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG))//Your building has been destroyed--evacuate
{
if (obj)
{
Commands->Innate_Enable( obj );
Commands->Enable_Hibernation( obj, false );
Vector3 evac_spot;
float evac_location = Commands->Get_Random ( 0.5, 4.5f );
if (evac_location >= 0.5 && evac_location < 1.5)
{
evac_spot.Set(-156.637f, 553.163f, 4.295f);
}
else if (evac_location >= 1.5 && evac_location < 2.5)
{
evac_spot.Set(-145.746f, 531.964f, 4.271f);
}
else if (evac_location >= 2.5 && evac_location < 3.5)
{
evac_spot.Set(-163.828f, 515.290f, 4.258f);
}
else
{
evac_spot.Set(-221.947f, 515.124f, 4.012f);
}
float x_factor = Commands->Get_Random(-10,10);
float y_factor = Commands->Get_Random(-10,10);
evac_spot.X += x_factor;
evac_spot.Y += y_factor;
params.Set_Basic(this, M01_EVAC_PRIORITY_JDG, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evac_spot, 1.0f, 3 );
Commands->Action_Goto( obj, params );
}
}
}
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
{
ActionParamsStruct params;
if (action_id == M01_GOING_TO_EVAC_SPOT_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
Commands->Enable_Hibernation( obj, true );
}
}
};
DECLARE_SCRIPT(M01_HON_Dorm_RocketGuy_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
Commands->Set_Facing ( obj, -90 );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR )
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//Player is entering Grunt level--cue actors
{
if (obj)
{
Commands->Innate_Enable( obj );
params.Set_Basic(this, 60, 100);
params.Set_Animation ("H_A_601A", true);
Commands->Action_Play_Animation (obj, params);
}
}
else if ((param == M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG))//Your building has been destroyed--evacuate
{
if (obj)
{
Commands->Innate_Enable( obj );
Commands->Enable_Hibernation( obj, false );
Vector3 evac_spot;
float evac_location = Commands->Get_Random ( 0.5, 4.5f );
if (evac_location >= 0.5 && evac_location < 1.5)
{
evac_spot.Set(-156.637f, 553.163f, 4.295f);
}
else if (evac_location >= 1.5 && evac_location < 2.5)
{
evac_spot.Set(-145.746f, 531.964f, 4.271f);
}
else if (evac_location >= 2.5 && evac_location < 3.5)
{
evac_spot.Set(-163.828f, 515.290f, 4.258f);
}
else
{
evac_spot.Set(-221.947f, 515.124f, 4.012f);
}
float x_factor = Commands->Get_Random(-10,10);
float y_factor = Commands->Get_Random(-10,10);
evac_spot.X += x_factor;
evac_spot.Y += y_factor;
params.Set_Basic(this, M01_EVAC_PRIORITY_JDG, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evac_spot, 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_EVAC_SPOT_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
Commands->Enable_Hibernation( obj, true );
}
}
};
DECLARE_SCRIPT(M01_HON_Dorm_MiniGunner_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
Commands->Set_Facing ( obj, 180 );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR )
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//Player is entering Grunt level--cue actors
{
if (obj)
{
Commands->Innate_Enable( obj );
params.Set_Basic(this, 60, 100);
params.Set_Animation ("H_A_442A", true);
Commands->Action_Play_Animation (obj, params);
}
}
else if ((param == M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG))//Your building has been destroyed--evacuate
{
if (obj)
{
Commands->Innate_Enable( obj );
Commands->Enable_Hibernation( obj, false );
Vector3 evac_spot;
float evac_location = Commands->Get_Random ( 0.5, 4.5f );
if (evac_location >= 0.5 && evac_location < 1.5)
{
evac_spot.Set(-156.637f, 553.163f, 4.295f);
}
else if (evac_location >= 1.5 && evac_location < 2.5)
{
evac_spot.Set(-145.746f, 531.964f, 4.271f);
}
else if (evac_location >= 2.5 && evac_location < 3.5)
{
evac_spot.Set(-163.828f, 515.290f, 4.258f);
}
else
{
evac_spot.Set(-221.947f, 515.124f, 4.012f);
}
float x_factor = Commands->Get_Random(-10,10);
float y_factor = Commands->Get_Random(-10,10);
evac_spot.X += x_factor;
evac_spot.Y += y_factor;
params.Set_Basic(this, M01_EVAC_PRIORITY_JDG, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evac_spot, 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_EVAC_SPOT_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
Commands->Enable_Hibernation( obj, true );
}
}
};
DECLARE_SCRIPT(M01_HON_Cafeteria_Eating_Guy_JDG, "")
{
int enemy_detected;
REGISTER_VARIABLES()
{
SAVE_VARIABLE( enemy_detected, 1 );
}
void Created( GameObject * obj )
{
enemy_detected = 0;
Commands->Innate_Disable(obj);
Commands->Set_Facing ( obj, -125 );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR )
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//Player is entering Grunt level--cue actors
{
if (obj)
{
Commands->Innate_Enable( obj );
params.Set_Basic(this, 60, 100);
params.Set_Animation ("H_A_V11A", true);
Commands->Action_Play_Animation (obj, params);
}
}
else if ((param == M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG))//Your building has been destroyed--evacuate
{
if (obj)
{
Commands->Innate_Enable( obj );
Commands->Enable_Hibernation( obj, false );
Vector3 evac_spot;
float evac_location = Commands->Get_Random ( 0.5, 4.5f );
if (evac_location >= 0.5 && evac_location < 1.5)
{
evac_spot.Set(-156.637f, 553.163f, 4.295f);
}
else if (evac_location >= 1.5 && evac_location < 2.5)
{
evac_spot.Set(-145.746f, 531.964f, 4.271f);
}
else if (evac_location >= 2.5 && evac_location < 3.5)
{
evac_spot.Set(-163.828f, 515.290f, 4.258f);
}
else
{
evac_spot.Set(-221.947f, 515.124f, 4.012f);
}
float x_factor = Commands->Get_Random(-10,10);
float y_factor = Commands->Get_Random(-10,10);
evac_spot.X += x_factor;
evac_spot.Y += y_factor;
params.Set_Basic(this, M01_EVAC_PRIORITY_JDG, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evac_spot, 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_EVAC_SPOT_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
Commands->Enable_Hibernation( obj, true );
}
}
};
DECLARE_SCRIPT(M01_HON_Cafeteria_Walking_Guy_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR )
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//Player is entering Grunt level--cue actors
{
if (obj)
{
Commands->Innate_Enable( obj );
params.Set_Basic(this, 45, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
params.WaypathID = 100661;
params.WaypointStartID = 100662;
params.WaypointEndID = 100663;
Commands->Action_Goto( obj, params );
}
}
else if ((param == M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG))//Your building has been destroyed--evacuate
{
if (obj)
{
Commands->Innate_Enable( obj );
Commands->Enable_Hibernation( obj, false );
Vector3 evac_spot;
float evac_location = Commands->Get_Random ( 0.5, 4.5f );
if (evac_location >= 0.5 && evac_location < 1.5)
{
evac_spot.Set(-156.637f, 553.163f, 4.295f);
}
else if (evac_location >= 1.5 && evac_location < 2.5)
{
evac_spot.Set(-145.746f, 531.964f, 4.271f);
}
else if (evac_location >= 2.5 && evac_location < 3.5)
{
evac_spot.Set(-163.828f, 515.290f, 4.258f);
}
else
{
evac_spot.Set(-221.947f, 515.124f, 4.012f);
}
float x_factor = Commands->Get_Random(-10,10);
float y_factor = Commands->Get_Random(-10,10);
evac_spot.X += x_factor;
evac_spot.Y += y_factor;
params.Set_Basic(this, M01_EVAC_PRIORITY_JDG, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evac_spot, 1.0f, 3 );
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)
{
params.Set_Basic(this, 45, M01_FACING_SPECIFIED_DIRECTION_01_JDG);
params.Set_Face_Location( Vector3(-170.179f, 520.595f, 5.999f), 1 );
Commands->Action_Face_Location ( obj, params );
}
else if (action_id == M01_FACING_SPECIFIED_DIRECTION_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
params.Set_Basic(this, 45, M01_DOING_ANIMATION_01_JDG);
params.Set_Animation ("H_A_J17C", 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), .35f, .25f );
params.WaypathID = 100674;
params.WaypointStartID = 100676;
params.WaypointEndID = 100682;
Commands->Action_Goto( obj, params );
}
else if (action_id == M01_WALKING_WAYPATH_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
params.Set_Basic(this, 45, M01_DOING_ANIMATION_02_JDG);
params.Set_Animation ("H_A_V42A", false);
Commands->Action_Play_Animation (obj, params);
}
else if (action_id == M01_DOING_ANIMATION_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
Vector3 sitspot(-176.299f, 532.229f, -4.6f);
Commands->Set_Position ( obj, sitspot );
Commands->Set_Facing ( obj, 60 );
params.Set_Basic(this, 45, 100);
params.Set_Animation ("H_A_V11A", true);
Commands->Action_Play_Animation (obj, params);
}
else if (action_id == M01_GOING_TO_EVAC_SPOT_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
Commands->Enable_Hibernation( obj, true );
}
}
};
DECLARE_SCRIPT(M01_Hand_Of_Nod_Grunt_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_IN_HON_GRUNT_LEVEL_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Hand_Of_Nod_Dojo_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_IN_HON_DOJO_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Church_LoveShack_MiniGunner_JDG, "")//M01_CHURCH_LOVESHACK_MINIGUNNER_ID 101305
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR)
{
if (obj)
{
Commands->Innate_Enable( obj );
ActionParamsStruct params;
params.Set_Basic(this, 45, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( STAR, RUN, 5 );
params.Set_Attack( STAR, 15, 0, true );
Commands->Action_Attack ( obj, params );
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
GameObject * conversationZone = Commands->Find_Object ( 103392 );
if (conversationZone != NULL)
{
Commands->Destroy_Object ( conversationZone );
}
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_LOVESHACK_GUARD_IS_DEAD_JDG, 0 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG), 0, M01_CARD_CARRIER_HAS_BEEN_KILLED_JDG, 0 );//tell controller you've been killed
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//Player is entering church area--cue actors
{
Commands->Innate_Enable( obj );
params.Set_Basic(this, 85, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Vector3(0,0,0), WALK, 2 );
params.WaypathID = 100760;
params.WaypointStartID = 100761;
params.WaypointEndID = 100769;
Commands->Action_Goto( obj, params );
}
}
};
DECLARE_SCRIPT(M01_Church_Exterior_MiniGunner_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//Player is entering church area--cue actors
{
if (obj)
{
Commands->Innate_Enable( obj );
params.Set_Basic(this, 45, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Vector3(0,0,0), .2f, .25f );
params.WaypathID = 100771;
params.WaypointStartID = 100772;
params.WaypointEndID = 100776;
Commands->Action_Goto( obj, params );
}
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR)
{
if (obj)
{
Commands->Innate_Enable( obj );
ActionParamsStruct params;
params.Set_Basic(this, 100, 0);
params.Set_Movement( STAR, WALK, 5 );
params.Set_Attack( STAR, 15, 0, true );
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)//minigunner is at animation point--choose and do animation
{
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)//minigunner is done with animation--keep moving
{
params.Set_Basic(this, 45, M01_WALKING_WAYPATH_02_JDG);
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
params.WaypathID = 100778;
params.WaypointStartID = 100779;
params.WaypointEndID = 100782;
Commands->Action_Goto( obj, params );
}
else if (action_id == M01_WALKING_WAYPATH_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)//minigunner is at animation point--choose and do animation
{
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)//minigunner is done with animation--keep moving
{
params.Set_Basic(this, 45, M01_WALKING_WAYPATH_03_JDG);
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
params.WaypathID = 100778;
params.WaypointStartID = 100782;
params.WaypointEndID = 100779;
Commands->Action_Goto( obj, params );
}
else if (action_id == M01_WALKING_WAYPATH_03_JDG && complete_reason == ACTION_COMPLETE_NORMAL)//minigunner is at animation point--choose and do animation
{
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)//minigunner is done with animation--keep moving
{
params.Set_Basic(this, 45, M01_WALKING_WAYPATH_04_JDG);
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
params.WaypathID = 100771;
params.WaypointStartID = 100776;
params.WaypointEndID = 100772;
Commands->Action_Goto( obj, params );
}
else if (action_id == M01_WALKING_WAYPATH_04_JDG && complete_reason == ACTION_COMPLETE_NORMAL)//minigunner is at animation point--choose and do animation
{
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)//minigunner is done with animation--keep moving
{
params.Set_Basic(this, 45, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
params.WaypathID = 100771;
params.WaypointStartID = 100772;
params.WaypointEndID = 100776;
Commands->Action_Goto( obj, params );
}
}
};
DECLARE_SCRIPT(M01_Church_Balcony_MiniGunner_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//Player is entering church area--cue actors
{
if (obj)
{
Commands->Innate_Enable( obj );
params.Set_Basic(this, 45, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
params.WaypathID = 100784;
params.WaypointStartID = 100785;
params.WaypointEndID = 100786;
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)//minigunner is at animation point--choose and do animation
{
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)//minigunner is done with animation--keep moving
{
params.Set_Basic(this, 45, M01_WALKING_WAYPATH_02_JDG);
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
params.WaypathID = 100788;
params.WaypointStartID = 100789;
params.WaypointEndID = 100790;
Commands->Action_Goto( obj, params );
}
else if (action_id == M01_WALKING_WAYPATH_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)//minigunner is at animation point--choose and do animation
{
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)//minigunner is done with animation--keep moving
{
params.Set_Basic(this, 45, M01_WALKING_WAYPATH_03_JDG);
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
params.WaypathID = 100792;
params.WaypointStartID = 100793;
params.WaypointEndID = 100794;
Commands->Action_Goto( obj, params );
}
else if (action_id == M01_WALKING_WAYPATH_03_JDG && complete_reason == ACTION_COMPLETE_NORMAL)//minigunner is at animation point--choose and do animation
{
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)//minigunner is done with animation--keep moving
{
params.Set_Basic(this, 45, M01_WALKING_WAYPATH_04_JDG);
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
params.WaypathID = 100796;
params.WaypointStartID = 100797;
params.WaypointEndID = 100799;
Commands->Action_Goto( obj, params );
}
else if (action_id == M01_WALKING_WAYPATH_04_JDG && complete_reason == ACTION_COMPLETE_NORMAL)//minigunner is at animation point--choose and do animation
{
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)//minigunner is done with animation--keep moving
{
params.Set_Basic(this, 45, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
params.WaypathID = 100784;
params.WaypointStartID = 100785;
params.WaypointEndID = 100786;
Commands->Action_Goto( obj, params );
}
}
};
DECLARE_SCRIPT(M01_Announce_Hand_of_Nod_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
GameObject *controller = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(controller, "Test_Cinematic", "X1A_Apache_Orca_Chase_01.txt");
GameObject * buggyController = Commands->Find_Object ( 103367 );
if (buggyController != NULL)
{
Commands->Send_Custom_Event( obj, buggyController, 0, M01_START_ACTING_JDG, 0 );
}
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_ANNOUNCE_HON_OBJECTIVE_JDG, 0 );
Commands->Destroy_Object ( obj);//this is a 1-time only zone--cleaning up
}
}
};
DECLARE_SCRIPT(M01_Announce_Barn_Objective_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
//Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_START_BARN_OBJECTIVE_JDG, 0 );
Commands->Destroy_Object ( obj);//this is a 1-time only zone--cleaning up
}
}
};
DECLARE_SCRIPT(M01_Tiberium_Cave_Helicopter_JDG, "")
{
void Created( GameObject * obj )
{
ActionParamsStruct params;
Commands->Innate_Disable(obj);
Commands->Enable_Hibernation( obj, false );
Commands->Disable_Physical_Collisions ( obj );
params.Set_Basic( this, 100, M01_START_ACTING_JDG );
params.Set_Movement( Vector3(-42.883f, 376.457f, 18.025f), 0.005f, 0.25f );
params.AttackActive = false;
params.AttackCheckBlocked = false;
params.MovePathfind = false;
Commands->Action_Attack (obj, params);
float delayTimer = Commands->Get_Random ( 1, 2 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
}
void Custom(GameObject * obj, int type, int param, GameObject * sender)
{
ActionParamsStruct params;
if (param == M01_MODIFY_YOUR_ACTION_JDG )
{
params.Set_Basic(this, 100, M01_START_ACTING_JDG);
params.Set_Movement( Vector3(-42.883f, 376.457f, 18.025f), 0.05f, 0.25f );
params.AttackActive = true;
params.AttackCheckBlocked = false;
params.MovePathfind = false;
params.Set_Attack (STAR, 100, 0, true);
Commands->Modify_Action (obj, M01_START_ACTING_JDG, params);
float delayTimer = Commands->Get_Random ( 1, 2 );
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_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(0,0,0), 1.0f, 0.75f );
params.WaypathID = 100964;
params.WaypointStartID = 100965;
params.WaypointEndID = 101366;
params.WaypathSplined = true;
params.AttackActive = true;
params.AttackCheckBlocked = true;
params.MovePathfind = false;
params.Set_Attack (STAR, 100, 0, true);
Commands->Action_Attack (obj, params);
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 15 );
}
else if (param == M01_MODIFY_YOUR_ACTION_03_JDG )
{
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_Player_Is_Crossing_Bridge_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_CROSSING_THE_BRIDGE_JDG, 0 );
if ( Commands->Find_Object ( M01_TAILGUNRUN_SPAWNER_CONTROLLER_JDG ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TAILGUNRUN_SPAWNER_CONTROLLER_JDG ), 0, M01_QUIT_SPAWNING_PLEASE_JDG, 0 );
}
if ( Commands->Find_Object ( M01_CHURCHAREA_SPAWNER_CONTROLLER_JDG ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_CHURCHAREA_SPAWNER_CONTROLLER_JDG ), 0, M01_SPAWNER_SPAWN_PLEASE_JDG, 0 );
}
//this is a one-time only zone--cleaning up
if (Commands->Find_Object ( 100922 ))//clean up all zones associated with the driveby scenario
{
Commands->Destroy_Object ( Commands->Find_Object ( 100922 ));
}
if (Commands->Find_Object ( 100934 ))//clean up all zones associated with the driveby scenario
{
Commands->Destroy_Object ( Commands->Find_Object ( 100934 ));
}
if (Commands->Find_Object ( 100972 ))//clean up all zones associated with the driveby scenario
{
Commands->Destroy_Object ( Commands->Find_Object ( 100972 ));
}
}
}
};
DECLARE_SCRIPT(M01_Player_Is_Crossing_Bridge_Via_Cave_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_CROSSING_THE_BRIDGE_VIA_CAVE_JDG, 0 );
if ( Commands->Find_Object ( M01_TAILGUNRUN_SPAWNER_CONTROLLER_JDG ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TAILGUNRUN_SPAWNER_CONTROLLER_JDG ), 0, M01_QUIT_SPAWNING_PLEASE_JDG, 0 );
}
if ( Commands->Find_Object ( M01_CHURCHAREA_SPAWNER_CONTROLLER_JDG ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_CHURCHAREA_SPAWNER_CONTROLLER_JDG ), 0, M01_SPAWNER_SPAWN_PLEASE_JDG, 0 );
}
//this is a one-time only zone--cleaning up
if (Commands->Find_Object ( 100922 ))//clean up all zones associated with the driveby scenario
{
Commands->Destroy_Object ( Commands->Find_Object ( 100922 ));
}
if (Commands->Find_Object ( 100934 ))//clean up all zones associated with the driveby scenario
{
Commands->Destroy_Object ( Commands->Find_Object ( 100934 ));
}
if (Commands->Find_Object ( 100972 ))//clean up all zones associated with the driveby scenario
{
Commands->Destroy_Object ( Commands->Find_Object ( 100972 ));
}
}
}
};
DECLARE_SCRIPT(M01_Player_Is_Crossing_Bridge_Via_Church_Zone, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_CROSSING_THE_BRIDGE_JDG, 0 );
if ( Commands->Find_Object ( M01_TAILGUNRUN_SPAWNER_CONTROLLER_JDG ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TAILGUNRUN_SPAWNER_CONTROLLER_JDG ), 0, M01_QUIT_SPAWNING_PLEASE_JDG, 0 );
}
if ( Commands->Find_Object ( M01_CHURCHAREA_SPAWNER_CONTROLLER_JDG ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_CHURCHAREA_SPAWNER_CONTROLLER_JDG ), 0, M01_SPAWNER_SPAWN_PLEASE_JDG, 0 );
}
//this is a one-time only zone--cleaning up
if (Commands->Find_Object ( 100922 ))//clean up all zones associated with the driveby scenario
{
Commands->Destroy_Object ( Commands->Find_Object ( 100922 ));
}
if (Commands->Find_Object ( 100934 ))//clean up all zones associated with the driveby scenario
{
Commands->Destroy_Object ( Commands->Find_Object ( 100934 ));
}
if (Commands->Find_Object ( 100972 ))//clean up all zones associated with the driveby scenario
{
Commands->Destroy_Object ( Commands->Find_Object ( 100972 ));
}
}
}
};
DECLARE_SCRIPT(M01_Flamethrower_Point_Guard_JDG, "")
{
Vector3 myPosition;
float myFacing;
float leftFacing;
float rightFacing;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(myPosition, 1);
SAVE_VARIABLE(myFacing, 2);
SAVE_VARIABLE(leftFacing, 3);
SAVE_VARIABLE(rightFacing, 4);
}
void Created( GameObject * obj )
{
myPosition = Commands->Get_Position ( obj );
myFacing = Commands->Get_Facing ( obj );
leftFacing = myFacing - 45;
rightFacing = myFacing + 45;
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 20.0f );
Commands->Set_Innate_Aggressiveness ( obj, 0.5f );
Commands->Set_Innate_Take_Cover_Probability ( obj, 0.5f );
float delayTimer = Commands->Get_Random ( 5, 10 );
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, delayTimer );
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (param == M01_PICK_A_NEW_LOCATION_JDG)
{
float atarashiLookSpot = Commands->Get_Random ( leftFacing, rightFacing );
float delayTimer = Commands->Get_Random ( 5, 10 );
params.Set_Basic( this, 45, 20 );
params.Set_Face_Location( myPosition, DEG_TO_RAD(atarashiLookSpot), delayTimer );
Commands->Action_Face_Location ( obj, params );
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, delayTimer );
}
}
void Sound_Heard( GameObject * obj, const CombatSound & sound )
{
if ((sound.Type == SOUND_TYPE_BULLET_HIT) || (sound.Type == SOUND_TYPE_GUNSHOT))
{
Commands->Set_Innate_Is_Stationary ( obj, false );
}
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
Commands->Set_Innate_Is_Stationary ( obj, false );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR)
{
if (obj)
{
Commands->Set_Innate_Is_Stationary ( obj, false );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_MiniGunner_Point_Guard_JDG, "")
{
/*Vector3 myPosition;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(myPosition, 1);
}
void Created( GameObject * obj )
{
myPosition.Set (Commands->Get_Position ( obj ));
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 3 );
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
int current_difficulty = Commands->Get_Difficulty_Level();
int easy = 0;
int medium = 1;
int hard = 2;
if (current_difficulty == easy)
{
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, M01_EASY_DIFFICULTY_HOMERANGE_JDG );
Commands->Set_Innate_Aggressiveness ( obj, M01_EASY_DIFFICULTY_AGGRESSION_JDG );
Commands->Set_Innate_Take_Cover_Probability ( obj, M01_EASY_DIFFICULTY_TAKECOVER_JDG );
}
else if (current_difficulty == medium)
{
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, M01_MEDIUM_DIFFICULTY_HOMERANGE_JDG );
Commands->Set_Innate_Aggressiveness ( obj, M01_MEDIUM_DIFFICULTY_AGGRESSION_JDG );
Commands->Set_Innate_Take_Cover_Probability ( obj, M01_MEDIUM_DIFFICULTY_TAKECOVER_JDG );
}
else if (current_difficulty == hard)
{
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, M01_HARD_DIFFICULTY_HOMERANGE_JDG );
Commands->Set_Innate_Aggressiveness ( obj, M01_HARD_DIFFICULTY_AGGRESSION_JDG );
Commands->Set_Innate_Take_Cover_Probability ( obj, M01_HARD_DIFFICULTY_TAKECOVER_JDG );
}
}*/
};
DECLARE_SCRIPT(M01_HON_Easy_Spawned_Guy_01_JDG, "")
{
bool hunting;
bool fighting;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(hunting, 1);
SAVE_VARIABLE(fighting, 2);
}
void Created( GameObject * obj )
{
hunting = false;
fighting = false;
Commands->Enable_Hibernation( obj, false );
ActionParamsStruct params;
params.Set_Basic( this, 85, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(-218.772f, 510.932f, 4.017f), RUN, 0.05f );
Commands->Action_Goto( obj, params );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR)
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
if (fighting == false)
{
Commands->Action_Reset ( obj, 100 );
Commands->Innate_Force_State_Enemy_Seen ( obj, STAR );
fighting = true;
}
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
if (hunting != true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_HON_SPAWNER_01_IS_DEAD_JDG, 0 );
}
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_HON_SPAWNER_IS_DEAD_JDG, 0 );
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
if (enemy == STAR && fighting == false)
{
fighting = true;
Commands->Action_Reset ( obj, 100 );
Commands->Set_Innate_Aggressiveness ( obj, 0.25f );
Commands->Set_Innate_Take_Cover_Probability ( obj, 0.75f );
Commands->Enable_Hibernation( obj, true );
}
}
void Sound_Heard( GameObject * obj, const CombatSound & sound )
{
if (sound.Creator == STAR && fighting == false)
{
Vector3 playersPosition = Commands->Get_Position ( STAR );
if (sound.Type == SOUND_TYPE_GUNSHOT)
{
fighting = true;
Commands->Action_Reset ( obj, 100 );
Commands->Innate_Force_State_Gunshots_Heard ( obj, playersPosition );
}
else if (sound.Type == SOUND_TYPE_BULLET_HIT)
{
fighting = true;
Commands->Action_Reset ( obj, 100 );
Commands->Innate_Force_State_Bullet_Heard ( obj, playersPosition );
}
}
}
void Custom(GameObject * obj, int type, int param, GameObject * sender)
{
ActionParamsStruct params;
if (param == M01_HUNT_THE_PLAYER_JDG )
{
if (obj && STAR)
{
hunting = true;
Vector3 playersPosition = Commands->Get_Position ( STAR );
params.Set_Basic(this, 45, M01_HUNT_THE_PLAYER_JDG);
params.Set_Movement( playersPosition, RUN, 5, false );
Commands->Action_Goto( obj, params );
}
Commands->Send_Custom_Event( obj, obj, 0, M01_HUNT_THE_PLAYER_JDG, 30 );
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
ActionParamsStruct params;
if (action_id == M01_HUNT_THE_PLAYER_JDG && (complete_reason == ACTION_COMPLETE_PATH_BAD_START || complete_reason == ACTION_COMPLETE_PATH_BAD_DEST || complete_reason == ACTION_COMPLETE_MOVE_NO_PROGRESS_MADE))
{
Commands->Apply_Damage( obj, 10000, "BlamoKiller", NULL );
}
}
};
DECLARE_SCRIPT(M01_HON_Easy_Spawned_Guy_02_JDG, "")
{
bool hunting;
bool fighting;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(hunting, 1);
SAVE_VARIABLE(fighting, 2);
}
void Created( GameObject * obj )
{
hunting = false;
fighting = false;
Commands->Enable_Hibernation( obj, false );
ActionParamsStruct params;
params.Set_Basic( this, 85, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(-224.418f, 510.944f, 4.006f), RUN, 0.05f );
Commands->Action_Goto( obj, params );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR )
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
if (fighting == false)
{
Commands->Action_Reset ( obj, 100 );
Commands->Innate_Force_State_Enemy_Seen ( obj, STAR );
fighting = true;
}
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
if (hunting != true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_HON_SPAWNER_02_IS_DEAD_JDG, 0 );
}
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_HON_SPAWNER_IS_DEAD_JDG, 0 );
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
if (enemy == STAR && fighting == false)
{
fighting = true;
Commands->Action_Reset ( obj, 100 );
Commands->Set_Innate_Aggressiveness ( obj, 0.25f );
Commands->Set_Innate_Take_Cover_Probability ( obj, 0.75f );
Commands->Enable_Hibernation( obj, true );
}
}
void Sound_Heard( GameObject * obj, const CombatSound & sound )
{
if (sound.Creator == STAR && fighting == false)
{
Vector3 playersPosition = Commands->Get_Position ( STAR );
if (sound.Type == SOUND_TYPE_GUNSHOT)
{
fighting = true;
Commands->Action_Reset ( obj, 100 );
Commands->Innate_Force_State_Gunshots_Heard ( obj, playersPosition );
}
else if (sound.Type == SOUND_TYPE_BULLET_HIT)
{
fighting = true;
Commands->Action_Reset ( obj, 100 );
Commands->Innate_Force_State_Bullet_Heard ( obj, playersPosition );
}
}
}
void Custom(GameObject * obj, int type, int param, GameObject * sender)
{
ActionParamsStruct params;
if (param == M01_HUNT_THE_PLAYER_JDG )
{
if (obj && STAR)
{
hunting = true;
Vector3 playersPosition = Commands->Get_Position ( STAR );
params.Set_Basic(this, 45, M01_HUNT_THE_PLAYER_JDG);
params.Set_Movement( playersPosition, RUN, 5, false );
Commands->Action_Goto( obj, params );
}
Commands->Send_Custom_Event( obj, obj, 0, M01_HUNT_THE_PLAYER_JDG, 30 );
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
ActionParamsStruct params;
if (action_id == M01_HUNT_THE_PLAYER_JDG && (complete_reason == ACTION_COMPLETE_PATH_BAD_START || complete_reason == ACTION_COMPLETE_PATH_BAD_DEST || complete_reason == ACTION_COMPLETE_MOVE_NO_PROGRESS_MADE))
{
Commands->Apply_Damage( obj, 10000, "BlamoKiller", NULL );
}
}
};
DECLARE_SCRIPT(M01_HON_Easy_Spawned_Guy_03_JDG, "")
{
bool hunting;
bool fighting;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(hunting, 1);
SAVE_VARIABLE(fighting, 2);
}
void Created( GameObject * obj )
{
hunting = false;
fighting = false;
Commands->Enable_Hibernation( obj, false );
ActionParamsStruct params;
params.Set_Basic( this, 85, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(-221.754f, 514.833f, 4.015f), RUN, 0.05f );
Commands->Action_Goto( obj, params );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR )
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
if (fighting == false)
{
Commands->Action_Reset ( obj, 100 );
Commands->Innate_Force_State_Enemy_Seen ( obj, STAR );
fighting = true;
}
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
if (hunting != true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_HON_SPAWNER_03_IS_DEAD_JDG, 0 );
}
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_HON_SPAWNER_IS_DEAD_JDG, 0 );
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
if (enemy == STAR && fighting == false)
{
fighting = true;
Commands->Action_Reset ( obj, 100 );
Commands->Set_Innate_Aggressiveness ( obj, 0.25f );
Commands->Set_Innate_Take_Cover_Probability ( obj, 0.75f );
Commands->Enable_Hibernation( obj, true );
}
}
void Sound_Heard( GameObject * obj, const CombatSound & sound )
{
if (sound.Creator == STAR && fighting == false)
{
Vector3 playersPosition = Commands->Get_Position ( STAR );
if (sound.Type == SOUND_TYPE_GUNSHOT)
{
fighting = true;
Commands->Action_Reset ( obj, 100 );
Commands->Innate_Force_State_Gunshots_Heard ( obj, playersPosition );
}
else if (sound.Type == SOUND_TYPE_BULLET_HIT)
{
fighting = true;
Commands->Action_Reset ( obj, 100 );
Commands->Innate_Force_State_Bullet_Heard ( obj, playersPosition );
}
}
}
void Custom(GameObject * obj, int type, int param, GameObject * sender)
{
ActionParamsStruct params;
if (param == M01_HUNT_THE_PLAYER_JDG )
{
if (obj && STAR)
{
hunting = true;
Vector3 playersPosition = Commands->Get_Position ( STAR );
params.Set_Basic(this, 45, M01_HUNT_THE_PLAYER_JDG);
params.Set_Movement( playersPosition, RUN, 5, false );
Commands->Action_Goto( obj, params );
}
Commands->Send_Custom_Event( obj, obj, 0, M01_HUNT_THE_PLAYER_JDG, 30 );
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
ActionParamsStruct params;
if (action_id == M01_HUNT_THE_PLAYER_JDG && (complete_reason == ACTION_COMPLETE_PATH_BAD_START || complete_reason == ACTION_COMPLETE_PATH_BAD_DEST || complete_reason == ACTION_COMPLETE_MOVE_NO_PROGRESS_MADE))
{
Commands->Apply_Damage( obj, 10000, "BlamoKiller", NULL );
}
else if (action_id == M01_WALKING_WAYPATH_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_HON_SPAWNER_IN_POSITION_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Whack_A_Mole_Enter_Zone_JDG, "")//this guys ID is 101209
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_SPAWN_WHACK_A_MOLE_GUY_JDG, 0 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( 101207 ), 0, M01_SPAWN_WHACK_A_MOLE_GUY_JDG, 0 );
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_Whack_A_Mole_Exit_Zone_JDG, "")//this guys ID is 101207
{
bool okayToAct;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(okayToAct, 1);
}
void Created( GameObject * obj )
{
okayToAct = false;
}
void Custom(GameObject * obj, int type, int param, GameObject * sender)
{
if (param == M01_SPAWN_WHACK_A_MOLE_GUY_JDG )
{
okayToAct = true;
}
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR && okayToAct == true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CHANGE_WHACK_A_MOLE_GUY_JDG, 0 );
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_Whack_A_Mole_Minigunner_JDG, "")
{
typedef enum {
Left_To_Right,
Right_To_Left,
} Walking_State;
bool invincible;
bool attacked;
float base_health;
float speed;
int points_given;
Walking_State Whack_a_Mole_State;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(invincible, 1);
SAVE_VARIABLE(attacked, 2);
SAVE_VARIABLE(base_health, 3);
SAVE_VARIABLE(speed, 4);
SAVE_VARIABLE(points_given, 5);
SAVE_VARIABLE(Whack_a_Mole_State, 6);
}
void Created( GameObject * obj )
{
//Commands->Innate_Disable(obj);
invincible = false;
attacked = false;
base_health = Commands->Get_Max_Health ( obj );
speed = 0.3f;
points_given = 1;
ActionParamsStruct params;
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(0,0,0), speed, 0.25f );
params.WaypathID = 101221;
Commands->Action_Goto( obj, params );
Whack_a_Mole_State = Right_To_Left;
}
void Custom(GameObject * obj, int type, int param, GameObject * sender)
{
ActionParamsStruct params;
if (param == M01_CHANGE_WHACK_A_MOLE_GUY_JDG )
{
if (obj)
{
invincible = false;
Commands->Innate_Enable(obj);
}
}
else if (param == M01_DOING_ANIMATION_01_JDG )
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation( "H_A_J21C", false );
Commands->Action_Play_Animation ( obj, params );
}
else if (param == M01_PICK_A_NEW_LOCATION_JDG )
{
Commands->Action_Reset ( obj, 100 );
if (Whack_a_Mole_State == Right_To_Left)
{
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_02_JDG );
params.Set_Movement( Vector3(0,0,0), speed, 0.25f );
params.WaypathID = 101210;
Commands->Action_Goto( obj, params );
Whack_a_Mole_State = Left_To_Right;
}
else if (Whack_a_Mole_State == Left_To_Right)
{
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(0,0,0), speed, 0.25f );
params.WaypathID = 101221;
Commands->Action_Goto( obj, params );
Whack_a_Mole_State = Right_To_Left;
}
}
else if (param == M01_HUNT_THE_PLAYER_JDG )
{
if (obj)
{
invincible = false;
Commands->Innate_Enable(obj);
Commands->Grant_Key( obj, 1, true );
params.Set_Basic(this, 45, M01_HUNT_THE_PLAYER_JDG);
params.Set_Movement( STAR, WALK, 5 );
params.Set_Attack( STAR, 15, 0, true );
Commands->Action_Attack ( obj, params );
}
}
}
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->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, 0 );
}
else if (action_id == M01_WALKING_WAYPATH_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
if (attacked == false)
{
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(0,0,0), speed, 0.25f );
params.WaypathID = 101221;
Commands->Action_Goto( obj, params );
Whack_a_Mole_State = Right_To_Left;
}
else if (attacked == true)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_HUNT_THE_PLAYER_JDG, 0 );
}
}
else if (action_id == M01_WALKING_WAYPATH_01_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
params.Set_Basic( this, 45, M01_WALKING_WAYPATH_02_JDG );
params.Set_Movement( Vector3(0,0,0), speed, 0.25f );
params.WaypathID = 101210;
Commands->Action_Goto( obj, params );
Whack_a_Mole_State = Left_To_Right;
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR && invincible == true)
{
if (obj)
{
attacked = true;
Commands->Set_Health ( obj, base_health );
points_given = 2 * points_given;
speed = speed + .1;
if (speed > 1)
{
speed = 1;
}
Commands->Give_Points( damager, points_given, false );
Commands->Send_Custom_Event( obj, obj, 0, M01_DOING_ANIMATION_01_JDG, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_Left_Interrogation_Room_Enter_Zone_JDG, "")//this guys ID is 101354
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
if (Commands->Find_Object ( M01_HON_INTERROGATION_ROOM_GUY_ID ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_HON_INTERROGATION_ROOM_GUY_ID ), 0, M01_PLAYER_ENTERING_LEFT_INTEROG_ROOM_JDG, 0 );
}
if (Commands->Find_Object ( 101354 ))
{
Commands->Destroy_Object ( Commands->Find_Object ( 101354 ) );//cleaning up the 2 interogation room zones
}
if (Commands->Find_Object ( 101355 ))
{
Commands->Destroy_Object ( Commands->Find_Object ( 101355 ) );
}
}
}
};
DECLARE_SCRIPT(M01_Right_Interrogation_Room_Enter_Zone_JDG, "")//this guys ID is 101355
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
if (Commands->Find_Object ( M01_HON_INTERROGATION_ROOM_GUY_ID ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_HON_INTERROGATION_ROOM_GUY_ID ), 0, M01_PLAYER_ENTERING_RIGHT_INTEROG_ROOM_JDG, 0 );
}
if (Commands->Find_Object ( 101354 ))
{
Commands->Destroy_Object ( Commands->Find_Object ( 101354 ) );//cleaning up the 2 interogation room zones
}
if (Commands->Find_Object ( 101355 ))
{
Commands->Destroy_Object ( Commands->Find_Object ( 101355 ) );
}
}
}
};
DECLARE_SCRIPT(M01_Interrogation_Room_L03_Keycard_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Set_Obj_Radar_Blip_Shape ( obj, RADAR_BLIP_SHAPE_NONE );
}
};
DECLARE_SCRIPT(M01_Interrogation_Room_Surprise_Guy_JDG, "")//this guys ID is 101357
{
Vector3 myPostion;
bool onGuard;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(myPostion, 1);
SAVE_VARIABLE(onGuard, 2);
}
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
onGuard = true;
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
ActionParamsStruct params;
if (onGuard == true)
{
if (obj)
{
Commands->Innate_Enable( obj );
Commands->Create_Sound ( "Huh_2", Commands->Get_Position ( obj ), obj );
float delayTimer = Commands->Get_Random ( 0.5f, 2 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
onGuard = false;
if (Commands->Find_Object ( 101354 ))
{
Commands->Destroy_Object ( Commands->Find_Object ( 101354 ) );//cleaning up the 2 interogation room zones
}
if (Commands->Find_Object ( 101355 ))
{
Commands->Destroy_Object ( Commands->Find_Object ( 101355 ) );
}
}
}
else
{
}
}
void Custom(GameObject * obj, int type, int param, GameObject * sender)
{
ActionParamsStruct params;
if (param == M01_PLAYER_ENTERING_LEFT_INTEROG_ROOM_JDG )
{
myPostion.Set (-182.199f, 529.167f, -31.130f);
params.Set_Basic( this, 80, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( myPostion, 0.75f, 0.05f );
Commands->Action_Goto( obj, params );
onGuard = false;
}
else if (param == M01_PLAYER_ENTERING_RIGHT_INTEROG_ROOM_JDG )
{
myPostion.Set (-182.753f, 539.906f, -31.130f);
params.Set_Basic( this, 80, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( myPostion, 0.75f, 0.05f );
Commands->Action_Goto( obj, params );
onGuard = false;
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG )
{
if (obj)
{
Commands->Grant_Key( obj, 1, true );
Commands->Grant_Key( obj, 2, true );
Commands->Grant_Key( obj, 3, true );
Commands->Innate_Enable( obj );
params.Set_Basic( this, 80, M01_HUNT_THE_PLAYER_JDG );
params.Set_Attack( STAR, 20, 0, true );
params.AttackActive = true;
params.AttackCheckBlocked = true;
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)
{
Commands->Create_Sound ( "TargetHasBeenEngaged_2", myPostion, obj );
params.Set_Basic( this, 80, M01_HUNT_THE_PLAYER_JDG );
params.Set_Attack( STAR, 20, 0, true );
params.AttackActive = true;
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
float delayTimer = Commands->Get_Random ( 1, 3 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
}
}
};
DECLARE_SCRIPT(M01_Medium_Tank_Tunnel_Squish_Guy_JDG, "")
{
void Created( GameObject * obj )
{
Vector3 myPositon = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPositon, 10.0f );
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (param == M01_MEDIUM_TANK_IS_HERE_JDG )
{
Commands->Set_Innate_Is_Stationary ( obj, false );
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(0,0,0), 1.0f, .25f );
params.WaypathID = 101554;
params.WaypointStartID = 101561;
Commands->Action_Goto( obj, params );
Commands->Create_3D_Sound_At_Bone ( "M01_Nod_HupHup", obj, "ROOTTRANSFORM" );
}
}
};
DECLARE_SCRIPT(M01_Billys_Conversation_Zone_JDG, "")//this guys ID is 101661
{
bool okay_to_play_conversation;
bool playerEntered;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(okay_to_play_conversation, 1);
SAVE_VARIABLE(playerEntered, 2);
}
void Created( GameObject * obj )
{
okay_to_play_conversation = false;
playerEntered = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//billy is in position--give okay for conversation
{
okay_to_play_conversation = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_CUE_BILLYS_CONVERSATION_JDG, 0 );
}
else if ((param == M01_CUE_BILLYS_CONVERSATION_JDG))//see if billy and havoc are present
{
if (playerEntered == true && okay_to_play_conversation == true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CUE_BILLYS_CONVERSATION_JDG, 0 );
GameObject * babushkaZone = Commands->Find_Object ( 101662 );
GameObject * billyZone = Commands->Find_Object ( 101661 );
if (babushkaZone != NULL)
{
Commands->Destroy_Object ( babushkaZone );//this is one-time only zone--cleaning up
}
if (billyZone != NULL)
{
Commands->Destroy_Object ( billyZone );//this is one-time only zone--cleaning up
}
}
}
}
void Exited( GameObject * obj, GameObject * exiter )
{
if (exiter == STAR)
{
playerEntered = false;
}
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
playerEntered = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_CUE_BILLYS_CONVERSATION_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Tank_Entering_Tunnel_Zone_JDG, "")//this guys ID is
{
int gdi_medium_tank;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(gdi_medium_tank, 1);
}
void Created( GameObject * obj )
{
gdi_medium_tank = 0;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == M01_MEDIUM_TANK_IS_HERE_JDG )
{
gdi_medium_tank = param;
}
}
void Entered( GameObject * obj, GameObject * enterer )
{
/*GameObject * lightTank = Commands->Find_Object ( M01_TAILGUNAREA_NOD_LIGHTTANK_JDG );
if (lightTank != NULL && enterer == lightTank)
{
Commands->Send_Custom_Event( obj, lightTank, 0, M01_GOTO_IDLE_JDG, 0 );
Vector3 newTankPosition (14.208f, 225.943f, 4.0f);
Commands->Set_Position ( lightTank, newTankPosition );
}*/
if (enterer == Commands->Find_Object ( gdi_medium_tank ))
{
if ( Commands->Find_Object ( M01_TANK_TUNNEL_SQUISH_GUY_01_ID ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TANK_TUNNEL_SQUISH_GUY_01_ID ), 0, M01_MEDIUM_TANK_IS_HERE_JDG, 0 );
}
if ( Commands->Find_Object ( M01_TANK_TUNNEL_SQUISH_GUY_02_ID ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TANK_TUNNEL_SQUISH_GUY_02_ID ), 0, M01_MEDIUM_TANK_IS_HERE_JDG, 0 );
}
if ( Commands->Find_Object ( M01_TANK_TUNNEL_SQUISH_GUY_03_ID ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TANK_TUNNEL_SQUISH_GUY_03_ID ), 0, M01_MEDIUM_TANK_IS_HERE_JDG, 0 );
}
Commands->Destroy_Object ( obj );//one time zone--cleaning up
}
}
};
DECLARE_SCRIPT(M01_Player_Is_Entering_Tailgun_Alley_JDG, "")//this guys ID is 101692
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
int tankWarning = Commands->Create_Conversation( "M01_Announce_LightTank_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, tankWarning, false, false );
Commands->Join_Conversation( NULL, tankWarning, false, false );
//Commands->Join_Conversation( STAR, tankWarning, false, false );
Commands->Start_Conversation( tankWarning, tankWarning );
if ( Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_APPROACHING_TAILGUN_ALLEY_JDG, 0 );
}
if ( Commands->Find_Object ( M01_TAILGUN_01_ID ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TAILGUN_01_ID ), 0, M01_START_ACTING_JDG, 0 );
}
if ( Commands->Find_Object ( M01_TAILGUN_02_ID ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TAILGUN_02_ID ), 0, M01_START_ACTING_JDG, 0 );
}
if ( Commands->Find_Object ( M01_TAILGUN_03_ID ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TAILGUN_03_ID ), 0, M01_START_ACTING_JDG, 0 );
}
if ( Commands->Find_Object ( M01_GDIBASE_SPAWNER_CONTROLLER_JDG ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_GDIBASE_SPAWNER_CONTROLLER_JDG ), 0, M01_QUIT_SPAWNING_PLEASE_JDG, 0 );
}
if ( Commands->Find_Object ( M01_TAILGUNRUN_SPAWNER_CONTROLLER_JDG ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TAILGUNRUN_SPAWNER_CONTROLLER_JDG ), 0, M01_SPAWNER_SPAWN_PLEASE_JDG, 0 );
}
if ( Commands->Find_Object ( 101718 ))//this is the backway enter zone
{
Commands->Destroy_Object ( Commands->Find_Object ( 101718 ) );
}
Commands->Destroy_Object ( obj );//one time zone--cleaning up
}
}
};
DECLARE_SCRIPT(M01_Player_Is_Entering_Tailgun_Alley_Backway_JDG, "")//this guys ID is 101691
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
if ( Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_APPROACHING_TAILGUN_ALLEY_JDG, 0 );
}
if ( Commands->Find_Object ( M01_TAILGUN_01_ID ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TAILGUN_01_ID ), 0, M01_START_ACTING_JDG, 0 );
}
if ( Commands->Find_Object ( M01_TAILGUN_02_ID ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TAILGUN_02_ID ), 0, M01_START_ACTING_JDG, 0 );
}
if ( Commands->Find_Object ( M01_TAILGUN_03_ID ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TAILGUN_03_ID ), 0, M01_START_ACTING_JDG, 0 );
}
if ( Commands->Find_Object ( M01_GDIBASE_SPAWNER_CONTROLLER_JDG ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_GDIBASE_SPAWNER_CONTROLLER_JDG ), 0, M01_QUIT_SPAWNING_PLEASE_JDG, 0 );
}
if ( Commands->Find_Object ( M01_TAILGUNRUN_SPAWNER_CONTROLLER_JDG ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TAILGUNRUN_SPAWNER_CONTROLLER_JDG ), 0, M01_SPAWNER_SPAWN_PLEASE_JDG, 0 );
}
if ( Commands->Find_Object ( 101692 ))//this is the enter zone in the tunnel
{
Commands->Destroy_Object ( Commands->Find_Object ( 101692 ) );
}
Commands->Destroy_Object ( obj );//one time zone--cleaning up
}
}
};
DECLARE_SCRIPT(M01_TailGunner_01_JDG, "")//M01_TAILGUNNER_01_ID 101470
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
if ( Commands->Find_Object ( M01_TAILGUN_01_ID ))
{
ActionParamsStruct params;
Vector3 tailgunPosition = Commands->Get_Position ( Commands->Find_Object ( M01_TAILGUN_01_ID ) );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( tailgunPosition, .25f, .25f );
Commands->Action_Goto( obj, params );
}
}
void Killed( GameObject * obj, GameObject * killer )
{
if ( Commands->Find_Object ( M01_TAILGUN_01_ID ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TAILGUN_01_ID ), 0, M01_YOUR_OPERATOR_IS_DEAD_JDG, 0 );
}
}
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_WALKING_WAYPATH_02_JDG );
Commands->Action_Enter_Exit ( obj, params );
}
}
};
DECLARE_SCRIPT(M01_TailGunner_02_JDG, "")//M01_TAILGUNNER_02_ID 101471
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
if ( Commands->Find_Object ( M01_TAILGUN_02_ID ))
{
ActionParamsStruct params;
Vector3 tailgunPosition = Commands->Get_Position ( Commands->Find_Object ( M01_TAILGUN_02_ID ) );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( tailgunPosition, .25f, .25f );
Commands->Action_Goto( obj, params );
}
}
void Killed( GameObject * obj, GameObject * killer )
{
if ( Commands->Find_Object ( M01_TAILGUN_02_ID ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TAILGUN_02_ID ), 0, M01_YOUR_OPERATOR_IS_DEAD_JDG, 0 );
}
}
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_WALKING_WAYPATH_02_JDG );
Commands->Action_Enter_Exit ( obj, params );
}
}
};
DECLARE_SCRIPT(M01_TailGunner_03_JDG, "")//M01_TAILGUNNER_03_ID 101472
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
if ( Commands->Find_Object ( M01_TAILGUN_03_ID ))
{
ActionParamsStruct params;
Vector3 tailgunPosition = Commands->Get_Position ( Commands->Find_Object ( M01_TAILGUN_03_ID ) );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( tailgunPosition, .25f, .35f );
Commands->Action_Goto( obj, params );
}
}
void Killed( GameObject * obj, GameObject * killer )
{
if ( Commands->Find_Object ( M01_TAILGUN_03_ID ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TAILGUN_03_ID ), 0, M01_YOUR_OPERATOR_IS_DEAD_JDG, 0 );
}
}
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_WALKING_WAYPATH_02_JDG );
Commands->Action_Enter_Exit ( obj, params );
}
}
};
DECLARE_SCRIPT(M01_TailGun_01_JDG, "")//M01_TAILGUN_01_ID 100243
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (param == M01_START_ACTING_JDG )
{
params.Set_Basic( this, 100, M01_HUNT_THE_PLAYER_JDG );
params.Set_Attack( STAR, 50, 0, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
}
}
};
DECLARE_SCRIPT(M01_TailGun_02_JDG, "")//M01_TAILGUN_02_ID 100244
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (param == M01_START_ACTING_JDG )
{
params.Set_Basic( this, 100, M01_HUNT_THE_PLAYER_JDG );
params.Set_Attack( STAR, 50, 0, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
}
}
};
DECLARE_SCRIPT(M01_TailGun_03_JDG, "")//M01_TAILGUN_03_ID 100245
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (param == M01_START_ACTING_JDG )
{
params.Set_Basic( this, 100, M01_HUNT_THE_PLAYER_JDG );
params.Set_Attack( STAR, 50, 0, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
}
}
};
DECLARE_SCRIPT(M01_Tailgun_02_SpawnApache_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
GameObject *controller = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(controller, "Test_Cinematic", "X1A_Tailgun_Apache_02.txt");
Commands->Destroy_Object ( obj );//this is a one-time zone--cleaning up
}
}
};
DECLARE_SCRIPT(M01_Civ_To_Minigunner_Guy_JDG, "")
{
void Created( GameObject * obj )
{
ActionParamsStruct params;
if (Commands->Find_Object (M01_COMMCENTER_BASE_SCAPEGOAT_JDG))
{
Vector3 myGotoSpot = Commands->Get_Position ( Commands->Find_Object (M01_COMMCENTER_BASE_SCAPEGOAT_JDG) );
params.Set_Basic( this, 50, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( myGotoSpot, RUN, 20 );
Commands->Action_Goto( obj, params );
}
}
};
DECLARE_SCRIPT(M01_Comm_Base_Commander_JDG, "")//this guys ID is M01_COMMCENTER_BASE_COMMANDER_JDG 101936
{
bool enemyEngaged;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(enemyEngaged, 1);
}
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
enemyEngaged = false;
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR && enemyEngaged == false)
{
enemyEngaged = true;
Commands->Innate_Enable(obj);
Commands->Action_Reset ( obj, 100 );
Commands->Innate_Force_State_Enemy_Seen ( obj, STAR );
Commands->Enable_Hibernation( obj, true );
//Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CUE_KANE_AND_HAVOC_CONVERSATION_JDG, 0 );
}
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
if (enemy == STAR && enemyEngaged == false)
{
enemyEngaged = true;
Commands->Innate_Enable(obj);
Commands->Action_Reset ( obj, 100 );
Commands->Innate_Force_State_Enemy_Seen ( obj, STAR );
Commands->Enable_Hibernation( obj, true );
//Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CUE_KANE_AND_HAVOC_CONVERSATION_JDG, 0 );
}
}
void Killed( GameObject * obj, GameObject * killer )
{
if (killer == STAR)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CUE_KANE_AND_HAVOC_CONVERSATION_JDG, 0 );
Vector3 spawn_location = Commands->Get_Position ( obj );
spawn_location.Z = spawn_location.Z + 0.75f;
bool player_has_level02_card = Commands->Has_Key( STAR, 2 );
if (player_has_level02_card == false)
{
Commands->Create_Object ( "Level_02_Keycard", spawn_location );
}
}
}
};
/*DECLARE_SCRIPT(M01_Comm_Base_Scapegoat_JDG, "")//this guys ID is M01_COMMCENTER_BASE_SCAPEGOAT_JDG 101938
{
void Created( GameObject * obj )
{
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
}
};
DECLARE_SCRIPT(M01_Comm_Ceiling_Camera_JDG, "")//this guys ID is M01_COMMCENTER_CEILING_CAMERA_JDG 101937
{
void Created( GameObject * obj )
{
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_START_ATTACKING_01_JDG);
params.Set_Attack( Commands->Find_Object (M01_COMMCENTER_BASE_SCAPEGOAT_JDG), 0, 0, true );
Commands->Action_Attack( obj, params );
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
switch (param)
{
case M01_START_ATTACKING_01_JDG: //kane has told you to kill the scapegoat
{
if (Commands->Find_Object (M01_COMMCENTER_BASE_SCAPEGOAT_JDG))
{
params.Set_Basic(this, 100, M01_START_ATTACKING_01_JDG);
params.Set_Attack( Commands->Find_Object (M01_COMMCENTER_BASE_SCAPEGOAT_JDG), 100, 0, true );
Commands->Action_Attack( obj, params );
}
}
break;
}
}
};*/
DECLARE_SCRIPT(M01_Comm_Stationary_Tech_JDG, "")
{
//these guys IDs are M01_COMMCENTER_UPSTAIRS_TECH_JDG 101168
//M01_COMMCENTER_WAROOM_TECH_01_JDG 101170
//M01_COMMCENTER_WAROOM_TECH_02_JDG 101171
Vector3 myLocation;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(myLocation, 1);
}
void Created( GameObject * obj )
{
myLocation = Commands->Get_Position ( obj );
Commands->Innate_Disable(obj);
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
switch (param)
{
case M01_PLAYER_IS_INSIDE_COMM_CENTER_JDG:
{
Commands->Innate_Enable(obj);
Commands->Set_Innate_Aggressiveness ( obj, 0.15f );
Commands->Set_Innate_Take_Cover_Probability ( obj, 1.0f );
params.Set_Basic(this, 30, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( myLocation, WALK, 0 );
Commands->Action_Goto( obj, params );
}
break;
}
}
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, 30, M01_DOING_ANIMATION_01_JDG);
params.Set_Animation( "H_A_CON2", 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, 30, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( myLocation, WALK, 0 );
Commands->Action_Goto( obj, params );
}
}
};
DECLARE_SCRIPT(M01_Comm_ComputerRoom_Tech_JDG, "")//this guys ID is M01_COMMCENTER_COMPUTERROOM_TECH_JDG 101172
{
Vector3 myLocation;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(myLocation, 1);
}
void Created( GameObject * obj )
{
myLocation = Commands->Get_Position ( obj );
Commands->Innate_Disable(obj);
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
switch (param)
{
case M01_PLAYER_IS_INSIDE_COMM_CENTER_JDG:
{
Commands->Innate_Enable(obj);
Commands->Set_Innate_Aggressiveness ( obj, 0.15f );
Commands->Set_Innate_Take_Cover_Probability ( obj, 1.0f );
params.Set_Basic(this, 30, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( myLocation, WALK, 0 );
Commands->Action_Goto( obj, params );
}
break;
}
}
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, 30, M01_DOING_ANIMATION_01_JDG);
params.Set_Animation( "H_A_CON2", 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, 30, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( myLocation, WALK, 0 );
Commands->Action_Goto( obj, params );
}
}
};
DECLARE_SCRIPT(M01_Comm_Upstairs_Guard_JDG, "")//this guys ID is M01_COMMCENTER_UPSTAIRS_GUARD_JDG 101946
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
switch (param)
{
case M01_PLAYER_IS_INSIDE_COMM_CENTER_JDG:
{
Commands->Innate_Enable(obj);
Commands->Set_Innate_Aggressiveness ( obj, 0.75f );
Commands->Set_Innate_Take_Cover_Probability ( obj, 0.5f );
params.Set_Basic(this, 30, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Vector3 (0,0,0), WALK, 0 );
params.WaypathID = 101940;
params.WaypointStartID = 101944;
params.WaypointEndID = 101941;
Commands->Action_Goto( obj, params );
}
break;
}
}
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)
{
float delayTimer = Commands->Get_Random ( 1, 10 );
Commands->Start_Timer(obj, this, delayTimer, M01_WALKING_WAYPATH_01_JDG);
}
else if (action_id == M01_WALKING_WAYPATH_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
float delayTimer = Commands->Get_Random ( 1, 10 );
Commands->Start_Timer(obj, this, delayTimer, M01_WALKING_WAYPATH_02_JDG);
}
}
void Timer_Expired(GameObject * obj, int timer_id)
{
ActionParamsStruct params;
switch (timer_id)
{
case M01_WALKING_WAYPATH_01_JDG:
{
params.Set_Basic(this, 30, M01_WALKING_WAYPATH_02_JDG);
params.Set_Movement( Vector3 (0,0,0), WALK, 0 );
params.WaypathID = 101940;
params.WaypointStartID = 101944;
params.WaypointEndID = 101941;
Commands->Action_Goto( obj, params );
}
break;
case M01_WALKING_WAYPATH_02_JDG:
{
params.Set_Basic(this, 30, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Vector3 (0,0,0), WALK, 0 );
params.WaypathID = 101940;
params.WaypointStartID = 101941;
params.WaypointEndID = 101944;
Commands->Action_Goto( obj, params );
}
break;
}
}
};
DECLARE_SCRIPT(M01_Comm_Base_Commander_Conv_Start_Zone_JDG, "")//this guys ID is 101947
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CUE_KANE_AND_NUMBER2_CONVERSATION_JDG, 0 );
GameObject * zone01 = Commands->Find_Object ( 101947 );
if (zone01 != NULL)
{
Commands->Destroy_Object ( zone01 );//this is a one-time only zone--cleaning up
}
GameObject * zone02 = Commands->Find_Object ( 111809 );
if (zone02 != NULL)
{
Commands->Destroy_Object ( zone02 );//this is a one-time only zone--cleaning up
}
}
}
};
DECLARE_SCRIPT(M01_Comm_Kane_n_Havoc_Conv_Start_Zone_JDG, "")//this guys ID is 101947
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CUE_KANE_AND_HAVOC_CONVERSATION_JDG, 0 );
Commands->Destroy_Object ( obj );//this is one-time only zone--cleaning up
}
}
};
DECLARE_SCRIPT(M01_HON_MCT_Placeholder_JDG, "")
{
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_KILL_THE_HON_JDG, 0 );
}
};
DECLARE_SCRIPT(M01_Comm_MCT_Placeholder_JDG, "")
{
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_KILL_THE_COMM_JDG, 0 );
}
};
DECLARE_SCRIPT(M01_GDI_Toolshed_PatrolGuy_JDG, "")
{
void Created( GameObject * obj )
{
ActionParamsStruct params;
params.Set_Basic( this, 30, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(0,0,0), WALK, .05f );
params.WaypathID = 102153;
params.WaypointStartID = 102154;
params.WaypointEndID = 102157;
Commands->Action_Goto( obj, params );
}
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_Idle_Animation ( );
params.Set_Basic( this, 30, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation (animationName, false);
Commands->Action_Play_Animation (obj, params);
}
break;
case M01_DOING_ANIMATION_01_JDG:
{
params.Set_Basic( this, 30, M01_WALKING_WAYPATH_02_JDG );
params.Set_Movement( Vector3(0,0,0), WALK, .05f );
params.WaypathID = 102159;
params.WaypointStartID = 102160;
params.WaypointEndID = 102168;
Commands->Action_Goto( obj, params );
}
break;
case M01_WALKING_WAYPATH_02_JDG:
{
char *animationName = M01_Choose_Idle_Animation ( );
params.Set_Basic( this, 30, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation (animationName, false);
Commands->Action_Play_Animation (obj, params);
}
break;
case M01_DOING_ANIMATION_02_JDG:
{
params.Set_Basic( this, 30, M01_WALKING_WAYPATH_03_JDG );
params.Set_Movement( Vector3(0,0,0), WALK, .05f );
params.WaypathID = 102176;
params.WaypointStartID = 102177;
params.WaypointEndID = 102183;
Commands->Action_Goto( obj, params );
}
break;
case M01_WALKING_WAYPATH_03_JDG:
{
char *animationName = M01_Choose_Idle_Animation ( );
params.Set_Basic( this, 30, M01_DOING_ANIMATION_03_JDG );
params.Set_Animation (animationName, false);
Commands->Action_Play_Animation (obj, params);
}
break;
case M01_DOING_ANIMATION_03_JDG:
{
params.Set_Basic( this, 30, M01_WALKING_WAYPATH_04_JDG );
params.Set_Movement( Vector3(0,0,0), WALK, .05f );
params.WaypathID = 102176;
params.WaypointStartID = 102183;
params.WaypointEndID = 102177;
Commands->Action_Goto( obj, params );
}
break;
case M01_WALKING_WAYPATH_04_JDG:
{
char *animationName = M01_Choose_Idle_Animation ( );
params.Set_Basic( this, 30, M01_DOING_ANIMATION_04_JDG );
params.Set_Animation (animationName, false);
Commands->Action_Play_Animation (obj, params);
}
break;
case M01_DOING_ANIMATION_04_JDG:
{
params.Set_Basic( this, 30, M01_WALKING_WAYPATH_05_JDG );
params.Set_Movement( Vector3(0,0,0), WALK, .05f );
params.WaypathID = 102159;
params.WaypointStartID = 102168;
params.WaypointEndID = 102160;
Commands->Action_Goto( obj, params );
}
break;
case M01_WALKING_WAYPATH_05_JDG:
{
char *animationName = M01_Choose_Idle_Animation ( );
params.Set_Basic( this, 30, M01_DOING_ANIMATION_05_JDG );
params.Set_Animation (animationName, false);
Commands->Action_Play_Animation (obj, params);
}
break;
case M01_DOING_ANIMATION_05_JDG:
{
params.Set_Basic( this, 30, M01_WALKING_WAYPATH_06_JDG );
params.Set_Movement( Vector3(0,0,0), WALK, .05f );
params.WaypathID = 102153;
params.WaypointStartID = 102157;
params.WaypointEndID = 102154;
Commands->Action_Goto( obj, params );
}
break;
case M01_WALKING_WAYPATH_06_JDG:
{
char *animationName = M01_Choose_Idle_Animation ( );
params.Set_Basic( this, 30, M01_DOING_ANIMATION_06_JDG );
params.Set_Animation (animationName, false);
Commands->Action_Play_Animation (obj, params);
}
break;
case M01_DOING_ANIMATION_06_JDG:
{
params.Set_Basic( this, 30, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(0,0,0), WALK, .05f );
params.WaypathID = 102153;
params.WaypointStartID = 102154;
params.WaypointEndID = 102157;
Commands->Action_Goto( obj, params );
}
break;
}
}
break;
}
}
};
DECLARE_SCRIPT(M01_GDI_Base_Spawner_Controller_JDG, "")//this guys ID is M01_GDIBASE_SPAWNER_CONTROLLER_JDG
{
int active_unit_count;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(active_unit_count, 1);
}
void Created( GameObject * obj )
{
active_unit_count = 0;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_SPAWNER_IS_DEAD_JDG:
{
active_unit_count--;
Commands->Send_Custom_Event( obj, obj, 0, M01_SPAWNER_SPAWN_PLEASE_JDG, 0 );
Commands->Debug_Message ( "***************************GDI Base spawner has recieved custom that someone is dead\n" );
}
break;
case M01_SPAWNER_SPAWN_PLEASE_JDG:
{
Commands->Enable_Hibernation( obj, false );
int currentDifficulty = Commands->Get_Difficulty_Level( );
int easy = 0;
int medium = 1;
int hard = 2;
if (currentDifficulty == easy)
{
if (active_unit_count == 0)
{
Commands->Trigger_Spawner( M01_GDIBASE_SPAWNER_A_JDG );
active_unit_count++;
Commands->Debug_Message ( "***************************GDI Base spawner has spawned an easy guy\n" );
}
}
else if (currentDifficulty == medium)
{
if (active_unit_count < 2)
{
int random = Commands->Get_Random(0.5f, 2.5f);
if ((random >= 0.5f) && (random < 1.5f))
{
Commands->Trigger_Spawner( M01_GDIBASE_SPAWNER_A_JDG );
active_unit_count++;
}
else
{
Commands->Trigger_Spawner( M01_GDIBASE_SPAWNER_B_JDG );
active_unit_count++;
}
Commands->Debug_Message ( "***************************GDI Base spawner has spawned a medium guy\n" );
}
}
else if (currentDifficulty == hard)
{
if (active_unit_count < 3)
{
int random = Commands->Get_Random(0.5f, 3.5f);
if ((random >= 0.5f) && (random < 1.5f))
{
Commands->Trigger_Spawner( M01_GDIBASE_SPAWNER_A_JDG );
active_unit_count++;
}
else if ((random >= 1.5f) && (random < 2.5f))
{
Commands->Trigger_Spawner( M01_GDIBASE_SPAWNER_B_JDG );
active_unit_count++;
}
else
{
Commands->Trigger_Spawner( M01_GDIBASE_SPAWNER_C_JDG );
active_unit_count++;
}
Commands->Debug_Message ( "***************************GDI Base spawner has spawned a hard guy\n" );
}
}
Commands->Send_Custom_Event( obj, obj, 0, M01_SPAWNER_SPAWN_PLEASE_JDG, 10 );
}
break;
case M01_QUIT_SPAWNING_PLEASE_JDG:
{
if (Commands->Find_Object (M01_GDIBASE_SPAWNER_A_JDG))
{
Commands->Destroy_Object ( Commands->Find_Object (M01_GDIBASE_SPAWNER_A_JDG) );
}
if (Commands->Find_Object (M01_GDIBASE_SPAWNER_B_JDG))
{
Commands->Destroy_Object ( Commands->Find_Object (M01_GDIBASE_SPAWNER_B_JDG) );
}
if (Commands->Find_Object (M01_GDIBASE_SPAWNER_C_JDG))
{
Commands->Destroy_Object ( Commands->Find_Object (M01_GDIBASE_SPAWNER_C_JDG) );
}
Commands->Destroy_Object ( obj );
}
break;
}
}
};
DECLARE_SCRIPT(M01_GDI_Base_Spawner_Guy_JDG, "")
{
void Killed( GameObject * obj, GameObject * killer )
{
if (Commands->Find_Object ( M01_GDIBASE_SPAWNER_CONTROLLER_JDG ))
{
Commands->Debug_Message ( "***************************GDI Base/barn area spawner has been killed--sending custom\n" );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_GDIBASE_SPAWNER_CONTROLLER_JDG ), 0, M01_SPAWNER_IS_DEAD_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Tailgun_Run_Spawner_Controller_JDG, "")//this guys ID is M01_TAILGUNRUN_SPAWNER_CONTROLLER_JDG
{
int active_unit_count;
bool startup;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(active_unit_count, 1);
SAVE_VARIABLE(startup, 2);
}
void Created( GameObject * obj )
{
Commands->Enable_Hibernation( obj, false );
active_unit_count = 0;
startup = true;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_SPAWNER_IS_DEAD_JDG:
{
active_unit_count--;
Commands->Send_Custom_Event( obj, obj, 0, M01_SPAWNER_SPAWN_PLEASE_JDG, 0 );
}
break;
case M01_SPAWNER_SPAWN_PLEASE_JDG:
{
int currentDifficulty = Commands->Get_Difficulty_Level( );
int easy = 0;
int medium = 1;
int hard = 2;
if (startup == true)
{
startup = false;
if (currentDifficulty == easy)
{
Commands->Trigger_Spawner( M01_TAILGUNRUN_SPAWNER_A_JDG );
active_unit_count++;
}
else if (currentDifficulty == medium)
{
Commands->Trigger_Spawner( M01_TAILGUNRUN_SPAWNER_A_JDG );
Commands->Trigger_Spawner( M01_TAILGUNRUN_SPAWNER_B_JDG );
active_unit_count += 2;
}
else if (currentDifficulty == hard)
{
Commands->Trigger_Spawner( M01_TAILGUNRUN_SPAWNER_A_JDG );
Commands->Trigger_Spawner( M01_TAILGUNRUN_SPAWNER_B_JDG );
Commands->Trigger_Spawner( M01_TAILGUNRUN_SPAWNER_C_JDG );
active_unit_count += 3;
}
}
else
{
if (currentDifficulty == easy)
{
if (active_unit_count == 0)
{
Commands->Trigger_Spawner( M01_TAILGUNRUN_SPAWNER_A_JDG );
active_unit_count++;
}
}
else if (currentDifficulty == medium)
{
if (active_unit_count < 2)
{
int random = Commands->Get_Random(0.5f, 2.5f);
if ((random >= 0.5f) && (random < 1.5f))
{
Commands->Trigger_Spawner( M01_TAILGUNRUN_SPAWNER_A_JDG );
active_unit_count++;
}
else
{
Commands->Trigger_Spawner( M01_TAILGUNRUN_SPAWNER_B_JDG );
active_unit_count++;
}
}
}
else if (currentDifficulty == hard)
{
if (active_unit_count < 3)
{
int random = Commands->Get_Random(0.5f, 3.5f);
if ((random >= 0.5f) && (random < 1.5f))
{
Commands->Trigger_Spawner( M01_TAILGUNRUN_SPAWNER_A_JDG );
active_unit_count++;
}
else if ((random >= 1.5f) && (random < 2.5f))
{
Commands->Trigger_Spawner( M01_TAILGUNRUN_SPAWNER_B_JDG );
active_unit_count++;
}
else
{
Commands->Trigger_Spawner( M01_TAILGUNRUN_SPAWNER_C_JDG );
active_unit_count++;
}
}
}
}
}
break;
case M01_QUIT_SPAWNING_PLEASE_JDG:
{
if (Commands->Find_Object (M01_TAILGUNRUN_SPAWNER_A_JDG))
{
Commands->Destroy_Object ( Commands->Find_Object (M01_TAILGUNRUN_SPAWNER_A_JDG) );
}
if (Commands->Find_Object (M01_TAILGUNRUN_SPAWNER_B_JDG))
{
Commands->Destroy_Object ( Commands->Find_Object (M01_TAILGUNRUN_SPAWNER_B_JDG) );
}
if (Commands->Find_Object (M01_TAILGUNRUN_SPAWNER_C_JDG))
{
Commands->Destroy_Object ( Commands->Find_Object (M01_TAILGUNRUN_SPAWNER_C_JDG) );
}
Commands->Destroy_Object ( obj );
}
break;
}
}
};
DECLARE_SCRIPT(M01_TailgunRun_Spawner_Guy_JDG, "")//Innate_Disable)(GameObject* object);(*Innate_Enable)(GameObject* object);
{
void Killed( GameObject * obj, GameObject * killer )
{
if (Commands->Find_Object ( M01_TAILGUNRUN_SPAWNER_CONTROLLER_JDG ))
{
Commands->Debug_Message ( "***************************taigun run area spawner has been killed--sending custom\n" );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_TAILGUNRUN_SPAWNER_CONTROLLER_JDG ), 0, M01_SPAWNER_IS_DEAD_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_ChurchArea_Spawner_Controller_JDG, "")//this guys ID is M01_CHURCHAREA_SPAWNER_CONTROLLER_JDG
{
int active_unit_count;
bool startup;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(active_unit_count, 1);
SAVE_VARIABLE(startup, 2);
}
void Created( GameObject * obj )
{
Commands->Enable_Hibernation( obj, false );
active_unit_count = 0;
startup = true;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_SPAWNER_IS_DEAD_JDG:
{
active_unit_count--;
Commands->Send_Custom_Event( obj, obj, 0, M01_SPAWNER_SPAWN_PLEASE_JDG, 0 );
}
break;
case M01_SPAWNER_SPAWN_PLEASE_JDG:
{
int currentDifficulty = Commands->Get_Difficulty_Level( );
int easy = 0;
int medium = 1;
int hard = 2;
if (startup == true)
{
startup = false;
if (currentDifficulty == easy)
{
Commands->Trigger_Spawner( M01_CHURCHAREA_SPAWNER_A_JDG );
active_unit_count++;
}
else if (currentDifficulty == medium)
{
Commands->Trigger_Spawner( M01_CHURCHAREA_SPAWNER_A_JDG );
Commands->Trigger_Spawner( M01_CHURCHAREA_SPAWNER_B_JDG );
active_unit_count += 2;
}
else if (currentDifficulty == hard)
{
Commands->Trigger_Spawner( M01_CHURCHAREA_SPAWNER_A_JDG );
Commands->Trigger_Spawner( M01_CHURCHAREA_SPAWNER_B_JDG );
Commands->Trigger_Spawner( M01_CHURCHAREA_SPAWNER_C_JDG );
active_unit_count += 3;
}
}
else
{
if (currentDifficulty == easy)
{
if (active_unit_count == 0)
{
Commands->Trigger_Spawner( M01_CHURCHAREA_SPAWNER_A_JDG );
active_unit_count++;
}
}
else if (currentDifficulty == medium)
{
if (active_unit_count < 2)
{
int random = Commands->Get_Random(0.5f, 2.5f);
if ((random >= 0.5f) && (random < 1.5f))
{
Commands->Trigger_Spawner( M01_CHURCHAREA_SPAWNER_A_JDG );
active_unit_count++;
}
else
{
Commands->Trigger_Spawner( M01_CHURCHAREA_SPAWNER_B_JDG );
active_unit_count++;
}
}
}
else if (currentDifficulty == hard)
{
if (active_unit_count < 3)
{
int random = Commands->Get_Random(0.5f, 3.5f);
if ((random >= 0.5f) && (random < 1.5f))
{
Commands->Trigger_Spawner( M01_CHURCHAREA_SPAWNER_A_JDG );
active_unit_count++;
}
else if ((random >= 1.5f) && (random < 2.5f))
{
Commands->Trigger_Spawner( M01_CHURCHAREA_SPAWNER_B_JDG );
active_unit_count++;
}
else
{
Commands->Trigger_Spawner( M01_CHURCHAREA_SPAWNER_C_JDG );
active_unit_count++;
}
}
}
}
}
break;
case M01_QUIT_SPAWNING_PLEASE_JDG:
{
if (Commands->Find_Object (M01_CHURCHAREA_SPAWNER_A_JDG))
{
Commands->Destroy_Object ( Commands->Find_Object (M01_CHURCHAREA_SPAWNER_A_JDG) );
}
if (Commands->Find_Object (M01_CHURCHAREA_SPAWNER_B_JDG))
{
Commands->Destroy_Object ( Commands->Find_Object (M01_CHURCHAREA_SPAWNER_B_JDG) );
}
if (Commands->Find_Object (M01_CHURCHAREA_SPAWNER_C_JDG))
{
Commands->Destroy_Object ( Commands->Find_Object (M01_CHURCHAREA_SPAWNER_C_JDG) );
}
Commands->Destroy_Object ( obj );
}
break;
}
}
};
DECLARE_SCRIPT(M01_ChurchArea_Spawner_Guy_JDG, "")
{
void Killed( GameObject * obj, GameObject * killer )
{
if (Commands->Find_Object ( M01_CHURCHAREA_SPAWNER_CONTROLLER_JDG ))
{
Commands->Debug_Message ( "***************************church area spawner has been killed--sending custom\n" );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_CHURCHAREA_SPAWNER_CONTROLLER_JDG ), 0, M01_SPAWNER_IS_DEAD_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Turn_on_the_Hand_of_Nod_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
if ( Commands->Find_Object ( M01_CHURCHAREA_SPAWNER_CONTROLLER_JDG ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_CHURCHAREA_SPAWNER_CONTROLLER_JDG ), 0, M01_QUIT_SPAWNING_PLEASE_JDG, 0 );
}
if ( Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_HON_SPAWNS_MINIGUNNER_JDG, 0 );
}
if (obj)
{
Commands->Destroy_Object ( obj);//this is a one-time only zone--cleaning up
}
}
}
};
/*DECLARE_SCRIPT(M01_BarnArea_NOD_Commander_JDG, "")//M01_BARNAREA_NOD_COMMANDER_02_JDG 102476
{
bool deadYet;
bool firstTimeDamaged;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(deadYet, 1);
SAVE_VARIABLE(firstTimeDamaged, 2);
}
void Created( GameObject * obj )
{
deadYet = false;
firstTimeDamaged = true;
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 10 );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (obj)
{
if (damager == STAR && deadYet == false && firstTimeDamaged == true)
{
Vector3 myPosition = Commands->Get_Position ( obj );
Vector3 playerPosition = Commands->Get_Position ( STAR );
float playerDistance = Commands->Get_Distance ( myPosition, playerPosition );
if (playerDistance >= 15)
{
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 );
}
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
deadYet = true;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
switch (param)
{
case M01_START_ACTING_JDG: //set timer--then call in next reinforcements
{
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
Commands->Send_Custom_Event( obj, obj, 0, M01_CALL_IN_REINFORCEMENTS_JDG, 0 );
}
break;
case M01_MODIFY_YOUR_ACTION_JDG://here comes player start calling in reinforcements
{
if (obj)
{
int currentDifficulty = Commands->Get_Difficulty_Level( );
int medium = 1;
int hard = 2;
float delayTimer;
if (currentDifficulty == hard)
{
delayTimer = 60;
}
else if (currentDifficulty == medium)
{
delayTimer = 90;
}
else
{
delayTimer = 120;
}
Commands->Send_Custom_Event( obj, obj, 0, M01_SEND_BARN_CHINOOK_JDG, delayTimer );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
}
}
break;
case M01_SEND_BARN_CHINOOK_JDG: //here comes player start calling in reinforcements
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_SEND_BARN_CHINOOK_JDG, 0 );
}
}
break;
case M01_CALL_IN_REINFORCEMENTS_JDG: //here comes player start calling in reinforcements
{
if (obj && deadYet == false)
{
GameObject * nodCommanderDialogController = Commands->Find_Object ( 103398 );
if (nodCommanderDialogController != NULL)
{
Commands->Send_Custom_Event( obj, nodCommanderDialogController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
float delayTimer = Commands->Get_Random ( 15, 30 );
Commands->Send_Custom_Event( obj, obj, 0, M01_CALL_IN_REINFORCEMENTS_JDG, delayTimer );
}
}
break;
}
}
}
};*/
DECLARE_SCRIPT(M01_TailgunRun_NOD_Commander_JDG, "")//this guys ID is M01_TAILGUNAREA_NOD_COMMANDER_JDG 102358
{
bool deadYet;
bool firstTimeDamaged;
bool playerSeen;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(deadYet, 1);
SAVE_VARIABLE(firstTimeDamaged, 2);
SAVE_VARIABLE(playerSeen, 2);
}
void Created( GameObject * obj )
{
deadYet = false;
firstTimeDamaged = true;
playerSeen = false;
Commands->Set_Innate_Is_Stationary ( obj, true );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (obj)
{
if (damager == STAR && deadYet == false && firstTimeDamaged == true)
{
Vector3 myPosition = Commands->Get_Position ( obj );
Vector3 playerPosition = Commands->Get_Position ( STAR );
float playerDistance = Commands->Get_Distance ( myPosition, playerPosition );
if (playerDistance >= 35)
{
firstTimeDamaged = false;
char *animationName = M01_Choose_Duck_Animation();
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );
}
}
}
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
if (enemy == STAR)
{
playerSeen = true;
}
}
void Sound_Heard( GameObject * obj, const CombatSound & sound )
{
if (sound.Creator == STAR)
{
if (/*sound.Type == SOUND_TYPE_GUNSHOT ||*/ sound.Type == SOUND_TYPE_BULLET_HIT)
{
if (obj)
{
if (deadYet == false && playerSeen == false)
{
Vector3 myPosition = Commands->Get_Position ( obj );
Vector3 playerPosition = Commands->Get_Position ( STAR );
float playerDistance = Commands->Get_Distance ( myPosition, playerPosition );
if (playerDistance >= 15)
{
//firstTimeDamaged = false;
char *animationName = M01_Choose_Duck_Animation();
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );
}
}
}
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
deadYet = true;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
switch (param)
{
case M01_START_ACTING_JDG: //set timer--then call in next reinforcements
{
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
Commands->Send_Custom_Event( obj, obj, 0, M01_CALL_IN_REINFORCEMENTS_JDG, 0 );
}
break;
case M01_MODIFY_YOUR_ACTION_JDG://here comes player start calling in reinforcements
{
if (obj)
{
int currentDifficulty = Commands->Get_Difficulty_Level( );
int medium = 1;
int hard = 2;
float delayTimer;
if (currentDifficulty == hard)
{
delayTimer = 60;
}
else if (currentDifficulty == medium)
{
delayTimer = 90;
}
else
{
delayTimer = 120;
}
Commands->Send_Custom_Event( obj, obj, 0, M01_SEND_TAILGUN_CHINOOK_JDG, delayTimer );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
}
}
break;
case M01_SEND_TAILGUN_CHINOOK_JDG: //here comes player start calling in reinforcements
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_SEND_TAILGUN_CHINOOK_JDG, 0 );
}
}
break;
case M01_CALL_IN_REINFORCEMENTS_JDG: //here comes player start calling in reinforcements
{
if (obj && deadYet == false)
{
GameObject * nodCommanderDialogController = Commands->Find_Object ( 103398 );
if (nodCommanderDialogController != NULL)
{
Commands->Send_Custom_Event( obj, nodCommanderDialogController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
float delayTimer = Commands->Get_Random ( 15, 30 );
Commands->Send_Custom_Event( obj, obj, 0, M01_CALL_IN_REINFORCEMENTS_JDG, delayTimer );
}
}
break;
}
}
}
};
DECLARE_SCRIPT(M01_ChurchArea_NOD_Commander_JDG, "")//M01_CHURCHAREA_NOD_COMMANDER_JDG 102357
{
bool deadYet;
bool firstTimeDamaged;
bool playerSeen;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(deadYet, 1);
SAVE_VARIABLE(firstTimeDamaged, 2);
SAVE_VARIABLE(playerSeen, 3);
}
void Created( GameObject * obj )
{
deadYet = false;
firstTimeDamaged = true;
playerSeen = false;
Commands->Set_Innate_Is_Stationary ( obj, true );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (obj)
{
if (damager == STAR && deadYet == false && firstTimeDamaged == true && playerSeen == false)
{
Vector3 myPosition = Commands->Get_Position ( obj );
Vector3 playerPosition = Commands->Get_Position ( STAR );
float playerDistance = Commands->Get_Distance ( myPosition, playerPosition );
if (playerDistance >= 15)
{
firstTimeDamaged = false;
char *animationName = M01_Choose_Duck_Animation();
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );
}
}
}
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
if (enemy == STAR)
{
playerSeen = true;
}
}
void Sound_Heard( GameObject * obj, const CombatSound & sound )
{
if (sound.Creator == STAR)
{
if (/*sound.Type == SOUND_TYPE_GUNSHOT ||*/ sound.Type == SOUND_TYPE_BULLET_HIT)
{
if (obj)
{
if (deadYet == false && playerSeen == false)
{
Vector3 myPosition = Commands->Get_Position ( obj );
Vector3 playerPosition = Commands->Get_Position ( STAR );
float playerDistance = Commands->Get_Distance ( myPosition, playerPosition );
if (playerDistance >= 15)
{
//firstTimeDamaged = false;
char *animationName = M01_Choose_Duck_Animation();
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );
}
}
}
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
deadYet = true;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
switch (param)
{
case M01_START_ACTING_JDG: //set timer--then call in next reinforcements
{
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
Commands->Send_Custom_Event( obj, obj, 0, M01_CALL_IN_REINFORCEMENTS_JDG, 0 );
}
break;
case M01_MODIFY_YOUR_ACTION_JDG://here comes player start calling in reinforcements
{
if (obj)
{
int currentDifficulty = Commands->Get_Difficulty_Level( );
int medium = 1;
int hard = 2;
float delayTimer;
if (currentDifficulty == hard)
{
delayTimer = 60;
}
else if (currentDifficulty == medium)
{
delayTimer = 90;
}
else
{
delayTimer = 120;
}
Commands->Send_Custom_Event( obj, obj, 0, M01_SEND_CHURCH_CHINOOK_JDG, delayTimer );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
}
}
break;
case M01_SEND_CHURCH_CHINOOK_JDG: //here comes player start calling in reinforcements
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_SEND_CHURCH_CHINOOK_JDG, 0 );
}
}
break;
case M01_CALL_IN_REINFORCEMENTS_JDG: //here comes player start calling in reinforcements
{
if (obj && deadYet == false)
{
GameObject * nodCommanderDialogController = Commands->Find_Object ( 103398 );
if (nodCommanderDialogController != NULL)
{
Commands->Send_Custom_Event( obj, nodCommanderDialogController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
float delayTimer = Commands->Get_Random ( 15, 30 );
Commands->Send_Custom_Event( obj, obj, 0, M01_CALL_IN_REINFORCEMENTS_JDG, delayTimer );
}
}
break;
}
}
}
};
DECLARE_SCRIPT(M01_GDI_Base_Artillery_Controller_JDG, "")//M01_GDIBASE_ARTILLERY_CONTROLLER_ID 102294
{
Vector3 locs[35];
Vector3 sound_location;
int last;
int bomb_sound;
float delayTimerMin;
float delayTimerMax;
bool command_clearance;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(sound_location, 1);
SAVE_VARIABLE(last, 2);
SAVE_VARIABLE(bomb_sound, 3);
SAVE_VARIABLE(command_clearance, 4);
SAVE_VARIABLE(delayTimerMin, 5);
SAVE_VARIABLE(delayTimerMax, 6);
}
void Created( GameObject * obj )
{
locs[0] = Vector3(96.983f, -75.433f, -7.894f);
locs[1] = Vector3(64.778f,-70.692f, -7.917f );
locs[2] = Vector3(39.923f, -55.085f, -6.986f);
locs[3] = Vector3(64.088f, -51.238f, -1.130f);
locs[4] = Vector3(90.243f, -42.054f, 7.820f);
locs[5] = Vector3(101.932f, -22.724f, 3.892f);
locs[6] = Vector3(110.260f, 6.870f, 11.455f);
locs[7] = Vector3(104.993f, 34.865f, 7.102f);
locs[8] = Vector3(88.132f, 31.827f, 9.156f);
locs[9] = Vector3(82.538f, -2.162f, 7.260f);
locs[10] = Vector3(73.697f, 10.886f, 10.622f);
locs[11] = Vector3(61.373f, -9.328f, 9.156f);
locs[12] = Vector3(45.354f, -11.552f, 7.243f);
locs[13] = Vector3(53.740f, -1.580f, 13.105f);
locs[14] = Vector3(53.059f, 17.069f, 13.105f);
locs[15] = Vector3(24.016f, 8.417f, 7.113f);
locs[16] = Vector3(22.190f, -4.718f, 10.245f);
locs[17] = Vector3(1.074f, -48.981f, -1.604f);
locs[18] = Vector3(-17.956f, -48.856f, 3.441f);
locs[19] = Vector3(-46.404f, -26.827f, 6.827f);
locs[20] = Vector3(-40.934f, -20.838f, 2.387f);
locs[21] = Vector3(9.578f, -17.054f, 7.419f);
locs[22] = Vector3(-6.474f, -17.783f, 5.052f);
locs[23] = Vector3(-8.360f, -6.935f, 11.862f);
locs[24] = Vector3(5.836f, -4.874f, 17.664f);
locs[25] = Vector3(-40.130f, -1.333f, 6.052f);
locs[26] = Vector3(-43.953f, 5.812f, 14.117f);
locs[27] = Vector3(-50.261f, 32.361f, 5.410f);
locs[28] = Vector3(-50.813f, 48.439f, 11.585f);
locs[29] = Vector3(-40.847f, 60.449f, 5.454f);
locs[30] = Vector3(-36.209f, 68.892f, 14.059f);
locs[31] = Vector3(-14.355f, 40.254f, 3.190f);
locs[32] = Vector3(9.023f, 39.898f, 4.112f);
locs[33] = Vector3(-5.525f, 41.241f, 12.043f);
locs[34] = Vector3(24.496f, 52.051f, 9.968f);
last = 40;
delayTimerMin = 20;
delayTimerMax = 30;
command_clearance = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, 2 );
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_PICK_A_NEW_LOCATION_JDG:
{
if (command_clearance == true)
{
int random = int(Commands->Get_Random(0, 35-WWMATH_EPSILON));
while (random == last)
{
random = int(Commands->Get_Random(0, 35-WWMATH_EPSILON));
}
last = random;
sound_location = locs[random];
sound_location.Z += 10;
bomb_sound = Commands->Create_Sound ( "Bomb_Falling_Sound_Twiddler", sound_location, obj );
Commands->Monitor_Sound ( obj, bomb_sound );
}
}
break;
case M01_GOTO_IDLE_JDG:
{
command_clearance = false;
if (sender == Commands->Find_Object ( M01_BARNAREA_NOD_COMMANDER_JDG ))//your "commander" is dead--destroy yourself
{
Commands->Destroy_Object ( obj );
}
}
break;
case M01_START_ACTING_JDG:
{
command_clearance = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, 2 );
}
break;
}
if (type == CUSTOM_EVENT_SOUND_ENDED )
{
if (param == bomb_sound)
{
Vector3 explosion_location = sound_location;
explosion_location.Z -= 10;
Commands->Create_Explosion("Ground Explosions Twiddler", explosion_location);
float delayTimer = Commands->Get_Random ( delayTimerMin, delayTimerMax );
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, delayTimer );
}
}
}
};
DECLARE_SCRIPT(M01_Nod_GuardTower_01_Enter_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject * sniperTarget01 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-148.379f, 342.954f, 9.656f));
Commands->Attach_Script(sniperTarget01, "M01_GuardTower_Sniper_Target_JDG", "-157.390 363.504 10.695, 148.379 342.954 9.656");
GameObject * sniperTarget02 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-149.930f, 338.900f, 9.170f));
Commands->Attach_Script(sniperTarget02, "M01_GuardTower_Sniper_Target_JDG", "-158.760 357.590 10.695, -149.930 338.900 9.170");
GameObject * sniperTarget03 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-146.812f, 339.745f, 9.345f));
Commands->Attach_Script(sniperTarget03, "M01_GuardTower_Sniper_Target_JDG", "-162.892 357.941 10.655, -146.812 339.745 9.345");
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_Nod_GuardTower_02_Enter_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject * sniperTarget01 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-153.944f, 602.434f, 4.226f));
Commands->Attach_Script(sniperTarget01, "M01_GuardTower_Sniper_Target_JDG", "-141.665 573.039 4.409, -153.944 602.434 4.226");
GameObject * sniperTarget02 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-156.672f, 605.082f, 4.163f));
Commands->Attach_Script(sniperTarget02, "M01_GuardTower_Sniper_Target_JDG", "-138.653 576.128 4.889, -156.672 605.082 4.163");
GameObject * sniperTarget03 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-160.792f, 606.559f, 4.075f));
Commands->Attach_Script(sniperTarget03, "M01_GuardTower_Sniper_Target_JDG", "-143.313 580.514 4.337, -160.792 606.559 4.075");
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_Nod_GuardTower_03_Enter_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject * sniperTarget01 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-254.164f, 564.968f, 30.630f));
Commands->Attach_Script(sniperTarget01, "M01_GuardTower_Sniper_Target_JDG", "-221.487 556.431 25.927, -254.164 564.968 30.630");
GameObject * sniperTarget02 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-253.935f, 561.105f, 30.922f));
Commands->Attach_Script(sniperTarget02, "M01_GuardTower_Sniper_Target_JDG", "-221.169 561.729 25.662, -253.935 561.105 30.922");
GameObject * sniperTarget03 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-257.185f, 562.242f, 30.540f));
Commands->Attach_Script(sniperTarget03, "M01_GuardTower_Sniper_Target_JDG", "-225.770 558.924 26.635, -257.185 562.242 30.540");
GameObject *controller1 = Commands->Create_Object("Invisible_Object", Vector3(-200.897f, 533.210f, 19.5f));
Commands->Attach_Script(controller1, "Test_Cinematic", "X1I_HON_Medlab_Chinook.txt");
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_GuardTower_Sniper_Target_JDG, "wave_location:vector3, delete_location:vector3")
{
Vector3 runToPosition;
Vector3 leavePosition;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(runToPosition, 1);
SAVE_VARIABLE(leavePosition, 2);
}
void Created( GameObject * obj )
{
runToPosition = Get_Vector3_Parameter("wave_location");
leavePosition = Get_Vector3_Parameter("delete_location");
Commands->Enable_Hibernation( obj, false );
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( runToPosition, RUN, 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 Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (param == M01_FACING_SPECIFIED_DIRECTION_01_JDG)
{
char *animationName = M01_Choose_Search_Animation ( );
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );
}
}
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:
{
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_FACING_SPECIFIED_DIRECTION_01_JDG, 1 );
}
break;
case M01_DOING_ANIMATION_01_JDG:
{
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_02_JDG );
params.Set_Movement( leavePosition, RUN, 5);
Commands->Action_Goto ( obj, params );
}
break;
case M01_WALKING_WAYPATH_02_JDG:
{
Commands->Destroy_Object ( obj );
}
break;
}
}
break;
}
}
};
DECLARE_SCRIPT(M01_Gunboat_Spawn_Hovercraft_Zone_JDG, "")//this guys id is 102500
{
/*bool okay_to_trigger;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(okay_to_trigger, 1);
}
void Created( GameObject * obj )
{
okay_to_trigger = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (param == M01_MODIFY_YOUR_ACTION_JDG)
{
okay_to_trigger = true;
}
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (okay_to_trigger == true)
{
if (enterer == Commands->Find_Object ( M01_TURRETBEACH_GUNBOAT_ID ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_SPAWN_THE_MEDIUM_TANK_JDG, 0 );
}
}
}*/
};
DECLARE_SCRIPT(M01_BasalBuilding_Population_JDG, "")
{
void Created( GameObject * obj )
{
Vector3 myPosition = Commands->Get_Position ( obj );
float myHomeRadius = Commands->Get_Random ( 2, 10 );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, myHomeRadius );
}
};
DECLARE_SCRIPT(M01_HarvesterScript_New_JDG, "")
{
int animation_count;
bool damagedYet;
bool deadYet;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(animation_count, 1);
SAVE_VARIABLE(damagedYet, 2);
SAVE_VARIABLE(deadYet, 3);
}
void Created( GameObject * obj )
{
animation_count = 0;
damagedYet = false;
deadYet = false;
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
Vector3 loc (-103.5f, 375.6f, 19.0f);
loc.X += Commands->Get_Random(-1.0f, 1.0f);
loc.Y += Commands->Get_Random(-1.0f, 1.0f);
params.Set_Movement(loc, 0.25f, 1);
Commands->Action_Goto(obj, params);
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (obj && damager == STAR)
{
if (damagedYet == false)
{
if (deadYet == false)
{
Commands->Send_Custom_Event ( obj, obj, 0, M01_START_ACTING_JDG, 0.25 );
}
damagedYet = true;
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ACTING_JDG)
{
if (deadYet == false)
{
int lockeHarvester = Commands->Create_Conversation( "M01_Add_Harvester_Objective", 100, 1000, true);
Commands->Join_Conversation( NULL, lockeHarvester, false, false );
Commands->Start_Conversation( lockeHarvester, lockeHarvester );
}
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
deadYet = true;
Commands->Create_Sound ( "EVA_Nod_Unit_Destroyed", Vector3 (0,0,0), obj);
Vector3 HarvesterDeathSpot (-93.9f, 426.6f, 21.0f);
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", HarvesterDeathSpot);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1D_GDIPowerUpDrop.txt");
}
void Action_Complete (GameObject *obj, int action_id, ActionCompleteReason complete_reason)
{
if (action_id == M01_WALKING_WAYPATH_01_JDG)
{
animation_count = 0;
Commands->Set_Animation(obj, "V_NOD_HRVSTR.V_NOD_HRVSTR", false);
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (animation_count <= 2)
{
Commands->Set_Animation(obj, "V_NOD_HRVSTR.V_NOD_HRVSTR", false);
animation_count++;
}
else
{
Gather_Tiberium();
}
}
void Gather_Tiberium(void)
{
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
Vector3 loc (-103.5f, 375.6f, 19.0f);
loc.X += Commands->Get_Random(-3.0f, 3.0f);
loc.Y += Commands->Get_Random(-3.0f, 3.0f);
params.Set_Movement(loc, 0.25f, 2);
Commands->Action_Goto(Owner(), params);
}
};
DECLARE_SCRIPT(M01_TibField_Guard01_New_JDG, "")
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (param == M01_START_ACTING_JDG)
{
GameObject * chemGuy01 = Commands->Find_Object ( 103270 );
GameObject * chemGuy02 = Commands->Find_Object ( 103271 );
GameObject * chemGuy03 = Commands->Find_Object ( 103272 );
if (chemGuy01 != NULL)
{
if (chemGuy02 != NULL)
{
if (chemGuy03 != NULL)
{
int tibFieldConv = Commands->Create_Conversation( "M01_TiberiumField_Conversation", 80, 25, true);
Commands->Join_Conversation( chemGuy01, tibFieldConv);
Commands->Join_Conversation( chemGuy02, tibFieldConv);
Commands->Join_Conversation( chemGuy03, tibFieldConv);
Commands->Start_Conversation( tibFieldConv, tibFieldConv );
}
}
}
}
}
};
DECLARE_SCRIPT(M01_Barn_Babushkas_Conversation_Zone_JDG, "")//this guys ID is 101662
{
bool okay_to_play_conversation;
bool playerEntered;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(okay_to_play_conversation, 1);
SAVE_VARIABLE(playerEntered, 2);
}
void Created( GameObject * obj )
{
okay_to_play_conversation = false;
playerEntered = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//babushka is in position--give okay for conversation
{
okay_to_play_conversation = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_CUE_BABUSHKA_CONVERSATION_JDG, 0 );
}
else if (param == M01_CUE_BABUSHKA_CONVERSATION_JDG)
{
if (playerEntered == true && okay_to_play_conversation == true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CUE_BABUSHKA_CONVERSATION_JDG, 0 );
GameObject * babushkaZone = Commands->Find_Object ( 101662 );
GameObject * billyZone = Commands->Find_Object ( 101661 );
if (babushkaZone != NULL)
{
Commands->Destroy_Object ( babushkaZone );//this is one-time only zone--cleaning up
}
if (billyZone != NULL)
{
Commands->Destroy_Object ( billyZone );//this is one-time only zone--cleaning up
}
}
}
}
void Exited( GameObject * obj, GameObject * exiter )
{
if (exiter == STAR)
{
playerEntered = false;
}
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
playerEntered = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_CUE_BABUSHKA_CONVERSATION_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Barn_Point_Guard_01_JDG, "")//this guys ID is 101439
{
void Created( GameObject * obj )
{
Commands->Set_Innate_Is_Stationary ( obj, true );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (obj)
{
if (damager == STAR)
{
Commands->Set_Innate_Is_Stationary ( obj, false );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
if (Commands->Find_Object ( 101658 ))
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( 101658 ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );//this is sent to his nearby buddy
}
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_BARN_GUARD_IS_DEAD_JDG, 0 );
}
};
DECLARE_SCRIPT(M01_Barn_Point_Guard_02_JDG, "")//this guys ID is 101658
{
bool retreating;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(retreating, 1);
}
void Created( GameObject * obj )
{
Vector3 myPosition = Commands->Get_Position ( obj );
retreating = false;
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 2.0f );
}
/*void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (param == M01_PLAYER_IS_ATTACKING_ME_JDG)
{
Commands->Set_Innate_Is_Stationary ( obj, false );
params.Set_Basic(this, 60, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Vector3 (-44.8f, 117.8f, 2.6f), .8f, 1 );
params.Set_Attack( STAR, 15, 0, true );
Commands->Action_Attack ( obj, params );
}
}*/
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (obj)
{
if (damager == STAR)
{
if (obj && retreating == false)
{
if (Commands->Get_Health (obj) > 0)
{
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Create_Sound ( "WereOutGunned_2", myPosition, obj );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
//ActionParamsStruct params;
//params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
//params.Set_Movement( Commands->Find_Object ( M01_BARN_PRISONER_01_ID ), 1, 5 );
//params.Set_Attack( STAR, 50, 0, true );
//Commands->Action_Attack ( obj, params );
retreating = true;
}
}
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_BARN_GUARD_IS_DEAD_JDG, 0 );
}
};
DECLARE_SCRIPT(M01_Barn_Door_Guard_JDG, "")//this guys ID is M01_BARN_DOOR_GUARD_ID 101512
{
void Created( GameObject * obj )
{
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5.0f );
}
//void Damaged( GameObject * obj, GameObject * damager, float amount )
//{
// Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_START_BARN_OBJECTIVE_JDG, 0 );
//}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_BARN_GUARD_IS_DEAD_JDG, 0 );
}
};
DECLARE_SCRIPT(M01_Barn_Talk_Guard_01_JDG, "")//this guys ID is M01_BARN_TALK_GUARD_01_ID 103318
{
void Created( GameObject * obj )
{
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5.0f );
}
//void Damaged( GameObject * obj, GameObject * damager, float amount )
//{
// Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_START_BARN_OBJECTIVE_JDG, 0 );
//}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_BARN_GUARD_IS_DEAD_JDG, 0 );
}
};
DECLARE_SCRIPT(M01_BarnArea_AI_ExitZone_JDG, "")//112015 -- tunnel 112016 -- shack
{
int hovercraftGuyId;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(hovercraftGuyId, 1);
}
void Created( GameObject * obj )
{
hovercraftGuyId = 0;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == M01_ROPE_IS_SENDING_ID_JDG)
{
hovercraftGuyId = param;
}
}
void Entered( GameObject * obj, GameObject * enterer )
{
GameObject * hovercraftGuy = Commands->Find_Object ( hovercraftGuyId );
if (hovercraftGuy != NULL && enterer == hovercraftGuy)
{
Commands->Send_Custom_Event( obj, hovercraftGuy, 0, M01_HOLD_YOUR_POSITION_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_TurretBeach_GDI_Guy_01_JDG, "")//
{
int turretbeach_conv;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(turretbeach_conv, 1);
}
void Created( GameObject * obj )
{
int myId = Commands->Get_ID ( obj );
GameObject * myExitZone01 = Commands->Find_Object ( 112015 );
GameObject * myExitZone02 = Commands->Find_Object ( 112016 );
if (myExitZone01 != NULL)
{
Commands->Send_Custom_Event( obj, myExitZone01, M01_ROPE_IS_SENDING_ID_JDG, myId, 0 );
}
if (myExitZone02 != NULL)
{
Commands->Send_Custom_Event( obj, myExitZone02, M01_ROPE_IS_SENDING_ID_JDG, myId, 0 );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_HOLD_YOUR_POSITION_JDG)
{
ActionParamsStruct params;
Commands->Action_Reset ( obj, 100 );
Vector3 myGuardSpot (-49.146f, 201.741f, 1.590f);
params.Set_Basic( this, 55, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( myGuardSpot, RUN, 1 );
Commands->Action_Goto( obj, params );
Commands->Set_Innate_Soldier_Home_Location ( obj, myGuardSpot, 5 );
}
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.H_A_X1E_Run") == 0)
{
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_HUNT_THE_PLAYER_JDG);
params.Set_Movement(STAR, RUN, 6);
Commands->Action_Goto(obj, params);
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
ActionParamsStruct params;
if (action_id == M01_HUNT_THE_PLAYER_JDG)
{
turretbeach_conv = Commands->Create_Conversation( "M01_TurretBeach_TurnOverTank_Conversation", 100, 50, true);
Commands->Join_Conversation( obj, turretbeach_conv, true, true );
Commands->Start_Conversation( turretbeach_conv, turretbeach_conv );
Commands->Monitor_Conversation (obj, turretbeach_conv);
}
else if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
{
if (action_id == turretbeach_conv)
{
params.Set_Basic(this, 80, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement(Vector3 (-49.7f, 109.7f, 2.0f), RUN, 0.5f);
Commands->Action_Goto(obj, params);
}
}
else if (action_id == M01_WALKING_WAYPATH_01_JDG)
{
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 10 );
}
}
};
DECLARE_SCRIPT(M01_TurretBeach_GDI_Guy_02_JDG, "")
{
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.H_A_X1E_Run") == 0)
{
ActionParamsStruct params;
GameObject * nearbyTailgun = Commands->Find_Object ( 101448 );
if (nearbyTailgun != NULL)
{
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement(nearbyTailgun, RUN, 0.5f);
Commands->Action_Goto(obj, params);
}
else
{
params.Set_Basic(this, 80, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement(Vector3 (-65.4f, 204.6f, 3.7f), RUN, 0.5f);
Commands->Action_Goto(obj, params);
}
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
if (action_id == M01_WALKING_WAYPATH_01_JDG)
{
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 10 );
}
}
};
DECLARE_SCRIPT(M01_DetentionPen_CivDeathMonitor, "")
{
bool damagedYet;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(damagedYet, 1);
}
void Created( GameObject * obj )
{
damagedYet = false;
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (obj && damagedYet == false)
{
damagedYet = true;
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0512I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0513I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
Commands->Mission_Complete ( false );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( 103380 ), 0, M01_CIVILIAN_KILLED_JDG, 0 );
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_GOING_TO_EVAC_SPOT02_JDG:
{
Vector3 myEvacSpot = Commands->Get_Position ( Commands->Find_Object ( 103380 ) );
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_GOING_TO_EVAC_SPOT02_JDG);
params.Set_Movement(myEvacSpot, RUN, 0.25f);
Commands->Action_Goto(obj, params);
}
break;
}
}
};
DECLARE_SCRIPT(M01_DetentionPen_GDIDeathMonitor, "")
{
bool damagedYet;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(damagedYet, 1);
}
void Created( GameObject * obj )
{
damagedYet = false;
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (obj && damagedYet == false)
{
damagedYet = true;
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0512I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0513I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
Commands->Mission_Complete ( false );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( 103380 ), 0, M01_CIVILIAN_KILLED_JDG, 0 );
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_GOING_TO_EVAC_SPOT02_JDG:
{
Vector3 myEvacSpot = Commands->Get_Position ( Commands->Find_Object ( 103381 ) );
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_GOING_TO_EVAC_SPOT02_JDG);
params.Set_Movement(myEvacSpot, RUN, 0.25f);
Commands->Action_Goto(obj, params);
}
break;
}
}
};
DECLARE_SCRIPT(M01_DetentionPen_Evac_Controller01_JDG, "")//103380
{
//civGuy01 = 101929
//civGuy02 = 101930
//civGuy03 = 101931
int evac_waypath_id;
int evac_helicopter_id;
int deadPrisonerTally;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(evac_waypath_id, 1);
SAVE_VARIABLE(evac_helicopter_id, 2);
SAVE_VARIABLE(deadPrisonerTally, 3);
}
void Created( GameObject * obj )
{
deadPrisonerTally = 0;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (param == M01_START_ACTING_JDG)//prisoner have been freed--call in air evac
{
GameObject * civGuy01 = Commands->Find_Object ( 101929 );
GameObject * civGuy02 = Commands->Find_Object ( 101930 );
GameObject * civGuy03 = Commands->Find_Object ( 101931 );
if ((civGuy01 != NULL) || (civGuy02 != NULL) || (civGuy03 != NULL) )
{
//Vector3 evacPosition = Commands->Get_Position ( obj );
//GameObject *controller = Commands->Create_Object("Invisible_Object", evacPosition);
//Commands->Attach_Script(controller, "Test_Cinematic", "XG_M01_Detention_EvacAnim.txt");
}
}
else if (param == M01_CIVILIAN_KILLED_JDG)
{
deadPrisonerTally++;
if (deadPrisonerTally == 1)
{
Commands->Mission_Complete ( false );
}
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG)//civs are on board--send aircraft away
{
GameObject * evacChopper = Commands->Find_Object ( evac_helicopter_id );
GameObject * evacWaypath = Commands->Find_Object ( evac_waypath_id );
if (evacChopper != NULL)
{
Commands->Send_Custom_Event ( obj, evacChopper, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
if (evacWaypath != NULL)
{
Commands->Send_Custom_Event ( obj, evacWaypath, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_DetentionCiv_Air_Evac_Waypath_JDG, "")
{
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "XG_TransprtBone.XG_EV1_PathA") == 0)
{
Commands->Set_Animation ( obj, "XG_TransprtBone.XG_EV1_Pathloop", true );
}
else if (stricmp(anim, "XG_TransprtBone.XG_EV1_PathZ") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Set_Animation ( obj, "XG_TransprtBone.XG_EV1_PathZ", false );
}
break;
}
}
};
DECLARE_SCRIPT(M01_DetentionCiv_Air_Evac_Chopper_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Set_Shield_Type ( obj, "Blamo" );
Commands->Enable_Hibernation( obj, false );
Commands->Disable_Physical_Collisions ( obj );
Commands->Send_Custom_Event ( obj, obj, 0, M01_GOTO_IDLE_JDG, 3 );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
float myMaxHealth = Commands->Get_Max_Health ( obj );
Commands->Set_Health ( obj, myMaxHealth );
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "v_GDI_trnspt.XG_EV1_trnsA") == 0)
{
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV1_trnsloop", true );
Commands->Send_Custom_Event ( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 2 );
GameObject * civGuy01 = Commands->Find_Object ( 101929 );
GameObject * civGuy02 = Commands->Find_Object ( 101930 );
GameObject * civGuy03 = Commands->Find_Object ( 101931 );
if (civGuy01 != NULL)
{
Commands->Send_Custom_Event ( obj, civGuy01, 0, M01_GOING_TO_EVAC_SPOT02_JDG, 0 );
}
if (civGuy02 != NULL)
{
Commands->Send_Custom_Event ( obj, civGuy02, 0, M01_GOING_TO_EVAC_SPOT02_JDG, 0 );
}
if (civGuy03 != NULL)
{
Commands->Send_Custom_Event ( obj, civGuy03, 0, M01_GOING_TO_EVAC_SPOT02_JDG, 0 );
}
}
else if (stricmp(anim, "v_GDI_trnspt.XG_EV1_trnsz") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV1_trnsz", false );
}
break;
case M01_GOTO_IDLE_JDG:
{
Commands->Enable_Collisions ( obj );
}
break;
case M01_DO_END_MISSION_CHECK_JDG:
{
GameObject * civGuy01 = Commands->Find_Object ( 101929 );
GameObject * civGuy02 = Commands->Find_Object ( 101930 );
GameObject * civGuy03 = Commands->Find_Object ( 101931 );
if ((civGuy01 != NULL) || (civGuy02 != NULL) || (civGuy03 != NULL) )
{
Commands->Send_Custom_Event ( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 2 );
}
else
{
GameObject * civController = Commands->Find_Object ( 103380 );
if (civController != NULL)
{
Commands->Send_Custom_Event ( obj, civController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
}
}
break;
}
}
};
DECLARE_SCRIPT(M01_DetentionPen_Evac_Controller02_JDG, "")//103381
{
//gdiGuy01 = 101926
//gdiGuy02 = 101927
//gdiGuy03 = 101928
int evac_waypath_id;
int evac_helicopter_id;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(evac_waypath_id, 1);
SAVE_VARIABLE(evac_helicopter_id, 2);
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (param == M01_START_ACTING_JDG)//prisoner have been freed--call in air evac
{
GameObject * civGuy01 = Commands->Find_Object ( 101929 );
GameObject * civGuy02 = Commands->Find_Object ( 101930 );
GameObject * civGuy03 = Commands->Find_Object ( 101931 );
if ((civGuy01 != NULL) || (civGuy02 != NULL) || (civGuy03 != NULL) )
{
//Vector3 evacPosition = Commands->Get_Position ( obj );
//GameObject *controller = Commands->Create_Object("Invisible_Object", evacPosition);
//Commands->Attach_Script(controller, "Test_Cinematic", "XG_M01_Detention_EvacAnim.txt");
}
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG)//civs are on board--send aircraft away
{
GameObject * evacChopper = Commands->Find_Object ( evac_helicopter_id );
GameObject * evacWaypath = Commands->Find_Object ( evac_waypath_id );
if (evacChopper != NULL)
{
Commands->Send_Custom_Event ( obj, evacChopper, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
if (evacWaypath != NULL)
{
Commands->Send_Custom_Event ( obj, evacWaypath, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_DetentionGDI_Air_Evac_Waypath_JDG, "")
{
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "XG_TransprtBone.XG_EV1_PathA") == 0)
{
Commands->Set_Animation ( obj, "XG_TransprtBone.XG_EV1_Pathloop", true );
}
else if (stricmp(anim, "XG_TransprtBone.XG_EV1_PathZ") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Set_Animation ( obj, "XG_TransprtBone.XG_EV1_PathZ", false );
}
break;
}
}
};
DECLARE_SCRIPT(M01_DetentionGDI_Air_Evac_Chopper_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Set_Shield_Type ( obj, "Blamo" );
Commands->Enable_Hibernation( obj, false );
Commands->Disable_Physical_Collisions ( obj );
Commands->Send_Custom_Event ( obj, obj, 0, M01_GOTO_IDLE_JDG, 3 );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
float myMaxHealth = Commands->Get_Max_Health ( obj );
Commands->Set_Health ( obj, myMaxHealth );
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "v_GDI_trnspt.XG_EV1_trnsA") == 0)
{
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV1_trnsloop", true );
Commands->Send_Custom_Event ( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 2 );
GameObject * GDIGuy01 = Commands->Find_Object ( 101926 );
GameObject * GDIGuy02 = Commands->Find_Object ( 101927 );
GameObject * GDIGuy03 = Commands->Find_Object ( 101928 );
if (GDIGuy01 != NULL)
{
Commands->Send_Custom_Event ( obj, GDIGuy01, 0, M01_GOING_TO_EVAC_SPOT02_JDG, 0 );
}
if (GDIGuy02 != NULL)
{
Commands->Send_Custom_Event ( obj, GDIGuy02, 0, M01_GOING_TO_EVAC_SPOT02_JDG, 0 );
}
if (GDIGuy03 != NULL)
{
Commands->Send_Custom_Event ( obj, GDIGuy03, 0, M01_GOING_TO_EVAC_SPOT02_JDG, 0 );
}
}
else if (stricmp(anim, "v_GDI_trnspt.XG_EV1_trnsz") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV1_trnsz", false );
}
break;
case M01_GOTO_IDLE_JDG:
{
Commands->Enable_Collisions ( obj );
}
break;
case M01_DO_END_MISSION_CHECK_JDG:
{
GameObject * GDIGuy01 = Commands->Find_Object ( 101926 );
GameObject * GDIGuy02 = Commands->Find_Object ( 101927 );
GameObject * GDIGuy03 = Commands->Find_Object ( 101928 );
if ((GDIGuy01 != NULL) || (GDIGuy02 != NULL) || (GDIGuy03 != NULL) )
{
Commands->Send_Custom_Event ( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 2 );
}
else
{
GameObject * civController = Commands->Find_Object ( 103381 );
if (civController != NULL)
{
Commands->Send_Custom_Event ( obj, civController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
}
}
break;
}
}
};
DECLARE_SCRIPT(M01_Nod_Chinook_Reinforcement_Guy_JDG, "")//
{
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "s_a_human.h_a_troopdrop") == 0)
{
Vector3 offset;
offset.X = Commands->Get_Random(1, 3);
offset.Y = Commands->Get_Random(1, 3);
offset.Z = 0;
ActionParamsStruct params;
params.Set_Basic(this, 100, 10);
params.Set_Movement(Commands->Get_Position(obj) + offset, 1.0f, 0.25f);
Commands->Action_Goto(obj, params);
Commands->Send_Custom_Event( obj, obj, 0, M01_HUNT_THE_PLAYER_JDG, 1 );
}
}
};
DECLARE_SCRIPT(M01_Hunt_The_Player_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Enable_Hibernation( obj, false );
Commands->Start_Timer ( obj, this, 60, M01_GOTO_IDLE_JDG );
Commands->Start_Timer ( obj, this, 5, M01_HUNT_THE_PLAYER_JDG );
ActionParamsStruct params;
params.Set_Basic( this, 45, M01_FACING_SPECIFIED_DIRECTION_01_JDG );
params.Set_Movement( STAR, RUN, 1, false );
Commands->Action_Goto ( obj, params );
}
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 >= 80)
{
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 );
}
}
else if (timer_id == M01_HUNT_THE_PLAYER_JDG)
{
if (obj)
{
ActionParamsStruct params;
params.Set_Basic( this, 45, M01_FACING_SPECIFIED_DIRECTION_01_JDG );
params.Set_Movement( STAR, RUN, 1, false );
Commands->Action_Goto ( obj, params );
Commands->Start_Timer ( obj, this, 5, M01_HUNT_THE_PLAYER_JDG );
}
}
}
};
DECLARE_SCRIPT(M01_HON_Escorts_Warroom_MCT_Commander_JDG, "")//103373
{
void Created( GameObject * obj )
{
Commands->Set_Innate_Is_Stationary ( obj, true );
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (param == M01_START_ACTING_JDG)//here come the mct escorts--run into mct room
{
Commands->Set_Innate_Is_Stationary ( obj, false );
Vector3 myHomeSpot(-181.1f, 541.4f, 3.5f);
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement(myHomeSpot, RUN, 0.25f);
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->Set_Innate_Is_Stationary ( obj, true );
ActionParamsStruct params;
params.Set_Basic(this, 45, M01_START_ATTACKING_01_JDG);
params.Set_Attack( STAR, 50, 0, false );
Commands->Action_Attack (obj, params);
}
}
};
DECLARE_SCRIPT(M01_HON_Escorts_Warroom_MCT_Protector01_JDG, "")//103374
{
void Created( GameObject * obj )
{
Commands->Set_Innate_Is_Stationary ( obj, true );
}
};
DECLARE_SCRIPT(M01_HON_Escorts_Warroom_MCT_Protector02_JDG, "")//103375
{
void Created( GameObject * obj )
{
Commands->Set_Innate_Is_Stationary ( obj, true );
}
};
DECLARE_SCRIPT(M01_HON_Engineer02_JDG, "")//101948
{
bool repairSoundPlaying;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(repairSoundPlaying, 1);
}
void Created( GameObject * obj )
{
repairSoundPlaying = false;
Commands->Set_Innate_Is_Stationary ( obj, true );
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (param == M01_PLAYER_IS_ATTACKING_ME_JDG)
{
Commands->Enable_Hibernation( obj, false );
Vector3 myRepairSpot (-178.925f, 542.943f, 4.932f);
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_START_ACTING_JDG );
params.Set_Attack( myRepairSpot, 10, 0, false );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
Commands->Start_Timer ( obj, this, 2, M01_START_ACTING_JDG );
}
}
void Timer_Expired( GameObject * obj, int timer_id )
{
if (timer_id == M01_START_ACTING_JDG)
{
Commands->Enable_Hibernation( obj, true );
Commands->Action_Reset ( obj, 100 );
Vector3 repair_sound_spot (-175.074f, 533.086f, 19.327f);
GameObject * handOfNod = Commands->Find_Object ( M01_HAND_OF_NOD_JDG );
float hon_max_health = Commands->Get_Max_Health ( handOfNod );
float hon_max_shield = Commands->Get_Max_Shield_Strength ( handOfNod );
float hon_current_health = Commands->Get_Health ( handOfNod );
if (hon_current_health > 0)
{
Commands->Set_Health ( handOfNod, hon_max_health );
Commands->Set_Shield_Strength ( handOfNod, hon_max_shield );
if (repairSoundPlaying == false)
{
Commands->Create_Sound ( "CnC_Healer_Sound", repair_sound_spot, obj );
repairSoundPlaying = true;
Commands->Start_Timer ( obj, this, 5, M01_GOTO_IDLE_JDG );
}
}
}
else if (timer_id == M01_GOTO_IDLE_JDG)
{
repairSoundPlaying = false;
}
}
};
DECLARE_SCRIPT(M01_HON_Chinook_Spawned_Soldier_03_GDI_JDG, "")
{
int buggy_id;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(buggy_id, 1);
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "s_a_human.h_a_troopdrop") == 0)
{
Vector3 myHomeSpot(-209.853f, 505.532f, 4.017f);//going to hand of nod backside
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement(myHomeSpot, RUN, 3);
Commands->Action_Goto(obj, params);
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
if (action_id == M01_WALKING_WAYPATH_01_JDG)
{
GameObject * buggyController = Commands->Find_Object ( 103367 );
if (buggyController != NULL)
{
Commands->Send_Custom_Event ( obj, buggyController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == M01_MODIFY_YOUR_ACTION_JDG)
{
buggy_id = param;
GameObject * buggy = Commands->Find_Object ( buggy_id );
if (buggy != NULL)
{
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_START_ATTACKING_01_JDG );
params.Set_Attack( buggy, 20, 3, true );
Commands->Action_Attack( obj, params );
}
}
}
};
DECLARE_SCRIPT(M01_HON_Chinook_Spawned_Soldier_04_GDI_JDG, "")
{
int buggy_id;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(buggy_id, 1);
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "s_a_human.h_a_troopdrop") == 0)
{
Vector3 myHomeSpot(-204.157f, 508.650f, 4.017f);//going to hand of nod backside
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement(myHomeSpot, RUN, 3);
Commands->Action_Goto(obj, params);
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == M01_MODIFY_YOUR_ACTION_JDG)
{
buggy_id = param;
GameObject * buggy = Commands->Find_Object ( buggy_id );
if (buggy != NULL)
{
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_START_ATTACKING_01_JDG );
params.Set_Attack( buggy, 20, 3, true );
Commands->Action_Attack( obj, params );
}
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
if (action_id == M01_WALKING_WAYPATH_01_JDG)
{
GameObject * buggyController = Commands->Find_Object ( 103367 );
if (buggyController != NULL)
{
Commands->Send_Custom_Event ( obj, buggyController, 0, M01_MODIFY_YOUR_ACTION_02_JDG, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_BuggyNew_Controller_JDG, "")//this guys id is 103367
{
int buggy_id;
bool gdi_minigunner_01_inPlace;
bool gdi_minigunner_02_inPlace;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(buggy_id, 1);
SAVE_VARIABLE(gdi_minigunner_01_inPlace, 2);
SAVE_VARIABLE(gdi_minigunner_02_inPlace, 3);
}
void Created( GameObject * obj )
{
gdi_minigunner_01_inPlace = false;
gdi_minigunner_02_inPlace = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (param == M01_START_ACTING_JDG)
{
Vector3 spawnLocation (-233.946f, 494.424f, 5.234f);
GameObject *buggy = Commands->Create_Object("Nod_Buggy", spawnLocation);
Commands->Set_Facing ( buggy, -135 );
Commands->Attach_Script(buggy, "M01_BuggyScript_New_JDG", "");
buggy_id = Commands->Get_ID ( buggy );
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG)
{
gdi_minigunner_01_inPlace = true;
int minigunner01_id = Commands->Get_ID ( sender );
GameObject *buggy = Commands->Find_Object ( buggy_id );
if (buggy != NULL)
{
Commands->Send_Custom_Event ( obj, buggy, M01_MODIFY_YOUR_ACTION_02_JDG, minigunner01_id, 0 );
Commands->Send_Custom_Event ( obj, sender, M01_MODIFY_YOUR_ACTION_JDG, buggy_id, 0 );
}
}
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG)
{
gdi_minigunner_02_inPlace = true;
int minigunner02_id = Commands->Get_ID ( sender );
GameObject *buggy = Commands->Find_Object ( buggy_id );
if (buggy != NULL)
{
Commands->Send_Custom_Event ( obj, buggy, M01_MODIFY_YOUR_ACTION_03_JDG, minigunner02_id, 0 );
Commands->Send_Custom_Event ( obj, sender, M01_MODIFY_YOUR_ACTION_JDG, buggy_id, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_BuggyScript_New_JDG, "")
{
int minigunner01_id;
int minigunner02_id;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(minigunner01_id, 1);
SAVE_VARIABLE(minigunner02_id, 2);
}
void Created( GameObject * obj )
{
Commands->Innate_Soldier_Enable_Enemy_Seen ( obj, true );
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(0,0,0), 0.5f, 5 );
params.WaypathID = 103289;
params.WaypointStartID = 103290;
params.AttackActive = false;
Commands->Action_Attack( obj, params );
Commands->Send_Custom_Event ( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 2 );
float myMaxHealth = Commands->Get_Max_Health ( obj );
float myNewHealth = myMaxHealth / 2;
Commands->Set_Health ( obj, myNewHealth );
float myMaxShield = Commands->Get_Max_Shield_Strength ( obj );
float myNewShield = myMaxShield / 2;
Commands->Set_Shield_Strength ( obj, myNewShield );
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Create_Sound ( "EVA_Nod_Unit_Destroyed", Vector3 (0,0,0), obj);
Vector3 buggyDeathSpot (-217.0f, 499.4f, 4.0f);
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", buggyDeathSpot);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1D_GDIPowerUpDrop.txt");
}
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_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(0,0,0), 0.5f, 5 );
params.WaypathID = 103289;
params.AttackActive = false;
Commands->Action_Attack( obj, params );
Commands->Send_Custom_Event ( obj, obj, 0, M01_MODIFY_YOUR_ACTION_04_JDG, 1 );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (type == M01_MODIFY_YOUR_ACTION_02_JDG)
{
minigunner01_id = param;
Commands->Send_Custom_Event ( obj, obj, 0, M01_MODIFY_YOUR_ACTION_04_JDG, 0 );
}
else if (type == M01_MODIFY_YOUR_ACTION_03_JDG)
{
minigunner02_id = param;
Commands->Send_Custom_Event ( obj, obj, 0, M01_MODIFY_YOUR_ACTION_04_JDG, 0 );
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG)
{
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(0,0,0), 0.5f, 5 );
params.WaypathID = 103289;
params.Set_Attack( STAR, 50, 2, true );
Commands->Modify_Action ( obj, M01_WALKING_WAYPATH_01_JDG, params, false, true );
}
else if (param == M01_MODIFY_YOUR_ACTION_04_JDG)
{
GameObject * minigunner01 = Commands->Find_Object ( minigunner01_id );
GameObject * minigunner02 = Commands->Find_Object ( minigunner02_id );
if (minigunner01 != NULL)
{
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(0,0,0), 0.5f, 5 );
params.WaypathID = 103289;
params.Set_Attack( minigunner01, 50, 2, true );
Commands->Modify_Action ( obj, M01_WALKING_WAYPATH_01_JDG, params, false, true );
}
else if (minigunner02 != NULL)
{
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(0,0,0), 0.5f, 5 );
params.WaypathID = 103289;
params.Set_Attack( minigunner02, 50, 2, true );
Commands->Modify_Action ( obj, M01_WALKING_WAYPATH_01_JDG, params, false, true );
}
else
{
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(0,0,0), 0.5f, 5 );
params.WaypathID = 103289;
params.Set_Attack( STAR, 50, 2, true );
Commands->Modify_Action ( obj, M01_WALKING_WAYPATH_01_JDG, params, false, true );
}
}
}
};
DECLARE_SCRIPT(M01_Priest_Conversation_Zone_JDG, "")//this guys ID is 103395 M01_PriestReminder_Conversation
{
bool okay_to_play_conversation;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(okay_to_play_conversation, 1);
}
void Created( GameObject * obj )
{
okay_to_play_conversation = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//priest is in position--give okay for conversation
{
okay_to_play_conversation = true;
}
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
if (okay_to_play_conversation == true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CUE_PRIEST_CONVERSATION_JDG, 0 );
Commands->Destroy_Object ( obj );//this is one-time only zone--cleaning up
}
}
}
};
DECLARE_SCRIPT(M01_Loveshack_Nun_Conversation_Zone_JDG, "")//this guys ID is 101368
{
bool okay_to_play_conversation;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(okay_to_play_conversation, 1);
}
void Created( GameObject * obj )
{
okay_to_play_conversation = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//nun is in position--give okay for conversation
{
okay_to_play_conversation = true;
}
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
if (okay_to_play_conversation == true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CUE_LOVESHACK_NUN_CONVERSATION_JDG, 0 );
Commands->Destroy_Object ( obj );//this is one-time only zone--cleaning up
}
}
}
};
DECLARE_SCRIPT(M01_Interior_Nun_Conversation_Zone_JDG, "")//this guys ID is #101370
{
bool okay_to_play_conversation;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(okay_to_play_conversation, 1);
}
void Created( GameObject * obj )
{
okay_to_play_conversation = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ((param == M01_START_ACTING_JDG))//nun is in position--give okay for conversation
{
okay_to_play_conversation = true;
}
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
if (okay_to_play_conversation == true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CUE_INTERIOR_NUN_CONVERSATION_JDG, 0 );
Commands->Destroy_Object ( obj );//this is one-time only zone--cleaning up
}
}
}
};
DECLARE_SCRIPT(M01_Church_Guard_MiniGunner_JDG, "")
{
void Created( GameObject * obj )
{
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR)
{
if (obj)
{
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( STAR, WALK, 5 );
params.Set_Attack( STAR, 15, 0, true );
Commands->Action_Attack ( obj, params );
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CHURCH_GUARD_IS_DEAD_JDG, 0 );
GameObject * havocExitZone = Commands->Find_Object ( 103393 );
if (havocExitZone != NULL)
{
Commands->Send_Custom_Event( obj, havocExitZone, 0, M01_CHURCH_GUARD_IS_DEAD_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Church_Loveshack_InterrogationConv_Zone_JDG, "")//103392
{
bool conversation_triggered;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(conversation_triggered, 1);
}
void Created( GameObject * obj )
{
conversation_triggered = false;
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR && conversation_triggered == false)
{
conversation_triggered = true;
GameObject * loveshackNun = Commands->Find_Object ( M01_CHURCH_LOVESHACK_NUN_ID );
GameObject * loveshackGuard = Commands->Find_Object ( M01_CHURCH_LOVESHACK_MINIGUNNER_ID );
if ((loveshackNun != NULL) && (loveshackGuard != NULL))
{
int loveshackConv = Commands->Create_Conversation( "M01_Loveshack_Conversation_JDG", 90, 50, true);
Commands->Join_Conversation( loveshackGuard, loveshackConv, false, true, true );
Commands->Join_Conversation( loveshackNun, loveshackConv, false, true, true );
Commands->Start_Conversation( loveshackConv, loveshackConv );
}
Commands->Destroy_Object ( obj );//cleaning up this zone
}
}
};
DECLARE_SCRIPT(M01_GDI_Escort_Conversation_Controller_GDI, "")//103396
{
bool first_time_at_escort_limit;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(first_time_at_escort_limit, 1);
}
void Created( GameObject * obj )
{
first_time_at_escort_limit = true;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (param == M01_MODIFY_YOUR_ACTION_JDG)//gdi escort has been poked to follow player
{
int random = Commands->Get_Random_Int(0, 3);
if (random == 0)
{
int pokeYesConv01 = Commands->Create_Conversation( "M01_GDI_Escort_Yes01", 90, 50, true);
Commands->Join_Conversation( STAR, pokeYesConv01, false, false, false );
Commands->Join_Conversation( sender, pokeYesConv01, false, false, false );
Commands->Start_Conversation( pokeYesConv01, pokeYesConv01 );
}
else if (random == 1)
{
int pokeYesConv01 = Commands->Create_Conversation( "M01_GDI_Escort_Yes02", 90, 50, true);
Commands->Join_Conversation( STAR, pokeYesConv01, false, false, false );
Commands->Join_Conversation( sender, pokeYesConv01, false, false, false );
Commands->Start_Conversation( pokeYesConv01, pokeYesConv01 );
}
else
{
int pokeYesConv01 = Commands->Create_Conversation( "M01_GDI_Escort_Yes03", 90, 50, true);
Commands->Join_Conversation( STAR, pokeYesConv01, false, false, false );
Commands->Join_Conversation( sender, pokeYesConv01, false, false, false );
Commands->Start_Conversation( pokeYesConv01, pokeYesConv01 );
}
}
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG)//gdi escort has been poked to stop following player
{
}
else if (param == M01_MODIFY_YOUR_ACTION_03_JDG)//gdi escort has reached his escort limits
{
if (first_time_at_escort_limit == true)
{
first_time_at_escort_limit = false;
int pokeLimitConv01 = Commands->Create_Conversation( "M01_GDI_Escort_MustStayHere01", 90, 50, true);
Commands->Join_Conversation( sender, pokeLimitConv01, false, false, false );
Commands->Join_Conversation( STAR, pokeLimitConv01, false, false, false );
Commands->Start_Conversation( pokeLimitConv01, pokeLimitConv01 );
}
else
{
int pokeLimitConv01 = Commands->Create_Conversation( "M01_GDI_Escort_MustStayHere02", 90, 50, true);
Commands->Join_Conversation( sender, pokeLimitConv01, false, false, false );
Commands->Join_Conversation( STAR, pokeLimitConv01, false, false, false );
Commands->Start_Conversation( pokeLimitConv01, pokeLimitConv01 );
}
}
}
};
DECLARE_SCRIPT(M01_CHURCH_Chinook_Spawned_Soldier01_GDI, "")
{
typedef enum {
ESCORTING,
NOT_ESCORTING,
} M01_State;
M01_State thisGuysState;
int initialEscortConv;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(thisGuysState, 1);
SAVE_VARIABLE(initialEscortConv, 2);
}
void Created( GameObject * obj )
{
thisGuysState = NOT_ESCORTING;
}
void Poked( GameObject * obj, GameObject * poker )
{
if (poker == STAR)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_GDI_GUY_HAS_BEEN_POKED_JDG, 0 );
}
}
void Killed( GameObject * obj, GameObject * killer )
{
if (thisGuysState == ESCORTING)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYERS_ESCORT_HAS_BEEN_KILLED_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "s_a_human.h_a_troopdrop") == 0)
{
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement(STAR, RUN, 5);
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)
{
if (obj && STAR)
{
initialEscortConv = Commands->Create_Conversation( "M01_FirstEscort_Conversation", 100, 50, true);
Commands->Join_Conversation( obj, initialEscortConv, true, true, true );
Commands->Join_Conversation( STAR, initialEscortConv, true, true, true );
Commands->Start_Conversation( initialEscortConv, initialEscortConv );
Commands->Monitor_Conversation (obj, initialEscortConv);
}
}
if (action_id == M01_GOING_TO_HAVOC_JDG && thisGuysState == ESCORTING)
{
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
params.Set_Movement( STAR, RUN + 0.2f, 2 );
Commands->Action_Attack (obj, params);
}
}
else if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
{
if (action_id == initialEscortConv)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, 0 );
}
}
}
void Custom(GameObject * obj, int type, int param, GameObject * sender)
{
ActionParamsStruct params;
if ((param == M01_PICK_A_NEW_LOCATION_JDG) && (thisGuysState != ESCORTING) )
{
Vector3 homeSpot;
Commands->Action_Reset ( obj, 100 );
float pick_my_home_spot = Commands->Get_Random ( 0.5f, 6.5f );
if (pick_my_home_spot >= 0.5 && pick_my_home_spot < 1.5)
{
homeSpot.Set (-139.048f, 318.861f, 9.066f);
}
else if (pick_my_home_spot >= 1.5 && pick_my_home_spot < 2.5)
{
homeSpot.Set (-81.160f, 333.117f, 10.131f);
}
else if (pick_my_home_spot >= 2.5 && pick_my_home_spot < 3.5)
{
homeSpot.Set (-138.786f, 388.250f, 15.093f);
}
else if (pick_my_home_spot >= 3.5 && pick_my_home_spot < 4.5)
{
homeSpot.Set (-140.785f, 348.389f, 21.931f);
}
else if (pick_my_home_spot >= 4.5 && pick_my_home_spot < 5.5)
{
homeSpot.Set (-140.792f, 342.980f, 10.387f);
}
else
{
homeSpot.Set (-126.169f, 335.223f, 8.997f);
}
Commands->Set_Innate_Soldier_Home_Location ( obj, homeSpot, 10 );
params.Set_Basic(this, 50, M01_PICK_A_NEW_LOCATION_JDG);
params.Set_Movement(homeSpot, RUN, 3);
Commands->Action_Goto(obj, params);
float delayTimer = Commands->Get_Random ( 10, 60 );
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, delayTimer );
}
else if (param == M01_PLEASE_START_ESCORTING_PLAYER_JDG)
{
GameObject * escortDialogController = Commands->Find_Object ( 103396 );
if (escortDialogController != NULL)
{
Commands->Send_Custom_Event( obj, escortDialogController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
params.Set_Movement( STAR, RUN + 0.2f, 2 );
Commands->Action_Attack (obj, params);
thisGuysState = ESCORTING;
}
else if (param == M01_PLEASE_STOP_ESCORTING_PLAYER_JDG)
{
Commands->Action_Reset ( obj, 100 );
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
thisGuysState = NOT_ESCORTING;
}
else if ((type == M01_PLAYER_IS_ATTACKING_ME_JDG) && (thisGuysState == ESCORTING) )
{
GameObject * myTarget = Commands->Find_Object ( param );
if (myTarget != NULL)
{
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
params.Set_Movement( myTarget, RUN, 5 );
params.AttackActive = true;
params.Set_Attack (myTarget, 50, 0, true);
Commands->Modify_Action ( obj, M01_GOING_TO_HAVOC_JDG, params, true, true );
}
}
else if ((param == M01_PLAYER_IS_LEAVING_CHURCH_01_JDG) && (thisGuysState == ESCORTING))
{
GameObject * escortDialogController = Commands->Find_Object ( 103396 );
if (escortDialogController != NULL)
{
Commands->Send_Custom_Event( obj, escortDialogController, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 0 );
}
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYERS_ESCORT_HAS_BEEN_KILLED_JDG, 0 );
thisGuysState = NOT_ESCORTING;
Vector3 homeSpot;
Commands->Action_Reset ( obj, 100 );
float pick_my_home_spot = Commands->Get_Random ( 0.5f, 3.5f );
if (pick_my_home_spot >= 0.5 && pick_my_home_spot < 1.5)
{
homeSpot.Set (-160.217f, 446.353f, 34.976f);
}
else if (pick_my_home_spot >= 1.5 && pick_my_home_spot < 2.5)
{
homeSpot.Set (-173.371f, 437.383f, 29.711f);
}
else
{
homeSpot.Set (-138.958f, 435.696f, 27.001f);
}
Commands->Set_Innate_Soldier_Home_Location ( obj, homeSpot, 3 );
params.Set_Basic(this, 50, M01_WALKING_WAYPATH_02_JDG);
params.Set_Movement(homeSpot, WALK, 3);
Commands->Action_Goto(obj, params);
}
else if ((param == M01_PLAYER_IS_LEAVING_CHURCH_02_JDG) && (thisGuysState == ESCORTING))
{
GameObject * escortDialogController = Commands->Find_Object ( 103396 );
if (escortDialogController != NULL)
{
Commands->Send_Custom_Event( obj, escortDialogController, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 0 );
}
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYERS_ESCORT_HAS_BEEN_KILLED_JDG, 0 );
thisGuysState = NOT_ESCORTING;
Vector3 homeSpot;
Commands->Action_Reset ( obj, 100 );
float pick_my_home_spot = Commands->Get_Random ( 0.5f, 3.5f );
if (pick_my_home_spot >= 0.5 && pick_my_home_spot < 1.5)
{
homeSpot.Set (-36.192f, 319.671f, 5.226f);
}
else if (pick_my_home_spot >= 1.5 && pick_my_home_spot < 2.5)
{
homeSpot.Set (-49.614f, 363.304f, 10.816f);
}
else
{
homeSpot.Set (-66.361f, 339.288f, 8.772f);
}
Commands->Set_Innate_Soldier_Home_Location ( obj, homeSpot, 3 );
params.Set_Basic(this, 50, M01_WALKING_WAYPATH_02_JDG);
params.Set_Movement(homeSpot, WALK, 3);
Commands->Action_Goto(obj, params);
}
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
ActionParamsStruct params;
if (thisGuysState == ESCORTING)
{
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
params.Set_Movement( enemy, RUN, 5 );
params.Set_Attack( enemy, 50, 0, true );
params.AttackActive = true;
params.AttackCheckBlocked = true;
Commands->Modify_Action ( obj, M01_GOING_TO_HAVOC_JDG, params, true, true );
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
ActionParamsStruct params;
if (damager != NULL)
{
int attackersType = Commands->Get_Player_Type ( damager );
if (attackersType != SCRIPT_PLAYERTYPE_NOD)
{
}
else
{
if (thisGuysState == ESCORTING && damager != NULL)
{
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
params.Set_Movement( damager, RUN, 5 );
params.Set_Attack( damager, 50, 0, true );
params.AttackActive = true;
params.AttackCheckBlocked = true;
Commands->Modify_Action ( obj, M01_GOING_TO_HAVOC_JDG, params, true, true );
}
}
}
}
};
DECLARE_SCRIPT(M01_CHURCH_Chinook_Spawned_Soldier02_GDI, "")
{
typedef enum {
ESCORTING,
NOT_ESCORTING,
} M01_State;
M01_State thisGuysState;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(thisGuysState, 1);
}
void Created( GameObject * obj )
{
thisGuysState = NOT_ESCORTING;
}
void Poked( GameObject * obj, GameObject * poker )
{
if (poker == STAR)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_GDI_GUY_HAS_BEEN_POKED_JDG, 0 );
}
}
void Killed( GameObject * obj, GameObject * killer )
{
if (thisGuysState == ESCORTING)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYERS_ESCORT_HAS_BEEN_KILLED_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "s_a_human.h_a_troopdrop") == 0)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, 0 );
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
ActionParamsStruct params;
if (complete_reason == ACTION_COMPLETE_NORMAL)
{
if (action_id == M01_GOING_TO_HAVOC_JDG && thisGuysState == ESCORTING)
{
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
params.Set_Movement( STAR, RUN + 0.2f, 2 );
Commands->Action_Attack (obj, params);
}
}
else if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
{
}
}
void Custom(GameObject * obj, int type, int param, GameObject * sender)
{
ActionParamsStruct params;
if ((param == M01_PICK_A_NEW_LOCATION_JDG) && (thisGuysState != ESCORTING) )
{
Vector3 homeSpot;
Commands->Action_Reset ( obj, 100 );
float pick_my_home_spot = Commands->Get_Random ( 0.5f, 6.5f );
if (pick_my_home_spot >= 0.5 && pick_my_home_spot < 1.5)
{
homeSpot.Set (-139.048f, 318.861f, 9.066f);
}
else if (pick_my_home_spot >= 1.5 && pick_my_home_spot < 2.5)
{
homeSpot.Set (-81.160f, 333.117f, 10.131f);
}
else if (pick_my_home_spot >= 2.5 && pick_my_home_spot < 3.5)
{
homeSpot.Set (-138.786f, 388.250f, 15.093f);
}
else if (pick_my_home_spot >= 3.5 && pick_my_home_spot < 4.5)
{
homeSpot.Set (-140.785f, 348.389f, 21.931f);
}
else if (pick_my_home_spot >= 4.5 && pick_my_home_spot < 5.5)
{
homeSpot.Set (-140.792f, 342.980f, 10.387f);
}
else
{
homeSpot.Set (-126.169f, 335.223f, 8.997f);
}
Commands->Set_Innate_Soldier_Home_Location ( obj, homeSpot, 10 );
params.Set_Basic(this, 50, M01_PICK_A_NEW_LOCATION_JDG);
params.Set_Movement(homeSpot, RUN, 3);
Commands->Action_Goto(obj, params);
float delayTimer = Commands->Get_Random ( 10, 60 );
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, delayTimer );
}
else if (param == M01_PLEASE_START_ESCORTING_PLAYER_JDG)
{
GameObject * escortDialogController = Commands->Find_Object ( 103396 );
if (escortDialogController != NULL)
{
Commands->Send_Custom_Event( obj, escortDialogController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
params.Set_Movement( STAR, RUN + 0.2f, 2 );
Commands->Action_Attack (obj, params);
thisGuysState = ESCORTING;
}
else if (param == M01_PLEASE_STOP_ESCORTING_PLAYER_JDG)
{
Commands->Action_Reset ( obj, 100 );
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
thisGuysState = NOT_ESCORTING;
}
else if ((type == M01_PLAYER_IS_ATTACKING_ME_JDG) && (thisGuysState == ESCORTING) )
{
GameObject * myTarget = Commands->Find_Object ( param );
if (myTarget != NULL)
{
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
params.Set_Movement( myTarget, RUN, 5 );
params.AttackActive = true;
params.Set_Attack (myTarget, 50, 0, true);
Commands->Modify_Action ( obj, M01_GOING_TO_HAVOC_JDG, params, true, true );
}
}
else if ((param == M01_PLAYER_IS_LEAVING_CHURCH_01_JDG) && (thisGuysState == ESCORTING))
{
GameObject * escortDialogController = Commands->Find_Object ( 103396 );
if (escortDialogController != NULL)
{
Commands->Send_Custom_Event( obj, escortDialogController, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 0 );
}
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYERS_ESCORT_HAS_BEEN_KILLED_JDG, 0 );
thisGuysState = NOT_ESCORTING;
Vector3 homeSpot;
Commands->Action_Reset ( obj, 100 );
float pick_my_home_spot = Commands->Get_Random ( 0.5f, 3.5f );
if (pick_my_home_spot >= 0.5 && pick_my_home_spot < 1.5)
{
homeSpot.Set (-160.217f, 446.353f, 34.976f);
}
else if (pick_my_home_spot >= 1.5 && pick_my_home_spot < 2.5)
{
homeSpot.Set (-173.371f, 437.383f, 29.711f);
}
else
{
homeSpot.Set (-138.958f, 435.696f, 27.001f);
}
Commands->Set_Innate_Soldier_Home_Location ( obj, homeSpot, 3 );
params.Set_Basic(this, 50, M01_WALKING_WAYPATH_02_JDG);
params.Set_Movement(homeSpot, WALK, 3);
Commands->Action_Goto(obj, params);
}
else if ((param == M01_PLAYER_IS_LEAVING_CHURCH_02_JDG) && (thisGuysState == ESCORTING))
{
GameObject * escortDialogController = Commands->Find_Object ( 103396 );
if (escortDialogController != NULL)
{
Commands->Send_Custom_Event( obj, escortDialogController, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 0 );
}
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYERS_ESCORT_HAS_BEEN_KILLED_JDG, 0 );
thisGuysState = NOT_ESCORTING;
Vector3 homeSpot;
Commands->Action_Reset ( obj, 100 );
float pick_my_home_spot = Commands->Get_Random ( 0.5f, 3.5f );
if (pick_my_home_spot >= 0.5 && pick_my_home_spot < 1.5)
{
homeSpot.Set (-36.192f, 319.671f, 5.226f);
}
else if (pick_my_home_spot >= 1.5 && pick_my_home_spot < 2.5)
{
homeSpot.Set (-49.614f, 363.304f, 10.816f);
}
else
{
homeSpot.Set (-66.361f, 339.288f, 8.772f);
}
Commands->Set_Innate_Soldier_Home_Location ( obj, homeSpot, 3 );
params.Set_Basic(this, 50, M01_WALKING_WAYPATH_02_JDG);
params.Set_Movement(homeSpot, WALK, 3);
Commands->Action_Goto(obj, params);
}
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
ActionParamsStruct params;
if (thisGuysState == ESCORTING)
{
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
params.Set_Movement( enemy, RUN, 5 );
params.Set_Attack( enemy, 50, 0, true );
params.AttackActive = true;
params.AttackCheckBlocked = true;
Commands->Modify_Action ( obj, M01_GOING_TO_HAVOC_JDG, params, true, true );
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
ActionParamsStruct params;
if (damager != NULL)
{
int attackersType = Commands->Get_Player_Type ( damager );
if (attackersType != SCRIPT_PLAYERTYPE_NOD)
{
}
else
{
if (thisGuysState == ESCORTING && damager != NULL)
{
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
params.Set_Movement( damager, RUN, 5 );
params.Set_Attack( damager, 50, 0, true );
params.AttackActive = true;
params.AttackCheckBlocked = true;
Commands->Modify_Action ( obj, M01_GOING_TO_HAVOC_JDG, params, true, true );
}
}
}
}
};
DECLARE_SCRIPT(M01_COMM_Chinook_Spawned_Soldier_GDI, "")
{
typedef enum {
ESCORTING,
NOT_ESCORTING,
} M01_State;
M01_State thisGuysState;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(thisGuysState, 1);
}
void Created( GameObject * obj )
{
thisGuysState = NOT_ESCORTING;
}
void Poked( GameObject * obj, GameObject * poker )
{
if (poker == STAR)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_GDI_GUY_HAS_BEEN_POKED_JDG, 0 );
}
}
void Killed( GameObject * obj, GameObject * killer )
{
if (thisGuysState == ESCORTING)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYERS_ESCORT_HAS_BEEN_KILLED_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "s_a_human.h_a_troopdrop") == 0)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, 0 );
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
ActionParamsStruct params;
if (complete_reason == ACTION_COMPLETE_NORMAL)
{
if (action_id == M01_GOING_TO_HAVOC_JDG && thisGuysState == ESCORTING)
{
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
params.Set_Movement( STAR, RUN + 0.2f, 2 );
Commands->Action_Attack (obj, params);
}
}
}
void Custom(GameObject * obj, int type, int param, GameObject * sender)
{
ActionParamsStruct params;
if ((param == M01_PICK_A_NEW_LOCATION_JDG) && (thisGuysState == NOT_ESCORTING) )
{
Vector3 homeSpot;
Commands->Action_Reset ( obj, 100 );
float pick_my_home_spot = Commands->Get_Random ( 0.5f, 6.5f );
if (pick_my_home_spot >= 0.5 && pick_my_home_spot < 1.5)
{
homeSpot.Set (-277.309f, 468.428f, 18.553f);
}
else if (pick_my_home_spot >= 1.5 && pick_my_home_spot < 2.5)
{
homeSpot.Set (-271.237f, 535.962f, 27.935f);
}
else if (pick_my_home_spot >= 2.5 && pick_my_home_spot < 3.5)
{
homeSpot.Set (-247.278f, 563.557f, 30.610f);
}
else if (pick_my_home_spot >= 3.5 && pick_my_home_spot < 4.5)
{
homeSpot.Set (-296.349f, 583.760f, 27.739f);
}
else if (pick_my_home_spot >= 4.5 && pick_my_home_spot < 5.5)
{
homeSpot.Set (-313.597f, 568.022f, 27.740f);
}
else
{
homeSpot.Set (-301.160f, 523.405f, 16.583f);
}
Commands->Set_Innate_Soldier_Home_Location ( obj, homeSpot, 10 );
params.Set_Basic(this, 50, 20);
params.Set_Movement(homeSpot, RUN, 3);
Commands->Action_Goto(obj, params);
float delayTimer = Commands->Get_Random ( 10, 60 );
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, delayTimer );
}
else if (param == M01_PLEASE_START_ESCORTING_PLAYER_JDG)
{
GameObject * escortDialogController = Commands->Find_Object ( 103396 );
if (escortDialogController != NULL)
{
Commands->Send_Custom_Event( obj, escortDialogController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
params.Set_Movement( STAR, RUN + 0.2f, 2 );
Commands->Action_Attack (obj, params);
thisGuysState = ESCORTING;
}
else if (param == M01_PLEASE_STOP_ESCORTING_PLAYER_JDG)
{
Commands->Action_Reset ( obj, 100 );
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
thisGuysState = NOT_ESCORTING;
}
else if ((type == M01_PLAYER_IS_ATTACKING_ME_JDG) && (thisGuysState == ESCORTING) )
{
GameObject * myTarget = Commands->Find_Object ( param );
if (myTarget != NULL)
{
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
params.Set_Movement( myTarget, RUN, 5 );
params.AttackActive = true;
params.Set_Attack (myTarget, 50, 0, true);
Commands->Modify_Action ( obj, M01_GOING_TO_HAVOC_JDG, params, true, true );
Commands->Debug_Message ( "**********************Player's escort has received orders to attack havocs target\n" );
}
}
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
ActionParamsStruct params;
if (thisGuysState == ESCORTING)
{
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
params.Set_Movement( enemy, RUN, 5 );
params.Set_Attack( enemy, 50, 0, true );
params.AttackActive = true;
params.AttackCheckBlocked = true;
Commands->Modify_Action ( obj, M01_GOING_TO_HAVOC_JDG, params, true, true );
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
ActionParamsStruct params;
if (damager != NULL)
{
int attackersType = Commands->Get_Player_Type ( damager );
if (attackersType != SCRIPT_PLAYERTYPE_NOD)
{
}
else
{
if (thisGuysState == ESCORTING && damager != NULL)
{
params.Set_Basic( this, 100, M01_GOING_TO_HAVOC_JDG );
params.Set_Movement( damager, RUN, 5 );
params.Set_Attack( damager, 50, 0, true );
params.AttackActive = true;
params.AttackCheckBlocked = true;
Commands->Modify_Action ( obj, M01_GOING_TO_HAVOC_JDG, params, true, true );
}
}
}
}
};
DECLARE_SCRIPT(M01_Barn_Truck_JDG, "")//
{
void Killed( GameObject * obj, GameObject * killer )
{
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Create_Explosion ( "Explosion_Vehicle", myPosition, NULL );
}
};
DECLARE_SCRIPT(M01_GDIBase_EvacMonitor_JDG, "")//M01_GDIBASE_EVAC_MONITOR_JDG
{
int unitsEvacuated;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(unitsEvacuated, 1);
}
void Created( GameObject * obj )
{
unitsEvacuated = 0;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (param == M01_GOING_TO_EVAC_SPOT_JDG)
{
unitsEvacuated++;
if (unitsEvacuated == 4)
{
int airdrop_conv = Commands->Create_Conversation( "M01_AirDrop_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, airdrop_conv, false, false );
Commands->Start_Conversation( airdrop_conv, airdrop_conv );
Vector3 airDropSpot (-32.247f, 36.075f, 0.547f);
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", airDropSpot);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1D_GDIPowerUpDrop.txt");
Commands->Destroy_Object ( obj );
}
}
}
};
DECLARE_SCRIPT(M01_ChurchArea_EvacMonitor_JDG, "")//M01_CHURCHAREA_EVAC_MONITOR_JDG
{
int unitsEvacuated;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(unitsEvacuated, 1);
}
void Created( GameObject * obj )
{
unitsEvacuated = 0;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (param == M01_GOING_TO_EVAC_SPOT_JDG)
{
unitsEvacuated++;
if (unitsEvacuated == 3)
{
int airdrop_conv = Commands->Create_Conversation( "M01_AirDrop_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, airdrop_conv, false, false );
Commands->Start_Conversation( airdrop_conv, airdrop_conv );
Vector3 airDropSpot (-158.807f, 351.532f, 10.353f);
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", airDropSpot);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1D_GDIPowerUpDrop.txt");
Commands->Destroy_Object ( obj );
}
}
}
};
DECLARE_SCRIPT(M01_MovieProjector_JDG, "")//103942
{//
bool destroyed;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(destroyed, 1);
}
void Created( GameObject * obj )
{
destroyed = false;
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR && destroyed == false)
{
destroyed = true;
Commands->Set_Animation ( obj, "DSP_PROJECTOR.DSP_PROJECTOR", false, NULL, 0, 9 );
GameObject * propagandaController = Commands->Find_Object ( 103099 );
if (propagandaController != NULL)
{
Commands->Send_Custom_Event( obj, propagandaController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Create_Explosion ( "Explosion_Barrel_Fuel", myPosition, NULL );
}
Commands->Set_Health ( obj, 0.25f );
}
};
DECLARE_SCRIPT(M01_Propaganda_Sounds_Controller_JDG, "")//this guys ID is 103099
{
int last;
int displayScreen_ID;
int monitor_sound01;
int monitor_sound02;
int monitor_sound03;
bool destroyed;
int propaganda_number;
bool soundPlaying;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(last, 1);
SAVE_VARIABLE(displayScreen_ID, 2);
SAVE_VARIABLE(monitor_sound01, 3);
SAVE_VARIABLE(destroyed, 4);
SAVE_VARIABLE(propaganda_number, 5);
SAVE_VARIABLE(soundPlaying, 6);
SAVE_VARIABLE(monitor_sound02, 7);
SAVE_VARIABLE(monitor_sound03, 8);
}
void Created(GameObject * obj)
{
last = 0;
displayScreen_ID = 0;
monitor_sound01 = 0;
monitor_sound02 = 0;
monitor_sound03 = 0;
destroyed = false;
propaganda_number = 0;
soundPlaying = false;
}
void Custom(GameObject * obj, int type, int param, GameObject * sender)
{
if (type == 0)
{
if (obj && param == M01_MODIFY_YOUR_ACTION_JDG)
{
soundPlaying = false;
GameObject * oldDisplayScreen = Commands->Find_Object ( displayScreen_ID);
if (oldDisplayScreen != NULL)
{
Commands->Destroy_Object ( oldDisplayScreen );
}
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ACTING_JDG, 2 );
}
//if (obj && type == CUSTOM_EVENT_SOUND_ENDED )
//{
// if (obj && param == monitor_sound01)
//{
//}
//}
else if (param == M01_START_ACTING_JDG && destroyed == false)
{
char *propaganda_screen[10] =
{
"M01_Propaganda_Screen_01",
"M01_Propaganda_Screen_02",
"M01_Propaganda_Screen_03",
"M01_Propaganda_Screen_04",
"M01_Propaganda_Screen_05",
"M01_Propaganda_Screen_06",
"M01_Propaganda_Screen_07",
"M01_Propaganda_Screen_08",
"M01_Propaganda_Screen_10",
"M01_Propaganda_Screen_11",
};
char *propaganda_sound[10] =
{
"M01NCXS_DSGN0270I1NCXS_SND",
"M01NCXS_DSGN0271I1NCXS_SND",
"M01NCXS_DSGN0272I1NCXS_SND",
"M01NCXS_DSGN0273I1NCXS_SND",
"M01NCXS_DSGN0279I1NCXS_SND",
"M01NCXS_DSGN0275I1NCXS_SND",
"M01NCXS_DSGN0276I1NCXS_SND",
"M01NCXS_DSGN0277I1NCXS_SND",
"M01NCXS_DSGN0278I1NCXS_SND",
"M01NCXS_DSGN0274I1NCXS_SND",
};
Vector3 propagandaSpeaker01 (-319.283f, 589.265f, 35.385f);
Vector3 propagandaSpeaker02 (-277.730f, 581.935f, 35.724f);
Vector3 propagandaSpeaker03 (-296.269f, 612.473f, 35.468f);
propaganda_number++;// = Commands->Get_Random_Int(0, 11);
if (propaganda_number >= 10)
{
propaganda_number = 0;
}
GameObject * displayScreen = Commands->Create_Object ( propaganda_screen[propaganda_number], Vector3 (0,0,0) );
displayScreen_ID = Commands->Get_ID ( displayScreen );
monitor_sound03 = Commands->Create_Sound ( propaganda_sound[propaganda_number], propagandaSpeaker01, obj );
monitor_sound02 = Commands->Create_Sound ( propaganda_sound[propaganda_number], propagandaSpeaker02, obj );
monitor_sound01 = Commands->Create_Sound ( propaganda_sound[propaganda_number], propagandaSpeaker03, obj );
//Commands->Monitor_Sound ( obj, monitor_sound01 );
soundPlaying = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 10 );
}
else if (param == M01_IVE_BEEN_KILLED_JDG)//projector is dead--stop playing propaganda stuff
{
destroyed = true;
GameObject * oldDisplayScreen = Commands->Find_Object ( displayScreen_ID);
if (oldDisplayScreen != NULL)
{
Commands->Destroy_Object ( oldDisplayScreen );
}
if (soundPlaying == true)
{
Commands->Stop_Sound ( monitor_sound01, true );
Commands->Stop_Sound ( monitor_sound02, true );
Commands->Stop_Sound ( monitor_sound03, true );
}
Commands->Destroy_Object ( obj );
}
}
}
};
DECLARE_SCRIPT(M01_BackPath_NodGuy_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Set_Innate_Is_Stationary ( obj, true );
GameObject * gdiBaseCommander = Commands->Find_Object ( 106050 );
if (gdiBaseCommander != NULL)
{
ActionParamsStruct params;
params.Set_Basic( this, 75, M01_START_ACTING_JDG );
params.Set_Attack( gdiBaseCommander, 30, 5, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
}
}
};
DECLARE_SCRIPT(M01_Comm_Repair_Engineer_JDG, "")//this guys ID is M01_COMM_CENTER_ENGINEER_ID 101949
{
int healer_sound;
bool healing;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(healer_sound, 1);
SAVE_VARIABLE(healing, 2);
}
void Created( GameObject * obj )
{
Commands->Set_Innate_Is_Stationary ( obj, true );
healing = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == CUSTOM_EVENT_SOUND_ENDED )
{
if (param == healer_sound)
{
healing = false;
}
}
else if (type == 0)
{
if (param == M01_PLAYER_IS_ATTACKING_ME_JDG && healing == false)
{
healing = true;
Commands->Enable_Hibernation( obj, false );
Vector3 myRepairSpot (-301.382f, 551.366f, 18.205f);
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_START_ACTING_JDG );
params.Set_Attack( myRepairSpot, 30, 0, false );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
Commands->Start_Timer ( obj, this, 2, M01_START_ACTING_JDG );
}
}
}
void Timer_Expired( GameObject * obj, int timer_id )
{
if (timer_id == M01_START_ACTING_JDG)
{
Commands->Enable_Hibernation( obj, true );
Commands->Action_Reset ( obj, 100 );
GameObject * commCenter = Commands->Find_Object ( M01_COMM_CENTER_JDG );
Vector3 repair_sound_spot (-297.633f, 532.144f, 35.458f);
float commCenter_max_health = Commands->Get_Max_Health ( commCenter );;
float commCenter_max_shield = Commands->Get_Max_Shield_Strength ( commCenter );
float commCenter_current_health = Commands->Get_Health ( commCenter );
if (commCenter_current_health > 0)
{
Commands->Set_Health ( commCenter, commCenter_max_health );
Commands->Set_Shield_Strength ( commCenter, commCenter_max_shield );
healer_sound = Commands->Create_Sound ( "CnC_Healer_Sound", repair_sound_spot, obj );
Commands->Monitor_Sound ( obj, healer_sound );
}
}
}
};
DECLARE_SCRIPT(M01_Comm_Center_Building_Script_JDG, "")
{
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_COMM_CENTER_HAS_BEEN_DESTROYED_JDG, 0 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_AMBIENT_SOUND_CONTROLLER_JDG ), 0, M01_COMM_CENTER_HAS_BEEN_DESTROYED_JDG, 0 );
GameObject * mainframe = Commands->Find_Object ( 107809 );
if (mainframe != NULL)
{
Commands->Send_Custom_Event( obj, mainframe, 0, M01_COMM_CENTER_HAS_BEEN_DESTROYED_JDG, 0 );
}
GameObject * gateTutorialZone = Commands->Find_Object ( 120844 );
if (gateTutorialZone != NULL)
{
Commands->Send_Custom_Event( obj, gateTutorialZone, 0, M01_START_ACTING_JDG, 0 );
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
GameObject * myEngineer = Commands->Find_Object ( M01_COMM_CENTER_ENGINEER_ID );
if (myEngineer != NULL)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_DO_DAMAGE_CHECK_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_PaintballRoom_ChatterController_JDG, "")//107554
{
int nodguy01_id;//
int nodguy02_id;
int nodguy03_id;
int nodguy04_id;
int nodguy05_id;
int nodguy06_id;
bool nodguy01_dead;
bool nodguy02_dead;
bool nodguy03_dead;
bool nodguy04_dead;
bool nodguy05_dead;
bool nodguy06_dead;
bool acting;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(nodguy01_id, 1);
SAVE_VARIABLE(nodguy02_id, 2);
SAVE_VARIABLE(nodguy03_id, 3);
SAVE_VARIABLE(nodguy04_id, 4);
SAVE_VARIABLE(nodguy05_id, 5);
SAVE_VARIABLE(nodguy06_id, 6);
SAVE_VARIABLE(nodguy01_dead, 7);
SAVE_VARIABLE(nodguy02_dead, 8);
SAVE_VARIABLE(nodguy03_dead, 9);
SAVE_VARIABLE(nodguy04_dead, 10);
SAVE_VARIABLE(nodguy05_dead, 11);
SAVE_VARIABLE(nodguy06_dead, 12);
SAVE_VARIABLE(acting, 13);
}
void Created( GameObject * obj )
{
nodguy01_id = 102001;
nodguy02_id = 101998;
nodguy03_id = 102000;
nodguy04_id = 101999;
nodguy05_id = 102002;
nodguy06_id = 102003;
nodguy01_dead = false;
nodguy02_dead = false;
nodguy03_dead = false;
nodguy04_dead = false;
nodguy05_dead = false;
nodguy06_dead = false;
acting = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ACTING_JDG && acting == false)
{
acting = true;
if (nodguy01_dead == false)
{
float delayTimer = Commands->Get_Random ( 1, 2 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
}
else if (nodguy01_dead == true)
{
if (nodguy02_dead == false)
{
float delayTimer = Commands->Get_Random ( 1, 2 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_02_JDG, delayTimer );
}
}
if (nodguy03_dead == false)
{
float delayTimer = Commands->Get_Random ( 1, 2 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_03_JDG, delayTimer );
}
else if (nodguy03_dead == true)
{
if (nodguy04_dead == false)
{
float delayTimer = Commands->Get_Random ( 1, 2 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_04_JDG, delayTimer );
}
}
if (nodguy05_dead == false)
{
float delayTimer = Commands->Get_Random ( 1, 2 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_05_JDG, delayTimer );
}
else if (nodguy05_dead == true)
{
if (nodguy06_dead == false)
{
float delayTimer = Commands->Get_Random ( 1, 2 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_06_JDG, delayTimer );
}
}
}
else if (param == M01_IVE_BEEN_KILLED_JDG)
{
GameObject * nodguy01 = Commands->Find_Object ( nodguy01_id );
GameObject * nodguy02 = Commands->Find_Object ( nodguy02_id );
GameObject * nodguy03 = Commands->Find_Object ( nodguy03_id );
GameObject * nodguy04 = Commands->Find_Object ( nodguy04_id );
GameObject * nodguy05 = Commands->Find_Object ( nodguy05_id );
GameObject * nodguy06 = Commands->Find_Object ( nodguy06_id );
if (sender == nodguy01)
{
nodguy01_dead = true;
}
else if (sender == nodguy02)
{
nodguy02_dead = true;
}
else if (sender == nodguy03)
{
nodguy03_dead = true;
}
else if (sender == nodguy04)
{
nodguy04_dead = true;
}
else if (sender == nodguy05)
{
nodguy05_dead = true;
}
else if (sender == nodguy06)
{
nodguy06_dead = true;
}
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG)
{
GameObject * nodguy01 = Commands->Find_Object ( nodguy01_id );
if (nodguy01 != NULL)
{
int paintball_alert_conv = Commands->Create_Conversation( "M01_Paintball_Intruder_Conversation_02", 95, 20, true);
Commands->Join_Conversation( nodguy01, paintball_alert_conv);
Commands->Start_Conversation( paintball_alert_conv, paintball_alert_conv );
}
}
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG)
{
GameObject * nodguy02 = Commands->Find_Object ( nodguy02_id );
if (nodguy02 != NULL)
{
int paintball_alert_conv = Commands->Create_Conversation( "M01_Paintball_Intruder_Conversation_02", 95, 20, true);
Commands->Join_Conversation( nodguy02, paintball_alert_conv);
Commands->Start_Conversation( paintball_alert_conv, paintball_alert_conv );
}
}
else if (param == M01_MODIFY_YOUR_ACTION_03_JDG)
{
GameObject * nodguy03 = Commands->Find_Object ( nodguy03_id );
if (nodguy03 != NULL)
{
int paintball_alert_conv = Commands->Create_Conversation( "M01_Paintball_Intruder_Conversation_01", 95, 20, true);
Commands->Join_Conversation( nodguy03, paintball_alert_conv);
Commands->Start_Conversation( paintball_alert_conv, paintball_alert_conv );
}
}
else if (param == M01_MODIFY_YOUR_ACTION_04_JDG)
{
GameObject * nodguy04 = Commands->Find_Object ( nodguy04_id );
if (nodguy04 != NULL)
{
int paintball_alert_conv = Commands->Create_Conversation( "M01_Paintball_Intruder_Conversation_01", 95, 20, true);
Commands->Join_Conversation( nodguy04, paintball_alert_conv);
Commands->Start_Conversation( paintball_alert_conv, paintball_alert_conv );
}
}
else if (param == M01_MODIFY_YOUR_ACTION_05_JDG)
{
GameObject * nodguy05 = Commands->Find_Object ( nodguy05_id );
if (nodguy05 != NULL)
{
int paintball_alert_conv = Commands->Create_Conversation( "M01_Paintball_Intruder_Conversation_03", 95, 20, true);
Commands->Join_Conversation( nodguy05, paintball_alert_conv);
Commands->Start_Conversation( paintball_alert_conv, paintball_alert_conv );
}
}
else if (param == M01_MODIFY_YOUR_ACTION_06_JDG)
{
GameObject * nodguy06 = Commands->Find_Object ( nodguy06_id );
if (nodguy06 != NULL)
{
int paintball_alert_conv = Commands->Create_Conversation( "M01_Paintball_Intruder_Conversation_03", 95, 20, true);
Commands->Join_Conversation( nodguy06, paintball_alert_conv);
Commands->Start_Conversation( paintball_alert_conv, paintball_alert_conv );
}
}
}
}
};
DECLARE_SCRIPT(M01_HON_Paintball_Team_01_JDG, "")//this is the grunt team
{
int enemySniperId;
float myAggressiveness;
float myCoverProbability;
float myTimerMax;
float myTimerMin;
float myHomeRange;
Vector3 myPosition;
bool retreating;
bool starEncountered;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(enemySniperId, 1);
SAVE_VARIABLE(myAggressiveness, 2);
SAVE_VARIABLE(myCoverProbability, 3);
SAVE_VARIABLE(myTimerMax, 4);
SAVE_VARIABLE(myTimerMin, 5);
SAVE_VARIABLE(myHomeRange, 6);
SAVE_VARIABLE(myPosition, 7);
SAVE_VARIABLE(retreating, 8);
SAVE_VARIABLE(starEncountered, 9);
}
void Created( GameObject * obj )
{
enemySniperId = 102001;
retreating = false;
starEncountered = false;
int myIdNumber = Commands->Get_ID ( obj );
Commands->Set_Player_Type ( obj, SCRIPT_PLAYERTYPE_RENEGADE );
Commands->Set_Obj_Radar_Blip_Color ( obj, RADAR_BLIP_COLOR_NOD );
if (myIdNumber == 101998)//team one sniper
{
}
else
{
myPosition = Commands->Get_Position ( obj );
myTimerMin = 5;
myTimerMax = 10;
myAggressiveness = Commands->Get_Random ( 0, 0.5f );
myCoverProbability = Commands->Get_Random ( 0.5f, 1 );
myHomeRange = Commands->Get_Random ( 0, 20 );
Commands->Set_Innate_Aggressiveness ( obj, myAggressiveness );
Commands->Set_Innate_Take_Cover_Probability ( obj, myCoverProbability );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, myHomeRange );
float delayTimer = Commands->Get_Random ( myTimerMin, myTimerMax );
Commands->Start_Timer ( obj, this, delayTimer, M01_MODIFY_YOUR_ACTION_JDG );
}
}
void Killed( GameObject * obj, GameObject * killer )
{
GameObject * convController = Commands->Find_Object ( 107554 );
if (convController != NULL)
{
Commands->Send_Custom_Event( obj, convController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR)
{
starEncountered = true;
GameObject * convController = Commands->Find_Object ( 107554 );
if (convController != NULL)
{
Commands->Send_Custom_Event( obj, convController, 0, M01_START_ACTING_JDG, 0 );
}
}
else if (damager == Commands->Find_Object ( enemySniperId ))
{
retreating = true;
Commands->Set_Innate_Aggressiveness ( obj, 0.2f );
Commands->Set_Innate_Take_Cover_Probability ( obj, 1 );
float delayTimer = Commands->Get_Random ( 0, 2 );
Commands->Start_Timer ( obj, this, delayTimer, M01_MODIFY_YOUR_ACTION_02_JDG );
if (starEncountered == false)
{
float myMaxHealth = Commands->Get_Max_Health ( obj );
Commands->Set_Health ( obj, myMaxHealth );
}
}
else
{
if (starEncountered == false)
{
float myMaxHealth = Commands->Get_Max_Health ( obj );
Commands->Set_Health ( obj, myMaxHealth );
}
}
}
void Timer_Expired( GameObject * obj, int timer_id )
{
switch (timer_id)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
if (retreating == false)
{
myAggressiveness = Commands->Get_Random ( 0, 0.5f );
myCoverProbability = Commands->Get_Random ( 0.5f, 1 );
myHomeRange = Commands->Get_Random ( 0, 20 );
Commands->Set_Innate_Aggressiveness ( obj, myAggressiveness );
Commands->Set_Innate_Take_Cover_Probability ( obj, myCoverProbability );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, myHomeRange );
float delayTimer = Commands->Get_Random ( myTimerMin, myTimerMax );
Commands->Start_Timer ( obj, this, delayTimer, M01_MODIFY_YOUR_ACTION_JDG );
}
}
break;
case M01_MODIFY_YOUR_ACTION_02_JDG:
{
retreating = false;
float delayTimer = Commands->Get_Random ( myTimerMin, myTimerMax );
Commands->Start_Timer ( obj, this, delayTimer, M01_MODIFY_YOUR_ACTION_JDG );
}
break;
}
}
};
DECLARE_SCRIPT(M01_HON_Paintball_Team_02_JDG, "")//this is the officer team
{
int enemySniperId;
float myAggressiveness;
float myCoverProbability;
float myTimerMax;
float myTimerMin;
float myHomeRange;
Vector3 myPosition;
bool retreating;
bool starEncountered;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(enemySniperId, 1);
SAVE_VARIABLE(myAggressiveness, 2);
SAVE_VARIABLE(myCoverProbability, 3);
SAVE_VARIABLE(myTimerMax, 4);
SAVE_VARIABLE(myTimerMin, 5);
SAVE_VARIABLE(myHomeRange, 6);
SAVE_VARIABLE(myPosition, 7);
SAVE_VARIABLE(retreating, 8);
SAVE_VARIABLE(starEncountered, 9);
}
void Created( GameObject * obj )
{
enemySniperId= 101998;
retreating = false;
starEncountered = false;
int myIdNumber = Commands->Get_ID ( obj );
if (myIdNumber == 102001)//team two sniper
{
}
else
{
myPosition = Commands->Get_Position ( obj );
myTimerMin = 5;
myTimerMax = 10;
myAggressiveness = Commands->Get_Random ( 0.75f, 1 );
myCoverProbability = Commands->Get_Random ( 0, 0.25f );
myHomeRange = Commands->Get_Random ( 0, 20 );
Commands->Set_Innate_Aggressiveness ( obj, myAggressiveness );
Commands->Set_Innate_Take_Cover_Probability ( obj, myCoverProbability );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, myHomeRange );
float delayTimer = Commands->Get_Random ( myTimerMin, myTimerMax );
Commands->Start_Timer ( obj, this, delayTimer, M01_MODIFY_YOUR_ACTION_JDG );
}
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
if (enemy == STAR)
{
starEncountered = true;
}
}
void Killed( GameObject * obj, GameObject * killer )
{
GameObject * convController = Commands->Find_Object ( 107554 );
if (convController != NULL)
{
Commands->Send_Custom_Event( obj, convController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR)
{
starEncountered = true;
GameObject * convController = Commands->Find_Object ( 107554 );
if (convController != NULL)
{
Commands->Send_Custom_Event( obj, convController, 0, M01_START_ACTING_JDG, 0 );
}
}
else if (damager == Commands->Find_Object ( enemySniperId ))
{
retreating = true;
Commands->Set_Innate_Aggressiveness ( obj, 0.2f );
Commands->Set_Innate_Take_Cover_Probability ( obj, 1.0f );
float delayTimer = Commands->Get_Random ( 1, 3 );
Commands->Start_Timer ( obj, this, delayTimer, M01_MODIFY_YOUR_ACTION_02_JDG );
if (starEncountered == false)
{
float myMaxHealth = Commands->Get_Max_Health ( obj );
Commands->Set_Health ( obj, myMaxHealth );
}
}
else
{
if (starEncountered == false)
{
float myMaxHealth = Commands->Get_Max_Health ( obj );
Commands->Set_Health ( obj, myMaxHealth );
}
}
}
void Timer_Expired( GameObject * obj, int timer_id )
{
switch (timer_id)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
if (retreating == false)
{
myAggressiveness = Commands->Get_Random ( 0.75f, 1 );
myCoverProbability = Commands->Get_Random ( 0, 0.25f );
myHomeRange = Commands->Get_Random ( 0, 20 );
Commands->Set_Innate_Aggressiveness ( obj, myAggressiveness );
Commands->Set_Innate_Take_Cover_Probability ( obj, myCoverProbability );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, myHomeRange );
float delayTimer = Commands->Get_Random ( myTimerMin, myTimerMax );
Commands->Start_Timer ( obj, this, delayTimer, M01_MODIFY_YOUR_ACTION_JDG );
}
}
break;
case M01_MODIFY_YOUR_ACTION_02_JDG:
{
retreating = false;
float delayTimer = Commands->Get_Random ( myTimerMin, myTimerMax );
Commands->Start_Timer ( obj, this, delayTimer, M01_MODIFY_YOUR_ACTION_JDG );
}
break;
}
}
};
DECLARE_SCRIPT(M01_HON_Dojo_Trainer_JDG, "")//this guys ID is M01_HON_DOJO_SENSEI_JDG 102051
{
int dojo_conv;
bool first_time;
bool handOfNodDead;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(dojo_conv, 1);
SAVE_VARIABLE(first_time, 2);
SAVE_VARIABLE(handOfNodDead, 3);
}
void Created( GameObject * obj )
{
handOfNodDead = false;
first_time = true;
Commands->Innate_Disable(obj);
//Commands->Set_Innate_Is_Stationary ( obj, true );
}
void Killed( GameObject * obj, GameObject * killer )
{
if (handOfNodDead == false)
{
if (Commands->Find_Object (M01_HON_DOJO_CIV_01_JDG))
{
float delayTimer = Commands->Get_Random ( 0, 1 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_HON_DOJO_CIV_01_JDG ), 0, M01_MODIFY_YOUR_ACTION_02_JDG, delayTimer );
}
if (Commands->Find_Object (M01_HON_DOJO_CIV_02_JDG))
{
float delayTimer2 = Commands->Get_Random ( 0, 1 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_HON_DOJO_CIV_02_JDG ), 0, M01_MODIFY_YOUR_ACTION_02_JDG, delayTimer2 );
}
if (Commands->Find_Object (M01_HON_DOJO_CIV_03_JDG))
{
float delayTimer3 = Commands->Get_Random ( 0, 1 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_HON_DOJO_CIV_03_JDG ), 0, M01_MODIFY_YOUR_ACTION_02_JDG, delayTimer3 );
}
}
else
{
if (Commands->Find_Object (M01_HON_DOJO_CIV_01_JDG))
{
float delayTimer = Commands->Get_Random ( 0, 1 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_HON_DOJO_CIV_01_JDG ), 0, M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG, delayTimer );
}
if (Commands->Find_Object (M01_HON_DOJO_CIV_02_JDG))
{
float delayTimer2 = Commands->Get_Random ( 0, 1 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_HON_DOJO_CIV_02_JDG ), 0, M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG, delayTimer2 );
}
if (Commands->Find_Object (M01_HON_DOJO_CIV_03_JDG))
{
float delayTimer3 = Commands->Get_Random ( 0, 1 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_HON_DOJO_CIV_03_JDG ), 0, M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG, delayTimer3 );
}
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR && first_time == true)
{
first_time = false;
if (Commands->Find_Object (M01_HON_DOJO_CIV_01_JDG))
{
float delayTimer = Commands->Get_Random ( 0, 1 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_HON_DOJO_CIV_01_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, delayTimer );
}
if (Commands->Find_Object (M01_HON_DOJO_CIV_02_JDG))
{
float delayTimer2 = Commands->Get_Random ( 0, 1 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_HON_DOJO_CIV_02_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, delayTimer2 );
}
if (Commands->Find_Object (M01_HON_DOJO_CIV_03_JDG))
{
float delayTimer3 = Commands->Get_Random ( 0, 1 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_HON_DOJO_CIV_03_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, delayTimer3 );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_START_ACTING_JDG: //here comes the player--start your routine
{
//Commands->Set_Innate_Is_Stationary ( obj, false );
//Commands->Innate_Enable(obj);
Commands->Set_Innate_Aggressiveness ( obj, 0.50f );
Commands->Set_Innate_Take_Cover_Probability ( obj, 0.5f );
Commands->Innate_Soldier_Enable_Enemy_Seen ( obj, false );
Commands->Innate_Soldier_Enable_Footsteps_Heard ( obj, false );
dojo_conv = Commands->Create_Conversation( "M01_Dojo_Sensei_Conversation", 100, 1000, true);
Commands->Join_Conversation( obj, dojo_conv, false, true );
Commands->Start_Conversation( dojo_conv, dojo_conv );
Commands->Monitor_Conversation( obj, dojo_conv);
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 5 );
}
break;
case M01_MODIFY_YOUR_ACTION_JDG: //turn your sight and hearing back on M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG
{
Commands->Innate_Soldier_Enable_Enemy_Seen ( obj, true );
Commands->Innate_Soldier_Enable_Footsteps_Heard ( obj, true );
}
break;
case M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG: //turn your sight and hearing back on M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG
{
handOfNodDead = true;
Commands->Innate_Enable(obj);
Commands->Innate_Soldier_Enable_Enemy_Seen ( obj, true );
Commands->Innate_Soldier_Enable_Footsteps_Heard ( obj, true );
}
break;
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
switch (complete_reason)
{
case ACTION_COMPLETE_CONVERSATION_ENDED:
{
if (action_id == dojo_conv)//your initial conv is over--tell civs to do pushups
{
if (Commands->Find_Object (M01_HON_DOJO_CIV_01_JDG))
{
float delayTimer = Commands->Get_Random ( 0, 1 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_HON_DOJO_CIV_01_JDG ), 0, M01_START_ACTING_JDG, delayTimer );
}
if (Commands->Find_Object (M01_HON_DOJO_CIV_02_JDG))
{
float delayTimer2 = Commands->Get_Random ( 0, 1 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_HON_DOJO_CIV_02_JDG ), 0, M01_START_ACTING_JDG, delayTimer2 );
}
if (Commands->Find_Object (M01_HON_DOJO_CIV_03_JDG))
{
float delayTimer3 = Commands->Get_Random ( 0, 1 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_HON_DOJO_CIV_03_JDG ), 0, M01_START_ACTING_JDG, delayTimer3 );
}
}
}
break;
}
}
};
DECLARE_SCRIPT(M01_HON_Dojo_Civ_01_JDG, "")
{
/*#define M01_HON_DOJO_CIV_01_JDG 102048
#define M01_HON_DOJO_CIV_02_JDG 102049
#define M01_HON_DOJO_CIV_03_JDG 102050*/
int i_am;
int dojo_civ_01;
int dojo_civ_02;
int dojo_civ_03;
int pushups_done;
int thanks_conv;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(i_am, 1);
SAVE_VARIABLE(dojo_civ_01, 2);
SAVE_VARIABLE(dojo_civ_02, 3);
SAVE_VARIABLE(dojo_civ_03, 4);
SAVE_VARIABLE(pushups_done, 5);
SAVE_VARIABLE(thanks_conv, 6);
}
void Created( GameObject * obj )
{
dojo_civ_01 = 102048;//babushka
dojo_civ_02 = 102049;//billy
dojo_civ_03 = 102050;//farmerjohn
pushups_done = 0;
Commands->Innate_Disable(obj);
int myIdNumber = Commands->Get_ID ( obj );
if (myIdNumber == dojo_civ_01)
{
i_am = dojo_civ_01;
}
else if (myIdNumber == dojo_civ_02)
{
i_am = dojo_civ_02;
}
else if (myIdNumber == dojo_civ_03)
{
i_am = dojo_civ_03;
}
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Create_Sound ( "EVA_Civilian_Killed", Vector3 (0,0,0), obj);
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
switch (param)
{
case M01_START_ACTING_JDG: //you've been told to do pushups--DO THEM!
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );//this is animation of guy going into pushup position
params.Set_Animation( "H_A_J13A", false );
Commands->Action_Play_Animation ( obj, params );
}
break;
case M01_MODIFY_YOUR_ACTION_JDG: //you're done with pushups--report to the armory
{
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(0,0,0), WALK, 2 );
params.WaypathID = 102056;
params.WaypointStartID = 102058;
params.WaypointEndID = 102062;
Commands->Action_Goto( obj, params );
}
break;
case M01_PLAYER_IS_ATTACKING_ME_JDG: //your guard is alerted to Havoc--stop whatever you are doing
{
Commands->Action_Reset ( obj, 100 );
Vector3 myPosition = Commands->Get_Position ( obj );
myPosition.X += Commands->Get_Random ( 0.5f, 1 );
myPosition.Y += Commands->Get_Random ( 0.5f, 2 );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_02_JDG );
params.Set_Movement( myPosition, WALK, 0 );
params.MoveCrouched = true;
Commands->Action_Goto( obj, params );
}
break;
case M01_MODIFY_YOUR_ACTION_02_JDG: //your guard is dead--flock Havoc and say thanks
{
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_03_JDG );
params.Set_Look( STAR, 5 );
Commands->Action_Face_Location ( obj, params );
float delayTimer = Commands->Get_Random ( 0, 1 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_04_JDG, delayTimer );
}
break;
case M01_MODIFY_YOUR_ACTION_03_JDG: //play thanks conv
{
if (obj)
{
Commands->Join_Conversation( obj, thanks_conv, false, true, true );
Commands->Join_Conversation( STAR, thanks_conv, false, false, false );
Commands->Start_Conversation( thanks_conv, thanks_conv );
Commands->Monitor_Conversation( obj, thanks_conv );
}
}
break;
case M01_MODIFY_YOUR_ACTION_04_JDG: //play thanks conv
{
if (i_am == dojo_civ_01)//babushka
{
thanks_conv = Commands->Create_Conversation( "M01_Dojo_Babushka_Thanks_Conversation", 100, 1000, true);
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 0 );
}
else if (i_am == dojo_civ_02)
{
thanks_conv = Commands->Create_Conversation( "M01_Dojo_Billy_Thanks_Conversation", 100, 1000, true);
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 2 );
}
else
{
thanks_conv = Commands->Create_Conversation( "M01_Dojo_FarmerJohn_Thanks_Conversation", 100, 1000, true);
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 4 );
}
}
break;
case M01_PICK_A_NEW_LOCATION_JDG: //see how far you are from havoc
{
Vector3 myPosition = Commands->Get_Position ( obj );
Vector3 playerPosition = Commands->Get_Position ( STAR );
float myDistance = Commands->Get_Distance ( myPosition, playerPosition );
if (myDistance > 75)
{
bool starVisible = Commands->Is_Object_Visible( STAR, obj );
if (starVisible == true)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, 10 );
}
else
{
Commands->Destroy_Object ( obj );
}
}
else
{
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, 10 );
}
}
break;
case M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG: //turn your sight and hearing back on M01_YOUR_BUILDING_HAS_BEEN_DESTROYED_JDG
{
Commands->Action_Reset ( obj, 100 );
Vector3 newGotoSpot(-54.512f, 183.109f, 0.774f);//this is at the landing beach
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_04_JDG );
params.Set_Movement( newGotoSpot, RUN, 5 );
Commands->Action_Goto( obj, params );
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, 10 );//do distance check from star
}
break;
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
ActionParamsStruct params;
switch (complete_reason)
{
case ACTION_COMPLETE_CONVERSATION_ENDED:
{
if (action_id == thanks_conv)
{
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Create_Sound ( "M01_GDI_Thanks_Twiddler", myPosition, obj );
Vector3 newGotoSpot(-54.512f, 183.109f, 0.774f);//this is at the landing beach
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_04_JDG );
params.Set_Movement( newGotoSpot, RUN, 5 );
Commands->Action_Goto( obj, params );
Commands->Send_Custom_Event( obj, obj, 0, M01_PICK_A_NEW_LOCATION_JDG, 10 );//do distance check from star
}
}
break;
case ACTION_COMPLETE_NORMAL:
{
switch (action_id)
{
case M01_DOING_ANIMATION_01_JDG:
{
if (pushups_done < 2)
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );//this is pushup animation animation
params.Set_Animation( "H_A_J13B", false );
Commands->Action_Play_Animation ( obj, params );
pushups_done++;
}
else
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );//this is guy standing up
params.Set_Animation( "H_A_J13C", false );
Commands->Action_Play_Animation ( obj, params );
}
}
break;
case M01_DOING_ANIMATION_02_JDG:
{
char *animationName = M01_Choose_Idle_Animation ( );
params.Set_Basic( this, 100, M01_DOING_ANIMATION_03_JDG );//this is guy standing up
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );
}
break;
case M01_DOING_ANIMATION_03_JDG:
{
if (i_am == dojo_civ_01)
{
float delayTimer = Commands->Get_Random ( 0, 1 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
}
else if (i_am == dojo_civ_02)
{
float delayTimer2 = Commands->Get_Random ( 1, 2 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer2 );
}
else if (i_am == dojo_civ_03)
{
float delayTimer3 = Commands->Get_Random ( 2, 3 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer3 );
}
}
break;
case M01_WALKING_WAYPATH_01_JDG:
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_04_JDG );//this is guy placing C$
params.Set_Animation( "H_A_J12C", false );
Commands->Action_Play_Animation ( obj, params );
}
break;
case M01_DOING_ANIMATION_04_JDG:
{
Vector3 myPosition = Commands->Get_Position ( obj );
GameObject *newsoldier = Commands->Create_Object("Nod_MiniGunner_0", myPosition);
Commands->Attach_Script(newsoldier, "M01_Civ_To_Minigunner_Guy_JDG", "");
Commands->Destroy_Object ( obj );
}
break;
}
}
break;
}
}
};
DECLARE_SCRIPT(M01_Nod_GuardTower_Tailgun_JDG, "")//100246
{
void Created( GameObject * obj )
{
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_START_ATTACKING_01_JDG );
params.Set_Attack( STAR, 30, 1, true);
Commands->Action_Attack(obj, params);
}
};
DECLARE_SCRIPT(M01_Comm_Mainframe_PogZone_01_JDG, "")//108024
{//target location ()
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
Vector3 radarMarker (-293.163f, 499.787f, 19.959f);
Commands->Set_Objective_HUD_Info_Position( M01_UNLOCK_GATE_OBJECTIVE_JDG, 93, "POG_M01_1_02.tga", IDS_POG_ACCESS, radarMarker );
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_Comm_Mainframe_PogZone_02_JDG, "")//108026
{//target location ()
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
Vector3 radarMarker (-292.135f, 522.740f, 16.448f);
Commands->Set_Objective_HUD_Info_Position( M01_UNLOCK_GATE_OBJECTIVE_JDG, 93, "POG_M01_1_02.tga", IDS_POG_ACCESS, radarMarker );
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_Comm_Mainframe_PogZone_03_JDG, "")//108028
{//target location ()
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
Vector3 radarMarker (-314.578f, 517.124f, 16.447f);
Commands->Set_Objective_HUD_Info_Position( M01_UNLOCK_GATE_OBJECTIVE_JDG, 93, "POG_M01_1_02.tga", IDS_POG_ACCESS, radarMarker );
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_Comm_Center_Player_Terminal_Zone, "")//107809
{
bool poked;
bool commCenterDead;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(poked, 1);
SAVE_VARIABLE(commCenterDead, 2);
}
void Created( GameObject * obj )
{
commCenterDead = false;
Commands->Enable_HUD_Pokable_Indicator ( obj, true );
Commands->Display_Health_Bar( obj, false );
poked = false;
}
void Poked( GameObject * obj, GameObject * poker )
{
if (poker == STAR && poked == false)
{
if (commCenterDead == false)
{
poked = true;
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_HAS_POKED_COMM_CENTER_PCT_JDG, 0 );
Commands->Set_Obj_Radar_Blip_Shape ( obj, -1 );
Commands->Set_Obj_Radar_Blip_Color ( obj, -1 );
GameObject * gateTutorialZone = Commands->Find_Object ( 120844 );
if (gateTutorialZone != NULL)
{
Commands->Send_Custom_Event( obj, gateTutorialZone, 0, M01_START_ACTING_JDG, 0 );
}
Commands->Enable_HUD_Pokable_Indicator ( obj, false );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_COMM_SAM_OBJECTIVE_JDG)
{
Commands->Set_Obj_Radar_Blip_Shape ( obj, RADAR_BLIP_SHAPE_OBJECTIVE );
Commands->Set_Obj_Radar_Blip_Color ( obj, RADAR_BLIP_COLOR_PRIMARY_OBJECTIVE );
}
else if (param == M01_COMM_CENTER_HAS_BEEN_DESTROYED_JDG)//comm center has been destroyed
{
commCenterDead = true;
Commands->Enable_HUD_Pokable_Indicator ( obj, false );
}
}
}
};
DECLARE_SCRIPT(M01_Objective_Pog_Controller_JDG, "")//M01_MISSION_POG_CONTROLLER_JDG 105828
{
int missionIntro;
int escKeyConv;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(missionIntro, 1);
SAVE_VARIABLE(escKeyConv, 2);
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
switch (complete_reason)
{
case ACTION_COMPLETE_CONVERSATION_ENDED:
{
if (action_id == missionIntro) //add first objective pog here
{
Vector3 prisonerPenLocation (-312.725f, 575.887f, 27.221f);
Commands->Add_Objective( M01_PRISONER_OBJECTIVE_JDG, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M01_01, NULL, IDS_Enc_Obj_Primary_M01_01 );
Commands->Set_Objective_Radar_Blip( M01_PRISONER_OBJECTIVE_JDG, prisonerPenLocation );
Commands->Set_Objective_HUD_Info_Position( M01_PRISONER_OBJECTIVE_JDG, 80, "POG_M01_1_01.tga", IDS_POG_LOCATE, prisonerPenLocation );
Commands->Set_HUD_Help_Text ( IDS_M00DSGN_DSGN1004I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
escKeyConv = Commands->Create_Conversation( "M01_Press_ESC_For_Objectives_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, escKeyConv, false, false );
Commands->Start_Conversation( escKeyConv, escKeyConv );
Commands->Monitor_Conversation( obj, escKeyConv );
}
else if (action_id == escKeyConv)
{
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0516I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
}
break;
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_GDI_BASE_COMMANDER_OBJECTIVE_JDG)
{
missionIntro = Commands->Create_Conversation( "M01_Start_Mission_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, missionIntro, false, false );
//Commands->Join_Conversation( STAR, missionIntro, false, false );
Commands->Start_Conversation( missionIntro, missionIntro );
Commands->Monitor_Conversation( obj, missionIntro );//M01_GDI_BASE_COMMANDER_OBJECTIVE_JDG
}
if (param == M01_MODIFY_YOUR_ACTION_JDG)
{
escKeyConv = Commands->Create_Conversation( "M01_Press_ESC_For_Objectives_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, escKeyConv, false, false );
Commands->Start_Conversation( escKeyConv, escKeyConv );
Commands->Monitor_Conversation( obj, escKeyConv );
}
}
else if (type == M01_ADD_OBJECTIVE_POG_JDG)
{
if (param == M01_GDI_BASE_POW_OBJECTIVE_JDG)
{
Vector3 initialCaptainLocation (47.128f, 36.584f, -0.930f);
Commands->Add_Objective( M01_GDI_BASE_POW_OBJECTIVE_JDG, OBJECTIVE_TYPE_SECONDARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Secondary_M01_06, NULL, IDS_Enc_Obj_Secondary_M01_06 );
Commands->Set_Objective_Radar_Blip( M01_GDI_BASE_POW_OBJECTIVE_JDG, initialCaptainLocation );
Commands->Set_Objective_HUD_Info_Position( M01_GDI_BASE_POW_OBJECTIVE_JDG, 85, "POG_M01_2_08.tga", IDS_POG_RESCUE, initialCaptainLocation );
//Commands->Send_Custom_Event( obj, obj, M01_REMOVE_OBJECTIVE_POG_JDG, M01_GDI_BASE_COMMANDER_OBJECTIVE_JDG, SECONDARY_POG_DELAY );
//Vector3 blue (0,0,1);
Commands->Set_HUD_Help_Text ( IDS_M00DSGN_DSGN1005I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 2 );
}
else if (param == M01_FIRST_NOD_COMMANDER_OBJECTIVE_JDG)
{
GameObject * barnCommander = Commands->Find_Object ( M01_BARNAREA_NOD_COMMANDER_JDG );
if (barnCommander != NULL)
{
Vector3 commanderPosition = Commands->Get_Position ( barnCommander );
Commands->Set_Objective_HUD_Info_Position( M01_FIRST_NOD_COMMANDER_OBJECTIVE_JDG, 86, "POG_M01_2_01.tga", IDS_POG_ELIMINATE, commanderPosition );
//Commands->Send_Custom_Event( obj, obj, M01_REMOVE_OBJECTIVE_POG_JDG, M01_FIRST_NOD_COMMANDER_OBJECTIVE_JDG, SECONDARY_POG_DELAY );
//Vector3 blue (0,0,1);
Commands->Set_HUD_Help_Text ( IDS_Enc_ObjTitle_Secondary_M01_01, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
}
else if (param == M01_TURRETS_OBJECTIVE_JDG)
{
Vector3 turretsLocation;
GameObject * turret01 = Commands->Find_Object ( 101434 );
GameObject * turret02 = Commands->Find_Object ( 101435 );
if (turret01 != NULL)
{
turretsLocation.Set (-83.916f, 91.667f, 2.807f);
}
else if (turret02 != NULL)
{
turretsLocation.Set (-105.024f, 113.658f, 1.872f);
}
Commands->Set_Objective_HUD_Info_Position( M01_TURRETS_OBJECTIVE_JDG, 91, "POG_M01_2_02.tga", IDS_POG_DESTROY, turretsLocation );
//Commands->Send_Custom_Event( obj, obj, M01_REMOVE_OBJECTIVE_POG_JDG, M01_TURRETS_OBJECTIVE_JDG, SECONDARY_POG_DELAY );
//Vector3 blue (0,0,1);
Commands->Set_HUD_Help_Text ( IDS_Enc_ObjTitle_Secondary_M01_02, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
else if (param == M01_BARN_OBJECTIVE_JDG)
{
Vector3 barnLocation (-49.910f, 183.860f, 0.774f);
Commands->Set_Objective_HUD_Info_Position( M01_BARN_OBJECTIVE_JDG, 92, "POG_M01_2_03.tga", IDS_POG_RESCUE, barnLocation );
//Commands->Send_Custom_Event( obj, obj, M01_REMOVE_OBJECTIVE_POG_JDG, M01_BARN_OBJECTIVE_JDG, SECONDARY_POG_DELAY );
//Vector3 blue (0,0,1);
Commands->Set_HUD_Help_Text ( IDS_Enc_ObjTitle_Secondary_M01_03, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
else if (param == M01_BARN_ROUNDUP_OBJECTIVE_JGD)
{
Vector3 barnLocation (-54.786f, 213.816f, 6.453f);
Commands->Set_Objective_HUD_Info_Position( M01_BARN_ROUNDUP_OBJECTIVE_JGD, 93, "POG_M01_2_04.tga", IDS_POG_EVACUATE, barnLocation );
//Commands->Send_Custom_Event( obj, obj, M01_REMOVE_OBJECTIVE_POG_JDG, M01_BARN_ROUNDUP_OBJECTIVE_JGD, SECONDARY_POG_DELAY );
//Vector3 blue (0,0,1);
Commands->Set_HUD_Help_Text ( IDS_Enc_ObjTitle_Secondary_M01_04, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
else if (param == M01_CHURCH_OBJECTIVE_JDG)//
{
Vector3 churchLocation = Commands->Get_Position ( Commands->Find_Object ( M01_CHURCH_PRIEST_ID ) );
Commands->Set_Objective_HUD_Info_Position( M01_CHURCH_OBJECTIVE_JDG, 94, "POG_M01_2_06.tga", IDS_POG_RESCUE, churchLocation );
//Commands->Send_Custom_Event( obj, obj, M01_REMOVE_OBJECTIVE_POG_JDG, M01_CHURCH_OBJECTIVE_JDG, SECONDARY_POG_DELAY );
//Vector3 blue (0,0,1);
Commands->Set_HUD_Help_Text ( IDS_Enc_ObjTitle_Secondary_M01_05, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
else if (param == M01_HON_OBJECTIVE_JDG)
{
Vector3 mctLocation (-179.3f, 541.9f, 3.518f);
Commands->Set_Objective_HUD_Info_Position( M01_HON_OBJECTIVE_JDG, 95, "POG_M02_2_01.tga", IDS_POG_DESTROY, mctLocation );
//Commands->Send_Custom_Event( obj, obj, M01_REMOVE_OBJECTIVE_POG_JDG, M01_HON_OBJECTIVE_JDG, SECONDARY_POG_DELAY );
//Vector3 blue (0,0,1);
Commands->Set_HUD_Help_Text ( IDS_Enc_ObjTitle_Secondary_M01_07, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
else if (param == M01_COMM_SAM_OBJECTIVE_JDG)
{
Vector3 samLocation (-337.169f, 549.232f, 31.949f);
Commands->Set_Objective_HUD_Info_Position( M01_COMM_SAM_OBJECTIVE_JDG, 96, "POG_M01_1_04.tga", IDS_POG_DESTROY, samLocation );
//Vector3 green (0,1,0);
Commands->Set_HUD_Help_Text ( IDS_Enc_ObjTitle_Primary_M01_04, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
}
else if (type == M01_CHANGE_OBJECTIVE_POG_JDG)
{
GameObject * captDuncan = Commands->Find_Object ( 106050 );
if (captDuncan != NULL)
{
if (param == M01_GDI_BASE_COMMANDER_OBJECTIVE_JDG)
{
//Commands->Set_Objective_Status( M01_GDI_BASE_POW_OBJECTIVE_JDG, OBJECTIVE_STATUS_ACCOMPLISHED );
Commands->Add_Objective( M01_GDI_BASE_COMMANDER_OBJECTIVE_JDG, OBJECTIVE_TYPE_SECONDARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Secondary_M01_08, NULL, IDS_Enc_Obj_Secondary_M01_08 );
Vector3 realCaptainLocation (109.959f, 97.340f, 8.923f);
Commands->Set_Objective_HUD_Info_Position( M01_GDI_BASE_COMMANDER_OBJECTIVE_JDG, 91, "POG_M01_2_05.tga", IDS_POG_CONTACT, realCaptainLocation );
Commands->Set_Objective_Radar_Blip( M01_GDI_BASE_COMMANDER_OBJECTIVE_JDG, realCaptainLocation );
//Commands->Send_Custom_Event( obj, obj, M01_REMOVE_OBJECTIVE_POG_JDG, M01_GDI_BASE_COMMANDER_OBJECTIVE_JDG, SECONDARY_POG_DELAY );
GameObject * triggerZone03 = Commands->Find_Object ( 106052 );
if (triggerZone03 != NULL)
{
Commands->Send_Custom_Event( obj, triggerZone03, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
//Vector3 blue (0,0,1);
Commands->Set_HUD_Help_Text ( IDS_Enc_ObjTitle_Secondary_M01_08, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
}
else if (param == M01_TURRETS_OBJECTIVE_JDG)
{
Vector3 turretsLocation;
GameObject * turret02 = Commands->Find_Object ( 101435 );
if (turret02 != NULL)
{
turretsLocation.Set (-105.024f, 113.658f, 1.872f);
}
Commands->Set_Objective_HUD_Info_Position( M01_TURRETS_OBJECTIVE_JDG, 91, "POG_M01_2_02.tga", IDS_POG_DESTROY, turretsLocation );
}
}
}
};
DECLARE_SCRIPT(M01_GDIBase_FirstChinook_Script_JDG, "")//
{
void Killed( GameObject * obj, GameObject * killer )
{
GameObject * gdiGuy01 = Commands->Find_Object ( 104685 );
if (gdiGuy01 != NULL)
{
Commands->Send_Custom_Event( obj, gdiGuy01, 0, M01_MODIFY_YOUR_ACTION_07_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Church_EvacController_JDG, "")//103394
{
int evac_waypath_id;
int evac_helicopter_id;
int evac_rope_id;
int protectCivsConv;
int deadCivs;
bool transportCalled;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(evac_waypath_id, 1);
SAVE_VARIABLE(evac_helicopter_id, 2);
SAVE_VARIABLE(evac_rope_id, 3);
SAVE_VARIABLE(protectCivsConv, 4);
SAVE_VARIABLE(deadCivs, 5);
SAVE_VARIABLE(transportCalled, 6);
}
void Created( GameObject * obj )
{
deadCivs = 0;
transportCalled = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ((param == M01_START_ACTING_JDG))//civs have been freed--play protect civs conversation
{
protectCivsConv = Commands->Create_Conversation( "M01_Protect_Clergy_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, protectCivsConv, false, false );
//Commands->Join_Conversation( STAR, protectCivsConv, false, false );
Commands->Start_Conversation( protectCivsConv, protectCivsConv );
Commands->Monitor_Conversation (obj, protectCivsConv);
}
else if (param == M01_EVERYONES_ON_BOARD_JDG)//civs are on board--send aircraft away
{
GameObject * evacChopper = Commands->Find_Object ( evac_helicopter_id );
GameObject * evacWaypath = Commands->Find_Object ( evac_waypath_id );
GameObject * evacRope = Commands->Find_Object ( evac_rope_id );
if (evacChopper != NULL)
{
Commands->Send_Custom_Event ( obj, evacChopper, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
if (evacWaypath != NULL)
{
Commands->Send_Custom_Event ( obj, evacWaypath, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
if (evacRope != NULL)
{
Commands->Send_Custom_Event ( obj, evacRope, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
}
else if (param == M01_CIVILIAN_KILLED_JDG)
{
deadCivs++;
if (deadCivs == 3)
{
Commands->Send_Custom_Event ( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CLEAR_CHURCH_OBJECTIVE_FAIL_JDG, 0 );
}
}
else if (param == M01_CHOPPER_IS_SENDING_ID_JDG)//chopper is sending you his ID
{
evac_helicopter_id = Commands->Get_ID ( sender );
Commands->Debug_Message ( "**********************chopper id received.....%d\n",evac_helicopter_id );
}
else if (param == M01_WAYPATH_IS_SENDING_ID_JDG)//waypath is sending you his ID
{
evac_waypath_id = Commands->Get_ID ( sender );
Commands->Debug_Message ( "**********************waypath id received.....%d\n", evac_waypath_id );
}
else if (param == M01_ROPE_IS_SENDING_ID_JDG)//rope is sending you his ID
{
evac_rope_id = Commands->Get_ID ( sender );
Commands->Debug_Message ( "**********************rope id received.....%d\n", evac_rope_id );
}
else if (param == M01_GIVE_ME_A_ROPE_JDG)//someone is waiting--pull him up
{
Vector3 evacPosition = Commands->Get_Position ( obj );
GameObject * troopbone = Commands->Create_Object("Invisible_Object", evacPosition );
Commands->Set_Model ( troopbone, "XG_EV5_troopBN" );
Commands->Attach_Script(troopbone, "M01_Evac_TroopBone_JDG", "");
Commands->Innate_Disable(sender);
Commands->Attach_To_Object_Bone( sender, troopbone, "Troop_L" );
if(troopbone)
{
Commands->Set_Animation ( troopbone, "XG_EV5_troopBN.XG_EV5_troopBN", false);
}
else
{
Commands->Debug_Message("troopbone not created yet");
}
Commands->Set_Animation ( sender, "S_A_Human.XG_EV5_troop", false );
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
{
if (action_id == protectCivsConv)
{
if (transportCalled == false)
{
transportCalled = true;
Vector3 evacPosition = Commands->Get_Position ( obj );
GameObject *controller = Commands->Create_Object("Invisible_Object", evacPosition);
Commands->Attach_Script(controller, "Test_Cinematic", "XG_M01_ChurchArea_EvacAnim.txt");
}
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-140.9f, 320.2f, 8.5f));
Commands->Set_Facing(chinook_obj1, -54.0f);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1I_GDI_Church_TroopDrop.txt");
Commands->Create_Sound ( "00-N180E", Vector3 (0,0,0), obj);
}
}
}
};
DECLARE_SCRIPT(M01_ChurchArea_Air_Evac_Rope_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Debug_Message ( "**********************script attached to evac rope\n" );
Commands->Enable_Hibernation( obj, false );
GameObject * myController = Commands->Find_Object ( 103394 );
if (myController != NULL)
{
Commands->Send_Custom_Event ( obj, myController, 0, M01_ROPE_IS_SENDING_ID_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "XG_EV5_rope.XG_EV5_ropeZ") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Debug_Message ( "*******************************rope has received custom to goto exit anim\n" );
Commands->Set_Animation ( obj, "XG_EV5_rope.XG_EV5_ropeZ", false );
}
break;
}
}
};
DECLARE_SCRIPT(M01_ChurchArea_Air_Evac_Waypath_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Enable_Hibernation( obj, false );
GameObject * myController = Commands->Find_Object ( 103394 );
if (myController != NULL)
{
Commands->Send_Custom_Event ( obj, myController, 0, M01_WAYPATH_IS_SENDING_ID_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "XG_EV5_Path.XG_EV5_PathZ") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Debug_Message ( "*******************************waypath has received custom to goto exit anim\n" );
Commands->Set_Animation ( obj, "XG_EV5_Path.XG_EV5_PathZ", false );
}
break;
}
}
};
DECLARE_SCRIPT(M01_ChurchArea_Air_Evac_Chopper_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV5_trnsA", false );
Commands->Debug_Message ( "**********************script attached to evac chopper\n" );
Commands->Set_Shield_Type ( obj, "Blamo" );
Commands->Enable_Hibernation( obj, false );
Commands->Disable_Physical_Collisions ( obj );
Commands->Send_Custom_Event ( obj, obj, 0, M01_GOTO_IDLE_JDG, 3 );
GameObject * myController = Commands->Find_Object ( 103394 );
if (myController != NULL)
{
Commands->Send_Custom_Event ( obj, myController, 0, M01_CHOPPER_IS_SENDING_ID_JDG, 0 );
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
float myMaxHealth = Commands->Get_Max_Health ( obj );
Commands->Set_Health ( obj, myMaxHealth );
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "v_GDI_trnspt.XG_EV5_trnsA") == 0)
{
Commands->Debug_Message ( "**********************chopper has finished entry anim\n" );
Vector3 evacLocation = Commands->Get_Position ( obj );
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV5_trnsL", true );
GameObject * loveshackNun = Commands->Find_Object ( M01_CHURCH_LOVESHACK_NUN_ID );
GameObject * churchNun = Commands->Find_Object ( M01_CHURCH_INTERIOR_NUN_ID );
GameObject * priest = Commands->Find_Object ( M01_CHURCH_PRIEST_ID );
if (loveshackNun != NULL)
{
Commands->Send_Custom_Event( obj, loveshackNun, 0, M01_GOING_TO_EVAC_SPOT_JDG, 0 );
}
if (churchNun != NULL)
{
Commands->Send_Custom_Event( obj, churchNun, 0, M01_GOING_TO_EVAC_SPOT_JDG, 0 );
}
if (priest != NULL)
{
Commands->Send_Custom_Event( obj, priest, 0, M01_GOING_TO_EVAC_SPOT_JDG, 0 );
}
Commands->Send_Custom_Event ( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 2 );
}
else if (stricmp(anim, "v_GDI_trnspt.XG_EV5_trnsz") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Debug_Message ( "*******************************helicopter has received custom to goto exit anim\n" );
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV5_trnsz", false );
}
break;
case M01_GOTO_IDLE_JDG:
{
Commands->Enable_Collisions ( obj );
}
break;
case M01_DO_END_MISSION_CHECK_JDG:
{
GameObject * loveshackNun = Commands->Find_Object ( M01_CHURCH_LOVESHACK_NUN_ID );
GameObject * churchNun = Commands->Find_Object ( M01_CHURCH_INTERIOR_NUN_ID );
GameObject * priest = Commands->Find_Object ( M01_CHURCH_PRIEST_ID );
if ((loveshackNun != NULL) || (churchNun != NULL) || (priest != NULL))
{
Commands->Send_Custom_Event ( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 2 );
}
else
{
Commands->Debug_Message ( "*******************************all barn civs on board--about to send cutom to controller\n" );
GameObject * controller = Commands->Find_Object ( 103394 );
if (controller != NULL)
{
Commands->Send_Custom_Event ( obj, controller, 0, M01_EVERYONES_ON_BOARD_JDG, 0 );
Commands->Debug_Message ( "*******************************all barn civs on board--sent cutom to controller\n" );
}
}
}
break;
}
}
};
DECLARE_SCRIPT(M01_Church_Priest_JDG, "")
{
int lucky_charms;
int prayerSound;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(lucky_charms, 1);
SAVE_VARIABLE(prayerSound, 1);
}
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
Vector3 myPosition = Commands->Get_Position ( obj );
prayerSound = Commands->Create_Sound ( "MX1DSGN_DSGN0020I1DSGN_SND", myPosition, obj );
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Stop_Sound ( prayerSound, true );
Commands->Create_Sound ( "EVA_Civilian_Killed", Vector3 (0,0,0), obj);
Commands->Send_Custom_Event( obj, Commands->Find_Object ( 103394 ), 0, M01_CIVILIAN_KILLED_JDG, 0 );
}
void Poked( GameObject * obj, GameObject * poker )
{
if (poker == STAR)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CUE_PRIEST_CONVERSATION_JDG, 0 );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//Player is entering church area--cue actors
{
params.Set_Basic( this, 90, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation ("H_A_Host_L2b", true);
Commands->Action_Play_Animation (obj, params);
Commands->Start_Sound ( prayerSound );
}
else if ((param == M01_CHURCH_GUARD_IS_DEAD_JDG))//Your guard is dead--do something
{
Commands->Stop_Sound ( prayerSound, true );
Commands->Enable_Hibernation( obj, false );
params.Set_Basic( this, 90, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation ("H_A_Host_L2c", false);
Commands->Action_Play_Animation (obj, params);
}
else if ((param == M01_GOING_TO_EVAC_SPOT_JDG))//your ride is here--go get in
{
Vector3 myPosition = Commands->Get_Position ( obj );
Vector3 starPosition = Commands->Get_Position ( STAR );
float distance = Commands->Get_Distance ( myPosition, starPosition );
if (distance <= 15)
{
lucky_charms = Commands->Create_Conversation( "M01_Priest_LuckyCharms_Conversation", 100, 1000, false);
Commands->Join_Conversation( obj, lucky_charms, false, true, true );
Commands->Join_Conversation( STAR, lucky_charms, false, false, false );
Commands->Start_Conversation( lucky_charms, lucky_charms );
Commands->Monitor_Conversation( obj, lucky_charms );
}
else
{
Vector3 evacSpot = Commands->Get_Position ( Commands->Find_Object ( 103394 ) );
params.Set_Basic(this, 100, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evacSpot, RUN, 0.5f );
Commands->Action_Goto( obj, params );
}
//ActionParamsStruct params;
//Commands->Action_Reset ( obj, 100 );
//params.Set_Basic(this, 100, M01_PICK_A_NEW_LOCATION_JDG);
//params.Set_Movement( STAR, RUN, 8 );
//Commands->Action_Goto( obj, params );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.XG_EV5_troop") == 0)
{
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 )//civ is standing up after guard is dead
{
params.Set_Basic( this, 90, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation ("H_A_Host_L1b", false);
Commands->Action_Play_Animation (obj, params);
}
else if (action_id == M01_DOING_ANIMATION_02_JDG)//civ is standing up after guard is dead
{
params.Set_Basic( this, 90, M01_DOING_ANIMATION_03_JDG );
params.Set_Animation ("H_A_Host_L1c", false);
Commands->Action_Play_Animation (obj, params);
}
else if (action_id == M01_DOING_ANIMATION_03_JDG)//civ is standing up after guard is dead
{
params.Set_Basic( this, 90, M01_WALKING_WAYPATH_02_JDG );
params.Set_Movement( Vector3 (-135.571f, 340.213f, 9.608f), 0.9f, 0.5f );
Commands->Action_Goto( obj, params );
}
else if (action_id == M01_WALKING_WAYPATH_02_JDG)//civ is standing up after guard is dead
{
Commands->Enable_Hibernation( obj, true );
if (Commands->Find_Object ( 103395 ))//this is your conversation zone
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( 103395 ), 0, M01_START_ACTING_JDG, 0 );
}
}
else if (action_id == M01_GOING_TO_EVAC_SPOT_JDG)//Nun is by chinook--play getting on anim
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CHURCH_CLERGY_HAS_BOARDED_JDG, 1 );
Commands->Give_Points( STAR, 2000, false );
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);
Commands->Create_Object ( powerups[random], powerupSpawnLocation );
GameObject * airdropController = Commands->Find_Object ( M01_CHURCHAREA_EVAC_MONITOR_JDG );
if (airdropController != NULL)
{
Commands->Send_Custom_Event( obj, airdropController, 0, M01_GOING_TO_EVAC_SPOT_JDG, 0 );
}
GameObject * myEvacController = Commands->Find_Object ( 103394 );
if (myEvacController != NULL)//tell controller to spawn a rope
{
Commands->Send_Custom_Event( obj, myEvacController, 0, M01_GIVE_ME_A_ROPE_JDG, 0 );
}
}
else if (action_id == M01_PICK_A_NEW_LOCATION_JDG)//priest is by Havoc--cue lucky charms conversation
{
//lucky_charms = Commands->Create_Conversation( "M01_Priest_LuckyCharms_Conversation", 100, 1000, false);
//Commands->Join_Conversation( obj, lucky_charms, true, true );
//Commands->Start_Conversation( lucky_charms, lucky_charms );
//Commands->Monitor_Conversation( obj, lucky_charms );
}
else if (action_id == M01_DOING_ANIMATION_04_JDG && complete_reason == ACTION_COMPLETE_NORMAL)//priest is by Havoc--cue lucky charms conversation
{
Vector3 evacSpot = Commands->Get_Position ( Commands->Find_Object ( 103394 ) );
params.Set_Basic(this, 100, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evacSpot, RUN, 0.5f );
Commands->Action_Goto( obj, params );
}
}
else if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)//priest is by Havoc--cue lucky charms conversation
{
if (action_id == lucky_charms)
{
params.Set_Basic(this, 100, M01_DOING_ANIMATION_04_JDG);
params.Set_Animation ("H_A_J12C", false);
Commands->Action_Play_Animation (obj, params);
Vector3 spawnPosition = Commands->Get_Position ( obj );
spawnPosition.Z += 0.75f;
int spawn_count = 1;
while (spawn_count <= 1)
{
spawnPosition.X += Commands->Get_Random( -2.0f , 2.0f);
spawnPosition.Y += Commands->Get_Random( -2.0f , 2.0f);
GameObject *luckycharm;
luckycharm = Commands->Create_Object ( "POW_Data_Disc", spawnPosition );
Commands->Attach_Script(luckycharm, "M01_Priest_Datadisc_JDG", "");
spawn_count++;
}
}
}
}
};
DECLARE_SCRIPT(M01_Church_Interior_Nun_JDG, "")
{
bool following_player;
int prayerSound;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(following_player, 1);
SAVE_VARIABLE(prayerSound, 2);
}
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
following_player = false;
Vector3 myPosition = Commands->Get_Position ( obj );
prayerSound = Commands->Create_Sound ( "MX1DSGN_DSGN0021I1DSGN_SND", myPosition, obj );
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Stop_Sound ( prayerSound, true );
Commands->Create_Sound ( "EVA_Civilian_Killed", Vector3 (0,0,0), obj);
Commands->Send_Custom_Event( obj, Commands->Find_Object ( 103394 ), 0, M01_CIVILIAN_KILLED_JDG, 0 );
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//Player is entering church area--cue actors
{
params.Set_Basic( this, 90, 0 );
params.Set_Animation ("S_A_Human.H_A_Host_L2b", true);
Commands->Action_Play_Animation (obj, params);
Commands->Start_Sound ( prayerSound );
}
else if ((param == M01_CHURCH_GUARD_IS_DEAD_JDG))//Your guard is dead--do something
{
Commands->Stop_Sound ( prayerSound, true );
Commands->Enable_Hibernation( obj, false );
params.Set_Basic( this, 90, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation ("S_A_Human.H_A_Host_L2c", false);
Commands->Action_Play_Animation (obj, params);
}
else if ((param == M01_GOING_TO_EVAC_SPOT_JDG))//your ride is here--go get in
{
Vector3 evacSpot = Commands->Get_Position ( Commands->Find_Object ( 103394 ) );
ActionParamsStruct params;
Commands->Action_Reset ( obj, 100 );
params.Set_Basic(this, 100, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evacSpot, RUN, 1 );
Commands->Action_Goto( obj, params );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.XG_EV5_troop") == 0)
{
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)//civ is standing up after guard is dead
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation ("S_A_Human.H_A_Host_L1b", false);
Commands->Action_Play_Animation (obj, params);
}
else if (action_id == M01_DOING_ANIMATION_02_JDG)//civ is standing up after guard is dead
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_03_JDG );
params.Set_Animation ("S_A_Human.H_A_Host_L1c", false);
Commands->Action_Play_Animation (obj, params);
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Create_Sound ( "MX1DSGN_DSGN0022I1DSGN_SND", myPosition, obj );
}
else if (action_id == M01_DOING_ANIMATION_03_JDG)//civ is standing up after guard is dead
{
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_02_JDG );
params.Set_Movement( Vector3 (-136.738f, 325.073f, 8.167f), RUN, 0.50f );
Commands->Action_Goto( obj, params );
}
else if (action_id == M01_WALKING_WAYPATH_02_JDG)//Nun is by chinook--play getting on anim
{
Commands->Enable_Hibernation( obj, true );
if (Commands->Find_Object ( 101370 ))//this is your conversation zone
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( 101370 ), 0, M01_START_ACTING_JDG, 1 );
}
}
else if (action_id == M01_GOING_TO_EVAC_SPOT_JDG )//Nun is by chinook--play getting on anim
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CHURCH_CLERGY_HAS_BOARDED_JDG, 1 );
Commands->Give_Points( STAR, 2000, false );
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);
Commands->Create_Object ( powerups[random], powerupSpawnLocation );
GameObject * airdropController = Commands->Find_Object ( M01_CHURCHAREA_EVAC_MONITOR_JDG );
if (airdropController != NULL)
{
Commands->Send_Custom_Event( obj, airdropController, 0, M01_GOING_TO_EVAC_SPOT_JDG, 0 );
}
GameObject * myEvacController = Commands->Find_Object ( 103394 );
if (myEvacController != NULL)//tell controller to spawn a rope
{
Commands->Send_Custom_Event( obj, myEvacController, 0, M01_GIVE_ME_A_ROPE_JDG, 0 );
}
}
}
}
void Poked( GameObject * obj, GameObject * poker )
{
ActionParamsStruct params;
if (poker == STAR)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CUE_INTERIOR_NUN_CONVERSATION_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Church_LoveShack_Nun_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Create_Sound ( "EVA_Civilian_Killed", Vector3 (0,0,0), obj);
Commands->Send_Custom_Event( obj, Commands->Find_Object ( 103394 ), 0, M01_CIVILIAN_KILLED_JDG, 0 );
GameObject * conversationZone = Commands->Find_Object ( 103392 );
if (conversationZone != NULL)
{
Commands->Destroy_Object ( conversationZone );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if ((param == M01_START_ACTING_JDG))//Player is entering church area--cue actors
{
params.Set_Basic(this, 90, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
params.WaypathID = 100750;
params.WaypointStartID = 100753;
params.WaypointEndID = 100758;
Commands->Action_Goto( obj, params );
}
else if ((param == M01_LOVESHACK_GUARD_IS_DEAD_JDG))//Your guard is dead--follow havoc
{
Commands->Enable_Hibernation( obj, false );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_02_JDG );
params.Set_Movement( Vector3 (0,0,0), RUN, 1.0f );
params.WaypathID = 103383;
params.WaypointStartID = 103384;
params.WaypointEndID = 103390;
Commands->Action_Goto( obj, params );
}
else if ((param == M01_GOING_TO_EVAC_SPOT_JDG))//your ride is here--go get in
{
Vector3 evacSpot = Commands->Get_Position ( Commands->Find_Object ( 103394 ) );
ActionParamsStruct params;
Commands->Action_Reset ( obj, 100 );
params.Set_Basic(this, 100, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evacSpot, RUN, 1 );
Commands->Action_Goto( obj, params );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.XG_EV5_troop") == 0)
{
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_GOING_TO_EVAC_SPOT_JDG )//Nun is by chinook--play getting on anim
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CHURCH_CLERGY_HAS_BOARDED_JDG, 1 );
Commands->Give_Points( STAR, 2000, false );
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 );
GameObject * airdropController = Commands->Find_Object ( M01_CHURCHAREA_EVAC_MONITOR_JDG );
if (airdropController != NULL)
{
Commands->Send_Custom_Event( obj, airdropController, 0, M01_GOING_TO_EVAC_SPOT_JDG, 0 );
}
GameObject * myEvacController = Commands->Find_Object ( 103394 );
if (myEvacController != NULL)//tell controller to spawn a rope
{
Commands->Send_Custom_Event( obj, myEvacController, 0, M01_GIVE_ME_A_ROPE_JDG, 0 );
}
}
else if (action_id == M01_WALKING_WAYPATH_02_JDG )//nun is at hide spot--play animation--cue havoc talk zone
{
Commands->Enable_Hibernation( obj, true );
if (Commands->Find_Object ( 101368 ))//this is your conversation zone
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( 101368 ), 0, M01_START_ACTING_JDG, 1 );
}
}
}
}
void Poked( GameObject * obj, GameObject * poker )
{
if (poker == STAR)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CUE_LOVESHACK_NUN_CONVERSATION_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_BarnArea_Air_Evac_Rope_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Debug_Message ( "**********************script attached to evac rope\n" );
Commands->Enable_Hibernation( obj, false );
GameObject * myController = Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG );
if (myController != NULL)
{
Commands->Send_Custom_Event ( obj, myController, 0, M01_ROPE_IS_SENDING_ID_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "XG_EV5_rope.XG_EV5_ropeZ") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Debug_Message ( "*******************************rope has received custom to goto exit anim\n" );
Commands->Set_Animation ( obj, "XG_EV5_rope.XG_EV5_ropeZ", false );
}
break;
}
}
};
DECLARE_SCRIPT(M01_BarnArea_Air_Evac_Waypath_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Enable_Hibernation( obj, false );
GameObject * myController = Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG );
if (myController != NULL)
{
Commands->Send_Custom_Event ( obj, myController, 0, M01_WAYPATH_IS_SENDING_ID_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "XG_EV5_Path.XG_EV5_PathZ") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Debug_Message ( "*******************************waypath has received custom to goto exit anim\n" );
Commands->Set_Animation ( obj, "XG_EV5_Path.XG_EV5_PathZ", false );
}
break;
}
}
};
DECLARE_SCRIPT(M01_BarnArea_Air_Evac_Chopper_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV5_trnsA", false );
Commands->Debug_Message ( "**********************script attached to evac chopper\n" );
Commands->Set_Shield_Type ( obj, "Blamo" );
Commands->Enable_Hibernation( obj, false );
Commands->Disable_Physical_Collisions ( obj );
Commands->Send_Custom_Event ( obj, obj, 0, M01_GOTO_IDLE_JDG, 3 );
GameObject * myController = Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG );
if (myController != NULL)
{
Commands->Send_Custom_Event ( obj, myController, 0, M01_CHOPPER_IS_SENDING_ID_JDG, 0 );
}
GameObject * barnCiv01 = Commands->Find_Object ( M01_BARN_PRISONER_01_ID );
GameObject * barnCiv02 = Commands->Find_Object ( M01_BARN_PRISONER_02_ID );
GameObject * barnCiv03 = Commands->Find_Object ( M01_BARN_PRISONER_03_ID );
if (barnCiv01 != NULL)
{
Commands->Send_Custom_Event ( obj, barnCiv01, 0, M01_SEND_BARN_CIVILIANS_RESCUE_CHINOOK_JDG, 0 );
}
if (barnCiv02 != NULL)
{
Commands->Send_Custom_Event ( obj, barnCiv02, 0, M01_SEND_BARN_CIVILIANS_RESCUE_CHINOOK_JDG, 0 );
}
if (barnCiv03 != NULL)
{
Commands->Send_Custom_Event ( obj, barnCiv03, 0, M01_SEND_BARN_CIVILIANS_RESCUE_CHINOOK_JDG, 0 );
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
float myMaxHealth = Commands->Get_Max_Health ( obj );
Commands->Set_Health ( obj, myMaxHealth );
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "v_GDI_trnspt.XG_EV5_trnsA") == 0)
{
Commands->Debug_Message ( "**********************chopper has finished entry anim\n" );
Vector3 evacLocation = Commands->Get_Position ( obj );
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV5_trnsL", true );
GameObject * barnCiv01 = Commands->Find_Object ( M01_BARN_PRISONER_01_ID );
GameObject * barnCiv02 = Commands->Find_Object ( M01_BARN_PRISONER_02_ID );
GameObject * barnCiv03 = Commands->Find_Object ( M01_BARN_PRISONER_03_ID );
if (barnCiv01 != NULL)
{
Commands->Send_Custom_Event ( obj, barnCiv01, 0, M01_GOING_TO_EVAC_SPOT02_JDG, 0 );
}
if (barnCiv02 != NULL)
{
Commands->Send_Custom_Event ( obj, barnCiv02, 0, M01_GOING_TO_EVAC_SPOT02_JDG, 0 );
}
if (barnCiv03 != NULL)
{
Commands->Send_Custom_Event ( obj, barnCiv03, 0, M01_GOING_TO_EVAC_SPOT02_JDG, 2 );
}
Commands->Send_Custom_Event ( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 2 );
}
else if (stricmp(anim, "v_GDI_trnspt.XG_EV5_trnsz") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Debug_Message ( "*******************************helicopter has received custom to goto exit anim\n" );
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV5_trnsz", false );
}
break;
case M01_GOTO_IDLE_JDG:
{
Commands->Enable_Collisions ( obj );
}
break;
case M01_DO_END_MISSION_CHECK_JDG:
{
GameObject * barnCiv01 = Commands->Find_Object ( M01_BARN_PRISONER_01_ID );
GameObject * barnCiv02 = Commands->Find_Object ( M01_BARN_PRISONER_02_ID );
GameObject * barnCiv03 = Commands->Find_Object ( M01_BARN_PRISONER_03_ID );
if ((barnCiv01 != NULL)||(barnCiv02 != NULL)||(barnCiv03 != NULL))
{
Commands->Send_Custom_Event ( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 1 );
}
else
{
Commands->Debug_Message ( "*******************************all barn civs on board--about to send cutom to controller\n" );
GameObject * controller = Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG );
if (controller != NULL)
{
Commands->Send_Custom_Event ( obj, controller, 0, M01_EVERYONES_ON_BOARD_JDG, 0 );
Commands->Debug_Message ( "*******************************all barn civs on board--sent cutom to controller\n" );
}
GameObject * missionController = Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG );
if (missionController != NULL)
{
Commands->Send_Custom_Event( obj, missionController, 0, M01_END_BARN_ROUNDUP_OBJECTIVE_JDG, 0 );
}
}
}
break;
}
}
};
DECLARE_SCRIPT(M01_Barn_Prisoner_01_JDG, "")//this guys ID is M01_BARN_PRISONER_01_ID 101442--this is female
{
bool talkingToHavoc;
bool chinookOnWay;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(talkingToHavoc, 1);
SAVE_VARIABLE(chinookOnWay, 2);
}
void Created( GameObject * obj )
{
talkingToHavoc = false;
chinookOnWay = false;
Commands->Innate_Disable(obj);
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation( "S_A_HUMAN.H_A_HOST_L2B", true );
Commands->Action_Play_Animation ( obj, params );
}
void Killed( GameObject * obj, GameObject * killer ) //
{
Commands->Create_Sound ( "EVA_Civilian_Killed", Vector3 (0,0,0), obj );
//Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CIVILIAN_KILLED_JDG, 0 );
if (talkingToHavoc == true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CUE_BABUSHKA_CONVERSATION_JDG, 2 );
}
GameObject * evacController = Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG );
if (evacController != NULL)
{
Commands->Send_Custom_Event( obj, evacController, 0, M01_CIVILIAN_KILLED_JDG, 0 );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (param == M01_MODIFY_YOUR_ACTION_JDG)//babushka runs to hide spot
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation( "S_A_HUMAN.H_A_HOST_L2C", false );
Commands->Action_Play_Animation ( obj, params );
}
else if (param == M01_MODIFY_YOUR_ACTION_04_JDG)//you are now talking to havoc in your shed
{
talkingToHavoc = true;
}
else if (param == M01_MODIFY_YOUR_ACTION_05_JDG)//your havoc conversation is now over
{
talkingToHavoc = false;
}
else if (param == M01_SEND_BARN_CIVILIANS_RESCUE_CHINOOK_JDG)//your ride is on the way--disable hibernation
{
chinookOnWay = true;
Commands->Enable_Hibernation( obj, false );
}
else if (param == M01_GOING_TO_EVAC_SPOT02_JDG)
{
Commands->Enable_Hibernation(obj, false );
Vector3 evacSpot = Commands->Get_Position ( Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG ) );
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evacSpot, RUN, 1 );
Commands->Action_Goto( obj, params );
Commands->Set_Player_Type ( obj, SCRIPT_PLAYERTYPE_GDI );
//Commands->Set_Obj_Radar_Blip_Shape ( obj, RADAR_BLIP_SHAPE_OBJECTIVE );
Commands->Set_Obj_Radar_Blip_Color ( obj, RADAR_BLIP_COLOR_NEUTRAL );
GameObject * babushkazone = Commands->Find_Object ( 101662 );
if (babushkazone != NULL)//kill babushka talk zone
{
Commands->Destroy_Object ( babushkazone );
}
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.XG_EV5_troop") == 0)
{
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_WALKING_WAYPATH_02_JDG)//civ is at hiding spot--crouch
{
Commands->Set_Innate_Is_Stationary ( obj, true );
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
params.Set_Attack (STAR, 0, 0, true);
params.Set_Animation ("S_A_HUMAN.H_A_A0C0", true);
Commands->Action_Play_Animation (obj, params);
if (Commands->Find_Object ( 101662 ))//sending custom to babushka conversation zone--okay to play conversation
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( 101662 ), 0, M01_START_ACTING_JDG, 0 );
}
if (chinookOnWay == false)
{
Commands->Enable_Hibernation( obj, true );
}
}
else if (action_id == M01_GOING_TO_EVAC_SPOT_JDG)//civ is at evac chopper--get on
{
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 );
//Commands->Give_Points( STAR, 2000, false );
GameObject * airdropController = Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG );
if (airdropController != NULL)
{
Commands->Send_Custom_Event( obj, airdropController, 0, M01_GOING_TO_EVAC_SPOT_JDG, 0 );
}
GameObject * myEvacController = Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG );
if (myEvacController != NULL)//tell controller to spawn a rope
{
Commands->Send_Custom_Event( obj, myEvacController, 0, M01_GIVE_ME_A_ROPE_JDG, 0 );
}
}
else if (action_id == M01_DOING_ANIMATION_02_JDG )//pow guy is standingup
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_03_JDG );
params.Set_Animation( "S_A_HUMAN.H_A_HOST_L1C", false );
Commands->Action_Play_Animation ( obj, params );
Commands->Set_Innate_Is_Stationary ( obj, true );
}
else if (action_id == M01_DOING_ANIMATION_03_JDG )//play the Havoc conversation
{
Commands->Enable_Hibernation( obj, false );
Commands->Action_Reset ( obj, 100 );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_02_JDG );
params.Set_Movement( Vector3(-51.0f, 214.2f, 5.5f), 1.0f, 0.5f );
Commands->Action_Goto( obj, params );
}
}
}
};
DECLARE_SCRIPT(M01_Barn_Prisoner_02_JDG, "")//this guys ID is M01_BARN_PRISONER_02_ID 101444--this is Billy
{
bool chinookOnWay;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(chinookOnWay, 1);
}
void Created( GameObject * obj )
{
chinookOnWay = false;
Commands->Innate_Disable(obj);
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation( "S_A_HUMAN.H_A_HOST_L2B", true );
Commands->Action_Play_Animation ( obj, params );
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Create_Sound ( "EVA_Civilian_Killed", Vector3 (0,0,0), obj );
//Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CIVILIAN_KILLED_JDG, 0 );
GameObject * evacController = Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG );
if (evacController != NULL)
{
Commands->Send_Custom_Event( obj, evacController, 0, M01_CIVILIAN_KILLED_JDG, 0 );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (param == M01_MODIFY_YOUR_ACTION_JDG)//goto your hiding spot
{
Commands->Enable_Hibernation( obj, false );
Commands->Action_Reset ( obj, 100 );
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation( "S_A_HUMAN.H_A_HOST_L2C", false );
Commands->Action_Play_Animation ( obj, params );
}
else if (param == M01_SEND_BARN_CIVILIANS_RESCUE_CHINOOK_JDG)//your ride is on the way--disable hibernation
{
chinookOnWay = true;
Commands->Enable_Hibernation( obj, false );
}
else if (param == M01_GOING_TO_EVAC_SPOT02_JDG)
{
Commands->Enable_Hibernation(obj, false );
Vector3 evacSpot = Commands->Get_Position ( Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG ) );
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evacSpot, RUN, 1 );
Commands->Action_Goto( obj, params );
GameObject * billyszone = Commands->Find_Object ( 101661 );
if (billyszone != NULL)//kill billy's talk zone
{
Commands->Destroy_Object ( billyszone );
}
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.XG_EV5_troop") == 0)
{
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_WALKING_WAYPATH_01_JDG)//billys at his hide spot
{
if (Commands->Find_Object ( 101661 ))//sending custom to billys conversation zone--okay to play conversation
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( 101661 ), 0, M01_START_ACTING_JDG, 0 );
}
if (chinookOnWay == false)
{
Commands->Enable_Hibernation( obj, true );
}
}
else if (action_id == M01_GOING_TO_EVAC_SPOT_JDG)//civ is at evac chopper--get on
{
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);
Commands->Create_Object ( powerups[random], powerupSpawnLocation );
Commands->Give_Points( STAR, 2000, false );
GameObject * airdropController = Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG );
if (airdropController != NULL)
{
Commands->Send_Custom_Event( obj, airdropController, 0, M01_GOING_TO_EVAC_SPOT_JDG, 0 );
}
GameObject * myEvacController = Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG );
if (myEvacController != NULL)//tell controller to spawn a rope
{
Commands->Send_Custom_Event( obj, myEvacController, 0, M01_GIVE_ME_A_ROPE_JDG, 0 );
}
}
else if (action_id == M01_DOING_ANIMATION_02_JDG )//pow guy is standingup
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_03_JDG );
params.Set_Animation( "S_A_HUMAN.H_A_HOST_L1C", false );
Commands->Action_Play_Animation ( obj, params );
Commands->Set_Innate_Is_Stationary ( obj, true );
}
else if (action_id == M01_DOING_ANIMATION_03_JDG )//play the Havoc conversation
{
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(-73.572f, 138.013f, 0.329f), RUN, .5f );
Commands->Action_Goto( obj, params );
Commands->Set_Player_Type ( obj, SCRIPT_PLAYERTYPE_GDI );
//Commands->Set_Obj_Radar_Blip_Shape ( obj, RADAR_BLIP_SHAPE_OBJECTIVE );
Commands->Set_Obj_Radar_Blip_Color ( obj, RADAR_BLIP_COLOR_NEUTRAL );
}
}
}
};
DECLARE_SCRIPT(M01_Barn_Prisoner_03_JDG, "")//this guys ID is M01_BARN_PRISONER_03_ID 101443--this is pierre
{
bool chinookOnWay;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(chinookOnWay, 1);
}
void Created( GameObject * obj )
{
chinookOnWay = false;
//Commands->Innate_Disable(obj);
Commands->Set_Innate_Is_Stationary ( obj, true );
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation( "S_A_HUMAN.H_A_HOST_L2B", true );
Commands->Action_Play_Animation ( obj, params );
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Create_Sound ( "EVA_Civilian_Killed", Vector3 (0,0,0), obj );
//Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_CIVILIAN_KILLED_JDG, 0 );
GameObject * evacController = Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG );
if (evacController != NULL)
{
Commands->Send_Custom_Event( obj, evacController, 0, M01_CIVILIAN_KILLED_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.XG_EV5_troop") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (param == M01_MODIFY_YOUR_ACTION_JDG)//guy runs to back shed
{
Commands->Set_Innate_Is_Stationary ( obj, false );
Commands->Enable_Hibernation( obj, false );
Commands->Action_Reset ( obj, 100 );
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation( "S_A_HUMAN.H_A_HOST_L2C", false );
Commands->Action_Play_Animation ( obj, params );
}//M01_MODIFY_YOUR_ACTION_11_JDG
else if (param == M01_MODIFY_YOUR_ACTION_11_JDG)//babushka is talking ot havoc--turn and face him
{
Commands->Action_Reset ( obj, 100 );
//ActionParamsStruct params;
//params.Set_Basic(this, 100, M01_MODIFY_YOUR_ACTION_JDG);
//params.Set_Look( STAR, 15 );
//params.Set_Attack( STAR, 0, 0, true );
//Commands->Action_Attack ( obj, params );
//Commands->Action_Face_Location ( obj, params );
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_MODIFY_YOUR_ACTION_JDG);
//params.Set_Look( STAR, 15 );
params.Set_Attack( STAR, 0, 0, true );
Commands->Action_Attack ( obj, params );
}
else if (param == M01_SEND_BARN_CIVILIANS_RESCUE_CHINOOK_JDG)//your ride is on the way--disable hibernation
{
chinookOnWay = true;
Commands->Enable_Hibernation( obj, false );
Commands->Set_Innate_Is_Stationary ( obj, false );
}
else if (param == M01_GOING_TO_EVAC_SPOT02_JDG)
{
Commands->Debug_Message ( "***************************barn civ 3 has received evac chopper call--should now be going to evac spot\n" );
Commands->Enable_Hibernation(obj, false );
Commands->Set_Innate_Is_Stationary ( obj, false );
Vector3 evacSpot = Commands->Get_Position ( Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG ) );
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_GOING_TO_EVAC_SPOT_JDG);
params.Set_Movement( evacSpot, 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)//civ is at hiding spot--crouch
{
Commands->Set_Innate_Is_Stationary ( obj, true );
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_MODIFY_YOUR_ACTION_JDG);
params.Set_Look( STAR, 15 );
//params.Set_Attack( STAR, 0, 0, true );
//Commands->Action_Attack ( obj, params );
Commands->Action_Face_Location ( obj, params );
if (Commands->Find_Object ( 101662 ))//sending custom to babushka conversation zone--okay to play conversation
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( 101662 ), 0, M01_START_ACTING_JDG, 0 );
}
if (chinookOnWay == false)
{
Commands->Enable_Hibernation( obj, true );
}
}
else if (action_id == M01_GOING_TO_EVAC_SPOT_JDG )//civ is at evac chopper--get on
{
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 );
//Commands->Give_Points( STAR, 2000, false );
GameObject * airdropController = Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG );
if (airdropController != NULL)
{
Commands->Send_Custom_Event( obj, airdropController, 0, M01_GOING_TO_EVAC_SPOT_JDG, 0 );
}
GameObject * myEvacController = Commands->Find_Object ( M01_BARNAREA_EVAC_MONITOR_JDG );
if (myEvacController != NULL)//tell controller to spawn a rope
{
Commands->Send_Custom_Event( obj, myEvacController, 0, M01_GIVE_ME_A_ROPE_JDG, 0 );
}
}
else if (action_id == M01_DOING_ANIMATION_02_JDG )//pow guy is standingup
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_03_JDG );
params.Set_Animation( "S_A_HUMAN.H_A_HOST_L1C", false );
Commands->Action_Play_Animation ( obj, params );
Commands->Set_Innate_Is_Stationary ( obj, true );
}
else if (action_id == M01_DOING_ANIMATION_03_JDG )//play the Havoc conversation
{
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( Vector3(-56.8f, 213.2f, 5.5f), 1.0f, 0.5f );
Commands->Action_Goto( obj, params );
Commands->Set_Player_Type ( obj, SCRIPT_PLAYERTYPE_GDI );
//Commands->Set_Obj_Radar_Blip_Shape ( obj, RADAR_BLIP_SHAPE_OBJECTIVE );
Commands->Set_Obj_Radar_Blip_Color ( obj, RADAR_BLIP_COLOR_NEUTRAL );
}
}
}
};
DECLARE_SCRIPT(M01_GDIBasePOW_Air_Evac_Rope_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Debug_Message ( "**********************script attached to evac rope\n" );
Commands->Enable_Hibernation( obj, false );
GameObject * myController = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_MONITOR_JDG );
if (myController != NULL)
{
Commands->Send_Custom_Event ( obj, myController, 0, M01_ROPE_IS_SENDING_ID_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "XG_EV5_rope.XG_EV5_ropeZ") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Debug_Message ( "*******************************rope has received custom to goto exit anim\n" );
Commands->Set_Animation ( obj, "XG_EV5_rope.XG_EV5_ropeZ", false );
}
break;
}
}
};
DECLARE_SCRIPT(M01_GDIBasePOW_Air_Evac_Waypath_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Enable_Hibernation( obj, false );
GameObject * myController = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_MONITOR_JDG );
if (myController != NULL)
{
Commands->Send_Custom_Event ( obj, myController, 0, M01_WAYPATH_IS_SENDING_ID_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "XG_EV5_Path.XG_EV5_PathZ") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Debug_Message ( "*******************************waypath has received custom to goto exit anim\n" );
Commands->Set_Animation ( obj, "XG_EV5_Path.XG_EV5_PathZ", false );
}
break;
}
}
};
DECLARE_SCRIPT(M01_Evac_TroopBone_JDG, "")
{
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "XG_EV5_troopBN.XG_EV5_troopBN") == 0)
{
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_GDIBaseCommander_Air_Evac_Waypath_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Enable_Hibernation( obj, false );
GameObject * myController = Commands->Find_Object ( 106694 );
if (myController != NULL)
{
Commands->Send_Custom_Event ( obj, myController, 0, M01_MODIFY_YOUR_ACTION_04_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "XG_EV5_Path.XG_EV5_PathZ") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Debug_Message ( "*******************************waypath has received custom to goto exit anim\n" );
Commands->Set_Animation ( obj, "XG_EV5_Path.XG_EV5_PathZ", false );
}
break;
}
}
};
DECLARE_SCRIPT(M01_GDIBaseCommander_Air_Evac_Rope_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Debug_Message ( "**********************script attached to evac rope\n" );
Commands->Enable_Hibernation( obj, false );
GameObject * myController = Commands->Find_Object ( 106694 );
if (myController != NULL)
{
Commands->Send_Custom_Event ( obj, myController, 0, M01_MODIFY_YOUR_ACTION_05_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "XG_EV5_rope.XG_EV5_ropeZ") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Debug_Message ( "*******************************rope has received custom to goto exit anim\n" );
Commands->Set_Animation ( obj, "XG_EV5_rope.XG_EV5_ropeZ", false );
}
break;
}
}
};
DECLARE_SCRIPT(M01_TriggerZone_GDIBase_BaseCommander_JDG, "")//106267 and 106268
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject * gdiBaseCommander = Commands->Find_Object ( 106050 );
if (gdiBaseCommander != NULL)
{
Commands->Send_Custom_Event( obj, gdiBaseCommander, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * zone01 = Commands->Find_Object ( 106267 );//trigger zone 01 for base commander
if (zone01 != NULL)
{
Commands->Destroy_Object ( zone01 );//this is a one-time only zone--cleaning up
}
GameObject * zone02 = Commands->Find_Object ( 106268 );//trigger zone 02 for base commander
if (zone02 != NULL)
{
Commands->Destroy_Object ( zone02 );//this is a one-time only zone--cleaning up
}
GameObject * zone03 = Commands->Find_Object ( 105615 );//trigger zone 01 for this is the path lets go
if (zone03 != NULL)
{
Commands->Destroy_Object ( zone03 );//this is a one-time only zone--cleaning up
}
GameObject * zone04 = Commands->Find_Object ( 113733 );//trigger zone 02 for this is the path lets go
if (zone04 != NULL)
{
Commands->Destroy_Object ( zone04 );//this is a one-time only zone--cleaning up
}
GameObject * pow01 = Commands->Find_Object ( 103328 );
GameObject * pow02 = Commands->Find_Object ( 103327 );
if (pow01 != NULL && pow02 != NULL)
{
Commands->Set_Objective_Status( M01_GDI_BASE_POW_OBJECTIVE_JDG, OBJECTIVE_STATUS_FAILED );
}
if (pow01 != NULL)
{
Commands->Destroy_Object ( pow01 );
}
if (pow02 != NULL)
{
Commands->Destroy_Object ( pow02 );
}
GameObject * pow_guard01 = Commands->Find_Object ( 103334 );
if (pow_guard01 != NULL)
{
Commands->Destroy_Object ( pow_guard01 );
}
GameObject * pow_guard02 = Commands->Find_Object ( 103329 );
if (pow_guard02 != NULL)
{
Commands->Destroy_Object ( pow_guard02 );
}
GameObject * pow_guard03 = Commands->Find_Object ( 103330 );
if (pow_guard03 != NULL)
{
Commands->Destroy_Object ( pow_guard03 );
}
GameObject * pow_guard04 = Commands->Find_Object ( 103332 );
if (pow_guard04 != NULL)
{
Commands->Destroy_Object ( pow_guard04 );
}
GameObject * pow_triggerzone = Commands->Find_Object ( 114348 );//
if (pow_triggerzone != NULL)
{
Commands->Destroy_Object ( pow_triggerzone );
}
GameObject * gdi_minigunner_escort = Commands->Find_Object ( 104685 );//M01_GDI_BASE_POWS_OVER_JDG
if (gdi_minigunner_escort != NULL)
{
Commands->Send_Custom_Event( obj, gdi_minigunner_escort, 0, M01_GDI_BASE_POWS_OVER_JDG, 0 );
Commands->Send_Custom_Event( obj, gdi_minigunner_escort, 0, M01_WALKING_WAYPATH_05_JDG, 0 );
}
//GameObject * gdi_grenadier_escort = Commands->Find_Object ( 104686 );
//if (gdi_grenadier_escort != NULL)
//{
// Commands->Send_Custom_Event( obj, gdi_grenadier_escort, 0, M01_GDI_BASE_POWS_OVER_JDG, 0 );
//}
}
}
};
DECLARE_SCRIPT(M01_GDIBase_FirstChinookFlamethrowerGuy_JDG, "")
{
void Created( GameObject * obj )
{
GameObject * gdiGuy01 = Commands->Find_Object ( 104685 );
GameObject * gdiGuy02 = Commands->Find_Object ( 104686 );
if (gdiGuy01 != NULL)
{
Commands->Send_Custom_Event( obj, gdiGuy01, 0, M01_MODIFY_YOUR_ACTION_05_JDG, 0 );
}
if (gdiGuy02 != NULL)
{
Commands->Send_Custom_Event( obj, gdiGuy02, 0, M01_MODIFY_YOUR_ACTION_05_JDG, 0 );
}
}
};
/*DECLARE_SCRIPT(M01_GDIBase_SecondChinookFlamethrowerGuy_JDG, "")
{
void Created( GameObject * obj )
{
GameObject * powController = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_MONITOR_JDG );
if (powController != NULL)
{
Commands->Send_Custom_Event( obj, powController, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.h_a_troopdrop") == 0)
{
Vector3 myHomeSpot (-22.604f, 25.125f, 1.605f);
ActionParamsStruct params;
params.Set_Basic(this, 60, M01_START_ATTACKING_03_JDG);
params.Set_Movement(myHomeSpot, RUN, 5);
Commands->Action_Attack (obj, params);
Commands->Set_Innate_Soldier_Home_Location ( obj, myHomeSpot, 10 );
}
}
void Killed( GameObject * obj, GameObject * killer )
{
GameObject * powController = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_MONITOR_JDG );
if (powController != NULL)
{
Commands->Send_Custom_Event( obj, powController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_GDIBase_SecondChinookMinigunnerGuy_JDG, "")
{
void Created( GameObject * obj )
{
GameObject * powController = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_MONITOR_JDG );
if (powController != NULL)
{
Commands->Send_Custom_Event( obj, powController, 0, M01_MODIFY_YOUR_ACTION_04_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.h_a_troopdrop") == 0)
{
Vector3 myHomeSpot (-16.144f, 19.274f, 2.312f);
ActionParamsStruct params;
params.Set_Basic(this, 60, M01_START_ATTACKING_03_JDG);
params.Set_Movement(myHomeSpot, RUN, 2);
Commands->Action_Attack (obj, params);
Commands->Set_Innate_Soldier_Home_Location ( obj, myHomeSpot, 10 );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (type == 0)
{
if (param == M01_MODIFY_YOUR_ACTION_JDG)
{
params.Set_Basic(this, 100, M01_START_ATTACKING_03_JDG);
params.Set_Movement(STAR, RUN, 5);
params.Set_Attack( STAR, 15, 1, true );
Commands->Action_Attack (obj, params);
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
GameObject * powController = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_MONITOR_JDG );
if (powController != NULL)
{
Commands->Send_Custom_Event( obj, powController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
}
};*/
DECLARE_SCRIPT(M01_TibCave_StartZone_JDG, "")//108922
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject * visceroid01 = Commands->Find_Object ( 106908 );
GameObject * visceroid02 = Commands->Find_Object ( 106909 );
GameObject * visceroid03 = Commands->Find_Object ( 106907 );
GameObject * visceroidNodGuy01 = Commands->Find_Object ( 106910 );
GameObject * visceroidNodGuy02 = Commands->Find_Object ( 106911 );
if (visceroid01 != NULL)
{
Commands->Send_Custom_Event ( obj, visceroid01, 0, M01_START_ACTING_JDG, 0 );
}
if (visceroid02 != NULL)
{
Commands->Send_Custom_Event ( obj, visceroid02, 0, M01_START_ACTING_JDG, 0 );
}
if (visceroid03 != NULL)
{
Commands->Send_Custom_Event ( obj, visceroid03, 0, M01_START_ACTING_JDG, 0 );
}
if (visceroidNodGuy01 != NULL)
{
Commands->Send_Custom_Event ( obj, visceroidNodGuy01, 0, M01_START_ACTING_JDG, 0 );
}
if (visceroidNodGuy02 != NULL)
{
Commands->Send_Custom_Event ( obj, visceroidNodGuy02, 0, M01_START_ACTING_JDG, 1 );
}
Commands->Destroy_Object ( obj );//one time zone--cleaning up
}
}
};
DECLARE_SCRIPT(M01_Visceroid01_JDG, "")//106908
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ACTING_JDG)
{
Commands->Innate_Enable(obj);
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
GameObject * nodguy01 = Commands->Find_Object ( 106910 );
if (nodguy01 != NULL)
{
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_START_ACTING_JDG );
params.Set_Attack( nodguy01, 10, 0, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
}
}
}
}
};
DECLARE_SCRIPT(M01_Visceroid02_JDG, "")//106909
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ACTING_JDG)
{
Commands->Innate_Enable(obj);
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
GameObject * nodguy01 = Commands->Find_Object ( 106910 );
if (nodguy01 != NULL)
{
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_START_ACTING_JDG );
params.Set_Attack( nodguy01, 10, 0, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
}
}
}
}
};
DECLARE_SCRIPT(M01_Visceroid03_JDG, "")//106907
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ACTING_JDG)
{
Commands->Innate_Enable(obj);
Vector3 myPosition = Commands->Get_Position ( obj );
//Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_START_ACTING_JDG );
params.Set_Attack( STAR, 10, 0, true );
params.Set_Movement( STAR, RUN, 2 );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
}
}
}
};
DECLARE_SCRIPT(M01_Visceroid_NodGuy01_JDG, "")//106910
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ACTING_JDG)
{
Commands->Innate_Enable(obj);
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
Commands->Create_Sound ( "MX1DSGN_DSGN0017I1DSGN_SND", myPosition, obj );
GameObject * visceroid01 = Commands->Find_Object ( 106908 );
if (visceroid01 != NULL)
{
ActionParamsStruct params;
params.Set_Basic( this, 90, M01_START_ACTING_JDG );
params.Set_Attack( visceroid01, 25, 0, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
}
}
}
}
};
DECLARE_SCRIPT(M01_Visceroid_NodGuy02_JDG, "")//106911
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ACTING_JDG)
{
Commands->Innate_Enable(obj);
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
Commands->Create_Sound ( "MX1DSGN_DSGN0018I1DSGN_SND", myPosition, obj );
GameObject * visceroid01 = Commands->Find_Object ( 106908 );
if (visceroid01 != NULL)
{
ActionParamsStruct params;
params.Set_Basic( this, 90, M01_START_ACTING_JDG );
params.Set_Attack( visceroid01, 25, 0, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
}
}
}
}
};
DECLARE_SCRIPT(M01_Tiberium_Cave_Spawn_Helicopter_Zone_JDG, "")//M01_TIB_TUNNEL_HELICOPTER_ZONE_JDG...this guys ID is 100955
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_SPAWN_TIB_CAVE_HELICOPTER_JDG, 0 );
int apacheConv = Commands->Create_Conversation( "M01_Announce_Apache_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, apacheConv, false, false );
Commands->Join_Conversation( STAR, apacheConv, false, false );
Commands->Start_Conversation( apacheConv, apacheConv );
GameObject * tunnelGuy = Commands->Find_Object ( 103274 );
if (tunnelGuy != NULL)
{
Commands->Send_Custom_Event( obj, tunnelGuy, 0, M01_START_ACTING_JDG, 0 );
}
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_TiberiumCave_UpThere_NodGuy_JDG, "")//103274
{
void Created( GameObject * obj )
{
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
}
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_START_ACTING_JDG );
params.Set_Attack( STAR, 0, 0, true );
Commands->Action_Attack (obj, params);
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 3 );
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG)
{
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Create_Sound ( "MX1DSGN_DSGN0019I1DSGN_SND", myPosition, obj );
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_START_ACTING_JDG );
params.Set_Attack( STAR, 50, 0, true );
Commands->Action_Attack (obj, params);
}
}
}
};
DECLARE_SCRIPT(M01_Detention_GuardTower_Enter_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject * detentionCiv01 = Commands->Find_Object ( M01_DETENTION_CIVILIAN_01_JDG );
if (detentionCiv01 != NULL)
{
Commands->Send_Custom_Event( obj, detentionCiv01, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * detentionCiv02 = Commands->Find_Object ( M01_DETENTION_CIVILIAN_02_JDG );
if (detentionCiv02 != NULL)
{
Commands->Send_Custom_Event( obj, detentionCiv02, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * detentionCiv03 = Commands->Find_Object ( M01_DETENTION_CIVILIAN_03_JDG );
if (detentionCiv03 != NULL)
{
Commands->Send_Custom_Event( obj, detentionCiv03, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * detentionGDI01 = Commands->Find_Object ( M01_DETENTION_GDI_GUY_01_JDG );
if (detentionGDI01 != NULL)
{
Commands->Send_Custom_Event( obj, detentionGDI01, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * detentionGDI02 = Commands->Find_Object ( M01_DETENTION_GDI_GUY_02_JDG );
if (detentionGDI02 != NULL)
{
Commands->Send_Custom_Event( obj, detentionGDI02, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * detentionGDI03 = Commands->Find_Object ( M01_DETENTION_GDI_GUY_03_JDG );
if (detentionGDI03 != NULL)
{
Commands->Send_Custom_Event( obj, detentionGDI03, 0, M01_START_ACTING_JDG, 0 );
}
}
}
void Exited( GameObject * obj, GameObject * exiter )
{
if (exiter == STAR)
{
GameObject * detentionCiv01 = Commands->Find_Object ( M01_DETENTION_CIVILIAN_01_JDG );
if (detentionCiv01 != NULL)
{
Commands->Send_Custom_Event( obj, detentionCiv01, 0, M01_GOTO_IDLE_JDG, 0 );
}
GameObject * detentionCiv02 = Commands->Find_Object ( M01_DETENTION_CIVILIAN_02_JDG );
if (detentionCiv02 != NULL)
{
Commands->Send_Custom_Event( obj, detentionCiv02, 0, M01_GOTO_IDLE_JDG, 0 );
}
GameObject * detentionCiv03 = Commands->Find_Object ( M01_DETENTION_CIVILIAN_03_JDG );
if (detentionCiv03 != NULL)
{
Commands->Send_Custom_Event( obj, detentionCiv03, 0, M01_GOTO_IDLE_JDG, 0 );
}
GameObject * detentionGDI01 = Commands->Find_Object ( M01_DETENTION_GDI_GUY_01_JDG );
if (detentionGDI01 != NULL)
{
Commands->Send_Custom_Event( obj, detentionGDI01, 0, M01_GOTO_IDLE_JDG, 0 );
}
GameObject * detentionGDI02 = Commands->Find_Object ( M01_DETENTION_GDI_GUY_02_JDG );
if (detentionGDI02 != NULL)
{
Commands->Send_Custom_Event( obj, detentionGDI02, 0, M01_GOTO_IDLE_JDG, 0 );
}
GameObject * detentionGDI03 = Commands->Find_Object ( M01_DETENTION_GDI_GUY_03_JDG );
if (detentionGDI03 != NULL)
{
Commands->Send_Custom_Event( obj, detentionGDI03, 0, M01_GOTO_IDLE_JDG, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_PrisonPen_POW_JDG, "")
{
bool okayToReact;
bool heardHavocAlert;
bool gateIsDown;
bool sam_is_destroyed;
int pow_guy01_id;//101927
REGISTER_VARIABLES()
{
SAVE_VARIABLE(okayToReact, 1);
SAVE_VARIABLE(heardHavocAlert, 2);
SAVE_VARIABLE(gateIsDown, 3);
SAVE_VARIABLE(sam_is_destroyed, 4);
SAVE_VARIABLE(pow_guy01_id, 5);
}
void Created( GameObject * obj )
{
Commands->Set_Obj_Radar_Blip_Color ( obj, RADAR_BLIP_COLOR_GDI );
pow_guy01_id = 101927;
okayToReact = false;
heardHavocAlert = false;
gateIsDown = false;
sam_is_destroyed = false;
Commands->Set_Innate_Is_Stationary ( obj, true );
Commands->Innate_Soldier_Enable_Enemy_Seen ( obj, false );
Commands->Innate_Soldier_Enable_Gunshot_Heard ( obj, false );
Commands->Innate_Soldier_Enable_Bullet_Heard ( obj, false );
}
void Killed( GameObject * obj, GameObject * killer )
{
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
switch (param)
{
case M01_START_ACTING_JDG:
{
Commands->Innate_Soldier_Enable_Gunshot_Heard ( obj, true );
Commands->Innate_Soldier_Enable_Bullet_Heard ( obj, true );
okayToReact = true;
}
break;
case M01_GOTO_IDLE_JDG:
{
Commands->Innate_Soldier_Enable_Gunshot_Heard ( obj, false );
Commands->Innate_Soldier_Enable_Bullet_Heard ( obj, false );
okayToReact = false;
}
break;
case M01_FACING_SPECIFIED_DIRECTION_01_JDG:
{
Commands->Innate_Disable(obj);
params.Set_Basic( this, 100, M01_FACING_SPECIFIED_DIRECTION_01_JDG );
params.Set_Attack( STAR, 0, 0, true );
Commands->Action_Attack ( obj, params );
float delayTimer = Commands->Get_Random ( 0.25f, 2.5f );
Commands->Send_Custom_Event( obj, obj, 0, M01_DOING_ANIMATION_01_JDG, delayTimer );
}
break;
case M01_DOING_ANIMATION_01_JDG:
{
char *animationName = M01_Choose_Cheer_Animation ( );
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );
}
break;
}
}
void Poked( GameObject * obj, GameObject * poker )
{
if (gateIsDown == true)
{
if (sam_is_destroyed == false)
{
int apacheConv = Commands->Create_Conversation( "M01_Detention_GDI_Poke_Conversation01", 100, 1000, false);
Commands->Join_Conversation( obj, apacheConv, false, true, true );
Commands->Start_Conversation( apacheConv, apacheConv );
}
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
ActionParamsStruct params;
if (action_id == M01_WALKING_WAYPATH_02_JDG)
{
GameObject * gdipow01 = Commands->Find_Object ( pow_guy01_id );//
if (obj == gdipow01)
{
Commands->Set_Innate_Is_Stationary ( obj, true );
int apacheConv = Commands->Create_Conversation( "M01_Detention_GDI_Hello_Conversation01", 100, 1000, false);
Commands->Join_Conversation( obj, apacheConv, false, true, true );
Commands->Start_Conversation( apacheConv, apacheConv );
}
}
else if (action_id == M01_DOING_ANIMATION_01_JDG)
{
GameObject * gdipow01 = Commands->Find_Object ( pow_guy01_id );
if (obj == gdipow01)
{
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_02_JDG );
params.Set_Movement( Vector3 (-297.801f, 572.799f, 27.458f), RUN, 1);
Commands->Action_Goto ( obj, params );
}
}
else if (action_id == M01_WALKING_WAYPATH_03_JDG)
{
char *animationName = M01_Choose_Cheer_Animation ( );
params.Set_Basic( this, 100, M01_DOING_ANIMATION_03_JDG );
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );
}
else if (action_id == M01_WALKING_WAYPATH_04_JDG)
{
char *animationName = M01_Choose_Cheer_Animation ( );
params.Set_Basic( this, 100, M01_DOING_ANIMATION_04_JDG );
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );
GameObject * gdipow01 = Commands->Find_Object ( pow_guy01_id );
if (obj == gdipow01)
{
int apacheConv = Commands->Create_Conversation( "M01_Detention_GDI_Evac_Conversation01", 100, 1000, false);
Commands->Join_Conversation( obj, apacheConv, true, true, true );
Commands->Start_Conversation( apacheConv, apacheConv );
}
}
else if (action_id == M01_DOING_ANIMATION_03_JDG)
{
Commands->Set_Innate_Is_Stationary ( obj, true );
}
else if (action_id == M01_DOING_ANIMATION_04_JDG)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_DO_END_MISSION_CHECK_JDG, 5 );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_05_JDG );
params.Set_Movement( Vector3 (-328.136f, 548.518f, 30.044f), RUN, 3);
Commands->Action_Goto ( obj, params );
}
else if (action_id == M01_WALKING_WAYPATH_05_JDG)
{
Commands->Set_Innate_Is_Stationary ( obj, true );
GameObject * missionController = Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG );
if (missionController != NULL)
{
Commands->Send_Custom_Event( obj, missionController, 0, M01_DO_END_MISSION_CHECK_JDG, 5 );
}
}
}
void Sound_Heard( GameObject * obj, const CombatSound & sound )
{
ActionParamsStruct params;
if (sound.Type == M01_DETENTION_GATE_IS_DOWN_JDG && gateIsDown == false)
{
gateIsDown = true;
Commands->Set_Innate_Is_Stationary ( obj, false );
Commands->Action_Reset ( obj, 100 );
GameObject * commCenterSamSite = Commands->Find_Object ( M01_COMMCENTER_SAM_JDG );
if (commCenterSamSite != NULL)
{
Vector3 myGotoSpot;
int myIdNumber = Commands->Get_ID ( obj );
if (myIdNumber == M01_DETENTION_GDI_GUY_01_JDG)
{
myGotoSpot.Set (-312.413f, 577.030f, 27.567f);
}
else if (myIdNumber == M01_DETENTION_GDI_GUY_02_JDG)
{
myGotoSpot.Set (-311.138f, 578.398f, 27.687f);
}
else
{
myGotoSpot.Set (-309.667f, 576.016f, 27.753f);
}
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_03_JDG );
params.Set_Movement( myGotoSpot, RUN, 0.5f);
Commands->Action_Goto ( obj, params );
}
}
else if (sound.Type == M01_DETENTION_GATE_DOWN_SAM_DEAD_JDG)
{
sam_is_destroyed = true;
Commands->Set_Innate_Is_Stationary ( obj, false );
Commands->Action_Reset ( obj, 100 );
Vector3 myGotoSpot;
int myIdNumber = Commands->Get_ID ( obj );
if (myIdNumber == M01_DETENTION_GDI_GUY_01_JDG)
{
myGotoSpot.Set (-312.413f, 577.030f, 27.567f);
}
else if (myIdNumber == M01_DETENTION_GDI_GUY_02_JDG)
{
myGotoSpot.Set (-311.138f, 578.398f, 27.687f);
}
else
{
myGotoSpot.Set (-309.667f, 576.016f, 27.753f);
}
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_03_JDG );
params.Set_Movement( myGotoSpot, RUN, 0.5f);
Commands->Action_Goto ( obj, params );
}
else if (sound.Creator == STAR && okayToReact == true && heardHavocAlert == false)
{
if (sound.Type == SOUND_TYPE_GUNSHOT)
{
heardHavocAlert = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_FACING_SPECIFIED_DIRECTION_01_JDG, 0 );
}
else if (sound.Type == SOUND_TYPE_BULLET_HIT)
{
heardHavocAlert = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_FACING_SPECIFIED_DIRECTION_01_JDG, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_PrisonPen_Civilian_JDG, "")
{
Vector3 wanderSpot[10];
int gdi_pow_id;
int my_id;
int prisoner_2_id;
int prisoner_3_id;
int last;
float loiterTimeMin;
float loiterTimeMax;
bool okayToReact;
bool heardHavocAlert;
bool gateIsDown;
bool sam_is_destroyed;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(gdi_pow_id, 1);
SAVE_VARIABLE(my_id, 2);
SAVE_VARIABLE(prisoner_2_id, 3);
SAVE_VARIABLE(prisoner_3_id, 4);
SAVE_VARIABLE(last, 5);
SAVE_VARIABLE(loiterTimeMin, 6);
SAVE_VARIABLE(loiterTimeMax, 7);
SAVE_VARIABLE(okayToReact, 8);
SAVE_VARIABLE(heardHavocAlert, 9);
SAVE_VARIABLE(gateIsDown, 10);
SAVE_VARIABLE(sam_is_destroyed, 11);
}
void Created( GameObject * obj )
{
okayToReact = false;
heardHavocAlert = false;
gateIsDown = false;
sam_is_destroyed = false;
Commands->Innate_Soldier_Enable_Enemy_Seen ( obj, false );
Commands->Innate_Soldier_Enable_Gunshot_Heard ( obj, false );
Commands->Innate_Soldier_Enable_Bullet_Heard ( obj, false );
wanderSpot[0].Set (-313.881f, 589.854f, 27.457f);
wanderSpot[1].Set (-303.287f, 587.881f, 27.457f);
wanderSpot[2].Set (-296.290f, 595.483f, 27.458f);
wanderSpot[3].Set (-295.055f, 589.244f, 27.458f);
wanderSpot[4].Set (-309.122f, 578.526f, 27.741f);
wanderSpot[5].Set (-299.833f, 578.027f, 27.735f);
wanderSpot[6].Set (-297.657f, 571.844f, 27.458f);
wanderSpot[7].Set (-289.746f, 578.258f, 27.781f);
wanderSpot[8].Set (-280.325f, 579.701f, 27.458f);
wanderSpot[9].Set (-286.094f, 585.007f, 27.720f);
loiterTimeMin = 5;
loiterTimeMax = 30;
last = 20;
gdi_pow_id = 101927;
my_id = Commands->Get_ID ( obj );
if (my_id == 101929)
{
prisoner_2_id = 101930;
prisoner_3_id = 101931;
}
else if (my_id == 101930)
{
prisoner_2_id = 101929;
prisoner_3_id = 101931;
}
else if (my_id == 101931)
{
prisoner_2_id = 101929;
prisoner_3_id = 101930;
}
Commands->Start_Timer ( obj, this, 5, M01_PICK_A_NEW_LOCATION_JDG );
}
void Timer_Expired(GameObject * obj, int timer_id)
{
ActionParamsStruct params;
int random = int(Commands->Get_Random(0, 13-WWMATH_EPSILON));
while (random == last)
{
random = int(Commands->Get_Random(0, 13-WWMATH_EPSILON));
}
if (random <= 9)
{
Vector3 shinGotoSpot = wanderSpot[random];
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( shinGotoSpot, WALK, 1 );
Commands->Action_Goto( obj, params );
loiterTimeMin = 5;
loiterTimeMax = 30;
}
else if (random == 10 && Commands->Find_Object ( prisoner_2_id ))
{
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Commands->Find_Object ( prisoner_2_id ), WALK, 2 );
Commands->Action_Goto( obj, params );
loiterTimeMin = 5;
loiterTimeMax = 30;
}
else if (random == 11 && Commands->Find_Object ( prisoner_3_id ))
{
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Commands->Find_Object ( prisoner_3_id ), WALK, 2 );
Commands->Action_Goto( obj, params );
loiterTimeMin = 5;
loiterTimeMax = 30;
}
else
{
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Commands->Find_Object ( gdi_pow_id ), WALK, 2 );
Commands->Action_Goto( obj, params );
loiterTimeMin = 1;
loiterTimeMax = 3;
}
last = random;
}
void Poked( GameObject * obj, GameObject * poker )
{
if (gateIsDown == true)
{
if (sam_is_destroyed == false)
{
GameObject * babushka = Commands->Find_Object ( M01_DETENTION_CIVILIAN_01_JDG );
GameObject * pierre = Commands->Find_Object ( M01_DETENTION_CIVILIAN_02_JDG );
GameObject * farmerJohn = Commands->Find_Object ( M01_DETENTION_CIVILIAN_03_JDG );
if (obj == babushka)
{
int apacheConv = Commands->Create_Conversation( "M01_Detention_Babushka_Poke_Conversation01", 100, 1000, false);
Commands->Join_Conversation( obj, apacheConv, false, true, true );
Commands->Start_Conversation( apacheConv, apacheConv );
}
else if (obj == pierre)
{
int apacheConv = Commands->Create_Conversation( "M01_Detention_Pierre_Poke_Conversation01", 100, 1000, false);
Commands->Join_Conversation( obj, apacheConv, false, true, true );
Commands->Start_Conversation( apacheConv, apacheConv );
}
else if (obj == farmerJohn)
{
int apacheConv = Commands->Create_Conversation( "M01_Detention_FarmerJohn_Poke_Conversation01", 100, 1000, false);
Commands->Join_Conversation( obj, apacheConv, false, true, true );
Commands->Start_Conversation( apacheConv, apacheConv );
}
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
switch (param)
{
case M01_START_ACTING_JDG:
{
Commands->Innate_Soldier_Enable_Gunshot_Heard ( obj, true );
Commands->Innate_Soldier_Enable_Bullet_Heard ( obj, true );
okayToReact = true;
}
break;
case M01_GOTO_IDLE_JDG:
{
Commands->Innate_Soldier_Enable_Gunshot_Heard ( obj, false );
Commands->Innate_Soldier_Enable_Bullet_Heard ( obj, false );
okayToReact = false;
}
break;
case M01_FACING_SPECIFIED_DIRECTION_01_JDG:
{
Commands->Innate_Disable(obj);
params.Set_Basic( this, 100, M01_FACING_SPECIFIED_DIRECTION_01_JDG );
params.Set_Attack( STAR, 0, 0, true );
Commands->Action_Attack ( obj, params );
float delayTimer = Commands->Get_Random ( 1.25f, 3.5f );
Commands->Send_Custom_Event( obj, obj, 0, M01_DOING_ANIMATION_01_JDG, delayTimer );
}
break;
case M01_DOING_ANIMATION_01_JDG:
{
char *animationName = M01_Choose_Cheer_Animation ( );
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );
}
break;
}
}
void Sound_Heard( GameObject * obj, const CombatSound & sound )
{
ActionParamsStruct params;
if (sound.Type == M01_DETENTION_GATE_IS_DOWN_JDG && gateIsDown == false)
{
gateIsDown = true;
Commands->Action_Reset ( obj, 100 );
GameObject * commCenterSamSite = Commands->Find_Object ( M01_COMMCENTER_SAM_JDG );
if (commCenterSamSite != NULL)
{
Vector3 myGotoSpot;
int myIdNumber = Commands->Get_ID ( obj );
if (myIdNumber == M01_DETENTION_CIVILIAN_01_JDG)//babushka
{
myGotoSpot.Set (-303.867f, 579.217f, 27.604f);
}
else if (myIdNumber == M01_DETENTION_CIVILIAN_02_JDG)//pierre
{
myGotoSpot.Set (-304.901f, 575.936f, 27.724f);
}
else//farmer john
{
myGotoSpot.Set (-304.887f, 582.889f, 27.457f);
}
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_05_JDG );
params.Set_Movement( myGotoSpot, RUN, 0.5f);
Commands->Action_Goto ( obj, params );
}
}
else if (sound.Type == M01_DETENTION_GATE_DOWN_SAM_DEAD_JDG )
{
sam_is_destroyed = true;
Commands->Set_Innate_Is_Stationary ( obj, false );
Commands->Action_Reset ( obj, 100 );
Vector3 myGotoSpot;
int myIdNumber = Commands->Get_ID ( obj );
if (myIdNumber == M01_DETENTION_CIVILIAN_01_JDG)//babushka
{
myGotoSpot.Set (-303.867f, 579.217f, 27.604f);
}
else if (myIdNumber == M01_DETENTION_CIVILIAN_02_JDG)//pierre
{
myGotoSpot.Set (-304.901f, 575.936f, 27.724f);
}
else//farmer john
{
myGotoSpot.Set (-304.887f, 582.889f, 27.457f);
}
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_05_JDG );
params.Set_Movement( myGotoSpot, RUN, 0.5f);
Commands->Action_Goto ( obj, params );
}
else if (sound.Creator == STAR && okayToReact == true && heardHavocAlert == false)
{
if (sound.Type == SOUND_TYPE_GUNSHOT)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_FACING_SPECIFIED_DIRECTION_01_JDG, 0 );
heardHavocAlert = true;
}
else if (sound.Type == SOUND_TYPE_BULLET_HIT)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_FACING_SPECIFIED_DIRECTION_01_JDG, 0 );
heardHavocAlert = true;
}
}
}
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)
{
float delayTimer = Commands->Get_Random ( loiterTimeMin, loiterTimeMax );
Commands->Start_Timer(obj, this, delayTimer, 0);
}
else if (action_id == M01_WALKING_WAYPATH_02_JDG)
{
char *animationName = M01_Choose_Cheer_Animation ( );
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );
}
else if (action_id == M01_WALKING_WAYPATH_03_JDG)//civ is running to gate
{
char *animationName = M01_Choose_Cheer_Animation ( );
params.Set_Basic( this, 100, 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)
{
Commands->Set_Innate_Is_Stationary ( obj, true );
}
else if (action_id == M01_WALKING_WAYPATH_04_JDG)
{
char *animationName = M01_Choose_Cheer_Animation ( );
params.Set_Basic( this, 100, M01_DOING_ANIMATION_04_JDG );
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );//M01_Detention_Babushka_Evac_Conversation01
GameObject * babushka = Commands->Find_Object ( M01_DETENTION_CIVILIAN_01_JDG );
if (obj == babushka)
{
int apacheConv = Commands->Create_Conversation( "M01_Detention_Babushka_Evac_Conversation01", 100, 1000, false);
Commands->Join_Conversation( obj, apacheConv, true, true, true );
Commands->Join_Conversation( STAR, apacheConv, false, false, false );
Commands->Start_Conversation( apacheConv, apacheConv );
}
}
else if (action_id == M01_DOING_ANIMATION_04_JDG)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_DO_END_MISSION_CHECK_JDG, 5 );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_05_JDG );
params.Set_Movement( Vector3 (-328.136f, 548.518f, 30.044f), RUN, 3);
Commands->Action_Goto ( obj, params );
}
else if (action_id == M01_WALKING_WAYPATH_05_JDG)
{
Commands->Set_Innate_Is_Stationary ( obj, true );
GameObject * missionController = Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG );
if (missionController != NULL)
{
Commands->Send_Custom_Event( obj, missionController, 0, M01_DO_END_MISSION_CHECK_JDG, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_BarnArea_NOD_Commander_Trigger_Zone_JDG, "")//M01_BARNAREA_NOD_COMMANDER_JDG
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR )
{
GameObject * firstFieldCommander = Commands->Find_Object (M01_BARNAREA_NOD_COMMANDER_JDG);
if (firstFieldCommander != NULL)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_BARNAREA_NOD_COMMANDER_JDG ), 0, M01_START_ACTING_JDG, 0 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_ADD_BARN_COMMANDER_OBJECTIVE_JDG, 5 );
}
GameObject * zone01 = Commands->Find_Object (102361);
GameObject * zone02 = Commands->Find_Object (103343);
if (zone01 != NULL)
{
Commands->Destroy_Object ( zone01 );//one time zone
}
if (zone02 != NULL)
{
Commands->Destroy_Object ( zone02 );//one time zone
}
}
}
};
DECLARE_SCRIPT(M01_GDI_GuardTower_NOD_Commander_JDG, "")//M01_BARNAREA_NOD_COMMANDER_JDG
{
int guardTowerIntro;
bool deadYet;
bool introConvPlaying;
bool firstTimeDamaged;
bool playerSeen;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(guardTowerIntro, 1);
SAVE_VARIABLE(deadYet, 2);
SAVE_VARIABLE(introConvPlaying, 3);
SAVE_VARIABLE(firstTimeDamaged, 4);
SAVE_VARIABLE(playerSeen, 5);
}
void Created( GameObject * obj )
{
introConvPlaying = false;
firstTimeDamaged = true;
playerSeen = false;
deadYet = false;
Commands->Set_Innate_Is_Stationary ( obj, true );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (obj)
{
if (damager == STAR && deadYet == false && firstTimeDamaged == true)
{
Vector3 myPosition = Commands->Get_Position ( obj );
Vector3 playerPosition = Commands->Get_Position ( STAR );
float playerDistance = Commands->Get_Distance ( myPosition, playerPosition );
if (playerDistance >= 15)
{
char *animationName = M01_Choose_Duck_Animation();
firstTimeDamaged = false;
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );
}
}
}
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
if (enemy == STAR)
{
playerSeen = true;
}
}
void Sound_Heard( GameObject * obj, const CombatSound & sound )
{
if (sound.Creator == STAR)
{
if (/*sound.Type == SOUND_TYPE_GUNSHOT ||*/ sound.Type == SOUND_TYPE_BULLET_HIT)
{
if (obj)
{
if (deadYet == false && playerSeen == false)
{
Vector3 myPosition = Commands->Get_Position ( obj );
Vector3 playerPosition = Commands->Get_Position ( STAR );
float playerDistance = Commands->Get_Distance ( myPosition, playerPosition );
if (playerDistance >= 15)
{
char *animationName = M01_Choose_Duck_Animation();
//firstTimeDamaged = false;
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );
}
}
}
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
if (introConvPlaying == true)
{
Commands->Stop_Conversation( guardTowerIntro );
}
GameObject * zone01 = Commands->Find_Object (102361);
GameObject * zone02 = Commands->Find_Object (103343);
if (zone01 != NULL)
{
Commands->Destroy_Object ( zone01 );//one time zone
}
if (zone02 != NULL)
{
Commands->Destroy_Object ( zone02 );//one time zone
}
deadYet = true;
GameObject * artilleryController = Commands->Find_Object ( M01_GDIBASE_ARTILLERY_CONTROLLER_ID );
if (artilleryController != NULL)
{
Commands->Send_Custom_Event( obj, artilleryController, 0, M01_GOTO_IDLE_JDG, 0 );
}
GameObject * objectiveController = Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG );
if (objectiveController != NULL)
{
Commands->Send_Custom_Event( obj, objectiveController, 0, M01_CLEAR_FIRST_NOD_COMMANDER_PASS_JDG, 5 );
}
if (STAR)
{
int guardTowerOutro = Commands->Create_Conversation( "M01_GuardTower_Outro_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, guardTowerOutro, false, false );
//Commands->Join_Conversation( STAR, guardTowerOutro, false, false );
Commands->Start_Conversation( guardTowerOutro, guardTowerOutro );
}
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);
Commands->Create_Object ( powerups[random], powerupSpawnLocation );
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
ActionParamsStruct params;
if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
{
if (action_id == guardTowerIntro)
{
introConvPlaying = false;
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
switch (param)
{
case M01_START_ACTING_JDG: //here comes player start calling in reinforcements
{
GameObject * zone01 = Commands->Find_Object (102361);
GameObject * zone02 = Commands->Find_Object (103343);
if (sender == zone01)
{
Commands->Debug_Message ( "**********************Nod gdi tower commander has recieved command to start acting\n" );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 2 );
Commands->Send_Custom_Event( obj, obj, 0, M01_CALL_IN_REINFORCEMENTS_JDG, 2 );
}
else if (sender == zone02)
{
Commands->Debug_Message ( "**********************Nod gdi tower commander has recieved command to start acting\n" );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 20 );
Commands->Send_Custom_Event( obj, obj, 0, M01_CALL_IN_REINFORCEMENTS_JDG, 20 );
}
if (STAR && deadYet == false)
{
introConvPlaying = true;
guardTowerIntro = Commands->Create_Conversation( "M01_GuardTower_Intro_Conversation", 95, 1000, true);
Commands->Join_Conversation( NULL, guardTowerIntro, false, false );
//Commands->Join_Conversation( STAR, guardTowerIntro, false, false );
Commands->Start_Conversation( guardTowerIntro, guardTowerIntro );
Commands->Monitor_Conversation( obj, guardTowerIntro );
}
}
break;
case M01_MODIFY_YOUR_ACTION_JDG://set timer--then call in next reinforcements
{
if (obj)
{
int currentDifficulty = Commands->Get_Difficulty_Level( );
int medium = 1;
int hard = 2;
float delayTimer;
if (currentDifficulty == hard)
{
delayTimer = 60;
}
else if (currentDifficulty == medium)
{
delayTimer = 90;
}
else
{
delayTimer = 120;
}
Commands->Send_Custom_Event( obj, obj, 0, M01_SEND_GUARD_TOWER_CHINOOK_JDG, delayTimer );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );
}
}
break;
case M01_SEND_GUARD_TOWER_CHINOOK_JDG: //here comes player start calling in reinforcements
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_SEND_GUARD_TOWER_CHINOOK_JDG, 0 );
}
}
break;
case M01_CALL_IN_REINFORCEMENTS_JDG: //here comes player start calling in reinforcements
{
if (obj && deadYet == false)
{
GameObject * nodCommanderDialogController = Commands->Find_Object ( 103398 );
if (nodCommanderDialogController != NULL)
{
Commands->Debug_Message ( "**********************Nod gdi tower commander is sending custom to dialog controller\n" );
Commands->Send_Custom_Event( obj, nodCommanderDialogController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
float delayTimer = Commands->Get_Random ( 15, 30 );
Commands->Send_Custom_Event( obj, obj, 0, M01_CALL_IN_REINFORCEMENTS_JDG, delayTimer );
}
}
break;
}
}
}
};
DECLARE_SCRIPT(M01_Nod_Commander_Conversation_Controller_GDI, "")// 103398
{
bool first_call;
int initialCommanderConv;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(first_call, 1);
SAVE_VARIABLE(initialCommanderConv, 2);
}
void Created( GameObject * obj )
{
first_call = true;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (param == M01_MODIFY_YOUR_ACTION_JDG)//nod commander is calling in reinforcements
{
GameObject * guardTower01Commander = Commands->Find_Object ( M01_BARNAREA_NOD_COMMANDER_JDG );
if (sender == guardTower01Commander && first_call == true)
{
first_call = false;
initialCommanderConv = Commands->Create_Conversation( "M01_Nod_Commander_Conv04", 100, 300, true);
Commands->Join_Conversation( sender, initialCommanderConv, false, false, false );
Commands->Start_Conversation( initialCommanderConv, initialCommanderConv );
Commands->Monitor_Conversation( obj, initialCommanderConv );
}
else
{
int random = Commands->Get_Random_Int(0, 5);
if (random == 0)
{
int commanderConv = Commands->Create_Conversation( "M01_Nod_Commander_Conv01", 90, 200, true);
Commands->Join_Conversation( sender, commanderConv, false, false, false );
Commands->Start_Conversation( commanderConv, commanderConv );
}
else if (random == 1)
{
int commanderConv = Commands->Create_Conversation( "M01_Nod_Commander_Conv02", 90, 200, true);
Commands->Join_Conversation( sender, commanderConv, false, false, false );
Commands->Start_Conversation( commanderConv, commanderConv );
}
else if (random == 2)
{
int commanderConv = Commands->Create_Conversation( "M01_Nod_Commander_Conv03", 90, 200, true);
Commands->Join_Conversation( sender, commanderConv, false, false, false );
Commands->Start_Conversation( commanderConv, commanderConv );
}
else if (random == 3)
{
int commanderConv = Commands->Create_Conversation( "M01_Nod_Commander_Conv04", 90, 200, true);
Commands->Join_Conversation( sender, commanderConv, false, false, false );
Commands->Start_Conversation( commanderConv, commanderConv );
}
else
{
int commanderConv = Commands->Create_Conversation( "M01_Nod_Commander_Conv05", 90, 200, true);
Commands->Join_Conversation( sender, commanderConv, false, false, false );
Commands->Start_Conversation( commanderConv, commanderConv );
}
}
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
if (action_id == initialCommanderConv)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_SEND_GUARD_TOWER_CHINOOK_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_GDIBase_LightTank_PastTunnelZone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
GameObject * lightTank = Commands->Find_Object ( M01_TAILGUNAREA_NOD_LIGHTTANK_JDG );
if (enterer == lightTank)
{
Commands->Send_Custom_Event( obj, lightTank, 0, M01_GOTO_IDLE_JDG, 0 );
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_KeyCard01_Script_JDG, "")
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ( type == CUSTOM_EVENT_POWERUP_GRANTED )
{
int lockeKeycard = Commands->Create_Conversation( "M01_First_Keycard_Conversation", 100, 1000, true);
Commands->Join_Conversation( NULL, lockeKeycard, false, false );
Commands->Start_Conversation( lockeKeycard, lockeKeycard );
}
}
};
DECLARE_SCRIPT(M01_GDIBase_AI_ExitZone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
GameObject * gdiFollower = Commands->Find_Object ( 104686 );
GameObject * gdiCommander = Commands->Find_Object ( 106050 );
GameObject * gdiLeader = Commands->Find_Object ( 104685 );
GameObject * pow01 = Commands->Find_Object ( 103327 );
GameObject * pow02 = Commands->Find_Object ( 103328 );
if (enterer == gdiFollower)
{
if (gdiFollower != NULL)
{
Commands->Send_Custom_Event( obj, gdiFollower, 0, M01_HOLD_YOUR_POSITION_JDG, 0 );
}
}
else if (enterer == gdiCommander)
{
if (gdiCommander != NULL)//
{
Commands->Send_Custom_Event( obj, gdiCommander, 0, M01_GOTO_YOUR_EVAC_SPOT_JDG, 0 );
//Commands->Set_Objective_Status( M01_GDI_BASE_COMMANDER_OBJECTIVE_JDG, OBJECTIVE_STATUS_FAILED );
}
if (gdiFollower != NULL)
{
Commands->Send_Custom_Event( obj, gdiFollower, 0, M01_GOTO_YOUR_EVAC_SPOT_JDG, 0 );
}
if (gdiLeader != NULL)
{
Commands->Send_Custom_Event( obj, gdiLeader, 0, M01_GOTO_YOUR_EVAC_SPOT_JDG, 0 );
}
}
else if (enterer == pow01)
{
if (pow01 != NULL)
{
Commands->Send_Custom_Event( obj, pow01, 0, M01_GOTO_YOUR_EVAC_SPOT_JDG, 0 );
}
if (pow02 != NULL)
{
Commands->Send_Custom_Event( obj, pow02, 0, M01_GOTO_YOUR_EVAC_SPOT_JDG, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_GDIBase_LightTank_JDG, "")//M01_TAILGUNAREA_NOD_LIGHTTANK_JDG 102435
{
void Killed( GameObject * obj, GameObject * killer )
{
int tankReward = Commands->Create_Conversation( "M01_TankReward_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, tankReward, false, false );
//Commands->Join_Conversation( STAR, tankReward, false, false );
Commands->Start_Conversation( tankReward, tankReward );
Vector3 tankDeathSpot (4.2f, 279.8f, 3.2f);
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", tankDeathSpot);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1D_GDIPowerUpDrop.txt");
Vector3 myPosition = Commands->Get_Position ( obj );
myPosition.Z += 0.25f;
Commands->Create_Object ( "POW_Medal_Armor", myPosition );
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
switch (param)
{
case M01_START_ACTING_JDG:
{
if (STAR)
{
int currentDifficulty = Commands->Get_Difficulty_Level( );
int medium = 1;
int hard = 2;
float tankSpeed;
if (currentDifficulty == hard)
{
tankSpeed = 0.6f;
}
else if (currentDifficulty == medium)
{
tankSpeed = 0.4f;
}
else
{
tankSpeed = 0.2f;
}
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_02_JDG );
params.Set_Movement( Vector3(0,0,0), tankSpeed, 2 );
params.WaypathID = 102233;
//params.WaypointStartID = 102235;
params.AttackCheckBlocked = false;
params.AttackActive = false;
Commands->Action_Attack( obj, params );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 3 );
}
else
{
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ACTING_JDG, 3 );
}
}
break;
case M01_MODIFY_YOUR_ACTION_03_JDG:
{
int currentDifficulty = Commands->Get_Difficulty_Level( );
int medium = 1;
int hard = 2;
float tankSpeed;
float tankRange;
float tankAccuracy;
if (currentDifficulty == hard)
{
tankSpeed = 0.5f;
tankRange = 100;
tankAccuracy = 0;
}
else if (currentDifficulty == medium)
{
tankSpeed = 0.3f;
tankRange = 75;
tankAccuracy = 1;
}
else
{
tankSpeed = 0.1f;
tankRange = 50;
tankAccuracy = 3;
}
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_02_JDG );
params.Set_Movement( Vector3(0,0,0), tankSpeed, 2 );
params.WaypathID = 102233;
//params.WaypointStartID = 102235;
params.Set_Attack( STAR, tankRange, tankAccuracy, true );
params.AttackActive = true;
Commands->Modify_Action ( obj, M01_WALKING_WAYPATH_02_JDG, params );
}
break;
}
}
};
DECLARE_SCRIPT(M01_GDIBase_BackPath_NodGuy_JDG, "")//103337
{
void Created( GameObject * obj )
{
Commands->Set_Innate_Is_Stationary ( obj, true );
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ACTING_JDG)
{
Commands->Set_Innate_Is_Stationary ( obj, false );
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement(Vector3 (57.651f, 54.752f, -0.449f), RUN, 1);
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)
{
Commands->Set_Innate_Is_Stationary ( obj, true );
params.Set_Basic( this, 100, 20 );
params.Set_Attack( STAR, 50, 3, true );
params.AttackCheckBlocked = true;
Commands->Action_Attack (obj, params);
}
}
};
DECLARE_SCRIPT(M01_Sinking_Gunboat_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Set_Animation ( obj, "V_GDI_GBOAT.XG_GBOAT_SINK", false, NULL, 0, 60 );
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "V_GDI_GBOAT.XG_GBOAT_SINK") == 0)
{
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_PlayerEntering_BarnArea_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject *gunboatController = Commands->Find_Object ( M01_TURRETBEACH_CONTROLLER_ID );
if (gunboatController != NULL)
{
Commands->Send_Custom_Event ( obj, gunboatController, 0, M01_START_ACTING_JDG, 0 );
}
GameObject *hovercraftController = Commands->Find_Object ( 121630 );
if (hovercraftController != NULL)
{
Commands->Send_Custom_Event ( obj, hovercraftController, 0, M01_START_ACTING_JDG, 10 );
}
}
}
};
DECLARE_SCRIPT(M01_PlayerLeaving_BarnArea_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject *gunboatController = Commands->Find_Object ( M01_TURRETBEACH_CONTROLLER_ID );
if (gunboatController != NULL)
{
Commands->Send_Custom_Event ( obj, gunboatController, 0, M01_GOTO_IDLE_JDG, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_Barn_EntryZone_JDG, "")//113734
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)//
{
GameObject * missionController = Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG );
if (missionController != NULL)
{
Commands->Send_Custom_Event ( obj, missionController, 0, M01_END_BARN_OBJECTIVE_JDG, 0 );
Commands->Destroy_Object ( obj );//one time zone--cleaning up
}
}
}
};
DECLARE_SCRIPT(M01_GDI_BaseCommander_Backside_EntryZone_JDG, "")//113733
{
bool entered;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(entered, 1);
}
void Created( GameObject * obj )
{
entered = false;
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR && entered == false)
{
entered = true;
GameObject * gdiBaseLeaderGuy = Commands->Find_Object ( 104685 );//
if (gdiBaseLeaderGuy != NULL)
{
Commands->Send_Custom_Event ( obj, gdiBaseLeaderGuy, 0, M01_MODIFY_YOUR_ACTION_10_JDG, 0 );
Commands->Destroy_Object ( obj );//one time zone--cleaning up
}
}
}
};
DECLARE_SCRIPT(M01_Obelisk_UpdateDisc_JDG, "")
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ( type == CUSTOM_EVENT_POWERUP_GRANTED )
{
Commands->Reveal_Encyclopedia_Building ( 12 );
Commands->Set_HUD_Help_Text ( IDS_M00EVAG_DSGN0104I1EVAG_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
}
};
DECLARE_SCRIPT(M01_BarnArea_EvacMonitor_JDG, "")//M01_BARNAREA_EVAC_MONITOR_JDG
{
int unitsEvacuated;
int evac_helicopter_id;
int evac_waypath_id;
int evac_rope_id;
bool transportCalled;
int barnAirdrop_conv;
bool failed;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(unitsEvacuated, 1);
SAVE_VARIABLE(evac_helicopter_id, 2);
SAVE_VARIABLE(evac_waypath_id, 3);
SAVE_VARIABLE(evac_rope_id, 4);
SAVE_VARIABLE(transportCalled, 5);
SAVE_VARIABLE(barnAirdrop_conv, 6);
SAVE_VARIABLE(failed, 7);
}
void Created( GameObject * obj )
{
unitsEvacuated = 0;
transportCalled = false;
failed = false;
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
ActionParamsStruct params;
if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
{
if (action_id == barnAirdrop_conv)
{
int honAlerted_conv = Commands->Create_Conversation( "M01_HandOfNod_Alerted_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, honAlerted_conv, false, false );
//Commands->Join_Conversation( STAR, honAlerted_conv, false, false );
Commands->Start_Conversation( honAlerted_conv, honAlerted_conv );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender ) //
{
if (param == M01_CIVILIAN_KILLED_JDG)//
{
GameObject * civ01 = Commands->Find_Object ( M01_BARN_PRISONER_01_ID );
GameObject * civ02 = Commands->Find_Object ( M01_BARN_PRISONER_02_ID );
GameObject * civ03 = Commands->Find_Object ( M01_BARN_PRISONER_03_ID );
if (sender == civ01)
{
failed = true;
}
else if (sender == civ02)
{
failed = true;
}
else if (sender == civ03)
{
failed = true;
}
}
else if (param == M01_GOING_TO_EVAC_SPOT_JDG)
{
unitsEvacuated++;
if (unitsEvacuated == 3 && failed == false)
{
barnAirdrop_conv = Commands->Create_Conversation( "M01_AirDrop_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, barnAirdrop_conv, false, false );
Commands->Start_Conversation( barnAirdrop_conv, barnAirdrop_conv );
Commands->Monitor_Conversation( obj, barnAirdrop_conv );
Vector3 airDropSpot (-0.923f, 143.580f, 0.647f);
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", airDropSpot);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1D_GDIPowerUpDrop.txt");
}
}
else if (param == M01_CHOPPER_IS_SENDING_ID_JDG)//chopper is sending you his ID
{
evac_helicopter_id = Commands->Get_ID ( sender );
Commands->Debug_Message ( "**********************chopper id received.....%d\n",evac_helicopter_id );
}
else if (param == M01_WAYPATH_IS_SENDING_ID_JDG)//waypath is sending you his ID
{
evac_waypath_id = Commands->Get_ID ( sender );
Commands->Debug_Message ( "**********************waypath id received.....%d\n", evac_waypath_id );
}
else if (param == M01_ROPE_IS_SENDING_ID_JDG)//rope is sending you his ID
{
evac_rope_id = Commands->Get_ID ( sender );
Commands->Debug_Message ( "**********************rope id received.....%d\n", evac_rope_id );
}
else if (param == M01_GIVE_ME_A_ROPE_JDG)//someone is waiting--pull him up
{
Vector3 evacPosition = Commands->Get_Position ( obj );
GameObject * troopbone = Commands->Create_Object("Invisible_Object", evacPosition );
Commands->Set_Model ( troopbone, "XG_EV5_troopBN" );
Commands->Attach_Script(troopbone, "M01_Evac_TroopBone_JDG", "");
Commands->Innate_Disable(sender);
Commands->Attach_To_Object_Bone( sender, troopbone, "Troop_L" );
if(troopbone)
{
Commands->Set_Animation ( troopbone, "XG_EV5_troopBN.XG_EV5_troopBN", false);
}
else
{
Commands->Debug_Message("troopbone not created yet");
}
Commands->Set_Animation ( sender, "S_A_Human.XG_EV5_troop", false );
}
else if (param == M01_SEND_BARN_CIVILIANS_RESCUE_CHINOOK_JDG)//a gdi guy is waiting for evac--call in a helicopter
{
if (transportCalled == false)
{
transportCalled = true;
Vector3 evacPosition = Commands->Get_Position ( obj );
GameObject *controller = Commands->Create_Object("Invisible_Object", evacPosition);
Commands->Attach_Script(controller, "Test_Cinematic", "XG_M01_BarnArea_EvacAnim.txt");
}
}
else if (param == M01_EVERYONES_ON_BOARD_JDG)//chinook is ready to go--give clearance
{
Commands->Debug_Message ( "*******************************all barn civs on board--custom received by controller\n" );
GameObject *evacWaypath = Commands->Find_Object ( evac_waypath_id );
if (evacWaypath != NULL)
{
Commands->Send_Custom_Event( obj, evacWaypath, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
GameObject *evacChopper = Commands->Find_Object ( evac_helicopter_id );
if (evacChopper != NULL)
{
Commands->Send_Custom_Event( obj, evacChopper, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
GameObject *evacRope = Commands->Find_Object ( evac_rope_id );
if (evacChopper != NULL)
{
Commands->Send_Custom_Event( obj, evacRope, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
if (failed == true)
{
int honAlerted_conv = Commands->Create_Conversation( "M01_HandOfNod_Alerted_Conversation", 100, 1000, false);
Commands->Join_Conversation( NULL, honAlerted_conv, false, false );
//Commands->Join_Conversation( STAR, honAlerted_conv, false, false );
Commands->Start_Conversation( honAlerted_conv, honAlerted_conv );
}
}
}
};
DECLARE_SCRIPT(M01_HON_RedKey_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
bool playerHasRedKey = Commands->Has_Key( STAR, 3 );
if (playerHasRedKey == false)
{
Vector3 keyCardLocation (-168.195f, 527.489f, -31.130f);
Commands->Create_Object ( "Level_03_Keycard", keyCardLocation );
Commands->Destroy_Object ( obj );
}
}
}
};
DECLARE_SCRIPT(M01_Comm_Center_Pen_Gate, "")
{
bool samDead;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(samDead, 1);
}
void Created( GameObject * obj )
{
samDead = false;
Commands->Enable_HUD_Pokable_Indicator ( obj, true );
}
void Poked( GameObject * obj, GameObject * poker ) //
{
if (poker == STAR && samDead == true)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_HAS_POKED_PEN_GATE_JDG, 0 );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_COMMCENTER_SAMSITE_HAS_BEEN_DESTROYED_JDG)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ACTING_JDG, 5 );
}
else if (param == M01_START_ACTING_JDG)
{
samDead = true;
}
}
}
};
DECLARE_SCRIPT(M01_CommCenter_SAMSite_Script, "")
{
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == (STAR))
{
if (obj)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
Commands->Send_Custom_Event( obj, Commands->Find_Object (M01_MISSION_CONTROLLER_JDG), 0, M01_COMMCENTER_SAMSITE_HAS_BEEN_DESTROYED_JDG, 0 );
GameObject * detentionGate = Commands->Find_Object ( 101117 );
if (detentionGate != NULL)
{
Commands->Send_Custom_Event( obj, detentionGate, 0, M01_COMMCENTER_SAMSITE_HAS_BEEN_DESTROYED_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Commander_Shack_Zone_JDG, "")//115985
{
bool commanderAlive;
bool playerinZone;
bool commandClearance;
bool convStarted;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(commanderAlive, 1);
SAVE_VARIABLE(playerinZone, 2);
SAVE_VARIABLE(commandClearance, 3);
SAVE_VARIABLE(convStarted, 4);
}
void Created( GameObject * obj )
{
commanderAlive = true;
playerinZone = false;
commandClearance = false;
convStarted = false;
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
playerinZone = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
GameObject * convController = Commands->Find_Object ( 125857 );
if (convController != NULL)
{
Commands->Send_Custom_Event( obj, convController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
}
}
void Exited( GameObject * obj, GameObject * exiter )
{
if (exiter == STAR)
{
playerinZone = false;
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ACTING_JDG)
{
commandClearance = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
else if (param == M01_IVE_BEEN_KILLED_JDG)
{
commanderAlive = false;
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG && convStarted == false)
{
if (playerinZone == true && commanderAlive == true && commandClearance == true)//M01_MODIFY_YOUR_ACTION_JDG
{
GameObject * gdiCommander = Commands->Find_Object ( 106050);
if (gdiCommander != NULL)
{
convStarted = true;
Commands->Send_Custom_Event( obj, gdiCommander, 0, M01_MODIFY_YOUR_ACTION_JDG, 1 );
}
}
else
{
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0.25f );
}
}
}
}
};
DECLARE_SCRIPT(M01_TurretBeach_Engineer_JDG, "")//this guys ID is M01_TURRETBEACH_ENGINEER_ID 101654
{
bool working_here_boss;
bool first_time;
float last_health;
bool killedYet;
bool turret01_dead;
bool turret02_dead;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(working_here_boss, 1);
SAVE_VARIABLE(first_time, 2);
SAVE_VARIABLE(killedYet, 3);
SAVE_VARIABLE(turret01_dead, 4);
SAVE_VARIABLE(turret02_dead, 5);
}
void Created( GameObject * obj )
{
turret01_dead = false;
turret02_dead = false;
killedYet = false;
working_here_boss = false;
first_time = true;
Commands->Innate_Disable(obj);
last_health = Commands->Get_Max_Health ( obj );
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
if (enemy == STAR && working_here_boss == false)
{
if (obj)
{
Commands->Action_Reset ( obj, 100 );
Commands->Innate_Enable(obj);
Commands->Innate_Force_State_Enemy_Seen ( obj, STAR );
}
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
int damager_id = Commands->Get_ID ( damager );
if (damager_id != NULL)
{
Commands->Debug_Message ( "***************************engineers damager is ID %d\n", damager_id );
}
else
{
Commands->Debug_Message ( "***************************engineers damager is NULL\n" );
}
GameObject * gunboat = Commands->Find_Object ( M01_TURRETBEACH_GUNBOAT_ID );
if (damager == gunboat)
{
Commands->Set_Health ( obj, last_health );
}
else if (damager == STAR)
{
if (obj)
{
last_health = Commands->Get_Health ( obj );
if (first_time == true)
{
working_here_boss = false;
Commands->Action_Reset ( obj, 100 );
Commands->Innate_Enable(obj);
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_DOING_ANIMATION_03_JDG);
params.Set_Animation( "H_A_862A", false );
Commands->Action_Play_Animation ( obj, params );
Commands->Innate_Force_State_Enemy_Seen ( obj, STAR );
first_time = false;
}
else
{
working_here_boss = false;
Commands->Action_Reset ( obj, 100 );
Commands->Innate_Enable(obj);
Commands->Innate_Force_State_Enemy_Seen ( obj, STAR );
}
}
}
}
void Killed( GameObject * obj, GameObject * killer )
{
killedYet = true;
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_TURRET_BEACH_ENGINEER_IS_DEAD_JDG, 5 );
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (param == M01_START_ACTING_JDG)
{
Commands->Debug_Message ( "***************************original engineer custom received--start acting\n" );
Commands->Enable_Hibernation( obj, false );
}
else if (param == M01_GOTO_IDLE_JDG)
{
Commands->Debug_Message ( "***************************original engineer custom received--STOP acting\n" );
Commands->Enable_Hibernation( obj, true );
}
else if (param == M01_PLAYER_IS_ATTACKING_ME_JDG)
{
if (working_here_boss == false)
{
Commands->Debug_Message ( "***************************engineers has received custom to go heal turret\n" );
Commands->Innate_Disable(obj);
Commands->Action_Reset ( obj, 100 );
GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
float turret01_health = 0;
float turret02_health = 0;
if (turret01 != NULL)
{
turret01_health = Commands->Get_Health ( turret01 );
}
if (turret02 != NULL)
{
turret02_health = Commands->Get_Health ( turret02 );
}
if ((turret02_health > turret01_health) && (turret01_health > 0))
{
if (turret01 != NULL && turret01_dead == false)
{
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Vector3 (-86.5f, 95.5f, 2.3f), 1.0f, 0.5f, false );
params.MovePathfind = false;
Commands->Action_Goto ( obj, params );
working_here_boss = true;
}
}
else if ((turret01_health > turret02_health) && (turret02_health > 0))
{
if (turret02 != NULL && turret02_dead == false)
{
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_02_JDG);
params.Set_Movement( Vector3 (-101.5f, 111.7f, 2.3f), 1.0f, 0.5f, false );
params.MovePathfind = false;
Commands->Action_Goto ( obj, params );
working_here_boss = true;
}
}
else
{
Commands->Send_Custom_Event( obj, sender, 0, M01_BUSY_TRY_AGAIN_JDG, 1 );
}
}
else if (working_here_boss == true)
{
Commands->Send_Custom_Event( obj, sender, 0, M01_BUSY_TRY_AGAIN_JDG, 1 );
}
}
else if (param == M01_START_ATTACKING_01_JDG)
{
GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
if (turret01 != NULL && killedYet == false && turret01_dead == false)
{
Vector3 sound_position = Commands->Get_Position ( turret01 );
Commands->Create_Sound ( "CnC_Healer_Sound", sound_position, obj );
float turretMaxHealth = Commands->Get_Max_Health ( turret01 );
Commands->Set_Health ( turret01, turretMaxHealth );
}
Commands->Debug_Message ( "***************************turret engineer has fixed turret one--going back to hiding spot\n" );
Commands->Action_Reset ( obj, 100 );
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_03_JDG);
params.Set_Movement( Vector3 (-91.1f, 106.562f, 1.7f), 1.0f, 0.25f, false );
params.MovePathfind = false;
Commands->Action_Goto ( obj, params );
}
else if (param == M01_START_ATTACKING_02_JDG)
{
GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if (turret02 != NULL && killedYet == false && turret02_dead == false)
{
Vector3 sound_position = Commands->Get_Position ( turret02 );
Commands->Create_Sound ( "CnC_Healer_Sound", sound_position, obj );
float turretMaxHealth = Commands->Get_Max_Health ( turret02 );
Commands->Set_Health ( turret02, turretMaxHealth );
}
Commands->Action_Reset ( obj, 100 );
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_03_JDG);
params.Set_Movement( Vector3 (-91.1f, 106.562f, 1.7f), 1.0f, 0.25f, false );
params.MovePathfind = false;
Commands->Action_Goto ( obj, params );
}
else if (param == M01_TURRET_HAS_BEEN_DESTROYED_JDG)
{
GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if (sender == turret01)
{
turret01_dead = true;
}
if (sender == turret02)
{
turret02_dead = true;
}
}
}
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)//engineer is at damaged turret 01--play fixing animation
{
GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
if (turret01 != NULL)
{
params.Set_Basic(this, 100, M01_START_ATTACKING_01_JDG);
params.Set_Attack( turret01, 50, 0, false );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ATTACKING_01_JDG, 1.5f );
}
}
else if (action_id == M01_WALKING_WAYPATH_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)//engineer is at damaged turret 02--play fixing animation
{
GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if (turret02 != NULL)
{
params.Set_Basic(this, 100, M01_START_ATTACKING_02_JDG);
params.Set_Attack( turret02, 50, 0, false );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ATTACKING_02_JDG, 0.5f );
}
}
else if (action_id == M01_DOING_ANIMATION_03_JDG && complete_reason == ACTION_COMPLETE_NORMAL)//engineer has been damaged look around
{
char *animationName = M01_Choose_Duck_Animation();
Commands->Action_Reset ( obj, 100 );
params.Set_Basic(this, 60, M01_DOING_ANIMATION_04_JDG);
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );
}
else if (action_id == M01_WALKING_WAYPATH_03_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
working_here_boss = false;
//Commands->Enable_Hibernation( obj, true );
}
}
};
DECLARE_SCRIPT(M01_TurretBeach_Chinook_Spawned_Soldier_NOD, "")
{
bool killedYet;
bool atTurretsYet;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(killedYet, 1);
SAVE_VARIABLE(atTurretsYet, 2);
}
void Created( GameObject * obj )
{
killedYet = false;
atTurretsYet = false;
GameObject *gunboatController = Commands->Find_Object ( M01_TURRETBEACH_CONTROLLER_ID );
if (gunboatController != NULL)
{
Commands->Send_Custom_Event ( obj, gunboatController, 0, M01_CHOPPER_IS_SENDING_ID_JDG, 0 );
}
GameObject *turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
if (turret01 != NULL)
{
Commands->Send_Custom_Event ( obj, turret01, 0, M01_CHOPPER_IS_SENDING_ID_JDG, 0 );
}
GameObject *turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if (turret02 != NULL)
{
Commands->Send_Custom_Event ( obj, turret02, 0, M01_CHOPPER_IS_SENDING_ID_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "s_a_human.h_a_troopdrop") == 0)
{
GameObject *turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
GameObject *turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if (turret01 != NULL || turret02 != NULL)
{
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_03_JDG);
params.Set_Movement(Vector3 (0,0,0), RUN, 1);
params.WaypathID = 109629;
Commands->Action_Goto(obj, params);
Commands->Send_Custom_Event ( obj, obj, 0, M01_WALKING_WAYPATH_03_JDG, 5 );
}
else
{
ActionParamsStruct params;
params.Set_Basic(this, 45, M01_WALKING_WAYPATH_03_JDG);
params.Set_Movement(Vector3 (0,0,0), RUN, 1);
params.WaypathID = 109629;
Commands->Action_Goto(obj, params);
//Commands->Send_Custom_Event ( obj, obj, 0, M01_WALKING_WAYPATH_03_JDG, 5 );
}
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (damager == STAR)
{
Commands->Innate_Enable(obj);
}
}
void Killed( GameObject * obj, GameObject * killer )
{
killedYet = true;
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_TURRET_BEACH_ENGINEER_IS_DEAD_JDG, 5 );
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (param == M01_WALKING_WAYPATH_03_JDG && atTurretsYet == false)
{
GameObject *turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
GameObject *turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if (turret01 != NULL || turret02 != NULL)
{
//ActionParamsStruct params;
//params.Set_Basic(this, 100, M01_WALKING_WAYPATH_03_JDG);
//params.Set_Movement(Vector3 (0,0,0), RUN, 1);
//params.WaypathID = 109629;
//Commands->Action_Goto(obj, params);
Commands->Send_Custom_Event ( obj, obj, 0, M01_WALKING_WAYPATH_03_JDG, 5 );
}
else
{
Commands->Action_Reset ( obj, 100 );
//ActionParamsStruct params;
//params.Set_Basic(this, 45, M01_WALKING_WAYPATH_03_JDG);
//params.Set_Movement(Vector3 (0,0,0), RUN, 1);
//params.WaypathID = 109629;
//Commands->Action_Goto(obj, params);
//Commands->Send_Custom_Event ( obj, obj, 0, M01_WALKING_WAYPATH_03_JDG, 5 );
}
}
else if (param == M01_START_ACTING_JDG)
{
Commands->Debug_Message ( "***************************new engineer custom received--start acting\n" );
Commands->Enable_Hibernation( obj, false );
Commands->Send_Custom_Event( obj, obj, 0, M01_CHECK_TURRETS_HEALTH_JDG, 1 );
}
else if (param == M01_GOTO_IDLE_JDG)
{
Commands->Debug_Message ( "***************************new engineer custom received--STOP acting\n" );
Commands->Enable_Hibernation( obj, true );
}
else if (param == M01_CHECK_TURRETS_HEALTH_JDG)
{
GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
float turret01_health = 0;
float turret02_health = 0;
if (turret01 != NULL)
{
turret01_health = Commands->Get_Health ( turret01 );
}
if (turret02 != NULL)
{
turret02_health = Commands->Get_Health ( turret02 );
}
if (turret01_health < turret02_health)
{
Commands->Action_Reset ( obj, 100 );
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Vector3 (-86.5f, 95.5f, 2.3f), 1.0f, 0.5f, false );
//params.MovePathfind = false;
Commands->Action_Goto ( obj, params );
}
if (turret02_health < turret01_health)
{
Commands->Action_Reset ( obj, 100 );
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_02_JDG);
params.Set_Movement( Vector3 (-101.5f, 111.7f, 2.3f), 1.0f, 0.5f, false );
//params.MovePathfind = false;
Commands->Action_Goto ( obj, params );
}
else
{
Commands->Send_Custom_Event( obj, obj, 0, M01_CHECK_TURRETS_HEALTH_JDG, 1 );
}
}
else if (param == M01_START_ATTACKING_01_JDG)
{
GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
if (turret01 != NULL && killedYet == false)
{
Vector3 sound_position = Commands->Get_Position ( turret01 );
Commands->Create_Sound ( "CnC_Healer_Sound", sound_position, obj );
float turretMaxHealth = Commands->Get_Max_Health ( turret01 );
Commands->Set_Health ( turret01, turretMaxHealth );
}
Commands->Debug_Message ( "***************************turret engineer has fixed turret one--going back to hiding spot\n" );
Commands->Action_Reset ( obj, 100 );
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_03_JDG);
params.Set_Movement( Vector3 (-91.1f, 106.562f, 1.7f), 1.0f, 0.25f, false );
params.MovePathfind = false;
Commands->Action_Goto ( obj, params );
}
else if (param == M01_START_ATTACKING_02_JDG)
{
GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if (turret02 != NULL && killedYet == false)
{
Vector3 sound_position = Commands->Get_Position ( turret02 );
Commands->Create_Sound ( "CnC_Healer_Sound", sound_position, obj );
float turretMaxHealth = Commands->Get_Max_Health ( turret02 );
Commands->Set_Health ( turret02, turretMaxHealth );
}
Commands->Action_Reset ( obj, 100 );
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_03_JDG);
params.Set_Movement( Vector3 (-91.1f, 106.562f, 1.7f), 1.0f, 0.25f, false );
params.MovePathfind = false;
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)//engineer is at damaged turret 01--play fixing animation
{
GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
if (turret01 != NULL)
{
params.Set_Basic(this, 100, M01_START_ATTACKING_01_JDG);
params.Set_Attack( turret01, 50, 0, false );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ATTACKING_01_JDG, 0.5f );
}
}
else if (action_id == M01_WALKING_WAYPATH_02_JDG && complete_reason == ACTION_COMPLETE_NORMAL)//engineer is at damaged turret 02--play fixing animation
{
GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if (turret02 != NULL)
{
params.Set_Basic(this, 100, M01_START_ATTACKING_02_JDG);
params.Set_Attack( turret02, 50, 0, false );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ATTACKING_02_JDG, 0.5f );
}
}
else if (action_id == M01_DOING_ANIMATION_03_JDG && complete_reason == ACTION_COMPLETE_NORMAL)//engineer has been damaged look around
{
char *animationName = M01_Choose_Duck_Animation();
Commands->Action_Reset ( obj, 100 );
params.Set_Basic(this, 60, M01_DOING_ANIMATION_04_JDG);
params.Set_Animation( animationName, false );
Commands->Action_Play_Animation ( obj, params );
}
else if (action_id == M01_WALKING_WAYPATH_03_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
atTurretsYet = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_CHECK_TURRETS_HEALTH_JDG, 1 );
}
else if (action_id == M01_WALKING_WAYPATH_05_JDG && complete_reason == ACTION_COMPLETE_NORMAL)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_CHECK_TURRETS_HEALTH_JDG, 1 );
}
}
};
DECLARE_SCRIPT(M01_FP_NodBase_Dogfight_Contoller_JDG, "")
{
int last;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(last, 1);
}
void Created(GameObject * obj)
{
Commands->Start_Timer(obj, this, 60.0f, 0);
last = 21;
}
void Timer_Expired(GameObject * obj, int timer_id)
{
char *flyovers[28] =
{
//these are the level 01 dogfights
"X1A_Apache_Orca_Chase_01.txt",
"X1A_Apache_Orca_Chase_02.txt",
"X1A_Apache_Orca_Chase_03.txt",
"X1A_Apache_Orca_Chase_04.txt",
//this is a low level flyover in nod base
//it goes from the refinery to the waterfall N->S
//chinooks look kinda odd on this one
"X1A_Solo_Orca_01.txt",
"X1A_Solo_Orca_01.txt",
"X1A_Solo_Orca_01.txt",
"X1A_Solo_Orca_01.txt",
"X1A_Solo_Orca_01.txt",
"X1A_Solo_Apache_01.txt",
"X1A_Solo_Apache_01.txt",
"X1A_Solo_Apache_01.txt",
"X1A_Solo_Apache_01.txt",
"X1A_Solo_Apache_01.txt",
"X1A_Solo_Nod_Chinook_01.txt",
"X1A_Solo_GDI_Chinook_01.txt",
//this is a low level flyover in nod base
//it goes from the waterfall to the refinery S->N
"X1A_Solo_Orca_02.txt",
"X1A_Solo_Apache_02.txt",
"X1A_Solo_Apache_02.txt",
"X1A_Solo_Apache_02.txt",
"X1A_Solo_Apache_02.txt",
"X1A_Solo_Apache_02.txt",
"X1A_Solo_Nod_Chinook_02.txt",
"X1A_Solo_Nod_Chinook_02.txt",
"X1A_Solo_Nod_Chinook_02.txt",
"X1A_Solo_Nod_Chinook_02.txt",
"X1A_Solo_Nod_Chinook_02.txt",
"X1A_Solo_GDI_Chinook_02.txt",
};
int random = Commands->Get_Random_Int(0, 28);
while (random == last) {
random = Commands->Get_Random_Int(0, 28);
}
GameObject *controller = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(controller, "Test_Cinematic", flyovers[random]);
float delayTimer = Commands->Get_Random ( 30, 60 );
Commands->Start_Timer(obj, this, delayTimer, 0);
last = random;
}
};
DECLARE_SCRIPT(M01_FP_BaseToBase_NorthSouth_Contoller_JDG, "")
{
int last;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(last, 1);
}
void Created(GameObject * obj)
{
Commands->Start_Timer(obj, this, 60.0f, 0);
last = 21;
}
void Timer_Expired(GameObject * obj, int timer_id)
{
char *flyovers[28] =
{
//this is a low level traffic lane from nod comm to gdi ocean-- N->S
"X1A_Solo_Orca_03.txt",
"X1A_Solo_Apache_03.txt",
"X1A_Solo_Apache_03.txt",
"X1A_Solo_Apache_03.txt",
"X1A_Solo_Apache_03.txt",
"X1A_Solo_Apache_03.txt",
"X1A_Solo_Nod_Chinook_03.txt",
"X1A_Solo_Nod_Chinook_03.txt",
"X1A_Solo_Nod_Chinook_03.txt",
"X1A_Solo_Nod_Chinook_03.txt",
"X1A_Solo_Nod_Chinook_03.txt",
"X1A_Solo_GDI_Chinook_03.txt",
"X1A_Solo_NodCargo_03.txt",
"X1A_Solo_A10_03.txt",
//this is a low level traffic lane from nod refinery to gdi ocean-- N->S
"X1A_Solo_Orca_04.txt",
"X1A_Solo_Apache_04.txt",
"X1A_Solo_Apache_04.txt",
"X1A_Solo_Apache_04.txt",
"X1A_Solo_Apache_04.txt",
"X1A_Solo_Apache_04.txt",
"X1A_Solo_Nod_Chinook_04.txt",
"X1A_Solo_Nod_Chinook_04.txt",
"X1A_Solo_Nod_Chinook_04.txt",
"X1A_Solo_Nod_Chinook_04.txt",
"X1A_Solo_Nod_Chinook_04.txt",
"X1A_Solo_GDI_Chinook_04.txt",
"X1A_Solo_NodCargo_04.txt",
"X1A_Solo_A10_04.txt",
};
int random = Commands->Get_Random_Int(0, 28);
while (random == last) {
random = Commands->Get_Random_Int(0, 28);
}
GameObject *controller = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(controller, "Test_Cinematic", flyovers[random]);
float delayTimer = Commands->Get_Random ( 30, 60 );
Commands->Start_Timer(obj, this, delayTimer, 0);
last = random;
}
};
DECLARE_SCRIPT(M01_FP_BaseToBase_SouthNorth_Contoller_JDG, "")
{
int last;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(last, 1);
}
void Created(GameObject * obj)
{
last = 21;
GameObject *controller = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(controller, "Test_Cinematic", "X1A_Solo_NodCargo_06.txt");
Commands->Start_Timer(obj, this, 60.0f, 0);
}
void Timer_Expired(GameObject * obj, int timer_id)
{
char *flyovers[56] =
{
//this is a low level traffic lane from gdi ocean to nod comm center-- S->N
"X1A_Solo_Orca_05.txt",
"X1A_Solo_Orca_05.txt",
"X1A_Solo_Orca_05.txt",
"X1A_Solo_Orca_05.txt",
"X1A_Solo_Orca_05.txt",
"X1A_Solo_Apache_05.txt",
"X1A_Solo_Nod_Chinook_05.txt",
"X1A_Solo_GDI_Chinook_05.txt",
"X1A_Solo_GDI_Chinook_05.txt",
"X1A_Solo_GDI_Chinook_05.txt",
"X1A_Solo_GDI_Chinook_05.txt",
"X1A_Solo_GDI_Chinook_05.txt",
"X1A_Solo_NodCargo_05.txt",
"X1A_Solo_A10_05.txt",
//this is a low level traffic lane from gdi ocean to nod refinery-- S->N
"X1A_Solo_Orca_06.txt",
"X1A_Solo_Orca_06.txt",
"X1A_Solo_Orca_06.txt",
"X1A_Solo_Orca_06.txt",
"X1A_Solo_Orca_06.txt",
"X1A_Solo_Apache_06.txt",
"X1A_Solo_Nod_Chinook_06.txt",
"X1A_Solo_GDI_Chinook_06.txt",
"X1A_Solo_GDI_Chinook_06.txt",
"X1A_Solo_GDI_Chinook_06.txt",
"X1A_Solo_GDI_Chinook_06.txt",
"X1A_Solo_GDI_Chinook_06.txt",
"X1A_Solo_NodCargo_06.txt",
"X1A_Solo_A10_06.txt",
//this is a low/med level traffic lane from gdi ocean to nod refinery-- S->N
"X1A_Solo_Orca_07.txt",
"X1A_Solo_Orca_07.txt",
"X1A_Solo_Orca_07.txt",
"X1A_Solo_Orca_07.txt",
"X1A_Solo_Orca_07.txt",
"X1A_Solo_Apache_07.txt",
"X1A_Solo_Nod_Chinook_07.txt",
"X1A_Solo_GDI_Chinook_07.txt",
"X1A_Solo_GDI_Chinook_07.txt",
"X1A_Solo_GDI_Chinook_07.txt",
"X1A_Solo_GDI_Chinook_07.txt",
"X1A_Solo_GDI_Chinook_07.txt",
"X1A_Solo_NodCargo_07.txt",
"X1A_Solo_A10_07.txt",
//this is a low level traffic lane from gdi ocean to nod comm center-- S->N
"X1A_Solo_Orca_08.txt",
"X1A_Solo_Orca_08.txt",
"X1A_Solo_Orca_08.txt",
"X1A_Solo_Orca_08.txt",
"X1A_Solo_Orca_08.txt",
"X1A_Solo_Apache_08.txt",
"X1A_Solo_GDI_Chinook_08.txt",
"X1A_Solo_GDI_Chinook_08.txt",
"X1A_Solo_GDI_Chinook_08.txt",
"X1A_Solo_GDI_Chinook_08.txt",
"X1A_Solo_GDI_Chinook_08.txt",
"X1A_Solo_Nod_Chinook_08.txt",
"X1A_Solo_NodCargo_08.txt",
"X1A_Solo_A10_08.txt",
};
int random = Commands->Get_Random_Int(0, 56);
while (random == last) {
random = Commands->Get_Random_Int(0, 56);
}
GameObject *controller = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(controller, "Test_Cinematic", flyovers[random]);
float delayTimer = Commands->Get_Random ( 30, 60 );
Commands->Start_Timer(obj, this, delayTimer, 0);
last = random;
}
};
DECLARE_SCRIPT(M01_FP_NodBase_EastWest_Contoller_JDG, "")
{
int last;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(last, 1);
}
void Created(GameObject * obj)
{
Commands->Start_Timer(obj, this, 60.0f, 0);
last = 21;
}
void Timer_Expired(GameObject * obj, int timer_id)
{
char *flyovers[72] =
{
//this is a flyover at nod base it goes from the comm to the refinery-- E->W
"X1A_Solo_Orca_09.txt",
"X1A_Solo_Apache_09.txt",
"X1A_Solo_Apache_09.txt",
"X1A_Solo_Apache_09.txt",
"X1A_Solo_Apache_09.txt",
"X1A_Solo_Apache_09.txt",
"X1A_Solo_Apache_09.txt",
"X1A_Solo_Apache_09.txt",
"X1A_Solo_Apache_09.txt",
"X1A_Solo_Apache_09.txt",
"X1A_Solo_Apache_09.txt",
"X1A_Solo_Nod_Chinook_09.txt",
"X1A_Solo_Nod_Chinook_09.txt",
"X1A_Solo_Nod_Chinook_09.txt",
"X1A_Solo_Nod_Chinook_09.txt",
"X1A_Solo_Nod_Chinook_09.txt",
"X1A_Solo_Nod_Chinook_09.txt",
"X1A_Solo_Nod_Chinook_09.txt",
"X1A_Solo_Nod_Chinook_09.txt",
"X1A_Solo_Nod_Chinook_09.txt",
"X1A_Solo_Nod_Chinook_09.txt",
"X1A_Solo_GDI_Chinook_09.txt",
"X1A_Solo_NodCargo_09.txt",
"X1A_Solo_A10_09.txt",
//this is a flyover at nod base it goes from the comm to the refinery-- E->W
"X1A_Solo_Orca_10.txt",
"X1A_Solo_Apache_10.txt",
"X1A_Solo_Apache_10.txt",
"X1A_Solo_Apache_10.txt",
"X1A_Solo_Apache_10.txt",
"X1A_Solo_Apache_10.txt",
"X1A_Solo_Apache_10.txt",
"X1A_Solo_Apache_10.txt",
"X1A_Solo_Apache_10.txt",
"X1A_Solo_Apache_10.txt",
"X1A_Solo_Apache_10.txt",
"X1A_Solo_Nod_Chinook_10.txt",
"X1A_Solo_Nod_Chinook_10.txt",
"X1A_Solo_Nod_Chinook_10.txt",
"X1A_Solo_Nod_Chinook_10.txt",
"X1A_Solo_Nod_Chinook_10.txt",
"X1A_Solo_Nod_Chinook_10.txt",
"X1A_Solo_Nod_Chinook_10.txt",
"X1A_Solo_Nod_Chinook_10.txt",
"X1A_Solo_Nod_Chinook_10.txt",
"X1A_Solo_Nod_Chinook_10.txt",
"X1A_Solo_GDI_Chinook_10.txt",
"X1A_Solo_NodCargo_10.txt",
"X1A_Solo_A10_10.txt",
//this is a flyover at nod base it goes from the comm to the refinery-- E->W
"X1A_Solo_Orca_11.txt",
"X1A_Solo_Apache_11.txt",
"X1A_Solo_Apache_11.txt",
"X1A_Solo_Apache_11.txt",
"X1A_Solo_Apache_11.txt",
"X1A_Solo_Apache_11.txt",
"X1A_Solo_Apache_11.txt",
"X1A_Solo_Apache_11.txt",
"X1A_Solo_Apache_11.txt",
"X1A_Solo_Apache_11.txt",
"X1A_Solo_Apache_11.txt",
"X1A_Solo_Nod_Chinook_11.txt",
"X1A_Solo_Nod_Chinook_11.txt",
"X1A_Solo_Nod_Chinook_11.txt",
"X1A_Solo_Nod_Chinook_11.txt",
"X1A_Solo_Nod_Chinook_11.txt",
"X1A_Solo_Nod_Chinook_11.txt",
"X1A_Solo_Nod_Chinook_11.txt",
"X1A_Solo_Nod_Chinook_11.txt",
"X1A_Solo_Nod_Chinook_11.txt",
"X1A_Solo_Nod_Chinook_11.txt",
"X1A_Solo_GDI_Chinook_11.txt",
"X1A_Solo_NodCargo_11.txt",
"X1A_Solo_A10_11.txt",
};
int random = Commands->Get_Random_Int(0, 72);
while (random == last) {
random = Commands->Get_Random_Int(0, 72);
}
GameObject *controller = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(controller, "Test_Cinematic", flyovers[random]);
float delayTimer = Commands->Get_Random ( 30, 60 );
Commands->Start_Timer(obj, this, delayTimer, 0);
last = random;
}
};
DECLARE_SCRIPT(M01_FP_NodBase_WestEast_Contoller_JDG, "")
{
int last;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(last, 1);
}
void Created(GameObject * obj)
{
Commands->Start_Timer(obj, this, 60.0f, 0);
last = 21;
}
void Timer_Expired(GameObject * obj, int timer_id)
{
char *flyovers[48] =
{
//this is a flyover at nod base it goes from the refinery to the comm W->E
"X1A_Solo_Orca_12.txt",
"X1A_Solo_Apache_12.txt",
"X1A_Solo_Apache_12.txt",
"X1A_Solo_Apache_12.txt",
"X1A_Solo_Apache_12.txt",
"X1A_Solo_Apache_12.txt",
"X1A_Solo_Apache_12.txt",
"X1A_Solo_Apache_12.txt",
"X1A_Solo_Apache_12.txt",
"X1A_Solo_Apache_12.txt",
"X1A_Solo_Apache_12.txt",
"X1A_Solo_Nod_Chinook_12.txt",
"X1A_Solo_Nod_Chinook_12.txt",
"X1A_Solo_Nod_Chinook_12.txt",
"X1A_Solo_Nod_Chinook_12.txt",
"X1A_Solo_Nod_Chinook_12.txt",
"X1A_Solo_Nod_Chinook_12.txt",
"X1A_Solo_Nod_Chinook_12.txt",
"X1A_Solo_Nod_Chinook_12.txt",
"X1A_Solo_Nod_Chinook_12.txt",
"X1A_Solo_Nod_Chinook_12.txt",
"X1A_Solo_GDI_Chinook_12.txt",
"X1A_Solo_NodCargo_12.txt",
"X1A_Solo_A10_12.txt",
//this is a flyover at nod base it goes from the refinery to the comm W->E
"X1A_Solo_Orca_13.txt",
"X1A_Solo_Apache_13.txt",
"X1A_Solo_Apache_13.txt",
"X1A_Solo_Apache_13.txt",
"X1A_Solo_Apache_13.txt",
"X1A_Solo_Apache_13.txt",
"X1A_Solo_Apache_13.txt",
"X1A_Solo_Apache_13.txt",
"X1A_Solo_Apache_13.txt",
"X1A_Solo_Apache_13.txt",
"X1A_Solo_Apache_13.txt",
"X1A_Solo_Nod_Chinook_13.txt",
"X1A_Solo_Nod_Chinook_13.txt",
"X1A_Solo_Nod_Chinook_13.txt",
"X1A_Solo_Nod_Chinook_13.txt",
"X1A_Solo_Nod_Chinook_13.txt",
"X1A_Solo_Nod_Chinook_13.txt",
"X1A_Solo_Nod_Chinook_13.txt",
"X1A_Solo_Nod_Chinook_13.txt",
"X1A_Solo_Nod_Chinook_13.txt",
"X1A_Solo_Nod_Chinook_13.txt",
"X1A_Solo_GDI_Chinook_13.txt",
"X1A_Solo_NodCargo_13.txt",
"X1A_Solo_A10_13.txt",
};
int random = Commands->Get_Random_Int(0, 48);
while (random == last) {
random = Commands->Get_Random_Int(0, 48);
}
GameObject *controller = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(controller, "Test_Cinematic", flyovers[random]);
float delayTimer = Commands->Get_Random ( 30, 60 );
Commands->Start_Timer(obj, this, delayTimer, 0);
last = random;
}
};
DECLARE_SCRIPT(M01_FP_NodBase_NorthSouth_Contoller_JDG, "")
{
int last;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(last, 1);
}
void Created(GameObject * obj)
{
Commands->Start_Timer(obj, this, 60.0f, 0);
last = 21;
}
void Timer_Expired(GameObject * obj, int timer_id)
{
char *flyovers[48] =
{
//this is a flyover at nod base it goes from the comm to the waterfall N->S
"X1A_Solo_Orca_14.txt",
"X1A_Solo_Apache_14.txt",
"X1A_Solo_Apache_14.txt",
"X1A_Solo_Apache_14.txt",
"X1A_Solo_Apache_14.txt",
"X1A_Solo_Apache_14.txt",
"X1A_Solo_Apache_14.txt",
"X1A_Solo_Apache_14.txt",
"X1A_Solo_Apache_14.txt",
"X1A_Solo_Apache_14.txt",
"X1A_Solo_Apache_14.txt",
"X1A_Solo_Nod_Chinook_14.txt",
"X1A_Solo_Nod_Chinook_14.txt",
"X1A_Solo_Nod_Chinook_14.txt",
"X1A_Solo_Nod_Chinook_14.txt",
"X1A_Solo_Nod_Chinook_14.txt",
"X1A_Solo_Nod_Chinook_14.txt",
"X1A_Solo_Nod_Chinook_14.txt",
"X1A_Solo_Nod_Chinook_14.txt",
"X1A_Solo_Nod_Chinook_14.txt",
"X1A_Solo_Nod_Chinook_14.txt",
"X1A_Solo_GDI_Chinook_14.txt",
"X1A_Solo_NodCargo_14.txt",
"X1A_Solo_A10_14.txt",
//this is a flyover at nod base it goes from the comm to the waterfall N->S
"X1A_Solo_Orca_15.txt",
"X1A_Solo_Apache_15.txt",
"X1A_Solo_Apache_15.txt",
"X1A_Solo_Apache_15.txt",
"X1A_Solo_Apache_15.txt",
"X1A_Solo_Apache_15.txt",
"X1A_Solo_Apache_15.txt",
"X1A_Solo_Apache_15.txt",
"X1A_Solo_Apache_15.txt",
"X1A_Solo_Apache_15.txt",
"X1A_Solo_Apache_15.txt",
"X1A_Solo_Nod_Chinook_15.txt",
"X1A_Solo_Nod_Chinook_15.txt",
"X1A_Solo_Nod_Chinook_15.txt",
"X1A_Solo_Nod_Chinook_15.txt",
"X1A_Solo_Nod_Chinook_15.txt",
"X1A_Solo_Nod_Chinook_15.txt",
"X1A_Solo_Nod_Chinook_15.txt",
"X1A_Solo_Nod_Chinook_15.txt",
"X1A_Solo_Nod_Chinook_15.txt",
"X1A_Solo_Nod_Chinook_15.txt",
"X1A_Solo_GDI_Chinook_15.txt",
"X1A_Solo_NodCargo_15.txt",
"X1A_Solo_A10_15.txt",
};
int random = Commands->Get_Random_Int(0, 48);
while (random == last) {
random = Commands->Get_Random_Int(0, 48);
}
GameObject *controller = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(controller, "Test_Cinematic", flyovers[random]);
float delayTimer = Commands->Get_Random ( 30, 60 );
Commands->Start_Timer(obj, this, delayTimer, 0);
last = random;
}
};
DECLARE_SCRIPT(M01_FP_NodBase_SouthNorth_Contoller_JDG, "")
{
int last;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(last, 1);
}
void Created(GameObject * obj)
{
Commands->Start_Timer(obj, this, 60.0f, 0);
last = 21;
}
void Timer_Expired(GameObject * obj, int timer_id)
{
char *flyovers[48] =
{
//this is a flyover at nod base it goes from guard tower 01 to the comm center S-N
"X1A_Solo_Orca_16.txt",
"X1A_Solo_Apache_16.txt",
"X1A_Solo_Apache_16.txt",
"X1A_Solo_Apache_16.txt",
"X1A_Solo_Apache_16.txt",
"X1A_Solo_Apache_16.txt",
"X1A_Solo_Apache_16.txt",
"X1A_Solo_Apache_16.txt",
"X1A_Solo_Apache_16.txt",
"X1A_Solo_Apache_16.txt",
"X1A_Solo_Apache_16.txt",
"X1A_Solo_Nod_Chinook_16.txt",
"X1A_Solo_Nod_Chinook_16.txt",
"X1A_Solo_Nod_Chinook_16.txt",
"X1A_Solo_Nod_Chinook_16.txt",
"X1A_Solo_Nod_Chinook_16.txt",
"X1A_Solo_Nod_Chinook_16.txt",
"X1A_Solo_Nod_Chinook_16.txt",
"X1A_Solo_Nod_Chinook_16.txt",
"X1A_Solo_Nod_Chinook_16.txt",
"X1A_Solo_Nod_Chinook_16.txt",
"X1A_Solo_GDI_Chinook_16.txt",
"X1A_Solo_NodCargo_16.txt",
"X1A_Solo_A10_16.txt",
//this is a flyover at nod base it goes from guard tower 01 to the comm center S-N
"X1A_Solo_Orca_17.txt",
"X1A_Solo_Apache_17.txt",
"X1A_Solo_Apache_17.txt",
"X1A_Solo_Apache_17.txt",
"X1A_Solo_Apache_17.txt",
"X1A_Solo_Apache_17.txt",
"X1A_Solo_Apache_17.txt",
"X1A_Solo_Apache_17.txt",
"X1A_Solo_Apache_17.txt",
"X1A_Solo_Apache_17.txt",
"X1A_Solo_Apache_17.txt",
"X1A_Solo_Nod_Chinook_17.txt",
"X1A_Solo_Nod_Chinook_17.txt",
"X1A_Solo_Nod_Chinook_17.txt",
"X1A_Solo_Nod_Chinook_17.txt",
"X1A_Solo_Nod_Chinook_17.txt",
"X1A_Solo_Nod_Chinook_17.txt",
"X1A_Solo_Nod_Chinook_17.txt",
"X1A_Solo_Nod_Chinook_17.txt",
"X1A_Solo_Nod_Chinook_17.txt",
"X1A_Solo_Nod_Chinook_17.txt",
"X1A_Solo_GDI_Chinook_17.txt",
"X1A_Solo_NodCargo_17.txt",
"X1A_Solo_A10_17.txt",
};
int random = Commands->Get_Random_Int(0, 48);
while (random == last) {
random = Commands->Get_Random_Int(0, 48);
}
GameObject *controller = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(controller, "Test_Cinematic", flyovers[random]);
float delayTimer = Commands->Get_Random ( 30, 60 );
Commands->Start_Timer(obj, this, delayTimer, 0);
last = random;
}
};
DECLARE_SCRIPT(M01_FP_GDIOcean_NorthSouth_Contoller_JDG, "")
{
int last;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(last, 1);
}
void Created(GameObject * obj)
{
Commands->Start_Timer(obj, this, 60.0f, 0);
last = 21;
}
void Timer_Expired(GameObject * obj, int timer_id)
{
char *flyovers[28] =
{
//this is a GDI ocean traffic lane N->S
"X1A_Solo_Orca_18.txt",
"X1A_Solo_Orca_18.txt",
"X1A_Solo_Orca_18.txt",
"X1A_Solo_Orca_18.txt",
"X1A_Solo_Orca_18.txt",
"X1A_Solo_Apache_18.txt",
"X1A_Solo_Nod_Chinook_18.txt",
"X1A_Solo_GDI_Chinook_18.txt",
"X1A_Solo_GDI_Chinook_18.txt",
"X1A_Solo_GDI_Chinook_18.txt",
"X1A_Solo_GDI_Chinook_18.txt",
"X1A_Solo_GDI_Chinook_18.txt",
"X1A_Solo_NodCargo_18.txt",
"X1A_Solo_A10_18.txt",
//this is a GDI ocean traffic lane N->S
"X1A_Solo_Orca_19.txt",
"X1A_Solo_Orca_19.txt",
"X1A_Solo_Orca_19.txt",
"X1A_Solo_Orca_19.txt",
"X1A_Solo_Orca_19.txt",
"X1A_Solo_Apache_19.txt",
"X1A_Solo_Nod_Chinook_19.txt",
"X1A_Solo_GDI_Chinook_19.txt",
"X1A_Solo_GDI_Chinook_19.txt",
"X1A_Solo_GDI_Chinook_19.txt",
"X1A_Solo_GDI_Chinook_19.txt",
"X1A_Solo_GDI_Chinook_19.txt",
"X1A_Solo_NodCargo_19.txt",
"X1A_Solo_A10_19.txt",
};
int random = Commands->Get_Random_Int(0, 28);
while (random == last) {
random = Commands->Get_Random_Int(0, 28);
}
GameObject *controller = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(controller, "Test_Cinematic", flyovers[random]);
float delayTimer = Commands->Get_Random ( 30, 60 );
Commands->Start_Timer(obj, this, delayTimer, 0);
last = random;
}
};
DECLARE_SCRIPT(M01_FP_GDIOcean_SouthNorth_Contoller_JDG, "")
{
int last;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(last, 1);
}
void Created(GameObject * obj)
{
Commands->Start_Timer(obj, this, 60.0f, 0);
last = 21;
}
void Timer_Expired(GameObject * obj, int timer_id)
{
char *flyovers[26] =
{
//this is a GDI ocean traffic lane S->N
"X1A_Solo_Orca_20.txt",
"X1A_Solo_Orca_20.txt",
"X1A_Solo_Orca_20.txt",
"X1A_Solo_Orca_20.txt",
"X1A_Solo_Orca_20.txt",
"X1A_Solo_Apache_20.txt",
"X1A_Solo_Nod_Chinook_20.txt",
"X1A_Solo_GDI_Chinook_20.txt",
"X1A_Solo_GDI_Chinook_20.txt",
"X1A_Solo_GDI_Chinook_20.txt",
"X1A_Solo_GDI_Chinook_20.txt",
"X1A_Solo_GDI_Chinook_20.txt",
"X1A_Solo_A10_20.txt",
//this is a GDI ocean traffic lane S->N
"X1A_Solo_Orca_21.txt",
"X1A_Solo_Orca_21.txt",
"X1A_Solo_Orca_21.txt",
"X1A_Solo_Orca_21.txt",
"X1A_Solo_Orca_21.txt",
"X1A_Solo_Apache_21.txt",
"X1A_Solo_Nod_Chinook_21.txt",
"X1A_Solo_GDI_Chinook_21.txt",
"X1A_Solo_GDI_Chinook_21.txt",
"X1A_Solo_GDI_Chinook_21.txt",
"X1A_Solo_GDI_Chinook_21.txt",
"X1A_Solo_GDI_Chinook_21.txt",
"X1A_Solo_A10_21.txt",
};
int random = Commands->Get_Random_Int(0, 26);
while (random == last) {
random = Commands->Get_Random_Int(0, 26);
}
GameObject *controller = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(controller, "Test_Cinematic", flyovers[random]);
float delayTimer = Commands->Get_Random ( 30, 60 );
Commands->Start_Timer(obj, this, delayTimer, 0);
last = random;
}
};
DECLARE_SCRIPT(M01_Deco_LightTanks_JDG, "")//119424 119426 119425
{
void Created( GameObject * obj )
{
Vector3 myTarget (-27.746f, 52.823f, 1.071f);
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_START_ATTACKING_01_JDG);
params.Set_Attack( myTarget, 100, 3, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack (obj, params);
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ATTACKING_01_JDG)
{
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_START_ATTACKING_01_JDG);
params.Set_Attack( STAR, 100, 8, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack (obj, params);
}
else if (param == M01_START_ATTACKING_02_JDG)
{
if (obj)
{
Commands->Apply_Damage( obj, 10000, "BlamoKiller", NULL );
}
}
}
}
};
DECLARE_SCRIPT(M01_Airstrike_Controller_JDG, "")//121041
{
int decoTank01_id;
int decoTank02_id;
int decoTank03_id;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(decoTank01_id, 1);
SAVE_VARIABLE(decoTank02_id, 2);
SAVE_VARIABLE(decoTank03_id, 3);
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == 0)//airstrike text file is sendyou the command to play explosions
{
GameObject * realtank = Commands->Find_Object ( 120022 );
if (realtank != NULL)
{
Commands->Send_Custom_Event( obj, realtank, 0, M01_START_ATTACKING_01_JDG, 0.5f );
}
GameObject * tank01 = Commands->Find_Object ( decoTank01_id );
GameObject * tank02 = Commands->Find_Object ( decoTank02_id );
GameObject * tank03 = Commands->Find_Object ( decoTank03_id );
if (tank01 != NULL)
{
Commands->Send_Custom_Event( obj, tank01, 0, M01_START_ATTACKING_02_JDG, 0.5f );
}
if (tank02 != NULL)
{
Commands->Send_Custom_Event( obj, tank02, 0, M01_START_ATTACKING_02_JDG, 0.75f );
}
if (tank03 != NULL)
{
Commands->Send_Custom_Event( obj, tank03, 0, M01_START_ATTACKING_02_JDG, 1.0f );
}
}
else if (param == M01_START_ACTING_JDG)
{
Vector3 tank01Spot (-12.175f, 68.280f, 3.009f);
Vector3 tank02Spot (-14.948f, 61.305f, 3.259f);
Vector3 tank03Spot (-22.011f, 66.635f, 2.959f);
GameObject * decoTank01 = Commands->Create_Object ( "Nod_Light_Tank_Dec", tank01Spot );
Commands->Set_Facing ( decoTank01, -145 );
GameObject * decoTank02 = Commands->Create_Object ( "Nod_Light_Tank_Dec", tank02Spot );
Commands->Set_Facing ( decoTank02, -150 );
GameObject * decoTank03 = Commands->Create_Object ( "Nod_Light_Tank_Dec", tank03Spot );
Commands->Set_Facing ( decoTank03, -115 );
Commands->Attach_Script(decoTank01, "M01_Deco_LightTanks_JDG", "");
Commands->Attach_Script(decoTank02, "M01_Deco_LightTanks_JDG", "");
Commands->Attach_Script(decoTank03, "M01_Deco_LightTanks_JDG", "");
decoTank01_id = Commands->Get_ID ( decoTank01 );
decoTank02_id = Commands->Get_ID ( decoTank02 );
decoTank03_id = Commands->Get_ID ( decoTank03 );
}
else if (param == M01_START_ATTACKING_01_JDG)
{
GameObject * tank01 = Commands->Find_Object ( decoTank01_id );
GameObject * tank02 = Commands->Find_Object ( decoTank02_id );
GameObject * tank03 = Commands->Find_Object ( decoTank03_id );
if (tank01 != NULL)
{
Commands->Send_Custom_Event( obj, tank01, 0, M01_START_ATTACKING_01_JDG, 0.5f );
}
if (tank02 != NULL)
{
Commands->Send_Custom_Event( obj, tank02, 0, M01_START_ATTACKING_01_JDG, 0.5f );
}
if (tank03 != NULL)
{
Commands->Send_Custom_Event( obj, tank03, 0, M01_START_ATTACKING_01_JDG, 0.5f );
}
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ATTACKING_01_JDG, 0 );
GameObject * chinook_obj3 = Commands->Create_Object ( "Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(chinook_obj3, "Test_Cinematic", "X1G_A-10_Strike.txt");
}
}
}
};
DECLARE_SCRIPT(M01_GDIBase_RealLightTank_JDG, "")//120022
{//waypath 120218
void Killed( GameObject * obj, GameObject * killer )
{
//int airdrop_conv = Commands->Create_Conversation( "M01_AirDrop_Conversation", 100, 1000, false);
//Commands->Join_Conversation( NULL, airdrop_conv, false, false );
//Commands->Start_Conversation( airdrop_conv, airdrop_conv );
}
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_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Vector3(0,0,0), .7f, 10 );
params.WaypathID = 120218;
//params.AttackActive = false;
Commands->Action_Goto( obj, params );
GameObject * airstrikeController = Commands->Find_Object ( 121041 );
if (airstrikeController != NULL)
{
Commands->Send_Custom_Event( obj, airstrikeController, 0, M01_START_ACTING_JDG, 0 );
Commands->Send_Custom_Event( obj, airstrikeController, 0, M01_MODIFY_YOUR_ACTION_JDG, 15 );
}
}
else if (param == M01_START_ATTACKING_01_JDG)
{
if (obj)
{
Commands->Apply_Damage( obj, 10000, "BlamoKiller", NULL );
}
}
}
}
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 )
{
params.Set_Basic(this, 100, M01_START_ATTACKING_01_JDG);
params.Set_Attack( STAR, 100, 10, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack (obj, params);
//Commands->Send_Custom_Event( obj, obj, 0, M01_START_ATTACKING_02_JDG, 4 );
}
}
}
};
DECLARE_SCRIPT(M01_RealLightTank_TriggerZone_JDG, "")
{
bool entered;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(entered, 1);
}
void Created( GameObject * obj )
{
entered = false;
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (entered == false)
{
if (enterer == STAR)
{
entered = true;
GameObject * lightTank = Commands->Find_Object ( 120022 );//00-N036E
if (lightTank != NULL)
{
Commands->Send_Custom_Event( obj, lightTank, 0, M01_START_ACTING_JDG, 0 );
//Commands->Create_2D_Sound ( "00-N036E" );
}
}
}
}
};
DECLARE_SCRIPT(M01_First_AutoRifle_JDG, "")
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ( type == CUSTOM_EVENT_POWERUP_GRANTED )
{
int pressEnterConv = Commands->Create_Conversation( "M01_Press_Enter_Conversation", 100, 1000, true);
Commands->Join_Conversation( NULL, pressEnterConv, false, false );
Commands->Start_Conversation( pressEnterConv, pressEnterConv );
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0520I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
}
};
DECLARE_SCRIPT(M01_Announce_First_ObjectiveZone_JDG, "")//116380
{
void Created( GameObject * obj )
{
int pressF1Conv = Commands->Create_Conversation( "M01_Press_F1_Conversation", 100, 1000, true);
Commands->Join_Conversation( NULL, pressF1Conv, false, false );
Commands->Start_Conversation( pressF1Conv, pressF1Conv );
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0515I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
GameObject * chinook_obj3 = Commands->Create_Object ( "Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(chinook_obj3, "Test_Cinematic", "X1H_Hover_Troop.txt");
}
void Entered( GameObject * obj, GameObject * enterer ) //M01_Press_F1_Conversation
{
if (enterer == STAR)
{
GameObject * pogController = Commands->Find_Object ( M01_MISSION_POG_CONTROLLER_JDG );
if (pogController != NULL)
{
Commands->Send_Custom_Event( obj, pogController, 0, M01_GDI_BASE_COMMANDER_OBJECTIVE_JDG, 0 );
}
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_SniperRifle_01_JDG, "")//on powerplant
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ( type == CUSTOM_EVENT_POWERUP_GRANTED )
{
GameObject * c4TextController = Commands->Find_Object ( 117188 );
if (c4TextController != NULL)
{
Commands->Send_Custom_Event( obj, c4TextController, 2, 1, 0 );
}
GameObject * sniperTarget01 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3(-53.217f, -68.049f, 13.701f));
Commands->Attach_Script(sniperTarget01, "M01_SniperRifle_01_Target_JDG", "");
}
}
};
DECLARE_SCRIPT(M01_SniperRifle_01_Target_JDG, "")//on lighthouse
{
void Created( GameObject * obj )
{
Commands->Attach_Script(obj, "M00_Soldier_Powerup_Disable", "");
Commands->Enable_Hibernation( obj, false );
ActionParamsStruct params;
params.Set_Basic(this, 90, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Vector3(0,0,0), WALK, .25f );
params.WaypathID = 118434;
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 )
{
Commands->Enable_Hibernation( obj, true );
Commands->Set_Innate_Is_Stationary ( obj, true );
}
}
}
};
DECLARE_SCRIPT(M01_SniperRifle_02_JDG, "")//in guard tower 01
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ( type == CUSTOM_EVENT_POWERUP_GRANTED )
{
GameObject * c4TextController = Commands->Find_Object ( 117188 );
if (c4TextController != NULL)
{
Commands->Send_Custom_Event( obj, c4TextController, 2, 1, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_SniperRifle_02_AirdropZone_JDG, "")//in guard tower 01
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
Commands->Create_Sound ( "M01EVAG_DSGN0268I1EVAG_SND", Vector3 (0,0,0), obj );//enemy aircraft detected
GameObject * chinook_obj3 = Commands->Create_Object ( "Invisible_Object", Vector3(-12.031f, -42.150f, -1.252f));
Commands->Set_Facing(chinook_obj3, -45.0f);
Commands->Attach_Script(chinook_obj3, "Test_Cinematic", "X1I_GDIBasePrimaryNodChinook.txt");
Commands->Destroy_Object (obj );
}
}
};
DECLARE_SCRIPT(M01_C4_TutorialScript_JDG, "")//
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ( type == CUSTOM_EVENT_POWERUP_GRANTED )
{
GameObject * c4TextController = Commands->Find_Object ( 117188 );
if (c4TextController != NULL)
{
Commands->Send_Custom_Event( obj, c4TextController, 1, 1, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_Use_Ladder_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer ) //M01_Press_F1_Conversation
{
if (enterer == STAR)
{
int pressF1Conv = Commands->Create_Conversation( "M01_Press_E_For_Ladders_Conversation", 100, 1000, true);
Commands->Join_Conversation( NULL, pressF1Conv, false, false );
Commands->Start_Conversation( pressF1Conv, pressF1Conv );
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0514I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
}
};
DECLARE_SCRIPT(M01_AccessDenied_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer ) //M01_Press_F1_Conversation
{
if (enterer == STAR)
{
int pressF1Conv = Commands->Create_Conversation( "M01_Lockdown_Conversation", 100, 1000, true);
Commands->Join_Conversation( NULL, pressF1Conv, false, false );
Commands->Start_Conversation( pressF1Conv, pressF1Conv );
//Commands->Set_HUD_Help_Text ( IDS_M00EVAG_DSGN0039I1EVAG_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
}
}
};
DECLARE_SCRIPT(M01_GDIBase_FirstChinookMinigunnerGuy_JDG, "")
{
void Created( GameObject * obj )
{
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
}
};
DECLARE_SCRIPT(M01_QuickSave_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0525I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_GDIBaseCommander_Air_Evac_Chopper_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV5_trnsA", false );
Commands->Debug_Message ( "**********************script attached to evac chopper\n" );
Commands->Set_Shield_Type ( obj, "Blamo" );
Commands->Enable_Hibernation( obj, false );
Commands->Disable_Physical_Collisions ( obj );
Commands->Send_Custom_Event ( obj, obj, 0, M01_GOTO_IDLE_JDG, 3 );
GameObject * myController = Commands->Find_Object ( 106694 );
if (myController != NULL)
{
Commands->Send_Custom_Event ( obj, myController, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 0 );
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
float myMaxHealth = Commands->Get_Max_Health ( obj );
Commands->Set_Health ( obj, myMaxHealth );
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "v_GDI_trnspt.XG_EV5_trnsA") == 0)
{
Commands->Debug_Message ( "**********************chopper has finished entry anim\n" );
Vector3 evacLocation = Commands->Get_Position ( obj );
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV5_trnsL", true );
GameObject * gdiBaseCommander = Commands->Find_Object ( 106050 );
if (gdiBaseCommander != NULL)
{
Commands->Send_Custom_Event( obj, gdiBaseCommander, 0, M01_GOING_TO_EVAC_SPOT_JDG, 0 );
}
GameObject * gdiBaseMinigunner = Commands->Find_Object ( 116382 );
if (gdiBaseMinigunner != NULL)
{
Commands->Send_Custom_Event( obj, gdiBaseMinigunner, 0, M01_GOING_TO_EVAC_SPOT_JDG, 3 );
}
GameObject * gdiBaseGrenadier = Commands->Find_Object ( 116383 );
if (gdiBaseGrenadier != NULL)
{
Commands->Send_Custom_Event( obj, gdiBaseGrenadier, 0, M01_GOING_TO_EVAC_SPOT_JDG, 6 );
}
Commands->Send_Custom_Event ( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 2 );
}
else if (stricmp(anim, "v_GDI_trnspt.XG_EV5_trnsz") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Debug_Message ( "*******************************helicopter has received custom to goto exit anim\n" );
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV5_trnsz", false );
}
break;
case M01_GOTO_IDLE_JDG:
{
Commands->Enable_Collisions ( obj );
}
break;
case M01_DO_END_MISSION_CHECK_JDG:
{
GameObject * gdiBaseCommander = Commands->Find_Object ( 106050 );
GameObject * gdiBaseMinigunner = Commands->Find_Object ( 116382 );
GameObject * gdiBaseGrenadier = Commands->Find_Object ( 116383 );
if ((gdiBaseCommander != NULL) || (gdiBaseMinigunner != NULL) || (gdiBaseGrenadier != NULL))
{
Commands->Send_Custom_Event ( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 1 );
}
else
{
GameObject * controller = Commands->Find_Object ( 106694 );
if (controller != NULL)
{
Commands->Send_Custom_Event ( obj, controller, 0, M01_MODIFY_YOUR_ACTION_02_JDG, 0 );
}
}
}
break;
}
}
};
DECLARE_SCRIPT(M01_GDIBaseCommander_EvacController_JDG, "")//106694
{
bool evacing;
int evac_waypath_id;
int evac_helicopter_id;
int evac_rope_id;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(evacing, 1);
SAVE_VARIABLE(evac_waypath_id, 2);
SAVE_VARIABLE(evac_helicopter_id, 3);
SAVE_VARIABLE(evac_rope_id, 4);
}
void Created( GameObject * obj )
{
evacing = false;
Commands->Enable_Hibernation( obj, false );
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (type == 0)//
{
if (param == M01_START_ACTING_JDG)//gdi commander is done giving ion beacon--start evac scenario
{
GameObject * gdiBaseCommander = Commands->Find_Object ( 106050 );
GameObject * gdiBaseMinigunner = Commands->Find_Object ( 116382 );
GameObject * gdiBaseGrenadier = Commands->Find_Object ( 116383 );
if (gdiBaseCommander != NULL)
{
Commands->Send_Custom_Event( obj, gdiBaseCommander, 0, M01_GOTO_YOUR_EVAC_SPOT_JDG, 0 );
}
if (gdiBaseMinigunner != NULL)
{
Commands->Send_Custom_Event( obj, gdiBaseMinigunner, 0, M01_GOTO_YOUR_EVAC_SPOT_JDG, 0 );
}
if (gdiBaseGrenadier != NULL)
{
Commands->Send_Custom_Event( obj, gdiBaseGrenadier, 0, M01_GOTO_YOUR_EVAC_SPOT_JDG, 0 );
}
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG && evacing == false)//one of your guys is at his wait spot--call in chopper
{
evacing = true;
Vector3 evacPosition = Commands->Get_Position ( obj );
GameObject *controller = Commands->Create_Object("Invisible_Object", evacPosition);
Commands->Attach_Script(controller, "Test_Cinematic", "XG_M01_GDIBaseCommander_EvacAnim.txt");
}
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG && evacing == true)//everyone is on or dead--give take off orders
{
GameObject * evacChopper = Commands->Find_Object ( evac_helicopter_id );
GameObject * evacWaypath = Commands->Find_Object ( evac_waypath_id );
GameObject * evacRope = Commands->Find_Object ( evac_rope_id );
if (evacChopper != NULL)
{
Commands->Debug_Message ( "**********************sending custom to chopper to leave.....%d\n",evac_helicopter_id );
Commands->Send_Custom_Event ( obj, evacChopper, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
if (evacWaypath != NULL)
{
Commands->Debug_Message ( "**********************sending custom to waypath to leave.....%d\n",evac_waypath_id );
Commands->Send_Custom_Event ( obj, evacWaypath, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
if (evacRope != NULL)
{
Commands->Debug_Message ( "**********************sending custom to rope to leave.....%d\n",evac_rope_id );
Commands->Send_Custom_Event ( obj, evacRope, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
}
else if (param == M01_MODIFY_YOUR_ACTION_03_JDG)//chopper is sending you his ID
{
evac_helicopter_id = Commands->Get_ID ( sender );
Commands->Debug_Message ( "**********************chopper id received.....%d\n",evac_helicopter_id );
}
else if (param == M01_MODIFY_YOUR_ACTION_04_JDG)//waypath is sending you his ID
{
evac_waypath_id = Commands->Get_ID ( sender );
Commands->Debug_Message ( "**********************waypath id received.....%d\n", evac_waypath_id );
}
else if (param == M01_MODIFY_YOUR_ACTION_05_JDG)//rope is sending you his ID
{
evac_rope_id = Commands->Get_ID ( sender );
Commands->Debug_Message ( "**********************rope id received.....%d\n", evac_rope_id );
}
else if (param == M01_GIVE_ME_A_ROPE_JDG)//someone is waiting--pull him up
{
Vector3 evacPosition = Commands->Get_Position ( obj );
GameObject * troopbone = Commands->Create_Object("Invisible_Object", evacPosition );
Commands->Set_Model ( troopbone, "XG_EV5_troopBN" );
Commands->Attach_Script(troopbone, "M01_Evac_TroopBone_JDG", "");
Commands->Innate_Disable(sender);
Commands->Attach_To_Object_Bone( sender, troopbone, "Troop_L" );
if(troopbone)
{
Commands->Set_Animation ( troopbone, "XG_EV5_troopBN.XG_EV5_troopBN", false);
}
else
{
Commands->Debug_Message("troopbone not created yet");
}
Commands->Set_Animation ( sender, "S_A_Human.XG_EV5_troop", false );
}
}
}
};
DECLARE_SCRIPT(M01_Base_Nod_Minigunner_JDG, "")//116384
{
void Created( GameObject * obj )
{
Commands->Set_Innate_Is_Stationary ( obj, true );
}
};
DECLARE_SCRIPT(M01_POW_Nod_Minigunner01_JDG, "")//116388
{
void Created( GameObject * obj )
{
Commands->Set_Innate_Is_Stationary ( obj, true );
}
void Killed( GameObject * obj, GameObject * killer )
{
GameObject * pow01 = Commands->Find_Object ( 116386 );
if (pow01 != NULL)
{
Commands->Send_Custom_Event( obj, pow01, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_GDIBase_POWEncounter02_Controller_JDG, "")//M01_GDIBASE_POWSCENE02_MONITOR_JDG 103331
{
bool transportCalled;
bool powGuy01isDead;
bool powGuy02isDead;
bool objective_failed;
int evac_waypath_id;
int evac_helicopter_id;
int evac_rope_id;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(transportCalled, 1);
SAVE_VARIABLE(powGuy01isDead, 2);
SAVE_VARIABLE(powGuy02isDead, 3);
SAVE_VARIABLE(objective_failed, 4);
SAVE_VARIABLE(evac_waypath_id, 5);
SAVE_VARIABLE(evac_helicopter_id, 6);
SAVE_VARIABLE(evac_rope_id, 7);
}
void Created( GameObject * obj )
{
powGuy01isDead = false;
powGuy02isDead = false;
objective_failed = false;
transportCalled = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (param == M01_IVE_BEEN_KILLED_JDG)//one of the gt1 guys has been killed..see who it is
{
GameObject * pow01 = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_POWGUY01_JDG );
GameObject * pow02 = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_POWGUY02_JDG );
if (sender == pow01)
{
powGuy01isDead = true;
}
if (sender == pow02)
{
powGuy02isDead = true;
}
if (powGuy01isDead == true && powGuy02isDead == true)
{
Commands->Set_Objective_Status( M01_GDI_BASE_POW_OBJECTIVE_JDG, OBJECTIVE_STATUS_FAILED );
objective_failed = true;
}
}
else if (param == M01_CHOPPER_IS_SENDING_ID_JDG)//chopper is sending you his ID
{
evac_helicopter_id = Commands->Get_ID ( sender );
//Commands->Debug_Message ( "**********************chopper id received.....%d\n",evac_helicopter_id );
}
else if (param == M01_WAYPATH_IS_SENDING_ID_JDG)//waypath is sending you his ID
{
evac_waypath_id = Commands->Get_ID ( sender );
//Commands->Debug_Message ( "**********************waypath id received.....%d\n", evac_waypath_id );
}
else if (param == M01_ROPE_IS_SENDING_ID_JDG)//rope is sending you his ID
{
evac_rope_id = Commands->Get_ID ( sender );
//Commands->Debug_Message ( "**********************rope id received.....%d\n", evac_rope_id );
}
else if (param == M01_GIVE_ME_A_ROPE_JDG)//someone is waiting--pull him up
{
Vector3 evacPosition = Commands->Get_Position ( obj );
GameObject * troopbone = Commands->Create_Object("Invisible_Object", evacPosition );
Commands->Set_Model ( troopbone, "XG_EV5_troopBN" );
Commands->Attach_Script(troopbone, "M01_Evac_TroopBone_JDG", "");
Commands->Innate_Disable(sender);
Commands->Attach_To_Object_Bone( sender, troopbone, "Troop_L" );
if(troopbone)
{
Commands->Set_Animation ( troopbone, "XG_EV5_troopBN.XG_EV5_troopBN", false);
}
else
{
Commands->Debug_Message("troopbone not created yet");
}
Commands->Set_Animation ( sender, "S_A_Human.XG_EV5_troop", false );
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG)//a gdi guy is waiting for evac--call in a helicopter
{
if (transportCalled == false)
{
transportCalled = true;
Vector3 evacPosition = Commands->Get_Position ( obj );
GameObject *controller = Commands->Create_Object("Invisible_Object", evacPosition);
Commands->Attach_Script(controller, "Test_Cinematic", "XG_M01_GDIBasePow_EvacAnim.txt");
}
}
else if (param == M01_MODIFY_YOUR_ACTION_05_JDG)//chinook is ready to go--give clearance
{
GameObject *evacWaypath = Commands->Find_Object ( evac_waypath_id );
if (evacWaypath != NULL)
{
Commands->Send_Custom_Event( obj, evacWaypath, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
GameObject *evacChopper = Commands->Find_Object ( evac_helicopter_id );
if (evacChopper != NULL)
{
Commands->Send_Custom_Event( obj, evacChopper, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
GameObject *evacRope = Commands->Find_Object ( evac_rope_id );
if (evacChopper != NULL)
{
Commands->Send_Custom_Event( obj, evacRope, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
if (objective_failed != true)
{
Commands->Set_Objective_Status( M01_GDI_BASE_POW_OBJECTIVE_JDG, OBJECTIVE_STATUS_ACCOMPLISHED );
}
}
}
};
DECLARE_SCRIPT(M01_GDIBasePOW_Air_Evac_Chopper_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV5_trnsA", false );
Commands->Debug_Message ( "**********************script attached to evac chopper\n" );
Commands->Set_Shield_Type ( obj, "Blamo" );
Commands->Enable_Hibernation( obj, false );
Commands->Disable_Physical_Collisions ( obj );
Commands->Send_Custom_Event ( obj, obj, 0, M01_GOTO_IDLE_JDG, 3 );
GameObject * myController = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_MONITOR_JDG );
if (myController != NULL)
{
Commands->Send_Custom_Event ( obj, myController, 0, M01_CHOPPER_IS_SENDING_ID_JDG, 0 );
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
float myMaxHealth = Commands->Get_Max_Health ( obj );
Commands->Set_Health ( obj, myMaxHealth );
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "v_GDI_trnspt.XG_EV5_trnsA") == 0)
{
Commands->Debug_Message ( "**********************chopper has finished entry anim\n" );
Vector3 evacLocation = Commands->Get_Position ( obj );
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV5_trnsL", true );
GameObject * gdiGuy01 = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_POWGUY01_JDG );
GameObject * gdiGuy02 = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_POWGUY02_JDG );
if (gdiGuy01 != NULL)
{
Commands->Send_Custom_Event ( obj, gdiGuy01, 0, M01_GOING_TO_EVAC_SPOT02_JDG, 3 );
}
if (gdiGuy02 != NULL)
{
Commands->Send_Custom_Event ( obj, gdiGuy02, 0, M01_GOING_TO_EVAC_SPOT02_JDG, 0 );
}
Commands->Send_Custom_Event ( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 2 );
}
else if (stricmp(anim, "v_GDI_trnspt.XG_EV5_trnsz") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
switch (param)
{
case M01_MODIFY_YOUR_ACTION_JDG:
{
Commands->Debug_Message ( "*******************************helicopter has received custom to goto exit anim\n" );
Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV5_trnsz", false );
}
break;
case M01_GOTO_IDLE_JDG:
{
Commands->Enable_Collisions ( obj );
}
break;
case M01_DO_END_MISSION_CHECK_JDG:
{
GameObject * gdiGuy01 = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_POWGUY01_JDG );
GameObject * gdiGuy02 = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_POWGUY02_JDG );
if ((gdiGuy01 != NULL)||(gdiGuy02 != NULL))
{
Commands->Send_Custom_Event ( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 2 );
}
else
{
GameObject * controller = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_MONITOR_JDG );
if (controller != NULL)
{
Commands->Send_Custom_Event ( obj, controller, 0, M01_MODIFY_YOUR_ACTION_05_JDG, 0 );
}
}
}
break;
}
}
};
DECLARE_SCRIPT(M01_ConDropZone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject *controller1 = Commands->Create_Object("Invisible_Object", Vector3(54.835f, -3.011f, 13.105f));
Commands->Set_Facing ( controller1, 45 );
Commands->Attach_Script(controller1, "Test_Cinematic", "X01_ConYardDrop.txt");
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_ConYard_Dropoff_Dude_JDG, "")
{
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.H_A_TroopDrop") == 0)
{
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_C130_Dropoff_Dude_JDG, "")
{
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_a_Human.H_A_X5D_ParaT_1") == 0)
{
Commands->Destroy_Object ( obj );
}
else if (stricmp(anim, "S_a_Human.H_A_X5D_ParaT_2") == 0)
{
Commands->Destroy_Object ( obj );
}
else if (stricmp(anim, "S_a_Human.H_A_X5D_ParaT_3") == 0)
{
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_Base_GDI_Fodder_JDG, "")
{
void Created( GameObject * obj )
{
Vector3 myTarget (72.223f, -24.751f, -0.296f);
ActionParamsStruct params;
Commands->Set_Innate_Is_Stationary ( obj, true );
params.Set_Basic( this, 100, M01_START_ACTING_JDG );
params.Set_Attack( myTarget, 1000, 0, true );
params.AttackCrouched = true;
params.AttackCheckBlocked = false;
Commands->Action_Attack (obj, params);
float delayTimer = Commands->Get_Random ( 10, 15 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, delayTimer );//kill yourself
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (type == 0)
{
if (param == M01_MODIFY_YOUR_ACTION_JDG)//kill yourself
{
Commands->Apply_Damage( obj, 10000, "BlamoKiller", NULL );
}
}
}
};
DECLARE_SCRIPT(M01_Base_StartZone_JDG, "")//119628
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject * minigunner = Commands->Find_Object ( 116382 );
GameObject * grenadier = Commands->Find_Object ( 116383 );
if (minigunner != NULL)
{
Commands->Send_Custom_Event( obj, minigunner, 0, M01_START_ATTACKING_01_JDG, 0 );//tell minigunner to greet havoc
}
if (grenadier != NULL)
{
Commands->Send_Custom_Event( obj, grenadier, 0, M01_START_ATTACKING_01_JDG, 0 );//tell grenadier to greet havoc
}
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_Nod_Truck_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Set_Player_Type ( obj, SCRIPT_PLAYERTYPE_NEUTRAL );
Commands->Set_Obj_Radar_Blip_Color ( obj, RADAR_BLIP_COLOR_NOD );
}
};
DECLARE_SCRIPT(M01_C4_Tutorial_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject * c4TextController = Commands->Find_Object ( 117188 );
if (c4TextController != NULL)
{
Commands->Send_Custom_Event( obj, c4TextController, 1, 1, 0 );
}
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_Mainframe_Tutorial_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0527I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_GateSwitch_Tutorial_Zone_JDG, "")//120844
{
bool command_clearance;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(command_clearance, 1);
}
void Created( GameObject * obj )
{
command_clearance = false;
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR && command_clearance == true)
{
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0528I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ACTING_JDG)
{
command_clearance = true;
}
}
}
};
DECLARE_SCRIPT(M01_BarnArea_NOD_Commander_Trigger_Zone02_JDG, "")//103343
{
bool entered;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(entered, 1);
}
void Created( GameObject * obj )
{
entered = false;
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR && entered == false)
{
entered = true;
GameObject * firstFieldCommander = Commands->Find_Object (M01_BARNAREA_NOD_COMMANDER_JDG);
if (firstFieldCommander != NULL)
{
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_BARNAREA_NOD_COMMANDER_JDG ), 0, M01_START_ACTING_JDG, 0 );
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_ADD_BARN_COMMANDER_OBJECTIVE_JDG, 5 );
}
}
}
};
DECLARE_SCRIPT(M01_TurretBeach_Turret_01_Script_JDG, "")//M01_TURRETBEACH_TURRET_01_ID 101434
{
int engineer_id;
int fodderHovercraft_ID;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(engineer_id, 1);
SAVE_VARIABLE(fodderHovercraft_ID, 2);
}
void Created( GameObject * obj )
{
engineer_id = M01_TURRETBEACH_ENGINEER_ID;
}
void Killed( GameObject * obj, GameObject * killer ) //M01_IVE_BEEN_KILLED_JDG
{
GameObject * pogController = Commands->Find_Object ( M01_MISSION_POG_CONTROLLER_JDG );
if (pogController != NULL)
{
Commands->Send_Custom_Event( obj, pogController, M01_CHANGE_OBJECTIVE_POG_JDG, M01_TURRETS_OBJECTIVE_JDG, 0 );
}
GameObject * turretEngineer = Commands->Find_Object ( engineer_id );
if (turretEngineer != NULL)
{
Commands->Send_Custom_Event( obj, turretEngineer, 0, M01_TURRET_HAS_BEEN_DESTROYED_JDG, 0 );
}
Commands->Send_Custom_Event( obj, Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG ), 0, M01_TURRET_HAS_BEEN_DESTROYED_JDG, 5 );
Vector3 myPositon = Commands->Get_Position ( obj );
float myFacing = Commands->Get_Facing ( obj );
GameObject * destroyedTurret = Commands->Create_Object ( "Nod_Turret_Destroyed", myPositon);
Commands->Set_Facing ( destroyedTurret, myFacing );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (obj)
{
GameObject * turretEngineer = Commands->Find_Object ( engineer_id );
if (damager != NULL && damager == turretEngineer)
{
float myMaxHealth = Commands->Get_Max_Health ( obj );
Commands->Set_Health ( obj, myMaxHealth );
}
else if (turretEngineer != NULL)
{
Commands->Send_Custom_Event( obj, turretEngineer, 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 0 );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ACTING_JDG)
{
GameObject * gunboat = Commands->Find_Object ( M01_TURRETBEACH_GUNBOAT_ID );
if (gunboat != NULL)
{
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_START_ACTING_JDG);
params.Set_Attack( gunboat, 3000, 3, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
}
}
else if (param == M01_BUSY_TRY_AGAIN_JDG)//engineer is busy--call back in 2 seconds
{
GameObject * turretEngineer = Commands->Find_Object ( engineer_id );
if (turretEngineer != NULL)
{
Commands->Send_Custom_Event( obj, turretEngineer, 0, M01_PLAYER_IS_ATTACKING_ME_JDG, 1 );
}
}
else if (param == M01_CHOPPER_IS_SENDING_ID_JDG)//new engineer is actually sending id
{
engineer_id = Commands->Get_ID ( sender );
}
}
else if (type == M01_FODDER_HOVERCRAFT_IS_HERE)
{
fodderHovercraft_ID = param;
GameObject * fodderHovercraft = Commands->Find_Object ( fodderHovercraft_ID );
if (fodderHovercraft != NULL)
{
Commands->Action_Reset ( obj, 100 );
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_START_ATTACKING_01_JDG);
params.Set_Attack( fodderHovercraft, 3000, 0, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
}
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
ActionParamsStruct params;
if (action_id == M01_START_ATTACKING_01_JDG)//hovercraft is dead...go back to attacking gunboat
{
GameObject * gunboat = Commands->Find_Object ( M01_TURRETBEACH_GUNBOAT_ID );
if (gunboat != NULL)
{
ActionParamsStruct params;
params.Set_Basic(this, 100, M01_START_ACTING_JDG);
params.Set_Attack( gunboat, 3000, 3, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack ( obj, params );
}
}
}
};
DECLARE_SCRIPT(M01_GunboatAction_Controller_JDG, "")//M01_TURRETBEACH_CONTROLLER_ID
{
bool active;
int engineer_id;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(active, 1);
SAVE_VARIABLE(engineer_id, 2);
}
void Created( GameObject * obj )
{
active = false;
engineer_id = M01_TURRETBEACH_ENGINEER_ID;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ACTING_JDG)
{
if (active == false)
{
active = true;
GameObject * gunboat = Commands->Find_Object ( M01_TURRETBEACH_GUNBOAT_ID );
GameObject * engineer = Commands->Find_Object ( engineer_id );
//GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_GUNBOAT_ID );
if (gunboat != NULL)
{
Commands->Send_Custom_Event ( obj, gunboat, 0, M01_START_ACTING_JDG, 0 );
}
if (engineer != NULL)
{
Commands->Send_Custom_Event ( obj, engineer, 0, M01_START_ACTING_JDG, 0 );
}
}
}
else if (param == M01_GOTO_IDLE_JDG)//M01_CHOPPER_IS_SENDING_ID_JDG
{
if (active == true)
{
active = false;
GameObject * gunboat = Commands->Find_Object ( M01_TURRETBEACH_GUNBOAT_ID );
GameObject * engineer = Commands->Find_Object ( engineer_id );
if (gunboat != NULL)
{
Commands->Send_Custom_Event ( obj, gunboat, 0, M01_GOTO_IDLE_JDG, 0 );
}
if (engineer != NULL)
{
Commands->Send_Custom_Event ( obj, engineer, 0, M01_GOTO_IDLE_JDG, 0 );
}
}
}
else if (param == M01_CHOPPER_IS_SENDING_ID_JDG)//new engineer is actually sending ID
{
engineer_id = Commands->Get_ID ( sender );
}
}
}
};
DECLARE_SCRIPT(M01_Initial_Gunboat_Script_JDG, "")//M01_TURRETBEACH_GUNBOAT_ID 101477
{
bool firstHealthWarningPlayed;
bool secondHealthWarningPlayed;
Vector3 myPosition;
float myFacing;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(firstHealthWarningPlayed, 1);
SAVE_VARIABLE(secondHealthWarningPlayed, 2);
SAVE_VARIABLE(myPosition, 3);
SAVE_VARIABLE(myFacing, 4);
}
void Created( GameObject * obj )
{
firstHealthWarningPlayed = false;
secondHealthWarningPlayed = false;
myPosition = Commands->Get_Position ( obj );
myFacing = Commands->Get_Facing ( obj );
ActionParamsStruct params;
params.Set_Basic(this, 90, M01_WALKING_WAYPATH_02_JDG);
//params.Set_Movement( Vector3(0,0,0), .1f, 3 );
//params.WaypathID = 101497;
params.AttackActive = false;
params.AttackCheckBlocked = false;
Commands->Action_Attack (obj, params);
}
void Killed( GameObject * obj, GameObject * killer ) //
{
GameObject * missionController = Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG );
if (missionController != NULL)
{
Commands->Send_Custom_Event( obj, missionController, 0, M01_END_TURRETS_OBJECTIVE_FAIL_JDG, 0 );
}
GameObject * sinkingGunboat = Commands->Create_Object ( "M01_GDI_Gunboat", myPosition );
Commands->Set_Facing ( sinkingGunboat, myFacing );
Commands->Attach_Script(sinkingGunboat, "M01_Sinking_Gunboat_JDG", "");
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
if (obj)
{
float myCurrentHealth = Commands->Get_Health (obj);
float myMaxHealth = Commands->Get_Max_Health (obj);
float healthPercentage = (myCurrentHealth/myMaxHealth) * 100;
if (myCurrentHealth <= 10)
{
Commands->Set_Health ( obj, 10 );
}
if (healthPercentage <= 50)
{
if (secondHealthWarningPlayed == false)
{
secondHealthWarningPlayed = true;
int gunboatHealthWarning02 = Commands->Create_Conversation( "M01_Gunboat_HealthWarning_02", 100, 1000, false);
Commands->Join_Conversation( NULL, gunboatHealthWarning02, false, false );
Commands->Join_Conversation( NULL, gunboatHealthWarning02, false, false );
Commands->Join_Conversation( STAR, gunboatHealthWarning02, false, false );
Commands->Start_Conversation( gunboatHealthWarning02, gunboatHealthWarning02 );
}
}
else if (healthPercentage <= 75)
{
if (firstHealthWarningPlayed == false)
{
firstHealthWarningPlayed = true;
int gunboatHealthWarning01 = Commands->Create_Conversation( "M01_Gunboat_HealthWarning_01", 100, 1000, false);
Commands->Join_Conversation( NULL, gunboatHealthWarning01, false, false );
Commands->Join_Conversation( NULL, gunboatHealthWarning01, false, false );
Commands->Start_Conversation( gunboatHealthWarning01, gunboatHealthWarning01 );
}
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (param == M01_MODIFY_YOUR_ACTION_03_JDG)
{
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_02_JDG);
//params.Set_Movement( Vector3(0,0,0), .2f, 6 );
//params.WaypathID = 101497;
float pickTarget = Commands->Get_Random ( 0.5f, 2.5f );
if (pickTarget >= 0.5f && pickTarget < 1.5f)
{
GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if (turret01 != NULL)
{
Vector3 myTarget = Commands->Get_Position ( turret01 );
myTarget.Z += 2;
params.Set_Attack( myTarget, 2000, 0, true );
}
else if (turret02 != NULL)
{
Vector3 myTarget = Commands->Get_Position ( turret02 );
myTarget.Z += 2;
params.Set_Attack( myTarget, 2000, 0, true );
}
}
else
{
GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if (turret02 != NULL)
{
Vector3 myTarget = Commands->Get_Position ( turret02 );
myTarget.Z += 2;
params.Set_Attack( myTarget, 2000, 0, true );
}
else if (turret01 != NULL)
{
Vector3 myTarget = Commands->Get_Position ( turret01 );
myTarget.Z += 2;
params.Set_Attack( myTarget, 2000, 0, true );
}
}
params.AttackActive = true;
params.AttackCheckBlocked = false;
Commands->Modify_Action (obj, M01_WALKING_WAYPATH_02_JDG, params);
float delayTimer = Commands->Get_Random ( 4, 6 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_03_JDG, delayTimer );
}
else if (param == M01_START_ACTING_JDG)
{
Commands->Debug_Message ( "***************************gunboat custom received--start acting\n" );
Commands->Enable_Hibernation( obj, false );
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_02_JDG);
//params.Set_Movement( Vector3(0,0,0), .2f, 6 );
//params.WaypathID = 101497;
params.AttackActive = false;
Commands->Modify_Action (obj, M01_WALKING_WAYPATH_02_JDG, params);
float delayTimer = Commands->Get_Random ( 0, 2 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_03_JDG, delayTimer );
}
else if (param == M01_GOTO_IDLE_JDG)
{
Commands->Debug_Message ( "***************************gunboat custom received--STOP acting\n" );
Commands->Enable_Hibernation( obj, true );
}
else if (param == M01_END_TURRETS_OBJECTIVE_PASS_JDG)
{
Commands->Action_Reset ( obj, 100 );
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_03_JDG);
params.Set_Movement( Vector3(0,0,0), .7f, 10 );
params.WaypathID = 103454;
Commands->Action_Goto( obj, params );
GameObject * tankZone = Commands->Find_Object ( 102500 );
if (tankZone != NULL)
{
Commands->Send_Custom_Event( obj, tankZone, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
ActionParamsStruct params;
if (action_id == M01_WALKING_WAYPATH_03_JDG)//gunboat is at end of final waypath--delete it
{
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_GDIBase_BaseCommander_JDG, "")//106050 Capt Duncan
{
int gdi04conv01;
bool gaveIonBeacon;
int gdi04conv02;
bool powsRescued;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(gdi04conv01, 1);
SAVE_VARIABLE(gaveIonBeacon, 2);
SAVE_VARIABLE(gdi04conv02, 3);
SAVE_VARIABLE(powsRescued, 4);
}
void Created( GameObject * obj )
{
Commands->Set_Obj_Radar_Blip_Color ( obj, RADAR_BLIP_COLOR_GDI );
powsRescued = false;
gaveIonBeacon = false;
Commands->Set_Innate_Is_Stationary ( obj, true );
Commands->Set_Player_Type ( obj, SCRIPT_PLAYERTYPE_NEUTRAL );
}
void Killed( GameObject * obj, GameObject * killer )
{
if (gaveIonBeacon == false)
{
Commands->Set_Objective_Status( M01_GDI_BASE_COMMANDER_OBJECTIVE_JDG, OBJECTIVE_STATUS_FAILED );
}
GameObject * shackzone = Commands->Find_Object ( 115985 );
if (shackzone != NULL)
{
Commands->Send_Custom_Event( obj, shackzone, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
GameObject * pow01 = Commands->Find_Object ( 116386 );
if (pow01 != NULL)
{
Commands->Apply_Damage( pow01, 10000, "Steel", NULL );
}
GameObject * pow02 = Commands->Find_Object ( 116385 );
if (pow02 != NULL)
{
Commands->Apply_Damage( pow02, 10000, "Steel", NULL );
}
GameObject * baseMinigunner = Commands->Find_Object ( 116382 );
if (baseMinigunner != NULL)
{
Commands->Send_Custom_Event( obj, baseMinigunner, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
GameObject * baseGrenadier = Commands->Find_Object ( 116383 );
if (baseGrenadier != NULL)
{
Commands->Send_Custom_Event( obj, baseGrenadier, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
Vector3 nodGuy01_spot (28.566f, 29.790f, 1.792f);
Vector3 nodGuy02_spot (65.899f, 46.347f, -0.294f);
Vector3 nodGuy03_spot (24.776f, 44.863f, 0.708f);
GameObject * nodGuy01 = Commands->Create_Object ( "Nod_MiniGunner_0", nodGuy01_spot );
GameObject * nodGuy02 = Commands->Create_Object ( "Nod_MiniGunner_0", nodGuy02_spot );
GameObject * nodGuy03 = Commands->Create_Object ( "Nod_MiniGunner_0", nodGuy03_spot );
Commands->Set_Innate_Soldier_Home_Location ( nodGuy01, nodGuy01_spot, 10 );
Commands->Set_Innate_Soldier_Home_Location ( nodGuy02, nodGuy02_spot, 10 );
Commands->Set_Innate_Soldier_Home_Location ( nodGuy03, nodGuy03_spot, 10 );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
float myHealth = Commands->Get_Health ( obj );
if (myHealth <= 10)
{
Commands->Set_Health ( obj, 10 );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (type == 0)
{
if (param == M01_START_ACTING_JDG)
{
Commands->Set_Player_Type ( obj, SCRIPT_PLAYERTYPE_GDI );
Commands->Send_Custom_Event( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 1 );//
}
else if (param == M01_GDI_BASE_POWS_RESCUED_JDG)
{
powsRescued = true;
}
else if (param == M01_DO_END_MISSION_CHECK_JDG)
{
GameObject * nodGuy01 = Commands->Find_Object ( 101399 );
GameObject * nodGuy02 = Commands->Find_Object ( 103335 );
GameObject * nodGuy03 = Commands->Find_Object ( 103340 );
GameObject * nodGuy04 = Commands->Find_Object ( 102185 );
if ( (nodGuy01 == NULL) && (nodGuy02 == NULL) && (nodGuy03 == NULL) && (nodGuy04 == NULL) )
{
GameObject * letsgozone = Commands->Find_Object ( 105615 );
if (letsgozone != NULL)
{
Commands->Destroy_Object ( letsgozone );
}
GameObject * shackzone = Commands->Find_Object ( 115985 );
if (shackzone != NULL)
{
Commands->Send_Custom_Event( obj, shackzone, 0, M01_START_ACTING_JDG, 0 );
}
}
else
{
Commands->Send_Custom_Event( obj, obj, 0, M01_DO_END_MISSION_CHECK_JDG, 0.25f );
}
}
else if (param == M01_GOTO_YOUR_EVAC_SPOT_JDG)//
{
Commands->Enable_Hibernation( obj, false );
Commands->Action_Reset ( obj, 100 );
Vector3 myHomeSpot (55.9f, 40.3f, -0.2f);
params.Set_Basic( this, 100, M01_GOTO_YOUR_EVAC_SPOT_JDG );
params.Set_Movement(myHomeSpot, RUN, 1);
Commands->Action_Goto(obj, params);
}
else if (param == M01_GOING_TO_EVAC_SPOT_JDG)//your ride is here--go get in
{
Commands->Action_Reset ( obj, 100 );
GameObject * myEvacController = Commands->Find_Object ( 106694 );
if (myEvacController != NULL)
{
Commands->Set_Innate_Is_Stationary ( obj, false );
Vector3 myHomeSpot = Commands->Get_Position ( myEvacController );
params.Set_Basic( this, 100, M01_GOING_TO_EVAC_SPOT_JDG );
params.Set_Movement(myHomeSpot, RUN, 1);
Commands->Action_Goto(obj, params);
}
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG)//havoc has saved you--start conversation
{
gdi04conv01 = Commands->Create_Conversation( "M01_GDI04_Conversation_01", 100, 1000, false);
Commands->Join_Conversation( obj, gdi04conv01, false, true, true );
Commands->Join_Conversation( STAR, gdi04conv01, false, false, false );
Commands->Start_Conversation( gdi04conv01, gdi04conv01 );
Commands->Monitor_Conversation( obj, gdi04conv01 );
}
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
ActionParamsStruct params;
if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
{
if (action_id == gdi04conv01)
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation ("H_A_J12C", false);
Commands->Action_Play_Animation (obj, params);//
Commands->Set_Objective_Status( M01_GDI_BASE_COMMANDER_OBJECTIVE_JDG, OBJECTIVE_STATUS_ACCOMPLISHED );
/*GameObject * POW01 = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_POWGUY01_JDG );
if (POW01 != NULL)
{
Commands->Send_Custom_Event( obj, POW01, 0, M01_CAPT_DUNCAN_HAS_BEEN_FOUND_JDG, 0 );
}
GameObject * POW02 = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_POWGUY02_JDG );
if (POW02 != NULL)
{
Commands->Send_Custom_Event( obj, POW02, 0, M01_CAPT_DUNCAN_HAS_BEEN_FOUND_JDG, 0 );
}*/
}
if (action_id == gdi04conv02)
{
GameObject * myEvacController = Commands->Find_Object ( 106694 );
if (myEvacController != NULL)
{
Commands->Send_Custom_Event( obj, myEvacController, 0, M01_START_ACTING_JDG, 0 );
}
}
}
else if (complete_reason == ACTION_COMPLETE_NORMAL)
{
if (action_id == M01_WALKING_WAYPATH_02_JDG)
{
}
else if (action_id == M01_DOING_ANIMATION_01_JDG)
{
Vector3 myPostion (114.848f, 95.401f, 8.923f);
Commands->Create_Object ( "POW_IonCannonBeacon_Player", myPostion );
gaveIonBeacon = true;
gdi04conv02 = Commands->Create_Conversation( "M01_GDI04_Conversation_02", 100, 1000, false);
Commands->Join_Conversation( obj, gdi04conv02, false, true, true );
Commands->Join_Conversation( STAR, gdi04conv02, false, false, false );
Commands->Start_Conversation( gdi04conv02, gdi04conv02 );
Commands->Monitor_Conversation( obj, gdi04conv02 );
}
else if (action_id == M01_GOTO_YOUR_EVAC_SPOT_JDG)
{
Commands->Set_Innate_Is_Stationary ( obj, true );
GameObject * myEvacController = Commands->Find_Object ( 106694 );
if (myEvacController != NULL)//tell controller to call in a chopper
{
Commands->Send_Custom_Event( obj, myEvacController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
}
else if (action_id == M01_GOING_TO_EVAC_SPOT_JDG)//start load animation here
{
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);
Commands->Create_Object ( powerups[random], powerupSpawnLocation );
Commands->Give_Points( STAR, 2000, false );
GameObject * myEvacController = Commands->Find_Object ( 106694 );
if (myEvacController != NULL)//tell controller to spawn a rope
{
Commands->Send_Custom_Event( obj, myEvacController, 0, M01_GIVE_ME_A_ROPE_JDG, 0 );
}
}
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.XG_EV5_troop") == 0)
{
if (gaveIonBeacon == false)
{
Commands->Set_Objective_Status( M01_GDI_BASE_COMMANDER_OBJECTIVE_JDG, OBJECTIVE_STATUS_FAILED );
}
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_Base_GDI_Grenadier_JDG, "")//116383
{
float currentHealth;
bool invincible;
bool ducanRescued;
bool headingDownBackPath;
bool still_in_GDI_Base;
bool damagedByNod;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(currentHealth, 1);
SAVE_VARIABLE(invincible, 2);
SAVE_VARIABLE(ducanRescued, 3);
SAVE_VARIABLE(headingDownBackPath, 4);
SAVE_VARIABLE(still_in_GDI_Base, 5);
SAVE_VARIABLE(damagedByNod, 6);
}
void Created( GameObject * obj ) //this guy starts in the guard tower firing over at the conyard
{
damagedByNod = false;
still_in_GDI_Base = true;
invincible = true;
ducanRescued = false;
currentHealth = Commands->Get_Health ( obj );
Commands->Set_Innate_Is_Stationary ( obj, true );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 10 );//in 2 seconds run to a new position
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
GameObject * nodGuy01 = Commands->Find_Object ( 116388 );
GameObject * nodGuy02 = Commands->Find_Object ( 116387 );
if (damager == nodGuy01 || damager == nodGuy02)
{
if (damagedByNod == false)
{
damagedByNod = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_WALKING_WAYPATH_04_JDG, 0 );
}
}
if (invincible == true)
{
//Commands->Set_Health ( obj, currentHealth );
float myCurrentHealth = Commands->Get_Health ( obj );
if (myCurrentHealth <= 10)
{
Commands->Set_Health ( obj, 10 );
}
}
else if (obj && damager == obj)
{
Commands->Set_Health ( obj, currentHealth );
}
else if (obj)
{
currentHealth = Commands->Get_Health ( obj );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.XG_EV5_troop") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (type == 0)
{
if (param == M01_MODIFY_YOUR_ACTION_JDG)//run over next to ladder
{
Vector3 newPosition (38.873f, -42.180f, -0.432f);
Commands->Set_Innate_Is_Stationary ( obj, false );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement(newPosition, RUN, 1);
Commands->Action_Goto ( obj, params );
}
else if (param == M01_START_ATTACKING_01_JDG)//player is at top of ladders...check if nod minigunner is still alive
{
GameObject * nodMinigunner = Commands->Find_Object ( 116384 );
if (nodMinigunner != NULL)
{
params.Set_Basic( this, 100, M01_START_ATTACKING_01_JDG );
params.Set_Attack( nodMinigunner, 1000, 0, true );
params.AttackCrouched = true;
params.AttackCheckBlocked = false;
Commands->Action_Attack (obj, params);
}
else
{
Commands->Action_Reset ( obj, 100 );
}
}
else if (param == M01_START_ACTING_JDG)//
{
Commands->Action_Reset ( obj, 100 );
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_02_JDG);
params.Set_Attack( STAR, 0, 0, true );
Commands->Action_Attack (obj, params);
float delayTimer = Commands->Get_Random ( 1, 2 );
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 );
}
else if (param == M01_MODIFY_YOUR_ACTION_03_JDG)
{
//invincible = false;
Vector3 newPosition (26.767f, 18.529f, 3.139f);
Commands->Set_Innate_Is_Stationary ( obj, false );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_03_JDG );
params.Set_Movement(newPosition, RUN, 1);
Commands->Action_Goto ( obj, params );
}
else if (param == M01_GOTO_YOUR_EVAC_SPOT_JDG)
{
Commands->Enable_Hibernation( obj, false );
//evacing = true;
ducanRescued = true;
Commands->Action_Reset ( obj, 100 );
Vector3 myHomeSpot (41.3f, 27.4f, -0.2f);
params.Set_Basic( this, 100, M01_GOTO_YOUR_EVAC_SPOT_JDG );
params.Set_Movement(myHomeSpot, RUN, 1);
Commands->Action_Goto(obj, params);
}
else if (param == M01_GOING_TO_EVAC_SPOT_JDG)//your ride is here--go get in
{
Commands->Action_Reset ( obj, 100 );
GameObject * myEvacController = Commands->Find_Object ( 106694 );
if (myEvacController != NULL)
{
Commands->Set_Innate_Is_Stationary ( obj, false );
Vector3 myHomeSpot = Commands->Get_Position ( myEvacController );
params.Set_Basic( this, 100, M01_GOING_TO_EVAC_SPOT_JDG );
params.Set_Movement(myHomeSpot, RUN, 1);
Commands->Action_Goto(obj, params);
}
}
else if (param == M01_MODIFY_YOUR_ACTION_06_JDG && ducanRescued == false)//Head down the path
{
still_in_GDI_Base = false;
Commands->Action_Reset ( obj, 100 );
headingDownBackPath = true;
Vector3 newGotoSpot (111.210f, 85.507f, 8.934f);
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_06_JDG );
params.Set_Movement(newGotoSpot, RUN, 1);
params.AttackActive = false;
Commands->Action_Attack (obj, params);
}
else if (param == M01_IVE_BEEN_KILLED_JDG)
{
if (still_in_GDI_Base == true)
{
invincible = false;
Commands->Apply_Damage( obj, 100000, "Steel", NULL );
}
}
else if (param == M01_WALKING_WAYPATH_04_JDG)
{
GameObject * nodguy02 = Commands->Find_Object ( 116387 );
if (nodguy02 != NULL)
{
Vector3 myNewSpot (53.363f, 54.018f, -0.439f);
Commands->Set_Innate_Is_Stationary ( obj, false );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_04_JDG );
params.Set_Movement(myNewSpot, RUN, 1);
params.Set_Attack( nodguy02, 20, 0, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack (obj, params);
}
else
{
Vector3 myNewSpot (53.363f, 54.018f, -0.439f);
Commands->Set_Innate_Is_Stationary ( obj, false );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_04_JDG );
params.Set_Movement(myNewSpot, RUN, 1);
Commands->Action_Goto (obj, params);
}
}
}
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
if (headingDownBackPath == true)
{
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_06_JDG );
params.Set_Movement(enemy, WALK, 5);
params.Set_Attack( enemy, 1000, 0, true );
params.AttackActive = true;
Commands->Modify_Action ( obj, M01_WALKING_WAYPATH_06_JDG, params, true, true );
}
}
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)
{
Vector3 myTarget (28.449f, -23.325f, 3.032f);
Commands->Set_Innate_Is_Stationary ( obj, true );
params.Set_Basic( this, 100, M01_START_ACTING_JDG );
params.Set_Attack( myTarget, 1000, 0, true );
params.AttackCrouched = true;
params.AttackCheckBlocked = false;
Commands->Action_Attack (obj, params);
}
else 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_GOTO_YOUR_EVAC_SPOT_JDG)
{
Commands->Set_Innate_Is_Stationary ( obj, true );
GameObject * myEvacController = Commands->Find_Object ( 106694 );
if (myEvacController != NULL)//tell controller to call in a chopper
{
Commands->Send_Custom_Event( obj, myEvacController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
}
else if (action_id == M01_GOING_TO_EVAC_SPOT_JDG)//start load animation here
{
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);
Commands->Create_Object ( powerups[random], powerupSpawnLocation );
GameObject * myEvacController = Commands->Find_Object ( 106694 );
if (myEvacController != NULL)//tell controller to spawn a rope
{
Commands->Send_Custom_Event( obj, myEvacController, 0, M01_GIVE_ME_A_ROPE_JDG, 0 );
}
}
else if (action_id == M01_WALKING_WAYPATH_03_JDG)//you're over by the pows now...check if nod guy 02 is still alive
{
Commands->Send_Custom_Event( obj, obj, 0, M01_WALKING_WAYPATH_04_JDG, 0 );
}
else if (action_id == M01_WALKING_WAYPATH_04_JDG)//your target is dead...make sure you go over to path
{
Vector3 myNewSpot (53.363f, 54.018f, -0.439f);
Commands->Set_Innate_Is_Stationary ( obj, false );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_05_JDG );
params.Set_Movement(myNewSpot, RUN, 1);
Commands->Action_Goto (obj, params);
}
else if (action_id == M01_WALKING_WAYPATH_05_JDG)//you're by path entrance...goto stationary
{
Commands->Set_Innate_Is_Stationary ( obj, true );
}
else if (action_id == M01_WALKING_WAYPATH_06_JDG)//you just killed a back path guy...continue your journey
{
Vector3 newGotoSpot (111.210f, 85.507f, 8.934f);
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_06_JDG );
params.Set_Movement(newGotoSpot, RUN, 1);
params.AttackActive = false;
Commands->Action_Attack (obj, params);
}
}
}
};
DECLARE_SCRIPT(M01_MediumTank_ReminderZone_JDG, "")//122848
{
bool commandClearance;
bool player_in_tank;
int reminderConv;
int tank_id;
int reminders;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(commandClearance, 1);
SAVE_VARIABLE(player_in_tank, 2);
SAVE_VARIABLE(tank_id, 3);
SAVE_VARIABLE(reminders, 4);
}
void Created( GameObject * obj )
{
commandClearance = false;
player_in_tank = false;
reminders = 0;
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
if (commandClearance == true)
{
if (player_in_tank == true)//
{
}
else
{
int tunnelConv = Commands->Create_Conversation( "M01_TunnelTank_Reminder_Conversation", 100, 30, false );
Commands->Join_Conversation( NULL, tunnelConv, false, true, true );
Commands->Start_Conversation( tunnelConv, tunnelConv );
Commands->Destroy_Object ( obj );
}
}
}
}
void Timer_Expired( GameObject * obj, int timer_id )
{
if (player_in_tank == false)
{
reminders++;
if (reminders == 1)
{
GameObject * mediumTank = Commands->Find_Object ( tank_id );
if (mediumTank != NULL)
{
reminderConv = Commands->Create_Conversation( "M01_GetInTheTank_01_Conversation", 100, 30, false );
Commands->Join_Conversation( NULL, reminderConv, false, true, true );
Commands->Start_Conversation( reminderConv, reminderConv );
Commands->Monitor_Conversation( obj, reminderConv );
}
}
else if (reminders == 2)
{
GameObject * mediumTank = Commands->Find_Object ( tank_id );
if (mediumTank != NULL)
{
reminderConv = Commands->Create_Conversation( "M01_GetInTheTank_02_Conversation", 100, 30, false );
Commands->Join_Conversation( NULL, reminderConv, false, true, true );
Commands->Start_Conversation( reminderConv, reminderConv );
Commands->Monitor_Conversation( obj, reminderConv );
}
}
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
{
if (action_id == reminderConv)
{
Commands->Start_Timer ( obj, this, 30, 0 );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ACTING_JDG)//tank is here
{
commandClearance = true;
Commands->Start_Timer ( obj, this, 10, 0 );
tank_id = Commands->Get_ID ( obj );
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG)//player is in the tank
{
player_in_tank = true;
}
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG)//player is out of the tank
{
player_in_tank = false;
}
}
}
};
DECLARE_SCRIPT(M01_Base_POW01_JDG, "")//116386
{
int deadGuards;
bool pokable;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(deadGuards, 1);
SAVE_VARIABLE(pokable, 2);
}
void Created( GameObject * obj )
{
deadGuards = 0;
Commands->Set_Obj_Radar_Blip_Color ( obj, RADAR_BLIP_COLOR_GDI );
Commands->Set_Loiters_Allowed( obj, false );
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation( "H_A_HOST_L2B", true );
Commands->Action_Play_Animation ( obj, params );
pokable = false;
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
float currentHealth = Commands->Get_Health ( obj );
if (currentHealth <= 10)
{
Commands->Set_Health ( obj, 10 );
}
}
void Killed( GameObject * obj, GameObject * killer )
{
GameObject * evacController = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_MONITOR_JDG );
if (evacController != NULL)
{
Commands->Send_Custom_Event( obj, evacController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.XG_EV5_troop") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender ) //M01_POW02_Conversation_01
{
ActionParamsStruct params;
if (type == 0)
{
if (param == M01_IVE_BEEN_KILLED_JDG)
{
deadGuards++;
if (deadGuards == 2)
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation( "H_A_HOST_L2C", false );
Commands->Action_Play_Animation ( obj, params );
GameObject * pow02 = Commands->Find_Object ( 116385 );
if (pow02 != NULL)
{
Commands->Send_Custom_Event( obj, pow02, 0, M01_START_ACTING_JDG, 1 );
}
Vector3 airdropPosition (55.062f, 60.164f, -1);
GameObject *controller = Commands->Create_Object("Invisible_Object", airdropPosition);
Commands->Set_Facing ( controller, -45 );
Commands->Attach_Script(controller, "Test_Cinematic", "X1D_GDIPOW_FlareDrop.txt");
}
}
else if (param == M01_GOING_TO_EVAC_SPOT02_JDG)
{
Commands->Enable_Hibernation( obj, false );
Commands->Set_Innate_Is_Stationary ( obj, false );
Vector3 myEvacSpot = Commands->Get_Position ( Commands->Find_Object ( M01_GDIBASE_POWSCENE02_MONITOR_JDG ) );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_02_JDG );
params.Set_Movement( myEvacSpot, RUN, 1 );
Commands->Action_Goto( obj, params );
}
else if (param == M01_GOTO_INNATE_JDG)
{
pokable = false;
Commands->Enable_HUD_Pokable_Indicator ( obj, false );
}
}
}
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_02_JDG )//pow guy is standingup
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_03_JDG );
params.Set_Animation( "H_A_HOST_L1C", false );
Commands->Action_Play_Animation ( obj, params );
Commands->Set_Innate_Is_Stationary ( obj, true );
}
else if (action_id == M01_DOING_ANIMATION_03_JDG )//play the Havoc conversation
{
GameObject * convController = Commands->Find_Object ( 121237 );
if (convController != NULL)
{
Commands->Send_Custom_Event( obj, convController, 0, M01_START_ACTING_JDG, 0 );
}
}
else if (action_id == M01_WALKING_WAYPATH_02_JDG)//gdi guy is at evac chopper--delete him
{
GameObject * airdropController = Commands->Find_Object ( M01_GDIBASE_EVAC_MONITOR_JDG );
if (airdropController != NULL)
{
Commands->Send_Custom_Event( obj, airdropController, 0, M01_GOING_TO_EVAC_SPOT_JDG, 0 );
}
GameObject * myEvacController = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_MONITOR_JDG );
if (myEvacController != NULL)//tell controller to spawn a rope
{
Commands->Send_Custom_Event( obj, myEvacController, 0, M01_GIVE_ME_A_ROPE_JDG, 0 );
}
}
}
}
};
DECLARE_SCRIPT(M01_Base_POW02_JDG, "")//116385
{
bool pokable;
int pow02conv01;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(pokable, 1);
SAVE_VARIABLE(pow02conv01, 2);
}
void Created( GameObject * obj )
{
Commands->Set_Obj_Radar_Blip_Color ( obj, RADAR_BLIP_COLOR_GDI );
Commands->Set_Loiters_Allowed( obj, false );
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation( "H_A_HOST_L2B", true );
Commands->Action_Play_Animation ( obj, params );
pokable = false;
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
float currentHealth = Commands->Get_Health ( obj );
if (currentHealth <= 10)
{
Commands->Set_Health ( obj, 10 );
}
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.XG_EV5_troop") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Killed( GameObject * obj, GameObject * killer )
{
GameObject * evacController = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_MONITOR_JDG );
if (evacController != NULL)
{
Commands->Send_Custom_Event( obj, evacController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender ) //M01_POW02_Conversation_01
{
ActionParamsStruct params;
if (type == 0)
{
if (param == M01_START_ACTING_JDG)
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation( "H_A_HOST_L2C", false );
Commands->Action_Play_Animation ( obj, params );
}
else if (param == M01_GOING_TO_EVAC_SPOT02_JDG)
{
Commands->Enable_Hibernation( obj, false );
Commands->Set_Innate_Is_Stationary ( obj, false );
Vector3 myEvacSpot = Commands->Get_Position ( Commands->Find_Object ( M01_GDIBASE_POWSCENE02_MONITOR_JDG ) );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_02_JDG );
params.Set_Movement( myEvacSpot, RUN, 1 );
Commands->Action_Goto( obj, params );
}
else if (param == M01_GOTO_INNATE_JDG)
{
pokable = false;
Commands->Enable_HUD_Pokable_Indicator ( obj, false );
}
}
}
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_02_JDG )//pow guy is standingup
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_03_JDG );
params.Set_Animation( "H_A_HOST_L1C", false );
Commands->Action_Play_Animation ( obj, params );
Commands->Set_Innate_Is_Stationary ( obj, true );
}
else if (action_id == M01_DOING_ANIMATION_03_JDG )//pow guy is standingup -- do cheer anim
{
char *animationName = M01_Choose_Cheer_Animation ( );
params.Set_Basic( this, 100, 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 )//pow guy is standingup -- play havoc anim if pow01 is dead
{
GameObject * pow01 = Commands->Find_Object ( 116386 );
if (pow01 == NULL)
{
GameObject * convController = Commands->Find_Object ( 121237 );
if (convController != NULL)
{
Commands->Send_Custom_Event( obj, convController, 0, M01_START_ACTING_JDG, 0 );
}
}
}
else if (action_id == M01_WALKING_WAYPATH_02_JDG)//gdi guy is at evac chopper--delete him
{
GameObject * airdropController = Commands->Find_Object ( M01_GDIBASE_EVAC_MONITOR_JDG );
if (airdropController != NULL)
{
Commands->Send_Custom_Event( obj, airdropController, 0, M01_GOING_TO_EVAC_SPOT_JDG, 0 );
}
GameObject * myEvacController = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_MONITOR_JDG );
if (myEvacController != NULL)//tell controller to spawn a rope
{
Commands->Send_Custom_Event( obj, myEvacController, 0, M01_GIVE_ME_A_ROPE_JDG, 0 );
}
}
}
}
};
DECLARE_SCRIPT(M01_GDIBase_POW_Conversation_Controller_JDG, "")//121237
{
bool convPlayed;
int pow02conv01;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(convPlayed, 1);
SAVE_VARIABLE(pow02conv01, 2);
}
void Created( GameObject * obj )
{
convPlayed = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender ) //M01_POW02_Conversation_01
{
ActionParamsStruct params;
if (type == 0)
{
if (param == M01_START_ACTING_JDG && convPlayed == false)
{
convPlayed = true;
GameObject * pow01 = Commands->Find_Object ( 116386 );
GameObject * pow02 = Commands->Find_Object ( 116385 );
if (sender == pow01 && pow01 != NULL)
{
pow02conv01 = Commands->Create_Conversation( "M01_POW02_Conversation_01", 100, 1000, false );
Commands->Join_Conversation( pow01, pow02conv01, false, true, true );
Commands->Join_Conversation( STAR, pow02conv01, false, false, false );
Commands->Start_Conversation( pow02conv01, pow02conv01 );
Commands->Monitor_Conversation( obj, pow02conv01 );
}
else if (sender == pow02 && pow02 != NULL)
{
pow02conv01 = Commands->Create_Conversation( "M01_POW02_Conversation_01", 100, 1000, false );
Commands->Join_Conversation( pow02, pow02conv01, false, true, true );
Commands->Join_Conversation( STAR, pow02conv01, false, false, false );
Commands->Start_Conversation( pow02conv01, pow02conv01 );
Commands->Monitor_Conversation( obj, pow02conv01 );
}
if (pow01 != NULL)//M01_GOTO_INNATE_JDG
{
Commands->Send_Custom_Event( obj, pow01, 0, M01_GOTO_INNATE_JDG, 0 );
}
if (pow02 != NULL)
{
Commands->Send_Custom_Event( obj, pow02, 0, M01_GOTO_INNATE_JDG, 0 );
}
}
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
ActionParamsStruct params;
if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
{
if (action_id == pow02conv01)
{
GameObject * pogController = Commands->Find_Object ( M01_MISSION_POG_CONTROLLER_JDG );
if (pogController != NULL)
{
Commands->Send_Custom_Event( obj, pogController, M01_CHANGE_OBJECTIVE_POG_JDG, M01_GDI_BASE_COMMANDER_OBJECTIVE_JDG, 0 );
}
GameObject * evacController = Commands->Find_Object ( M01_GDIBASE_POWSCENE02_MONITOR_JDG );
if (evacController != NULL)
{
Commands->Send_Custom_Event( obj, evacController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
GameObject * gdiMinigunner = Commands->Find_Object ( 116382 );
if (gdiMinigunner != NULL)
{
Commands->Send_Custom_Event( obj, gdiMinigunner, 0, M01_MODIFY_YOUR_ACTION_05_JDG, 2 );
//this tells him to start the "this is the path" routine
}
GameObject * backPathZone = Commands->Find_Object ( 121433 );
if (backPathZone != NULL)
{
Commands->Send_Custom_Event( obj, backPathZone, 0, M01_START_ACTING_JDG, 0 );
}
}
}
}
};
DECLARE_SCRIPT(M01_GDI_BeachGuy01_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Innate_Disable(obj);
ActionParamsStruct params;
Commands->Enable_Hibernation( obj, false );
params.Set_Basic(this, 100, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement( Vector3(36.231f, 28.471f, 0.131f), RUN, 2 );
Commands->Action_Goto( obj, params );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
float currentHealth = Commands->Get_Health ( obj );
if (currentHealth <= 10 && damager == STAR)
{
Commands->Set_Health ( obj, 10 );
}
}
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)
{
Commands->Apply_Damage( obj, 10000, "STEEL", NULL );
}
}
}
};
DECLARE_SCRIPT(M01_Announce_TankAirstrikeZone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject * missionController = Commands->Find_Object ( M01_MISSION_CONTROLLER_JDG );
if (missionController != NULL)
{
Commands->Send_Custom_Event( obj, missionController, 0, M01_ANNOUNCE_AIRSTRIKE_JDG, 0 );
}
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_GDI_GuardTower_02_Enter_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject * sniperTarget01 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3());
Commands->Attach_Script(sniperTarget01, "M01_GuardTower_Sniper_Target_JDG", "-90.385 124.308 1.610, -79.477 139.201 0.947");
GameObject * sniperTarget02 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3());
Commands->Attach_Script(sniperTarget02, "M01_GuardTower_Sniper_Target_JDG", "-85.499 117.221 1.915, -79.477 139.201 0.947");
GameObject * sniperTarget03 = Commands->Create_Object ( "Nod_MiniGunner_0", Vector3());
Commands->Attach_Script(sniperTarget03, "M01_GuardTower_Sniper_Target_JDG", "-93.364 113.202 1.701, -79.477 139.201 0.947");
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_GDI_GuardTower02_SniperRifle_JDG, "")
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ( type == CUSTOM_EVENT_POWERUP_GRANTED ) //sniper rifle has been picked up--spawn the actors
{
GameObject * c4TextController = Commands->Find_Object ( 117188 );
if (c4TextController != NULL)
{
Commands->Send_Custom_Event( obj, c4TextController, 2, 1, 0 );
}
Vector3 spawnLocation01 (-79.182f, 141.927f, 1.763f);
GameObject * sniperTarget01 = Commands->Create_Object ( "Nod_MiniGunner_0", spawnLocation01);
Commands->Attach_Script(sniperTarget01, "M01_GuardTower02_Sniper_Target01_JDG", "");
}
}
};
DECLARE_SCRIPT(M01_GuardTower02_Sniper_Target01_JDG, "")
{
int guy02_id;
int sniperConv;
bool acting;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(guy02_id, 1);
SAVE_VARIABLE(sniperConv, 2);
SAVE_VARIABLE(acting, 3);
}
void Created( GameObject * obj )
{
acting = true;
Commands->Enable_Hibernation( obj, false );
Vector3 spawnLocation02 (-93.882f, 110.504f, 1.644f);
GameObject * sniperTarget02 = Commands->Create_Object ( "Nod_MiniGunner_0", spawnLocation02);
Commands->Attach_Script(sniperTarget02, "M01_GuardTower02_Sniper_Target02_JDG", "");
Commands->Send_Custom_Event( obj, sniperTarget02, 0, M01_CHOPPER_IS_SENDING_ID_JDG, 1 );
guy02_id = Commands->Get_ID ( sniperTarget02 );
Vector3 myGotoSpot (-92.496f, 117.750f, 1.752f);
ActionParamsStruct params;
params.Set_Basic( this, 80, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( myGotoSpot, RUN, 1 );
Commands->Action_Goto( obj, params );
}
void Killed( GameObject * obj, GameObject * killer )
{
GameObject * reinforceController = Commands->Find_Object ( 123645 );
if (reinforceController != NULL)
{
Commands->Send_Custom_Event( obj, reinforceController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
if (acting == true)
{
GameObject * guy02 = Commands->Find_Object ( guy02_id );
if (guy02 != NULL)
{
Commands->Send_Custom_Event( obj, guy02, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (type == 0)
{
if (param == M01_IVE_BEEN_KILLED_JDG)//your buddy's been capped--do look around anim
{
Commands->Action_Reset ( obj, 100 );
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation ("H_A_A0A0_L21", 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_WALKING_WAYPATH_01_JDG )//youre now in middle of field--start conversation
{
Commands->Set_Innate_Is_Stationary ( obj, true );
GameObject * guy02 = Commands->Find_Object ( guy02_id );
if (guy02 != NULL)
{
sniperConv = Commands->Create_Conversation( "M01_SniperTower_Conversation", 100, 80, true);
Commands->Join_Conversation( obj, sniperConv, false, true, true );
Commands->Join_Conversation( guy02, sniperConv, false, true, true );
Commands->Start_Conversation( sniperConv, sniperConv );
Commands->Monitor_Conversation( obj, sniperConv );
}
}
else if (action_id == M01_WALKING_WAYPATH_02_JDG )//youre now at the tailguns--allow hibernation
{
Commands->Enable_Hibernation( obj, true );
}
else if (action_id == M01_DOING_ANIMATION_01_JDG )//youre looked around--now set curent position as home spot
{
Commands->Set_Innate_Is_Stationary ( obj, false );
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
}
}
else if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
{
if (action_id == sniperConv )//conversation is over--go away
{
acting = false;
Commands->Set_Innate_Is_Stationary ( obj, false );
Vector3 myGotoSpot (46.749f, 197.062f, 6.211f);
ActionParamsStruct params;
params.Set_Basic( this, 50, M01_WALKING_WAYPATH_02_JDG );
params.Set_Movement( myGotoSpot, RUN, 1 );
Commands->Action_Goto( obj, params );
GameObject * guy02 = Commands->Find_Object ( guy02_id );
if (guy02 != NULL)
{
Commands->Send_Custom_Event( obj, guy02, 0, M01_START_ACTING_JDG, 0 );
}
}
}
}
};
DECLARE_SCRIPT(M01_GuardTower02_Sniper_TowerZone_JDG, "")//123645
{
bool player_in_zone;
int targets_killed;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(player_in_zone, 1);
SAVE_VARIABLE(targets_killed, 2);
}
void Created( GameObject * obj )
{
player_in_zone = false;
targets_killed = 0;
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
player_in_zone = true;
}
}
void Exited( GameObject * obj, GameObject * exiter )
{
if (exiter == STAR)
{
player_in_zone = false;
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_IVE_BEEN_KILLED_JDG)//a sniper targets been killed--check player position and spawn new target if needed
{
if (player_in_zone == true)
{
targets_killed++;
if (targets_killed == 1)
{
Vector3 spawnLocation02 (-51.423f, 126.198f, 2.537f);
GameObject * new_sniperTarget = Commands->Create_Object ( "Nod_MiniGunner_0", spawnLocation02);
Commands->Attach_Script(new_sniperTarget, "M01_GuardTower02_NewSniperTarget_JDG", "");
}
else if (targets_killed == 2)
{
}
}
}
}
}
};
DECLARE_SCRIPT(M01_GuardTower02_NewSniperTarget_JDG, "")
{
void Created( GameObject * obj )
{
Commands->Enable_Hibernation( obj, false );
Vector3 runToPosition (-67.347f, 118.048f, 2.641f);
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( runToPosition, 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 )//now look over at Havoc
{
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_FACING_SPECIFIED_DIRECTION_01_JDG, 1 );
}
else if (action_id == M01_DOING_ANIMATION_02_JDG )//now do neck chop anim
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_03_JDG );
params.Set_Animation ("H_A_A0A0_L56", false);
Commands->Action_Play_Animation (obj, params);
}
else if (action_id == M01_DOING_ANIMATION_03_JDG )//now go attack havoc
{
params.Set_Basic( this, 50, M01_FACING_SPECIFIED_DIRECTION_01_JDG );
params.Set_Attack( STAR, 20, 0, true );
params.Set_Movement( STAR, RUN, 5);
Commands->Action_Attack ( obj, params );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (type == 0)
{
if (param == M01_FACING_SPECIFIED_DIRECTION_01_JDG)
{
params.Set_Basic( this, 100, M01_DOING_ANIMATION_02_JDG );
params.Set_Animation ("H_A_A0A0_L34", false);
Commands->Action_Play_Animation (obj, params);
}
}
}
};
DECLARE_SCRIPT(M01_GuardTower02_Sniper_Target02_JDG, "")
{
int guy01_id;
bool acting;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(guy01_id, 1);
SAVE_VARIABLE(acting, 2);
}
void Created( GameObject * obj )
{
acting = true;
Commands->Enable_Hibernation( obj, false );
Vector3 myGotoSpot (-92.927f, 115.587f, 1.847f);
ActionParamsStruct params;
params.Set_Basic( this, 80, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( myGotoSpot, WALK, 1 );
Commands->Action_Goto( obj, params );
}
void Killed( GameObject * obj, GameObject * killer )
{
GameObject * reinforceController = Commands->Find_Object ( 123645 );
if (reinforceController != NULL)
{
Commands->Send_Custom_Event( obj, reinforceController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
if (acting == true)
{
GameObject * guy01 = Commands->Find_Object ( guy01_id );
if (guy01 != NULL)
{
Commands->Send_Custom_Event( obj, guy01, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
}
}
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 )//youre now in middle of field--start conversation
{
Commands->Set_Innate_Is_Stationary ( obj, true );
}
else if (action_id == M01_DOING_ANIMATION_01_JDG )//youre looked around--now set curent position as home spot
{
Commands->Set_Innate_Is_Stationary ( obj, false );
Vector3 myPosition = Commands->Get_Position ( obj );
Commands->Set_Innate_Soldier_Home_Location ( obj, myPosition, 5 );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (type == 0)
{
if (param == M01_START_ACTING_JDG)
{
acting = false;
Commands->Set_Innate_Is_Stationary ( obj, false );
Vector3 myGotoSpot (-79.399f, 112.473f, 2.373f);
params.Set_Basic( this, 50, M01_WALKING_WAYPATH_01_JDG );
params.Set_Movement( myGotoSpot, WALK, 1 );
Commands->Action_Goto( obj, params );
}
else if (param == M01_IVE_BEEN_KILLED_JDG)//your buddy's been capped--do look around anim
{
Commands->Action_Reset ( obj, 100 );
params.Set_Basic( this, 100, M01_DOING_ANIMATION_01_JDG );
params.Set_Animation ("H_A_A0A0_L21", false);
Commands->Action_Play_Animation (obj, params);
}
else if (param == M01_CHOPPER_IS_SENDING_ID_JDG)//guy 1 is actually sending his id
{
guy01_id = Commands->Get_ID ( sender );
}
}
}
};
DECLARE_SCRIPT(M01_TurnOff_TankReminder_Zone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject * tankReminderZone = Commands->Find_Object ( 122848 );
if (tankReminderZone != NULL)
{
Commands->Destroy_Object ( tankReminderZone );
Commands->Destroy_Object ( obj );
}
}
}
};
DECLARE_SCRIPT(M01_HON_Escorts_Warroom_MCT_ZoneController_JDG, "")//103378
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject * mctCommander = Commands->Find_Object ( 103373 );
GameObject * mctProtector01 = Commands->Find_Object ( 103374 );
GameObject * mctProtector02 = Commands->Find_Object ( 103375 );
if (mctCommander != NULL)
{
Commands->Send_Custom_Event ( obj, mctCommander, 0, M01_START_ACTING_JDG, 0 );
if ((mctProtector01 != NULL) && (mctProtector02 != NULL))
{
int protectMct_conv = Commands->Create_Conversation( "M01_Protect_The_MCT", 100, 1000, true);
Commands->Join_Conversation( mctProtector02, protectMct_conv, false, false );
Commands->Join_Conversation( mctProtector01, protectMct_conv, false, false );
Commands->Start_Conversation( protectMct_conv, protectMct_conv );
}
}
Commands->Destroy_Object ( obj );
}
}
};
DECLARE_SCRIPT(M01_HON_Chinook_Spawned_Soldier_01_GDI_JDG, "")
{
bool player_in_warroom;
bool at_final_destination;
bool escorting;
int dialogs_said;
int dialogs_said_to_havoc;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(player_in_warroom, 1);
SAVE_VARIABLE(at_final_destination, 2);
SAVE_VARIABLE(escorting, 3);
SAVE_VARIABLE(dialogs_said, 4);
SAVE_VARIABLE(dialogs_said_to_havoc, 5);
}
void Created( GameObject * obj )
{
dialogs_said = 0;
dialogs_said_to_havoc = 0;
player_in_warroom = false;
at_final_destination = false;
escorting = true;
Commands->Enable_Hibernation( obj, false );
Commands->Innate_Soldier_Enable_Gunshot_Heard ( obj, false );
Commands->Innate_Soldier_Enable_Bullet_Heard ( obj, false );
GameObject * HON_MonitorZone = Commands->Find_Object ( 124044 );
if (HON_MonitorZone != NULL)
{
Commands->Send_Custom_Event( obj, HON_MonitorZone, 0, M01_ROPE_IS_SENDING_ID_JDG, 0 );
}
GameObject * MCT_talkZone = Commands->Find_Object ( 124260 );
if (MCT_talkZone != NULL)
{
Commands->Send_Custom_Event( obj, MCT_talkZone, 0, M01_ROPE_IS_SENDING_ID_JDG, 0 );
}
}
//Vector3 myGotoLocation (-187.848f, 526.480f, 3.518f);
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "s_a_human.h_a_troopdrop") == 0)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_WALKING_WAYPATH_01_JDG, 0 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 5 );
}
}
void Killed( GameObject * obj, GameObject * killer )
{
if (escorting == true)
{
GameObject * HON_MonitorZone = Commands->Find_Object ( 124044 );
if (HON_MonitorZone != NULL)
{
Commands->Send_Custom_Event( obj, HON_MonitorZone, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (obj && type == 0)
{
if (param == M01_WALKING_WAYPATH_01_JDG && player_in_warroom == false)
{
float handOfNodHealth = Commands->Get_Health ( Commands->Find_Object ( M01_HAND_OF_NOD_JDG ) );
if (handOfNodHealth > 0)
{
Vector3 myGotoLocation (-187.848f, 526.480f, 3.518f);
ActionParamsStruct params;
params.Set_Basic(this, 60, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement(myGotoLocation, RUN, 1);
Commands->Action_Goto(obj, params);
Commands->Send_Custom_Event( obj, obj, 0, M01_WALKING_WAYPATH_01_JDG, 5 );
}
else
{
Commands->Send_Custom_Event( obj, obj, 0, M01_GOTO_INNATE_JDG, 0 );
}
}
else if (param == M01_START_ACTING_JDG && at_final_destination == false)
{
player_in_warroom = true;
float handOfNodHealth = Commands->Get_Health ( Commands->Find_Object ( M01_HAND_OF_NOD_JDG ) );
if (handOfNodHealth > 0)
{
Vector3 myGotoLocation (-181.084f, 541.058f, 3.518f);
ActionParamsStruct params;
params.Set_Basic(this, 60, M01_WALKING_WAYPATH_02_JDG);
params.Set_Movement(myGotoLocation, WALK, 1);
Commands->Action_Goto(obj, params);
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ACTING_JDG, 5 );
}
else
{
Commands->Send_Custom_Event( obj, obj, 0, M01_GOTO_INNATE_JDG, 0 );
}
}
else if (param == M01_GOTO_INNATE_JDG)//escort scenario is over--go to top of HON and goto innate
{
escorting = false;
Commands->Set_Innate_Is_Stationary ( obj, false );
Commands->Enable_Hibernation( obj, true );
Vector3 myGotoLocation (-181.163f, 534.529f, 10.034f);
ActionParamsStruct params;
params.Set_Basic(this, 60, M01_WALKING_WAYPATH_03_JDG);
params.Set_Movement(myGotoLocation, RUN, 5);
Commands->Action_Goto(obj, params);
Commands->Send_Custom_Event( obj, obj, 0, M01_GOTO_INNATE_JDG, 5 );
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG && escorting == true)//pick a sound to play
{
/*Vector3 myPosition = Commands->Get_Position ( obj );
Vector3 playerPosition = Commands->Get_Position ( STAR );
float distance = Commands->Get_Distance ( myPosition, playerPosition );
if (distance <= 8)
{
if (dialogs_said_to_havoc == 0)
{
Commands->Create_Sound ( "MX1DSGN_DSGN0024I1DSGN_SND", myPosition, obj );//follow us inside
}
else if (dialogs_said_to_havoc == 1)
{
Commands->Create_Sound ( "MX1DSGN_DSGN0027I1DSGN_SND", myPosition, obj );//this way sir
}
dialogs_said_to_havoc++;
if (dialogs_said_to_havoc >= 2)
{
dialogs_said_to_havoc = 1;
}
}
else
{
if (dialogs_said == 0)
{
Commands->Create_Sound ( "MX1DSGN_DSGN0025I1DSGN_SND", myPosition, obj );//lets do it
}
else if (dialogs_said == 1)
{
Commands->Create_Sound ( "MX1DSGN_DSGN0026I1DSGN_SND", myPosition, obj );
}
else if (dialogs_said == 2)
{
Commands->Create_Sound ( "MX1DSGN_DSGN0028I1DSGN_SND", myPosition, obj );
}
dialogs_said++;
if (dialogs_said >= 3)
{
dialogs_said = 0;
}
}
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 5 );*/
}
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
if (complete_reason == ACTION_COMPLETE_NORMAL)
{
if (action_id == M01_WALKING_WAYPATH_02_JDG)
{
float handOfNodHealth = Commands->Get_Health ( Commands->Find_Object ( M01_HAND_OF_NOD_JDG ) );
if (handOfNodHealth > 0)
{
at_final_destination = true;
Commands->Set_Innate_Is_Stationary ( obj, true );
GameObject * MCTspeechZone = Commands->Find_Object ( 124260 );
if (MCTspeechZone != NULL)
{
Commands->Send_Custom_Event( obj, MCTspeechZone, 0, M01_START_ACTING_JDG, 0 );
}
}
else
{
Commands->Send_Custom_Event( obj, obj, 0, M01_GOTO_INNATE_JDG, 0 );
}
}
}
}
};
DECLARE_SCRIPT(M01_HON_Chinook_Spawned_Soldier_02_GDI_JDG, "")
{
bool player_in_warroom;
bool at_final_destination;
bool escorting;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(player_in_warroom, 1);
SAVE_VARIABLE(at_final_destination, 2);
SAVE_VARIABLE(escorting, 3);
}
void Created( GameObject * obj )
{
player_in_warroom = false;
at_final_destination = false;
escorting = true;
Commands->Enable_Hibernation( obj, false );
Commands->Innate_Soldier_Enable_Gunshot_Heard ( obj, false );
Commands->Innate_Soldier_Enable_Bullet_Heard ( obj, false );
GameObject * HON_MonitorZone = Commands->Find_Object ( 124044 );
if (HON_MonitorZone != NULL)
{
Commands->Send_Custom_Event( obj, HON_MonitorZone, 0, M01_WAYPATH_IS_SENDING_ID_JDG, 0 );
}
GameObject * MCT_talkZone = Commands->Find_Object ( 124260 );
if (MCT_talkZone != NULL)
{
Commands->Send_Custom_Event( obj, MCT_talkZone, 0, M01_WAYPATH_IS_SENDING_ID_JDG, 0 );
}
}
//Vector3 myGotoLocation (-188.670f, 530.083f, 3.518f);
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "s_a_human.h_a_troopdrop") == 0)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_WALKING_WAYPATH_01_JDG, 0 );
}
}
void Killed( GameObject * obj, GameObject * killer )
{
if (escorting == true)
{
GameObject * HON_MonitorZone = Commands->Find_Object ( 124044 );
if (HON_MonitorZone != NULL)
{
Commands->Send_Custom_Event( obj, HON_MonitorZone, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (obj && type == 0)
{
if (param == M01_WALKING_WAYPATH_01_JDG && player_in_warroom == false)
{
float handOfNodHealth = Commands->Get_Health ( Commands->Find_Object ( M01_HAND_OF_NOD_JDG ) );
if (handOfNodHealth > 0)
{
Vector3 myGotoLocation (-188.670f, 530.083f, 3.518f);
ActionParamsStruct params;
params.Set_Basic(this, 60, M01_WALKING_WAYPATH_01_JDG);
params.Set_Movement(myGotoLocation, RUN, 1);
Commands->Action_Goto(obj, params);
Commands->Send_Custom_Event( obj, obj, 0, M01_WALKING_WAYPATH_01_JDG, 5 );
}
else
{
Commands->Send_Custom_Event( obj, obj, 0, M01_GOTO_INNATE_JDG, 0 );
}
}
else if (param == M01_START_ACTING_JDG && at_final_destination == false)
{
player_in_warroom = true;
float handOfNodHealth = Commands->Get_Health ( Commands->Find_Object ( M01_HAND_OF_NOD_JDG ) );
if (handOfNodHealth > 0)
{
Vector3 myGotoLocation (-179.440f, 535.697f, 3.518f);
ActionParamsStruct params;
params.Set_Basic(this, 60, M01_WALKING_WAYPATH_02_JDG);
params.Set_Movement(myGotoLocation, WALK, 0);
Commands->Action_Goto(obj, params);
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ACTING_JDG, 5 );
}
else
{
Commands->Send_Custom_Event( obj, obj, 0, M01_GOTO_INNATE_JDG, 0 );
}
}
else if (param == M01_GOTO_INNATE_JDG)//escort scenario is over--go to top of HON and goto innate
{
escorting = false;
Commands->Set_Innate_Is_Stationary ( obj, false );
Commands->Enable_Hibernation( obj, true );
Vector3 myGotoLocation (-178.263f, 528.363f, 10.034f);
ActionParamsStruct params;
params.Set_Basic(this, 60, M01_WALKING_WAYPATH_03_JDG);
params.Set_Movement(myGotoLocation, RUN, 5);
Commands->Action_Goto(obj, params);
Commands->Send_Custom_Event( obj, obj, 0, M01_GOTO_INNATE_JDG, 5 );
}
}
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
if (complete_reason == ACTION_COMPLETE_NORMAL)
{
if (action_id == M01_WALKING_WAYPATH_02_JDG)
{
float handOfNodHealth = Commands->Get_Health ( Commands->Find_Object ( M01_HAND_OF_NOD_JDG ) );
if (handOfNodHealth > 0)
{
at_final_destination = true;
Commands->Set_Innate_Is_Stationary ( obj, true );
GameObject * MCTspeechZone = Commands->Find_Object ( 124260 );
if (MCTspeechZone != NULL)
{
Commands->Send_Custom_Event( obj, MCTspeechZone, 0, M01_START_ACTING_JDG, 0 );
}
}
else
{
Commands->Send_Custom_Event( obj, obj, 0, M01_GOTO_INNATE_JDG, 0 );
}
}
}
}
};
DECLARE_SCRIPT(M01_GiveMCTSpeech_Zone_JDG, "")//124260
{
bool commandClearance;
bool player_in_warroom;
int gdiGuy01_id;
int gdiGuy02_id;
bool convPlaying;
int hon_gdi_guy_conv1;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(commandClearance, 1);
SAVE_VARIABLE(player_in_warroom, 2);
SAVE_VARIABLE(gdiGuy01_id, 3);
SAVE_VARIABLE(gdiGuy02_id, 4);
SAVE_VARIABLE(convPlaying, 5);
SAVE_VARIABLE(hon_gdi_guy_conv1, 6);
}
void Created( GameObject * obj )
{
player_in_warroom = false;
commandClearance = false;
convPlaying = false;
gdiGuy01_id = 0;
gdiGuy02_id = 0;
}
void Action_Complete( GameObject * obj, int action_id, ActionCompleteReason complete_reason )
{
if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
{
if (action_id == hon_gdi_guy_conv1)
{
GameObject * gdiGuy01 = Commands->Find_Object ( gdiGuy01_id );
GameObject * gdiGuy02 = Commands->Find_Object ( gdiGuy02_id );
if (gdiGuy01 != NULL)
{
Commands->Send_Custom_Event( obj, gdiGuy01, 0, M01_GOTO_INNATE_JDG, 0 );
}
if (gdiGuy02 != NULL)
{
Commands->Send_Custom_Event( obj, gdiGuy02, 0, M01_GOTO_INNATE_JDG, 0 );
}
Commands->Destroy_Object ( obj );
}
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (obj && type == 0)
{
if (param == M01_ROPE_IS_SENDING_ID_JDG)//gdi guy 01 is actually sending his id
{
gdiGuy01_id = Commands->Get_ID ( sender );
}
else if (param == M01_WAYPATH_IS_SENDING_ID_JDG)//gdi guy 02 is actually sending his id
{
gdiGuy02_id = Commands->Get_ID ( sender );
}
else if (param == M01_START_ACTING_JDG)
{
commandClearance = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG)
{
if (commandClearance == true && player_in_warroom == true)
{
GameObject * gdiGuy01 = Commands->Find_Object ( gdiGuy01_id );
GameObject * gdiGuy02 = Commands->Find_Object ( gdiGuy02_id );
if (gdiGuy01 != NULL && convPlaying == false)
{
convPlaying = true;
hon_gdi_guy_conv1 = Commands->Create_Conversation( "M01_GDI_HON_MCT", 100, 1000, false);
Commands->Join_Conversation( gdiGuy01, hon_gdi_guy_conv1, false, true, true );
Commands->Join_Conversation( STAR, hon_gdi_guy_conv1, false, false, false );
Commands->Start_Conversation( hon_gdi_guy_conv1, hon_gdi_guy_conv1 );
Commands->Monitor_Conversation( obj, hon_gdi_guy_conv1 );
}
else if (gdiGuy02 != NULL && convPlaying == false)
{
convPlaying = true;
hon_gdi_guy_conv1 = Commands->Create_Conversation( "M01_GDI_HON_MCT", 100, 1000, false);
Commands->Join_Conversation( gdiGuy02, hon_gdi_guy_conv1, false, true, true );
Commands->Join_Conversation( STAR, hon_gdi_guy_conv1, false, false, false );
Commands->Start_Conversation( hon_gdi_guy_conv1, hon_gdi_guy_conv1 );
Commands->Monitor_Conversation( obj, hon_gdi_guy_conv1 );
}
}
}
}
}
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
player_in_warroom = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
}
void Exited( GameObject * obj, GameObject * exiter )
{
if (exiter == STAR)
{
player_in_warroom = false;
}
}
};
DECLARE_SCRIPT(M01_Havoc_In_WarroomZone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject * HON_MonitorZone = Commands->Find_Object ( 124044 );
if (HON_MonitorZone != NULL)
{
Commands->Send_Custom_Event( obj, HON_MonitorZone, 0, M01_PLAYER_IS_INSIDE_REFINERY_JDG, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_Havoc_Out_WarroomZone_JDG, "")
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
GameObject * HON_MonitorZone = Commands->Find_Object ( 124044 );
if (HON_MonitorZone != NULL)
{
Commands->Send_Custom_Event( obj, HON_MonitorZone, 0, M01_PLAYER_IS_OUTSIDE_REFINERY_JDG, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_HON_WarroomController_JDG, "")//124044
{
int gdiGuy01_id;
int gdiGuy02_id;
bool player_in_warroom;
bool scenario_over;
int dead_soldier_tally;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(gdiGuy01_id, 1);
SAVE_VARIABLE(gdiGuy02_id, 2);
SAVE_VARIABLE(player_in_warroom, 3);
SAVE_VARIABLE(scenario_over, 4);
SAVE_VARIABLE(dead_soldier_tally, 5);
}
void Created( GameObject * obj )
{
gdiGuy01_id = 0;
gdiGuy02_id = 0;
player_in_warroom = false;
scenario_over = false;
dead_soldier_tally = 0;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (obj && type == 0)
{
if (param == M01_ROPE_IS_SENDING_ID_JDG)//gdi guy 01 is actually sending his id
{
gdiGuy01_id = Commands->Get_ID ( sender );
}
else if (param == M01_WAYPATH_IS_SENDING_ID_JDG)//gdi guy 02 is actually sending his id
{
gdiGuy02_id = Commands->Get_ID ( sender );
}
else if (param == M01_PLAYER_IS_INSIDE_REFINERY_JDG)//player is actually in warroom
{
player_in_warroom = true;
}
else if (param == M01_PLAYER_IS_OUTSIDE_REFINERY_JDG)//player just left the warroom
{
player_in_warroom = false;
}
else if (param == M01_IVE_BEEN_KILLED_JDG)
{
dead_soldier_tally++;
if (dead_soldier_tally == 2)
{
dead_soldier_tally = 0;
GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-147.1f, 558.8f, 4.4f));
Commands->Set_Facing(chinook_obj1, -130.00f);
Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X1I_GDI_HON_TroopDrop01a.txt");
}
}
}
}
void Entered( GameObject * obj, GameObject * enterer )
{
GameObject * gdiGuy01 = Commands->Find_Object ( gdiGuy01_id );
GameObject * gdiGuy02 = Commands->Find_Object ( gdiGuy02_id );
if (enterer == gdiGuy01)
{
if (player_in_warroom == false)
{
Commands->Apply_Damage( gdiGuy01, 10000.0f, "STEEL");
}
else if (gdiGuy01 != NULL)
{
Commands->Send_Custom_Event( obj, gdiGuy01, 0, M01_START_ACTING_JDG, 0 );
}
}
else if (enterer == gdiGuy02)
{
if (player_in_warroom == false)
{
Commands->Apply_Damage( gdiGuy02, 10000.0f, "STEEL");
}
else if (gdiGuy02 != NULL)
{
Commands->Send_Custom_Event( obj, gdiGuy02, 0, M01_START_ACTING_JDG, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_Medium_Tank01_JDG, "")
{
void Created( GameObject * obj )
{
GameObject * hovercraftExplosionController = Commands->Find_Object ( 121839 );
if (hovercraftExplosionController != NULL)
{
Commands->Send_Custom_Event( obj, hovercraftExplosionController, 0, M01_MEDIUM_TANK_IS_HERE_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_CantBring_MediumTank_ThroughHereZone_JDG, "")
{
bool player_in_tank;
int tank_id;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(player_in_tank, 1);
SAVE_VARIABLE(tank_id, 2);
}
void Created( GameObject * obj )
{
player_in_tank = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_MODIFY_YOUR_ACTION_JDG )
{
player_in_tank = true;
}
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG )
{
player_in_tank = false;
}
else if (param == M01_MODIFY_YOUR_ACTION_03_JDG )//medium tank is sending his id
{
tank_id = Commands->Get_ID ( sender );
}
}
}
void Entered( GameObject * obj, GameObject * enterer )
{
GameObject * tank = Commands->Find_Object ( tank_id );
if (enterer == tank)
{
if (player_in_tank == true)//M01_Must_Leave_Tank_Conversation
{
int hoofit_conv = Commands->Create_Conversation( "M01_Must_Leave_Tank_Conversation", 100, 100, true);
Commands->Join_Conversation( NULL, hoofit_conv, true, true );
Commands->Start_Conversation( hoofit_conv, hoofit_conv );
Commands->Destroy_Object ( obj );
}
}
}
};
DECLARE_SCRIPT(M01_Medium_Tank_JDG, "")
{
bool firstTimeEntered;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(firstTimeEntered, 1);
}
void Created( GameObject * obj )
{
Commands->Create_Sound ( "m00evag_dsgn0009i1evag_snd", Vector3 (0,0,0), obj);
firstTimeEntered = true;
int m01_medium_tank_ID = Commands->Get_ID ( obj );
GameObject * tunnelZone = Commands->Find_Object ( M01_TANK_TUNNEL_ZONE_ID );
if (tunnelZone != NULL)
{
Commands->Send_Custom_Event( obj, tunnelZone, M01_MEDIUM_TANK_IS_HERE_JDG, m01_medium_tank_ID, 0 );
}
GameObject * honSamSite = Commands->Find_Object ( M01_HON_SAM_SITE_JDG );
if (honSamSite != NULL)
{
Commands->Send_Custom_Event( obj, honSamSite, M00_CUSTOM_SAM_SITE_IGNORE, m01_medium_tank_ID, 0 );
}
GameObject * fodderHovercraftController = Commands->Find_Object ( 121630 );
if (fodderHovercraftController != NULL)
{
Commands->Destroy_Object ( fodderHovercraftController );
}
GameObject * tankReminderZone = Commands->Find_Object ( 122848 );
if (tankReminderZone != NULL)
{
Commands->Send_Custom_Event( obj, tankReminderZone, 0, M01_START_ACTING_JDG, 0 );
}
GameObject * tankBarrierZone = Commands->Find_Object ( 125661 );
if (tankBarrierZone != NULL)
{
Commands->Send_Custom_Event( obj, tankBarrierZone, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 0 );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender ) //
{
if (type == CUSTOM_EVENT_VEHICLE_ENTERED )
{
if (firstTimeEntered == true)
{
firstTimeEntered = false;
Vector3 guy01Position (40.286f, 151.346f, 2.107f);
Vector3 guy02Position (47.476f, 163.355f, 2.458f);
Vector3 guy03Position (59.446f, 175.107f, -0.453f);
GameObject * tunnelGuy01 = Commands->Create_Object ( "Nod_Minigunner_0", guy01Position );
GameObject * tunnelGuy02 = Commands->Create_Object ( "Nod_Minigunner_0", guy02Position );
GameObject * tunnelGuy03 = Commands->Create_Object ( "Nod_Minigunner_0", guy03Position );
Commands->Attach_Script(tunnelGuy01, "M01_Medium_Tank_Tunnel_Squish_Guy_JDG", "");
Commands->Attach_Script(tunnelGuy02, "M01_Medium_Tank_Tunnel_Squish_Guy_JDG", "");
Commands->Attach_Script(tunnelGuy03, "M01_Medium_Tank_Tunnel_Squish_Guy_JDG", "");
Commands->Action_Reset ( obj, 100 );
}
GameObject * tankReminderZone = Commands->Find_Object ( 122848 );
if (tankReminderZone != NULL)
{
Commands->Send_Custom_Event( obj, tankReminderZone, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
GameObject * tankBarrierZone = Commands->Find_Object ( 125661 );
if (tankBarrierZone != NULL)
{
Commands->Send_Custom_Event( obj, tankBarrierZone, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
}
else if (type == CUSTOM_EVENT_VEHICLE_EXITED )
{
GameObject * tankReminderZone = Commands->Find_Object ( 122848 );
if (tankReminderZone != NULL)
{
Commands->Send_Custom_Event( obj, tankReminderZone, 0, M01_MODIFY_YOUR_ACTION_02_JDG, 0 );
}
GameObject * tankBarrierZone = Commands->Find_Object ( 125661 );
if (tankBarrierZone != NULL)
{
Commands->Send_Custom_Event( obj, tankBarrierZone, 0, M01_MODIFY_YOUR_ACTION_02_JDG, 0 );
}
}
}
};
DECLARE_SCRIPT(M01_TurretBeach_FodderHovercraft_Controller_JDG, "")//121630 M01_START_ACTING_JDG
{
int hovercraft_ID;
bool hovercraftAlive;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(hovercraftAlive, 1);
SAVE_VARIABLE(hovercraft_ID, 2);
}
void Created( GameObject * obj )
{
hovercraftAlive = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ACTING_JDG && hovercraftAlive == false)//turret objective has been added--start bringing in hovercraft
{
GameObject * oldHovercraft = Commands->Find_Object ( hovercraft_ID );
if (oldHovercraft == NULL)
{
hovercraftAlive = true;
GameObject * hovercraft = Commands->Create_Object ( "Invisible_Object", Vector3 (0,0,0));
Commands->Attach_Script(hovercraft, "Test_Cinematic", "X1D_FodderHover_MTank.txt");
}
else
{
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ACTING_JDG, 5 );
}
}
else if (param == M01_IVE_BEEN_KILLED_JDG)
{
hovercraftAlive = false;
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ACTING_JDG, 15 );
}
else if (param == 0)//hovercraft is sending you its ID
{
hovercraft_ID = Commands->Get_ID ( sender );
hovercraftAlive = true;
GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
if (turret01 != NULL)
{
Commands->Send_Custom_Event( obj, turret01, M01_FODDER_HOVERCRAFT_IS_HERE, hovercraft_ID, 1 );
}
GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if (turret02 != NULL)
{
Commands->Send_Custom_Event( obj, turret02, M01_FODDER_HOVERCRAFT_IS_HERE, hovercraft_ID, 1 );
}
//Commands->Send_Custom_Event( obj, obj, 0, M01_START_ACTING_JDG, 15 );
}
}
}
};
DECLARE_SCRIPT(M01_Hovercraft_Explosion_Controller_JDG, "")//121839
{
int tank_id;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(tank_id, 1);
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_MEDIUM_TANK_IS_HERE_JDG)//medium tank is sending its id
{
tank_id = Commands->Get_ID ( sender );
}
else if (param == M01_IVE_BEEN_KILLED_JDG)//hovercraft has been destroyed--delete tank and play explosion
{
GameObject * mediumTank = Commands->Find_Object ( tank_id );
if (mediumTank != NULL)
{
//Commands->Destroy_Object ( mediumTank );
Commands->Apply_Damage( mediumTank, 100000, "Steel", NULL );
}
}
}
}
};
DECLARE_SCRIPT(M01_FodderHovercraft_Script_JDG, "")
{
void Created( GameObject * obj )
{
GameObject * fodderHovercraftController = Commands->Find_Object ( 121630 );
if (fodderHovercraftController != NULL)
{
Commands->Send_Custom_Event( obj, fodderHovercraftController, 0, 0, 0 );
}
//GameObject * hovercraftExplosionController = Commands->Find_Object ( 121839 );
//if (hovercraftExplosionController != NULL)
//{
// Commands->Send_Custom_Event( obj, hovercraftExplosionController, 0, M01_CHOPPER_IS_SENDING_ID_JDG, 0 );
//}
float delayTimer = Commands->Get_Random ( 5, 8 );
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ACTING_JDG, delayTimer );
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
//GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
//GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
//if ((damager == turret01) || (damager == turret02))
//{
// Commands->Apply_Damage( obj, 100000, "STEEL", NULL );
//}
}
void Killed( GameObject * obj, GameObject * killer )
{
//Vector3 myPosition = Commands->Get_Position ( obj );
//Commands->Create_Explosion ( "Ground Explosions Twiddler", myPosition, NULL );
GameObject * fodderHovercraftController = Commands->Find_Object ( 121630 );
if (fodderHovercraftController != NULL)
{
Commands->Send_Custom_Event( obj, fodderHovercraftController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
//GameObject * fodderHovercraftController = Commands->Find_Object ( 121630 );
//if (fodderHovercraftController != NULL)
//{
// Commands->Send_Custom_Event( obj, fodderHovercraftController, 0, M01_START_ACTING_JDG, 5 );
//}
GameObject * hovercraftExplosionController = Commands->Find_Object ( 121839 );
if (hovercraftExplosionController != NULL)
{
Commands->Send_Custom_Event( obj, hovercraftExplosionController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_START_ACTING_JDG)
{
GameObject * turret01 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_01_ID );
GameObject * turret02 = Commands->Find_Object ( M01_TURRETBEACH_TURRET_02_ID );
if (turret01 != NULL)
{
Commands->Apply_Damage( obj, 100000, "STEEL", NULL );
}
else if (turret02 != NULL)
{
Commands->Apply_Damage( obj, 100000, "STEEL", NULL );
}
}
}
}
};
DECLARE_SCRIPT(M01_Beach_Datadisc_JDG, "")
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ( type == CUSTOM_EVENT_POWERUP_GRANTED ) //shows the GDI base
{
Commands->Set_HUD_Help_Text (IDS_M00EVAG_DSGN0103I1EVAG_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY);
GameObject * dataDiskController = Commands->Find_Object ( 117188 );
if (dataDiskController != NULL)
{
Commands->Send_Custom_Event( obj, dataDiskController, 0, 10, 2 );
}
Commands->Clear_Map_Cell ( 10, 15 );
Commands->Clear_Map_Cell ( 10, 16 );
Commands->Clear_Map_Cell ( 10, 17 );
Commands->Clear_Map_Cell ( 10, 18 );
Commands->Clear_Map_Cell ( 10, 19 );
Commands->Clear_Map_Cell ( 10, 20 );
Commands->Clear_Map_Cell ( 11, 15 );
Commands->Clear_Map_Cell ( 11, 16 );
Commands->Clear_Map_Cell ( 11, 17 );
Commands->Clear_Map_Cell ( 11, 18 );
Commands->Clear_Map_Cell ( 11, 19 );
Commands->Clear_Map_Cell ( 11, 20 );
Commands->Clear_Map_Cell ( 12, 15 );
Commands->Clear_Map_Cell ( 12, 16 );
Commands->Clear_Map_Cell ( 12, 17 );
Commands->Clear_Map_Cell ( 12, 18 );
Commands->Clear_Map_Cell ( 12, 19 );
Commands->Clear_Map_Cell ( 12, 20 );
Commands->Clear_Map_Cell ( 13, 15 );
Commands->Clear_Map_Cell ( 13, 16 );
Commands->Clear_Map_Cell ( 13, 17 );
Commands->Clear_Map_Cell ( 13, 18 );
Commands->Clear_Map_Cell ( 13, 19 );
Commands->Clear_Map_Cell ( 13, 20 );
Commands->Clear_Map_Cell ( 14, 15 );
Commands->Clear_Map_Cell ( 14, 16 );
Commands->Clear_Map_Cell ( 14, 17 );
Commands->Clear_Map_Cell ( 14, 18 );
Commands->Clear_Map_Cell ( 14, 19 );
Commands->Clear_Map_Cell ( 14, 20 );
}
}
};
DECLARE_SCRIPT(M01_TibCave01_Datadisc_JDG, "")//shows the barn area
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ( type == CUSTOM_EVENT_POWERUP_GRANTED )
{
Commands->Set_HUD_Help_Text (IDS_M00EVAG_DSGN0103I1EVAG_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY);
GameObject * dataDiskController = Commands->Find_Object ( 117188 );
if (dataDiskController != NULL)
{
Commands->Send_Custom_Event( obj, dataDiskController, 0, 10, 2 );
}
Commands->Clear_Map_Cell ( 6, 13 );
Commands->Clear_Map_Cell ( 6, 14 );
Commands->Clear_Map_Cell ( 7, 11 );
Commands->Clear_Map_Cell ( 7, 12 );
Commands->Clear_Map_Cell ( 7, 13 );
Commands->Clear_Map_Cell ( 7, 14 );
Commands->Clear_Map_Cell ( 7, 15 );
Commands->Clear_Map_Cell ( 8, 11 );
Commands->Clear_Map_Cell ( 8, 12 );
Commands->Clear_Map_Cell ( 8, 13 );
Commands->Clear_Map_Cell ( 8, 14 );
Commands->Clear_Map_Cell ( 8, 15 );
Commands->Clear_Map_Cell ( 9, 11 );
Commands->Clear_Map_Cell ( 9, 12 );
Commands->Clear_Map_Cell ( 9, 13 );
Commands->Clear_Map_Cell ( 9, 14 );
Commands->Clear_Map_Cell ( 9, 15 );
Commands->Clear_Map_Cell ( 10, 11 );
Commands->Clear_Map_Cell ( 10, 12 );
Commands->Clear_Map_Cell ( 10, 13 );
Commands->Clear_Map_Cell ( 10, 14 );
Commands->Clear_Map_Cell ( 10, 15 );
Commands->Clear_Map_Cell ( 11, 12 );
Commands->Clear_Map_Cell ( 11, 13 );
Commands->Clear_Map_Cell ( 11, 14 );
Commands->Clear_Map_Cell ( 11, 15 );
}
}
};
DECLARE_SCRIPT(M01_Shed_Datadisc_JDG, "")//shows the light tank area
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ( type == CUSTOM_EVENT_POWERUP_GRANTED )
{
Commands->Set_HUD_Help_Text (IDS_M00EVAG_DSGN0103I1EVAG_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY);
GameObject * dataDiskController = Commands->Find_Object ( 117188 );
if (dataDiskController != NULL)
{
Commands->Send_Custom_Event( obj, dataDiskController, 0, 10, 2 );
}
Commands->Clear_Map_Cell ( 9, 9 );
Commands->Clear_Map_Cell ( 9, 10 );
Commands->Clear_Map_Cell ( 10, 9 );
Commands->Clear_Map_Cell ( 10, 10 );
Commands->Clear_Map_Cell ( 10, 11 );
Commands->Clear_Map_Cell ( 11, 9 );
Commands->Clear_Map_Cell ( 11, 10 );
Commands->Clear_Map_Cell ( 11, 11 );
Commands->Clear_Map_Cell ( 11, 12 );
Commands->Clear_Map_Cell ( 12, 9 );
Commands->Clear_Map_Cell ( 12, 10 );
Commands->Clear_Map_Cell ( 12, 11 );
Commands->Clear_Map_Cell ( 12, 12 );
Commands->Clear_Map_Cell ( 13, 9 );
Commands->Clear_Map_Cell ( 13, 10 );
Commands->Clear_Map_Cell ( 13, 11 );
Commands->Clear_Map_Cell ( 13, 12 );
Commands->Clear_Map_Cell ( 14, 10 );
Commands->Clear_Map_Cell ( 14, 11 );
Commands->Clear_Map_Cell ( 14, 12 );
}
}
};
DECLARE_SCRIPT(M01_TibCave02_Datadisc_JDG, "")//tib cave no
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ( type == CUSTOM_EVENT_POWERUP_GRANTED ) //shows the church and tib field
{
Commands->Set_HUD_Help_Text (IDS_M00EVAG_DSGN0103I1EVAG_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY);
GameObject * dataDiskController = Commands->Find_Object ( 117188 );
if (dataDiskController != NULL)
{
Commands->Send_Custom_Event( obj, dataDiskController, 0, 10, 2 );
}
Commands->Clear_Map_Cell ( 6, 5 );
Commands->Clear_Map_Cell ( 6, 6 );
Commands->Clear_Map_Cell ( 6, 7 );
Commands->Clear_Map_Cell ( 6, 8 );
Commands->Clear_Map_Cell ( 6, 9 );
Commands->Clear_Map_Cell ( 7, 5 );
Commands->Clear_Map_Cell ( 7, 6 );
Commands->Clear_Map_Cell ( 7, 7 );
Commands->Clear_Map_Cell ( 7, 8 );
Commands->Clear_Map_Cell ( 7, 9 );
Commands->Clear_Map_Cell ( 8, 5 );
Commands->Clear_Map_Cell ( 8, 6 );
Commands->Clear_Map_Cell ( 8, 7 );
Commands->Clear_Map_Cell ( 8, 8 );
Commands->Clear_Map_Cell ( 8, 9 );
Commands->Clear_Map_Cell ( 9, 5 );
Commands->Clear_Map_Cell ( 9, 6 );
Commands->Clear_Map_Cell ( 9, 7 );
Commands->Clear_Map_Cell ( 9, 8 );
Commands->Clear_Map_Cell ( 9, 9 );
Commands->Clear_Map_Cell ( 10, 5 );
Commands->Clear_Map_Cell ( 10, 6 );
Commands->Clear_Map_Cell ( 10, 7 );
Commands->Clear_Map_Cell ( 10, 8 );
Commands->Clear_Map_Cell ( 10, 9 );
Commands->Clear_Map_Cell ( 11, 6 );
Commands->Clear_Map_Cell ( 11, 7 );
Commands->Clear_Map_Cell ( 11, 8 );
Commands->Clear_Map_Cell ( 11, 9 );
}
}
};
DECLARE_SCRIPT(M01_Priest_Datadisc_JDG, "")
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ( type == CUSTOM_EVENT_POWERUP_GRANTED ) //shows the hand of nod
{
Commands->Set_HUD_Help_Text (IDS_M00EVAG_DSGN0103I1EVAG_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY);
GameObject * dataDiskController = Commands->Find_Object ( 117188 );
if (dataDiskController != NULL)
{
Commands->Send_Custom_Event( obj, dataDiskController, 0, 10, 2 );
}
Commands->Clear_Map_Cell ( 5, 1 );
Commands->Clear_Map_Cell ( 5, 2 );
Commands->Clear_Map_Cell ( 5, 3 );
Commands->Clear_Map_Cell ( 5, 4 );
Commands->Clear_Map_Cell ( 5, 5 );
Commands->Clear_Map_Cell ( 6, 1 );
Commands->Clear_Map_Cell ( 6, 2 );
Commands->Clear_Map_Cell ( 6, 3 );
Commands->Clear_Map_Cell ( 6, 4 );
Commands->Clear_Map_Cell ( 6, 5 );
Commands->Clear_Map_Cell ( 7, 1 );
Commands->Clear_Map_Cell ( 7, 2 );
Commands->Clear_Map_Cell ( 7, 3 );
Commands->Clear_Map_Cell ( 7, 4 );
Commands->Clear_Map_Cell ( 7, 5 );
Commands->Clear_Map_Cell ( 8, 1 );
Commands->Clear_Map_Cell ( 8, 2 );
Commands->Clear_Map_Cell ( 8, 3 );
Commands->Clear_Map_Cell ( 8, 4 );
Commands->Clear_Map_Cell ( 8, 5 );
Commands->Clear_Map_Cell ( 9, 1 );
Commands->Clear_Map_Cell ( 9, 2 );
Commands->Clear_Map_Cell ( 9, 3 );
Commands->Clear_Map_Cell ( 9, 4 );
Commands->Clear_Map_Cell ( 9, 5 );
}
}
};
DECLARE_SCRIPT(M01_Medlab_Datadisc_JDG, "")
{
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ( type == CUSTOM_EVENT_POWERUP_GRANTED )
{
Commands->Set_HUD_Help_Text (IDS_M00EVAG_DSGN0103I1EVAG_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY);
Commands->Reveal_Map ( );
GameObject * dataDiskController = Commands->Find_Object ( 117188 );
if (dataDiskController != NULL)
{
Commands->Send_Custom_Event( obj, dataDiskController, 0, 10, 2 );
}
}
}
};
DECLARE_SCRIPT(M01_DataDisc_TextController_JDG, "")//117188
{
bool playingText;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(playingText, 1);
}
void Created( GameObject * obj )
{
playingText = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if ( type == 0 )
{
if (param == 10)//now show the text message for ESC key
{
playingText = true;
int pressEnterConv = Commands->Create_Conversation( "M01_Press_ESC_for_Map_Conversation", 100, 1000, true);
Commands->Join_Conversation( NULL, pressEnterConv, false, false );
Commands->Start_Conversation( pressEnterConv, pressEnterConv );
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0517I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
Commands->Send_Custom_Event( obj, obj, 0, 11, 2 );
}
else if (param == 11)
{
playingText = false;
}
}
else if (type == 1)
{
if (param == 1 && playingText == false)//player has picked up a C4 -- start text routine
{
int pressF1Conv = Commands->Create_Conversation( "M01_C4_Tutorial_Conversation", 100, 1000, true);
Commands->Join_Conversation( NULL, pressF1Conv, false, false );
Commands->Start_Conversation( pressF1Conv, pressF1Conv );
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0519I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );//Press '9' to select Remote C4.\n
Commands->Send_Custom_Event( obj, obj, 1, 2, 2 );
playingText = true;
}
else if (param == 2)
{
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0523I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );//Left-click your mouse to place C4.\n
Commands->Send_Custom_Event( obj, obj, 1, 3, 2 );
}
else if (param == 3)
{
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0524I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );//Right-click your mouse to detonate.\n
Commands->Send_Custom_Event( obj, obj, 1, 4, 2 );
}
else if (param == 4)
{
playingText = false;
}
}
else if (type == 2)//player has picked up sniper rifle
{
if (param == 1 && playingText == false)//player has picked up a C4 -- start text routine
{
int pressF1Conv = Commands->Create_Conversation( "M01_Sniper_Tutorial_Conversation", 100, 1000, true);
Commands->Join_Conversation( NULL, pressF1Conv, false, false );
Commands->Start_Conversation( pressF1Conv, pressF1Conv );
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0518I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );//Press '3' to select your Sniper Rifle.\n
Commands->Send_Custom_Event( obj, obj, 2, 2, 2 );
playingText = true;
}
else if (param == 2)
{
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0521I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );//Right-click your mouse for sniper mode.\n
Commands->Send_Custom_Event( obj, obj, 2, 3, 2 );
}
else if (param == 3)
{
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0522I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );//Use the mouse wheel or 'G' and 'T' to zoom.\n
Commands->Send_Custom_Event( obj, obj, 2, 4, 2 );
}
else if (param == 4)
{
playingText = false;
}
}
}
};
DECLARE_SCRIPT(M01_Duncan_Assailer_JDG, "")
{
void Killed( GameObject * obj, GameObject * killer )
{
GameObject * convController = Commands->Find_Object ( 125857 );
if (convController != NULL)
{
Commands->Send_Custom_Event( obj, convController, 0, M01_IVE_BEEN_KILLED_JDG, 0 );
}
}
};
DECLARE_SCRIPT(M01_Duncan_InHere_ConvController_JDG, "")
{
int deadNodGuys;
bool duncanDiscovered;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(deadNodGuys, 1);
SAVE_VARIABLE(duncanDiscovered, 2);
}
void Created( GameObject * obj )
{
deadNodGuys = 0;
duncanDiscovered = false;
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
if (type == 0)
{
if (param == M01_IVE_BEEN_KILLED_JDG)
{
deadNodGuys++;
if (deadNodGuys >= 4)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ACTING_JDG, 2 );
}
}
else if (param == M01_START_ACTING_JDG && duncanDiscovered == false)//start playing "in here" conversation
{
GameObject * captDuncan = Commands->Find_Object ( 106050 );
if (captDuncan)
{
int inhere_conv = Commands->Create_Conversation( "M01_DuncanInHere_Conversation", 100, 20, false);
Commands->Join_Conversation( captDuncan, inhere_conv, false, true, true );
Commands->Join_Conversation( STAR, inhere_conv, false, false, false );
Commands->Start_Conversation( inhere_conv, inhere_conv );
Commands->Send_Custom_Event( obj, obj, 0, M01_START_ACTING_JDG, 10 );
}
}
else if (param == M01_MODIFY_YOUR_ACTION_JDG)
{
duncanDiscovered = true;
}
}
}
};
DECLARE_SCRIPT(M01_BackPath_EntranceZone_JDG, "")//121433
{
void Entered( GameObject * obj, GameObject * enterer )
{
if (enterer == STAR)
{
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)
{
GameObject * gdiMinigunner = Commands->Find_Object ( 116382 );
if (gdiMinigunner != NULL)
{
Commands->Send_Custom_Event( obj, gdiMinigunner, 0, M01_MODIFY_YOUR_ACTION_06_JDG, 0 );
//this tells him to start the "this is the path" routine
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_02_JDG, 2 );
}
}
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG)
{
GameObject * grenadier = Commands->Find_Object ( 116383 );
if (grenadier != NULL)
{
Commands->Send_Custom_Event( obj, grenadier, 0, M01_MODIFY_YOUR_ACTION_06_JDG, 0 );//tell grenadier to go down back path too
}
Commands->Destroy_Object ( obj );
}
}
}
};
DECLARE_SCRIPT(M01_Base_GDI_Minigunner_JDG, "")//116382
{
int gdi01conv01;
int gdi01conv02;
int gdi01conv03;
float currentHealth;
bool invincible;
bool ducanRescued;
bool headingDownBackPath;
bool still_in_GDI_Base;
bool damagedByNod;
bool havocDownPath;
REGISTER_VARIABLES()
{
SAVE_VARIABLE(gdi01conv01, 1);
SAVE_VARIABLE(gdi01conv02, 2);
SAVE_VARIABLE(currentHealth, 3);
SAVE_VARIABLE(invincible, 4);
SAVE_VARIABLE(gdi01conv03, 5);
SAVE_VARIABLE(ducanRescued, 6);
SAVE_VARIABLE(headingDownBackPath, 7);
SAVE_VARIABLE(still_in_GDI_Base, 8);
SAVE_VARIABLE(damagedByNod, 9);
SAVE_VARIABLE(havocDownPath, 10);
}
void Created( GameObject * obj ) //this guy starts in the guard tower firing over at the conyard
{
havocDownPath = false;
damagedByNod = false;
invincible = true;
ducanRescued = false;
still_in_GDI_Base = true;
headingDownBackPath = false;
currentHealth = Commands->Get_Health ( obj );
GameObject *controller1 = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
Commands->Attach_Script(controller1, "Test_Cinematic", "X1C_Intro.txt");
Vector3 myTarget (72.223f, -24.751f, -0.296f);
ActionParamsStruct params;
Commands->Set_Innate_Is_Stationary ( obj, true );
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_MODIFY_YOUR_ACTION_JDG, 2 );//in 2 seconds run to a new position
}
void Animation_Complete(GameObject * obj, const char *anim)
{
if (stricmp(anim, "S_A_Human.XG_EV5_troop") == 0)
{
Commands->Destroy_Object ( obj );
}
}
void Damaged( GameObject * obj, GameObject * damager, float amount )
{
GameObject * grenadier = Commands->Find_Object ( 116383 );
GameObject * nodGuy01 = Commands->Find_Object ( 116388 );
GameObject * nodGuy02 = Commands->Find_Object ( 116387 );
if (damager == nodGuy01 || damager == nodGuy02)
{
if (damagedByNod == false)
{
damagedByNod = true;
Commands->Send_Custom_Event( obj, obj, 0, M01_WALKING_WAYPATH_04_JDG, 0 );
}
}
if (invincible == true)
{
float myCurrentHealth = Commands->Get_Health ( obj );
if (myCurrentHealth <= 10)
{
Commands->Set_Health ( obj, 10 );
}
}
else if (obj && damager == grenadier)
{
Commands->Set_Health ( obj, currentHealth );
}
else if (obj)
{
currentHealth = Commands->Get_Health ( obj );
}
}
void Custom( GameObject * obj, int type, int param, GameObject * sender )
{
ActionParamsStruct params;
if (type == 0)
{
if (param == M01_MODIFY_YOUR_ACTION_JDG)//leave the guard tower and take up second position outside guard tower
{
Vector3 newPosition (66.771f, -38.435f, -0.058f);
Vector3 myTarget (72.223f, -24.751f, -0.296f);
Commands->Set_Innate_Is_Stationary ( obj, false );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_01_JDG );
params.Set_Attack( myTarget, 1000, 0, true );
params.Set_Movement(newPosition, RUN, 1);
Commands->Action_Goto ( obj, params );
GameObject *controller1 = Commands->Create_Object("Invisible_Object", Vector3(-74.184f, -28.372f, 3.157f));
Commands->Set_Facing ( controller1, 90 );
Commands->Attach_Script(controller1, "Test_Cinematic", "X01D_C130Troopdrop.txt");
}
else if (param == M01_MODIFY_YOUR_ACTION_02_JDG)//leave outside guard tower and take up third position beside the ladder
{
Vector3 newPosition (40.893f, -39.773f, -0.179f);
Vector3 myTarget (28.449f, -23.325f, 3.032f);
Commands->Set_Innate_Is_Stationary ( obj, false );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_02_JDG );
params.Set_Attack( myTarget, 1000, 0, true );
params.Set_Movement(newPosition, RUN + 0.25f, 1);
Commands->Action_Goto ( obj, params );
}
else if (param == M01_START_ATTACKING_01_JDG)//player is at top of ladders...check if nod minigunner is still alive
{
GameObject *controller1 = Commands->Create_Object("Invisible_Object", Vector3(34.165f,41.909f,-10));
Commands->Attach_Script(controller1, "Test_Cinematic", "XG_Ap_vs_Trn.txt");
GameObject * nodMinigunner = Commands->Find_Object ( 116384 );
if (nodMinigunner != NULL)
{
Vector3 newPosition (40.893f, -39.773f, -0.179f);
params.Set_Basic( this, 100, M01_START_ATTACKING_01_JDG );
params.Set_Movement(newPosition, RUN + 0.25f, 1);
params.Set_Attack( nodMinigunner, 1000, 0, true );
params.AttackCrouched = true;
params.AttackCheckBlocked = false;
Commands->Action_Attack (obj, params);
}
else
{
Commands->Action_Reset ( obj, 100 );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 0 );//look at havoc
}
}
else if (param == M01_MODIFY_YOUR_ACTION_03_JDG)//greet havoc M01_GDI01_Conversation_01
{
Vector3 playersPosition = Commands->Get_Position ( STAR );
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_START_ACTING_JDG );
params.Set_Face_Location( playersPosition, 2 );
Commands->Action_Face_Location ( obj, params );
gdi01conv01 = Commands->Create_Conversation( "M01_GDI01_Conversation_01", 100, 1000, false);
Commands->Join_Conversation( obj, gdi01conv01, true, true, true );
Commands->Join_Conversation( STAR, gdi01conv01, false, false, false );
Commands->Start_Conversation( gdi01conv01, gdi01conv01 );
Commands->Monitor_Conversation( obj, gdi01conv01 );
GameObject * grenadier = Commands->Find_Object ( 116383 );
if (grenadier != NULL)
{
Commands->Send_Custom_Event( obj, grenadier, 0, M01_START_ACTING_JDG, 0 );//tell grenadier to greet havoc
}
}
else if (param == M01_MODIFY_YOUR_ACTION_04_JDG)//now add the pow objective
{
GameObject * pogController = Commands->Find_Object ( M01_MISSION_POG_CONTROLLER_JDG );
if (pogController != NULL)
{
Commands->Send_Custom_Event ( obj, pogController, M01_ADD_OBJECTIVE_POG_JDG, M01_GDI_BASE_POW_OBJECTIVE_JDG, 0 );
}
}
else if (param == M01_GOTO_YOUR_EVAC_SPOT_JDG)
{
Commands->Enable_Hibernation( obj, false );
ducanRescued = true;
headingDownBackPath = false;
Commands->Action_Reset ( obj, 100 );
Vector3 myHomeSpot (56.0f, 28.2f, -0.2f);
Commands->Set_Innate_Soldier_Home_Location ( obj, myHomeSpot, 10 );
params.Set_Basic( this, 100, M01_GOTO_YOUR_EVAC_SPOT_JDG );
params.Set_Movement(myHomeSpot, RUN, 1);
Commands->Action_Goto(obj, params);
}
else if (param == M01_GOING_TO_EVAC_SPOT_JDG)//your ride is here--go get in
{
Commands->Action_Reset ( obj, 100 );
GameObject * myEvacController = Commands->Find_Object ( 106694 );
if (myEvacController != NULL)
{
Commands->Set_Innate_Is_Stationary ( obj, false );
Vector3 myHomeSpot = Commands->Get_Position ( myEvacController );
params.Set_Basic( this, 100, M01_GOING_TO_EVAC_SPOT_JDG );
params.Set_Movement(myHomeSpot, RUN, 1);
Commands->Action_Goto(obj, params);
}
}
else if (param == M01_MODIFY_YOUR_ACTION_05_JDG && headingDownBackPath == false)//POW conversation is over---wave at havoc
{
if (havocDownPath == false)
{
Vector3 playersPosition = Commands->Get_Position ( STAR );
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_START_ACTING_JDG );
params.Set_Face_Location( playersPosition, 2 );
Commands->Action_Face_Location ( obj, params );
gdi01conv03 = Commands->Create_Conversation( "M01_GDI01_Conversation_05", 100, 1000, false);
Commands->Join_Conversation( obj, gdi01conv03, true, true, true );
Commands->Join_Conversation( STAR, gdi01conv03, false, false, false );
Commands->Start_Conversation( gdi01conv03, gdi01conv03 );
Commands->Monitor_Conversation( obj, gdi01conv03 );//M01_MODIFY_YOUR_ACTION_06_JDG
}
else
{
still_in_GDI_Base = false;
Commands->Action_Reset ( obj, 100 );
headingDownBackPath = true;
Vector3 newGotoSpot (95.229f, 101.136f, 8.934f);
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_06_JDG );
params.Set_Movement(newGotoSpot, RUN, 1);
params.AttackActive = false;
Commands->Action_Attack (obj, params);
}
}
else if (param == M01_MODIFY_YOUR_ACTION_06_JDG && ducanRescued == false)//Head down the path
{
havocDownPath = true;
//Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_06_JDG, 0.25f );
}
else if (param == M01_IVE_BEEN_KILLED_JDG)
{
if (still_in_GDI_Base == true)
{
invincible = false;
Commands->Apply_Damage( obj, 100000, "Steel", NULL );
}
}
else if (param == M01_WALKING_WAYPATH_04_JDG)
{
GameObject * nodguy01 = Commands->Find_Object ( 116388 );
if (nodguy01 != NULL)
{
Vector3 myNewSpot (58.784f, 55.223f, -0.551f);
Commands->Set_Innate_Is_Stationary ( obj, false );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_04_JDG );
params.Set_Movement(myNewSpot, RUN, 1);
params.Set_Attack( nodguy01, 50, 2, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack (obj, params);
}
else
{
Vector3 myNewSpot (58.784f, 55.223f, -0.551f);
Commands->Set_Innate_Is_Stationary ( obj, false );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_04_JDG );
params.Set_Movement(myNewSpot, RUN, 1);
//params.Set_Attack( nodguy01, 50, 2, true );
params.AttackCheckBlocked = false;
Commands->Action_Attack (obj, params);
}
}
}
}
void Enemy_Seen( GameObject * obj, GameObject * enemy )
{
if (headingDownBackPath == true)
{
ActionParamsStruct params;
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_06_JDG );
params.Set_Movement(enemy, WALK, 5);
params.Set_Attack( enemy, 1000, 0, true );
params.AttackActive = true;
Commands->Modify_Action ( obj, M01_WALKING_WAYPATH_06_JDG, params, true, true );
}
}
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)
{
Vector3 myTarget (72.223f, -24.751f, -0.296f);
Commands->Set_Innate_Is_Stationary ( obj, true );
params.Set_Basic( this, 100, M01_START_ACTING_JDG );
params.Set_Attack( myTarget, 1000, 0, true );
params.AttackCrouched = true;
params.AttackCheckBlocked = false;
Commands->Action_Attack (obj, params);
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_02_JDG, 2 );
}
else if (action_id == M01_WALKING_WAYPATH_02_JDG)
{
Vector3 myTarget (28.449f, -23.325f, 3.032f);
Commands->Set_Innate_Is_Stationary ( obj, true );
params.Set_Basic( this, 100, M01_START_ACTING_JDG );
params.Set_Attack( myTarget, 1000, 0, true );
params.AttackCrouched = true;
params.AttackCheckBlocked = false;
Commands->Action_Attack (obj, params);
}
else if (action_id == M01_START_ATTACKING_01_JDG)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 0 );
}
else if (action_id == M01_GOTO_YOUR_EVAC_SPOT_JDG)
{
Commands->Set_Innate_Is_Stationary ( obj, true );
GameObject * myEvacController = Commands->Find_Object ( 106694 );
if (myEvacController != NULL)//tell controller to call in a chopper
{
Commands->Send_Custom_Event( obj, myEvacController, 0, M01_MODIFY_YOUR_ACTION_JDG, 0 );
}
}
else if (action_id == M01_GOING_TO_EVAC_SPOT_JDG)//start load animation here
{
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);
Commands->Create_Object ( powerups[random], powerupSpawnLocation );
GameObject * myEvacController = Commands->Find_Object ( 106694 );
if (myEvacController != NULL)//tell controller to spawn a rope
{
Commands->Send_Custom_Event( obj, myEvacController, 0, M01_GIVE_ME_A_ROPE_JDG, 0 );
}
}
else if (action_id == M01_WALKING_WAYPATH_03_JDG)//you are by pows now...run to path entrance and attack nod guy 01 if still alive
{
Commands->Send_Custom_Event( obj, obj, 0, M01_WALKING_WAYPATH_04_JDG, 0 );
}
else if (action_id == M01_WALKING_WAYPATH_04_JDG)//Youre target is dead....make sure you goto path entrance.
{
Vector3 myNewSpot (58.784f, 55.223f, -0.551f);
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_05_JDG );
params.Set_Movement(myNewSpot, RUN, 1);
Commands->Action_Goto (obj, params);
}
else if (action_id == M01_WALKING_WAYPATH_05_JDG)//Youre at the back path entrance now....goto stationary
{
Commands->Set_Innate_Is_Stationary ( obj, true );
}
else if (action_id == M01_WALKING_WAYPATH_06_JDG)//you just killed a back path guy...continue your journey
{
Vector3 newGotoSpot (95.229f, 101.136f, 8.934f);
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_06_JDG );
params.Set_Movement(newGotoSpot, RUN, 1);
params.AttackActive = false;
Commands->Action_Attack (obj, params);
}
}
else if (complete_reason == ACTION_COMPLETE_CONVERSATION_ENDED)
{
if (action_id == gdi01conv01)
{
gdi01conv02 = Commands->Create_Conversation( "M01_GDI01_Conversation_02", 100, 1000, false);
Commands->Join_Conversation( obj, gdi01conv02, true, true, true );
Commands->Join_Conversation( STAR, gdi01conv02, false, false, false );
Commands->Start_Conversation( gdi01conv02, gdi01conv02 );
Commands->Monitor_Conversation( obj, gdi01conv02 );
}
else if (action_id == gdi01conv02)
{
//invincible = false;
Commands->Set_HUD_Help_Text ( IDS_M01DSGN_DSGN0506I1GCP1_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_04_JDG, 2 );
Vector3 newPosition (31.697f, 16.155f, 2.200f);
Commands->Set_Innate_Is_Stationary ( obj, false );
params.Set_Basic( this, 100, M01_WALKING_WAYPATH_03_JDG );
params.Set_Movement(newPosition, RUN, 1);
Commands->Action_Goto ( obj, params );
GameObject * grenadier = Commands->Find_Object ( 116383 );
if (grenadier != NULL)
{
Commands->Send_Custom_Event( obj, grenadier, 0, M01_MODIFY_YOUR_ACTION_03_JDG, 0 );//tell grenadier to greet havoc
}
}
else if (action_id == gdi01conv03)
{
Commands->Send_Custom_Event( obj, obj, 0, M01_MODIFY_YOUR_ACTION_05_JDG, 5 );
}
}
}
};