Flickies

From SRB2 Wiki
Jump to navigation Jump to search
"Penguin" redirects here. For the penguin-like enemy, see Penguinator.


This article or section is incomplete. It doesn't have all of the necessary core information on this topic. Please help the SRB2 Wiki by finishing this article.
Sonic in the company of a bluebird and a chipmunk.

Flickies are miniature animals trapped by Dr. Eggman and used as power sources for his badniks. In SRB2, they are special types of Objects that are released when the player destroys an enemy, presses the button on an Egg Capsule, or destroys an Ideya Capture in a NiGHTS level. After being released, flickies will follow the player around for a while before disappearing. They can also be directly placed on a map for decoration purposes.

Releasing flickies

The type of flicky released from an enemy in a map is chosen at random from a predefined list in the FlickyList parameter of that map's level header. For instance, in a map whose level header contains FlickyList = Rabbit,Chicken,Seal, only rabbits, chickens and seals will spawn from enemies.

FlickyList = All will pick from the full list of available flickies, while FlickyList = None will make enemies not release any flickies upon death. FlickyList = Demo will use the same roster of flickies from previous versions of SRB2, updated with their new sprites; not specifying this parameter will use this setting by default. Custom flickies can also be spawned by including the flicky's object name constant in FlickyList as well: FlickyList = Rat,MT_CUSTOMFLICKY would have both rats and a flicky of type MT_CUSTOMFLICKY spawn in the map.

It is also possible to place flickies directly into a map via a designated Thing. As of v2.2, there are 18 different flicky types available in SRB2.

Bluebird Rabbit Chicken Seal Pig Chipmunk Penguin Fish Ram
Thing type 2200 Thing type 2201 Thing type 2202 Thing type 2203 Thing type 2204 Thing type 2205 Thing type 2206 Thing type 2207 Thing type 2208
Puffin Cow Rat Bear Dove Cat Canary Spider Bat
Thing type 2209 Thing type 2210 Thing type 2211 Thing type 2212 Thing type 2213 Thing type 2214 Thing type 2215 Thing type 2216 Thing type 2217

Additionally, fish are currently the only flicky type that can come in different colors. For this effect, it's necessary to include Fish in the FlickyList parameter as many times as different color varieties are needed: e.g. FlickyList = Fish,Fish,Seal will yield two different colors of fish as well as seals.

Finally, like the enemies in Mario mode levels, enemies that don't have S_XPLD_FLICKY as their DeathState or don't call the A_FlickySpawn action directly will not spawn any flickies regardless of this parameter.

Behavior

Most of flicky behavior is controlled by the SOC actions they use. For movement, the flickies in unmodified SRB2 call one or more of the following in different combinations, durations and values.

  • A_FlickyAim: A basic aiming action that will point the flicky towards the general direction of its target.
  • A_FlickyHop: Used by most ground flickies for basic hopping behavior.
  • A_FlickyFly: Used by the Bluebird, the Canary and the Bat to simulate flying above land, and by the Seal, the Penguin and the Fish for their swimming.
  • A_FlickySoar: Used by the Puffin and the Dove for their wave-like flying pattern.
  • A_FlickyCoast: Used by the Seal, the Penguin and the Fish underwater to slow themselves down and simulate coasting.
  • A_FlickyFlounder: Used by the Fish's flapping for whenever it's out of water, but also for the Cat's and the Spider's erratic hopping.
  • A_FlickyFlutter: Used exclusively by the Chicken to create its fluttering behavior after it hops.

Flickies are often species of animals that aren't usually found underwater; when inside a water body, they'll be automatically be encased in an air bubble. For this to apply, their RaiseState must be set to the state of the bubble sprite to use, which for unmodified SRB2 is S_FLICKY_BUBBLE. Exceptions to this are the Seal, the Penguin and the Fish, which are the only hybrid flickies in the roster and notably don't have a RaiseState defined for that reason.

By default, a flicky placed directly on a map will use its spawn point as their "home"; it will roam around this spot within a radius of 384 fracunits, a default value that can be overriden by the spawn point's Angle value. If a player comes into this radius, the flicky will start following them around until the player backs off, at which the flicky will return to its home. This is handled by the A_FlickyCenter action, which is called every 15 frames; any custom flicky meant to be spawned by a Thing must have its spawn point call it continuously to maintain that behavior. Adding the Extra flag to a flicky's spawn point will override its player-following behavior and let it move aimlessly around the map: the Angle value determines how far it can move from its home in fracunits, with an Angle value of 0 meaning unrestricted movement. Adding the Special flag will lock the flicky in its spawn point in suspended gravity and force it into its SeeState. Adding the Ambush flag on top of it will allow the flicky to hop in place. In this case, the Angle value will determine the actual angle the Flicky will be facing in the map.

Most importantly, flickies will need either the A_FlickyCheck or the A_FlickyHeightCheck actions to work properly; in player-following flickies, they handle specific animation checks for when flickies are falling/touching the ground or sinking below the target they're supposed to follow, for land flickies and flying/swimming flickies respectively. In case of the latter, they also force the Seal, the Penguin and the Fish to display their swimming animation when underwater by forcing them into their MeleeState, which can be replicated for any custom flicky with both land and underwater behavior. For stationary flickies, these two actions are what ensures flickies adopt the stationary behavior, so for any case it's crucial that one of them is included somewhere in the loop.

Object/state data

To do
Detail each flicky's object properties and states with the appropriate templates.


  Object types [view]
General EnemyBossPushableSpringMonitorNiGHTS power-upProjectileAmbient sound effect
Special PlayerShieldsFlickiesOverlay
Related links List of Object types