ACS built-in functions

From Eternity Wiki
Jump to: navigation, search

These are predefined ACS functions with no parameterized linedef special equivalents, accessible only through ACS scripts.

NOTE: most of these functions are meant to be compatible with those from ZDoom. For any ones not yet documented on this wiki, you can check the ZDoom wiki. A few of them may be incompletely implemented in Eternity. Don't hesitate to update the wiki in case of any mistakes.

Special TID info[edit]

For functions affecting things, some TIDs (thing tags) carry special meaning. TID 0 means the activator, and TIDs -1 ... -4 mean each of the four players in the game -- this is an Eternity extension

Data type info[edit]

You may see specifiers such as void, str, int and others in ACS function signatures. They act as a guide on what kinds of values are expected, but in ACS there really are only two types: str and int (and str internally is merely a string ID number). Most importantly:

  • void means that a function should be used as a procedure (command) without returning anything,
  • fixed means you can use the decimal point notation: 1.0 is equivalent to 65536, 1.5 to 98304 etc. In ACS, such values are still of int type, but whether you use the decimal point or not is quite relevant. A value such as 128.0 is not the same as 128: it's actually equal to 8388608 (no decimal point).

Function list[edit]

Sound and music[edit]

  • void ActivatorSound(str sound, int volume)
Starts a sound from script's activator, at the given volume. If there's no activating thing, the sound will be ambient.
  • void AmbientSound(str sound, int volume)
Starts an ambient sound.
  • void LocalAmbientSound(str sound, str volume)
Starts an ambient sound that can only be heard by the activator, normally a player.
  • void PlaySound (int tid, str sound [, int channel [, fixed volume [, bool looping [, fixed attenuation]]]])
  • void PlayActorSound (int tid, int sound, int channel, fixed volume, bool looping, fixed attenuation)
  • void SectorSound(str sound, int volume);
  • void SetMusic (str song [, int order [, int unused]])
  • void LocalSetMusic (str song [, int order [, int unused]])
  • void SoundSequence (str sndseq);
  • void SoundSequenceOnActor (int tid, str sndseq);
  • void StopSound (int tid, int channel);
  • void ThingSound (int tid, str sound, int volume);

Sectors[edit]

  • void ChangeCeiling(int tag, str flatname)
Changes the ceiling texture of tagged sectors to flatname.
  • void ChangeFloor(int tag, str flatname)
Changes the floor texture of tagged sectors to flatname.
  • fixed GetSectorCeilingZ (int tag, int x, int y)
Gets sector ceiling height. Currently x and y are reserved for the time Eternity gets working slope physics.
  • fixed GetSectorFloorZ (int tag, int x, int y)
Gets sector floor height. Currently x and y are reserved for the time Eternity gets working slope physics.
  • int GetSectorLightLevel (int tag)

Things[edit]

  • bool CheckSight(int source, int dest, int flags)
Returns true if there's a line of sight between at least one thing tagged as source and one thing tagged as dest. Currently flags is reserved and must be 0.
  • bool CheckFlag(int tid, str flag)
Returns true if the first thing with the given tid has the given flag enabled.
  • bool CheckActorClass(int tid, str class)
Returns true if the first thing with the given tid is of the given class.
Checks the kind of thing tagged tid. It returns a set of flags, possibly combined:
  • ACTOR_PLAYER (2): it's player-controlled
  • ACTOR_VOODOODOLL (8): it's a duplicate player start, not controlled by the player but still linked to it. Used in Boom maps for advanced mapping tricks
  • ACTOR_MONSTER (16): it's a monster (has COUNTKILL or KILLABLE thing type flag set)
  • ACTOR_MISSILE (128): it's a projectile in flight (has MISSILE thing type flag set)
  • ACTOR_GENERIC (256): neither a monster, nor a projectile
  • ACTOR_ALIVE (32): has positive health
  • ACTOR_DEAD (64): has health <= 0
  • ACTOR_NONE (0): no thing found with this TID
  • ACTOR_WORLD (1): TID is 0 but activator isn't a thing
  • GetActorProperty
  • IsTIDUsed
  • void SectorDamage (int tag, int amount, str type, str protection_item, int flags)
  • int SetActivator (int tid[, pointer_selector])
  • bool SetActivatorToTarget (int tid)
  • void SetActorAngle (int tid, fixed angle)
  • bool SetActorVelocity (int tid, fixed velx, fixed vely, fixed velz, bool add, bool setbob)
  • void SetActorPitch (int tid, int pitch)
  • bool SetActorPosition (int tid, fixed x, fixed y, fixed z, bool fog)
  • void SetThingSpecial (int tid, int special [, int arg0 [, int arg1 [, int arg2 [, int arg3 [, int arg4]]]]])
  • int SetActorState(int tid, str statename[, bool exact]);
  • SetActorProperty
  • int Spawn (str classname, fixed x, fixed y, fixed z [, int tid [, int angle]])
  • int SpawnForced (str classname, fixed x, fixed y, fixed z [, int tid [, int angle]])
  • void SpawnProjectile (int tid, string type, int angle, int speed, int vspeed, int gravity, int newtid);
  • int SpawnSpot (str classname, int spottid [, int tid [, int angle]])
  • int SpawnSpotForced (str classname, int spottid [, int tid [, int angle]])
  • int SpawnSpotFacing (str classname, int spottid [, int tid])
  • int SpawnSpotFacingForced (str classname, int spottid [, int tid])
  • int ThingCount (int type, int tid)
  • int ThingCountName (str classname, int tid)
  • int ThingCountSector (int type, int tid, int tag)
  • int ThingCountNameSector (str classname, int tid, int tag)
  • int Thing_Damage2 (int tid, int amount, str type);
  • void Thing_Projectile2 (int tid, int type, int angle, int speed, int vspeed, int gravity, int newtid)
  • int UniqueTID ([int tid[, int limit]])

Linedefs and sidedefs[edit]

  • GetLineX
  • GetLineY
  • LineSide
  • void ReplaceTextures (str oldtexturename, str newtexturename [, int flags])
  • void SetLineSpecial (int lineid, int special [, int arg0 [, int arg1 [, int arg2 [, int arg3 [, int arg4]]]]])
  • void SetLineTexture(int lineid, int line_side, int sidedef_texture, str texturename);

Sky[edit]

  • void SetSkyScrollSpeed (int sky, fixed skyspeed);

Scripts[edit]

  • bool ACS_NamedExecuteAlways(str script, int map, int arg1, int arg2, int arg3)
  • Executes a named script, starting a new instance if one already exists. Returns true if successfully started.
  • bool ACS_NamedExecute(str script, int map, int arg1, int arg2, int arg3)
  • Executes a named script. Returns true if successfully started.
  • int ACS_NamedExecuteWithResult (string script, int s_arg1, int s_arg2, int s_arg3, int s_arg4)
  • bool ACS_NamedSuspend (string script, int map)
  • bool ACS_NamedTerminate (string script, int map)

Console[edit]

  • int GetCVar (str cvar)
  • string GetCVarString (str cvar)
  • int GetPlayerInput (int player, int input)

Polyobjects[edit]

  • fixed GetPolyobjX (int po)
  • fixed GetPolyobjY (int po)

Quake[edit]

  • void Radius_Quake2 (int tid, int intensity, int duration, int damrad, int tremrad, str sound)

Math[edit]

  • int Random (int min, int max)
  • int Sqrt (int number)
  • fixed FixedSqrt (fixed number)
  • int VectorLength (int x, int y)

Strings[edit]

  • str StrLeft (str string, int length)
  • str StrMid (str string, int start, int length)
  • str StrRight (str string, int length)

Level state[edit]