#ifndef _INC_WOBJ_CHARMSG
#define _INC_WOBJ_CHARMSG

/*ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ*\
	File:			Declarations of messages used by characters
					
	Author:			Gameplay programmers (Jens Andersson, Magnus Runeson, Anders Olsson etc)
					
	Copyright:		1997, 2001 Starbreeze Studios AB
					
	Comments:		Separated from WObj_Char.h to enable classes (for example the AI)
					to include this file only, thus making compilation more efficient
					
	History:		
		020703:		Separated this enum from WObj_Char.h (AO)

\*____________________________________________________________________________________________*/

#include "WObj_Messages.h"

class CWO_MapInfo
{
public:
	CVec2Dfp32 m_TopLeft;
	CVec2Dfp32 m_BottomRight;
	int16 m_iSurface;

	CFStr m_OverviewMap;
	int m_OverviewMap_Visited;
	int m_OverviewMap_Current;
};

class CWO_CameraEffects
{
public:
	fp32 m_Nightvision;
	fp32 m_Tension;
	fp32 m_Crouch;

	CPixel32 m_Multiply;
	CPixel32 m_AlphaBlend;
	fp32 m_DOF_Distance;
	fp32 m_DOF_Amount;
	fp32 m_MotionBlur_Amount;
	fp32 m_MotionBlur_Fuzzyness;
	fp32 m_GlowMotionBlur;

	fp32 m_LightIntensity;
	fp32 m_OtherWorld;
	fp32 m_CreepingDark;
	
	// Radial blur parameters
	fp32 m_RadialBlur;
	fp32 m_RadialBlurColorIntensity;
	CVec3Dfp32 m_RadialBlurAffection;
	CVec3Dfp32 m_RadialBlurColorScale;
	CVec2Dfp32 m_RadialBlurCenter;
	CVec2Dfp32 m_UVExtra;
	uint m_RadialBlurMode;
	uint m_nRadialBlurFilterParams;
	CVec4Dfp32 m_lRadialBlurFilterParams[XR_RADIALBLUR_MAX_PARAMS];
	const char* m_pRadialBlurFilter;
	
	// Add extra data
	void AddRadialBlurFilterParam(const CVec4Dfp32& _Param)
	{
		if (m_nRadialBlurFilterParams < XR_RADIALBLUR_MAX_PARAMS)
			m_lRadialBlurFilterParams[m_nRadialBlurFilterParams++] = _Param;
	}

	CWO_CameraEffects()
	{
		m_Nightvision = 0;
		m_Tension = 0;
		m_Crouch = 0;
		m_Multiply = 0xffffffff;
		m_AlphaBlend = 0x00ffffff;
		m_DOF_Distance = 0;
		m_DOF_Amount = 0;
		m_MotionBlur_Amount = 0;
		m_MotionBlur_Fuzzyness = 0;
		m_GlowMotionBlur = 0;
		m_LightIntensity = 0;
		m_CreepingDark = 0;
		m_OtherWorld = 0;
		m_RadialBlur = 0;
		m_RadialBlurColorIntensity = 0;
		m_RadialBlurAffection = CVec3Dfp32(0.25f, 0.5f, 0.25f);
		m_RadialBlurColorScale = 1.0f;
		m_RadialBlurCenter = 0.5f;
		m_RadialBlurMode = CRC_TEXENVMODE_COMBINE_ADD;
		m_pRadialBlurFilter = NULL;
		m_nRadialBlurFilterParams = 0;
	}
};

enum
{
	OBJMSG_CHAR_SETCLIENTFLAGS = OBJMSGBASE_PLAYER,		// ClientFlags = (ClientFlags | Param0) & ~Param1;
	OBJMSG_CHAR_GETGAMETICK,
	OBJMSG_CHAR_ISDEAD,

	// Note: Ogier's nodetype.txt specifies these values directly,
	//       they will also be compiled into the levels. Do not change them.
	OBJMSG_CHAR_BEGINCUTSCENE				= 0x1008,
	OBJMSG_CHAR_ENDCUTSCENE					= 0x1009,
	//OBJMSG_CHAR_SPAWN						= 0x100b, // Moved to OBJMSG_GAME_SPAWN. ID is reserved.
	//OBJMSG_CHAR_SPEAK						= 0x100c, // Moved to OBJMSG_RPG_SPEAK. ID is reserved
	OBJMSG_CHAR_IMMUNE						= 0x100d,
	OBJMSG_CHAR_AICONTROL					= 0x100e,
	OBJMSG_CHAR_MOUNT						= 0x100f,
	//OBJMSG_CHAR_SWITCH_CHAR					= 0x1010,
	OBJMSG_CHAR_SHAKECAMERA					= 0x1011,
	//OBJMSG_CHAR_SETMODELFLAGS				= 0x1012, // Moved to OBJMSG_MODEL_SETFLAGS. ID is reserved
	OBJMSG_CHAR_AIRESTRICT			        = 0x1013,
	OBJMSG_CHAR_ADDITEM						= 0x1014,
	OBJMSG_CHAR_ADDHEALTH					= 0x1015,
	OBJMSG_CHAR_DESTROYITEM					= 0x1016,
	OBJMSG_CHAR_PLAYANIM					= 0x1017,
	OBJMSG_CHAR_AI_RUNBEHAVIOUR				= 0x1018,
	OBJMSG_CHAR_SETNPCBAR					= 0x1019,
	OBJMSG_CHAR_RUMBLE						= 0x101a,
	OBJMSG_CHAR_BEGINDIALOGUE				= 0x101b,
	OBJMSG_CHAR_RAISEVISIBILITY				= 0x101c,
	OBJMSG_CHAR_RAISENOISELEVEL				= 0x101d,
	OBJMSG_CHAR_SETAIMINGMODE				= 0x101e,	// Auto=0,MixedTorso=1,Body=2,None=3,Head=4,FullBody=5
	OBJMSG_CHAR_AI_STOPBEHAVIOUR			= 0x101f,
	OBJMSG_CHAR_SETDIALOGUEITEM_APPROACH_OLD= 0x1020,
	OBJMSG_CHAR_SETDIALOGUEITEM_APPROACH	= 0x1021,
	OBJMSG_CHAR_SETPHYSFLAGS				= 0x1023,
	OBJMSG_CHAR_SETCOLLISIONMODE			= 0x1024,
	OBJMSG_CHAR_AI_PAUSEACTION				= 0x1025,	// Pauses given action a limited time (-1=forever or 0=unpause)
	OBJMSG_CHAR_MOVETOKEN					= 0x1026,
	OBJMSG_CHAR_SETCUTSCENEFOV				= 0x1027,
	OBJMSG_CHAR_INCREASEMAXHEALTH			= 0x1028,
	OBJMSG_CHAR_SETUSENAME					= 0x1029,
	OBJMSG_CHAR_SETDESCNAME					= 0x102a,
	OBJMSG_CHAR_SETLASERBEAM				= 0x102b,
	OBJMSG_CHAR_SETFLASHLIGHT				= 0x102c,
	OBJMSG_CHAR_GETHEALTHPERCENT			= 0x102d,
	OBJMSG_CHAR_USEDNAWEAPONS				= 0x102e,
	OBJMSG_CHAR_SETFOCUSFRAMEOFFSET			= 0x102f,
	OBJMSG_CHAR_IMMOBILE					= 0x1030,
	OBJMSG_CHAR_SETSPECIALGRAB				= 0x1031,
	OBJMSG_CHAR_RESPAWN						= 0x1032,
	OBJMSG_CHAR_GETNUMITEMS					= 0x1033,
	OBJMSG_CHAR_RENDERATTACHED				= 0x1034,
	OBJMSG_CHAR_PUSH						= 0x1035,
	OBJMSG_CHAR_STUN						= 0x1036,
	OBJMSG_CHAR_DRAG						= 0x1037,
	OBJMSG_CHAR_ACTIVATEITEM				= 0x1038,
	OBJMSG_CHAR_SETEXTRAITEM				= 0x1039,
	OBJMSG_CHAR_SETNIGHTVISION				= 0x103a,
	OBJMSG_CHAR_NEVERTRIGGER				= 0x103b,
	OBJMSG_CHAR_DISABLE						= 0x103c,
	OBJMSG_CHAR_EQUIPITEMTYPE				= 0x103d,
	OBJMSG_CHAR_SETCAMERAEFFECTS			= 0x103e,
	OBJMSG_CHAR_SETDROPITEM					= 0x103f,
	OBJMSG_CHAR_DISABLEQUICKSAVE			= 0x1040,
	OBJMSG_PHONEBOOK_CHANGEDIALOGCHOICE		= 0x1041,
	OBJMSG_TELEPHONE_DIAL					= 0x1042,	// Telephone dials a number on itself
	OBJMSG_ACTIONCUTSCENE_SETDIALOGUEPROXY	= 0x1043,
	OBJMSG_CHAR_SETDIALOGUEITEM_APPROACH2	= 0x1044,	// Used when approaching a scared character
	OBJMSG_CHAR_SETDIALOGUEITEM_THREATEN	= 0x1045,	// Used when threatening a character in dialogue
	OBJMSG_CHAR_SETDIALOGUEITEM_IGNORE		= 0x1046,	// Used when looking away / walking away from character in dialogue
	OBJMSG_CHAR_SETDIALOGUEITEM_TIMEOUT		= 0x1047,	// Used when player is taking too long to answer
	OBJMSG_CHAR_SETDIALOGUEITEM_EXIT		= 0x1048,	// Used when exiting dialogue (leaving character)
	OBJMSG_CHAR_DARKLING_SMOKE				= 0x1049,	// Sent when darkling starts/stops smoking
	OBJMSG_CHAR_CHAIN						= 0x104a,
	OBJMSG_CHAR_SETPAGERNUMBER				= 0x1050,	// Set a pagernumber that starts blinking on the screen
	OBJMSG_CHAR_ADDAVAILABLEDARKLING		= 0x1051,	// Add a darklingtype that a character can spawn
	OBJMSG_CHAR_MODIFYDARKNESSPOWERS		= 0x1052,	// Add/Remove a darkness power
	OBJMSG_CHAR_LOCKTOPARENT				= 0x1053,	// Set parent, turn off physics and set AI in scripted mode
	OBJMSG_CHAR_ANIMIMPULSE					= 0x1054,	// Animation impulse (p0 = impulsetype, p1 = impulsevalue, reason = token )
	OBJMSG_CHAR_CANACTIVATEITEM				= 0x1055,	// Checks if an item can be activated
	OBJMSG_CHAR_SETMOUNTEDLOOK				= 0x1056,	// Sets the look of a mounted object
	OBJMSG_CHAR_SETANIMPHYS					= 0x1057,	// Sets the look of a mounted object
	OBJMSG_CHAR_LISTENTOME					= 0x1058,	// Sets this char as a listener to a inputentity or animeventlistener
	OBJMSG_PHONEBOOK_CHANGEDIALOGUEITEM	    = 0x1059,
	OBJMSG_CHAR_SETMOUNTEDCAMERA			= 0x1060,	// Sets the camera to be a mounted camera on a char (0x1059 seems to be used in nodetype)
	OBJMSG_CHAR_UPDATEITEMDESC				= 0x1061,	// Updates description for an item
	OBJMSG_CHAR_SETMISSIONCOMPLETED			= 0x1062,	// Sets this mission as completed
	OBJMSG_CHAR_SYNCANIMATIONTOCHARACTER	= 0x1063,	// Sync animation to character (sent to Object_Object)
	OBJMSG_CHAR_SETFLAGS_SCRIPT				= 0x1064,	// Add / Clear flags from script message
	OBJMSG_CHAR_SETATTACHEXTRAMODEL			= 0x1065,	// set an extramodel
	OBJMSG_CHAR_HIDEMODEL					= 0x1066,	// Hide model
	OBJMSG_CHAR_BLUREFFECT					= 0x1067,	// Hit/blur effect, blurs the screen
	OBJMSG_CHAR_SETOPACITY					= 0x1068,	// Change character opacity (assumes animated alpha in surface)
	OBJMSG_CHAR_FORCEDARKNESSPOWER			= 0x1069,	// Force start/stop darkness power
	OBJMSG_CHAR_WEAPONANIMIMPULSE			= 0x106a,	// Animation impulse (p0 = impulsetype, p1 = impulsevalue, reason = token )
	OBJMSG_CHAR_FOVOVERRIDE					= 0x106b,	// 
	OBJMSG_CHAR_SETHUGINCUTSCENEFADE		= 0x106c,
	OBJMSG_CHAR_SETITEMANIMTYPETOPARAM		= 0x106d,	// Sets the equipped item animtype to param
	OBJMSG_CHAR_CLONEITEMS					= 0x106e,	// Clones player weapons to "dummy" character
	OBJMSG_CHAR_MISSIONCOMPLETED			= 0x106f,	// Check if a mission has been completed
	OBJMSG_CHAR_WEAPONANIMIMPULSESECONDARY	= 0x1070,	// Animation impulse (p0 = impulsetype, p1 = impulsevalue, reason = token )
	OBJMSG_CHAR_SETAMMODRAW					= 0x1071,	// Make all weapons draw ammo (param0 == 1) or stop drawing ammo (param0 == 0)
	OBJMSG_CHAR_GETPENDINGEQUIPITEMTYPE		= 0x1072,   // The item type we've got equipped or are about to equip if any.
	OBJMSG_CHAR_DEMONHEAD_ANIMIMPULSE		= 0x1073,	// Route message down to demonhead.
	OBJMSG_CHAR_CREEPINGDARK_SETWALLCLIMB	= 0x1074,	// Turns wallcimb on/off for creeping dark
	OBJMSG_CHAR_SETSAVEPARAMS				= 0x1075,	// Modify save/load flags
	OBJMSG_CHAR_ADDDARKNESSJUICE			= 0x1076,	// Add some darkness juice
	OBJMSG_CHAR_DESTROYCAUSUALDIALOGUE		= 0x1077,	
	OBJMSG_CHAR_FORCEDROPWEAPON				= 0x1078,	// Force drop equipped weapon
	OBJMSG_CHAR_HASDARKNESSPOWER			= 0x1079,	// Do character posses a certain power?
	OBJMSG_CHAR_SELECTDARKNESSPOWER			= 0x1080,	// Select the given darkness power (if available)
	OBJMSG_CHAR_ISDARKNESSPOWERACTIVE		= 0x1081,	// Is the given darkness power active?

	// NOTE: Messages entered here are only for Script-messages
	

	OBJMSG_CHAR_USE,
	//OBJMSG_CHAR_SETCUTSCENECAMERA,
	
	OBJMSG_CHAR_PICKUPITEM,
	OBJMSG_CHAR_REMOVEITEM,
	OBJMSG_CHAR_SELECTITEMBYNAME,
	OBJMSG_CHAR_SELECTITEMBYTYPE,

	OBJMSG_CHAR_GETEQUIPPEDITEMTYPE,
	OBJMSG_CHAR_GETEQUIPPEDANIMTYPE,

//	OBJMSG_CHAR_DIALOGUE_SETENDTICK,
//	OBJMSG_CHAR_ENDDIALOGUE,
	OBJMSG_CHAR_SETDIALOGUECHOICES,
	OBJMSG_CHAR_SETDIALOGUETOKENHOLDER,
	OBJMSG_CHAR_NEXTDIALOGUECHOICE,
	OBJMSG_CHAR_SELECTDIALOGUECHOICE,

	OBJMSG_CHAR_DIALOGUE_SPEAKER,		// param0 is the listener, param1 is flags, param0 == 0 indicates end
	OBJMSG_CHAR_DIALOGUE_LISTENER,		// param0 is the speaker, param1 is flags, param0 == 0 indicates end
	OBJMSG_CHAR_DIALOGUE_CROWD_FOCUS,

	OBJMSG_CHAR_USEINFORMATION,

	OBJMSG_CHAR_REQUESTMOUNT,
	OBJMSG_CHAR_FORCERELEASEMOUNT,
	
	//OBJMSG_CHAR_GETANIMFROMHANDLE,
	OBJMSG_CHAR_PLAYANIMSEQUENCE,
	//OBJMSG_CHAR_FREEZEANIM,
	//OBJMSG_CHAR_UNFREEZEANIM,
	OBJMSG_CHAR_SETANIMTIMESCALE, 
	OBJMSG_CHAR_SETANIMSTANCE,
	
	OBJMSG_CHAR_SETANIMSOUND,
	
	OBJMSG_CHAR_GETTENSION,
	
	OBJMSG_CHAR_UPDATEITEMMODEL,
	OBJMSG_CHAR_SETITEMMODELFLAG,
	OBJMSG_CHAR_SETITEMANIMTARGET,
	OBJMSG_CHAR_UPDATEQUESTICONS,
	//OBJMSG_CHAR_ISEQUIPPED,
	OBJMSG_CHAR_GETITEM,
	OBJMSG_CHAR_GETITEMBYINDEX,
	OBJMSG_CHAR_GETITEMFROMSTRING,
	
	OBJMSG_CHAR_SETFLASHLIGHTCOLOR,
	
//	OBJMSG_CHAR_SETMUZZLELIGHTCOLOR,	// Param0 color, Param1 Range

	OBJMSG_CHAR_STRAIGHTENUP, 
	OBJMSG_CHAR_NOTIFYHIT,         // SAMUEL TEMPORARY TESTING STOPPING THE ATTACK ANIMATION

	//OBJMSG_CHAR_STUN,
	OBJMSG_CHAR_APPLYWAIT,
	OBJMSG_CHAR_SETWAIT,
	
	//OBJMSG_CHAR_ADJUSTMOVEMENT,
	OBJMSG_CHAR_SETFORCEWALK,
	OBJMSG_CHAR_PROCESSCONTROL,

	OBJMSG_CHAR_APPLYDAMAGE,
	OBJMSG_CHAR_GETDAMAGEBOOST,
	
	//OBJMSG_CHAR_SETZOOM,
	//OBJMSG_CHAR_SETTILT,
	OBJMSG_CHAR_MORPHFOV,

	// Fight oriented messages
	OBJMSG_CHAR_ENTERFIGHTMODE,
	OBJMSG_CHAR_LEAVEFIGHTMODE,
	//OBJMSG_CHAR_FIGHTSETDIRECTION,
	OBJMSG_CHAR_ISINFIGHTMODE,
	OBJMSG_CHAR_GETFIGHTMODERADIUS,
	//OBJMSG_CHAR_CANENTERFIGHTMODE,
	OBJMSG_CHAR_KILLPLAYER,
	//OBJMSG_CHAR_APPLYDAMAGESIMPLE,
	//OBJMSG_CHAR_SETDODGETIME,
	OBJMSG_CHAR_FIGHTGETMANAGABLEACTIONS,
	OBJMSG_CHAR_FIGHTGETCURRENTACTION,
	//OBJMSG_CHAR_FIGHTINGEACHOTHER,
	//OBJMSG_CHAR_SETFIGHTMODEFLAG,
	OBJMSG_CHAR_PICKFIGHT,
	OBJMSG_CHAR_GETCONTROLMODE,
	//OBJMSG_CHAR_SETCONTROLMODE,
	//OBJMSG_CHAR_FIGHTDEADAWHILE,
	OBJMSG_CHAR_GETHEALTH,
	OBJMSG_CHAR_SETHEALTH,
	OBJMSG_CHAR_GETMAXHEALTH,
	OBJMSG_CHAR_SETMAXHEALTH,
	OBJMSG_CHAR_GETMAXDARKNESS,
	OBJMSG_CHAR_ISPLAYER,
	OBJMSG_CHAR_GETFIGHTCHARACTER,
	//OBJMSG_CHAR_GETFIGHTPOSITION,
	OBJMSG_CHAR_FIGHTMODEFLAG,
	//OBJMSG_CHAR_BREAKNECKSETDIRECTION,

	// Behavior related messages
	//OBJMSG_CHAR_SETWANTEDBEHAVIOR,
	//OBJMSG_CHAR_GETWANTEDBEHAVIOR,

	// Hangrail messages..
	OBJMSG_CHAR_CANBEDROPKILLED,
	OBJMSG_CHAR_GETDAMAGEFACTOR,
	
	// Inventory messages
	OBJMSG_CHAR_GETQUESTITEMNAME,
	OBJMSG_CHAR_GETQUESTITEMDESC,

	OBJMSG_CHAR_GETQUESTICON,
	OBJMSG_CHAR_GETQUESTITEMQUANTITY,
	OBJMSG_CHAR_GETMAPINFO,
	OBJMSG_CHAR_ISBOT,
	//OBJMSG_CHAR_ISCHARACTER,

	OBJMSG_CHAR_SETEXTRASURFACE,
	OBJMSG_CHAR_GHOST,
	//OBJMSG_CHAR_DAMAGEFACTOR,
	//OBJMSG_CHAR_SETBACKPLANE,
	//OBJMSG_CHAR_GETDEFENSE,
	//OBJMSG_CHAR_GETEVOLVETRAIL,
	OBJMSG_CHAR_ISVALIDATTACH,
	OBJMSG_CHAR_GETTARGET,
	OBJMSG_CHAR_SETTIMEOUT,
	OBJMSG_CHAR_GETIMMUNE,
	OBJMSG_CHAR_SETFLAGS,
	OBJMSG_CHAR_GETFLAGS,
	OBJMSG_CHAR_GETRENDERMATRIX,
	OBJMSG_CHAR_SETBODYANGLEZ,
	OBJMSG_CHAR_SETGRAVITY,
	
	OBJMSG_CHAR_NOISE,
	OBJMSG_CHAR_VISIBILITY,
	OBJMSG_CHAR_GETNVINTENSITY,
	OBJMSG_CHAR_POSTPROCESSOVERRIDE,

	OBJMSG_CHAR_GETREQUIREDCLEARANCELEVEL,
	OBJMSG_CHAR_GETGIVENCLEARANCELEVEL,

	OBJMSG_CHAR_PLAYDIALOGUE,
	//OBJMSG_CHAR_LEAN,
	OBJMSG_CHAR_SETIDLESTANCE,	// Deprecated
	OBJMSG_CHAR_GETIDLESTANCE,	// Deprecated
	OBJMSG_CHAR_ONANIMEVENT,

	OBJMSG_CHAR_SETCURRENTSURVEILLANCECAMERA,

	OBJMSG_CHAR_RAISEREQUIREDCLEARANCELEVEL,	// m_Param0 should be the new required clearance level. If the previous required clearancelevel is higher than this the required clearancelevel won't be changed
	OBJMSG_CHAR_CLEARREQUIREDCLEARANCELEVEL,	// Set required clearancelevel to zero
	OBJMSG_CHAR_ENTERSNEAK,						// Enter a sneak zone
	OBJMSG_CHAR_LEAVESNEAK,						// Leave a sneak zone

	OBJMSG_CHAR_ENTERSOFTSPOT,
	OBJMSG_CHAR_LEAVESOFTSPOT,

	// Activate/deactivate items
	OBJMSG_CHAR_RELOADITEM,
	OBJMSG_CHAR_DEACTIVATEITEM,
	OBJMSG_CHAR_CANPICKUPITEM,

	OBJMSG_CHAR_GETEQUIPPEDITEM,

	//OBGMSG_CHAR_PLAYSKELANIMONITEM,

	OBGMSG_CHAR_NEXTWEAPON,
	OBGMSG_CHAR_SWITCHITEMBYINDEX,
	OBGMSG_CHAR_SWITCHITEMBYIDENTIFIER,

	//
	OBJMSG_CHAR_GETEQUIPPEDITEM_ANIMPROPERTY,
	OBJMSG_CHAR_ANIMCONTROL, //Turn animation physics control off/on

	//
	OBJMSG_CHAR_DISPLAYHEALTH,

	OBJMSG_CHAR_GETUSENAME,
	OBJMSG_CHAR_GETDESCNAME,
	OBJMSG_CHAR_GETFOCUSOFFSET,

	OBJMSG_CHAR_GETSPECIALGRAB,

	OBJMSG_CHAR_SETGRABBEDBODY,
	OBJMSG_CHAR_GETGRABBEDBODY,
	OBJMSG_CHAR_GETGRABBEDOBJECT,		// Object grabbed by character (or demon arm if any)

	OBJMSG_CHAR_GETMOUNTCAMERA,

	OBJMSG_CHAR_CSHASBORDER,
	OBJMSG_CHAR_HASAUTOAIMTARGET,
	OBJMSG_CHAR_GETAUTOAIMOFFSET,

	OBJMSG_CHAR_CREATEGRABBABLEITEMOBJECT,
	OBJMSG_CHAR_UPDATEMAGAZINE,
	//OBJMSG_CHAR_PLAYWEAPONANIM,
	OBJMSG_CHAR_SETWEAPONAG2,
	OBJMSG_CHAR_GETANIMLAYERFROMONLYANIMTYPE,

	OBJMSG_CHAR_GETGRABDIFFICULTY,
	OBJMSG_CHAR_AIGETACIVESTATE,
	OBJMSG_CHAR_AISETACTIVESTATE,

	OBJMSG_CHAR_AICANOPENDOOR,

	OBJMSG_CHAR_PUSHRAGDOLL,
	OBJMSG_CHAR_SETRAGDOLL,
	OBJMSG_CHAR_GETDISABLE,
	OBJMSG_CHAR_GETAIPRIORITYCLASS,
	OBJMSG_CHAR_SETNEXTGUISCREEN,
	OBJMSG_CHAR_RESETHEALTHREGENTIME,

	OBJMSG_CHAR_RESETWEAPONUNEQUIPTIMEOUT,
	OBJMSG_CHAR_RESETLASTWEAPON,
	OBJMSG_CHAR_GETLASTWEAPON,

	OBJMSG_CHAR_DEVOURTARGET,
	OBJMSG_CHAR_DEVOURTARGET_PREFINISH,
	OBJMSG_CHAR_DEVOURTARGET_FINISH,
	OBJMSG_CHAR_DRAWDARKNESSAMOUNT,
	OBJMSG_CHAR_GETINHABITINGDARKLING,
//	OBJMSG_CHAR_GETDARKLINGLEVEL,
	OBJMSG_CHAR_DARKLINGAVAILABLE,
	OBJMSG_CHAR_AI_DARKLINGLAND,

	OBJMSG_CHAR_TELEPHONESELECT,
	OBJMSG_CHAR_CLIENTINPUTOVERRIDE,

	OBJMSG_CHAR_GETCHOICES,
	OBJMSG_CHAR_GETLOOKDIRANDPOSITION,

	OBJMSG_CHAR_PICKUP,
	OBJMSG_CHAR_CHECK_WEAPON_FOR_MP,
	OBJMSG_CHAR_CANDARKLINGSUSEWEAPONS,
//	OBJMSG_CHAR_PICKUP_FLAG,

	OBJMSG_CHAR_EXPOSEDTOBLACKHOLE,

	OBJMSG_CHAR_ANGELUS_AURA_GETSTATE,
	OBJMSG_CHAR_ANGELUS_AURA_SETSTATE,
	OBJMSG_CHAR_ANGELUS_AURA_GETRAMPTIME,
	OBJMSG_CHAR_ANGELUS_AURA_GETRESTTIME,
	OBJMSG_CHAR_ANGELUS_AURA_GETSTATETICK,

	OBJMSG_CHAR_ANGELUS_TENTACLE_SETSTATE,
	
	OBJMSG_CHAR_ANIMEVENT_DEATH,
	OBJMSG_CHAR_GRABBED_BY_DEMONARM,	// Send grabber ID in param0 (or 0 for release)

	OBJMSG_CHAR_GETDARKNESS,
	OBJMSG_CHAR_GETDARKNESSPOWER,
	OBJMSG_CHAR_GETLASTDARKNESSPOWER,
	OBJMSG_CHAR_GETDEMONARMREACH,
	OBJMSG_CHAR_GETDARKNESSPOSITION,

	OBJMSG_CHAR_DARKLING_LIGHTNING,

	OBJMSG_CHAR_GETHITLOCATION,
	OBJMSG_CHAR_CRITICALHEADSHOT,

#if 1
	OBJMSG_CHAR_ISDEBUGHUDVISIBLE,
	OBJMSG_CHAR_SHOWDEBUGHUD,
#endif
};

// Param1 enums for OBJMSG_CHAR_EXPOSEDTOBLACKHOLE
// Param0 is a pointer to a CVec3Dfp32 for the location of the black hole
// Param1 is an enum telling the ai what state he should be in
enum
{
	BLACKHOLE_STATE_IDLE = 0,				// No black hole, go back to regular routine (ie kill the player)
	BLACKHOLE_STATE_PULL = 1,				// Black hole is pulling at the character but not yet sucking him in
	BLACKHOLE_STATE_KILL = 2,				// Character is sucked into the hole
};

// Param0 enums for OBJMSG_CHAR_ANGELUS_AURA_GETSTATE, OBJMSG_CHAR_ANGELUS_AURA_SETSTATE
// Put here to keep AI et al from including too many header files. Any public messages should add
// needed additional data here to avoid having to still include said headers.
enum
{
	ANGELUS_AURASTATE_IDLE		= 0,		// Idle, power is fully charged and ready to use
	ANGELUS_AURASTATE_RAMPING,				// Charging powers
	ANGELUS_AURASTATE_RESTING,				// Just used powers, behaving exhausted
	ANGELUS_AURASTATE_USING,				// Using
};
// Param0 enums for OBJMSG_CHAR_ANGELUS_TENTACLE_SETSTATE, OBJMSG_CHAR_ANGELUS_AURA_SETSTATE
enum
{
	ANGELUS_TENTACLESTATE_IDLE = 0,				// Ready, tentacle in
	ANGELUS_TENTACLESTATE_HITOBJECT,			// Tentacle hit object, yank it away
	ANGELUS_TENTACLESTATE_HITTARGET,			// Tentacle hit target, start reeling in
	ANGELUS_TENTACLESTATE_REELING_IN,			// Reeling in
	ANGELUS_TENTACLESTATE_EMBRACING,			// Embracing after reeling
};

// Special Param0 enums for OBJMSG_CHAR_EQUIPITEMTYPE
enum
{
	EQUIPITEM_SPECIALTYPE_INVALID = -2,
	EQUIPITEM_SPECIALTYPE_USESAMEASOTHER = -1,
};



#endif
