- Spawned from underneath the UFO and is thrusted downwards
- Is spawned as splats instead of papersprites
- Colorized to sapphire
- Despawns on any ground contact
- MT_BATTLEUFO_SPAWNER args[0] is the ID
- Spawn a random UFO from the list spawner at the start of
Battle
- UFO spawns 200 units above the spawner
- After destroyig a UFO, wait 25 seconds before spawning
the next UFO (next ID in the list)
- Spawns on player when they use their first power-up
- Lasts as long as player has any power-up
- A hexagon of animated, additive, fullbright papersprites
surround and move with the player, takes player's angle
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'.
- If follower audience member has a certain flag, the bob/jump height is forced to zero
- UDMF: args[2] & 2
- Binary: The "Extra" flag
- If a follower audience member (or MT_EMBLEM with GE_FOLLOWER) has a bob/jump height of 0, use the idlestate instead of the movement state
- 3 splats spawn before the instawhip cooldown runs out
- Splats angle steeply outward in a triangle formation
- VFX is animated, animation runs out right when instawhip
cooldown completely runs out
- Gachabom hits an object and is destroyed immediately
(does not bounce off like Orbinauts or Jawz).
- Gachabom explosion spawns in its place.
- (New) Gachabom physically returns to the player who
threw it.
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.