Too much shit to explain, read the diff (you should anyway!)
Very sloppy, expect lots of fixes
TODO: SOC it all, separate "active odds" table, how to handle alt items
Struct implementation of an item's odds and relevant functions:
* Stored in an unordered map for non-static item allocation; you can theoretically have millions of items in the game now
* All item odds are dynamic C++ vectors that are loaded in a per-gametype basis.
* Extremely boilerplate; any and every system in place can be used by any and every item
Bot logic is now handled exclusively by the server, now in the actual game
loop code, rather than during ticcmd generation. No TICCMD_BOT needed!
botdata_t has been added to store any variables that clients don't need.
Behavior differences:
* Brakedrifting actually works now... to the detriment of the bots
* Respawn triggers 1 second sooner (and actually causes braking)
* No longer spams respawn when a track lacks waypoints
* Turning might be less responsive?
`botvars.turnconfirm += cmd.bot.turnconfirm` is gone... who knows
* No longer affected by timescale
Plus, no more outdated or copy-pasted comment blocks!
* All those fugly main loop copies are GONE! Replaced by one powerful loop
* Chat, menus and console can now be used during wipes
* Wipes are now interpolation-enabled
* Screenshotting now works consistently
This reverts commit f72475b557, reversing
changes made to 0c89c85aae.
Sorry Generic this branch is really cool but it needs more work. I shouldn't have merged it too early...
Instead of the absolute insanity that is V_DrawCroppedPatch, which makes you specify the number of pixels to crop off the top/left and then the number of pixels to show after the crop ... you just use V_SetClipRect to create a rectangle for any future draws to be cropped down to, and V_ClearClipRect afterwards to clear it.
Currently only supported by V_DrawStretchyFixedPatch. Ideally other drawing functions should also receive clipping rectangle support too.
Return a `minigen_t` struct with explicit width and height instead of extending the UINT8 buffer by 2 to provide that information in a very datatype-limited way.
Lines, sides, sectors, and things now all support the "Custom" tab properly. Label a property as `user_[whatever you want]` in this tab, and it will be added to the structure. ACS will then be able to retrieve it using the `Get[x]UserProperty()` function.
This caused some scary issues with P_SaveNetGame the other day, and it's making ACS net sync harder. Let's just cut this off right now.
Also fixed some scary mix-ups in some of the Lua archiving code.