mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
- Item count has always scaled up with player count. Items spawn every N tics. Previously, these items were evenly distributed across all item spots. Now, only one monitor is spawned at a time and the number of items inside scales up. - Emeralds spawn inside of monitors instead of loosely. - Sphere boxes should spawn in the same way as before. - Once a monitor has been spawned at an item spot, no more monitors can be spawned there until that one is destroyed. There's an additional delay of one spawn interval before a monitor can be spawned in that location again. This is so a monitor cannot ever instantly spawn back if one is destroyed at just the right time.
96 lines
3.1 KiB
C
96 lines
3.1 KiB
C
/* object-specific code */
|
|
#ifndef k_objects_H
|
|
#define k_objects_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Hyudoro */
|
|
void Obj_InitHyudoroCenter(mobj_t *center, mobj_t *master);
|
|
void Obj_HyudoroDeploy(mobj_t *master);
|
|
void Obj_HyudoroThink(mobj_t *actor);
|
|
void Obj_HyudoroCenterThink(mobj_t *actor);
|
|
void Obj_HyudoroCollide(mobj_t *special, mobj_t *toucher);
|
|
|
|
/* Garden Top */
|
|
void Obj_GardenTopDeploy(mobj_t *rider);
|
|
mobj_t *Obj_GardenTopThrow(player_t *player);
|
|
mobj_t *Obj_GardenTopDestroy(player_t *player);
|
|
void Obj_GardenTopThink(mobj_t *top);
|
|
void Obj_GardenTopSparkThink(mobj_t *spark);
|
|
boolean Obj_GardenTopPlayerIsGrinding(player_t *player);
|
|
|
|
/* Shrink */
|
|
void Obj_PohbeeThinker(mobj_t *pohbee);
|
|
void Obj_PohbeeRemoved(mobj_t *pohbee);
|
|
void Obj_ShrinkGunRemoved(mobj_t *gun);
|
|
boolean Obj_ShrinkLaserCollide(mobj_t *gun, mobj_t *victim);
|
|
void Obj_CreateShrinkPohbees(player_t *owner);
|
|
|
|
/* Item Debris */
|
|
void Obj_SpawnItemDebrisEffects(mobj_t *collectible, mobj_t *collector);
|
|
void Obj_ItemDebrisThink(mobj_t *debris);
|
|
fixed_t Obj_ItemDebrisBounce(mobj_t *debris, fixed_t momz);
|
|
|
|
/* SPB */
|
|
void Obj_SPBThink(mobj_t *spb);
|
|
void Obj_SPBExplode(mobj_t *spb);
|
|
void Obj_SPBTouch(mobj_t *spb, mobj_t *toucher);
|
|
|
|
/* SPB Juicebox Rings */
|
|
void Obj_MantaRingThink(mobj_t *manta);
|
|
mobj_t *Obj_MantaRingCreate(mobj_t *spb, mobj_t *owner, mobj_t *chase);
|
|
|
|
/* Orbinaut */
|
|
void Obj_OrbinautThink(mobj_t *th);
|
|
boolean Obj_OrbinautJawzCollide(mobj_t *t1, mobj_t *t2);
|
|
void Obj_OrbinautThrown(mobj_t *th, fixed_t finalSpeed, SINT8 dir);
|
|
void Obj_OrbinautJawzMoveHeld(player_t *player);
|
|
|
|
/* Jawz */
|
|
void Obj_JawzThink(mobj_t *th);
|
|
void Obj_JawzThrown(mobj_t *th, fixed_t finalSpeed, SINT8 dir);
|
|
|
|
/* Duel Bomb */
|
|
void Obj_DuelBombThink(mobj_t *bomb);
|
|
void Obj_DuelBombReverse(mobj_t *bomb);
|
|
void Obj_DuelBombTouch(mobj_t *bomb, mobj_t *toucher);
|
|
void Obj_DuelBombInit(mobj_t *bomb);
|
|
|
|
/* Broly Ki */
|
|
mobj_t *Obj_SpawnBrolyKi(mobj_t *source, tic_t duration);
|
|
boolean Obj_BrolyKiThink(mobj_t *ki);
|
|
|
|
/* Special Stage UFO */
|
|
waypoint_t *K_GetSpecialUFOWaypoint(mobj_t *ufo);
|
|
void Obj_SpecialUFOThinker(mobj_t *ufo);
|
|
boolean Obj_SpecialUFODamage(mobj_t *ufo, mobj_t *inflictor, mobj_t *source, UINT8 damageType);
|
|
void Obj_PlayerUFOCollide(mobj_t *ufo, mobj_t *other);
|
|
void Obj_UFOPieceThink(mobj_t *piece);
|
|
void Obj_UFOPieceDead(mobj_t *piece);
|
|
void Obj_UFOPieceRemoved(mobj_t *piece);
|
|
mobj_t *Obj_CreateSpecialUFO(void);
|
|
UINT32 K_GetSpecialUFODistance(void);
|
|
|
|
/* Monitors */
|
|
mobj_t *Obj_SpawnMonitor(mobj_t *origin, UINT8 numItemTypes, UINT8 emerald);
|
|
void Obj_MonitorSpawnParts(mobj_t *monitor);
|
|
void Obj_MonitorPartThink(mobj_t *part);
|
|
fixed_t Obj_MonitorGetDamage(mobj_t *monitor, mobj_t *inflictor, UINT8 damagetype);
|
|
void Obj_MonitorOnDamage(mobj_t *monitor, mobj_t *inflictor, INT32 damage);
|
|
void Obj_MonitorOnDeath(mobj_t *monitor);
|
|
void Obj_MonitorShardThink(mobj_t *shard);
|
|
UINT32 Obj_MonitorGetEmerald(const mobj_t *monitor);
|
|
void Obj_MonitorSetItemSpot(mobj_t *monitor, mobj_t *spot);
|
|
|
|
/* Item Spot */
|
|
boolean Obj_ItemSpotIsAvailable(const mobj_t *spot);
|
|
void Obj_ItemSpotAssignMonitor(mobj_t *spot, mobj_t *monitor);
|
|
void Obj_ItemSpotUpdate(mobj_t *spot);
|
|
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
#endif
|
|
|
|
#endif/*k_objects_H*/
|