Commit graph

242 commits

Author SHA1 Message Date
Randy Heit
87dbfb68e9 - Fixed: PCD_MORPHACTOR and P_MorphMonster() needed NULL pointer checks.
SVN r4141 (trunk)
2013-02-19 01:51:07 +00:00
Randy Heit
f68d5a4845 - More options for acsprofile command:
* acsprofile clear - Resets all profiling statistics to 0.
  * acsprofile [<sort-function>] [<limit>]:
    * <sort-function> is an optional argument that specifies which column to sort on (total, min, max, avg, or runs). The default is total.
    * <limit> is an optional argument that specifies how many rows to limit the output to. The default is 10. 0 or less will print every script or function that has at least one run.

SVN r4060 (trunk)
2013-02-03 04:30:20 +00:00
Randy Heit
b971714e7f - Do not print imported functions in the profile list.
SVN r4059 (trunk)
2013-02-03 03:54:31 +00:00
Randy Heit
b2f09b2dc6 - Added ACS profiling information.
SVN r4058 (trunk)
2013-02-02 05:54:15 +00:00
Randy Heit
2022d64ee2 - Do not crash when reading ATAG chunks on processors that don't like unaligned accesses.
SVN r3991 (trunk)
2012-12-21 22:47:55 +00:00
Braden Obrzut
e8731c7571 - Added support for Eternity's JUMP table and PCD_GOTOSTACK (again, requires advanced compiler).
SVN r3990 (trunk)
2012-12-20 04:17:18 +00:00
Braden Obrzut
86291fcd96 - Added support for Eternity's ATAG chunk (mixed-type arrays). Requires a structure aware compiler (not ACC).
SVN r3989 (trunk)
2012-12-17 19:17:02 +00:00
Randy Heit
e398957a4c - Added cybermind's HUD message clipping patch, with numerous changes. There is a new flag
and two new functions, both of which are intended for use in conjunction with SetHUDSize:
  * SetHUDClipRect(x, y, width, height[, wrapwidth]) - Set the clipping rectangle for future
    HUD messages. If you do not specify <wrapwidth>, the HUD message will be layed out as
    normal, but pixels outside the rectangle will not be drawn. If you specify <wrapwidth>,
    then the message will be wrapped to that width. Use SetHUDClipRect(0, 0, 0, 0[, 0]) to
    reset everything
    back to normal.
  * SetHUDWrapWidth(wrapwidth) - Sets the wrapping width for future HUD messages without
    altering the clipping rectangle. If you set the wrapping width to 0, messages will wrap
    to the full width of the HUD, as normal.
  * HUDMSG_NOWRAP - A HUDMessage() flag that disables wrapping for one message. It is
    functionally equivalent to SetHUDWrapWidth(0x7FFFFFFF), except that it only affects the
    message it's attached to.

SVN r3960 (trunk)
2012-11-10 03:18:52 +00:00
Randy Heit
955d929d5e - Ensure that only actor with positive SpawnIDs get added to the SpawnableThings map, so there will
be no conflicts with recently-added named arguments for spawnable things on UDMF maps.
- Change the SpawnableThings array into a map, so there is no longer any particular upper limit on an actor's SpawnID. Also fixes a possible exploit, since an actor's SpawnID was never checked to make sure it was within range.

SVN r3959 (trunk)
2012-11-09 23:53:58 +00:00
Randy Heit
2ce1debe8d - Added FDARI's get actor height and radius patch.
SVN r3955 (trunk)
2012-11-09 23:06:40 +00:00
Braden Obrzut
441f633983 - Moved Sqrt, FixedSqrt, and VectorLength to ACSF_ instead of adding new opcodes.
SVN r3888 (trunk)
2012-10-13 22:55:44 +00:00
Randy Heit
924cd3ef38 - Added sqrt, fixedsqrt, and vectorlength to ACS.
SVN r3883 (trunk)
2012-10-11 03:38:12 +00:00
Randy Heit
864fb5798e - Added desaturated translation support to ACS.
SVN r3878 (trunk)
2012-09-20 02:14:43 +00:00
Randy Heit
9a28216e30 - Added HUDMSG_ALPHA flag. To use alpha with hud messages, you now need to include this flag,
so old mods with extra arguments to hudmessage don't produce unexpected results.

SVN r3876 (trunk)
2012-09-20 02:06:50 +00:00
Randy Heit
8a021c4b4b - Added PLAYERINFO_FOV and PLAYERINFO_DESIREDFOV for use with GetPlayerInfo. PLAYERINFO_FOV is
the player's current FOV, and PLAYERINFO_DESIREDFOV is the FOV that was set with the fov
  console command.

SVN r3835 (trunk)
2012-08-22 22:09:17 +00:00
Randy Heit
166b4dbb75 - Since the string builder stuff takes care of recursive print calls now, the PCD_CALLs don't
need to save it as part of the state when calling functions.

SVN r3828 (trunk)
2012-08-14 03:00:03 +00:00
Randy Heit
26c17dc697 - Added ACS support for setting HUD messages alpha levels. This is an additional optional
parameter added to the end of the HudMessage command's existing parameter lists. So for
  HUDMSG_PLAIN, it comes after the hold time. For HUDMSG_FADEOUT and HUDMSG_TYPEONE, it comes
  after the fade time. And for HUDMSG_FADEINOUT, it comes after the out time.
  - Alpha is a fixed point number between 0.0 and 1.0.
  - Example:
    Without alpha (unchanged from before):
      HudMessage(s:"Some text", HUDMSG_PLAIN, 0, CR_UNTRANSLATED, 0.5, 0.5, 3.0);
    With alpha (alpha is added to the end):
      HudMessage(s:"Some text", HUDMSG_PLAIN, 0, CR_UNTRANSLATED, 0.5, 0.5, 3.0, 0.5 /* this is the alpha */);

SVN r3825 (trunk)
2012-08-12 23:24:41 +00:00
Randy Heit
c9b480e0ec - Added lowlevel support for custom alphas for HUD messages.
- Added HUDMSG_ADDBLEND to draw HUD messages with additive blending.

SVN r3824 (trunk)
2012-08-12 23:14:31 +00:00
Randy Heit
73552f0365 - Added HUD message visibility flags, which are ORed into the type field:
* HUDMSG_NOTWITH3DVIEW : This message does not appear when the 3D view is active.
  * HUDMSG_NOTWITHFULLMAP : This message does not appear when the fullscreen automap is active.
  * HUDMSG_NOTWITHOVERLAYMAP : This message does not appear when the overlay automap is active.
  These flags may be combined, so for example: HUDMSG_NOTWITHFULLMAP | HUDMSG_NOTWITHOVERLAYMAP
  would prevent the message from appearing if any form of automap is active.

- Added HUD message layers, which are ORed into the type field:
  * HUDMSG_LAYER_OVERHUD : This is the default and standard behavior. The message appear on
    top of most HUD elements. This definition is just included for completeness' sake; you
    don't need to explicitly use it.
  * HUDMSG_LAYER_UNDERHUD : The message appears underneath other HUD elements, such as the status bar.
  * HUDMSG_LAYER_OVERMAP : The message appears on top of the fullscreen automap. At the moment,
    this layer is functionally equivalent to using the flags HUDMSG_NOTWITH3DVIEW | HUDMSG_NOTWITHOVERLAYMAP.
    However, if Blzut3 decides to implement support for drawing the automap permanently on a
    second screen, messages on this layer will move to that screen with the automap and be permanently
    visible as long as the map is visible on that other screen.
  These are not flags, so for example HUDMSG_LAYER_UNDERHUD | HUDMSG_LAYER_OVERHUD is not valid.

SVN r3821 (trunk)
2012-08-12 22:24:15 +00:00
Randy Heit
8c465df44e - Added ACS function IsTIDUsed(tid): It returns whether any actors using the given TID exist. This
is more efficient than ThingCount(tid, T_NONE), because it only needs to check for one actor
  with the TID and not all of them. It also makes no distinction between dead things and live
  things like ThingCount does.
- Added ACS function UniqueTID(tid, limit): It returns a new TID that is not currently used by
  any actors. It has two modes of operation. If tid is non-zero, then it checks TIDs one-by-one
  starting at the given tid until if finds a free one. If tid is zero, then it returns a completely
  random TID. If limit is non-zero, then it will only check that many times for a free TID, so
  it might not find a free one. If no free TID is found, 0 is returned. If limit is zero, then
  the search is effectively unlimited.

SVN r3798 (trunk)
2012-08-01 03:12:43 +00:00
Randy Heit
0aee56be15 - Fixed typo in r3795's change to GetActorZ and a potential null pointer dereference.
SVN r3796 (trunk)
2012-07-30 00:50:19 +00:00
Randy Heit
9c0b0dc774 - Add the bob offset to the missiles spawned by P_SpawnMissile(), P_SpawnMissileAngle(), P_SpawnMissileAngleSpeed(), A_MissileAttack, A_ComboAttack, A_BasicAttack, A_CustomMissile, A_CustomComboAttack, A_ThrowGrenade, A_SpawnDebris, and A_Burst.
- Add the bob offset to the value returned by GetActorZ.

SVN r3795 (trunk)
2012-07-30 00:05:24 +00:00
Randy Heit
1c1957085f - Enumerate ZDaemon's ACSF_ values.
SVN r3757 (trunk)
2012-07-14 02:01:08 +00:00
Randy Heit
616672237d - Added PCD_SCRIPTWAITNAMED p-code.
SVN r3756 (trunk)
2012-07-11 04:00:04 +00:00
Randy Heit
95b9eae242 - Fixed: PCD_SCRIPTWAITDIRECT had different semantics than PCD_SCRIPTWAIT.
SVN r3754 (trunk)
2012-07-11 03:14:08 +00:00
Braden Obrzut
72f1a37ec4 - Fixed: ACS function pointer instructions need to call GetFunction on the tagged module instead of the active behavior.
SVN r3732 (trunk)
2012-07-03 20:17:31 +00:00
Braden Obrzut
439b60ae68 - Added support for Eternity Engine's function pointer ACS instructions. (Note that an alternative ACS compiler is necessary to use these instructions properly.)
SVN r3731 (trunk)
2012-07-03 01:24:52 +00:00
Randy Heit
7d3d09e523 - Quadruple ACS runaway limit to 2 million instructions.
SVN r3697 (trunk)
2012-06-17 04:06:52 +00:00
Braden Obrzut
af30e933e4 - Fixed: Direct instructions need to tag their strings before lookup.
SVN r3686 (trunk)
2012-06-11 21:46:47 +00:00
Randy Heit
086d0a797e - Added AActor::SetFriendPlayer() to make setting FriendPlayer cleaner to read when doing it with
a player_t pointer.

SVN r3681 (trunk)
2012-06-09 04:15:56 +00:00
Christoph Oelckers
9c4a565366 - fixed: Inventory clearing after changing a level with the ACS ChangeLevel command did not properly clear the inventory. This will now use the same code as the ACS ClearInventory command.
SVN r3673 (trunk)
2012-05-31 09:46:07 +00:00
Randy Heit
3523e4f24a - Fixed: SectorDamage did not work with 3D floors.
SVN r3594 (trunk)
2012-04-26 02:35:02 +00:00
Randy Heit
142a15b9c6 - Fixed: The length of the SFLG chunk was used incorrectly, resulting in erroneous flag setting
if such a chunk was present.

SVN r3593 (trunk)
2012-04-26 02:03:43 +00:00
Christoph Oelckers
10c783dde2 - changed ACS parameter truncation for Hexen so that it's only done for ACS_Old format.
SVN r3497 (trunk)
2012-03-31 20:53:01 +00:00
Randy Heit
ab60c1afcc - Changed CheckActorFloor/CeilingTexture to only check 3D floors that exist and are solid.
SVN r3459 (trunk)
2012-03-20 03:00:33 +00:00
Randy Heit
e93029a42a - Make CheckActorFloorTexture and CheckActorCeilingTexture aware of 3D-floors.
SVN r3454 (trunk)
2012-03-18 02:44:46 +00:00
Randy Heit
6f12a6e8bb - Fix signed/unsigned mismatch warned by GCC.
SVN r3450 (trunk)
2012-03-17 03:10:19 +00:00
Randy Heit
977b2caa30 - Applied a modified version of FDARI's patch to prevent giving health to dead things:
* P_GiveBody() now takes a max parameter so that it can also do the bulk of the work
    AHealth::TryPickup() previously did.
  * Setting an actor's health to 0 or below with SetActorProperty will now kill the actor
    properly.

SVN r3438 (trunk)
2012-03-15 21:21:00 +00:00
Randy Heit
6290ea4fcb - Added setactivation command for compatibility.cpp to fix the gear boxes on hexdd.wad, map54,
which should be set for player uses activation but are not.
- Added some developer mode messages for setlinespecial and clearlinespecial.

SVN r3437 (trunk)
2012-03-15 20:33:33 +00:00
Randy Heit
ba2e8b2461 - Fixed: Old-style ACS has the string table record offsets from the start of the object file to
the strings, not from the start of the string table, so UnescapeStringTable() needs to be
  told where the offsets are based.

SVN r3436 (trunk)
2012-03-15 19:08:19 +00:00
Randy Heit
58f7e72d1b - Restored savegame compatibility that was removed in r3427.
SVN r3435 (trunk)
2012-03-13 02:43:24 +00:00
Christoph Oelckers
e4880d162f - added Xaser's submission for accessing accuracy and stamina from DECORATE and ACS.
- added DECORATE properties for accuracy and stamina.
- Since these changes move properties from player_t to AActor all savegame compatibility code was removed and the min. savegame version bumped.


SVN r3427 (trunk)
2012-03-11 09:08:35 +00:00
Randy Heit
51e66acc6b - Fixed: UnescapeStringTable() used the wrong position in the script file for Hexen-style ACS.
SVN r3424 (trunk)
2012-03-11 03:47:45 +00:00
Randy Heit
5564b99d3a - Fixed: UseInventory from ACS should ignore the totally frozen property.
SVN r3415 (trunk)
2012-03-09 01:56:37 +00:00
Randy Heit
ac3b805dd9 - Fixed: ACS's ClearInventory was not equipped to handle items that destroy other items when
destroyed. For example, if a weapon has a sister weapon immediately after it in the inventory
  list, they would both be destroyed by the call to destroy the weapon, and ClearInventory
  would fail to find anything beyond the sister weapon in the inventory list.

SVN r3413 (trunk)
2012-03-09 01:19:02 +00:00
Randy Heit
e5e1ee00a6 - Handle ACS string escape sequences at load time rather than print time.
- Fixed: FBehavior::FindStringInChunk() was not big-endian safe.
- Fixed: FBehavior::LookupString() was not big-endian safe.

SVN r3406 (trunk)
2012-03-08 21:37:34 +00:00
Randy Heit
5f88d2c9f0 - All ACS debugging messages are now aware of named scripts.
- Identify script types by name in FBehavior::StaticStartTypedScripts().

SVN r3405 (trunk)
2012-03-08 20:48:53 +00:00
Randy Heit
f2f9bd800d - Fixed: When processing the SFLG and SVCT chunks in ACS objects, the script number must be
read as a signed integer.

SVN r3402 (trunk)
2012-03-04 03:18:06 +00:00
Randy Heit
1e21ebad5d - Let puke and pukename take up to four script parameters.
- Pass ACS_ExecuteWithResult's fifth argument as a fourth script parameter.
- Simplify P_StartScript()'s usage.

SVN r3394 (trunk)
2012-02-26 03:36:05 +00:00
Randy Heit
7106c06811 - Allow for ACS_NamedExecute and friends to be used with SetThingSpecial.
SVN r3389 (trunk)
2012-02-26 02:25:33 +00:00