diff --git a/src/g_game.c b/src/g_game.c index 03a3c08fa..54f991e68 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -2546,7 +2546,7 @@ mapthing_t *G_FindTeamStart(INT32 playernum) return NULL; } - if ((!players[playernum].ctfteam && numredctfstarts && (!numbluectfstarts || P_RandomChance(PR_UNDEFINED, FRACUNIT/2))) || players[playernum].ctfteam == 1) //red + if ((!players[playernum].ctfteam && numredctfstarts && (!numbluectfstarts || P_RandomChance(PR_PLAYERSTARTS, FRACUNIT/2))) || players[playernum].ctfteam == 1) //red { if (!numredctfstarts) { @@ -2557,7 +2557,7 @@ mapthing_t *G_FindTeamStart(INT32 playernum) for (j = 0; j < 32; j++) { - i = P_RandomKey(PR_UNDEFINED, numredctfstarts); + i = P_RandomKey(PR_PLAYERSTARTS, numredctfstarts); if (G_CheckSpot(playernum, redctfstarts[i])) return redctfstarts[i]; } @@ -2577,7 +2577,7 @@ mapthing_t *G_FindTeamStart(INT32 playernum) for (j = 0; j < 32; j++) { - i = P_RandomKey(PR_UNDEFINED, numbluectfstarts); + i = P_RandomKey(PR_PLAYERSTARTS, numbluectfstarts); if (G_CheckSpot(playernum, bluectfstarts[i])) return bluectfstarts[i]; } @@ -2598,7 +2598,7 @@ mapthing_t *G_FindBattleStart(INT32 playernum) { for (j = 0; j < 64; j++) { - i = P_RandomKey(PR_UNDEFINED, numdmstarts); + i = P_RandomKey(PR_PLAYERSTARTS, numdmstarts); if (G_CheckSpot(playernum, deathmatchstarts[i])) return deathmatchstarts[i]; } diff --git a/src/k_battle.c b/src/k_battle.c index ed8c2af3a..15267664c 100644 --- a/src/k_battle.c +++ b/src/k_battle.c @@ -211,7 +211,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_UNDEFINED) * 180) + angle, + FixedAngle(P_RandomFixed(PR_ITEM_ROULETTE) * 180) + angle, 24 * mapobjectscale); emerald->momz = flip * 24 * mapobjectscale; @@ -268,8 +268,8 @@ mobj_t *K_SpawnSphereBox(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8 f P_InitAngle(drop, angle); P_Thrust(drop, - FixedAngle(P_RandomFixed(PR_UNDEFINED) * 180) + angle, - P_RandomRange(PR_UNDEFINED, 4, 12) * mapobjectscale); + FixedAngle(P_RandomFixed(PR_ITEM_ROULETTE) * 180) + angle, + P_RandomRange(PR_ITEM_ROULETTE, 4, 12) * mapobjectscale); drop->momz = flip * 12 * mapobjectscale; if (drop->eflags & MFE_UNDERWATER) @@ -412,7 +412,7 @@ void K_RunPaperItemSpawners(void) { K_SpawnChaosEmerald( battleovertime.x, battleovertime.y, battleovertime.z + (128 * mapobjectscale * flip), - FixedAngle(P_RandomRange(PR_UNDEFINED, 0, 359) * FRACUNIT), flip, + FixedAngle(P_RandomRange(PR_ITEM_ROULETTE, 0, 359) * FRACUNIT), flip, firstUnspawnedEmerald ); } @@ -420,7 +420,7 @@ void K_RunPaperItemSpawners(void) { K_CreatePaperItem( battleovertime.x, battleovertime.y, battleovertime.z + (128 * mapobjectscale * flip), - FixedAngle(P_RandomRange(PR_UNDEFINED, 0, 359) * FRACUNIT), flip, + FixedAngle(P_RandomRange(PR_ITEM_ROULETTE, 0, 359) * FRACUNIT), flip, 0, 0 ); @@ -428,7 +428,7 @@ void K_RunPaperItemSpawners(void) { K_SpawnSphereBox( battleovertime.x, battleovertime.y, battleovertime.z + (128 * mapobjectscale * flip), - FixedAngle(P_RandomRange(PR_UNDEFINED, 0, 359) * FRACUNIT), flip, + FixedAngle(P_RandomRange(PR_ITEM_ROULETTE, 0, 359) * FRACUNIT), flip, 10 ); } @@ -509,7 +509,7 @@ void K_RunPaperItemSpawners(void) } else { - key = P_RandomKey(PR_UNDEFINED, spotCount); + key = P_RandomKey(PR_ITEM_ROULETTE, spotCount); } r = spotMap[key]; @@ -523,7 +523,7 @@ void K_RunPaperItemSpawners(void) { drop = K_SpawnChaosEmerald( spotList[r]->x, spotList[r]->y, spotList[r]->z + (128 * mapobjectscale * flip), - FixedAngle(P_RandomRange(PR_UNDEFINED, 0, 359) * FRACUNIT), flip, + FixedAngle(P_RandomRange(PR_ITEM_ROULETTE, 0, 359) * FRACUNIT), flip, firstUnspawnedEmerald ); } @@ -533,7 +533,7 @@ void K_RunPaperItemSpawners(void) { drop = K_SpawnSphereBox( spotList[r]->x, spotList[r]->y, spotList[r]->z + (128 * mapobjectscale * flip), - FixedAngle(P_RandomRange(PR_UNDEFINED, 0, 359) * FRACUNIT), flip, + FixedAngle(P_RandomRange(PR_ITEM_ROULETTE, 0, 359) * FRACUNIT), flip, 10 ); K_FlipFromObject(drop, spotList[r]); @@ -541,7 +541,7 @@ void K_RunPaperItemSpawners(void) drop = K_CreatePaperItem( spotList[r]->x, spotList[r]->y, spotList[r]->z + (128 * mapobjectscale * flip), - FixedAngle(P_RandomRange(PR_UNDEFINED, 0, 359) * FRACUNIT), flip, + FixedAngle(P_RandomRange(PR_ITEM_ROULETTE, 0, 359) * FRACUNIT), flip, 0, 0 ); } diff --git a/src/k_kart.c b/src/k_kart.c index a4d6c136f..2c7426dec 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1086,7 +1086,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) if (!(gametyperules & GTR_SPHERES) && mashed && player->rings < 0 && cv_superring.value) { INT32 debtamount = min(20, abs(player->rings)); - if (P_RandomChance(PR_UNDEFINED, (debtamount*FRACUNIT)/20)) + if (P_RandomChance(PR_ITEM_ROULETTE, (debtamount*FRACUNIT)/20)) { K_KartGetItemResult(player, KITEM_SUPERRING); player->karthud[khud_itemblink] = TICRATE; @@ -1136,7 +1136,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) // Award the player whatever power is rolled if (totalspawnchance > 0) { - totalspawnchance = P_RandomKey(PR_UNDEFINED, totalspawnchance); + totalspawnchance = P_RandomKey(PR_ITEM_ROULETTE, totalspawnchance); for (i = 0; i < NUMKARTRESULTS && spawnchance[i] <= totalspawnchance; i++); K_KartGetItemResult(player, i); @@ -1720,9 +1720,9 @@ static void K_DrawDraftCombiring(player_t *player, player_t *victim, fixed_t cur { if (offset == 0) { - mobj_t *band = P_SpawnMobj(curx + (P_RandomRange(PR_UNDEFINED, -12, 12)*mapobjectscale), - cury + (P_RandomRange(PR_UNDEFINED, -12, 12)*mapobjectscale), - curz + (P_RandomRange(PR_UNDEFINED, 24, 48)*mapobjectscale), + mobj_t *band = P_SpawnMobj(curx + (P_RandomRange(PR_DECORATION, -12, 12)*mapobjectscale), + cury + (P_RandomRange(PR_DECORATION, -12, 12)*mapobjectscale), + curz + (P_RandomRange(PR_DECORATION, 24, 48)*mapobjectscale), MT_SIGNSPARKLE); if (maxdist == 0) @@ -2191,7 +2191,7 @@ void K_SpawnDriftBoostClip(player_t *player) clip->momz += momz; P_InstaThrust(clip, player->mo->angle + - P_RandomFlip(P_RandomRange(PR_UNDEFINED, FRACUNIT/2, FRACUNIT)), + P_RandomFlip(P_RandomRange(PR_DECORATION, FRACUNIT/2, FRACUNIT)), FixedMul(scale, player->speed)); } @@ -2211,9 +2211,9 @@ void K_SpawnDriftBoostClipSpark(mobj_t *clip) void K_SpawnNormalSpeedLines(player_t *player) { - mobj_t *fast = P_SpawnMobj(player->mo->x + (P_RandomRange(PR_UNDEFINED,-36,36) * player->mo->scale), - player->mo->y + (P_RandomRange(PR_UNDEFINED,-36,36) * player->mo->scale), - player->mo->z + (player->mo->height/2) + (P_RandomRange(PR_UNDEFINED,-20,20) * player->mo->scale), + mobj_t *fast = P_SpawnMobj(player->mo->x + (P_RandomRange(PR_DECORATION,-36,36) * player->mo->scale), + player->mo->y + (P_RandomRange(PR_DECORATION,-36,36) * player->mo->scale), + player->mo->z + (player->mo->height/2) + (P_RandomRange(PR_DECORATION,-20,20) * player->mo->scale), MT_FASTLINE); P_SetTarget(&fast->target, player->mo); @@ -2261,9 +2261,9 @@ void K_SpawnNormalSpeedLines(player_t *player) void K_SpawnInvincibilitySpeedLines(mobj_t *mo) { mobj_t *fast = P_SpawnMobjFromMobj(mo, - P_RandomRange(PR_UNDEFINED, -48, 48) * FRACUNIT, - P_RandomRange(PR_UNDEFINED, -48, 48) * FRACUNIT, - P_RandomRange(PR_UNDEFINED, 0, 64) * FRACUNIT, + P_RandomRange(PR_DECORATION, -48, 48) * FRACUNIT, + P_RandomRange(PR_DECORATION, -48, 48) * FRACUNIT, + P_RandomRange(PR_DECORATION, 0, 64) * FRACUNIT, MT_FASTLINE); P_SetMobjState(fast, S_KARTINVLINES1); @@ -2321,9 +2321,9 @@ static void K_SpawnGrowShrinkParticles(mobj_t *mo, INT32 timer) particle = P_SpawnMobjFromMobj( mo, - P_RandomRange(PR_UNDEFINED, -32, 32) * FRACUNIT, - P_RandomRange(PR_UNDEFINED, -32, 32) * FRACUNIT, - (P_RandomRange(PR_UNDEFINED, 0, 24) + (shrink ? 48 : 0)) * FRACUNIT, + P_RandomRange(PR_DECORATION, -32, 32) * FRACUNIT, + P_RandomRange(PR_DECORATION, -32, 32) * FRACUNIT, + (P_RandomRange(PR_DECORATION, 0, 24) + (shrink ? 48 : 0)) * FRACUNIT, MT_GROW_PARTICLE ); @@ -2849,7 +2849,7 @@ static void K_RegularVoiceTimers(player_t *player) void K_PlayAttackTaunt(mobj_t *source) { - sfxenum_t pick = P_RandomKey(PR_UNDEFINED, 2); // Gotta roll the RNG every time this is called for sync reasons + sfxenum_t pick = P_RandomKey(PR_VOICES, 2); // Gotta roll the RNG every time this is called for sync reasons boolean tasteful = (!source->player || !source->player->karthud[khud_tauntvoices]); if (cv_kartvoices.value && (tasteful || cv_kartvoices.value == 2)) @@ -2863,7 +2863,7 @@ void K_PlayAttackTaunt(mobj_t *source) void K_PlayBoostTaunt(mobj_t *source) { - sfxenum_t pick = P_RandomKey(PR_UNDEFINED, 2); // Gotta roll the RNG every time this is called for sync reasons + sfxenum_t pick = P_RandomKey(PR_VOICES, 2); // Gotta roll the RNG every time this is called for sync reasons boolean tasteful = (!source->player || !source->player->karthud[khud_tauntvoices]); if (cv_kartvoices.value && (tasteful || cv_kartvoices.value == 2)) @@ -2897,7 +2897,7 @@ void K_PlayOvertakeSound(mobj_t *source) void K_PlayPainSound(mobj_t *source, mobj_t *other) { - sfxenum_t pick = P_RandomKey(PR_UNDEFINED, 2); // Gotta roll the RNG every time this is called for sync reasons + sfxenum_t pick = P_RandomKey(PR_VOICES, 2); // Gotta roll the RNG every time this is called for sync reasons sfxenum_t sfx_id = ((skin_t *)source->skin)->soundsid[S_sfx[sfx_khurt1 + pick].skinsound]; boolean alwaysHear = false; @@ -4148,18 +4148,18 @@ void K_SpawnMineExplosion(mobj_t *source, UINT8 color) dust->scalespeed = source->scale/12; P_InstaThrust(dust, dust->angle, FixedMul(20*FRACUNIT, source->scale)); - truc = P_SpawnMobj(source->x + P_RandomRange(PR_UNDEFINED, -radius, radius)*FRACUNIT, - source->y + P_RandomRange(PR_UNDEFINED, -radius, radius)*FRACUNIT, - source->z + P_RandomRange(PR_UNDEFINED, 0, height)*FRACUNIT, MT_BOOMEXPLODE); + truc = P_SpawnMobj(source->x + P_RandomRange(PR_EXPLOSION, -radius, radius)*FRACUNIT, + source->y + P_RandomRange(PR_EXPLOSION, -radius, radius)*FRACUNIT, + source->z + P_RandomRange(PR_EXPLOSION, 0, height)*FRACUNIT, MT_BOOMEXPLODE); K_MatchGenericExtraFlags(truc, source); P_SetScale(truc, source->scale); truc->destscale = source->scale*6; truc->scalespeed = source->scale/12; speed = FixedMul(10*FRACUNIT, source->scale)>>FRACBITS; - truc->momx = P_RandomRange(PR_UNDEFINED, -speed, speed)*FRACUNIT; - truc->momy = P_RandomRange(PR_UNDEFINED, -speed, speed)*FRACUNIT; + truc->momx = P_RandomRange(PR_EXPLOSION, -speed, speed)*FRACUNIT; + truc->momy = P_RandomRange(PR_EXPLOSION, -speed, speed)*FRACUNIT; speed = FixedMul(20*FRACUNIT, source->scale)>>FRACBITS; - truc->momz = P_RandomRange(PR_UNDEFINED, -speed, speed)*FRACUNIT*P_MobjFlip(truc); + truc->momz = P_RandomRange(PR_EXPLOSION, -speed, speed)*FRACUNIT*P_MobjFlip(truc); if (truc->eflags & MFE_UNDERWATER) truc->momz = (117 * truc->momz) / 200; truc->color = color; @@ -4167,30 +4167,30 @@ void K_SpawnMineExplosion(mobj_t *source, UINT8 color) for (i = 0; i < 16; i++) { - dust = P_SpawnMobj(source->x + P_RandomRange(PR_UNDEFINED, -radius, radius)*FRACUNIT, - source->y + P_RandomRange(PR_UNDEFINED, -radius, radius)*FRACUNIT, - source->z + P_RandomRange(PR_UNDEFINED, 0, height)*FRACUNIT, MT_SMOKE); + dust = P_SpawnMobj(source->x + P_RandomRange(PR_EXPLOSION, -radius, radius)*FRACUNIT, + source->y + P_RandomRange(PR_EXPLOSION, -radius, radius)*FRACUNIT, + source->z + P_RandomRange(PR_EXPLOSION, 0, height)*FRACUNIT, MT_SMOKE); P_SetMobjState(dust, S_OPAQUESMOKE1); P_SetScale(dust, source->scale); dust->destscale = source->scale*10; dust->scalespeed = source->scale/12; dust->tics = 30; - dust->momz = P_RandomRange(PR_UNDEFINED, FixedMul(3*FRACUNIT, source->scale)>>FRACBITS, FixedMul(7*FRACUNIT, source->scale)>>FRACBITS)*FRACUNIT; + dust->momz = P_RandomRange(PR_EXPLOSION, FixedMul(3*FRACUNIT, source->scale)>>FRACBITS, FixedMul(7*FRACUNIT, source->scale)>>FRACBITS)*FRACUNIT; - truc = P_SpawnMobj(source->x + P_RandomRange(PR_UNDEFINED, -radius, radius)*FRACUNIT, - source->y + P_RandomRange(PR_UNDEFINED, -radius, radius)*FRACUNIT, - source->z + P_RandomRange(PR_UNDEFINED, 0, height)*FRACUNIT, MT_BOOMPARTICLE); + truc = P_SpawnMobj(source->x + P_RandomRange(PR_EXPLOSION, -radius, radius)*FRACUNIT, + source->y + P_RandomRange(PR_EXPLOSION, -radius, radius)*FRACUNIT, + source->z + P_RandomRange(PR_EXPLOSION, 0, height)*FRACUNIT, MT_BOOMPARTICLE); K_MatchGenericExtraFlags(truc, source); P_SetScale(truc, source->scale); truc->destscale = source->scale*5; truc->scalespeed = source->scale/12; speed = FixedMul(20*FRACUNIT, source->scale)>>FRACBITS; - truc->momx = P_RandomRange(PR_UNDEFINED, -speed, speed)*FRACUNIT; - truc->momy = P_RandomRange(PR_UNDEFINED, -speed, speed)*FRACUNIT; + truc->momx = P_RandomRange(PR_EXPLOSION, -speed, speed)*FRACUNIT; + truc->momy = P_RandomRange(PR_EXPLOSION, -speed, speed)*FRACUNIT; speed = FixedMul(15*FRACUNIT, source->scale)>>FRACBITS; speed2 = FixedMul(45*FRACUNIT, source->scale)>>FRACBITS; - truc->momz = P_RandomRange(PR_UNDEFINED, speed, speed2)*FRACUNIT*P_MobjFlip(truc); - if (P_RandomChance(PR_UNDEFINED, FRACUNIT/2)) + truc->momz = P_RandomRange(PR_EXPLOSION, speed, speed2)*FRACUNIT*P_MobjFlip(truc); + if (P_RandomChance(PR_EXPLOSION, FRACUNIT/2)) truc->momz = -truc->momz; if (truc->eflags & MFE_UNDERWATER) truc->momz = (117 * truc->momz) / 200; @@ -4798,9 +4798,9 @@ void K_SpawnSparkleTrail(mobj_t *mo) //CONS_Printf("%d\n", index); - newx = mo->x + (P_RandomRange(PR_UNDEFINED, -rad, rad)*FRACUNIT); - newy = mo->y + (P_RandomRange(PR_UNDEFINED, -rad, rad)*FRACUNIT); - newz = mo->z + (P_RandomRange(PR_UNDEFINED, 0, mo->height>>FRACBITS)*FRACUNIT); + newx = mo->x + (P_RandomRange(PR_DECORATION, -rad, rad)*FRACUNIT); + newy = mo->y + (P_RandomRange(PR_DECORATION, -rad, rad)*FRACUNIT); + newz = mo->z + (P_RandomRange(PR_DECORATION, 0, mo->height>>FRACBITS)*FRACUNIT); sparkle = P_SpawnMobj(newx, newy, newz, MT_SPARKLETRAIL); @@ -4810,8 +4810,8 @@ void K_SpawnSparkleTrail(mobj_t *mo) //CONS_Printf("movefactor: %d\n", sparkle->movefactor/FRACUNIT); sparkle->extravalue1 = (sparkle->z - mo->z); // Keep track of our Z position relative to the player's, I suppose. - sparkle->extravalue2 = P_RandomRange(PR_UNDEFINED, 0, 1) ? 1 : -1; // Rotation direction? - sparkle->cvmem = P_RandomRange(PR_UNDEFINED, -25, 25)*mo->scale; // Vertical "angle" + sparkle->extravalue2 = P_RandomRange(PR_DECORATION, 0, 1) ? 1 : -1; // Rotation direction? + sparkle->cvmem = P_RandomRange(PR_DECORATION, -25, 25)*mo->scale; // Vertical "angle" K_FlipFromObject(sparkle, mo); P_SetTarget(&sparkle->target, mo); @@ -4849,8 +4849,8 @@ void K_SpawnWipeoutTrail(mobj_t *mo) else aoff += ANGLE_45; - dust = P_SpawnMobj(mo->x + FixedMul(24*mo->scale, FINECOSINE(aoff>>ANGLETOFINESHIFT)) + (P_RandomRange(PR_UNDEFINED,-8,8) << FRACBITS), - mo->y + FixedMul(24*mo->scale, FINESINE(aoff>>ANGLETOFINESHIFT)) + (P_RandomRange(PR_UNDEFINED,-8,8) << FRACBITS), + dust = P_SpawnMobj(mo->x + FixedMul(24*mo->scale, FINECOSINE(aoff>>ANGLETOFINESHIFT)) + (P_RandomRange(PR_DECORATION,-8,8) << FRACBITS), + mo->y + FixedMul(24*mo->scale, FINESINE(aoff>>ANGLETOFINESHIFT)) + (P_RandomRange(PR_DECORATION,-8,8) << FRACBITS), mo->z, MT_WIPEOUTTRAIL); P_SetTarget(&dust->target, mo); @@ -4988,13 +4988,13 @@ void K_DriftDustHandling(mobj_t *spawner) if (anglediff > ANG10*4) // Trying to turn further than 40 degrees { - fixed_t spawnx = P_RandomRange(PR_UNDEFINED, -spawnrange, spawnrange) << FRACBITS; - fixed_t spawny = P_RandomRange(PR_UNDEFINED, -spawnrange, spawnrange) << FRACBITS; + fixed_t spawnx = P_RandomRange(PR_DECORATION, -spawnrange, spawnrange) << FRACBITS; + fixed_t spawny = P_RandomRange(PR_DECORATION, -spawnrange, spawnrange) << FRACBITS; INT32 speedrange = 2; mobj_t *dust = P_SpawnMobj(spawner->x + spawnx, spawner->y + spawny, spawner->z, MT_DRIFTDUST); - dust->momx = FixedMul(spawner->momx + (P_RandomRange(PR_UNDEFINED, -speedrange, speedrange) * spawner->scale), 3*FRACUNIT/4); - dust->momy = FixedMul(spawner->momy + (P_RandomRange(PR_UNDEFINED, -speedrange, speedrange) * spawner->scale), 3*FRACUNIT/4); - dust->momz = P_MobjFlip(spawner) * (P_RandomRange(PR_UNDEFINED, 1, 4) * (spawner->scale)); + dust->momx = FixedMul(spawner->momx + (P_RandomRange(PR_DECORATION, -speedrange, speedrange) * spawner->scale), 3*FRACUNIT/4); + dust->momy = FixedMul(spawner->momy + (P_RandomRange(PR_DECORATION, -speedrange, speedrange) * spawner->scale), 3*FRACUNIT/4); + dust->momz = P_MobjFlip(spawner) * (P_RandomRange(PR_DECORATION, 1, 4) * (spawner->scale)); P_SetScale(dust, spawner->scale/2); dust->destscale = spawner->scale * 3; dust->scalespeed = spawner->scale/12; @@ -5456,8 +5456,8 @@ static void K_DoLightningShield(player_t *player) for (i=0; i<7; i++) { mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_THOK); - P_InitAngle(mo, P_RandomRange(PR_UNDEFINED, 0, 359)*ANG1); - mo->fuse = P_RandomRange(PR_UNDEFINED, 20, 50); + P_InitAngle(mo, P_RandomRange(PR_DECORATION, 0, 359)*ANG1); + mo->fuse = P_RandomRange(PR_DECORATION, 20, 50); P_SetTarget(&mo->target, player->mo); P_SetMobjState(mo, S_KLIT1); } @@ -5496,91 +5496,11 @@ static void K_FlameDashLeftoverSmoke(mobj_t *src) smoke->momy = 3*src->momy/4; smoke->momz = 3*P_GetMobjZMovement(src)/4; - P_Thrust(smoke, src->angle + FixedAngle(P_RandomRange(PR_UNDEFINED, 135, 225)<scale); - smoke->momz += P_RandomRange(PR_UNDEFINED, 0, 4) * src->scale; + P_Thrust(smoke, src->angle + FixedAngle(P_RandomRange(PR_DECORATION, 135, 225)<scale); + smoke->momz += P_RandomRange(PR_DECORATION, 0, 4) * src->scale; } } -#if 0 -static void K_DoHyudoroSteal(player_t *player) -{ - INT32 i, numplayers = 0; - INT32 playerswappable[MAXPLAYERS]; - INT32 stealplayer = -1; // The player that's getting stolen from - INT32 prandom = 0; - boolean sink = P_RandomChance(PR_UNDEFINED, FRACUNIT/64); - INT32 hyu = hyudorotime; - - if (gametype == GT_RACE) - hyu *= 2; // double in race - - for (i = 0; i < MAXPLAYERS; i++) - { - if (playeringame[i] && players[i].mo && players[i].mo->health > 0 && players[i].playerstate == PST_LIVE - && player != &players[i] && !players[i].exiting && !players[i].spectator // Player in-game - - // Can steal from this player - && (gametype == GT_RACE //&& players[i].position < player->position) - || ((gametyperules & GTR_BUMPERS) && players[i].bumpers > 0)) - - // Has an item - && (players[i].itemtype - && players[i].itemamount - && !(players[i].pflags & PF_ITEMOUT))) - { - playerswappable[numplayers] = i; - numplayers++; - } - } - - prandom = P_RandomFixed(PR_UNDEFINED); - S_StartSound(player->mo, sfx_s3k92); - - if (sink && numplayers > 0 && cv_kitchensink.value) // BEHOLD THE KITCHEN SINK - { - player->hyudorotimer = hyu; - player->stealingtimer = stealtime; - - player->itemtype = KITEM_KITCHENSINK; - player->itemamount = 1; - K_UnsetItemOut(player); - return; - } - else if ((gametype == GT_RACE && player->position == 1) || numplayers == 0) // No-one can be stolen from? Oh well... - { - player->hyudorotimer = hyu; - player->stealingtimer = stealtime; - return; - } - else if (numplayers == 1) // With just 2 players, we just need to set the other player to be the one to steal from - { - stealplayer = playerswappable[numplayers-1]; - } - else if (numplayers > 1) // We need to choose between the available candidates for the 2nd player - { - stealplayer = playerswappable[prandom%(numplayers-1)]; - } - - if (stealplayer > -1) // Now here's where we do the stealing, has to be done here because we still know the player we're stealing from - { - player->hyudorotimer = hyu; - player->stealingtimer = stealtime; - players[stealplayer].stealingtimer = -stealtime; - - player->itemtype = players[stealplayer].itemtype; - player->itemamount = players[stealplayer].itemamount; - K_UnsetItemOut(player); - - players[stealplayer].itemtype = KITEM_NONE; - players[stealplayer].itemamount = 0; - K_UnsetItemOut(&players[stealplayer]); - - if (P_IsDisplayPlayer(&players[stealplayer]) && !r_splitscreen) - S_StartSound(NULL, sfx_s3k92); - } -} -#endif - void K_DoSneaker(player_t *player, INT32 type) { const fixed_t intendedboost = FRACUNIT/2; @@ -6079,7 +5999,7 @@ mobj_t *K_CreatePaperItem(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8 P_InitAngle(drop, angle); P_Thrust(drop, - FixedAngle(P_RandomFixed(PR_UNDEFINED) * 180) + angle, + FixedAngle(P_RandomFixed(PR_ITEM_ROULETTE) * 180) + angle, 16*mapobjectscale); drop->momz = flip * 3 * mapobjectscale; @@ -6113,7 +6033,7 @@ mobj_t *K_CreatePaperItem(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8 UINT8 newType; UINT8 newAmount; - totalspawnchance = P_RandomKey(PR_UNDEFINED, totalspawnchance); + totalspawnchance = P_RandomKey(PR_ITEM_ROULETTE, totalspawnchance); for (i = 0; i < NUMKARTRESULTS && spawnchance[i] <= totalspawnchance; i++); // TODO: this is bad! @@ -7213,7 +7133,7 @@ static inline BlockItReturn_t PIT_AttractingRings(mobj_t *thing) thing->info = &mobjinfo[thing->type]; thing->flags = thing->info->flags; - P_InstaThrust(thing, P_RandomRange(PR_UNDEFINED,0,7) * ANGLE_45, 2 * thing->scale); + P_InstaThrust(thing, P_RandomRange(PR_ITEM_RINGS, 0, 7) * ANGLE_45, 2 * thing->scale); P_SetObjectMomZ(thing, 8<fuse = 120*TICRATE; @@ -7410,9 +7330,9 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) if (player->springstars && (leveltime & 1)) { - fixed_t randx = P_RandomRange(PR_UNDEFINED, -40, 40) * player->mo->scale; - fixed_t randy = P_RandomRange(PR_UNDEFINED, -40, 40) * player->mo->scale; - fixed_t randz = P_RandomRange(PR_UNDEFINED, 0, player->mo->height >> FRACBITS) << FRACBITS; + fixed_t randx = P_RandomRange(PR_DECORATION, -40, 40) * player->mo->scale; + fixed_t randy = P_RandomRange(PR_DECORATION, -40, 40) * player->mo->scale; + fixed_t randz = P_RandomRange(PR_DECORATION, 0, player->mo->height >> FRACBITS) << FRACBITS; mobj_t *star = P_SpawnMobj( player->mo->x + randx, player->mo->y + randy, @@ -9142,8 +9062,8 @@ void K_KartEbrakeVisuals(player_t *p) if (!p->spindash) { // Spawn downwards fastline - sx = p->mo->x + P_RandomRange(PR_UNDEFINED, -48, 48)*p->mo->scale; - sy = p->mo->y + P_RandomRange(PR_UNDEFINED, -48, 48)*p->mo->scale; + sx = p->mo->x + P_RandomRange(PR_DECORATION, -48, 48)*p->mo->scale; + sy = p->mo->y + P_RandomRange(PR_DECORATION, -48, 48)*p->mo->scale; spdl = P_SpawnMobj(sx, sy, p->mo->z, MT_DOWNLINE); spdl->colorized = true; @@ -9225,8 +9145,8 @@ static void K_KartSpindashDust(mobj_t *parent) for (i = 0; i < 2; i++) { - fixed_t hmomentum = P_RandomRange(PR_UNDEFINED, 6, 12) * parent->scale; - fixed_t vmomentum = P_RandomRange(PR_UNDEFINED, 2, 6) * parent->scale; + fixed_t hmomentum = P_RandomRange(PR_DECORATION, 6, 12) * parent->scale; + fixed_t vmomentum = P_RandomRange(PR_DECORATION, 2, 6) * parent->scale; angle_t ang = parent->player->drawangle + ANGLE_180; SINT8 flip = 1; @@ -9254,9 +9174,9 @@ static void K_KartSpindashDust(mobj_t *parent) static void K_KartSpindashWind(mobj_t *parent) { mobj_t *wind = P_SpawnMobjFromMobj(parent, - P_RandomRange(PR_UNDEFINED,-36,36) * FRACUNIT, - P_RandomRange(PR_UNDEFINED,-36,36) * FRACUNIT, - FixedDiv(parent->height / 2, parent->scale) + (P_RandomRange(PR_UNDEFINED,-20,20) * FRACUNIT), + P_RandomRange(PR_DECORATION,-36,36) * FRACUNIT, + P_RandomRange(PR_DECORATION,-36,36) * FRACUNIT, + FixedDiv(parent->height / 2, parent->scale) + (P_RandomRange(PR_DECORATION,-20,20) * FRACUNIT), MT_SPINDASHWIND ); @@ -10386,9 +10306,9 @@ void K_MoveKartPlayer(player_t *player, boolean onground) { for (n=0; n < maxlines; n++) { - sx = player->mo->x + P_RandomRange(PR_UNDEFINED, -24, 24)*player->mo->scale; - sy = player->mo->y + P_RandomRange(PR_UNDEFINED, -24, 24)*player->mo->scale; - sz = player->mo->z + P_RandomRange(PR_UNDEFINED, 0, 48)*player->mo->scale; + sx = player->mo->x + P_RandomRange(PR_DECORATION, -24, 24)*player->mo->scale; + sy = player->mo->y + P_RandomRange(PR_DECORATION, -24, 24)*player->mo->scale; + sz = player->mo->z + P_RandomRange(PR_DECORATION, 0, 48)*player->mo->scale; spdl = P_SpawnMobj(sx, sy, sz, MT_FASTLINE); P_SetTarget(&spdl->target, player->mo); diff --git a/src/k_terrain.c b/src/k_terrain.c index 238f8ec23..d65eb0019 100644 --- a/src/k_terrain.c +++ b/src/k_terrain.c @@ -539,7 +539,7 @@ static void K_SpawnSplashParticles(mobj_t *mo, t_splash_t *s, fixed_t impact) if (numParticles == 1) { // Random angle. - pushAngle = P_RandomRange(PR_UNDEFINED, 0, ANGLE_MAX); + pushAngle = P_RandomRange(PR_TERRAIN, 0, ANGLE_MAX); } dust = P_SpawnMobjFromMobj( @@ -668,20 +668,20 @@ static void K_SpawnFootstepParticle(mobj_t *mo, t_footstep_t *fs, tic_t timer) if (((timer / fs->frequency) / 2) & 1) { tireAngle -= ANGLE_45; - tireAngle -= P_RandomRange(PR_UNDEFINED, 0, fs->cone / ANG1) * ANG1; - pushAngle -= P_RandomRange(PR_UNDEFINED, 0, fs->cone / ANG1) * ANG1; + tireAngle -= P_RandomRange(PR_TERRAIN, 0, fs->cone / ANG1) * ANG1; + pushAngle -= P_RandomRange(PR_TERRAIN, 0, fs->cone / ANG1) * ANG1; } else { tireAngle += ANGLE_45; - tireAngle += P_RandomRange(PR_UNDEFINED, 0, fs->cone / ANG1) * ANG1; - pushAngle += P_RandomRange(PR_UNDEFINED, 0, fs->cone / ANG1) * ANG1; + tireAngle += P_RandomRange(PR_TERRAIN, 0, fs->cone / ANG1) * ANG1; + pushAngle += P_RandomRange(PR_TERRAIN, 0, fs->cone / ANG1) * ANG1; } if (fs->spread > 0) { - xOff = P_RandomRange(PR_UNDEFINED, -fs->spread / FRACUNIT, fs->spread / FRACUNIT) * FRACUNIT; - yOff = P_RandomRange(PR_UNDEFINED, -fs->spread / FRACUNIT, fs->spread / FRACUNIT) * FRACUNIT; + xOff = P_RandomRange(PR_TERRAIN, -fs->spread / FRACUNIT, fs->spread / FRACUNIT) * FRACUNIT; + yOff = P_RandomRange(PR_TERRAIN, -fs->spread / FRACUNIT, fs->spread / FRACUNIT) * FRACUNIT; } dust = P_SpawnMobjFromMobj( diff --git a/src/m_random.h b/src/m_random.h index c811fa87e..bf016507d 100644 --- a/src/m_random.h +++ b/src/m_random.h @@ -22,7 +22,30 @@ typedef enum { - PR_UNDEFINED, // Before release, cases of this RNG class should be removed, only kept as the default for Lua. + // Before release, cases of this RNG class should + // be removed, only kept as the default for Lua. + PR_UNDEFINED, + + // The rule for RNG classes: + // Don't mix up gameplay & decorative RNG. + + // Decorative RNG is a lot less important + // and can be lumped together. If it's used enough, + // it might be nice to give it's own, though. + + // However each instance of RNG being used for + // gameplay should be split up as much as possible. + + PR_ITEM_ROULETTE, // Item results + PR_ITEM_RINGS, // Flung ring direction + PR_ITEM_SHRINK, // Shrink gun offsets + PR_PLAYERSTARTS, // Player starts + PR_TERRAIN, // TERRAIN particles + + PR_DECORATION, // Generic decoration + PR_VOICES, // Player voice sounds + PR_EXPLOSION, // Explosion VFX + PRNUMCLASS } pr_class_t; @@ -53,10 +76,10 @@ INT32 P_RandomRange(pr_class_t pr_class, INT32 a, INT32 b); #endif // Macros for other functions -#define M_SignedRandom() ((INT32)M_RandomByte() - 128) // [-128, 127] signed byte, originally a -#define P_SignedRandom(pr) ((INT32)P_RandomByte(pr) - 128) // function of its own, moved to a macro +#define M_SignedRandom() ((INT32)M_RandomByte() - 128) // [-128, 127] signed byte, originally a +#define P_SignedRandom(pr) ((INT32)P_RandomByte(pr) - 128) // function of its own, moved to a macro -#define M_RandomChance(p) (M_RandomFixed() < p) // given fixed point probability, p, between 0 (0%) +#define M_RandomChance(p) (M_RandomFixed() < p) // given fixed point probability, p, between 0 (0%) #define P_RandomChance(pr, p) (P_RandomFixed(pr) < p) // and FRACUNIT (100%), returns true p% of the time // Debugging diff --git a/src/objects/shrink.c b/src/objects/shrink.c index 38e510a7b..6b52fc4ca 100644 --- a/src/objects/shrink.c +++ b/src/objects/shrink.c @@ -330,13 +330,10 @@ static void ShrinkLaserThinker(mobj_t *pohbee, mobj_t *gun, mobj_t *laser) laser->spriteyscale = FixedDiv(FixedDiv(gunZ - gun->floorz, mapobjectscale), laser->info->height); - particle = P_SpawnMobjFromMobj( - laser, - P_RandomRange(PR_UNDEFINED, -16, 16) * FRACUNIT, - P_RandomRange(PR_UNDEFINED, -16, 16) * FRACUNIT, - 0, - MT_SHRINK_PARTICLE - ); + particle = P_SpawnMobjFromMobj(laser, 0, 0, 0, MT_SHRINK_PARTICLE); + + particle->sprxoff = P_RandomRange(PR_DECORATION, -16, 16) * laser->scale; + particle->spryoff = P_RandomRange(PR_DECORATION, -16, 16) * laser->scale; P_SetTarget(&gun_pohbee(particle), pohbee); @@ -694,7 +691,7 @@ static void CreatePohbee(player_t *owner, waypoint_t *start, waypoint_t *end, UI P_SetTarget(&pohbee_guns(prevGun), gun); gun_numsegs(gun) = numSegs; - gun_offset(gun) = P_RandomKey(PR_UNDEFINED, GUN_SWINGTIME); + gun_offset(gun) = P_RandomKey(PR_ITEM_SHRINK, GUN_SWINGTIME); overlay = P_SpawnMobjFromMobj(gun, 0, 0, 0, MT_OVERLAY); diff --git a/src/p_enemy.c b/src/p_enemy.c index c33c87cca..f51732db8 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -4106,7 +4106,7 @@ void A_AttractChase(mobj_t *actor) #if 0 // old mobj_t *newring; newring = P_SpawnMobj(actor->x, actor->y, actor->z, actor->info->reactiontime); - P_InstaThrust(newring, P_RandomRange(PR_UNDEFINED,0,7) * ANGLE_45, 2<momz = 8<fuse = 120*TICRATE; P_RemoveMobj(actor); @@ -4116,7 +4116,7 @@ void A_AttractChase(mobj_t *actor) actor->info = &mobjinfo[actor->type]; actor->flags = actor->info->flags; - P_InstaThrust(actor, P_RandomRange(PR_UNDEFINED,0,7) * ANGLE_45, 2 * actor->scale); + P_InstaThrust(actor, P_RandomRange(PR_ITEM_RINGS, 0, 7) * ANGLE_45, 2 * actor->scale); P_SetObjectMomZ(actor, 8<fuse = 120*TICRATE; #endif