/*******************************************************************\
	GZDoom Builder Script highlighting definitions for DECORATE
\*******************************************************************/

// Editor settings
description = "ZDoom DECORATE";
codepage = 0;
extensions = "txt,dec";
casesensitive = false;
insertcase = 0;				// 0=Normal, 1=Lowercase, 2=Uppercase
lexer = 35;
functionopen = "(";
functionclose = ")";
codeblockopen = "{";
codeblockclose = "}";
arrayopen = "[";
arrayclose = "]";
argumentdelimiter = ",";
terminator = ";";
extrawordchars = "#.$"; // Extra characters to be treated as a part of a word by the Script Editor
keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K";
scripttype = "DECORATE";

keywords
{
//Editor special comments
//These are handled in a different fascion: key is replaced with the value and the caret is placed at [EP] position	
	$Angled = "//$Angled";
	$NotAngled = "//$NotAngled";
	$Category = "//$Category \"[EP]\"";
	$Sprite = "//$Sprite \"[EP]\"";
	$IgnoreRenderstyle = "//$IgnoreRenderstyle";
	$Title = "//$Title \"[EP]\"";
	$Arg0 = "//$Arg0 \"[EP]\"";
	$Arg1 = "//$Arg1 \"[EP]\"";
	$Arg2 = "//$Arg2 \"[EP]\"";
	$Arg3 = "//$Arg3 \"[EP]\"";
	$Arg4 = "//$Arg4 \"[EP]\"";
	$Arg0Default = "//$Arg0Default ";
	$Arg1Default = "//$Arg1Default ";
	$Arg2Default = "//$Arg2Default ";
	$Arg3Default = "//$Arg3Default ";
	$Arg4Default = "//$Arg4Default ";
	$Arg0Tooltip = "//$Arg0Tooltip \"[EP]\"";
	$Arg1Tooltip = "//$Arg1Tooltip \"[EP]\"";
	$Arg2Tooltip = "//$Arg2Tooltip \"[EP]\"";
	$Arg3Tooltip = "//$Arg3Tooltip \"[EP]\"";
	$Arg4Tooltip = "//$Arg4Tooltip \"[EP]\"";
	$Arg0Type = "//$Arg0Type ";
	$Arg1Type = "//$Arg1Type ";
	$Arg2Type = "//$Arg2Type ";
	$Arg3Type = "//$Arg3Type ";
	$Arg4Type = "//$Arg4Type ";
	$Arg0Enum = "//$Arg0Enum ";
	$Arg1Enum = "//$Arg1Enum ";
	$Arg2Enum = "//$Arg2Enum ";
	$Arg3Enum = "//$Arg3Enum ";
	$Arg4Enum = "//$Arg4Enum ";
	$Arg0RenderStyle = "//$Arg0RenderStyle \"[EP]\"";
	$Arg1RenderStyle = "//$Arg1RenderStyle \"[EP]\"";
	$Arg2RenderStyle = "//$Arg2RenderStyle \"[EP]\"";
	$Arg3RenderStyle = "//$Arg3RenderStyle \"[EP]\"";
	$Arg4RenderStyle = "//$Arg4RenderStyle \"[EP]\"";
	$Arg0RenderColor = "//$Arg0RenderColor ";
	$Arg1RenderColor = "//$Arg1RenderColor ";
	$Arg2RenderColor = "//$Arg2RenderColor ";
	$Arg3RenderColor = "//$Arg3RenderColor ";
	$Arg4RenderColor = "//$Arg4RenderColor ";
	$Arg0MinRange = "//$Arg0MinRange ";
	$Arg1MinRange = "//$Arg1MinRange ";
	$Arg2MinRange = "//$Arg2MinRange ";
	$Arg3MinRange = "//$Arg3MinRange ";
	$Arg4MinRange = "//$Arg4MinRange ";
	$Arg0MaxRange = "//$Arg0MaxRange ";
	$Arg1MaxRange = "//$Arg1MaxRange ";
	$Arg2MaxRange = "//$Arg2MaxRange ";
	$Arg3MaxRange = "//$Arg3MaxRange ";
	$Arg4MaxRange = "//$Arg4MaxRange ";
	$Arg0MinRangeColor = "//$Arg0MinRangeColor ";
	$Arg1MinRangeColor = "//$Arg1MinRangeColor ";
	$Arg2MinRangeColor = "//$Arg2MinRangeColor ";
	$Arg3MinRangeColor = "//$Arg3MinRangeColor ";
	$Arg4MinRangeColor = "//$Arg4MinRangeColor ";
	$Arg0MaxRangeColor = "//$Arg0MaxRangeColor ";
	$Arg1MaxRangeColor = "//$Arg1MaxRangeColor ";
	$Arg2MaxRangeColor = "//$Arg2MaxRangeColor ";
	$Arg3MaxRangeColor = "//$Arg3MaxRangeColor ";
	$Arg4MaxRangeColor = "//$Arg4MaxRangeColor ";
	$Color = "//$Color ";
	$Obsolete = "//$Obsolete \"[EP]\"";
	$GZDB_SKIP = "//$GZDB_SKIP";
//Editor special comments for thing categories ($Sprite and $Color are already defined above)
	$Sort	= "//$Sort ";
	$Arrow = "//$Arrow ";
	$Error = "//$Error ";
	$FixedSize = "//$FixedSize ";
	$FixedRotation = "//$FixedRotation ";
	$AbsoluteZ = "//$AbsoluteZ ";
//Preprocessor directives
	#Include = "#Include";
	#region = "#region";
	#endregion = "#endregion";
//WFDS
	A_Bool = "return A_Bool(bool result);";
	A_Int = "return A_Int(int result);";
	A_State = "return A_State(str state);\nreturn A_State(int offset);";
//Monster AI
	A_AlertMonsters = "A_AlertMonsters[(float maxrange = 0.0[, int flags = 0])]";
	A_Burst = "A_Burst(str chunktype)";
	A_CentaurDefend = "A_CentaurDefend";
	A_Chase = "A_Chase[(str meleestate = \"Melee\"[, str rangedstate = \"Missile\"[, int flags = 0]])]";
	A_ClearLastHeard = "A_ClearLastHeard";
	A_ClearSoundTarget = "A_ClearSoundTarget";
	A_ClearTarget = "A_ClearTarget";
	A_DamageChildren = "A_DamageChildren(int amount[, str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"[, int src = AAPTR_DEFAULT[, int inflictor = AAPTR_DEFAULT]]]]]])\namount: amount of damage to inflict. Use a negative value to heal.\ndamagetype: the type of damage to inflict.\nflags: DMSS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_DamageMaster = "A_DamageMaster(int amount[, str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"[, int src = AAPTR_DEFAULT[, int inflictor = AAPTR_DEFAULT]]]]]])\namount: amount of damage to inflict. Use a negative value to heal.\ndamagetype: the type of damage to inflict.\nflags: DMSS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_DamageSelf = "A_DamageSelf(int amount[, str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"[, int src = AAPTR_DEFAULT[, int inflictor = AAPTR_DEFAULT]]]]]])\namount: amount of damage to inflict. Use a negative value to heal.\ndamagetype: the type of damage to inflict.\nflags: DMSS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_DamageSiblings = "A_DamageSiblings(int amount[, str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"[, int src = AAPTR_DEFAULT[, int inflictor = AAPTR_DEFAULT]]]]]])\namount: amount of damage to inflict. Use a negative value to heal.\ndamagetype: the type of damage to inflict.\nflags: DMSS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_DamageTarget = "A_DamageTarget(int amount[, str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"[, int src = AAPTR_DEFAULT[, int inflictor = AAPTR_DEFAULT]]]]]])\namount: amount of damage to inflict. Use a negative value to heal.\ndamagetype: the type of damage to inflict.\nflags: DMSS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_DamageTracer = "A_DamageTracer(int amount[, str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"[, int src = AAPTR_DEFAULT[, int inflictor = AAPTR_DEFAULT]]]]]])\namount: amount of damage to inflict. Use a negative value to heal.\ndamagetype: the type of damage to inflict.\nflags: DMSS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_Die = "A_Die[(str damagetype = \"none\")]";
	A_FaceTarget = "A_FaceTarget[(float angle = 0.0[, float pitch = 270.0])]\nA_FaceTarget([float max_turn = 0.0[, float max_pitch = 270.0[, float ang_offset = 0.0[, float pitch_offset = 0.0[, int flags = 0[, float z_add = 0.0]]]]]])";
	A_FaceMaster = "A_FaceMaster[(float angle = 0.0[, float pitch = 270.0])]\nA_FaceMaster([float max_turn = 0.0[, float max_pitch = 270.0[, float ang_offset = 0.0[, float pitch_offset = 0.0[, int flags = 0[, float z_add = 0.0]]]]]])";
	A_FastChase = "A_FastChase";
	A_KillChildren = "A_KillChildren[(str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"[, int src = AAPTR_DEFAULT[, int inflictor = AAPTR_DEFAULT]]]]])]\ndamagetype: if the actor dies, the actor will enter a death state based on damagetype if present (or pain state if using NODAMAGE).\nflags: KILS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_KillMaster = "A_KillMaster[(str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"[, int src = AAPTR_DEFAULT[, int inflictor = AAPTR_DEFAULT]]]]])]\ndamagetype: if the actor dies, the actor will enter a death state based on damagetype if present (or pain state if using NODAMAGE).\nflags: KILS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_KillSiblings = "A_KillSiblings[(str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"[, int src = AAPTR_DEFAULT[, int inflictor = AAPTR_DEFAULT]]]]])]\ndamagetype: if the actor dies, the actor will enter a death state based on damagetype if present (or pain state if using NODAMAGE).\nflags: KILS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_KillTarget = "A_KillTarget[(str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"[, int src = AAPTR_DEFAULT[, int inflictor = AAPTR_DEFAULT]]]]])]\ndamagetype: if the actor dies, the actor will enter a death state based on damagetype if present (or pain state if using NODAMAGE).\nflags: KILS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_KillTracer = "A_KillTracer[(str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"[, int src = AAPTR_DEFAULT[, int inflictor = AAPTR_DEFAULT]]]]])]\ndamagetype: if the actor dies, the actor will enter a death state based on damagetype if present (or pain state if using NODAMAGE).\nflags: KILS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_Look = "A_Look";
	A_Look2 = "A_Look2";
	A_LookEx = "A_LookEx(int flags, float minseedist, float maxseedist, float maxheardist, float fov, state seestate)";
	A_RaiseChildren = "A_RaiseChildren[(bool copyaffiliation = false)]";
	A_RaiseMaster = "A_RaiseMaster[(bool copyaffiliation = false)]";
	A_RaiseSiblings = "A_RaiseSiblings[(bool copyaffiliation = false)]"; 
	A_RemoveChildren = "A_RemoveChildren[(bool all = false[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]])]\nflags: RMVF flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_RemoveMaster = "A_RemoveMaster[(int flags = 0[, str filter = \"None\"[, str species = \"None\"]])]\nflags: RMVF flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_RemoveSiblings = "A_RemoveSiblings[(bool all = false[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]])]\nflags: RMVF flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_RemoveTarget = "A_RemoveTarget[(int flags = 0[, str filter = \"None\"[, str species = \"None\"]])]\nflags: RMVF flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_RemoveTracer = "A_RemoveTracer[(int flags = 0[, str filter = \"None\"[, str species = \"None\"]])]\nflags: RMVF flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_Remove = "A_Remove(int pointer[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]])\nflags: RMVF flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage.";
	A_SentinelBob = "A_SentinelBob";
	A_SetTeleFog = "A_SetTeleFog(str telefogsourceclass, str telefogdestclass)";
	A_Srcr2Decide = "A_Srcr2Decide";
	A_TurretLook = "A_TurretLook";
	A_Teleport = "state A_Teleport[(str teleportstate = \"Teleport\"[, str targettype = \"BossSpot\"[, str fogtype = \"TeleportFog\"[, int flags = 0[, float mindist = 0.0[, float maxdist = 0.0[, int pointer = AAPTR_DEFAULT]]]]]])]\nbool A_Teleport[(str teleportstate = \"Teleport\"[, str targettype = \"BossSpot\"[, str fogtype = \"TeleportFog\"[, int flags = 0[, float mindist = 0.0[, float maxdist = 0.0[, int pointer = AAPTR_DEFAULT]]]]]])]";
	A_VileChase = "A_VileChase";
	A_Wander = "A_Wander";
//Generic monster attacks
	A_CustomMissile = "A_CustomMissile(str missiletype[, float spawnheight = 32.0[, float spawnofs_horiz = 0.0[, int angle = 0[, int aimflags = 0[, int pitch = 0[, int target = AAPTR_TARGET]]]]]])";
	A_CustomBulletAttack = "A_CustomBulletAttack(float horz_spread, float vert_spread, int numbullets, int damageperbullet[, str pufftype = \"BulletPuff\"[, float range = 0.0[, int flags = 0[, int target = AAPTR_TARGET[, str missile = \"none\"[, float spawnheight = 32.0[, float spawnofs_xy = 0.0]]]]]]])";
	A_CustomRailgun = "A_CustomRailgun(int damage[, int offset[, color ringcolor[, color corecolor[, int flags = 0[, bool aim = false[, float maxdiff = 0.0[, str pufftype = \"\"[, float spread_xy = 0.0[, float spread_z = 0.0[, float range = 8192[, int duration = 35[, float sparsity = 1.0[, float driftspeed = 1.0[, str spawnclass = \"\"[, float spawnofs_z = 0[, int spiraloffset = 270[, int actorpiercelimit = 0]]]]]]]]]]]]]]]]])";
	A_CustomMeleeAttack = "A_CustomMeleeAttack[(int damage = 0[, str meleesound = \"\"[, str misssound = \"\"[, str damagetype = \"Melee\"[, bool bleed = true]]]])]";
	A_CustomComboAttack = "A_CustomComboAttack(str missiletype, float spawnheight, int damage, str meleesound[, str damagetype = \"Melee\"[, bool bleed = true]])";
	A_MonsterRefire = "state A_MonsterRefire(int chancecontinue, str abortstate)";
	A_BasicAttack = "A_BasicAttack(int meleedamage, str meleesound, str missiletype, float missileheight)";
	A_BulletAttack = "A_BulletAttack";
	A_MonsterRail = "A_MonsterRail";
	A_Explode = "A_Explode[(int explosiondamage = 128[, int explosionradius = 128[, int flags = XF_HURTSOURCE[, bool alert = false[, int fulldamageradius = 0[, int nails = 0[, int naildamage = 10[, str pufftype = \"BulletPuff\"[, str damagetype = \"none\"]]]]]]]])]";
	A_RadiusDamageSelf = "[(int damage = 128[, float distance = 128.0[, int flags = 0[, str flashtype = \"None\"]]])]\nflags: RDSF flags";
	A_RadiusThrust = "A_RadiusThrust(int force, int distance[, int flags[, int fullthrustdistance]])";
	A_SpawnProjectile = "A_SpawnProjectile(str missiletype[, float spawnheight = 32.0[, float spawnofs_xy = 0.0[, double angle = 0.0[, int flags = 0[, angle pitch = 0[, int ptr = AAPTR_TARGET]]]]]])";
	A_Detonate = "A_Detonate";
	A_ThrowGrenade = "bool A_ThrowGrenade(str spawntype[, float spawnheight[, float throwspeed_horz[, float throwspeed_vert[, bool useammo]]]])";
	A_WolfAttack = "A_WolfAttack[(int flags = 0[, str soundname = \"weapons/pistol\"[, float snipe = 1.0[, int damage = 64[, int blocksize = 128[, int pointblank = 0[, int longrange = 0[, float runspeed = 160.0[, str pufftype = \"BulletPuff\"]]]]]]]])]"; 
//Freeze death functions 
	A_FreezeDeath = "A_FreezeDeath";
	A_GenericFreezeDeath = "A_GenericFreezeDeath";
	A_FreezeDeathChunks = "A_FreezeDeathChunks";
	A_IceGuyDie = "A_IceGuyDie";
//Sound functions
	A_PlaySound = "A_PlaySound(str soundname[, int slot = CHAN_BODY[, float volume = 1.0[, bool looping = false[, float attenuation = ATTN_NORM]]]])";
	A_PlayWeaponSound = "A_PlayWeaponSound(str soundname)";
	A_ActiveSound = "A_ActiveSound";
	A_LoopActiveSound = "A_LoopActiveSound";
	A_FLoopActiveSound = "A_FLoopActiveSound";
	A_StopSound = "A_StopSound[(int slot = CHAN_VOICE)]";
	A_Pain = "A_Pain";
	A_Scream = "A_Scream";
	A_XScream = "A_XScream";
	A_PlayerScream = "A_PlayerScream";
	A_VileStart = "A_VileStart";
	A_BrainPain = "A_BrainPain";
	A_BrainAwake = "A_BrainAwake";
	A_BFGSound = "A_BFGSound";
//Print actions
	A_Print = "A_Print(str text[, float time = 0.0[, str fontname = \"SmallFont\"]])";
	A_PrintBold = "A_PrintBold(str text[, float time = 0.0[, str fontname = \"SmallFont\"]])";
	A_Log = "A_Log(str text)";
	A_LogInt = "A_LogInt(int number)";
	A_LogFloat = "A_LogFloat(float number)";
//Special actions
	A_BossDeath = "A_BossDeath";
	A_KeenDie = "A_KeenDie[(int tag = 666)]";
	A_BrainDie = "A_BrainDie";
	A_GetHurt = "A_GetHurt";
	A_KlaxonBlare = "A_KlaxonBlare";
	A_CheckTerrain = "A_CheckTerrain";
	A_SetBlend = "A_SetBlend(str blendcolor, float alpha, int duration[, str fadecolor])";
	A_CheckPlayerDone = "A_CheckPlayerDone";
	A_PlayerSkinCheck = "state A_PlayerSkinCheck(str state)";
	A_SkullPop = "A_SkullPop[(str type = \"BloodySkull\")]";
	A_Quake = "A_Quake(int intensity, int duration, int damageradius, int tremorradius[, str sound = \"world/quake\"])";
	A_QuakeEx = "A_QuakeEx(int intensityX, int intensityY, int intensityZ, int duration, int damrad, int tremrad[, str sound = \"world/quake\"[, int flags = 0[, float mulwavex = 1.0[, float mulwavey = 1.0[, float mulwavez = 1.0[, int falloff = 0[, int highpoint = 0[, float rollintensity = 0.0[, float rollwave = 0.0]]]]]]]]])";
	A_CopySpriteFrame = "A_CopySpriteFrame((int from, int to[, int flags = 0]))";
	A_SetSpriteAngle = "A_SetSpriteAngle(float angle[, int ptr = AAPTR_DEFAULT])";
	A_SetSpriteRotation = "A_SetSpriteRotation(float angle[, int ptr = AAPTR_DEFAULT])";
//Spawn functions
	A_TossGib = "A_TossGib";
	A_SpawnDebris = "A_SpawnDebris(str type[, bool translation = false[, float horizontal_vel = 1.0[, float vertical_vel = 1.0]]])";
	A_SpawnItem = "bool A_SpawnItem(str type, int distance, float zpos, bool useammo, bool translation)";
	A_SpawnItemEx = "bool A_SpawnItemEx(str type[, float xoffset = 0.0[, float yoffset = 0.0[, float zoffset = 0.0[, float xvelocity = 0.0[, float yvelocity = 0.0[, float zvelocity = 0.0[, float angle = 0.0[, int flags = 0[, int skipchance = 0[, int tid = 0]]]]]]]]]])";
	A_SpawnParticle = "A_SpawnParticle(color color[, int flags = 0[, int lifetime = 35[, float size = 1.0[, float angle = 0.0[, float xoff = 0.0[, float yoff = 0.0[, float zoff = 0.0[, float velx = 0.0[, float vely = 0.0[, float velz = 0.0[, float accelx = 0.0[, float accely = 0.0[, float accelz = 0.0[, float startalpha = 1.0[, float fadestep = -1.0[, float sizestep = 0.0]]]]]]]]]]]]]]]])";
//State jumps
	A_CheckBlock = "state A_CheckBlock(str block[, int flags = 0[, int pointer = AAPTR_TARGET[, float xoff = 0.0[, float yoff = 0.0[, float zoff = 0.0[, float angle = 0.0]]]]]])";
	A_CheckCeiling = "state A_CheckCeiling(str state)\nstate A_CheckCeiling(int offset)";
	A_CheckFloor = "state A_CheckFloor(str state)\nstate A_CheckFloor(int offset)";
	A_CheckFlag = "state A_CheckFlag(str flagname, state label[, int check_pointer = AAPTR_DEFAULT])";
	A_CheckLOF = "state A_CheckLOF(state jump[, int flags = 0[, float range = 0.0[, float minrange = 0.0[, float angle = 0.0[, float pitch = 0.0[, float offsetheight = 0.0[, float offsetwidth = 0.0[, int ptr_target = AAPTR_DEFAULT[, float offsetforward = 0.0]]]]]]]]])";
	A_CheckProximity = "state A_CheckProximity(str jump, str classname, float distance[, int count = 1[, int flags = 0[, int pointer = AAPTR_DEFAULT]]])"; 
	A_CheckRange = "state A_CheckRange(float distance, str state[, bool 2d_check = false])\nstate A_CheckRange(float distance, int offset[, bool 2d_check = false])";
	A_CheckSight = "state A_CheckSight(str state)\nstate A_CheckSight(int offsete)";
	A_CheckSightOrRange = "state A_CheckSightOrRange(float distance, str state[, bool 2d_check = false])\nstate A_CheckSightOrRange(float distance, int offset[, bool 2d_check = false])";
	A_CheckSpecies = "state A_CheckSpecies(str jump[, str species=\"None\"[, int pointer = AAPTR_DEFAULT]]) ";
	A_Jump = "state A_Jump(int chance, str state, ...)\nstate A_Jump(int chance, int offset, ...)";
	A_JumpIf = "state A_JumpIf(expression, str state)\nstate A_JumpIf(expression, int offset)";
	A_JumpIfArmorType = "state A_JumpIfArmorType(str armortype, str state[, int minimum = 1])";
	A_JumpIfCloser = "state A_JumpIfCloser(int distance, str state[, bool noz = false])\nstate A_JumpIfCloser(int distance, int offset[, bool noz = false])";
	A_JumpIfHealthLower = "state A_JumpIfHealthLower(int health, str state[, int pointer = AAPTR_DEFAULT])\nstate A_JumpIfHealthLower(int health, int offset[, int pointer = AAPTR_DEFAULT])";
	A_JumpIfHigherOrLower = "state A_JumpIfHigherOrLower(str high, str low[, float offsethigh = 0.0[, float offsetlow = 0.0[, bool includeheight = true[, int pointer = AAPTR_TARGET]]]])";
	A_JumpIfInventory = "state A_JumpIfInventory(str inventorytype, int amount, str state[, int owner = AAPTR_DEFAULT])\nstate A_JumpIfInventory(str inventorytype, int amount, int offset[, int owner = AAPTR_DEFAULT])";
	A_JumpIfInTargetInventory = "state A_JumpIfInTargetInventory(str item, int count, str state[, int forward = AAPTR_DEFAULT])\nstate A_JumpIfInTargetInventory(str item, int count, int offset[, int forward = AAPTR_DEFAULT])";
	A_JumpIfInTargetLOS = "state A_JumpIfInTargetLOS(str state[, float fov = 0.0[, int flags = 0[, float dist_max = 0.0[, float dist_close = 0.0]]]])\nstate A_JumpIfInTargetLOS(int offset[, float fov = 0.0[, int flags = 0[, float dist_max = 0.0[, float dist_close = 0.0]]]])\nflags: JLOSF flags.";
	A_JumpIfMasterCloser = "state A_JumpIfMasterCloser(int distance, str state[, bool noz = false])\nstate A_JumpIfMasterCloser(int distance, int offset[, bool noz = false])";
	A_JumpIfNoAmmo = "state A_JumpIfNoAmmo(str state)\nstate A_JumpIfNoAmmo(int offset)";
	A_JumpIfTargetInLOS = "state A_JumpIfTargetInLOS(str state[, float fov = 0.0[, int flags = 0[, float dist_max = 0.0[, float dist_close = 0.0]]]])\nstate A_JumpIfTargetInLOS(int offset[, float fov = 0.0[, int flags = 0[, float dist_max = 0.0[, float dist_close = 0.0]]]])\nflags: JLOSF flags.";
	A_JumpIfTargetInsideMeleeRange = "state A_JumpIfTargetInsideMeleeRange(str state)\nstate A_JumpIfTargetInsideMeleeRange(int offset)\nJumps the number of frames (offset) forward, or to the specified state\nwhen the target of the calling actor is within melee range of the caller.";
	A_JumpIfTargetOutsideMeleeRange = "state A_JumpIfTargetOutsideMeleeRange(str state)\nstate A_JumpIfTargetOutsideMeleeRange(int offset)\nJumps the number of frames (offset) forward, or to the specified state\nwhen the target of the calling actor is beyond melee range of the caller.";
	A_JumpIfTracerCloser = "state A_JumpIfTracerCloser(int distance, str state[, bool noz = false])\nstate A_JumpIfTracerCloser(int distance, int offset[, bool noz = false])";
//Status changes
	A_ActiveAndUnblock = "A_ActiveAndUnblock"; 
	A_CallSpecial = "bool A_CallSpecial(int special[, int arg1 = 0[, int arg2 = 0[, int arg3 = 0[, int arg4 = 0[, int arg5 = 0]]]]])";
	A_ChangeFlag = "A_ChangeFlag(str flagname, bool value)";
	A_ChangeVelocity = "A_ChangeVelocity[(float x = 0.0[, float y = 0.0[, float z = 0.0[, int flags = 0[, int pointer = AAPTR_DEFAULT]]]])]\nflags: CVF flags.";
	A_ClearShadow = "A_ClearShadow";
	A_CopyFriendliness = "A_CopyFriendliness[(int copyfrom = AAPTR_MASTER)]";
	A_DeQueueCorpse = "A_DeQueueCorpse";
	A_FadeIn = "A_FadeIn[(float increase_amount = 0.1[, int flags = 0])]\nflags: FTF flags.";
	A_FadeOut = "A_FadeOut[(float reduce_amount = 0.1[, int flags = FTF_REMOVE])]\nflags: FTF flags.";
	A_FadeTo = "A_FadeTo(float target[, float amount = 0.1[, int flags = 0]])\nflags: FTF flags.";
	A_FaceMovementDirection = "state A_FaceMovementDirection[(float offset = 0[, float anglelimit = 0[, float pitchlimit = 0[, int flags = 0[, int pointer = AAPTR_DEFAULT]]]])]";
	A_Fall = "A_Fall";
	A_Gravity = "A_Gravity";
	A_HideThing = "A_HideThing";
	A_LowGravity = "A_LowGravity";
	A_NoBlocking = "A_NoBlocking";
	A_NoGravity = "A_NoGravity";
	A_QueueCorpse = "A_QueueCorpse";
	A_RearrangePointers = "A_RearrangePointers(int target, int master, int tracer, int flags)\nflags: AAPTR flags.";
	A_ResetHealth = "A_ResetHealth[(int pointer = AAPTR_DEFAULT)]";
	A_Respawn = "A_Respawn[(int flags = RSF_FOG)]\nflags: RSF flags";
	A_ScaleVelocity = "A_ScaleVelocity(float scale[, int pointer = AAPTR_DEFAULT])";
	A_ScreamAndUnblock = "A_ScreamAndUnblock";
	A_SetAngle = "A_SetAngle(float angle[, int flags = 0[, int pointer = AAPTR_DEFAULT]])\nangle: the actor's new angle, in degrees.\nflags: SPF flags.";
	A_SetArg = "A_SetArg(int position, int value)";
	A_SetChaseThreshold = "A_SetChaseThreshold(int threshold[, bool setdefaultthreshhold = false[, int pointer = AAPTR_DEFAULT]])";
	A_SetDamageType = "A_SetDamageType(str damagetype)";
	A_SetFloat = "A_SetFloat";
	A_SetFloatSpeed = "A_SetFloatSpeed(float speed[, int pointer = AAPTR_DEFAULT])";
	A_FloatBobPhase = "A_FloatBobPhase(int bob)\nChanges the calling actor's FloatBobPhase to bob, which takes a number from 0 to 63.\nIf the number is invalid or not in range, the function does nothing.";
	A_SetFloorClip = "A_SetFloorClip";
	A_SetHealth = "A_SetHealth(int health[, int pointer = AAPTR_DEFAULT])\nhealth: The health value to set for the actor. Valid values are 1 and above.\npointer: The actor to set its health. Default is AAPTR_DEFAULT, which corresponds to the calling actor.";
	A_SetInvulnerable = "A_SetInvulnerable";
	A_SetMass = "A_SetMass(int mass)";
	A_SetPainThreshold = "A_SetPainThreshold(int threshold[, int pointer = AAPTR_DEFAULT])"; 
	A_SetPitch = "A_SetPitch(float pitch[, int flags = 0[, int pointer = AAPTR_DEFAULT]])\npitch: The actor's new pitch, in degrees.\nflags: SPF flags.";
	A_SetReflective = "A_SetReflective";
	A_SetReflectiveInvulnerable = "A_SetReflectiveInvulnerable";
	A_SetRipperLevel = "A_SetRipperLevel(int level)";
	A_SetRipMin = "A_SetRipMin(int min)";
	A_SetRipMax = "A_SetRipMax(int max)";
	A_SetRoll = "A_SetRoll(float roll[, int flags = 0[, int pointer = AAPTR_DEFAULT]])";
	A_SetScale = "A_SetScale(float scaleX[, float scaleY = scaleX[, int pointer = AAPTR_DEFAULT[, bool usezero = false]]])";
	A_SetShadow = "A_SetShadow";
	A_SetShootable = "A_SetShootable";
	A_SetSize = "bool A_SetSize(float newradius[, float newheight = -1[, bool testpos = false]])";
	A_SetSolid = "A_SetSolid";
	A_SetSpecial = "A_SetSpecial(int special, int arg0, int arg1, int arg2, int arg3, int arg4)";
	A_SetSpecies = "A_SetSpecies(str species[, int pointer = AAPTR_DEFAULT])";
	A_SetSpeed = "A_SetSpeed(float speed[, int pointer = AAPTR_DEFAULT])";
	A_SetTics = "A_SetTics(int tics)";
	A_SetTranslucent = "A_SetTranslucent(float alpha[, int mode = 0])";
	A_SetUserVar = "A_SetUserVar(str name, int value)";
	A_SetUserVarFloat = "A_SetUserVarFloat(str name, float value)";
	A_SetVisibleRotation = "A_SetVisibleRotation(float anglestart[, float angleend = 0.0[, float pitchstart = 0.0[, float pitchend = 0.0[, int flags = 0[, int ptr = AAPTR_DEFAULT]]]]]])";
	A_SwapTeleFog = "A_SwapTeleFog";
	A_TransferPointer = "A_TransferPointer(int source, int recipient, int sourcefield, int recipientfield[, int flags])\nflags: PTROP flags.";
	A_UnHideThing = "A_UnHideThing";
	A_UnsetFloat = "A_UnsetFloat";
	A_UnSetFloorClip = "A_UnSetFloorClip";
	A_UnSetInvulnerable = "A_UnSetInvulnerable";
	A_UnSetReflective = "A_UnSetReflective";
	A_UnSetReflectiveInvulnerable = "A_UnSetReflectiveInvulnerable";
	A_UnSetShootable = "A_UnSetShootable";
	A_UnsetSolid = "A_UnsetSolid";
//Missile movement
	A_SeekerMissile = "A_SeekerMissile(angle threshold, angle maxturnangle[, int flags = 0[, int chance = 50[, int distance = 10]]])\nflags: SMF flags.";
	A_Tracer = "A_Tracer";
	A_Tracer2 = "A_Tracer2";
	A_FaceTracer = "A_FaceTracer[(float angle = 0.0[, float pitch = 270.0])]\nA_FaceTracer([float max_turn = 0.0[, float max_pitch = 270.0[, float ang_offset = 0.0[, float pitch_offset = 0.0[, int flags = 0[, float z_add = 0.0]]]]]])";
	A_Fire = "A_Fire[(float height = 0.0)]";
	A_Weave = "A_Weave(int horzspeed, int vertspeed, float horzdist, float vertdist)";
	A_Warp = "state A_Warp(int ptr_destination[, float x-offset = 0[, float y-offset = 0[, float z-offset = 0[, float angle = 0[, int flags = 0[, str success_state = \"\"[, float heightoffset = 0[, float radiusoffset = 0[, float pitch = 0]]]]]]]]])\nbool A_Warp(int ptr_destination[, float x-offset = 0[, float y-offset = 0[, float z-offset = 0[, float angle = 0[, int flags = 0[, str success_state = \"\"[, float heightoffset = 0[, float radiusoffset = 0[, float pitch = 0]]]]]]]]])\nflags: WARPF flags.";
	A_Countdown = "A_Countdown";
	A_CountdownArg = "A_CountdownArg(int arg[, str targetstate])";
	A_Stop = "A_Stop";
//Inventory functions
	A_GiveInventory = "bool A_GiveInventory(str type[, int count = 0[, int giveto = AAPTR_DEFAULT]])\ntype: the item to give. This should be a valid inventory item.\ncount: the number of samples of this item to give. Default is 0, which is interpreted as 1.\ngiveto: the actor to give the item to";
	A_GiveToChildren = "int A_GiveToChildren(str type[, int count = 0])\ntype: the item to give. This should be a valid inventory item.\ncount: the number of samples of this item to give. Default is 0, which is interpreted as 1.";
	A_GiveToSiblings = "int A_GiveToSiblings(str type[, int count = 0])\ntype: the item to give. This should be a valid inventory item.\ncount: the number of samples of this item to give. Default is 0, which is interpreted as 1.";
	A_GiveToTarget = "bool A_GiveToTarget(str type, [int count = 1[, int giveto = AAPTR_DEFAULT]])";
	A_TakeInventory = "bool A_TakeInventory(str type, int count[, int flags[, int takefrom = AAPTR_DEFAULT]])";
	A_TakeFromChildren = "int A_TakeFromChildren(str type[, int count = 0])\ntype: the item to take. This should be a valid inventory item.\ncount: the number of samples of this item to take.\nIf this is 0, the item is cleared from the inventory unless it has the\nINVENTORY.KEEPDEPLETED flag set, and in which case, its amount is merely reduced to 0.\nDefault is 0.";
	A_TakeFromSiblings = "int A_TakeFromSiblings(str type[, int count = 0])\ntype: the item to take. This should be a valid inventory item.\ncount: the number of samples of this item to take.\nIf this is 0, the item is cleared from the inventory unless it has the\nINVENTORY.KEEPDEPLETED flag set, and in which case, its amount is merely reduced to 0.\nDefault is 0.";
	A_TakeFromTarget = "bool A_TakeFromTarget(str type, int count[, int flags[, int takefrom = AAPTR_DEFAULT]])";
	A_DropInventory = "A_DropInventory(str type)";
	A_DropItem = "A_DropItem(str item[, int dropamount = -1[, int chance = 256]])\nThe calling actor drops the specified item.\nThis works in a similar way to the DropItem actor property.";
	A_SelectWeapon = "bool A_SelectWeapon(str type)";
	A_SetInventory = "bool A_SetInventory(string type, int count[, int ptr = AAPTR_DEFAULT[, bool beyondMax = false]]]) ";
	A_RadiusGive = "int A_RadiusGive(str item, float distance, int flags[, int amount = 0[, str filter = \"None\"[, str species = \"None\"[, int mindist = 0[, int limit = 0]]]]])\nflags: RGF flags.";
//Weapon functions
	A_WeaponReady = "A_WeaponReady[(int flags = 0)]\nflags: WRF flags.";
	A_WeaponOffset = "A_WeaponOffset[(float x = 0[, float y = 32[, int flags = 0])]\nflags: WOF flags.";
	A_Lower = "A_Lower";
	A_Raise = "A_Raise";
	A_ReFire = "A_ReFire[(str state = \"Hold\")]";
	A_ClearOverlays = "int A_ClearOverlays[(int start = 0, int stop = 0, bool safety = true)]";
	A_ClearReFire = "A_ClearReFire";
	A_GunFlash = "A_GunFlash[(str state = \"Flash\"[, int flags = 0])]\nflags: GFF flags.";
	A_CheckReload = "A_CheckReload";
	A_CheckForReload = "state A_CheckForReload(int counter, str state[, bool dontincrement = false])";
	A_ResetReloadCounter = "A_ResetReloadCounter";
	A_Light = "A_Light(int intensity)";
	A_Light0 = "A_Light0";
	A_Light1 = "A_Light1";
	A_Light2 = "A_Light2";
	A_LightInverse = "A_LightInverse";
	A_Overlay = "bool A_Overlay(int layer[, state start = \"\"[, bool nooverride = false]])";
	A_OverlayFlags = "A_OverlayFlags(int layer, int flags, bool set)\nflags: PSPF flags.";
	A_OverlayOffset = "A_OverlayOffset[(int layer = 0[, float x = 0.0[, float y = 32.0[, int flags = 0]]]])]\nflags: WOF flags.";
	A_Recoil = "A_Recoil(float force)";
	A_ZoomFactor = "A_ZoomFactor[(float zoom = 1.0[, int flags = 0])]\nflags: ZOOM flags.";
	A_SetCrosshair = "A_SetCrosshair(int number)";
//Weapon attack functions
	A_Punch = "A_Punch";
	A_Saw = "A_Saw[(str fullsound = \"weapons/sawfull\"[, str hitsound = \"weapons/sawhit\"[, int damage = 0[, str pufftype = \"BulletPuff\"[, int flags = 0[, float range = 65.0[, float spread_xy = 2.8125[, float spread_z = 0.0[, float lifesteal = 0.0[, int lifestealmax = 0[, str armorbonustype = \"ArmorBonus\"]]]]]]]]]])]";
	A_CustomPunch = "A_CustomPunch(int damage[, bool norandom = false[, int flags = 0[, str pufftype = \"BulletPuff\"[, float range = 64.0[, float lifesteal = 0.0[, int lifestealmax = 0[, str armorbonustype = \"ArmorBonus\"[, str meleesound[, str misssound]]]]]]]]])";
	A_FireBullets = "A_FireBullets(int spread_horz, int spread_vert, int numbullets, int damage[, str pufftype = \"\"[, int flags = FBF_USEAMMO[, float range = 0.0[, str missile = \"none\"[, float spawnheight = 32.0[, float spawnofs_xy = 0.0]]]]]])";
	A_FireCustomMissile = "A_FireCustomMissile(str missiletype[, int angle = 0[, bool useammo = false[, float spawnofs_horz = 0.0[, int spawnheight = 0[, int flags = 0[, angle pitch = 0]]]]]])";
	A_FireProjectile = "A_FireProjectile(str missiletype[, int angle = 0[, bool useammo = false[, float spawnofs_horz = 0.0[, int spawnheight = 0[, int flags = 0[, float pitch = 0.0]]]]]])";
	A_RailAttack = "A_RailAttack(int damage[, int spawnofs_horz[, bool useammo[, str ringcolor[, str corecolor[, int flags[, int maxdiff[, str pufftype[, float spread_xy = 0.0[, float spread_z = 0.0[, float range = 8192.0[, int duration = 35[, float sparsity = 1.0[, float driftspeed = 1.0[, str spawnclass[, float spawnofs_z = 0.0[, int spiraloffset = 270[, int actorpiercelimit = 0]]]]]]]]]]]]]]]]])";
	A_FireAssaultGun = "A_FireAssaultGun";
	A_FireBFG = "A_FireBFG";
	A_FireOldBFG = "A_FireOldBFG";
	A_FireShotgun = "A_FireShotgun";
	A_FireShotgun2 = "A_FireShotgun2";
	A_FireCGun = "A_FireCGun";
	A_FireMissile = "A_FireMissile";
	A_FirePlasma = "A_FirePlasma";
//Script functions
	ACS_ExecuteWithResult = "int ACS_ExecuteWithResult(int script, int arg1, int arg2, int arg3, int arg4)";
	ACS_NamedExecute = "bool ACS_NamedExecute(str script, int map, int arg1, int arg2, int arg3)";
	ACS_NamedSuspend = "bool ACS_NamedSuspend(str script, int map)";
	ACS_NamedTerminate = "bool ACS_NamedTerminate(str script, int map)";
	ACS_NamedLockedExecute = "bool ACS_NamedLockedExecute(str script, int map, int arg1, int arg2, int lock)";
	ACS_NamedLockedExecuteDoor = "bool ACS_NamedLockedExecuteDoor(str script, int map, int arg1, int arg2, int lock)";
	ACS_NamedExecuteWithResult = "int ACS_NamedExecuteWithResult(str script, int arg1, int arg2, int arg3, int arg4)";
	ACS_NamedExecuteAlways = "bool ACS_NamedExecuteAlways(str script, int map, int arg1, int arg2, int arg3)";
	CallACS = "int CallACS(str script, int arg1, int arg2, int arg3, int arg4)";
//Original Doom/Strife monster attacks
	A_PosAttack = "A_PosAttack";
	A_SPosAttack = "A_SPosAttack";
	A_CPosAttack = "A_CPosAttack";
	A_CPosRefire = "A_CPosRefire";
	A_SpidRefire = "A_SpidRefire";
	A_TroopAttack = "A_TroopAttack";
	A_SargAttack = "A_SargAttack";
	A_HeadAttack = "A_HeadAttack";
	A_BruisAttack = "A_BruisAttack";
	A_SkullAttack = "A_SkullAttack[(int speed = 20)]";
	A_BspiAttack = "A_BspiAttack";
	A_CyberAttack = "A_CyberAttack";
	A_PainAttack = "A_PainAttack[(str spawntype = \"LostSoul\"[, float angle = 0.0[, int flags = 0[, int limit = 21]]])]";
	A_DualPainAttack = "A_DualPainAttack[(str spawntype = \"LostSoul\")]";
	A_PainDie = "A_PainDie[(str spawntype = \"LostSoul\")]";
	A_SkelFist = "A_SkelFist";
	A_SkelMissile = "A_SkelMissile";
	A_FatAttack1 = "A_FatAttack1[(str spawntype = \"FatShot\")]";
	A_FatAttack2 = "A_FatAttack2[(str spawntype = \"FatShot\")]";
	A_FatAttack3 = "A_FatAttack3[(str spawntype = \"FatShot\")]";
	A_VileTarget = "A_VileTarget[(str type = \"ArchvileFire\")]";
	A_VileAttack = "A_VileAttack[(str sound = \"vile/stop\"[, int initialdamage = 20[, int blastdamage = 70[, int blastradius = 70[, float thrustfactor = 1.0[, str damagetype = \"Fire\"[, int flags = 0]]]]]])]";
	A_BrainSpit = "A_BrainSpit[(str spawntype = \"SpawnShot\")]";
	A_SpawnFly = "A_SpawnFly[(str fogactor = \"SpawnFire\")]";
	A_SpawnSound = "A_SpawnSound";
	A_BrainScream = "A_BrainScream";
	A_BrainExplode = "A_BrainExplode";
	A_Mushroom = "A_Mushroom[(str spawntype = \"FatShot\"[, int numspawns = 0[, int flags = MSF_STANDARD[, float vrange = 4.0[, float hrange = 0.5]]]])]";
	A_M_Saw = "A_M_Saw[(str fullsound = \"weapons/sawfull\"[, str hitsound = \"weapons/sawhit\"[, int damage = 2[, str pufftype = \"BulletPuff\"]]])]";
	A_SentinelRefire = "A_SentinelRefire";
	A_BetaSkullAttack = "A_BetaSkullAttack";
//Miscellaneous functions for Doom
	A_Hoof = "A_Hoof";
	A_Metal = "A_Metal";
	A_BabyMetal = "A_BabyMetal";
	A_FatRaise = "A_FatRaise";
	A_SkelWhoosh = "A_SkelWhoosh";
	A_StartFire = "A_StartFire";
	A_FireCrackle = "A_FireCrackle";
	A_BFGSpray = "A_BFGSpray[(str flashtype = \"BFGExtra\"[, int numrays = 40[, int damagecnt = 15[, float angle = 90.0[, float distance = 1024.0[, float vrange = 32.0[, int explicit_damage = 0[, int flags = 0]]]]]]])]\nflags: BFGR flags.";
	A_BarrelDestroy = "A_BarrelDestroy";
//Miscellaneous functions not listed in the "Action functions" wiki article
	A_Bang4Cloud = "A_Bang4Cloud";
	A_Blast = "A_Blast[(int flags = 0[, float strength = 255.0[, float radius = 255.0[, float speed = 20.0[, str blasteffect = \"BlastEffect\"[, str blastsound = \"BlastRadius\"]]]]])]";
	A_BishopMissileWeave = "A_BishopMissileWeave";
	A_DropWeaponPieces = "A_DropWeaponPieces(str actorclass1, str actorclass2, str actorclass3)";
	A_Feathers = "A_Feathers";
	A_GauntletAttack = "A_GauntletAttack(int power)";
	A_GiveQuestItem = "A_GiveQuestItem(int itemnum)";
	A_PigPain = "A_PigPain";
	A_RemoveForcefield = "A_RemoveForcefield";
	A_RocketInFlight = "A_RocketInFlight";
	A_SetGravity = "A_SetGravity(float gravity)\nSets the amount of gravity for the calling actor.";
	A_SetUserArray = "A_SetUserArray(str name, int index, int value)";
	A_SetUserArrayFloat = "A_SetUserArrayFloat(str name, int index, float value)";
	A_ShootGun = "A_ShootGun";
	A_SPosAttackUseAtkSound = "A_SPosAttackUseAtkSound";
//Mathematical functions
	abs = "abs(x)\nReturns the absolute value of x.";
	exp = "exp(x)\nReturns the base-e exponential function of x, which is e raised to the power x.";
	log = "log(x)\nReturns the natural logarithm of x - the opposite of exp."; 
	log10 = "log10(x)\nReturns the common (base-10) logarithm of x.";
	ceil = "ceil(x)\nRounds the number upward to the next closest integer.";
	floor = "floor(x)\nRounds the number downward to the next closest integer.";
	sqrt = "sqrt(x)\nReturns the square root of x.";
	min = "min(x1, ...)\nGets the smallest value of all values listed.\nCan take any amount of numbers, and can solve both ints and floats.";
	max = "max(x1, ...)\nGets the largest value of all values listed.\nCan take any amount of numbers, and can solve both ints and floats.";
	clamp = "clamp(src, min, max)\nReturns src within the range of min and max inclusively. All parameters can be ints or floats.";	
//Trigonometry functions
	sin = "sin(x)\nTrigonometry function, x must be in degrees.";
	cos = "cos(x)\nTrigonometry function, x must be in degrees.";
	tan = "tan(x)\nTrigonometry function, x must be in degrees.";
	asin = "asin(x)\nTrigonometry function, returns an angle in degrees.";
	acos = "acos(x)\nTrigonometry function, returns an angle in degrees.";
	atan = "atan(x)\nTrigonometry function, returns an angle in degrees.";
	sinh = "sinh(x)\nTrigonometry function, x must be in radians.";
	cosh = "cosh(x)\nTrigonometry function, x must be in radians.";
	tanh = "tanh(x)\nTrigonometry function, x must be in radians.";
	atan2 = "atan2(y, x)\nTrigonometry function, Returns an angle in degrees.";
	VectorAngle = "VectorAngle(x, y)\nTrigonometry function.";
//Randum number functions
	random = "int random[identifier](min, max)\nReturns a random integer value between min and max.";
	random2 = "int random2[identifier](mask)\nReturns a random integer value between -mask and +mask.";
	frandom = "float frandom[identifier](min, max)\nReturns a random floating point value between min and max.";
	randompick = "int randompick[identifier](int, ...)\nPicks a number from the numbers placed in it.\nThis can take an unlimited amount of parameters.";
	frandompick = "float frandompick[identifier](float, ...)\nPicks a number from the numbers placed in it.\nThis can take an unlimited amount of parameters.";
//State functions
	Light = "Light(str lightname)";
	Offset = "Offset(int x, int y)";
//Special functions
	CheckClass = "bool CheckClass(str classname[, int ptr_select = AAPTR_DEFAULT[, bool match_superclass = false]])";
	CountInv = "int CountInv(str itemclassname[, int ptr_select = AAPTR_DEFAULT])";
	CountProximity = "state CountProximity(str classname, float distance[, int flags = 0[, int ptr = AAPTR_DEFAULT]])";
	GetAngle = "GetAngle(int flags[, int ptr_target = AAPTR_TARGET])\nGets the angle in degrees (normalized to -180..180)\nflags: GAF flags"; 
	GetCVar = "int GetCVar(str name)";
	GetUserCVar = "int GetUserCVar(int playernum, str name)";
	GetCrouchFactor = "float GetCrouchFactor(int ptr = AAPTR_PLAYER1)";
	GetDistance = "float GetDistance(bool checkz[, int ptr_select = AAPTR_TARGET])";
	GetGibHealth = "int GetGibHealth()";
	GetMissileDamage = "int GetMissileDamage(int mask, int add[, int pointer = AAPTR_DEFAULT])";
	GetPlayerInput = "int GetPlayerInput(int numinput[, int ptr = AAPTR_DEFAULT])";
	GetSpawnHealth = "int GetSpawnHealth()";
	GetSpriteAngle = "int GetSpriteAngle(int ptr)";
	GetSpriteRotation = "int GetSpriteRotation(int ptr)";
	GetZAt = "float GetZAt([float x = 0.0[, float y = 0.0[, float angle = 0.0[, int flags = 0[, int pick_pointer = AAPTR_TARGET]]]]])";
	IsPointerEqual = "bool IsPointerEqual(int ptr1, int ptr2)";
	OverlayID = "int OverlayID()";
	OverlayX = "float OverlayX([int layer = 0])";
	OverlayY = "float OverlayY([int layer = 0])"; 
}

properties
{
	action;
	native;
	replaces;
	Actor;
	enum;
	const;
	var;
	int;
	float;
//WFDS	
	if;
	else;
	return;
	for;
	while;
	do;
	break;
	continue;
//Flow control
	Loop;
	Stop;
	Wait;
	Fail;
	goto;
//State keywords
	Bright;
	CanRaise;
	Fast;
	Slow;
	NoDelay;
//States
	States;
	Spawn:;
	Idle:;
	See:;
	Melee:;
	Missile:;
	Pain:;
	Pain.Dagger:;
	Death:;
	Death.Extreme:;
	XDeath:;
	Burn:;
	Ice:;
	Disintegrate:;
	Raise:;
	Heal:;
	Crash:;
	Crash.Extreme:;
	Crush:;
	Wound:;
	Greetings:;
	Yes:;
	No:;
	Active:;
	Inactive:;
	Bounce:;
	Bounce.Floor:;
	Bounce.Ceiling:;
	Bounce.Wall:;
	Bounce.Actor:;
	Bounce.Actor.Creature:;
//weapon states:
	Ready:;
	Select:;
	Deselect:;
	Fire:;
	AltFire:;
	Hold:;
	AltHold:;
	Flash:;
	AltFlash:;
	Reload:;
	Zoom:;
	User1:;
	User2:;
	User3:;
	User4:;
	DeadLowered:;
////////////////////
//ACTOR PROPERTIES
////////////////////
//Map editing control
	Game;
	SpawnID;
	ConversationID;
	Tag;
//Behavior
	Health;
	GibHealth;
	WoundHealth;
	ReactionTime;
	PainChance;
	PainThreshold;
	DamageFactor;
	Damage;
	PoisonDamage;
	PoisonDamageType;
	RadiusDamageFactor;
	DesignatedTeam;
	Speed;
	VSpeed;
	FastSpeed;
	FloatSpeed;
	Species;
	Accuracy;
	Stamina;
	Activation;
	TeleFogSourceType;
	TeleFogDestType;
	Threshold;
	DefThreshold;
	VisibleAngleStart;
	VisibleAngleEnd;
	VisiblePitchStart;
	VisiblePitchEnd;
//Collision and 'Physics'
	Radius;
	Height;
	DeathHeight;
	BurnHeight;
	ProjectilePassHeight;
	CameraHeight;
	Gravity;
	Mass;
	MaxStepHeight;
	MaxDropOffHeight;
	BounceType;
	BounceFactor;
	WallBounceFactor;
	BounceCount;
	ProjectileKickBack;
	PushFactor;
	WeaveIndexXY;
	WeaveIndexZ;
//Sound
	ActiveSound;
	AttackSound;
	BounceSound;
	CrushPainSound;
	DeathSound;
	HowlSound;
	PainSound;
	SeeSound;
	WallBounceSound;
//Rendering
	RenderStyle;
	Alpha;
	DefaultAlpha;
	XScale;
	YScale;
	Scale;
	Translation;
	BloodColor;
	BloodType;
	Decal;
	StencilColor;
	FloatBobPhase;
	DistanceCheck;
	SpriteAngle;
	SpriteRotation;
	VisibleAngles;
	VisiblePitch;
//Obituaries
	HitObituary;
	Obituary;
//Attacks
	MinMissileChance;
	DamageType;
	DeathType;
	MeleeThreshold;
	MeleeRange;
	MaxTargetRange;
	PainType;
//Special
	Args;
	ClearFlags;
	DropItem;
	Skip_Super;
	VisibleToTeam;
	VisibleToPlayerClass;
//Inventory
	Inventory.Amount;
	Inventory.DefMaxAmount;
	Inventory.MaxAmount;
	Inventory.InterHubAmount;
	Inventory.Icon;
	Inventory.PickupMessage;
	Inventory.PickupSound;
	Inventory.PickupFlash;
	Inventory.UseSound;
	Inventory.RespawnTics;
	Inventory.GiveQuest;
	Inventory.ForbiddenTo;
	Inventory.RestrictedTo;
//FakeInventory
	FakeInventory.Respawns;
//BasicArmorPickup
	Armor.SaveAmount;
	Armor.SavePercent;
	Armor.MaxFullAbsorb;
	Armor.MaxAbsorb;
//BasicArmorBonus
	Armor.SavePercent;
	Armor.MaxSaveAmount;
	Armor.SaveAmount;
	Armor.MaxBonus;
	Armor.MaxBonusMax;
//Weapons
	Weapon.AmmoGive;
	Weapon.AmmoGive1;
	Weapon.AmmoGive2;
	Weapon.AmmoType;
	Weapon.AmmoType1;
	Weapon.AmmoType2;
	Weapon.AmmoUse;
	Weapon.AmmoUse1;
	Weapon.AmmoUse2;
	Weapon.MinSelectionAmmo1;
	Weapon.MinSelectionAmmo2;
	Weapon.BobRangeX;
	Weapon.BobRangeY;
	Weapon.BobSpeed;
	Weapon.BobStyle;
	Weapon.KickBack;
	Weapon.DefaultKickBack;
	Weapon.ReadySound;
	Weapon.SelectionOrder;
	Weapon.SisterWeapon;
	Weapon.SlotNumber;
	Weapon.SlotPriority;
	Weapon.UpSound;
	Weapon.YAdjust;
//Ammo
	Ammo.BackpackAmount;
	Ammo.BackpackMaxAmount;
	Ammo.DropAmount;
//Weapon Pieces
	WeaponPiece.Number;
	WeaponPiece.Weapon;
//Health
	Health.LowMessage;
//Puzzle Items
	PuzzleItem.Number;
	PuzzleItem.FailMessage;
//Player
	Player.AirCapacity;
	Player.AttackZOffset;
	Player.ColorRange;
	Player.ColorSet;
	Player.ColorSetFile;
	Player.ClearColorSet;
	Player.CrouchSprite;
	Player.DamageScreenColor;
	Player.DisplayName;
	Player.Face;
	Player.FallingScreamSpeed;
	Player.FlechetteType;
	Player.ForwardMove;
	Player.GruntSpeed;
	Player.HealRadiusType;
	Player.HexenArmor;
	Player.InvulnerabilityMode;
	Player.JumpZ;
	Player.MaxHealth;
	Player.RunHealth;
	Player.Portrait;
	Player.ScoreIcon;
	Player.SideMove;
	Player.SoundClass;
	Player.SpawnClass;
	Player.StartItem;
	Player.UseRange;
	Player.WeaponSlot;
	Player.ViewHeight;
	Player.MorphWeapon;
	Player.MugShotMaxHealth;
//Powerup
	Powerup.Color;
	Powerup.Colormap;
	Powerup.Duration;
	Powerup.Mode;
	Powerup.Strength;
//Powerup Giver
	Powerup.Type;
//Health Pickup
	HealthPickup.AutoUse;
//Morph Projectile
	MorphProjectile.PlayerClass;
	MorphProjectile.MonsterClass;
	MorphProjectile.Duration;
	MorphProjectile.MorphStyle;
	MorphProjectile.MorphFlash;
	MorphProjectile.UnMorphFlash;
//Actor position and movement
	x;
	y;
	z;
	Angle;
	CeilingZ;
	FloorZ;
	Pitch;
	VelX;
	VelY;
	VelZ;
//Actor properties
	ScaleX;
	ScaleY;
	Score;
	Special;
	Stamina;
}

constants
{
//rendering
	FLATSPRITE;
	ROLLSPRITE;
	WALLSPRITE;
	DONTFLIP;
	ROLLCENTER;
	SPRITEANGLE;
	MASKROTATION;
	ABSMASKANGLE;
	ABSMASKPITCH;
//pointers
	AAPTR_DEFAULT;
	AAPTR_NULL;
	AAPTR_TARGET;
	AAPTR_MASTER;
	AAPTR_TRACER;
	AAPTR_PLAYER1;
	AAPTR_PLAYER2;
	AAPTR_PLAYER3;
	AAPTR_PLAYER4;
	AAPTR_PLAYER5;
	AAPTR_PLAYER6;
	AAPTR_PLAYER7;
	AAPTR_PLAYER8;
	AAPTR_PLAYER_GETTARGET;
	AAPTR_PLAYER_GETCONVERSATION;
//A_SpawnItemEx flags
	SXF_TRANSFERTRANSLATION;
	SXF_ABSOLUTEPOSITION;
	SXF_ABSOLUTEANGLE;
	SXF_ABSOLUTEVELOCITY;
	SXF_SETMASTER;
	SXF_NOCHECKPOSITION;
	SXF_TELEFRAG;
	SXF_TRANSFERAMBUSHFLAG;
	SXF_TRANSFERPITCH;
	SXF_TRANSFERPOINTERS;
	SXF_USEBLOODCOLOR;
	SXF_CLEARCALLERTID;
	SXF_MULTIPLYSPEED;
	SXF_TRANSFERSCALE;
	SXF_TRANSFERSPECIAL;
	SXF_CLEARCALLERSPECIAL;
	SXF_TRANSFERSTENCILCOL;
	SXF_TRANSFERALPHA;
	SXF_TRANSFERRENDERSTYLE;
	SXF_SETTARGET;
	SXF_SETTRACER;
	SXF_NOPOINTERS;
	SXF_ORIGINATOR;
	SXF_TRANSFERSPRITEFRAME;
	SXF_TRANSFERROLL;
	SXF_ISTARGET;
	SXF_ISMASTER;
	SXF_ISTRACER;
//weapon flags
	WRF_NOBOB;
	WRF_NOFIRE;
	WRF_NOSWITCH;
	WRF_NOPRIMARY;
	WRF_DISABLESWITCH;
	WRF_NOSECONDARY;
	WRF_ALLOWRELOAD;
	WRF_ALLOWZOOM;
	WRF_ALLOWUSER1;
	WRF_ALLOWUSER2;
	WRF_ALLOWUSER3;
	WRF_ALLOWUSER4;
	WRF_NODEATHDESELECT;
	WRF_NODEATHINPUT;
	ZOOM_INSTANT;
	ZOOM_NOSCALETURNING;
	CPF_USEAMMO;
	CPF_DAGGER;
	CPF_PULLIN;
	CPF_NORANDOMPUFFZ;
	CPF_NOTURN;
	CPF_STEALARMOR;
	FBF_USEAMMO;
	FBF_NOFLASH;
	FBF_NORANDOM;
	FBF_EXPLICITANGLE;
	FBF_NOPITCH;
	FBF_NORANDOMPUFFZ;
	FBF_PUFFTARGET;
	FBF_PUFFMASTER;
	FBF_PUFFTRACER;
//monster flags
	PAF_NOSKULLATTACK;
	PAF_AIMFACING;
	PAF_NOTARGET;
//Sound channels flags
	CHAN_AUTO;
	CHAN_WEAPON;
	CHAN_VOICE;
	CHAN_ITEM;
	CHAN_BODY;
	CHAN_5;
	CHAN_6;
	CHAN_7;
	CHAN_LISTENERZ;
	CHAN_MAYBE_LOCAL;
	CHAN_UI;
	CHAN_NOPAUSE;
	CHAN_LOOP;
//misc flags
	MSF_STANDARD;
	MSF_CLASSIC;
	MSF_DONTHURT;
//combo flags
	Monster;
	Projectile;
//physics
	SOLID;
	SHOOTABLE;
	FLOAT;
	NOGRAVITY;
	WINDTHRUST;
	PUSHABLE;
	DONTFALL;
	CANPASS;
	ACTLIKEBRIDGE;
	NOBLOCKMAP;
	MOVEWITHSECTOR;
	RELATIVETOFLOOR;
	NOLIFTDROP;
	SLIDESONWALLS;
	NODROPOFF;
	NOTRIGGER;
	BLOCKEDBYSOLIDACTORS;
//Behavior
	ALWAYSRESPAWN;
	AMBUSH;
	AVOIDMELEE;
	BOSS;
	DONTCORPSE;
	DORMANT;
	FRIENDLY;
	JUMPDOWN;
	LOOKALLAROUND;
	MISSILEEVENMORE;
	MISSILEMORE;
	NEVERRESPAWN;
	NOSPLASHALERT;
	NOTARGETSWITCH;
	NOVERTICALMELEERANGE;
	QUICKTORETALIATE;
	STANDSTILL;
//(In)Abilities
	CANNOTPUSH;
	NOTELEPORT;
	ACTIVATEIMPACT;
	CANPUSHWALLS;
	CANUSEWALLS;
	ACTIVATEPCROSS;
	CANTLEAVEFLOORPIC;
	TELESTOMP;
	NOTELESTOMP;
	STAYMORPHED;
	CANBLAST;
	NOBLOCKMONST;
	ALLOWTHRUFLAGS;
	THRUGHOST;
	THRUACTORS;
	THRUSPECIES;
	MTHRUSPECIES;
	SPECTRAL;
	FRIGHTENED;
	NOTARGET;
	NEVERTARGET;
	NOINFIGHTING;
	NOTIMEFREEZE;
	NOFEAR;
	CANTSEEK;
	SEEINVISIBLE;
	DONTTHRUST;
	ALLOWPAIN;
	USEKILLSCRIPTS;
	NOKILLSCRIPTS;
//Defenses
	INVULNERABLE;
	BUDDHA;
	REFLECTIVE;
	SHIELDREFLECT;
	DEFLECT;
	NORADIUSDMG;
	DONTBLAST;
	GHOST;
	DONTMORPH;
	DONTSQUASH;
	NOTELEOTHER;
	HARMFRIENDS;
	DOHARMSPECIES;
	DONTHARMCLASS;
	DONTHARMSPECIES;
	NODAMAGE;
	DONTRIP;
	NOTELEFRAG;
	ALWAYSTELEFRAG;
	DONTDRAIN;
	LAXTELEFRAGDMG;
//Appearance & Sound
	BRIGHT;
	INVISIBLE;
	SHADOW;
	NOBLOOD;
	NOBLOODDECALS;
	STEALTH;
	FLOORCLIP;
	SPAWNFLOAT;
	SPAWNCEILING;
	FLOATBOB;
	NOICEDEATH;
	DONTGIB;
	DONTSPLASH;
	DONTOVERLAP;
	RANDOMIZE;
	FIXMAPTHINGPOS;
	FULLVOLACTIVE;
	FULLVOLDEATH;
	NOWALLBOUNCESND;
	VISIBILITYPULSE;
	ROCKETTRAIL;
	GRENADETRAIL;
	NOBOUNCESOUND;
	NOSKIN;
	DONTTRANSLATE;
	NOPAIN;
	FORCEYBILLBOARD;
	FORCEXYBILLBOARD;
//Projectile
	MISSILE;
	RIPPER;
	NOBOSSRIP;
	NODAMAGETHRUST;
	DONTREFLECT;
	FLOORHUGGER;
	CEILINGHUGGER;
	BLOODLESSIMPACT;
	BLOODSPLATTER;
	FOILINVUL;
	FOILBUDDHA;
	SEEKERMISSILE;
	SCREENSEEKER;
	SKYEXPLODE;
	NOEXPLODEFLOOR;
	STRIFEDAMAGE;
	EXTREMEDEATH;
	NOEXTREMEDEATH;
	DEHEXPLOSION;
	PIERCEARMOR;
	FORCERADIUSDMG;
	SPAWNSOUNDSOURCE;
	PAINLESS;
	FORCEPAIN;
	CAUSEPAIN;
	DONTSEEKINVISIBLE;
	STEPMISSILE;
	ADDITIVEPOISONDAMAGE;
	ADDITIVEPOISONDURATION;
	NOFORWARDFALL;
	HITTARGET;
	HITMASTER;
	HITTRACER;
//Bouncing
	BOUNCEONWALLS;
	BOUNCEONFLOORS;
	BOUNCEONCEILINGS;
	ALLOWBOUNCEONACTORS;
	BOUNCEAUTOOFF;
	BOUNCEAUTOOFFFLOORONLY;
	BOUNCELIKEHERETIC;
	BOUNCEONACTORS;
	NOWALLBOUNCESND;
	EXPLODEONWATER;
	CANBOUNCEWATER;
	MBFBOUNCER;
	USEBOUNCESTATE;
//Miscellaneous
	ICESHATTER;
	DROPPED;
	ISMONSTER;
	CORPSE;
	COUNTITEM;
	COUNTKILL;
	COUNTSECRET;
	NOTDMATCH;
	NONSHOOTABLE;
	DROPOFF;
	PUFFONACTORS;
	ALLOWPARTICLES;
	ALWAYSPUFF;
	PUFFGETSOWNER;
	FORCEDECAL;
	NODECAL;
	SYNCHRONIZED;
	ALWAYSFAST;
	NEVERFAST;
	OLDRADIUSDMG;
	USESPECIAL;
	BUMPSPECIAL;
	BOSSDEATH;
	NOINTERACTION;
	NOTAUTOAIMED;
	NOTONAUTOMAP;
	WEAPONSPAWN;
	NOMENU;
	PICKUP;
	TOUCHY;
	VULNERABLE;
//Limited Use
	SEESDAGGERS;
	INCOMBAT;
	NOCLIP;
	NOSECTOR;
	ICECORPSE;
	JUSTHIT;
	JUSTATTACKED;
	TELEPORT;
	BLASTED;
	EXPLOCOUNT;
	SKULLFLY;
//Inventory
	INVENTORY.QUIET;
	INVENTORY.AUTOACTIVATE;
	INVENTORY.UNDROPPABLE;
	INVENTORY.INVBAR;
	INVENTORY.HUBPOWER;
	INVENTORY.PERSISTENTPOWER;
	INVENTORY.ALWAYSPICKUP;
	INVENTORY.FANCYPICKUPSOUND;
	INVENTORY.NOATTENPICKUPSOUND;
	INVENTORY.BIGPOWERUP;
	INVENTORY.NEVERRESPAWN;
	INVENTORY.KEEPDEPLETED;
	INVENTORY.IGNORESKILL;
	INVENTORY.ADDITIVETIME;
	INVENTORY.UNTOSSABLE;
	INVENTORY.RESTRICTABSOLUTELY;
	INVENTORY.NOSCREENFLASH;
	INVENTORY.TOSSED;
	INVENTORY.ALWAYSRESPAWN;
	INVENTORY.TRANSFER;
	INVENTORY.NOTELEPORTFREEZE;
//Weapons
	WEAPON.NOAUTOFIRE;
	WEAPON.READYSNDHALF;
	WEAPON.DONTBOB;
	WEAPON.AXEBLOOD;
	WEAPON.NOALERT;
	WEAPON.AMMO_OPTIONAL;
	WEAPON.ALT_AMMO_OPTIONAL;
	WEAPON.AMMO_CHECKBOTH;
	WEAPON.PRIMARY_USES_BOTH;
	WEAPON.ALT_USES_BOTH;
	WEAPON.WIMPY_WEAPON;
	WEAPON.POWERED_UP;
	WEAPON.STAFF2_KICKBACK;
	WEAPON.EXPLOSIVE;
	WEAPON.MELEEWEAPON;
	WEAPON.BFG;
	WEAPON.CHEATNOTWEAPON;
	WEAPON.NO_AUTO_SWITCH;
	WEAPON.NOAUTOAIM;
//Player
	PLAYERPAWN.NOTHRUSTWHENINVUL;
	PLAYERPAWN.CANSUPERMORPH;	
	PLAYERPAWN.CROUCHABLEMORPH;
//Action-specific flags
	AMF_EMITFROMTARGET;
	AMF_TARGETEMITTER;
	AMF_TARGETNONPLAYER;
	BF_USEAMMO;
	BF_DONTWARN;
	BF_AFFECTBOSSES;
	BF_NOIMPACTDAMAGE;
	CBAF_AIMFACING;
	CBAF_EXPLICITANGLE;
	CBAF_NOPITCH;
	CBAF_NORANDOM;
	CBAF_NORANDOMPUFFZ;
	CBAF_PUFFTARGET;
	CBAF_PUFFMASTER;
	CBAF_PUFFTRACER;
	CBF_NOLINES;
	CBF_SETTARGET;
	CBF_SETMASTER;
	CBF_SETTRACER;
	CBF_SETONPTR;
	CBF_DROPOFF;
	CBF_NOACTORS;
	CBF_ABSOLUTEPOS;
	CBF_ABSOLUTEANGLE;
	CHF_DONTMOVE;
	CHF_FASTCHASE;
	CHF_NIGHTMAREFAST;
	CHF_NOPLAYACTIVE;
	CHF_RESURRECT;
	CHF_NORANDOMTURN;
	CHF_NODIRECTIONTURN;
	CHF_NOPOSTATTACKTURN;
	CHF_STOPIFBLOCKED;
	CHF_DONTTURN;
	CLOFF_AIM_VERT_NOOFFSET;
	CLOFF_ALLOWNULL;
	CLOFF_BEYONDTARGET;
	CLOFF_CHECKPARTIAL;
	CLOFF_FROMBASE;
	CLOFF_IGNOREGHOST;
	CLOFF_JUMPENEMY;
	CLOFF_JUMPFRIEND;
	CLOFF_JUMPNONHOSTILE;
	CLOFF_JUMPOBJECT;
	CLOFF_JUMP_ON_MISS;
	CLOFF_MUL_HEIGHT;
	CLOFF_MUL_WIDTH;
	CLOFF_MUSTBEGHOST;
	CLOFF_MUSTBESHOOTABLE;
	CLOFF_MUSTBESOLID;
	CLOFF_NOAIM;
	CLOFF_NOAIM_HORZ;
	CLOFF_NOAIM_VERT;
	CLOFF_SETTARGET;
	CLOFF_SETMASTER;
	CLOFF_SETTRACER;
	CLOFF_SKIPENEMY;
	CLOFF_SKIPFRIEND;
	CLOFF_SKIPNONHOSTILE;
	CLOFF_SKIPOBJECT;
	CLOFF_SKIPOBSTACLES;
	CLOFF_SKIPTARGET;
	CMF_ABSOLUTEANGLE;
	CMF_ABSOLUTEPITCH;
	CMF_AIMDIRECTION;
	CMF_AIMOFFSET;
	CMF_CHECKTARGETDEAD;
	CMF_OFFSETPITCH;
	CMF_SAVEPITCH;
	CMF_TRACKOWNER;
	CVF_RELATIVE;
	CVF_REPLACE;
	DMSS_AFFECTARMOR;
	DMSS_FOILBUDDHA;
	DMSS_FOILINVUL;
	DMSS_KILL;
	DMSS_NOFACTOR;
	DMSS_NOPROTECT;
	DMSS_EXFILTER;
	DMSS_EXSPECIES;
	DMSS_EITHER;
	DMSS_INFLICTORDMGTYPE;
	FMDF_NOPITCH;
	FMDF_NOANGLE;
	FMDF_INTERPOLATE;
	FPF_AIMATANGLE;
	FPF_TRANSFERTRANSLATION;
	FPF_NOAUTOAIM;
	FTF_CLAMP;
	FTF_REMOVE;
	GFF_NOEXTCHANGE;
	JLOSF_ALLYNOJUMP;
	JLOSF_CHECKMASTER;
	JLOSF_CHECKTRACER;
	JLOSF_CLOSENOFOV;
	JLOSF_CLOSENOJUMP;
	JLOSF_CLOSENOSIGHT;
	JLOSF_COMBATANTONLY;
	JLOSF_DEADNOJUMP;
	JLOSF_FLIPFOV;
	JLOSF_NOAUTOAIM;
	JLOSF_NOSIGHT;
	JLOSF_PROJECTILE;
	JLOSF_TARGETLOS;
	KILS_FOILBUDDHA;
	KILS_FOILINVUL;
	KILS_KILLMISSILES;
	KILS_NOMONSTERS;
	KILS_EXFILTER;
	KILS_EXSPECIES;
	KILS_EITHER;
	LOF_DONTCHASEGOAL;
	LOF_FULLVOLSEESOUND;
	LOF_NOJUMP;
	LOF_NOSEESOUND;
	LOF_NOSIGHTCHECK;
	LOF_NOSOUNDCHECK;
	PTROP_NOSAFEGUARDS;
	PTROP_UNSAFEMASTER;
	PTROP_UNSAFETARGET;
	RGF_CENTERZ;
	RGF_CORPSES;
	RGF_CUBE;
	RGF_EXFILTER;
	RGF_EXPLICITANGLE;
	RGF_EXSPECIES;
	RGF_FULLBRIGHT;
	RGF_GIVESELF;
	RGF_INCLUSIVE;
	RGF_ITEMS;
	RGF_KILLED;
	RGF_MISSILES;
	RGF_MONSTERS;
	RGF_NOMASTER;
	RGF_NOPIERCING;
	RGF_NOSIGHT;
	RGF_NOTARGET;
	RGF_NOTRACER;
	RGF_OBJECTS;
	RGF_PLAYERS;
	RGF_SILENT;
	RGF_VOODOO;
	RMVF_EVERYTHING;
	RMVF_MISC;
	RMVF_MISSILES;
	RMVF_NOMONSTERS;
	RMVF_EXFILTER;
	RMVF_EXSPECIES;
	RMVF_EITHER;
	RSF_FOG;
	RSF_KEEPTARGET;
	RSF_TELEFRAG;
	RTF_AFFECTSOURCE;
	RTF_NOIMPACTDAMAGE;
	RTF_NOTMISSILE;
	RTF_THRUSTZ;
	SF_NOPULLIN;
	SF_NORANDOM;
	SF_NOTURN;	
	SF_NOUSEAMMO;
	SF_NOUSEAMMOMISS;
	SF_RANDOMLIGHTBOTH;
	SF_RANDOMLIGHTHIT;
	SF_RANDOMLIGHTMISS;
	SF_STEALARMOR;
	SMF_CURSPEED;
	SMF_LOOK;
	SMF_PRECISE;
	SPF_FORCECLAMP;
	SPF_INTERPOLATE;
	SPF_NOTIMEFREEZE;
	TF_TELEFRAG;
	TF_RANDOMDECIDE;
	TF_FORCED;
	TF_KEEPVELOCITY;
	TF_KEEPANGLE;
	TF_USESPOTZ;
	TF_NOSRCFOG;
	TF_NODESTFOG;
	TF_NOFOG;
	TF_USEACTORFOG;
	TF_NOJUMP;
	TF_OVERRIDE;
	TF_SENSITIVEZ;
	TIF_NOTAKEINFINITE;
	VAF_DMGTYPEAPPLYTODIRECT;
	WARPF_ABSOLUTEOFFSET;
	WARPF_ABSOLUTEANGLE;
	WARPF_USECALLERANGLE;
	WARPF_NOCHECKPOSITION;
	WARPF_INTERPOLATE;
	WARPF_WARPINTERPOLATION;
	WARPF_COPYINTERPOLATION;
	WARPF_STOP;
	WARPF_TOFLOOR;
	WARPF_TESTONLY;
	WAPRF_ABSOLUTEPOSITION;
	WARPF_BOB;
	WARPF_MOVEPTR;
	WARPF_USETID;
	WARPF_COPYVELOCITY;
	WARPF_COPYPITCH;
	XF_HURTSOURCE;
	XF_NOTMISSILE;
	XF_EXPLICITDAMAGETYPE;
//////////////////////////
//Property-specific flags
//////////////////////////
//Activation flags
	THINGSPEC_Default;
	THINGSPEC_ThingActs;
	THINGSPEC_TriggerActs;
	THINGSPEC_ThingTargets;
	THINGSPEC_TriggerTargets;
	THINGSPEC_MonsterTrigger;
	THINGSPEC_MissileTrigger;
	THINGSPEC_ClearSpecial;
	THINGSPEC_NoDeathSpecial;
	THINGSPEC_Activate;
	THINGSPEC_Deactivate;
	THINGSPEC_Switch;
//MorphProjectile.MorphStyle flags
	MRF_ADDSTAMINA;
	MRF_FULLHEALTH;
	MRF_UNDOBYTOMEOFPOWER;
	MRF_UNDOBYCHAOSDEVICE;
	MRF_FAILNOTELEFRAG;
	MRF_FAILNOLAUGH;
	MRF_WHENINVULNERABLE;
	MRF_LOSEACTUALWEAPON;
	MRF_NEWTIDBEHAVIOUR;
	MRF_UNDOBYDEATH;
	MRF_UNDOBYDEATHFORCED;
	MRF_UNDOBYDEATHSAVES;
	MRF_UNDOALWAYS;
//A_CheckProximity flags
	CPXF_ANCESTOR;
	CPXF_NOZ;
	CPXF_COUNTDEAD;
	CPXF_DEADONLY;
	CPXF_LESSOREQUAL;
	CPXF_EXACT;
	CPXF_CHECKSIGHT;
	CPXF_SETTARGET;
	CPXF_SETMASTER;
	CPXF_SETTRACER;
	CPXF_FARTHEST;
	CPXF_CLOSEST;
	CPXF_SETONPTR;
//A_FaceTraget/Master/Tracer flags
	FAF_BOTTOM;
	FAF_MIDDLE;
	FAF_TOP;
//A_QuakeEx flags
	QF_RELATIVE;
	QF_SCALEDOWN;
	QF_SCALEUP;
	QF_WAVE;
	QF_MAX;
	QF_FULLINTENSITY;
//GetZAt flags
	GZF_ABSOLUTEPOS;
	GZF_ABSOLUTEANG;
	GZF_CEILING;
	GZF_3DRESTRICT;
	GZF_NOPORTALS;
	GZF_NO3DFLOOR;
//A_WeaponOffset flags
	WOF_KEEPX;
	WOF_KEEPY;
	WOF_ADD;
	WOF_INTERPOLATE;
//A_OverlayFlags flags
	PSPF_ADDWEAPON;
	PSPF_ADDBOB;
	PSPF_POWDOUBLE;
	PSPF_CVARFAST;
	PSPF_FLIP;
//A_BFGSpray flags
	BFGF_MISSILEORIGIN;
	BFGF_HURTSOURCE;
//A_RadiusDamageSelf flags
	RDSF_BFGDAMAGE;
//GetAngle flags
	GAF_RELATIVE;
	GAF_SWITCH;
//A_CopySpriteFrame flags
	CPSF_NOSPRITE;
	CPSF_NOFRAME;
//A_SetVisibleRotation flags
	VRF_NOANGLESTART;
	VRF_NOANGLEEND;
	VRF_NOPITCHSTART;
	VRF_NOPITCHEND;
	VRF_NOANGLE;
	VRF_NOPITCH;
}
