Build 10626
GIT-
Add userdef quote_yoffset
Show details
Allows adjustable Y-offset for in-game quotes from CON. Input expects higher precision coordinates similar to rotatesprite16.
SVN handles and Git names are merged into one person.
Add userdef quote_yoffset
Allows adjustable Y-offset for in-game quotes from CON. Input expects higher precision coordinates similar to rotatesprite16.
Add EVENT_OPERATEACTIVATORS
EVENT_OPERATEACTIVATORS is run against each STAT_ACTIVATOR with a matching lotag when a typical Duke3D button/touchplate is triggered. Current sprite will be stored in THISACTOR and setting RETURN -1 will skip the normal processing of any remaining activator logic. This does not work with Masterswitches as they use a completely different logic instead.
allow frame drawing between segments of EVENT_WORLD/EVENT_PREWORLD chains
add CON_YIELD
Allows long-running CON execution to yield to rendering and player input handling.
support sensible conversions between gamearray types when loading savegames
add .ang member for walls in CON
allow the user to choose whether to continue with internal scripts once bad CON files are encountered in their game directory
use internal CONs if external CON compilation fails, like the DOS version did.
I see now that Todd was actually very wise.
detect invalid .sectnum and .statnum with setactor
fix bug in CON EVENT_SCREEN where keypresses weren't being cleared between loop iterations, preventing animations where each keypress skips a segment without bailing out of the whole thing
Introduce actor event 'EVENT_PREACTORDAMAGE'
This event is executed when an actor runs A_IncurDamage(), and is placed just before subtracting 'htextra' from 'extra' and updating the actor's owner (i.e. just before damage is applied to the actor). For useractors, this normally occurs when ifhitweapon is called. Set RETURN to a nonzero value to skip applying the damage. This will also cause the 'ifhitweapon' conditional to skip the branch. Note that doing so will not automatically reset htextra to 0.
Print script name and line if gamevar/struct index error occurs
improve CON VM debug dump output
Replaces more or less useless offsets from script pointer with filename and line number and consolidates parameters passed to CON commands into the same line in the output.
add debug vm_preempt cvar to control CON VM preemption by frame drawing
This doesn't save to the .cfg because it's a tool for debugging and is not intended to be used as a user preference.
add projectile flags to CON default definitions
disallow drawing frames between EVENT_PREGAME iterations
stupid CON VM optimizations
Replaces VM_ASSERT macro with new VM_ABORT_IF macro, ~1-2% perf increase in real world tests using heavy scripts (Ion Fury)
Restore the CON commands 'getmusicpos' and 'setmusicpos'
cool CON optimization
Fix an error with the bonus tile, and extend EVENT_GETBONUSTILE
Within EVENT_GETBONUSTILE, you can now set ud.return[0] to ud.return[4] to change each frame of the bonus screen animation separately.
Add event EVENT_GETBONUSTILE to change bonus screen pic
The RETURN value will be set to the current base bonusscreen tile, and changing it will change the tiles displayed in the bonusscreen.
Only attempt to switch subweapon if we actually have the weapon
This fixes a bug in World Tour where trying to switch to the flamethrower while the current weapon is the freezer, and you have flamethrower ammo but not the actual weapon itself, then this instead locks the weapon key, preventing you from switching back to the freezer from other weapons. This bug also affected the Shrinker, but only if CON code changes the 'gotweapon 11' value to 0 after the player obtains the weapon.
Reset all actor vars in prelevel() regardless of the sprite's statnum
Previously, only sprites with statnum 0 would have their per-actor variables reset to the default on map load. This meant that sprites with statnums that were pre-defined in the map would inherit the actor var values of the sprites with corresponding spriteNums from the previous map. Additionally, the per-actor var reset is now performed before EVENT_PRELEVEL, meaning that any changes to actorvar that occur in this event will now persist. Previously, altering actor vars for sprites with statnum 0 in this event would not have any effect, as they would be reset to their defaults afterwards.
Add sanity checking to CON decimals, hex constants and labels
* Scripts no longer compile if a hex constant is malformed (e.g. 0x, 0xz) * Compiler will now warn if a decimal or hex constant isn't terminated in a sane manner. (example: digit is followed by letters: "100ab") * Compiler will now warn if a label starts with digits. This is done to prevent ambiguity between integer constants and actual labels.
WIP controller force feedback (rumble) support
Currently hard-coded with no real customization; algorithm and range of values will certainly change but the current implementation attempts to automatically discern appropriate force feedback values based on the potential damage inflicted by projectiles the player fires, events occurring in the map such as explosions and earthquakes, and on the damage the player receives. A future commit will likely contain a way to send the force feedback impulses from CON.
make actors set to move vertically in CON act as if SFLAG_SMOOTHMOVE was explicitly enabled
This smooths out stuff like octabrains and flying liztroops without making them look stupid when they move on the ground.
Add the CON commands `getngcflags` and `setngcflags`
Usage: ``` getngcflags <var> <idx1> [<idx2>...] setngcflags <const/var> <idx1> [<idx2>...] ``` Gets/sets the flags for the newgamechoices entries at the specified indices. The index list is variable-sized, up to a maximum of 3. This can be used to enable/disable the MEF_Hidden and MEF_Locked state. Supersedes the userdef struct members: `m_newgamecustomopen` and `m_newgamecustomsubopen`.
add predefined TILE_ANIM and TILE_VIEWSCR tokens for CON
remove extra S_SoundIsValid() check from A_PlaySound()
This is checked in both S_PlaySound() and S_PlaySound3D() anyway, and we need to get to that stage of execution in order for EVENT_SOUND to fire.