/*
**	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
*     Mission11.h
*
* DESCRIPTION
*     Mission 11 definitions
*
* PROGRAMMER
*     Design Team
*
* VERSION INFO
*     $Author: Joe_g $
*     $Revision: 41 $
*     $Modtime: 1/12/02 8:05p $
*     $Archive: /Commando/Code/Scripts/Mission11.h $
*
******************************************************************************/

#ifndef _MISSION11_H_
#define _MISSION11_H_


// Defines and Includes

#include "toolkit.h"


// Predefined Constants
//CHARACTERS
#define M11_SIMPLE_SYDNEY_MOBIUS_JDG				100697
#define M11_REAL_SYDNEY_MOBIUS_JDG					100644
#define M11_MUTANT_PETROVA_JDG						300303
#define M11_C130_EASY_SPAWN_CAP_JDG					3
#define M11_C130_MEDIUM_SPAWN_CAP_JDG				6
#define M11_C130_HARD_SPAWN_CAP_JDG					12

//CONTROLLERS
#define M11_MISSION_CONTROLLER_JDG					100101
#define M11_C130_DROPOFF_CONTROLLER_JDG				100221
#define M11_FLOOR01_SECURITY_CONTROLLER_JDG			100179
#define M11_WETBAR_SPAWNER_CONTROLLER_JDG			100326
#define M11_KANESROOM_SECURITY_CONTROLLER_JDG		100351
#define M11_FODDER_CONTROLLER_JDG					100588
#define M11_FIRSTFLOOR_STUFF_CONTROLLER_JDG			100593
#define M11_FIRSTFLOOR_REPELER_CONTROLLER_JDG		101125

//First floor fodder stuff
#define M11_OBELISK_FODDER_SPAWNER01_JDG			100581
#define M11_OBELISK_FODDER_SPAWNER02_JDG			100582
#define M11_TEMPLEROOF_FODDER_SPAWNER01_JDG			100583
#define M11_TEMPLEROOF_FODDER_SPAWNER02_JDG			100586

//floor 01 security turrets related
#define M11_FLOOR01_SECURITY_TURRET_01_JDG			100177
#define M11_FLOOR01_SECURITY_TURRET_03_JDG			100175
#define M11_FLOOR01_SECURITY_TURRET_05_JDG			100173
#define M11_FLOOR01_SECURITY_TURRET_08_JDG			100170
#define M11_FLOOR01_SECURITY_TURRET_10_JDG			100168
#define M11_FLOOR01_SECURITY_TURRET_12_JDG			100167

//museum level encounter related
#define M11_MUSEUM_GUARD_01_JDG						100256
#define M11_MUSEUM_GUARD_02_JDG						100257
#define M11_MUSEUM_GUARD_03_JDG						100258
#define M11_MUSEUM_GUARD_04_JDG						100259
#define M11_MUSEUM_GUARD_05_JDG						100260
#define M11_MUSEUM_GUARD_06_JDG						100261
#define M11_MUSEUM_SPAWNER_JDG						100323
#define M11_WETBAR_SPAWNER_01_JDG					100330
#define M11_WETBAR_SPAWNER_02_JDG					100331
#define M11_WETBAR_SPAWNER_03_JDG					100332

//kane's room's security cameras and turrets
#define M11_KANESROOM_SECURITY_TURRET_01_JDG		100346
#define M11_KANESROOM_SECURITY_TURRET_03_JDG		100349

//WARROOM's security cameras and turrets
#define M11_WARROOM_SECURITY_TURRET_01_JDG			100359
#define M11_WARROOM_SECURITY_TURRET_02_JDG			100360
#define M11_WARROOM_SECURITY_CONTROLLER_JDG			100361
#define M11_WARROOM_SECURITY_SPAWNER_JDG			100362
#define M11_WARROOM_SECURITY_SPAWNER_02_JDG			101772
#define M11_WARROOM_ENGINEER_JDG					100353

//all the barrack encounters stuff going here
#define M11_BARRACKS_SPAWNER_CONTROLLER_JDG			100430
#define M11_BARRACKS_SPAWNER_01_JDG					100427
#define M11_BARRACKS_SPAWNER_02_JDG					100428
#define M11_BARRACKS_SPAWNER_03_JDG					100429
#define M11_BARRACKS_MUTANT_REJECT_JDG				100415
#define M11_BARRACKS_SCIENTIST_JDG					100405
#define M11_BARRACKS_RAGSESSION_TECH_JDG			100402
#define M11_BARRACKS_RAGSESSION_BLACKHAND_JDG		100403
#define M11_BARRACKS_STEALTHSOLDIER_JDG				100400
#define M11_BARRACKS_MUTANTCONVERSATION_GUY01_JDG	100378
#define M11_BARRACKS_MUTANTCONVERSATION_GUY02_JDG	100379
#define M11_BARRACKS_TOILET_MUTANT_01_JDG			100374
#define M11_BARRACKS_TOILET_MUTANT_02_JDG			100375
#define M11_BARRACKS_MUTANTUPRISING_BLACKHAND_JDG	100387
#define M11_BARRACKS_MUTANTUPRISING_MUTANT01_JDG	100388
#define M11_BARRACKS_MUTANTUPRISING_MUTANT02_JDG	100389

//LABORATORY related stuff
#define M11_LABORATORY_MUTANT_CONTROLLER_JDG		100910

//Sydney's rally zones and whatnot
#define M11_SYDNEY_RALLY_ZONE_01_JDG				100132
#define M11_SYDNEY_RALLY_ZONE_02_JDG				100109
#define M11_SYDNEY_RALLY_ZONE_03A_JDG				100133
#define M11_SYDNEY_RALLY_ZONE_03B_JDG				100134

//MUTANT CRYPT SPAWNER STUFF
#define M11_MUTANT_CRYPT_SPAWNER_01_JDG				100691
#define M11_MUTANT_CRYPT_SPAWNER_02_JDG				100692
#define M11_MUTANT_CRYPT_SPAWNER_03_JDG				100693
#define M11_MUTANT_CRYPT_SPAWNER_04_JDG				100694
#define M11_MUTANT_CRYPT_SPAWNER_05_JDG				100695
#define M11_MUTANT_CRYPT_SPAWNER_06_JDG				100696
#define M11_MUTANT_CRYPT_SPAWNER_CONTROLLER_JDG		100689

//POWER CORE STUFF
#define M11_POWERCORE_INITAL_STEALTHGUY01_JDG		100536
#define M11_POWERCORE_INITAL_STEALTHGUY02_JDG		100537
#define M11_POWERCORE_INITAL_STEALTHGUY03_JDG		100538

#define M11_MISSILE_LIFT_01_JDG						167623
#define M11_MISSILE_LIFT_02_JDG						167622
#define M11_MISSILE_LIFT_03_JDG						167621
#define M11_MISSILE_LIFT_04_JDG						167620
#define M11_MISSILE_LIFT_CONTROLLER_JDG				101673

#define M11_PETROVA_STEALTHSPAWNER_01_JDG			105889
#define M11_PETROVA_STEALTHSPAWNER_02_JDG			105890
#define M11_PETROVA_STEALTHSPAWNER_03_JDG			105891

//various MISSION11 objects
#define M11_END_MISSION_SWITCH_JDG					100106

//LOGICAL SOUNDS
#define M11_MUTANT_IS_NEARBY_JDG					400000
//#define M11_STEALTHS_START_ACTING_JDG				400001

// Public Variables

// Enumerations
enum 
{
	//general commands
	//M11_PICK_A_NEW_WAYPATH_JDG,

	//M11_DOING_ANIMATION_01_JDG,


	//mission controller specific commands
	M11_ATTACH_HAVOCS_SCRIPT_JDG,
	M11_END_MISSION_PASS_JDG,
	M11_END_MISSION_FAIL_JDG,
	M11_ADD_FIRST_OBJECTIVE_JDG,
	M11_FIRST_OBJECTIVE_JDG,
	M11_END_FIRST_OBJECTIVE_JDG,
	M11_ADD_SECOND_OBJECTIVE_JDG,
	M11_ADD_SECOND_OBJECTIVE_POG_JDG,
	M11_SECOND_OBJECTIVE_JDG,
	M11_END_SECOND_OBJECTIVE_JDG,
	M11_ADD_THIRD_OBJECTIVE_JDG,
	M11_THIRD_OBJECTIVE_JDG,
	M11_END_THIRD_OBJECTIVE_JDG,
	M11_ADD_FORTH_OBJECTIVE_JDG,
	M11_FORTH_OBJECTIVE_JDG,
	M11_END_FORTH_OBJECTIVE_JDG,
	M11_ADD_FIFTH_OBJECTIVE_JDG,
	M11_FIFTH_OBJECTIVE_JDG,
	M11_END_FIFTH_OBJECTIVE_JDG,
	M11_PLAY_SECOND_INTRO_CONVERSATION_JDG,

	M11_PETROVA_START_ACTING_JDG,

	M11_PETROVA_ATTACK_PLAYER_JDG,
	M11_PETROVA_PICK_NEW_LOCATION_JDG,

	M11_PLAYER_HAS_POKED_LEVEL4_ELEVATOR_SWITCH_JDG,
	M11_PLAYER_HAS_POKED_LEVEL3_ELEVATOR_SWITCH_JDG,
	M11_PLAYER_HAS_POKED_LEVEL2_ELEVATOR_SWITCH_JDG,
	M11_PLAYER_HAS_POKED_LEVEL1_ELEVATOR_SWITCH_JDG,
	M11_GOTO_IDLE_JDG,
	M11_START_ACTING_JDG,

	M11_PETROVA_FACE_PLAYER_IML,

	M11_HAVOC_IS_DEAD_JDG = 4000,

	//mutant crypt related
	//M11_MUTANT_CHOOSES_SOUND_JDG,
};

// Timer Enumerations

//mission functions
inline char *M11_Choose_Mutant_Idle_Sound ( )
{
	char *soundList[4] = 
		{
			"M00MEIN_CTOA0001I1MEIN_SND",
			"M00MEIN_CTOR0001I1MEIN_SND",
			"M00MEIN_STOA0001I1MEIN_SND",
			"M00MEIN_STOR0001I1MEIN_SND",
		};
		int random = Commands->Get_Random_Int(0, 4);

	return soundList[random];
};

inline char *M11_Choose_Mutant_Alerted_Sound ( )
{
	char *soundList[3] = 
		{
			"M00MEIN_CTOS0001I1MEIN_SND",
			"M00MEIN_RTOS0001I1MEIN_SND",
			"M00MEIN_TDFA0001I1MEIN_SND",
		};
		int random = Commands->Get_Random_Int(0, 3);

	return soundList[random];
};

inline char *M11_Choose_Mutant_Attack_Sound ( )
{
	char *soundList[3] = 
		{
			"M00MEIN_ATOS0001I1MEIN_SND",
			"M00MEIN_CTOS0001I1MEIN_SND",
			"M00MEIN_STOC0001I1MEIN_SND",
		};
		int random = Commands->Get_Random_Int(0, 3);

	return soundList[random];
};

inline char *M11_Choose_Mutant_Attack_Animation ( )
{
	char *animationList[6] = 
		{
			"S_A_Human.H_A_4243",
			"S_A_Human.H_A_822A",
			"S_A_Human.H_A_891A",
			"S_A_Human.H_A_892A",
			"S_A_Human.H_A_893A",
			"S_A_Human.H_A_A0F0",
			//"S_A_Human.H_A_D11A",
		};
		int random = Commands->Get_Random_Int(0, 6);
	

	return animationList[random];
};

typedef enum
{
	M11TIMER_START = STIMER_MISSION11,
} M11TIMER;

#endif // _MISSION11_H_