mirror of https://github.com/ZDoom/gzdoom.git
Update quake radii from int -> double
Also enables static portal-aware distance checks as cam view offsets will now properly go through them when shaking
This commit is contained in:
parent
96594e0f34
commit
3e939b0ec1
|
@ -139,8 +139,8 @@ class DEarthquake : public DThinker
|
||||||
public:
|
public:
|
||||||
static const int DEFAULT_STAT = STAT_EARTHQUAKE;
|
static const int DEFAULT_STAT = STAT_EARTHQUAKE;
|
||||||
void Construct(AActor *center, double intensityX, double intensityY, double intensityZ, int duration,
|
void Construct(AActor *center, double intensityX, double intensityY, double intensityZ, int duration,
|
||||||
int damrad, int tremrad, FSoundID quakesfx, int flags,
|
double damrad, double tremrad, FSoundID quakesfx, int flags,
|
||||||
double waveSpeedX, double waveSpeedY, double waveSpeedZ, int falloff, int highpoint, double rollIntensity, double rollWave, double damageMultiplier, double thrustMultiplier, int damage);
|
double waveSpeedX, double waveSpeedY, double waveSpeedZ, double falloff, int highpoint, double rollIntensity, double rollWave, double damageMultiplier, double thrustMultiplier, int damage);
|
||||||
|
|
||||||
void Serialize(FSerializer &arc);
|
void Serialize(FSerializer &arc);
|
||||||
void Tick ();
|
void Tick ();
|
||||||
|
|
|
@ -51,8 +51,8 @@ IMPLEMENT_POINTERS_END
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
void DEarthquake::Construct(AActor *center, double intensityX, double intensityY, double intensityZ, int duration,
|
void DEarthquake::Construct(AActor *center, double intensityX, double intensityY, double intensityZ, int duration,
|
||||||
int damrad, int tremrad, FSoundID quakesound, int flags,
|
double damrad, double tremrad, FSoundID quakesound, int flags,
|
||||||
double waveSpeedX, double waveSpeedY, double waveSpeedZ, int falloff, int highpoint,
|
double waveSpeedX, double waveSpeedY, double waveSpeedZ, double falloff, int highpoint,
|
||||||
double rollIntensity, double rollWave, double damageMultiplier, double thrustMultiplier, int damage)
|
double rollIntensity, double rollWave, double damageMultiplier, double thrustMultiplier, int damage)
|
||||||
{
|
{
|
||||||
m_QuakeSFX = quakesound;
|
m_QuakeSFX = quakesound;
|
||||||
|
@ -185,7 +185,7 @@ void DEarthquake::DoQuakeDamage(DEarthquake *quake, AActor *victim, bool falloff
|
||||||
|
|
||||||
if (!quake || !victim) return;
|
if (!quake || !victim) return;
|
||||||
|
|
||||||
dist = quake->m_Spot->Distance2D(victim, true);
|
dist = quake->m_Spot->Distance2D(victim);
|
||||||
thrustfalloff = falloff ? GetFalloff(dist, m_DamageRadius) : 1.0;
|
thrustfalloff = falloff ? GetFalloff(dist, m_DamageRadius) : 1.0;
|
||||||
// Check if in damage radius
|
// Check if in damage radius
|
||||||
if (dist < m_DamageRadius && victim->Z() <= victim->floorz)
|
if (dist < m_DamageRadius && victim->Z() <= victim->floorz)
|
||||||
|
@ -355,8 +355,8 @@ int DEarthquake::StaticGetQuakeIntensities(double ticFrac, AActor *victim, FQuak
|
||||||
{
|
{
|
||||||
double dist;
|
double dist;
|
||||||
|
|
||||||
if (quake->m_Flags & QF_3D) dist = quake->m_Spot->Distance3D(victim, true);
|
if (quake->m_Flags & QF_3D) dist = quake->m_Spot->Distance3D(victim);
|
||||||
else dist = quake->m_Spot->Distance2D(victim, true);
|
else dist = quake->m_Spot->Distance2D(victim);
|
||||||
|
|
||||||
if (dist < quake->m_TremorRadius)
|
if (dist < quake->m_TremorRadius)
|
||||||
{
|
{
|
||||||
|
@ -429,8 +429,8 @@ int DEarthquake::StaticGetQuakeIntensities(double ticFrac, AActor *victim, FQuak
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
bool P_StartQuakeXYZ(FLevelLocals *Level, AActor *activator, int tid, double intensityX, double intensityY, double intensityZ, int duration,
|
bool P_StartQuakeXYZ(FLevelLocals *Level, AActor *activator, int tid, double intensityX, double intensityY, double intensityZ, int duration,
|
||||||
int damrad, int tremrad, FSoundID quakesfx, int flags,
|
double damrad, double tremrad, FSoundID quakesfx, int flags,
|
||||||
double waveSpeedX, double waveSpeedY, double waveSpeedZ, int falloff, int highpoint,
|
double waveSpeedX, double waveSpeedY, double waveSpeedZ, double falloff, int highpoint,
|
||||||
double rollIntensity, double rollWave, double damageMultiplier, double thrustMultiplier, int damage)
|
double rollIntensity, double rollWave, double damageMultiplier, double thrustMultiplier, int damage)
|
||||||
{
|
{
|
||||||
AActor *center;
|
AActor *center;
|
||||||
|
@ -463,7 +463,7 @@ bool P_StartQuakeXYZ(FLevelLocals *Level, AActor *activator, int tid, double int
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool P_StartQuake(FLevelLocals * Level, AActor * activator, int tid, double intensity, int duration, int damrad, int tremrad, FSoundID quakesfx)
|
bool P_StartQuake(FLevelLocals * Level, AActor * activator, int tid, double intensity, int duration, double damrad, double tremrad, FSoundID quakesfx)
|
||||||
{ //Maintains original behavior by passing 0 to intensityZ, flags, and everything else after QSFX.
|
{ //Maintains original behavior by passing 0 to intensityZ, flags, and everything else after QSFX.
|
||||||
return P_StartQuakeXYZ(Level, activator, tid, intensity, intensity, 0, duration, damrad, tremrad, quakesfx, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0.5, 0);
|
return P_StartQuakeXYZ(Level, activator, tid, intensity, intensity, 0, duration, damrad, tremrad, quakesfx, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 0.5, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3322,8 +3322,8 @@ DEFINE_ACTION_FUNCTION(AActor, A_Quake)
|
||||||
PARAM_SELF_PROLOGUE(AActor);
|
PARAM_SELF_PROLOGUE(AActor);
|
||||||
PARAM_FLOAT (intensity);
|
PARAM_FLOAT (intensity);
|
||||||
PARAM_INT (duration);
|
PARAM_INT (duration);
|
||||||
PARAM_INT (damrad);
|
PARAM_FLOAT (damrad);
|
||||||
PARAM_INT (tremrad);
|
PARAM_FLOAT (tremrad);
|
||||||
PARAM_SOUND (sound);
|
PARAM_SOUND (sound);
|
||||||
|
|
||||||
P_StartQuake(self->Level, self, 0, intensity, duration, damrad, tremrad, sound);
|
P_StartQuake(self->Level, self, 0, intensity, duration, damrad, tremrad, sound);
|
||||||
|
@ -3345,14 +3345,14 @@ DEFINE_ACTION_FUNCTION(AActor, A_QuakeEx)
|
||||||
PARAM_FLOAT(intensityY);
|
PARAM_FLOAT(intensityY);
|
||||||
PARAM_FLOAT(intensityZ);
|
PARAM_FLOAT(intensityZ);
|
||||||
PARAM_INT(duration);
|
PARAM_INT(duration);
|
||||||
PARAM_INT(damrad);
|
PARAM_FLOAT(damrad);
|
||||||
PARAM_INT(tremrad);
|
PARAM_FLOAT(tremrad);
|
||||||
PARAM_SOUND(sound);
|
PARAM_SOUND(sound);
|
||||||
PARAM_INT(flags);
|
PARAM_INT(flags);
|
||||||
PARAM_FLOAT(mulWaveX);
|
PARAM_FLOAT(mulWaveX);
|
||||||
PARAM_FLOAT(mulWaveY);
|
PARAM_FLOAT(mulWaveY);
|
||||||
PARAM_FLOAT(mulWaveZ);
|
PARAM_FLOAT(mulWaveZ);
|
||||||
PARAM_INT(falloff);
|
PARAM_FLOAT(falloff);
|
||||||
PARAM_INT(highpoint);
|
PARAM_INT(highpoint);
|
||||||
PARAM_FLOAT(rollIntensity);
|
PARAM_FLOAT(rollIntensity);
|
||||||
PARAM_FLOAT(rollWave);
|
PARAM_FLOAT(rollWave);
|
||||||
|
|
|
@ -164,7 +164,7 @@ void P_TerminateScript (FLevelLocals *Level, int script, const char *map);
|
||||||
//
|
//
|
||||||
// [RH] p_quake.c
|
// [RH] p_quake.c
|
||||||
//
|
//
|
||||||
bool P_StartQuakeXYZ(FLevelLocals *Level, AActor *activator, int tid, double intensityX, double intensityY, double intensityZ, int duration, int damrad, int tremrad, FSoundID quakesfx, int flags, double waveSpeedX, double waveSpeedY, double waveSpeedZ, int falloff, int highpoint, double rollIntensity, double rollWave, double damageMultiplier, double thrustMultiplier, int damage);
|
bool P_StartQuakeXYZ(FLevelLocals *Level, AActor *activator, int tid, double intensityX, double intensityY, double intensityZ, int duration, double damrad, double tremrad, FSoundID quakesfx, int flags, double waveSpeedX, double waveSpeedY, double waveSpeedZ, double falloff, int highpoint, double rollIntensity, double rollWave, double damageMultiplier, double thrustMultiplier, int damage);
|
||||||
bool P_StartQuake(FLevelLocals *Level, AActor *activator, int tid, double intensity, int duration, int damrad, int tremrad, FSoundID quakesfx);
|
bool P_StartQuake(FLevelLocals *Level, AActor *activator, int tid, double intensity, int duration, double damrad, double tremrad, FSoundID quakesfx);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1248,8 +1248,8 @@ class Actor : Thinker native
|
||||||
deprecated("2.3", "User variables are deprecated in ZScript. Actor variables are directly accessible") native void A_SetUserArray(name varname, int index, int value);
|
deprecated("2.3", "User variables are deprecated in ZScript. Actor variables are directly accessible") native void A_SetUserArray(name varname, int index, int value);
|
||||||
deprecated("2.3", "User variables are deprecated in ZScript. Actor variables are directly accessible") native void A_SetUserVarFloat(name varname, double value);
|
deprecated("2.3", "User variables are deprecated in ZScript. Actor variables are directly accessible") native void A_SetUserVarFloat(name varname, double value);
|
||||||
deprecated("2.3", "User variables are deprecated in ZScript. Actor variables are directly accessible") native void A_SetUserArrayFloat(name varname, int index, double value);
|
deprecated("2.3", "User variables are deprecated in ZScript. Actor variables are directly accessible") native void A_SetUserArrayFloat(name varname, int index, double value);
|
||||||
native void A_Quake(double intensity, int duration, int damrad, int tremrad, sound sfx = "world/quake");
|
native void A_Quake(double intensity, int duration, double damrad, double tremrad, sound sfx = "world/quake");
|
||||||
native void A_QuakeEx(double intensityX, double intensityY, double intensityZ, int duration, int damrad, int tremrad, sound sfx = "world/quake", int flags = 0, double mulWaveX = 1, double mulWaveY = 1, double mulWaveZ = 1, int falloff = 0, int highpoint = 0, double rollIntensity = 0, double rollWave = 0, double damageMultiplier = 1, double thrustMultiplier = 0.5, int damage = 0);
|
native void A_QuakeEx(double intensityX, double intensityY, double intensityZ, int duration, double damrad, double tremrad, sound sfx = "world/quake", int flags = 0, double mulWaveX = 1, double mulWaveY = 1, double mulWaveZ = 1, double falloff = 0, int highpoint = 0, double rollIntensity = 0, double rollWave = 0, double damageMultiplier = 1, double thrustMultiplier = 0.5, int damage = 0);
|
||||||
action native void A_SetTics(int tics);
|
action native void A_SetTics(int tics);
|
||||||
native void A_DamageSelf(int amount, name damagetype = "none", int flags = 0, class<Actor> filter = null, name species = "None", int src = AAPTR_DEFAULT, int inflict = AAPTR_DEFAULT);
|
native void A_DamageSelf(int amount, name damagetype = "none", int flags = 0, class<Actor> filter = null, name species = "None", int src = AAPTR_DEFAULT, int inflict = AAPTR_DEFAULT);
|
||||||
native void A_DamageTarget(int amount, name damagetype = "none", int flags = 0, class<Actor> filter = null, name species = "None", int src = AAPTR_DEFAULT, int inflict = AAPTR_DEFAULT);
|
native void A_DamageTarget(int amount, name damagetype = "none", int flags = 0, class<Actor> filter = null, name species = "None", int src = AAPTR_DEFAULT, int inflict = AAPTR_DEFAULT);
|
||||||
|
|
Loading…
Reference in New Issue