Changelog

1.5.1

This is a bugfix release.

Fixed GetCVarFixed crashing ZDoom when trying to access a nonexistent CVar. Now it returns 0.

Fixed an off-by-one error in mod.

Fixed some constants not using #libdefine.

Fixed number parsing functions only supporting uppercase digits.

Fixed ParseFixed always parsing in base-10.

Fixed additive blending not working in HUD Library when alpha is set to 1.0.

ChangeFlag now support short flag names (e.g. "NOAUTOFIRE" instead of "WEAPON.NOAUTOFIRE"). Update decorate/changeflag.txt to use this. (Thanks to The Zombie Killer.)

GetAspectRatio updated to a newer version.

1.5

SendString!

Added ACS_SendString() and ACS_NamedSendString() to send strings from server to client.

Added IsZandronum212()

GetAspectRatio() now triggers a ProgramError when used serverside.

Fixed ChangeFlag not working with INVENTORY.NOTELEPORTFREEZE.

All internal functions now use ACSUtils_ prefix.

Removed ScreenWidth(), ScreenHeight(), and AspectRatio().

Porting guide

Replace all uses of ScreenWidth() and ScreenHeight() with ZDoom functions GetScreenWidth and GetScreenHeight.

Replace all uses of AspectRatio() with IntDiv(GetScreenWidth(), GetScreenHeight()).

1.4

Widescreen support!

Mouse cursor now supports widescreen!

Added GetAspectRatio().

Added widescreen hud size functions (in widescreen module and hudlib).

Porting guide

Make sure that your cursor code supports widescreen cursor coordinates.

1.3.2

ACSUtils is now distributed not as a collection of files, bu as a single file (generated using acsinclude).

Fixed warnings about mismatched array sizes on map scripts.

Added swap().

atoi() and atof() now return INT_MAX multiplied by sign instead of 0 on overflow.

Removed ftoi().

Porting guide

Remove all ACSUtils files from your project, except acsutils.acs. acsutils.acs now contains the whole ACSUtils.

Replace all uses of ftoi() with floor().

Review all uses of atoi() and atof().

1.3.1

Fixed duplicate actor warnings in changeflag.txt

Porting guide

No changes needed.

1.3

ChangeFlag, IsGZDoom, and improved cursor API! Thanks to The Zombie Killer for allowing ACS-X technologies to be included into ACSUtils!

Added ChangeFlag! (implementation from ACS-X)

Fixed vertical cursor movement being too slow

Added CursorMotionX() and CursorMotionY() and changed CursorDeltaX() and CursorDeltaY() to return the actual delta.

Added EnableCursorWrapX() and EnableCursorWrapY().

Added GZDoom identification (implementation from ACS-X).

Zandronum identification does not require a database anymore (implementation from ACS-X).

IsOpenGL() now does not return true in ZDoom with vid_renderer 1.

Added ClearHudMessageBold().

Added constants for log2(e) and log2(10).

Porting guide

If you were using CusrorDeltaX/Y and need them to return non-zero values at the edges of the screen, replace their uses with CursorMotionX/Y.

1.2.2.1

Fixed a very dumb bug in fixed-point logarithms that I made when adding them to ACSUtils.

1.2.2

New logarithm functions and proper IntDiv by TechnoDoomed1. Thank you!

Added logarithm functions.

IntDiv now handles any numbers whose ratio is less than 32768.

Added SyncSpeed().

Added ACSUtilsVersion().

Porting guide

No changes needed.

1.2.1

This is a bugfix release.

Renamed GetCVarFixed to a_GetCVarFixed for GDCC compatibility.

HudSetCameraAngles no longer inverts the pitch.

Fixed StrIsAscii storing an integer in a str variable.

Porting guide

Replace all uses of GetCVarFixed with a_GetCVarFixed.

Invert the second argument to HudSetCameraAngles.

1.2

New features!

Added full software renderer support to 3D HudMessages.

Added mouse cursor API (acscursor).

IsOpenGL() now emits a ProgramError when used serverside.

IsOpenGL() is now very slightly more accurate.

Hudlib saved state stack size can now be configured in ACSUtils settings.

Fixed IsServer() killing the calling script in ZDoom.

Added actor property shorthands with bandwidth optimization.

Added ACSUtils version information constants.

Added npo2().

Added mod().

Added cond().

Renamed sign() to sgn() to reduce name clashes.

Porting guide

Add #define ACSUTILS_HUDLIB_SAVEDSTATES 16 ACSUtils settings before #include “acsutils.acs”. You can change the amount of saved states if needed.

Replace all uses of sign() with sgn().

Review all uses of IsOpenGL().

If you require hudlib to use true 3d projection in software, use HudSetProjectionMode(HUD_PROJECTION_YSHEARING).

If you are using 3D hudmessages serverside, use HudSetProjectionMode(HUD_PROJECTION_3D) to fix the ProgramError about using IsOpenGL() serverside.

1.1.3

This is a maintenance release that enables ACSUtils to be used in AOW-scale projects.

All global (map) variables of ACSUtils have been put into an array due to ZDoom's 128 map variable limit. Now ACSUtils uses just 11 map variables and can be used in big projects.

Fixed IsServer() returning false in singleplayer.

Porting guide

Review all uses of IsServer().

1.1.2

This is a bugfix release.

Added IsServer() function.

Added StrAddInt(), StrAddFixed(), and StrAddChar() functions.

IsOpenGL() now takes gl_nogl into account.

Renamed ActorName() to GetActorName() to reduce name clashes.

Fixed ParseFixed() returning an error on integers.

Fixed PARSENUMBER_BADFORMAT and PARSENUMBER_OVERFLOW having the same value.

Fixed empty strings parsing as 0.

Porting guide

Replace all uses of ActorName() with GetActorName().

Review all code that relies on number parsing to see whether it's affected by the bug fixes.

1.1.1

This is a release that overcomes the 256 functions per compiled file limitation.

Added #nocompact to fix ZDoom crashes when there are more than 256 functions in a compiled file.

Fixed BCC compatibility.

Porting guide

No changes needed.

1.1

Error handler is now a function, not a script.

Made public constants use #libdefine instead of #define, making them usable in map scripts.

Added GiveMaxInventory, GiveMaxActorInventory, TakeAllInventory, TakeAllActorInventory.

Added IntDiv

Added lang

Fixed ceil and iceil incorrectly adding 1 to already round numbers (ceil(1.0) == 2.0)

Optimized SetInventory and SetActorInventory for multiplayer.

Porting guide

Replace your error handling script with a function and remove ACSUTILS_ERROR_HANDLER.

Review any uses of ceil.