- Dropped power-ups become paper items (overloaded to
store power-ups instead of items).
- The dropped power-up stores its remaining duration.
- The power-up can be picked up during any state.
- If you already have the same kind of power-up, the
duration is simply extended.
Thinkers and most collision.
- 4 Super Flickys deploy from above the owner player, in
a radius.
- Radius shrinks as Flickys descend.
- Flickys orbit their owner until coming within range of
another player.
- The entire group of Flickys attack another player at
once, with some delay between each.
- Flickys accelerate toward their target, constantly
building speed.
- When a Flicky is both within a short radius of its
target and the angle of momentum is narrowed toward the
target, the Flicky will sharply accelerate to impale the
target.
- When a Flicky is both outside of a long radius of its
target and the angle of momentum is facing away from the
target, the Flicky's momentum will be drastically cut in
order to make it easier for the Flicky to turn around.
- After one of the Flickys in the group hits its target,
all but one of the group is free to hunt a different
target.
- A new target is chosen from a radius around the current
target.
- Flickys can only target players who are not respawning
and who have not already been attacked by another
Flicky.
- Super Flickys can be blocked by a Guard. The Super
Flicky shall have all its momentum reflected (strong
knockback).
- Super Flickys can be insta-whipped. This shall have the
same effect as a Guard, with the additional effect of
knocking the 'Super' out of the Super Flicky.
- Non-Super Flickys are knocked back with gravity. After
bouncing off the ground once, it regains flight and will
continue to chase its target. However, it cannot damage
the target. After 5 seconds, the Flicky regains Super
state.
- The Flicky power-up is on a timer. After the timer
expires, Flickys lose Super state and ascend back into
the air (reverse of their initial descent).
- If the Super Flicky is not orbiting its target when it
ascends, it retains all horizontal momentum during the
ascent, 'flying off into the distance'.
Map things are writeable in Lua, which I am pretty certain is a mistake because mapthings are not sent over the network at all. I considered making them net-synced (it would be relatively easy), but it also aligns with another, more "philosophical" issue: Doom generally copies over properties from mapthing_t into mobj_t, and then only refers to it again when needing to respawn an object -- mapthing_t is not really intended to be referred to very often at runtime. At best it's slightly annoying since some objects rely on a spawnpoint for behavior changes, at worst it may make ACS more confusing in the future since Thing and Mobj tags are mixed together or less useful since they wouldn't be able to modify behaviors of objects that are based on args.
So I decided to solve these two issues at the same time; just treat mapthing_t as something to copy values from, like OG Doom does it. This basically just means that special and args are also part of the mobj now instead of the mapthing, which should fill any desire to edit this stuff from Lua, and reduces the number of instances where objects need to check for their spawnpoint to function properly.
- Add flag application in function signature
- Consistent gating of extra PF_NOCONTEST application behind not already exiting
- This should fix dying after winning in K_Cooperative gametypes breaking things
- P_DoAllPlayersExit
- Consistent condition of playeringame, spectator, exiting, etc checks
- Also could force-give a life (for Battle Prisons)
- Quake epicenter + radius now work.
- Since quake epicenter works, removed the display player check on all of the quakes, so other players can feel them.
- Multiple quake effects are stored in a linked list and dynamically created/freed, so they can stack together.
- Made in china
- Made the quake effects only work on the z axis.
- Quakes now alternate their intensity and dampen it over time, instead of randomly picking values.
- Added quake effects for offroad and stair-jank
- Disabled quakes in reducevfx
- Removed actionmovie and windowquake (sorry jartha)
- Split out from K_DropHnextList to make its handling more explicit, and to permit K_DropItems scenarioes to *not* drop shields.
- Always called on P_DamageMobj on any non DMG_STUMBLE damagetype, so shields always get digested on true pain.
- Todo: Should shields be popped even on DMG_STING..?
- NOT called on Eggman Mark pickup.
- Add to Lua (alongside K_DropHnextList, which was inexplicably missing).
- MT_CDUFO is now a valid type of Prison in Prison Break
- Tracked on counter
- Tracked on HUD
- Tracked on minimap
- P_AddBrokenPrison in p_inter.c
- Generalises behaviour on breaking a Prison Break object
- MT_CDUFO polish
- Can now be broken with all damaging objects EXCEPT Shield Orbinaut/Shield Jawz
- These two are exceptions to prevent them from denying you your on-contact item grab., which these will still give you if you touch them
- Breaking the object by touching it now causes hitlag instead of fireworks
- The fireworks were to make touching it feel good... but hitlag feels better :P
- Now supports mapobjectscale directly.
- Scaled 1.5x mapobjectscale
- Hitbox now far closer to actual sprite (which was just replaced, but was inexplicably far away from the old one too)