Originally written by Zwip-Zwap Zapony for the SRB2 repository as part of STJR/SRB2!1931, partially flattened to avoid waiting for the merger of the entire branch.
- 0, not 1 as previously was the case, now shows zero lines.
- Now inclusively capped between 0 and 20 lines in the cvar, rather than silently in the console code.
There are two differences between Whumble and Stumble.
- Stumble cannot be combo'd on upwards momentum, while whumble can. (Resolves#522)
- Whumble takes bumpers, while stumble does not.
- Removes the MT_INSTAWHIP hack.
- CL_ClearPlayer
- Delete followmobj, stumbleIndicator, and sliptideZipIndicator
- Wipe flickyAttacker and powerup.flickyController
- G_PlayerReborn
- Properly destroy the Follower and its bubble overlays, etc
- Ensure ringShooter pointer is kept
- Delete followmobj, stumbleIndicator, and sliptideZipIndicator
- Wipe flickyAttacker and powerup.flickyController
- P_PlayerThink
- Ensure all invalid pointers are erased, even on hitlag frames
Since it's already ticking for the sake of a fuse, make it handle its own movement/scaling as well.
Spawning is still handled by the player thinker (and can be blocked by hitlag), but this permits it to disappear when a player dies/disconnects the server.
This isn't currently the cause of any issue, but found this future footgun while researching the previous commit.
Sometimes functions are turned into macros, which could potentially result in multiple save->p digestions if this was eventually turned into one.
Fixes connecting to a server that's currently on a map with a loop.
Also tidies P_SpawnItemRow, P_SpawnItemCircle to reduce the likelihood of this happening again, and possible crash with Lua-shortcircuited loop spawning
Fixes ourIP being set on every map change
Also catches a possible case where joining clients can sigfail in the window between map change and stun response
Requires changes in the script to support which I am not awake enough to finalise or make compatible with other branches. This took far longer than appropriate.
Instead of storing this during binary-UDMF conversion and then copying it for certain argument fields, put it directly onto stringarg[0] (or [1] if it's the backside), then make relevant changes with those.
Reduces the amount of Zone memory used for binary converted maps, and the amount of struct memory used for all types of maps.
They have also been removed from the Lua API. Fret not, the stringargs on line_t have far more utility.
Previously, concatenated texture field strings were turned to text, then had that string run through get_number, then had it converted back into a string to become a stringarg.
Now, the concatenated string is copied directly to the relevant stringarg.
This fixes an issue where a map with object or state properties would have "context drift" - breaking when the object or state list changed, due to differently ordered freeslots, or new hardcoded objects.
This is also made consistent and with less repeated code via the addition of multile P_Write functions to replace both P_WriteConstant and multiple copypasted blocks of zone allocation and memcpy.
- P_WriteDuplicateText -- fresh zone memory copy with PU_LEVEL
- P_WriteSkinColor -- converts ID to SKINCOLOR_ name, then runs it through P_WriteDuplicateText
- P_WriteSfx -- converts ID to SFX_ name, then runs it through P_WriteDuplicateText
In order to avoid making p_setup.c dependent on `deh_tables.h`, object type 1202 simply artifically produces the expected range of MT_ROCKCRUMBLE1 to MT_ROCKCRUMBLE16. It was technically possible to produce unexpected effects with extremely high offsets, but if your map was doing something like that, you're intelligent enough to go back and swap the MT_ constant out with your intended goal.
The linedef's behaviour was broken horribly by long map names, and it's not worth the effort to fix it for the following reasons.
- It was considered a security vulnerability to have free access to the console when it was written.
- The game literally had a cvar to disable running console scripts. That's "I am willingly distributing ActiveX Word Documents in 2023" levels of foolhardery.
- Anything GOOD it can do, both Lua and ACS can do better.
UDMF now has a native ring drainer effect.
Also fixes the WriteTextmap warning for the deprecated sector effect, which should have been encouraging you to use this action, not action 462!?
- The function is back to producing zone-allocated memory copies, like its precursor V_WordWrap
- The author of this commit got rid of that dependency originally because it seemed like a fair part of the API, and meant static buffers could be used in certain circumstances, but it was necessary to revert for the following change.
- Newlines can now be inserted mid-word, treating the width provided as ironclad except in the case of single characters wider than the region.
- This will be necessary for future work with the in-game chat.
- Reserves 8 characters at first, then Z_Reallocs double that every time it runs out.
Moves WordWrap to the font/V_GetFontSpecification system.
Much healthier long-term for our purposes, including the possibility of changing fonts for various contexts freely.