- There's a freeze cheat bool to freeze everything except for players.
- There's a level freeze bool to freeze literally everything.
- There's a frozen bool on mobj_t to explicitly control freeze status on an object.
- Add checkpointId to player_t and netsave
- checkpointId persists if the map is reloaded, but not if
the map is changed or if "resetplayers" is ticked
- Players spawn at the last touched checkpoint instead of
at a player start
- Tether sparkles fly out of the player in a circle
This commit handles everything except actually respawning
the player at a checkpoint.
- Checkpoints are formed by two checkpoint things (2030):
- thingarg0 - The ID for the checkpoint. Must be the
same for these two things, and these two
things only. ID cannot be 0.
- angle - The direction the player is intended to face
after respawning. Must be the same for both
things.
- Each checkpoint thing is a starpost with a stick and an
orb at the end.
- By default, the sticks are lowered to horizontal and
face toward the opposite starpost.
- Rainbow tether sparkles form a field between the two
starposts.
- When a player crosses between these two starposts, each
spins in the direction that the player crossed. The
sparkles also fly out in that direction.
- Over time the sticks pivot upward.
- When the starposts are done spinning, the sticks will be
pointing straight upward.
- Orb at the end of the stick begins flashing when the
starpost is done spinnning.
- Players may cross multiple checkpoints.
- When this happens, any previously activated checkpoint
will have its stick lowered back to horizontal, and its
orb will stop flashing.
This indirectly fixes a bug with Rocket Sneakers:
- Give yourself Rocket Sneakers, use them up completely.
- Instantly give yourself and deploy Orbinauts (may want
to use a bind for this, since it has to be quick).
- Wait a moment for the exploded Rocket Sneakers to fall
to the ground. When this happens, the Orbinauts will
stop following the player -- they will enter a buggy
state.
So many items uses hnext/hprev, that I decided to make
a general fix that probably covers most bugs that could
arise from poor handling of hnext/hprev.
- If netgame or no Spray Can has been grabbed on this map, return 0
- If all Spray Cans have been grabbed in other maps, return "_Completed"
- Otherwise, return the name for the Spray Can color attached to this map
- Up to 255
- Each Spray Can placed does, in order, the postion in the list from the current head
- So if there were 3 cans, and your can list was Red Yellow Blue Green, then Red, Yellow, and Blue would be in the level.
- Grabbing the nth colour in the list will swap that colour to the current head of the list
- However, the game will print to the console if you do this outside of GS_TUTORIAL.
- Only have a long delay between symbols if the current character is std::ispunct() and the NEXT character is std::isspace
- Add native color code support
- Requires string concatenation to actually use it, though, which I don't know how to do in ACS