//***************************************************************************
//
//								SYMTABLE.H
//
//***************************************************************************

#pragma once

#ifndef ABLFUNCS_H
#define ABLFUNCS_H

#include "ablgen.h"
#include "ablscan.h"
#include "dablenv.h"
#include "ablsymt.h"

#pragma warning (push)
#include <vector>
#pragma warning (pop)

//***************************************************************************
namespace ABL
{

//---------------------
// DEFINITION structure

typedef enum {
	RTN_DECLARED,				// ABL
	RTN_EXTERN,
	RTN_FORWARD,
	RTN_RETURN,
	RTN_PRINT,
	RTN_CONCAT,
	RTN_ABS,
	RTN_ROUND,
	RTN_SQRT,
	RTN_TRUNC,
	RTN_RANDOM,
	RTN_SETMAXLOOPS,
	RTN_FATAL,
	RTN_ASSERT,
	RTN_GETMODHANDLE,
	RTN_GETMODNAME,
	RTN_SETMODNAME,
	NUM_ABL_ROUTINES
} DefaultRoutineKey;

typedef TypePtr (* ABLParseFunction) (void);
typedef TypePtr (* ABLExecuteFunction) (SymTableNodePtr routineIdPtr);

class ABLRoutineTableEntry
{
private:
	int m_Index;
	char m_Name[100];
	ABLParseFunction m_ParseFunction;
	ABLExecuteFunction m_ExecuteFunction;

public:
	ABLRoutineTableEntry (void)
	{
		m_Index = 0;
		m_ParseFunction = NULL;
		m_ExecuteFunction = NULL;
		m_Name[0] = 0;
	}

	void Index (int p1)
	{ m_Index = p1; }
	int Index (void) const
	{ return m_Index; }

	void Name (const char *name)
	{
		Str_Copy (m_Name,name,100);
		m_Name[99] = 0;
		strlwr (m_Name);
	}
	char *Name (void)
	{
		return m_Name;
	}

	void Parse (ABLParseFunction func)
	{ m_ParseFunction = func; }
	void Execute (ABLExecuteFunction func)
	{ m_ExecuteFunction = func; }

	TypePtr Parse (void)
	{
		Verify (m_ParseFunction);
		return m_ParseFunction ();
	}
	TypePtr Execute (SymTableNodePtr routineIdPtr)
	{
		Verify (m_ExecuteFunction);
		return m_ExecuteFunction (routineIdPtr);
	}
};

extern stlport::vector<ABLRoutineTableEntry *> *g_ABLFunctions;

int AddABLFunction (const char *name,ABLParseFunction,ABLExecuteFunction);
int AddSpecificABLFunction (const char *name,int index,ABLParseFunction parse,ABLExecuteFunction execute);

TypePtr ParseNoParamReal (void); // jcem
TypePtr ParseNoParamInteger (void);
TypePtr ParseNoParamBoolean (void);
TypePtr ParseNoParam (void);
TypePtr ParseOneBoolean (void);
TypePtr ParseOneIntegerInteger (void);
TypePtr ParseOneIntegerBoolean (void);
TypePtr ParseOneInteger (void);
TypePtr ParseOneIntegerForRevealNavPoint (void);
TypePtr ParseTwoIntegerInteger (void);
TypePtr ParseTwoIntegerBoolean (void);
TypePtr ParseTwoInteger (void);
TypePtr ParseTwoIntegerReal (void);
TypePtr ParseThreeInteger (void);
TypePtr ParseFourInteger (void);
TypePtr ParseIntegerBoolean (void);
TypePtr ParseString (void);
TypePtr ParseStringBoolean (void);
TypePtr ParseStringInteger (void);
TypePtr ParseIntegerReal (void);


TypePtr stdReturn(void);
TypePtr stdPrint(void);
TypePtr stdConcat(void);
TypePtr stdAbs(void);
TypePtr stdRound(void);
TypePtr stdTrunc(void);
TypePtr stdSqrt(void);
TypePtr stdRandom(void);
TypePtr stdGetModHandle(void);
TypePtr stdGetModName(void);
TypePtr stdSetModName(void);
TypePtr stdSetMaxLoops(void);
TypePtr stdFatal(void);
TypePtr stdAssert(void);

TypePtr execStdReturn (SymTableNodePtr routineIdPtr);
TypePtr execStdPrint (SymTableNodePtr routineIdPtr);
TypePtr execStdConcat (SymTableNodePtr routineIdPtr);
TypePtr execStdAbs (SymTableNodePtr routineIdPtr);
TypePtr execStdRound (SymTableNodePtr routineIdPtr);
TypePtr execStdTrunc (SymTableNodePtr routineIdPtr);
TypePtr execStdSqrt (SymTableNodePtr routineIdPtr);
TypePtr execStdRandom (SymTableNodePtr routineIdPtr);
TypePtr execStdGetModHandle (SymTableNodePtr routineIdPtr);
TypePtr execStdGetModName (SymTableNodePtr routineIdPtr);
TypePtr execStdSetModName (SymTableNodePtr routineIdPtr);
TypePtr execStdSetMaxLoops (SymTableNodePtr routineIdPtr);
TypePtr execStdFatal (SymTableNodePtr routineIdPtr);
TypePtr execStdAssert (SymTableNodePtr routineIdPtr);




TypePtr hbgetPlayer(void);				
TypePtr hbgetSelf(void);
TypePtr hbgetPlayerVehicle(void);
TypePtr hbsetEntropyMood(void);
TypePtr hbsetTarget(void);
TypePtr hbgetTarget(void);
TypePtr hbwhoShot(void);
TypePtr hbgetNearestEnemy(void);
TypePtr hbFindObject(void);
TypePtr hbFindObjectExcept(void);
TypePtr hbsetCurMood(void);
TypePtr hbgetHP(void);
TypePtr hbgetLocation(void);
TypePtr hbgetNearestPathPoint(void);
TypePtr hbgetGreatestThreat(void);
TypePtr hbgetLeastThreat(void);
TypePtr hbgetMechType(void);
TypePtr hbgetAlignment(void);
TypePtr hbgetGunnerySkill(void);
TypePtr hbgetPilotSkill(void);
//TypePtr hbsetSkill(void);
TypePtr hbsetSkillLevel(void);
TypePtr hbSetAttackThrottle(void);
TypePtr hbGetAttackThrottle(void);
TypePtr hbSetFiringDelay(void);
TypePtr hbgetTimer(void);
TypePtr hbsetTimer(void);
TypePtr hbplayerOrder(void);
TypePtr hbgetEliteLevel(void);
TypePtr hbsetEliteLevel(void);
TypePtr hbclearMoveOrder(void);
TypePtr hbisShot(void);
TypePtr hbisWithin(void);
TypePtr hbisWithinLoc(void);
TypePtr hbisDead(void);
TypePtr hbisEqual(void);
TypePtr hbisLesser(void);
TypePtr hbisGreater(void);
TypePtr hbequalID(void);
TypePtr hbisRammed(void);
TypePtr hbwhoRammed(void);
TypePtr hbisWithinNav(void);
TypePtr hbcanSee(void);
TypePtr hbcanTarget(void);
TypePtr hbbattleValueLesser(void);
TypePtr hbbattleValueLesserID(void);
TypePtr hbtimeLesser(void);
TypePtr hbtimeGreater(void);
TypePtr hbrand(void);
TypePtr hbplaySound(void);
TypePtr hbplaySoundOnce(void);
TypePtr hbkillSound(void);
TypePtr hbplayMusic(void);
TypePtr hbkillMusic(void);
TypePtr hbfadeInMusic(void);
TypePtr hbfadeOutMusic(void);
TypePtr hbplayEffect(void);
TypePtr hbkillEffect(void);
TypePtr hbrevealObjective(void);
TypePtr hbfailObjective(void);
TypePtr hbfailObjectiveAll(void);
TypePtr hbisMissionComplete(void);
TypePtr hbsuccessObjective(void);
TypePtr hbsuccessObjectiveAll(void);
TypePtr hbsaveGame(void);
TypePtr hbrevealNavPoint(void);
TypePtr hbsetNavPoint(void);
TypePtr hbcreateHeatSphere(void);
TypePtr hbcreateFogSphere(void);
TypePtr hbcreateInstantHeatSphere(void);
TypePtr hbcreateRadarSphere(void);
TypePtr hbteleport(void);
TypePtr hbteleportAndLook(void); // jcem
TypePtr hbplayChatter(void);
TypePtr hbplayChatterPriority(void);
TypePtr hbkillChatter(void);
TypePtr hbstartTimer(void);
TypePtr hbkillTimer(void);
TypePtr hbresetTimer(void);
TypePtr hbpauseTimer(void);
TypePtr hborderDie(void);
TypePtr hborderMoveLookOut(void);
TypePtr hborderMoveTo(void);
TypePtr hborderMoveFlee(void);
TypePtr hborderMoveResumePatrol(void);
TypePtr hborderMoveFollow(void);
TypePtr hborderMoveSit(void);
TypePtr hborderMoveToLocPoint(void);
TypePtr hborderMoveToObject(void);
TypePtr hborderAttack(void);
TypePtr hborderAttackTactic(void);
TypePtr hborderTakeOff(void);
TypePtr hborderAttackBomb(void);
TypePtr hborderStopAttacking(void);
TypePtr hborderShootPoint(void);
TypePtr hbEnableAIStats(void);
TypePtr hbDisableAIStats(void);
TypePtr hbEnableMoveLines(void);
TypePtr hbDisableMoveLines(void);
TypePtr hbEnableGlobalInvulnerable(void);
TypePtr hbDisableGlobalInvulnerable(void);
TypePtr hbEnableInvulnerable(void);
TypePtr hbDisableInvulnerable(void);
TypePtr hbSetTargetDesirability(void);
TypePtr hbGroupAllDead(void);
TypePtr hbGroupAddVehicle(void);
TypePtr hbGroupRemoveVehicle(void);
TypePtr hbGroupNumDead(void);
TypePtr hbGroupSize(void);
TypePtr hbGroupContainsVehicle(void);
TypePtr hbGroupGetFirstGroup(void);
TypePtr hbGroupGetFirstVehicle(void);
TypePtr hbGroupObjectID(void);
TypePtr hbGroupAllWithin(void);
TypePtr hbSetMemoryInteger(void);
TypePtr hbSetMemoryReal(void);
TypePtr hbGetMemoryInteger(void);
TypePtr hbGetMemoryReal(void);
TypePtr hbcinemaStart(void);
TypePtr hbcinemaEnd(void);
TypePtr hbplay2DAnim(void);
TypePtr hbsetactivecamera (void);
TypePtr hbsetinternalcamera (void);
TypePtr hbsetcameraFOV (void);
TypePtr hbfadetoblack (void);
TypePtr hbfadefromblack (void);
TypePtr hbfadetowhite (void);
TypePtr hbfadefromwhite (void);
TypePtr hbcamerafollowobject (void);
TypePtr hbcamerafollowpath (void);
TypePtr hbcameraposition (void);
TypePtr hbcameraoffset (void);
TypePtr hboverridecamerapitch (void);
TypePtr hboverridecamerayaw (void);
TypePtr hboverridecameraroll (void);
TypePtr hbtargetfollowobject (void);
TypePtr hbtargetfollowpath (void);
TypePtr hbtargetposition (void);
TypePtr hbtargetoffset (void);
TypePtr hbSetDebugString(void);
TypePtr hbshutDown(void);
TypePtr hbstartup(void);
TypePtr hbplayershooting(void);
TypePtr hborderFormationMove(void);
TypePtr hborderFormOnSpot(void);
TypePtr hbplayershooting(void);
TypePtr ParsePlayerAI (void);
TypePtr hbDistance(void);
TypePtr hbAddMechInstanceSalvage(void);
TypePtr hbAddComponentSalvage(void);
TypePtr hbAddWeaponSalvage(void);

TypePtr hbMarkBuildingAsScorable (void);

TypePtr hbLogMapRespawn(void);
TypePtr hbLogDefendingTeam(void);
TypePtr hbLogHQDestroyed(void);
TypePtr hbLogDefendTimeAward(void);

TypePtr hbSetCombatLeash(void);					
TypePtr ParseEndMission (void);
TypePtr ParseShowTimer (void);
TypePtr ParseShowHelpArrow (void);
TypePtr ParseMakeColor (void);
TypePtr ParseSetHelpArrow (void);
TypePtr ParsePlayLancemateSound (void);
TypePtr ParseStartMusic (void);

TypePtr execgetPlayer (SymTableNodePtr routineIdPtr);
TypePtr execgetSelf (SymTableNodePtr routineIdPtr);
TypePtr execgetPlayerVehicle (SymTableNodePtr routineIdPtr);
TypePtr execsetEntropyMood (SymTableNodePtr routineIdPtr);
TypePtr execsetTarget (SymTableNodePtr routineIdPtr);
TypePtr execgetTarget (SymTableNodePtr routineIdPtr);
TypePtr execwhoShot (SymTableNodePtr routineIdPtr);
TypePtr execwhoDestroyed (SymTableNodePtr routineIdPtr);
TypePtr execgetNearestEnemy (SymTableNodePtr routineIdPtr);
TypePtr execFindObject (SymTableNodePtr routineIdPtr);
TypePtr execFindObjectExcept (SymTableNodePtr routineIdPtr);
TypePtr execsetCurMood (SymTableNodePtr routineIdPtr);
TypePtr execgetHP (SymTableNodePtr routineIdPtr);
TypePtr execgetLocation (SymTableNodePtr routineIdPtr);
TypePtr execgetNearestPathPoint (SymTableNodePtr routineIdPtr);
TypePtr execgetGreatestThreat (SymTableNodePtr routineIdPtr);
TypePtr execgetLeastThreat (SymTableNodePtr routineIdPtr);
TypePtr execgetMechType (SymTableNodePtr routineIdPtr);
TypePtr execgetAlignment (SymTableNodePtr routineIdPtr);
TypePtr execsetAlignment (SymTableNodePtr routineIdPtr);
TypePtr execgetGunnerySkill (SymTableNodePtr routineIdPtr);
TypePtr execgetPilotSkill (SymTableNodePtr routineIdPtr);
TypePtr execsetSkill (SymTableNodePtr routineIdPtr);
TypePtr execsetSkillLevel (SymTableNodePtr routineIdPtr);
TypePtr execSetAttackThrottle (SymTableNodePtr routineIdPtr);
TypePtr execGetAttackThrottle (SymTableNodePtr routineIdPtr);
TypePtr execSetIgnoreFriendlyFire (SymTableNodePtr routineIdPtr);
TypePtr execSetFiringDelay (SymTableNodePtr routineIdPtr);
TypePtr execSetCombatLeash (SymTableNodePtr routineIdPtr);
TypePtr execSetGUITarget (SymTableNodePtr routineIdPtr);
TypePtr execGetGUITarget (SymTableNodePtr routineIdPtr);
TypePtr execGetZoomState (SymTableNodePtr routineIdPtr);
TypePtr execSetCrouchState (SymTableNodePtr routineIdPtr);
TypePtr execGetTeamNumber (SymTableNodePtr routineIdPtr);
TypePtr execTeamExists (SymTableNodePtr routineIdPtr);
TypePtr execGetGameParam (SymTableNodePtr routineIdPtr);
TypePtr execSetTeamTracking (SymTableNodePtr routineIdPtr);
TypePtr execgetTimer (SymTableNodePtr routineIdPtr);
TypePtr execsetTimer (SymTableNodePtr routineIdPtr);
TypePtr execplayerOrder (SymTableNodePtr routineIdPtr);
TypePtr execgetEliteLevel (SymTableNodePtr routineIdPtr);
TypePtr execsetEliteLevel (SymTableNodePtr routineIdPtr);
TypePtr execclearMoveOrder (SymTableNodePtr routineIdPtr);
TypePtr execIsShutdown (SymTableNodePtr routineIdPtr);
TypePtr execisShot (SymTableNodePtr routineIdPtr);
TypePtr execisWithin (SymTableNodePtr routineIdPtr);
TypePtr execisWithinLoc (SymTableNodePtr routineIdPtr);
TypePtr execisDead (SymTableNodePtr routineIdPtr);
TypePtr execisEqual (SymTableNodePtr routineIdPtr);
TypePtr execisLesser (SymTableNodePtr routineIdPtr);
TypePtr execisGreater (SymTableNodePtr routineIdPtr);
TypePtr execequalID (SymTableNodePtr routineIdPtr);
TypePtr execisRammed (SymTableNodePtr routineIdPtr);
TypePtr execwhoRammed (SymTableNodePtr routineIdPtr);
TypePtr execisWithinNav (SymTableNodePtr routineIdPtr);
TypePtr execcanSee (SymTableNodePtr routineIdPtr);
TypePtr execcanTarget (SymTableNodePtr routineIdPtr);
TypePtr execbattleValueLesser (SymTableNodePtr routineIdPtr);
TypePtr execbattleValueLesserID (SymTableNodePtr routineIdPtr);
TypePtr exectimeLesser (SymTableNodePtr routineIdPtr);
TypePtr exectimeGreater (SymTableNodePtr routineIdPtr);
TypePtr execrand (SymTableNodePtr routineIdPtr);
TypePtr execplaySound (SymTableNodePtr routineIdPtr);
TypePtr execplaySoundOnce (SymTableNodePtr routineIdPtr);
TypePtr execkillSound (SymTableNodePtr routineIdPtr);
TypePtr execSetAudioFXEnabled (SymTableNodePtr routineIdPtr);
TypePtr execplayMusic (SymTableNodePtr routineIdPtr);
TypePtr execkillMusic (SymTableNodePtr routineIdPtr);
TypePtr execfadeInMusic (SymTableNodePtr routineIdPtr);
TypePtr execfadeOutMusic (SymTableNodePtr routineIdPtr);
TypePtr execplayEffect (SymTableNodePtr routineIdPtr);
TypePtr execkillEffect (SymTableNodePtr routineIdPtr);
TypePtr execSetChanceLancematesEject (SymTableNodePtr routineIdPtr);
TypePtr execSetChanceLancematesOKWhenEjecting (SymTableNodePtr routineIdPtr);
TypePtr execSetChanceLancematesInjuredWhenEjecting (SymTableNodePtr routineIdPtr);
TypePtr execRevealLancemate (SymTableNodePtr routineIdPtr);
TypePtr execHideLancemate (SymTableNodePtr routineIdPtr);
TypePtr execcheckObjectiveCompletion (SymTableNodePtr routineIdPtr);
TypePtr execisVisible (SymTableNodePtr routineIdPtr);
TypePtr execrevealObjective (SymTableNodePtr routineIdPtr);
TypePtr exechideObjective (SymTableNodePtr routineIdPtr);
TypePtr execfailObjective (SymTableNodePtr routineIdPtr);
TypePtr execfailObjectiveAll (SymTableNodePtr routineIdPtr);
TypePtr execIsMissionComplete (SymTableNodePtr routineIdPtr);
TypePtr execsuccessObjective (SymTableNodePtr routineIdPtr);
TypePtr execsuccessObjectiveAll (SymTableNodePtr routineIdPtr);
TypePtr execsaveGame(SymTableNodePtr routineIdPtr);
TypePtr execshowAllRevealedObjectives (SymTableNodePtr routineIdPtr);
TypePtr execrevealNavPoint (SymTableNodePtr routineIdPtr);
TypePtr execsetNavPoint (SymTableNodePtr routineIdPtr);
TypePtr execIsNavRevealed (SymTableNodePtr routineIdPtr);
TypePtr execHideNav (SymTableNodePtr routineIdPtr);
TypePtr execSetRadarNav (SymTableNodePtr routineIdPtr);
TypePtr execcreateHeatSphere (SymTableNodePtr routineIdPtr);
TypePtr execcreateFogSphere (SymTableNodePtr routineIdPtr);
TypePtr execcreateInstantHeatSphere (SymTableNodePtr routineIdPtr);
TypePtr execcreateRadarSphere (SymTableNodePtr routineIdPtr);
TypePtr execteleport (SymTableNodePtr routineIdPtr);
TypePtr execteleportAndLook (SymTableNodePtr routineIdPtr); // jcem
TypePtr execteleportToHell (SymTableNodePtr routineIdPtr);
TypePtr execplayChatter (SymTableNodePtr routineIdPtr);
TypePtr execplayChatterPriority (SymTableNodePtr routineIdPtr);
TypePtr execkillChatter (SymTableNodePtr routineIdPtr);
TypePtr execstartTimer (SymTableNodePtr routineIdPtr);
TypePtr execkillTimer (SymTableNodePtr routineIdPtr);
TypePtr execresetTimer (SymTableNodePtr routineIdPtr);
TypePtr execpauseTimer (SymTableNodePtr routineIdPtr);
TypePtr execorderDie (SymTableNodePtr routineIdPtr);
TypePtr execorderMoveLookOut (SymTableNodePtr routineIdPtr);
TypePtr execorderMoveTo (SymTableNodePtr routineIdPtr);
TypePtr execorderMoveToFree (SymTableNodePtr routineIdPtr);
TypePtr execorderMoveToRigid (SymTableNodePtr routineIdPtr);
TypePtr execorderMoveFlee (SymTableNodePtr routineIdPtr);
TypePtr execorderMoveResumePatrol (SymTableNodePtr routineIdPtr);
TypePtr execorderMoveResumePatrolFree (SymTableNodePtr routineIdPtr);
TypePtr execorderMoveResumePatrolRigid (SymTableNodePtr routineIdPtr);
TypePtr execorderMoveFollow (SymTableNodePtr routineIdPtr);
TypePtr execorderMoveSit (SymTableNodePtr routineIdPtr);
TypePtr execorderMoveToLocPoint (SymTableNodePtr routineIdPtr);
TypePtr execorderMoveToObject (SymTableNodePtr routineIdPtr);
TypePtr execorderAttack (SymTableNodePtr routineIdPtr);
TypePtr execorderAttackTactic (SymTableNodePtr routineIdPtr);
TypePtr execorderTakeOff (SymTableNodePtr routineIdPtr);
TypePtr execorderLand (SymTableNodePtr routineIdPtr);
TypePtr execorderAttackBomb (SymTableNodePtr routineIdPtr);
TypePtr execorderStopAttacking (SymTableNodePtr routineIdPtr);
TypePtr execorderShootPoint (SymTableNodePtr routineIdPtr);
TypePtr execlancemateCommand (SymTableNodePtr routineIdPtr);
TypePtr execEnableAIStats (SymTableNodePtr routineIdPtr);
TypePtr execDisableAIStats (SymTableNodePtr routineIdPtr);
TypePtr execEnableMoveLines (SymTableNodePtr routineIdPtr);
TypePtr execDisableMoveLines (SymTableNodePtr routineIdPtr);
TypePtr execEnableGlobalInvulnerable (SymTableNodePtr routineIdPtr);
TypePtr execDisableGlobalInvulnerable (SymTableNodePtr routineIdPtr);
TypePtr execEnableInvulnerable (SymTableNodePtr routineIdPtr);
TypePtr execDisableInvulnerable (SymTableNodePtr routineIdPtr);
TypePtr execDestroy (SymTableNodePtr routineIdPtr);
TypePtr execGOSMenuItemExec (SymTableNodePtr routineIdPtr);
TypePtr execGOSMenuItemChecked (SymTableNodePtr routineIdPtr);
TypePtr execSetTargetDesirability (SymTableNodePtr routineIdPtr);
TypePtr execSetIsShotRadius (SymTableNodePtr routineIdPtr);
TypePtr execSetSquadTargetingRadius (SymTableNodePtr routineIdPtr);
TypePtr execSetSearchLight (SymTableNodePtr routineIdPtr);
TypePtr execSetGroupAI (SymTableNodePtr routineIdPtr);
TypePtr execGetLancemate (SymTableNodePtr routineIdPtr);
TypePtr execNotifyGroupEnemySpotted (SymTableNodePtr routineIdPtr);
TypePtr execTacticIsFinished (SymTableNodePtr routineIdPtr);
TypePtr execGroupAllDead (SymTableNodePtr routineIdPtr);
TypePtr execGroupAddObject (SymTableNodePtr routineIdPtr);
TypePtr execGroupRemoveObject (SymTableNodePtr routineIdPtr);
TypePtr execGroupNumDead (SymTableNodePtr routineIdPtr);
TypePtr execGroupSize (SymTableNodePtr routineIdPtr);
TypePtr execGroupContainsObject (SymTableNodePtr routineIdPtr);
TypePtr execGroupGetFirstGroup (SymTableNodePtr routineIdPtr);
TypePtr execGroupGetFirstObject (SymTableNodePtr routineIdPtr);
TypePtr execGroupGetObject (SymTableNodePtr routineIdPtr);
TypePtr execGroupObjectID (SymTableNodePtr routineIdPtr);
TypePtr execGroupAllWithin (SymTableNodePtr routineIdPtr);
TypePtr execTeamObjectID (SymTableNodePtr routineIdPtr);
TypePtr execSetMemoryInteger (SymTableNodePtr routineIdPtr);
TypePtr execSetMemoryReal (SymTableNodePtr routineIdPtr);
TypePtr execGetMemoryInteger (SymTableNodePtr routineIdPtr);
TypePtr execGetMemoryReal (SymTableNodePtr routineIdPtr);
TypePtr execSetGlobalTrigger (SymTableNodePtr routineIdPtr);
TypePtr execGetGlobalTrigger (SymTableNodePtr routineIdPtr);
TypePtr execSetSensorVisibility (SymTableNodePtr routineIdPtr);
TypePtr execSetAutoTargeting (SymTableNodePtr routineIdPtr);
TypePtr execEnablePerWeaponRayCasting (SymTableNodePtr routineIdPtr);
TypePtr execcinemaStart (SymTableNodePtr routineIdPtr);
TypePtr execcinemaEnd (SymTableNodePtr routineIdPtr);
TypePtr execSetCameraFootShake(SymTableNodePtr routineIdPtr);
TypePtr execplay2DAnim (SymTableNodePtr routineIdPtr);
TypePtr execsetinternalcamera (SymTableNodePtr routineIdPtr);
TypePtr execsetactivecamera (SymTableNodePtr routineIdPtr);
TypePtr execcinemaskip (SymTableNodePtr routineIdPtr);
TypePtr execsetcameraFOV (SymTableNodePtr routineIdPtr);
TypePtr execfadetoblack (SymTableNodePtr routineIdPtr);
TypePtr execfadefromblack (SymTableNodePtr routineIdPtr);
TypePtr execfadetowhite (SymTableNodePtr routineIdPtr);
TypePtr execfadefromwhite (SymTableNodePtr routineIdPtr);
TypePtr execcamerafollowobject (SymTableNodePtr routineIdPtr);
TypePtr execcamerafollowpath (SymTableNodePtr routineIdPtr);
TypePtr execcameraposition (SymTableNodePtr routineIdPtr);
TypePtr execcameradetach (SymTableNodePtr routineIdPtr);
TypePtr execcameraoffset (SymTableNodePtr routineIdPtr);
TypePtr execoverridecamerapitch (SymTableNodePtr routineIdPtr);
TypePtr execoverridecamerayaw (SymTableNodePtr routineIdPtr);
TypePtr execoverridecameraroll (SymTableNodePtr routineIdPtr);
TypePtr execresetcameraoverrides (SymTableNodePtr routineIdPtr);
TypePtr exectargetfollowobject (SymTableNodePtr routineIdPtr);
TypePtr exectargetfollowpath (SymTableNodePtr routineIdPtr);
TypePtr exectargetposition (SymTableNodePtr routineIdPtr);
TypePtr exectargetdetach (SymTableNodePtr routineIdPtr);
TypePtr exectargetoffset (SymTableNodePtr routineIdPtr);
TypePtr execSetDebugString (SymTableNodePtr routineIdPtr);
TypePtr execshutDown (SymTableNodePtr routineIdPtr);
TypePtr execstartup (SymTableNodePtr routineIdPtr);
TypePtr execPlayerShooting (SymTableNodePtr routineIdPtr);
TypePtr execorderFormationMove (SymTableNodePtr routineIdPtr);
TypePtr execorderFormOnSpot (SymTableNodePtr routineIdPtr);
TypePtr execPlayerAI (SymTableNodePtr routineIdPtr);
TypePtr execStopExecute (SymTableNodePtr routineIdPtr);
TypePtr execStartExecute (SymTableNodePtr routineIdPtr);
TypePtr execSetActivationDistance (SymTableNodePtr routineIdPtr);
TypePtr execDistance (SymTableNodePtr routineIdPtr);
TypePtr execSelfDestruct (SymTableNodePtr routineIdPtr);
TypePtr execFlyBy (SymTableNodePtr routineIdPtr);
TypePtr execSave (SymTableNodePtr routineIdPtr);
TypePtr execHelpMessage (SymTableNodePtr routineIdPtr);
TypePtr execGetDifficulty (SymTableNodePtr routineIdPtr);
TypePtr execEject (SymTableNodePtr routineIdPtr);
TypePtr execAddMechInstanceSalvage (SymTableNodePtr routineIDPtr);
TypePtr execAddComponentSalvage (SymTableNodePtr routineIDPtr);
TypePtr execAddWeaponSalvage (SymTableNodePtr routineIDPtr);

TypePtr execMarkBuildingAsScorable (SymTableNodePtr routineIDPtr);

TypePtr execJump (SymTableNodePtr routineIdPtr);
TypePtr execCrouch (SymTableNodePtr routineIdPtr);
TypePtr execFall (SymTableNodePtr routineIdPtr);
TypePtr execSetCompositingEnabled (SymTableNodePtr routineIdPtr);
TypePtr execSetSensorMode (SymTableNodePtr routineIdPtr);
TypePtr execGetSensorMode (SymTableNodePtr routineIdPtr);
TypePtr execSetMinSpeed (SymTableNodePtr routineIdPtr);
TypePtr execTorsoPitch (SymTableNodePtr routineIdPtr);
TypePtr execTorsoYaw (SymTableNodePtr routineIdPtr);
TypePtr execSetGimped (SymTableNodePtr routineIdPtr);
TypePtr execSetRotation (SymTableNodePtr routineIdPtr);
TypePtr execSetHelicoptersIgnoreMissionBounds (SymTableNodePtr routineIdPtr);
TypePtr execSetTorsoCenteringEnabled (SymTableNodePtr routineIdPtr);
TypePtr execSetAlwaysIgnoreObstacles (SymTableNodePtr routineIdPtr);
TypePtr execSetIgnoreFog (SymTableNodePtr routineIdPtr);
TypePtr execDisableAIJumping (SymTableNodePtr routineIdPtr);
TypePtr execAddBucket (SymTableNodePtr routineIdPtr);
TypePtr execKillBucket (SymTableNodePtr routineIdPtr);
TypePtr execShowBucket (SymTableNodePtr routineIdPtr);
TypePtr execHideBucket (SymTableNodePtr routineIdPtr);
TypePtr execGetBucketValue (SymTableNodePtr routineIdPtr);
TypePtr execFindBucketValue (SymTableNodePtr routineIdPtr);
TypePtr execSetBucketValue (SymTableNodePtr routineIdPtr);
TypePtr execSetBucketMult (SymTableNodePtr routineIdPtr);
TypePtr execTrackBucket (SymTableNodePtr routineIdPtr);
TypePtr execTrackObjectBucket (SymTableNodePtr routineIdPtr);
TypePtr execFindBucket (SymTableNodePtr routineIdPtr);
TypePtr execAddCustomBucketParameter (SymTableNodePtr routineIdPtr);
TypePtr execSetCustomBucketName (SymTableNodePtr routineIdPtr);
TypePtr execSetCustomBucketNameIndex (SymTableNodePtr routineIdPtr);
TypePtr execAddPoints (SymTableNodePtr routineIdPtr);
TypePtr execChatMessage (SymTableNodePtr routineIdPtr);

TypePtr execAttachFlag (SymTableNodePtr routineIdPtr);
TypePtr execDropFlag (SymTableNodePtr routineIdPtr);
// MSL 5.05 Return Flag Script Command
TypePtr execReturnFlag (SymTableNodePtr routineIdPtr);
TypePtr execDeactiveFlag (SymTableNodePtr routineIdPtr);
TypePtr execSetMaxFlagsCarried (SymTableNodePtr routineIdPtr);
TypePtr execSetFlagDropReturnTime (SymTableNodePtr routineIdPtr);
TypePtr execSetFlagCaptureReturnTime (SymTableNodePtr routineIdPtr);
TypePtr execSetFlagsEnabled (SymTableNodePtr routineIdPtr);
TypePtr execSetFlagCaptureEnabled (SymTableNodePtr routineIdPtr);
TypePtr execShowFlagsAsNavPoints (SymTableNodePtr routineIdPtr);

TypePtr execSetViewMode (SymTableNodePtr routineIdPtr);
TypePtr execGetViewMode (SymTableNodePtr routineIdPtr);

TypePtr execSetInputTypeEnabled (SymTableNodePtr routineIdPtr);
TypePtr execSetHUDComponentEnabled (SymTableNodePtr routineIdPtr);
TypePtr execResetAmmo (SymTableNodePtr routineIdPtr);
TypePtr execOverrideHeatOption (SymTableNodePtr routineIdPtr);

TypePtr execSetMissionBounds (SymTableNodePtr routineIdPtr);

TypePtr execRespawn (SymTableNodePtr routineIdPtr);
TypePtr execResetMission (SymTableNodePtr routineIdPtr);

TypePtr execGetDamageRating (SymTableNodePtr routineIdPtr);

TypePtr execIsTargeted (SymTableNodePtr routineIdPtr);
TypePtr execLookingToward (SymTableNodePtr routineIdPtr);
TypePtr execFiredWeaponGroup (SymTableNodePtr routineIdPtr);
TypePtr execIsSetToNavPoint (SymTableNodePtr routineIdPtr);

TypePtr execEndMission (SymTableNodePtr routineIdPtr);
TypePtr execorderDoorOpen (SymTableNodePtr routineIdPtr);
TypePtr execorderDoorClose (SymTableNodePtr routineIdPtr);
TypePtr execboardDropShip (SymTableNodePtr routineIdPtr);
TypePtr execDrop (SymTableNodePtr routineIdPtr);
TypePtr execShowTimer (SymTableNodePtr routineIdPtr);
TypePtr execShowHelpArrow (SymTableNodePtr routineIdPtr);
TypePtr execMakeColor (SymTableNodePtr routineIdPtr);
TypePtr execSetHelpArrow (SymTableNodePtr routineIdPtr);
TypePtr execPlayLancemateSound (SymTableNodePtr routineIdPtr);
TypePtr execPlayVoiceOver (SymTableNodePtr routineIdPtr);
TypePtr execPlayVoiceOverOnce (SymTableNodePtr routineIdPtr);
TypePtr execKillVoiceOvers (SymTableNodePtr routineIdPtr);
TypePtr execIsVoiceOverPlaying (SymTableNodePtr routineIDPtr);
TypePtr execIsMusicPlaying (SymTableNodePtr routineIDPtr);
TypePtr execStartMusic (SymTableNodePtr routineIDPtr);
TypePtr execStartMusicAll (SymTableNodePtr routineIDPtr);
TypePtr execPlayBettySound (SymTableNodePtr routineIDPtr);
TypePtr execSpecifyTalker (SymTableNodePtr routineIdPtr);
TypePtr execNavPointReached (SymTableNodePtr routineIdPtr);
TypePtr execPlayTeamBettySound (SymTableNodePtr routineIDPtr);
TypePtr execTeamSetNav (SymTableNodePtr routineIDPtr);
TypePtr execRespawnMission (SymTableNodePtr routineIDPtr);
TypePtr execLogMapRespawn(SymTableNodePtr routineIDPtr);
TypePtr execLogDefendingTeam(SymTableNodePtr routineIDPtr);
TypePtr execLogHQDestroyed(SymTableNodePtr routineIDPtr);
TypePtr execLogDefendTimeAward(SymTableNodePtr routineIDPtr);
TypePtr execSetDmgModifier (SymTableNodePtr routineIdPtr); // jcem
TypePtr execRestoreOriginalBounds (SymTableNodePtr routineIdPtr); // jcem
TypePtr execSetBoundsFromPaths (SymTableNodePtr routineIdPtr); // jcem
TypePtr execRandSelect (SymTableNodePtr routineIdPtr); // jcem
TypePtr execRespawnPosition (SymTableNodePtr routineIdPtr); // jcem
TypePtr execGetCOOP (SymTableNodePtr routineIdPtr); // jcem
TypePtr execSetCOOP (SymTableNodePtr routineIdPtr); // jcem
TypePtr execGetTime (SymTableNodePtr routineIdPtr); // jcem
TypePtr execGetTimeX (SymTableNodePtr routineIdPtr); // jcem
TypePtr execIGetTime (SymTableNodePtr routineIdPtr); // jcem
TypePtr execIGetTimeX (SymTableNodePtr routineIdPtr); // jcem
TypePtr execPlaySoundStr (SymTableNodePtr routineIdPtr); // jcem
}
ABL::TypePtr ParseAddBucket (void);
ABL::TypePtr ParseKillBucket (void);
ABL::TypePtr ParseShowBucket (void);
ABL::TypePtr ParseHideBucket (void);
ABL::TypePtr ParseGetBucketValue (void);
ABL::TypePtr ParseFindBucketValue (void);
ABL::TypePtr ParseSetBucketValue (void);
ABL::TypePtr ParseTrackBucket (void);
ABL::TypePtr ParseTrackObjectBucket (void);
ABL::TypePtr ParseFindBucket (void);


#endif
