//**************************************************************************
//**
//** zspecials.acs
//**
//**************************************************************************

special
//	  1:Polyobj_StartLine
	  2:Polyobj_RotateLeft(3),
	  3:Polyobj_RotateRight(3),
	  4:Polyobj_Move(4),
//	  5:Polyobj_ExplicitLine
	  6:Polyobj_MoveTimes8(4),
	  7:Polyobj_DoorSwing(4),
	  8:Polyobj_DoorSlide(5),
	  9:Line_Horizon(0),
	 10:Door_Close(2,3),
	 11:Door_Open(2,3),
	 12:Door_Raise(3,4),
	 13:Door_LockedRaise(4,5),
	 14:Door_Animated(3,4),
	 15:Autosave(0),
//	 16:Transfer_WallLight
	 17:Thing_Raise(1,2),
	 18:StartConversation(1,2),
	 19:Thing_Stop(1),
	 20:Floor_LowerByValue(3,4),
	 21:Floor_LowerToLowest(2,3),
	 22:Floor_LowerToNearest(2,3),
	 23:Floor_RaiseByValue(3,5),
	 24:Floor_RaiseToHighest(2,5),
	 25:Floor_RaiseToNearest(2,4),
	 26:Stairs_BuildDown(5),
	 27:Stairs_BuildUp(5),
	 28:Floor_RaiseAndCrush(3,4),
	 29:Pillar_Build(3),
	 30:Pillar_Open(4),
	 31:Stairs_BuildDownSync(4),
	 32:Stairs_BuildUpSync(4),
	 33:ForceField(0),
	 34:ClearForceField(1),
	 35:Floor_RaiseByValueTimes8(3,5),
	 36:Floor_LowerByValueTimes8(3,4),
	 37:Floor_MoveToValue(3,5),
	 38:Ceiling_Waggle(5),
	 39:Teleport_ZombieChanger(2),
	 40:Ceiling_LowerByValue(3,5),
	 41:Ceiling_RaiseByValue(3,4),
	 42:Ceiling_CrushAndRaise(3,4),
	 43:Ceiling_LowerAndCrush(3,4),
	 44:Ceiling_CrushStop(1,2),
	 45:Ceiling_CrushRaiseAndStay(3,4),
	 46:Floor_CrushStop(1),
	 47:Ceiling_MoveToValue(3,5),
//	 48:Sector_Attach3dMidtex
	 49:GlassBreak(0,2),
//	 50:ExtraFloor_LightOnly
	 51:Sector_SetLink(4),
	 52:Scroll_Wall(5),
	 53:Line_SetTextureOffset(5),
	 54:Sector_ChangeFlags(3),
	 55:Line_SetBlocking(3),
	 56:Line_SetTextureScale(5),
//	 57: Sector_SetPortal
//	 58: Sector_CopyScroller
	 59:Polyobj_OR_MoveToSpot(3),
	 60:Plat_PerpetualRaise(3),
 	 61:Plat_Stop(1,2),
	 62:Plat_DownWaitUpStay(3),
	 63:Plat_DownByValue(4),
	 64:Plat_UpWaitDownStay(3),
	 65:Plat_UpByValue(4),
	 66:Floor_LowerInstant(3,4),
	 67:Floor_RaiseInstant(3,5),
	 68:Floor_MoveToValueTimes8(4,5),
	 69:Ceiling_MoveToValueTimes8(4,5),
	 70:Teleport(1,3),
	 71:Teleport_NoFog(1,4),
	 72:ThrustThing(2,4),
	 73:DamageThing(1,2),
	 74:Teleport_NewMap(2,3),
	 75:Teleport_EndGame(0),
	 76:TeleportOther(3),
	 77:TeleportGroup(5),
	 78:TeleportInSector(4,5),
	 79:Thing_SetConversation(2),
	 80:ACS_Execute(2,5),
	 81:ACS_Suspend(2),
	 82:ACS_Terminate(2),
	 83:ACS_LockedExecute(5),
	 84:ACS_ExecuteWithResult(1,5),
	 85:ACS_LockedExecuteDoor(5),
	 86:Polyobj_MoveToSpot(3),
	 87:Polyobj_Stop(1),
	 88:Polyobj_MoveTo(4),
	 89:Polyobj_OR_MoveTo(4),
	 90:Polyobj_OR_RotateLeft(3),
	 91:Polyobj_OR_RotateRight(3),
	 92:Polyobj_OR_Move(4),
	 93:Polyobj_OR_MoveTimes8(4),
	 94:Pillar_BuildAndCrush(4,5),
	 95:FloorAndCeiling_LowerByValue(3),
	 96:FloorAndCeiling_RaiseByValue(3),
	 97:Ceiling_LowerAndCrushDist(3,5),
	 98:Sector_SetTranslucent(3,4),
	 99:Floor_RaiseAndCrushDoom(3,4),
//	100:Scroll_Texture_Left
//	101:Scroll_Texture_Right
//	102:Scroll_Texture_Up
//	103:Scroll_Texture_Down
	104:Ceiling_CrushAndRaiseSilentDist(4,5),
	105:Door_WaitRaise(4,5),
	106:Door_WaitClose(3,4),
	107:Line_SetPortalTarget(2),

	109:Light_ForceLightning(1),
	110:Light_RaiseByValue(2),
	111:Light_LowerByValue(2),
	112:Light_ChangeToValue(2),
	113:Light_Fade(3),
	114:Light_Glow(4),
	115:Light_Flicker(3),
	116:Light_Strobe(5),
	117:Light_Stop(1),
//	118:Plane_Copy
	119:Thing_Damage(2,3),
	120:Radius_Quake(5),
//	121:Line_SetIdentification
	
	125:Thing_Move(2,3),
	
	127:Thing_SetSpecial(5),
	128:ThrustThingZ(4),
	129:UsePuzzleItem(0),	// only for setting it on a line. Cannot be called!
	130:Thing_Activate(1),
	131:Thing_Deactivate(1),
	132:Thing_Remove(1),
	133:Thing_Destroy(1,3),
	134:Thing_Projectile(5),
	135:Thing_Spawn(3,4),
	136:Thing_ProjectileGravity(5),
	137:Thing_SpawnNoFog(3,4),
	138:Floor_Waggle(5),
	139:Thing_SpawnFacing(2,4),
	140:Sector_ChangeSound(2),
	
	143:Player_RemoveItem(2),			// Skulltag Functions
	144:Player_GiveItem(2),				// Skulltag Functions
	145:Player_SetTeam(1),				// Skulltag Functions
	150:Line_SetHealth(2),
	151:Sector_SetHealth(3),
	152:Team_Score(2),					// Skulltag Functions
	153:Team_GivePoints(3),				// Skulltag Functions
	154:Teleport_NoStop(2, 3),

	157:SetGlobalFogParameter(2),		// GZDoom only!
	158:FS_Execute(1,4),
	159:Sector_SetPlaneReflection(3),	// GZDoom only!
//	160:Sector_Set3DFloor
//	161:Sector_SetContents
	
	168:Ceiling_CrushAndRaiseDist(3,5),
	169:Generic_Crusher2(5),
	170:Sector_SetCeilingScale2(3),
	171:Sector_SetFloorScale2(3),
	172:Plat_UpNearestWaitDownStay(3),
	173:NoiseAlert(2),
	174:SendToCommunicator(4),
	175:Thing_ProjectileIntercept(5),
	176:Thing_ChangeTID(2),
	177:Thing_Hate(2,3),
	178:Thing_ProjectileAimed(4,5),
	179:ChangeSkill(1),
	180:Thing_SetTranslation(2),
//	181:Plane_Align,
	182:Line_Mirror(0),
	183:Line_AlignCeiling(2),
	184:Line_AlignFloor(2),
	185:Sector_SetRotation(3),
	186:Sector_SetCeilingPanning(5),
	187:Sector_SetFloorPanning(5),
	188:Sector_SetCeilingScale(5),
	189:Sector_SetFloorScale(5),
	191:SetPlayerProperty(3),
	192:Ceiling_LowerToHighestFloor(2,5),
	193:Ceiling_LowerInstant(3,5),
	194:Ceiling_RaiseInstant(3,4),
	195:Ceiling_CrushRaiseAndStayA(4,5),
	196:Ceiling_CrushAndRaiseA(4,5),
	197:Ceiling_CrushAndRaiseSilentA(4,5),
	198:Ceiling_RaiseByValueTimes8(3,4),
	199:Ceiling_LowerByValueTimes8(3,5),
	200:Generic_Floor(5),
	201:Generic_Ceiling(5),
	202:Generic_Door(5),
	203:Generic_Lift(5),
	204:Generic_Stairs(5),
	205:Generic_Crusher(5),
	206:Plat_DownWaitUpStayLip(4,5),
	207:Plat_PerpetualRaiseLip(4),
	208:TranslucentLine(2,3),
//	209:Transfer_Heights,
//	210:Transfer_FloorLight,
//	211:Transfer_CeilingLight,
	212:Sector_SetColor(4,5),
	213:Sector_SetFade(4),
	214:Sector_SetDamage(3,5),
	215:Teleport_Line(2,3),
	216:Sector_SetGravity(3),
	217:Stairs_BuildUpDoom(5),
	218:Sector_SetWind(4),
	219:Sector_SetFriction(2),
	220:Sector_SetCurrent(4),
	221:Scroll_Texture_Both(5),
//	222:Scroll_Texture_Model,
	223:Scroll_Floor(4),
	224:Scroll_Ceiling(4),
//	225:Scroll_Texture_Offsets,
	226:ACS_ExecuteAlways(2,5),
//	227:PointPush_SetForce,
	228:Plat_RaiseAndStayTx0(2,3),
	229:Thing_SetGoal(3,4),
	230:Plat_UpByValueStayTx(3),
	231:Plat_ToggleCeiling(1),
	232:Light_StrobeDoom(3),
	233:Light_MinNeighbor(1),
	234:Light_MaxNeighbor(1),
	235:Floor_TransferTrigger(1),
	236:Floor_TransferNumeric(1),
	237:ChangeCamera(3),
	238:Floor_RaiseToLowestCeiling(2,5),
	239:Floor_RaiseByValueTxTy(3),
	240:Floor_RaiseByTexture(2,4),
	241:Floor_LowerToLowestTxTy(2),
	242:Floor_LowerToHighest(3,4),
	243:Exit_Normal(1),
	244:Exit_Secret(1),
	245:Elevator_RaiseToNearest(2),
	246:Elevator_MoveToFloor(2),
	247:Elevator_LowerToNearest(2),
	248:HealThing(1,2),
	249:Door_CloseWaitOpen(3, 4),
	250:Floor_Donut(3),
	251:FloorAndCeiling_LowerRaise(3,4),
	252:Ceiling_RaiseToNearest(2,3),
	253:Ceiling_LowerToLowest(2,4),
	254:Ceiling_LowerToFloor(2,5),
	255:Ceiling_CrushRaiseAndStaySilA(4,5),

	// These are specialized versions of the Generic_* specials which are defined for EE Extradata.
	256:Floor_LowerToHighestEE(2, 3),
	257:Floor_RaiseToLowest(2, 3),
	258:Floor_LowerToLowestCeiling(2,3),
	259:Floor_RaiseToCeiling(2, 5),
	260:Floor_ToCeilingInstant(1, 4),
	261:Floor_LowerByTexture(2, 3),
	262:Ceiling_RaiseToHighest(2, 3),
	263:Ceiling_ToHighestInstant(1, 3),
	264:Ceiling_LowerToNearest(2, 4),
	265:Ceiling_RaiseToLowest(2, 3),
	266:Ceiling_RaiseToHighestFloor(2, 3),
	267:Ceiling_ToFloorInstant(1, 4),
	268:Ceiling_RaiseByTexture(2, 3),
	269:Ceiling_LowerByTexture(2, 4),
	270:Stairs_BuildDownDoom(5),
	271:Stairs_BuildUpDoomSync(4),
	272:Stairs_BuildDownDoomSync(4),
	
	// New additions can go above 255 now.
	273:Stairs_BuildUpDoomCrush(5),
	274:Door_AnimatedClose(2),
	275:Floor_Stop(1),
	276:Ceiling_Stop(1),
	277:Sector_SetFloorGlow(5),
	278:Sector_SetCeilingGlow(5),
	279:Floor_MoveToValueAndCrush(4, 5),
	280:Ceiling_MoveToValueAndCrush(4, 5),
	281:Line_SetAutomapFlags(3),
	282:Line_SetAutomapStyle(2),
	283:Polyobj_StopSound(1),
	
	// new to Eternity
//	300:Portal_Define(5),
//	301:Line_QuickPortal(1),
	
	
	// internal functions have negative values
	-1:GetLineUDMFInt(2),
	-2:GetLineUDMFFixed(2),
	-3:GetThingUDMFInt(2),
	-4:GetThingUDMFFixed(2),
	-5:GetSectorUDMFInt(2),
	-6:GetSectorUDMFFixed(2),
	-7:GetSideUDMFInt(3),
	-8:GetSideUDMFFixed(3),
	-9:GetActorVelX(1),
	-10:GetActorVelY(1),
	-11:GetActorVelZ(1),
	-12:SetActivator(1,2),
	-13:SetActivatorToTarget(1),
	-14:GetActorViewHeight(1),
	-15:GetChar(2),
	-16:GetAirSupply(1),
	-17:SetAirSupply(2),
	-18:SetSkyScrollSpeed(2),
	-19:GetArmorType(2),
	-20:SpawnSpotForced(4),
	-21:SpawnSpotFacingForced(3),
	-22:CheckActorProperty(3),
	-23:SetActorVelocity(6),
	-24:SetUserVariable(3),
	-25:GetUserVariable(2),
	-26:Radius_Quake2(6),
	-27:CheckActorClass(2),
	-28:SetUserArray(4),
	-29:GetUserArray(3),
	-30:SoundSequenceOnActor(2),
	-31:SoundSequenceOnSector(3),
	-32:SoundSequenceOnPolyobj(2),
	-33:GetPolyobjX(1),
	-34:GetPolyobjY(1),
	-35:CheckSight(3),
	-36:SpawnForced(4,6),
	-37:AnnouncerSound(2),
	-38:SetPointer(2,4),
	-39:ACS_NamedExecute(2,5),
	-40:ACS_NamedSuspend(2),
	-41:ACS_NamedTerminate(2),
	-42:ACS_NamedLockedExecute(5),
	-43:ACS_NamedLockedExecuteDoor(5),
	-44:ACS_NamedExecuteWithResult(1,5),
	-45:ACS_NamedExecuteAlways(2,5),
	-46:UniqueTID(0,2),
	-47:IsTIDUsed(1),
	-48:Sqrt(1),
	-49:FixedSqrt(1),
	-50:VectorLength(2),
	-51:SetHUDClipRect(4,6),
	-52:SetHUDWrapWidth(1),
	-53:SetCVar(2),
	-54:GetUserCVar(2),
	-55:SetUserCVar(3),
	-56:GetCVarString(1),
	-57:SetCVarString(2),
	-58:GetUserCVarString(2),
	-59:SetUserCVarString(3),
	-60:LineAttack(4,9),
	-61:PlaySound(2,7),
	-62:StopSound(1,2),
	-63:strcmp(2,3),
	-64:stricmp(2,3),
	-64:strcasecmp(2,3),	// an alias for stricmp
	-65:StrLeft(2),
	-66:StrRight(2),
	-67:StrMid(3),
	-68:GetActorClass(1),
	-69:GetWeapon(0),
	-70:SoundVolume(3),
	-71:PlayActorSound(2,6),
	-72:SpawnDecal(2,6),
	-73:CheckFont(1),
	-74:DropItem(2,4),
	-75:CheckFlag(2),
	-76:SetLineActivation(2, 3),
	-77:GetLineActivation(1),
	-78:GetActorPowerupTics(2),
	-79:ChangeActorAngle(2,3),
	-80:ChangeActorPitch(2,3),
	-81:GetArmorInfo(1),
	-82:DropInventory(2),
	-83:PickActor(5,8),
	-84:IsPointerEqual(2,4),
	-85:CanRaiseActor(1),
	-86:SetActorTeleFog(3),
	-87:SwapActorTeleFog(1),
	-88:SetActorRoll(2),
	-89:ChangeActorRoll(2,3),
	-90:GetActorRoll(1),
	-91:QuakeEx(8,19),
	-92:Warp(6,11),
	-93:GetMaxInventory(2),
	-94:SetSectorDamage(2,5),
	-95:SetSectorTerrain(3),
	-96:SpawnParticle(1,16),
	-97:SetMusicVolume(1),
	-98:CheckProximity(3, 6),
	-99:CheckActorState(2,3),
	
	// Zandronum's
	-100:ResetMap(0),
	-101:PlayerIsSpectator(1),
	-102:ConsolePlayerNumber(0),
	-103:GetTeamProperty(2),
	-104:GetPlayerLivesLeft(1),
	-105:SetPlayerLivesLeft(2),
	-106:KickFromGame(2),
	-107:GetGamemodeState(0),
	-108:SetDBEntry(3),
	-109:GetDBEntry(2),
	-110:SetDBEntryString(3),
	-111:GetDBEntryString(2),
	-112:IncrementDBEntry(3),
	-113:PlayerIsLoggedIn(1),
	-114:GetPlayerAccountName(1),
	-115:SortDBEntries(4),
	-116:CountDBResults(1),
	-117:FreeDBResults(1),
	-118:GetDBResultKeyString(2),
	-119:GetDBResultValueString(2),
	-120:GetDBResultValue(2),
	-121:GetDBEntryRank(3),
	-122:RequestScriptPuke(4),
	-123:BeginDBTransaction(0),
	-124:EndDBTransaction(0),
	-125:GetDBEntries(1),
    -126:NamedRequestScriptPuke(1,5),
	-127:SystemTime(0),
	-128:GetTimeProperty(2,3),
	-129:Strftime(2,3),
	-130:SetDeadSpectator(2),
	-131:SetActivatorToPlayer(1),
	-132:SetCurrentGamemode(1),
	-133:GetCurrentGamemode(0),
	-134:SetGamemodeLimit(2),
	-135:SetPlayerClass(3),
	-136:SetPlayerChasecam(2),
	-137:GetPlayerChasecam(1),
	-138:SetPlayerScore(3),
	-139:GetPlayerScore(2),
	-140:InDemoMode(0),
	-144:ExecuteClientScript(2,6),
	-145:NamedExecuteClientScript(2,6),
	-146:SendNetworkString(2,3),
	-147:NamedSendNetworkString(2,3),
	-148:GetChatMessage(2),
	-149:GetMapRotationSize(0),
	-150:GetMapRotationInfo(2),
	-151:GetCurrentMapPosition(0),
	-152:GetEventResult(0),
	-153:GetActorSectorLocation(2),
	-154:ChangeTeamScore(3,4),
	-155:SetGameplaySetting(2),
	-156:SetCustomPlayerValue(3),
	-157:GetCustomPlayerValue(2),
	-158:ResetCustomDataToDefault(2),
    -159:LumpOpen(1,3),
    -160:LumpRead(2,3),
    -161:LumpReadString(2,3),
    // LumpReadArray is a set of 4 functions, whose definition is
    // built-in to ACC. So 162-165 are used up function indices.
    -166:LumpGetInfo(2),
    -167:LumpClose(1),
	
	// -1xx are reserved for Zandronum
	-200:CheckClass(1),
	-201:DamageActor(6), // [arookas]
	-202:SetActorFlag(3),
	-203:SetTranslation(2),
	-204:GetActorFloorTexture(1),
	-205:GetActorFloorTerrain(1),
	-206:StrArg(1),
	-207:Floor(1),
	-208:Round(1),
	-209:Ceil(1),
	-210:ScriptCall(2, 100),	// ACS does not know varargs so use something large as maximum.
	-211:StartSlideshow(1),
	-212:GetSectorHealth(2),
	-213:GetLineHealth(1),
	-214:SetSubtitleNumber(2),
	
	
	// Eternity's
	-300:GetLineX(3),
	-301:GetLineY(3),
	-302:SetAirFriction(1),
	
	// GZDoom OpenGL
	-400:SetSectorGlow(6),
	-401:SetFogDensity(2),
	
	// ZDaemon's
	-19620:GetTeamScore(1),
	-19621:SetTeamScore(2),
	
	-100000:__EndOfList__(10);
