mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Battle: half screen shake radius, strength and max strength
This commit is contained in:
parent
224deed01d
commit
4ce2dbf1bc
1 changed files with 12 additions and 8 deletions
20
src/p_spec.c
20
src/p_spec.c
|
|
@ -9499,6 +9499,7 @@ void P_StartQuakeFromMobj(tic_t time, fixed_t intensity, fixed_t radius, mobj_t
|
||||||
|
|
||||||
void P_DoQuakeOffset(UINT8 view, mappoint_t *viewPos, mappoint_t *offset)
|
void P_DoQuakeOffset(UINT8 view, mappoint_t *viewPos, mappoint_t *offset)
|
||||||
{
|
{
|
||||||
|
const boolean battle = (gametyperules & GTR_PRISONS) && !battleprisons;
|
||||||
const player_t *viewer = &players[ displayplayers[view] ];
|
const player_t *viewer = &players[ displayplayers[view] ];
|
||||||
quake_t *quake = NULL;
|
quake_t *quake = NULL;
|
||||||
fixed_t ir = 0;
|
fixed_t ir = 0;
|
||||||
|
|
@ -9522,7 +9523,8 @@ void P_DoQuakeOffset(UINT8 view, mappoint_t *viewPos, mappoint_t *offset)
|
||||||
// Modulate with distance from epicenter, if it exists.
|
// Modulate with distance from epicenter, if it exists.
|
||||||
if (quake->radius > 0 && quake->epicenter != NULL)
|
if (quake->radius > 0 && quake->epicenter != NULL)
|
||||||
{
|
{
|
||||||
const fixed_t distBuffer = 256 * mapobjectscale; // add a small buffer zone before it starts to drop off
|
const fixed_t denom = battle ? 2 : 1;
|
||||||
|
const fixed_t distBuffer = 256 * mapobjectscale / denom; // add a small buffer zone before it starts to drop off
|
||||||
const fixed_t epidist = P_AproxDistance(
|
const fixed_t epidist = P_AproxDistance(
|
||||||
P_AproxDistance(
|
P_AproxDistance(
|
||||||
viewPos->x - quake->epicenter->x,
|
viewPos->x - quake->epicenter->x,
|
||||||
|
|
@ -9531,7 +9533,7 @@ void P_DoQuakeOffset(UINT8 view, mappoint_t *viewPos, mappoint_t *offset)
|
||||||
viewPos->z - quake->epicenter->z
|
viewPos->z - quake->epicenter->z
|
||||||
) - distBuffer;
|
) - distBuffer;
|
||||||
|
|
||||||
fixed_t distEase = FixedDiv(max(epidist, 0), quake->radius);
|
fixed_t distEase = FixedDiv(max(epidist, 0), quake->radius / denom);
|
||||||
distEase = min(distEase, FRACUNIT);
|
distEase = min(distEase, FRACUNIT);
|
||||||
ir = Easing_InCubic(distEase, ir, 0);
|
ir = Easing_InCubic(distEase, ir, 0);
|
||||||
}
|
}
|
||||||
|
|
@ -9560,7 +9562,14 @@ void P_DoQuakeOffset(UINT8 view, mappoint_t *viewPos, mappoint_t *offset)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const fixed_t maxShake = FixedMul(cv_cam_height[view].value, mapobjectscale) * 3 / 4;
|
fixed_t maxShake = FixedMul(cv_cam_height[view].value, mapobjectscale) * 3 / 4;
|
||||||
|
|
||||||
|
if (battle)
|
||||||
|
{
|
||||||
|
addZ /= 2;
|
||||||
|
maxShake /= 2;
|
||||||
|
}
|
||||||
|
|
||||||
if (addZ > maxShake)
|
if (addZ > maxShake)
|
||||||
{
|
{
|
||||||
// Cap screen shake between reasonable values
|
// Cap screen shake between reasonable values
|
||||||
|
|
@ -9573,11 +9582,6 @@ void P_DoQuakeOffset(UINT8 view, mappoint_t *viewPos, mappoint_t *offset)
|
||||||
addZ = -addZ;
|
addZ = -addZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((gametyperules & GTR_PRISONS) && !battleprisons)
|
|
||||||
{
|
|
||||||
addZ /= 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cv_screenshake.value == 1) // Half
|
if (cv_screenshake.value == 1) // Half
|
||||||
{
|
{
|
||||||
addZ /= 2;
|
addZ /= 2;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue