mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-01-08 07:52:50 +00:00
Give Battle mode item spawners their own RNG class
PR_ITEM_ROULETTE is explicitly meant only for K_FillItemRouletteData, and nothing else is ever meant to use it. May possibly be the cause of the dedicated overtime desync, but I am not convinced it is.
This commit is contained in:
parent
1e502da748
commit
9c2144c340
4 changed files with 19 additions and 17 deletions
|
|
@ -267,7 +267,7 @@ mobj_t *K_SpawnChaosEmerald(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT
|
|||
mobj_t *overlay;
|
||||
|
||||
P_Thrust(emerald,
|
||||
FixedAngle(P_RandomFixed(PR_ITEM_ROULETTE) * 180) + angle,
|
||||
FixedAngle(P_RandomFixed(PR_ITEM_SPAWNER) * 180) + angle,
|
||||
36 * mapobjectscale);
|
||||
|
||||
emerald->momz = flip * 36 * mapobjectscale;
|
||||
|
|
@ -317,8 +317,8 @@ mobj_t *K_SpawnSphereBox(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8 f
|
|||
|
||||
drop->angle = angle;
|
||||
P_Thrust(drop,
|
||||
FixedAngle(P_RandomFixed(PR_ITEM_ROULETTE) * 180) + angle,
|
||||
P_RandomRange(PR_ITEM_ROULETTE, 4, 12) * mapobjectscale);
|
||||
FixedAngle(P_RandomFixed(PR_ITEM_SPAWNER) * 180) + angle,
|
||||
P_RandomRange(PR_ITEM_SPAWNER, 4, 12) * mapobjectscale);
|
||||
|
||||
drop->momz = flip * 12 * mapobjectscale;
|
||||
if (drop->eflags & MFE_UNDERWATER)
|
||||
|
|
@ -480,7 +480,7 @@ void K_RunPaperItemSpawners(void)
|
|||
{
|
||||
K_SpawnChaosEmerald(
|
||||
battleovertime.x, battleovertime.y, battleovertime.z + (128 * mapobjectscale * flip),
|
||||
FixedAngle(P_RandomRange(PR_ITEM_ROULETTE, 0, 359) * FRACUNIT), flip,
|
||||
FixedAngle(P_RandomRange(PR_ITEM_SPAWNER, 0, 359) * FRACUNIT), flip,
|
||||
firstUnspawnedEmerald
|
||||
);
|
||||
}
|
||||
|
|
@ -488,7 +488,7 @@ void K_RunPaperItemSpawners(void)
|
|||
{
|
||||
K_FlingPaperItem(
|
||||
battleovertime.x, battleovertime.y, battleovertime.z + (128 * mapobjectscale * flip),
|
||||
FixedAngle(P_RandomRange(PR_ITEM_ROULETTE, 0, 359) * FRACUNIT), flip,
|
||||
FixedAngle(P_RandomRange(PR_ITEM_SPAWNER, 0, 359) * FRACUNIT), flip,
|
||||
0, 0
|
||||
);
|
||||
|
||||
|
|
@ -496,7 +496,7 @@ void K_RunPaperItemSpawners(void)
|
|||
{
|
||||
K_SpawnSphereBox(
|
||||
battleovertime.x, battleovertime.y, battleovertime.z + (128 * mapobjectscale * flip),
|
||||
FixedAngle(P_RandomRange(PR_ITEM_ROULETTE, 0, 359) * FRACUNIT), flip,
|
||||
FixedAngle(P_RandomRange(PR_ITEM_SPAWNER, 0, 359) * FRACUNIT), flip,
|
||||
10
|
||||
);
|
||||
}
|
||||
|
|
@ -570,7 +570,7 @@ void K_RunPaperItemSpawners(void)
|
|||
// Large = 16 + 1 = 17 / 2 = 8
|
||||
if (spotAvailable > 0 && monitorsSpawned < (mapheaderinfo[gamemap - 1]->playerLimit + 1) / 2)
|
||||
{
|
||||
const UINT8 r = spotMap[P_RandomKey(PR_ITEM_ROULETTE, spotAvailable)];
|
||||
const UINT8 r = spotMap[P_RandomKey(PR_ITEM_SPAWNER, spotAvailable)];
|
||||
|
||||
Obj_ItemSpotAssignMonitor(spotList[r], Obj_SpawnMonitor(
|
||||
spotList[r], 3, firstUnspawnedEmerald));
|
||||
|
|
@ -603,7 +603,7 @@ void K_RunPaperItemSpawners(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
key = P_RandomKey(PR_ITEM_ROULETTE, spotCount);
|
||||
key = P_RandomKey(PR_ITEM_SPAWNER, spotCount);
|
||||
}
|
||||
|
||||
r = spotMap[key];
|
||||
|
|
@ -614,7 +614,7 @@ void K_RunPaperItemSpawners(void)
|
|||
|
||||
drop = K_SpawnSphereBox(
|
||||
spotList[r]->x, spotList[r]->y, spotList[r]->z + (128 * mapobjectscale * flip),
|
||||
FixedAngle(P_RandomRange(PR_ITEM_ROULETTE, 0, 359) * FRACUNIT), flip,
|
||||
FixedAngle(P_RandomRange(PR_ITEM_SPAWNER, 0, 359) * FRACUNIT), flip,
|
||||
10
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -7430,7 +7430,7 @@ SINT8 K_GetTotallyRandomResult(UINT8 useodds)
|
|||
|
||||
if (totalspawnchance > 0)
|
||||
{
|
||||
totalspawnchance = P_RandomKey(PR_ITEM_ROULETTE, totalspawnchance);
|
||||
totalspawnchance = P_RandomKey(PR_ITEM_SPAWNER, totalspawnchance);
|
||||
for (i = 0; i < NUMKARTRESULTS && spawnchance[i] <= totalspawnchance; i++);
|
||||
}
|
||||
else
|
||||
|
|
@ -7520,7 +7520,7 @@ mobj_t *K_FlingPaperItem(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8 f
|
|||
mobj_t *drop = K_CreatePaperItem(x, y, z, angle, flip, type, amount);
|
||||
|
||||
P_Thrust(drop,
|
||||
FixedAngle(P_RandomFixed(PR_ITEM_ROULETTE) * 180) + angle,
|
||||
FixedAngle(P_RandomFixed(PR_ITEM_SPAWNER) * 180) + angle,
|
||||
16*mapobjectscale);
|
||||
|
||||
drop->momz = flip * 3 * mapobjectscale;
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ typedef enum
|
|||
|
||||
PR_MUSICSELECT, // Randomized music selection
|
||||
|
||||
PR_ITEM_ROULETTE, // Item results
|
||||
PR_ITEM_ROULETTE, // Item results. Overwritten constantly by K_FillItemRouletteData, not meant for typical use.
|
||||
PR_ITEM_RINGS, // Flung ring/bumper/player (on death)
|
||||
PR_ITEM_SHRINK, // Shrink gun offsets
|
||||
PR_ITEM_BUBBLE, // Item bubbles
|
||||
|
|
@ -87,6 +87,8 @@ typedef enum
|
|||
|
||||
PR_FROSTTHROWERS,
|
||||
|
||||
PR_ITEM_SPAWNER, // Battle mode item spawners
|
||||
|
||||
PRNUMSYNCED,
|
||||
|
||||
PR_INTERPHUDRANDOM = PRNUMSYNCED, // Interpolation-accomodating HUD randomisation
|
||||
|
|
|
|||
10
src/p_mobj.c
10
src/p_mobj.c
|
|
@ -10985,15 +10985,15 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
|
|||
{
|
||||
// set default item & count
|
||||
#if 0 // set to 1 to test capsules with random items, e.g. with objectplace
|
||||
if (P_RandomChance(PR_ITEM_ROULETTE, FRACUNIT/3))
|
||||
if (P_RandomChance(PR_ITEM_SPAWNER, FRACUNIT/3))
|
||||
mobj->threshold = KITEM_SUPERRING;
|
||||
else if (P_RandomChance(PR_ITEM_ROULETTE, FRACUNIT/3))
|
||||
else if (P_RandomChance(PR_ITEM_SPAWNER, FRACUNIT/3))
|
||||
mobj->threshold = KITEM_SPB;
|
||||
else if (P_RandomChance(PR_ITEM_ROULETTE, FRACUNIT/3))
|
||||
else if (P_RandomChance(PR_ITEM_SPAWNER, FRACUNIT/3))
|
||||
mobj->threshold = KITEM_ORBINAUT;
|
||||
else
|
||||
mobj->threshold = P_RandomRange(PR_ITEM_ROULETTE, 1, NUMKARTITEMS - 1);
|
||||
mobj->movecount = P_RandomChance(PR_ITEM_ROULETTE, FRACUNIT/3) ? 1 : P_RandomKey(PR_ITEM_ROULETTE, 32) + 1;
|
||||
mobj->threshold = P_RandomRange(PR_ITEM_SPAWNER, 1, NUMKARTITEMS - 1);
|
||||
mobj->movecount = P_RandomChance(PR_ITEM_SPAWNER, FRACUNIT/3) ? 1 : P_RandomKey(PR_ITEM_SPAWNER, 32) + 1;
|
||||
#else
|
||||
mobj->threshold = KITEM_SUPERRING; // default item is super ring
|
||||
mobj->movecount = 1;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue