/*******************************************************************\
	Doom Builder Script highlighting definitions for ACS
\*******************************************************************/

// Compiler settings
compiler = "hexen_acc";
parameters = "-H -I \"%PT\" -I \"%PS\" %FI %FO";
resultlump = "BEHAVIOR";

// Editor settings
description = "Hexen ACS";
codepage = 0;
extensions = "acs";
casesensitive = false;
insertcase = 0;				// 0=Normal, 1=Lowercase, 2=Uppercase
lexer = 35;					// CPP-style, case-insensitive
functionopen = "(";
functionclose = ")";
codeblockopen = "{";
codeblockclose = "}";
arrayopen = "[";
arrayclose = "]";
argumentdelimiter = ",";
terminator = ";";
keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K";
snippetsdir = "acs";
scripttype = "ACS";

keywords
{
	#Define = "#Define identifier expression";
	#Import = "#Import";
	#Include = "#Include";
	#Library = "#Library";
	#LibDefine = "#LibDefine identifier expression";
	ACS_Execute = "ACS_Execute(script, map, arg1, arg2, arg3)";
	ACS_LockedExecute = "ACS_LockedExecute(script, map, arg1, arg2, lock)";
	ACS_Suspend = "ACS_Suspend(script, map)";
	ACS_Terminate = "ACS_Terminate(script, map)";
	ActivatorSound = "ActivatorSound(name, volume)";
	ActivatorTID = "ActivatorTID()";
	Bool = "Bool expression";
	Break = "Break";
	Return = "Return";
	Case = "Case expression:";
	Ceiling_CrushAndRaise = "Ceiling_CrushAndRaise(tag, speed, crush)";
	Ceiling_CrushRaiseAndStay = "Ceiling_CrushRaiseAndStay(tag, speed, crush)";
	Ceiling_CrushStop = "Ceiling_CrushStop(tag)";
	Ceiling_LowerAndCrush = "Ceiling_LowerAndCrush(tag, speed, crush)";
	Ceiling_LowerByValue = "Ceiling_LowerByValue(tag, speed, height)";
	Ceiling_MoveToValueTimes8 = "Ceiling_MoveToValueTimes8(tag, speed, height, neg)";
	Ceiling_RaiseByValue = "Ceiling_RaiseByValue(tag, speed, height)";
	ChangeCeiling = "void ChangeCeiling(int tag, str flatname)";
	ChangeFloor = "void ChangeFloor(int tag, str flatname)";
	ClearLineSpecial = "void ClearLineSpecial(void)\nClears the special of the line that activated the script.";
	Const = "Const";
	Continue = "Continue";
	DamageThing = "DamageThing(amount)";
	Death = "Script expression Death";
	Default = "Default:";
	Delay = "void Delay(int tics)";
	Disconnect = "Script expression Disconnect";
	Do = "Do";
	Door_Close = "Door_Close(tag, speed)";
	Door_LockedRaise = "Door_LockedRaise(tag, speed, delay, lock)";
	Door_Open = "Door_Open(tag, speed)";
	Door_Raise = "Door_Raise(tag, speed, delay)";
	Else = "Else";
	Enter = "Script expression Enter";
	Floor_CrushStop = "Floor_CrushStop(tag)";
	Floor_LowerByValue = "Floor_LowerByValue(tag, speed, height)";
	Floor_LowerByValueTimes8 = "Floor_LowerByValueTimes8(tag, speed, height)";
	Floor_LowerInstant = "Floor_LowerInstant(tag, arg1, height)";
	Floor_LowerToLowest = "Floor_LowerToLowest(tag, speed)";
	Floor_LowerToNearest = "Floor_LowerToNearest(tag, speed)";
	Floor_MoveToValueTimes8 = "Floor_MoveToValueTimes8(tag, speed, height, neg)";
	Floor_RaiseAndCrush = "Floor_RaiseAndCrush(tag, speed, crush)";
	Floor_RaiseByValue = "Floor_RaiseByValue(tag, speed, height)";
	Floor_RaiseByValueTimes8 = "Floor_RaiseByValueTimes8(tag, speed, height)";
	Floor_RaiseInstant = "Floor_RaiseInstant(tag, arg1, height)";
	Floor_RaiseToHighest = "Floor_RaiseToHighest(tag, speed)";
	Floor_RaiseToNearest = "Floor_RaiseToNearest(tag, speed)";
	Floor_Waggle = "Floor_Waggle(tag, amp, freq, offset, time)";
	FloorAndCeiling_LowerByValue = "FloorAndCeiling_LowerByValue(tag, speed, height)";
	FloorAndCeiling_RaiseByValue = "FloorAndCeiling_RaiseByValue(tag, speed, height)";
	For = "For(initialization, condition, iteration)";
	Function = "Function Void expression (Void)";
	GameSkill = "int GameSkill(void)";
	GameType = "int GameType(void)";
	If = "if(expression)";
	Int = "int expression";
	Light_ChangeToValue = "Light_ChangeToValue(tag, value)";
	Light_Fade = "Light_Fade(tag, value, tics)";
	Light_Flicker = "Light_Flicker(tag, upper, lower)";
	Light_ForceLightning = "Light_ForceLightning()";
	Light_Glow = "Light_Glow(tag, upper, lower, tics)";
	Light_LowerByValue = "Light_LowerByValue(tag, value)";
	Light_RaiseByValue = "Light_RaiseByValue(tag, value)";
	Light_Strobe = "Light_Strobe(tag, upper, lower, u-tics, l-tics)";
	LineSide = "int LineSide(void)";
	Open = "Script expression Open";
	Pillar_Build = "Pillar_Build(tag, speed, height)";
	Pillar_BuildAndCrush = "Pillar_BuildAndCrush(tag, speed, height, crush)";
	Pillar_Open = "Pillar_Open(tag, speed, fdist, cdist)";
	Plat_DownByValue = "Plat_DownByValue(tag, speed, delay, height)";
	Plat_DownWaitUpStay = "Plat_DownWaitUpStay(tag, speed, delay)";
	Plat_PerpetualRaise = "Plat_PerpetualRaise(tag, speed, delay)";
	Plat_Stop = "Plat_Stop(tag)";
	Plat_ToggleCeiling = "Plat_ToggleCeiling(tag)";
	Plat_UpByValue = "Plat_UpByValue(tag, speed, delay, height)";
	Plat_UpWaitDownStay = "Plat_UpWaitDownStay(tag, speed, delay)";
	PlayerCount = "int PlayerCount(void)\nReturns the number of players currently in the game";
	Polyobj_DoorSlide = "Polyobj_DoorSlide(po, speed, angle, dist, delay)";
	Polyobj_DoorSwing = "Polyobj_DoorSwing(po, speed, angle, delay)";
	Polyobj_Move = "Polyobj_Move(po, speed, angle, dist)";
	Polyobj_MoveTimes8 = "Polyobj_MoveTimes8(po, speed, angle, dist)";
	Polyobj_OR_Move = "Polyobj_OR_Move(po, speed, angle, distance)";
	Polyobj_OR_MoveTimes8 = "Polyobj_OR_MoveTimes8(po, speed, angle, distance)";
	Polyobj_OR_RotateLeft = "Polyobj_OR_RotateLeft(po, speed)";
	Polyobj_OR_RotateRight = "Polyobj_OR_RotateRight(po, speed, angle)";
	Polyobj_RotateLeft = "Polyobj_RotateLeft(po, speed, angle)";
	Polyobj_RotateRight = "Polyobj_RotateRight(po, speed, angle)";
	PolyWait = "void PolyWait(int polyid)";
	Print = "void Print(type:expression)\nPrint will print something to the screen.\nPrint will only display for the activator of the script\nFor printing to all players, use PrintBold.";
	PrintBold = "void PrintBold(type:expression)\nThis is exactly the same as Print, except all players will see the printed text\non the screen instead of just the activator of the script.";
	Radius_Quake = "Radius_Quake(intensity, duration, damrad, tremrad, tid)";
	Random = "int Random(int min, int max)";
	Restart = "Restart";
	Script = "Script expression";
	ScriptWait = "void ScriptWait(int script)";
	Sector_ChangeSound = "Sector_ChangeSound(tag, newsequence)";
	SectorSound = "void SectorSound(str sound, int volume)";
	SetLineBlocking = "void SetLineBlocking(int lineid, int blocking)";
	SetLineSpecial = "void SetLineSpecial(int lineid, int special[, int arg0[, int arg1[, int arg2[, int arg3[, int arg4]]]]])\nSetLineSpecial will change the special on all lines with the line id number specified.";
	SetLineTexture = "void SetLineTexture(int lineid, int line_side, int sidedef_texture, str texturename)\nSetLineTexture will change the specified texture on all lines with the line id number specified\nline_side: SIDE_ flags can be used.\nsidedef_texture: TEXTURE_ flags can be used.\ntexturename: the texture that will be set on the line. Use '-' to remove a texture.";
	SoundSequence = "void SoundSequence(str sndseq)\nPlays a sound sequence defined in SNDSEQ lump.";
	Special = "Special";
	Stairs_BuildDown = "Stairs_BuildDown(tag, speed, height, delay, reset)";
	Stairs_BuildDownSync = "Stairs_BuildDownSync(tag, speed, height, reset)";
	Stairs_BuildUp = "Stairs_BuildUp(tag, speed, height, delay, reset)";
	Stairs_BuildUpSync = "Stairs_BuildUpSync(tag, speed, height, reset)";
	str = "str expression";
	Suspend = "Suspend";
	Switch = "Switch(expression)";
	TagWait = "void TagWait(int tag)";
	Teleport = "Teleport(tid, tag, nosourcefog)";
	Teleport_NewMap = "Teleport_NewMap(map, pos)";
	Teleport_NoFog = "Teleport_NoFog(tid)";
	Terminate = "Terminate";
	Thing_Activate = "Thing_Activate(tid)";
	Thing_Deactivate = "Thing_Deactivate(tid)";
	Thing_Destroy = "Thing_Destroy(tid, extreme)";
	Thing_Projectile = "Thing_Projectile(tid, type, angle, speed, vspeed)";
	Thing_ProjectileGravity = "Thing_ProjectileGravity(tid, type, angle, speed, vspeed)";
	Thing_Remove = "Thing_Remove(tid)";
	Thing_Spawn = "Thing_Spawn(tid, type, angle, newtid)";
	Thing_SpawnNoFog = "Thing_SpawnNoFog(tid, type, angle, newtid)";
	ThingCount = "int ThingCount(int type, int tid)";
	ThrustThing = "ThrustThing(angle, force, limit, tid)";
	Timer = "int Timer(void)";
	Unloading = "Script expression Unloading";
	Until = "Until(expression)";
	Void = "Void";
	While = "While(expression)";
	World = "World Int expression:identifier";
}

constants
{
	TRUE;
	FALSE;
	ON;
	OFF;
	YES;
	NO;
	LINE_FRONT;
	LINE_BACK;
	SIDE_FRONT;
	SIDE_BACK;
	TEXTURE_TOP;
	TEXTURE_MIDDLE;
	TEXTURE_BOTTOM;
	GAME_SINGLE_PLAYER;
	GAME_NET_COOPERATIVE;
	GAME_NET_DEATHMATCH;
	CLASS_FIGHTER;
	CLASS_CLERIC;
	CLASS_MAGE;
	SKILL_VERY_EASY;
	SKILL_EASY;
	SKILL_NORMAL;
	SKILL_HARD;
	SKILL_VERY_HARD;
	T_NONE;
	T_CENTAUR;
	T_CENTAURLEADER;
	T_DEMON;
	T_ETTIN;
	T_FIREGARGOYLE;
	T_WATERLURKER;
	T_WATERLURKERLEADER;
	T_WRAITH;
	T_WRAITHBURIED;
	T_FIREBALL1;
	T_MANA1;
	T_MANA2;
	T_ITEMBOOTS;
	T_ITEMEGG;
	T_ITEMFLIGHT;
	T_ITEMSUMMON;
	T_ITEMTPORTOTHER;
	T_ITEMTELEPORT;
	T_BISHOP;
	T_ICEGOLEM;
	T_BRIDGE;
	T_DRAGONSKINBRACERS;
	T_ITEMHEALTHPOTION;
	T_ITEMHEALTHFLASK;
	T_ITEMHEALTHFULL;
	T_ITEMBOOSTMANA;
	T_FIGHTERAXE;
	T_FIGHTERHAMMER;
	T_FIGHTERSWORD1;
	T_FIGHTERSWORD2;
	T_FIGHTERSWORD3;
	T_CLERICSTAFF;
	T_CLERICHOLY1;
	T_CLERICHOLY2;
	T_CLERICHOLY3;
	T_MAGESHARDS;
	T_MAGESTAFF1;
	T_MAGESTAFF2;
	T_MAGESTAFF3;
	T_MORPHBLAST;
	T_ROCK1;
	T_ROCK2;
	T_ROCK3;
	T_DIRT1;
	T_DIRT2;
	T_DIRT3;
	T_DIRT4;
	T_DIRT5;
	T_DIRT6;
	T_ARROW;
	T_DART;
	T_POISONDART;
	T_RIPPERBALL;
	T_STAINEDGLASS1;
	T_STAINEDGLASS2;
	T_STAINEDGLASS3;
	T_STAINEDGLASS4;
	T_STAINEDGLASS5;
	T_STAINEDGLASS6;
	T_STAINEDGLASS7;
	T_STAINEDGLASS8;
	T_STAINEDGLASS9;
	T_STAINEDGLASS0;
	T_BLADE;
	T_ICESHARD;
	T_FLAME_SMALL;
	T_FLAME_LARGE;
	T_MESHARMOR;
	T_FALCONSHIELD;
	T_PLATINUMHELM;
	T_AMULETOFWARDING;
	T_ITEMFLECHETTE;
	T_ITEMTORCH;
	T_ITEMREPULSION;
	T_MANA3;
	T_PUZZSKULL;
	T_PUZZGEMBIG;
	T_PUZZGEMRED;
	T_PUZZGEMGREEN1;
	T_PUZZGEMGREEN2;
	T_PUZZGEMBLUE1;
	T_PUZZGEMBLUE2;
	T_PUZZBOOK1;
	T_PUZZBOOK2;
	T_METALKEY;
	T_SMALLMETALKEY;
	T_AXEKEY;
	T_FIREKEY;
	T_GREENKEY;
	T_MACEKEY;
	T_SILVERKEY;
	T_RUSTYKEY;
	T_HORNKEY;
	T_SERPENTKEY;
	T_WATERDRIP;
	T_TEMPSMALLFLAME;
	T_PERMSMALLFLAME;
	T_TEMPLARGEFLAME;
	T_PERMLARGEFLAME;
	T_DEMON_MASH;
	T_DEMON2_MASH;
	T_ETTIN_MASH;
	T_CENTAUR_MASH;
	T_THRUSTSPIKEUP;
	T_THRUSTSPIKEDOWN;
	T_FLESH_DRIP1;
	T_FLESH_DRIP2;
	T_SPARK_DRIP;
}
