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.
A much more focused replacement for Hornmod, specc'd out by Tyron and Oni working together and implemented by the author of this commit because it's pretty funny.
- Followers have `hornsound` in their SOC configuration.
- The default sound for all followers without a provided one is sfx_horn00.
- They'll play this sound if you use lookback with one following you, and there's nearby players to get the player looking all the way around.
- Only the players who are successfully considered for lookback will hear it.
- Has a v1-like visual with less randomisation, but still netsynced.
- Also controlled by the cvar `taunthorns`, which, like `tauntvoices`, takes "Tasteful" (default), "Meme", and "Off".
TODO: make the condition for horn a little delayed, so you have to hold lookback for a little bit.
- Only calls callback if you're the server (and not demo.playback, forward thinking for stored xcmd netreplays)
- G_GamestateUsesExitLevel() for homogenising the conditions that permit XD_EXITLEVEL to be dispatched and recieved
- SendNameAndColor was completely out of order for some reason
- SendNameAndColor was sending cvar value instead of the send value. The value for sending. The value chosen specifically for sending, the send value.
- Color_OnChange was just broken in the SKINCOLOR_NONE case
- Re-saved every time you lose a life, to prevent scumming
- Force-deletion of your backup has changed
- Don't when saying NO to the GP Backup load prompt
- Don't when returning to titlescreen under non-DEVELOP
- DO when starting a new Grand Prix session of any cup
- Now called "Grand Prix Backup"
- Filename is now `gpringsav.bkp`
- Since available in standard contexts, do a little extra guarding against unsporting behaviour:
- In non-DEVELOP builds, delete Grand Prix Backup when returning to the titlescreen/menus.
- "undo your extra work and make it more generic" - Tyron
Cvar was previously "eggmanmonitor" inherited from a completely different implementation of the item
Menu was previously "Eggman Mark", which was good inspiration but too unwieldy
Has been blended together per Gardentop and VC discussion
Immense 25-file diff, so spun off into its own branch.
- Improved appearance
- Not just a big block of text on a blue background
- Well, OK, the main part is, but some stuff has been spun out into its own fields
- Title text
- Text and button prompt for Yes/No or OK
- Slides with pow on and off the screen
- Disabled MM_EVENTHANDLER, which has always been dog but got considerably worse after newmenus to the point nothing's using it anymore
- Required in order to reduce the reliance on FUNCPTRCAST, which prevents Eidolon from compiling some stuff because it's not valid C++
- Use easing functions for the rubberbanding values themselves, for more fine-control over the end-points and the curves.
- Fixed K_UpdateRubberband being broken from using shift instead of divide.
- Rename `debugbotpredict` to `debugbots`, it now displays some of the bots' botvars values as well. If the player isn't a bot, it will show them from the first place bot (for inspecting the rubberband value).
- Bot turning buff was increased, from x1.25 to x2.0. Noticed that Tails bots were failing turns on Popcorn Workshop. I personally think that Tails bots shouldn't be failing very many turns unless if they're finding objects, and constant wall-bumping should be reserved for Eggman and Metal :P
- Can be used to clear all entries in the round queue
- Stores the special state in the gametype field
- Returns a message if the queue is already empty
- "QueueStart"
- Activates just before RoundStart, but only if a roundqueue is being started
- "QueueEnd"
- Activates just before IntermissionStart, but only if the roundqueue has just finished its final map
I chose before in both instances because Automate_Run runs off COM_BufAddText, and I don't completely trust that the buffer won't overflow for particularly complicated server commands, so prioritising the rarer event. However, this is open for discussion
- Increments a timer on human players who aren't making progress, does it even faster if they're going backwards.
- Only applies in:
- Netgames
- GTR_CIRCUIT after the timer starts
- If there's no timelimit, pointlimit, or K_Cooperative (because unproductive behaviour there will be punished by other rules)
- The rate at which this changes needs trial and error, but getting the feature functional is more important to start out with.
- If this timer reaches cv_antigrief's value in seconds , the player gets a "Grief Strike"
- This doesn't happen if:
- There's only one active player in the server, so FREE PLAY permits mappers to test what increments/decrements the counter
- Turn `debugwaypoints` on to observe this
- The cvar is set to 0
- Less than 3 grief strikes is a forced spectate
- Anything more is a kick via "automatic grief detection"
- Unless your node is the host (or an admin)
- Remove grief strike strike for finishing normally
# Conflicts:
# src/d_clisrv.h
- On becoming a spectator in a netgame, there is a delay before you can de-spectate.
- 30 seconds by default.
- This can be changed using the cvar `spectatorreentry`.
- ...unless there's only two people left including you, in which case it's three minutes!!
- This can be changed using the cvar `duelspectatorreentry`.
- If spectatorreentry is set to greater than duelspectatorrentry, the former is used instead.
- This timer is wiped on mapload and intermission, so NEW CHALLENGER APPROACHING !! and level changes in general allow people in.
- General purpose cleanup of K_CheckSpectateStatus
- Used Admin status of sender rather than local player to obstruct or hide
- Servers are not admins, they just sidestep many authoriative checks
- Server returned early before any chance of printing
- Slightly cleaner message