mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-11 15:22:16 +00:00
Merge branch 'master' of https://github.com/rheit/zdoom
This commit is contained in:
commit
ac352dc48c
33 changed files with 200 additions and 86 deletions
|
@ -109,6 +109,7 @@ static FCompatOption Options[] =
|
|||
{ "rebuildnodes", BCOMPATF_REBUILDNODES, SLOT_BCOMPAT },
|
||||
{ "linkfrozenprops", BCOMPATF_LINKFROZENPROPS, SLOT_BCOMPAT },
|
||||
{ "disablepushwindowcheck", BCOMPATF_NOWINDOWCHECK, SLOT_BCOMPAT },
|
||||
{ "floatbob", BCOMPATF_FLOATBOB, SLOT_BCOMPAT },
|
||||
|
||||
// list copied from g_mapinfo.cpp
|
||||
{ "shorttex", COMPATF_SHORTTEX, SLOT_COMPAT },
|
||||
|
@ -434,6 +435,11 @@ void CheckCompatibility(MapData *map)
|
|||
// Reset i_compatflags
|
||||
compatflags.Callback();
|
||||
compatflags2.Callback();
|
||||
// Set floatbob compatibility for all maps with an original Hexen MAPINFO.
|
||||
if (level.flags2 & LEVEL2_HEXENHACK)
|
||||
{
|
||||
ib_compatflags |= BCOMPATF_FLOATBOB;
|
||||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
|
|
@ -107,7 +107,7 @@ int resendcount[MAXNETNODES];
|
|||
|
||||
unsigned int lastrecvtime[MAXPLAYERS]; // [RH] Used for pings
|
||||
unsigned int currrecvtime[MAXPLAYERS];
|
||||
unsigned int lastglobalrecvtime; // Identify the last time a packet was recieved.
|
||||
unsigned int lastglobalrecvtime; // Identify the last time a packet was received.
|
||||
bool hadlate;
|
||||
int netdelay[MAXNETNODES][BACKUPTICS]; // Used for storing network delay times.
|
||||
int lastaverage;
|
||||
|
@ -1861,7 +1861,7 @@ void TryRunTics (void)
|
|||
if (counts == 0 && !doWait)
|
||||
{
|
||||
// Check possible stall conditions
|
||||
Net_CheckLastRecieved(counts);
|
||||
Net_CheckLastReceived(counts);
|
||||
if (realtics >= 1)
|
||||
{
|
||||
C_Ticker();
|
||||
|
@ -1897,7 +1897,7 @@ void TryRunTics (void)
|
|||
I_Error ("TryRunTics: lowtic < gametic");
|
||||
|
||||
// Check possible stall conditions
|
||||
Net_CheckLastRecieved (counts);
|
||||
Net_CheckLastReceived (counts);
|
||||
|
||||
// don't stay in here forever -- give the menu a chance to work
|
||||
if (I_GetTime (false) - entertic >= 1)
|
||||
|
@ -1945,9 +1945,9 @@ void TryRunTics (void)
|
|||
}
|
||||
}
|
||||
|
||||
void Net_CheckLastRecieved (int counts)
|
||||
void Net_CheckLastReceived (int counts)
|
||||
{
|
||||
// [Ed850] Check to see the last time a packet was recieved.
|
||||
// [Ed850] Check to see the last time a packet was received.
|
||||
// If it's longer then 3 seconds, a node has likely stalled.
|
||||
if (I_GetTime(false) - lastglobalrecvtime >= TICRATE * 3)
|
||||
{
|
||||
|
@ -1974,11 +1974,11 @@ void Net_CheckLastRecieved (int counts)
|
|||
}
|
||||
else
|
||||
{ //Send a resend request to the Arbitrator, as it's obvious we are stuck here.
|
||||
if (debugfile && !players[playerfornode[Net_Arbitrator]].waiting)
|
||||
if (debugfile && !players[Net_Arbitrator].waiting)
|
||||
fprintf(debugfile, "Arbitrator is slow (%i to %i)\n",
|
||||
nettics[Net_Arbitrator], gametic + counts);
|
||||
nettics[nodeforplayer[Net_Arbitrator]], gametic + counts);
|
||||
//Send resend request to the Arbitrator. Also mark the Arbitrator as waiting to display it in the hud.
|
||||
remoteresend[Net_Arbitrator] = players[playerfornode[Net_Arbitrator]].waiting = hadlate = true;
|
||||
remoteresend[nodeforplayer[Net_Arbitrator]] = players[Net_Arbitrator].waiting = hadlate = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -115,7 +115,7 @@ void D_QuitNetGame (void);
|
|||
void TryRunTics (void);
|
||||
|
||||
//Use for checking to see if the netgame has stalled
|
||||
void Net_CheckLastRecieved(int);
|
||||
void Net_CheckLastReceived(int);
|
||||
|
||||
// [RH] Functions for making and using special "ticcmds"
|
||||
void Net_NewMakeTic ();
|
||||
|
|
|
@ -354,6 +354,7 @@ enum
|
|||
BCOMPATF_REBUILDNODES = 1 << 5, // Force node rebuild
|
||||
BCOMPATF_LINKFROZENPROPS = 1 << 6, // Clearing PROP_TOTALLYFROZEN or PROP_FROZEN also clears the other
|
||||
BCOMPATF_NOWINDOWCHECK = 1 << 7, // Disable the window check in CheckForPushSpecial()
|
||||
BCOMPATF_FLOATBOB = 1 << 8, // Use Hexen's original method of preventing floatbobbing items from falling down
|
||||
};
|
||||
|
||||
// phares 3/20/98:
|
||||
|
|
|
@ -33,8 +33,8 @@ DEarthquake::DEarthquake()
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
DEarthquake::DEarthquake (AActor *center, int intensity, int duration,
|
||||
int damrad, int tremrad, FSoundID quakesound)
|
||||
DEarthquake::DEarthquake (AActor *center, int intensityX, int intensityY, int intensityZ, int duration,
|
||||
int damrad, int tremrad, FSoundID quakesound, int flags)
|
||||
: DThinker(STAT_EARTHQUAKE)
|
||||
{
|
||||
m_QuakeSFX = quakesound;
|
||||
|
@ -42,8 +42,11 @@ DEarthquake::DEarthquake (AActor *center, int intensity, int duration,
|
|||
// Radii are specified in tile units (64 pixels)
|
||||
m_DamageRadius = damrad << (FRACBITS);
|
||||
m_TremorRadius = tremrad << (FRACBITS);
|
||||
m_Intensity = intensity;
|
||||
m_IntensityX = intensityX;
|
||||
m_IntensityY = intensityY;
|
||||
m_IntensityZ = intensityZ;
|
||||
m_Countdown = duration;
|
||||
m_Flags = flags;
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
@ -55,9 +58,19 @@ DEarthquake::DEarthquake (AActor *center, int intensity, int duration,
|
|||
void DEarthquake::Serialize (FArchive &arc)
|
||||
{
|
||||
Super::Serialize (arc);
|
||||
arc << m_Spot << m_Intensity << m_Countdown
|
||||
arc << m_Spot << m_IntensityX << m_Countdown
|
||||
<< m_TremorRadius << m_DamageRadius
|
||||
<< m_QuakeSFX;
|
||||
if (SaveVersion < 4519)
|
||||
{
|
||||
m_IntensityY = m_IntensityX;
|
||||
m_IntensityZ = 0;
|
||||
m_Flags = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
arc << m_IntensityY << m_IntensityZ << m_Flags;
|
||||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
@ -102,7 +115,18 @@ void DEarthquake::Tick ()
|
|||
}
|
||||
// Thrust player around
|
||||
angle_t an = victim->angle + ANGLE_1*pr_quake();
|
||||
P_ThrustMobj (victim, an, m_Intensity << (FRACBITS-1));
|
||||
if (m_IntensityX == m_IntensityY)
|
||||
{ // Thrust in a circle
|
||||
P_ThrustMobj (victim, an, m_IntensityX << (FRACBITS-1));
|
||||
}
|
||||
else
|
||||
{ // Thrust in an ellipse
|
||||
an >>= ANGLETOFINESHIFT;
|
||||
// So this is actually completely wrong, but it ought to be good
|
||||
// enough. Otherwise, I'd have to use tangents and square roots.
|
||||
victim->velx += FixedMul(m_IntensityX << (FRACBITS-1), finecosine[an]);
|
||||
victim->vely += FixedMul(m_IntensityY << (FRACBITS-1), finesine[an]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -126,17 +150,20 @@ void DEarthquake::Tick ()
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
int DEarthquake::StaticGetQuakeIntensity (AActor *victim)
|
||||
int DEarthquake::StaticGetQuakeIntensities(AActor *victim,
|
||||
int &x, int &y, int &z, int &relx, int &rely, int &relz)
|
||||
{
|
||||
int intensity = 0;
|
||||
TThinkerIterator<DEarthquake> iterator (STAT_EARTHQUAKE);
|
||||
DEarthquake *quake;
|
||||
|
||||
if (victim->player != NULL && (victim->player->cheats & CF_NOCLIP))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
x = y = z = relx = rely = 0;
|
||||
|
||||
TThinkerIterator<DEarthquake> iterator(STAT_EARTHQUAKE);
|
||||
DEarthquake *quake;
|
||||
int count = 0;
|
||||
|
||||
while ( (quake = iterator.Next()) != NULL)
|
||||
{
|
||||
if (quake->m_Spot != NULL)
|
||||
|
@ -145,12 +172,23 @@ int DEarthquake::StaticGetQuakeIntensity (AActor *victim)
|
|||
victim->y - quake->m_Spot->y);
|
||||
if (dist < quake->m_TremorRadius)
|
||||
{
|
||||
if (intensity < quake->m_Intensity)
|
||||
intensity = quake->m_Intensity;
|
||||
++count;
|
||||
if (quake->m_Flags & QF_RELATIVE)
|
||||
{
|
||||
relx = MAX(relx, quake->m_IntensityX);
|
||||
rely = MAX(rely, quake->m_IntensityY);
|
||||
relz = MAX(relz, quake->m_IntensityZ);
|
||||
}
|
||||
else
|
||||
{
|
||||
x = MAX(x, quake->m_IntensityX);
|
||||
y = MAX(y, quake->m_IntensityY);
|
||||
z = MAX(z, quake->m_IntensityZ);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return intensity;
|
||||
return count;
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
@ -159,18 +197,20 @@ int DEarthquake::StaticGetQuakeIntensity (AActor *victim)
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
bool P_StartQuake (AActor *activator, int tid, int intensity, int duration, int damrad, int tremrad, FSoundID quakesfx)
|
||||
bool P_StartQuakeXYZ(AActor *activator, int tid, int intensityX, int intensityY, int intensityZ, int duration, int damrad, int tremrad, FSoundID quakesfx, int flags)
|
||||
{
|
||||
AActor *center;
|
||||
bool res = false;
|
||||
|
||||
intensity = clamp (intensity, 1, 9);
|
||||
if (intensityX) intensityX = clamp(intensityX, 1, 9);
|
||||
if (intensityY) intensityY = clamp(intensityY, 1, 9);
|
||||
if (intensityZ) intensityZ = clamp(intensityZ, 1, 9);
|
||||
|
||||
if (tid == 0)
|
||||
{
|
||||
if (activator != NULL)
|
||||
{
|
||||
new DEarthquake(activator, intensity, duration, damrad, tremrad, quakesfx);
|
||||
new DEarthquake(activator, intensityX, intensityY, intensityZ, duration, damrad, tremrad, quakesfx, flags);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -180,9 +220,14 @@ bool P_StartQuake (AActor *activator, int tid, int intensity, int duration, int
|
|||
while ( (center = iterator.Next ()) )
|
||||
{
|
||||
res = true;
|
||||
new DEarthquake (center, intensity, duration, damrad, tremrad, quakesfx);
|
||||
new DEarthquake(center, intensityX, intensityY, intensityZ, duration, damrad, tremrad, quakesfx, flags);
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
bool P_StartQuake(AActor *activator, int tid, int intensity, int duration, int damrad, int tremrad, FSoundID quakesfx)
|
||||
{ //Maintains original behavior by passing 0 to intensityZ, and flags.
|
||||
return P_StartQuakeXYZ(activator, tid, intensity, intensity, 0, duration, damrad, tremrad, quakesfx, 0);
|
||||
}
|
||||
|
|
|
@ -131,23 +131,28 @@ protected:
|
|||
DFlashFader ();
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
QF_RELATIVE = 1,
|
||||
};
|
||||
|
||||
class DEarthquake : public DThinker
|
||||
{
|
||||
DECLARE_CLASS (DEarthquake, DThinker)
|
||||
HAS_OBJECT_POINTERS
|
||||
public:
|
||||
DEarthquake (AActor *center, int intensity, int duration, int damrad, int tremrad, FSoundID quakesfx);
|
||||
DEarthquake(AActor *center, int intensityX, int intensityY, int intensityZ, int duration, int damrad, int tremrad, FSoundID quakesfx, int flags);
|
||||
|
||||
void Serialize (FArchive &arc);
|
||||
void Tick ();
|
||||
|
||||
TObjPtr<AActor> m_Spot;
|
||||
fixed_t m_TremorRadius, m_DamageRadius;
|
||||
int m_Intensity;
|
||||
int m_Countdown;
|
||||
FSoundID m_QuakeSFX;
|
||||
int m_Flags;
|
||||
int m_IntensityX, m_IntensityY, m_IntensityZ;
|
||||
|
||||
static int StaticGetQuakeIntensity (AActor *viewer);
|
||||
static int StaticGetQuakeIntensities(AActor *viewer, int &x, int &y, int &z, int &relx, int &rely, int &relz);
|
||||
|
||||
private:
|
||||
DEarthquake ();
|
||||
|
|
|
@ -98,8 +98,7 @@ Bit16s envelope_calcsin0(Bit16u phase, Bit16u envelope) {
|
|||
phase &= 0x3ff;
|
||||
Bit16u out = 0;
|
||||
Bit16u neg = 0;
|
||||
if (phase & 0x200 && (phase & 0x1ff)) {
|
||||
phase--;
|
||||
if (phase & 0x200) {
|
||||
neg = ~0;
|
||||
}
|
||||
if (phase & 0x100) {
|
||||
|
@ -154,8 +153,7 @@ Bit16s envelope_calcsin4(Bit16u phase, Bit16u envelope) {
|
|||
phase &= 0x3ff;
|
||||
Bit16u out = 0;
|
||||
Bit16u neg = 0;
|
||||
if ((phase & 0x300) == 0x100 && (phase & 0xff)) {
|
||||
phase--;
|
||||
if ((phase & 0x300) == 0x100) {
|
||||
neg = ~0;
|
||||
}
|
||||
if (phase & 0x200) {
|
||||
|
@ -188,8 +186,7 @@ Bit16s envelope_calcsin5(Bit16u phase, Bit16u envelope) {
|
|||
Bit16s envelope_calcsin6(Bit16u phase, Bit16u envelope) {
|
||||
phase &= 0x3ff;
|
||||
Bit16u neg = 0;
|
||||
if (phase & 0x200 && (phase & 0x1ff)) {
|
||||
phase--;
|
||||
if (phase & 0x200) {
|
||||
neg = ~0;
|
||||
}
|
||||
return envelope_calcexp(envelope << 3) ^ neg;
|
||||
|
@ -199,8 +196,7 @@ Bit16s envelope_calcsin7(Bit16u phase, Bit16u envelope) {
|
|||
phase &= 0x3ff;
|
||||
Bit16u out = 0;
|
||||
Bit16u neg = 0;
|
||||
if (phase & 0x200 && (phase & 0x1ff)) {
|
||||
phase--;
|
||||
if (phase & 0x200) {
|
||||
neg = ~0;
|
||||
phase = (phase & 0x1ff) ^ 0x1ff;
|
||||
}
|
||||
|
@ -976,4 +972,4 @@ NukedOPL3::NukedOPL3(bool stereo) {
|
|||
|
||||
OPLEmul *NukedOPL3Create(bool stereo) {
|
||||
return new NukedOPL3(stereo);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2314,6 +2314,16 @@ void P_ZMovement (AActor *mo, fixed_t oldfloorz)
|
|||
}
|
||||
}
|
||||
|
||||
// Hexen compatibility handling for floatbobbing. Ugh...
|
||||
// Hexen yanked all items to the floor, except those being spawned at map start in the air.
|
||||
// Those were kept at their original height.
|
||||
// Do this only if the item was actually spawned by the map above ground to avoid problems.
|
||||
if (mo->special1 > 0 && (mo->flags2 & MF2_FLOATBOB) && (ib_compatflags & BCOMPATF_FLOATBOB))
|
||||
{
|
||||
mo->z = mo->floorz + mo->special1;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// adjust height
|
||||
//
|
||||
|
@ -2616,8 +2626,6 @@ void P_NightmareRespawn (AActor *mobj)
|
|||
z = ONCEILINGZ;
|
||||
else if (info->flags2 & MF2_SPAWNFLOAT)
|
||||
z = FLOATRANDZ;
|
||||
else if (info->flags2 & MF2_FLOATBOB)
|
||||
z = mobj->SpawnPoint[2];
|
||||
else
|
||||
z = ONFLOORZ;
|
||||
|
||||
|
@ -4869,7 +4877,13 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
|
|||
mobj = AActor::StaticSpawn (i, x, y, z, NO_REPLACE, true);
|
||||
|
||||
if (z == ONFLOORZ)
|
||||
{
|
||||
mobj->z += mthing->z;
|
||||
if ((mobj->flags2 & MF2_FLOATBOB) && (ib_compatflags & BCOMPATF_FLOATBOB))
|
||||
{
|
||||
mobj->special1 = mthing->z;
|
||||
}
|
||||
}
|
||||
else if (z == ONCEILINGZ)
|
||||
mobj->z -= mthing->z;
|
||||
|
||||
|
@ -4882,7 +4896,11 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
|
|||
else if (mthing->gravity > 0) mobj->gravity = FixedMul(mobj->gravity, mthing->gravity);
|
||||
else mobj->flags &= ~MF_NOGRAVITY;
|
||||
|
||||
P_FindFloorCeiling(mobj, FFCF_SAMESECTOR | FFCF_ONLY3DFLOORS | FFCF_3DRESTRICT);
|
||||
// For Hexen floatbob 'compatibility' we do not really want to alter the floorz.
|
||||
if (mobj->special1 == 0 || !(mobj->flags2 & MF2_FLOATBOB) || !(ib_compatflags & BCOMPATF_FLOATBOB))
|
||||
{
|
||||
P_FindFloorCeiling(mobj, FFCF_SAMESECTOR | FFCF_ONLY3DFLOORS | FFCF_3DRESTRICT);
|
||||
}
|
||||
|
||||
if (!(mobj->flags2 & MF2_ARGSDEFINED))
|
||||
{
|
||||
|
|
|
@ -929,6 +929,7 @@ void P_DoDeferedScripts (void);
|
|||
//
|
||||
// [RH] p_quake.c
|
||||
//
|
||||
bool P_StartQuake (AActor *activator, int tid, int intensity, int duration, int damrad, int tremrad, FSoundID quakesfx);
|
||||
bool P_StartQuakeXYZ(AActor *activator, int tid, int intensityX, int intensityY, int intensityZ, int duration, int damrad, int tremrad, FSoundID quakesfx, int flags);
|
||||
bool P_StartQuake(AActor *activator, int tid, int intensity, int duration, int damrad, int tremrad, FSoundID quakesfx);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -764,6 +764,23 @@ bool R_GetViewInterpolationStatus()
|
|||
return NoInterpolateView;
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// QuakePower
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
static fixed_t QuakePower(fixed_t factor, int intensity)
|
||||
{
|
||||
if (intensity == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return factor * ((pr_torchflicker() % (intensity << 2)) - (intensity << 1));
|
||||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
|
@ -875,13 +892,41 @@ void R_SetupFrame (AActor *actor)
|
|||
|
||||
if (!paused)
|
||||
{
|
||||
int intensity = DEarthquake::StaticGetQuakeIntensity (camera);
|
||||
if (intensity != 0)
|
||||
int intensityX, intensityY, intensityZ, relIntensityX, relIntensityY, relIntensityZ;
|
||||
if (DEarthquake::StaticGetQuakeIntensities(camera,
|
||||
intensityX, intensityY, intensityZ,
|
||||
relIntensityX, relIntensityY, relIntensityZ) > 0)
|
||||
{
|
||||
fixed_t quakefactor = FLOAT2FIXED(r_quakeintensity);
|
||||
|
||||
viewx += quakefactor * ((pr_torchflicker() % (intensity<<2)) - (intensity<<1));
|
||||
viewy += quakefactor * ((pr_torchflicker() % (intensity<<2)) - (intensity<<1));
|
||||
if (relIntensityX != 0)
|
||||
{
|
||||
int ang = (camera->angle) >> ANGLETOFINESHIFT;
|
||||
fixed_t power = QuakePower(quakefactor, relIntensityX);
|
||||
viewx += FixedMul(finecosine[ang], power);
|
||||
viewy += FixedMul(finesine[ang], power);
|
||||
}
|
||||
if (relIntensityY != 0)
|
||||
{
|
||||
int ang = (camera->angle + ANG90) >> ANGLETOFINESHIFT;
|
||||
fixed_t power = QuakePower(quakefactor, relIntensityY);
|
||||
viewx += FixedMul(finecosine[ang], power);
|
||||
viewy += FixedMul(finesine[ang], power);
|
||||
}
|
||||
if (intensityX != 0)
|
||||
{
|
||||
viewx += QuakePower(quakefactor, intensityX);
|
||||
}
|
||||
if (intensityY != 0)
|
||||
{
|
||||
viewy += QuakePower(quakefactor, intensityY);
|
||||
}
|
||||
// FIXME: Relative Z is not relative
|
||||
intensityZ = MAX(intensityZ, relIntensityZ);
|
||||
if (intensityZ != 0)
|
||||
{
|
||||
viewz += QuakePower(quakefactor, intensityZ);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1875,6 +1875,7 @@ enum SIX_Flags
|
|||
SIXF_NOPOINTERS = 0x00400000,
|
||||
SIXF_ORIGINATOR = 0x00800000,
|
||||
SIXF_TRANSFERSPRITEFRAME = 0x01000000,
|
||||
SIXF_TRANSFERROLL = 0x02000000,
|
||||
};
|
||||
|
||||
static bool InitSpawnedItem(AActor *self, AActor *mo, int flags)
|
||||
|
@ -2027,6 +2028,11 @@ static bool InitSpawnedItem(AActor *self, AActor *mo, int flags)
|
|||
mo->frame = self->frame;
|
||||
}
|
||||
|
||||
if (flags & SIXF_TRANSFERROLL)
|
||||
{
|
||||
mo->roll = self->roll;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -4403,6 +4409,28 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Quake)
|
|||
P_StartQuake(self, 0, intensity, duration, damrad, tremrad, sound);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// A_QuakeEx
|
||||
//
|
||||
// Extended version of A_Quake. Takes individual axis into account and can
|
||||
// take a flag.
|
||||
//===========================================================================
|
||||
|
||||
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_QuakeEx)
|
||||
{
|
||||
ACTION_PARAM_START(8);
|
||||
ACTION_PARAM_INT(intensityX, 0);
|
||||
ACTION_PARAM_INT(intensityY, 1);
|
||||
ACTION_PARAM_INT(intensityZ, 2);
|
||||
ACTION_PARAM_INT(duration, 3);
|
||||
ACTION_PARAM_INT(damrad, 4);
|
||||
ACTION_PARAM_INT(tremrad, 5);
|
||||
ACTION_PARAM_SOUND(sound, 6);
|
||||
ACTION_PARAM_INT(flags, 7);
|
||||
P_StartQuakeXYZ(self, 0, intensityX, intensityY, intensityZ, duration, damrad, tremrad, sound, flags);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// A_Weave
|
||||
|
|
|
@ -76,7 +76,7 @@ const char *GetVersionString();
|
|||
|
||||
// Use 4500 as the base git save version, since it's higher than the
|
||||
// SVN revision ever got.
|
||||
#define SAVEVER 4518
|
||||
#define SAVEVER 4519
|
||||
|
||||
#define SAVEVERSTRINGIFY2(x) #x
|
||||
#define SAVEVERSTRINGIFY(x) SAVEVERSTRINGIFY2(x)
|
||||
|
|
|
@ -299,6 +299,7 @@ ACTOR Actor native //: Thinker
|
|||
action native A_SetUserArray(name varname, int index, int value);
|
||||
action native A_SetSpecial(int spec, int arg0 = 0, int arg1 = 0, int arg2 = 0, int arg3 = 0, int arg4 = 0);
|
||||
action native A_Quake(int intensity, int duration, int damrad, int tremrad, sound sfx = "world/quake");
|
||||
action native A_QuakeEx(int intensityX, int intensityY, int intensityZ, int duration, int damrad, int tremrad, sound sfx = "world/quake", int flags = 0);
|
||||
action native A_SetTics(int tics);
|
||||
action native A_SetDamageType(name damagetype);
|
||||
action native A_DropItem(class<Actor> item, int dropamount = -1, int chance = 256);
|
||||
|
|
|
@ -73,6 +73,7 @@ const int SXF_SETTRACER = 1 << 21;
|
|||
const int SXF_NOPOINTERS = 1 << 22;
|
||||
const int SXF_ORIGINATOR = 1 << 23;
|
||||
const int SXF_TRANSFERSPRITEFRAME = 1 << 24;
|
||||
const int SXF_TRANSFERROLL = 1 << 25;
|
||||
|
||||
// Flags for A_Chase
|
||||
const int CHF_FASTCHASE = 1;
|
||||
|
@ -457,6 +458,11 @@ enum
|
|||
FAF_NODISTFACTOR = 8,
|
||||
};
|
||||
|
||||
// Flags for A_QuakeEx
|
||||
enum
|
||||
{
|
||||
QF_RELATIVE = 1,
|
||||
};
|
||||
|
||||
// This is only here to provide one global variable for testing.
|
||||
native int testglobalvar;
|
||||
|
|
|
@ -221,7 +221,6 @@ ACTOR BagOfHolding : BackpackItem 8
|
|||
Inventory.PickupMessage "$TXT_ITEMBAGOFHOLDING"
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
|
|
|
@ -6,7 +6,6 @@ Actor SilverShield : BasicArmorPickup 85
|
|||
Game Heretic
|
||||
SpawnID 68
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
Inventory.Pickupmessage "$TXT_ITEMSHIELD1"
|
||||
Inventory.Icon "SHLDA0"
|
||||
Armor.Savepercent 50
|
||||
|
@ -26,7 +25,6 @@ Actor EnchantedShield : BasicArmorPickup 31
|
|||
Game Heretic
|
||||
SpawnID 69
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
Inventory.Pickupmessage "$TXT_ITEMSHIELD2"
|
||||
Inventory.Icon "SHD2A0"
|
||||
Armor.Savepercent 75
|
||||
|
|
|
@ -7,7 +7,6 @@ ACTOR SuperMap : MapRevealer 35
|
|||
+COUNTITEM
|
||||
+INVENTORY.ALWAYSPICKUP
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
Inventory.MaxAmount 0
|
||||
Inventory.PickupMessage "$TXT_ITEMSUPERMAP"
|
||||
States
|
||||
|
@ -27,7 +26,6 @@ ACTOR ArtiInvisibility : PowerupGiver 75
|
|||
SpawnID 135
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
+INVENTORY.PICKUPFLASH
|
||||
RenderStyle Translucent
|
||||
Alpha 0.4
|
||||
|
@ -53,7 +51,6 @@ ACTOR ArtiTomeOfPower : PowerupGiver 86 native
|
|||
SpawnID 134
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
+INVENTORY.PICKUPFLASH
|
||||
Inventory.Icon "ARTIPWBK"
|
||||
Powerup.Type Weaponlevel2
|
||||
|
@ -97,7 +94,6 @@ ACTOR ArtiTimeBomb : Inventory 34 native
|
|||
SpawnID 72
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
+INVENTORY.PICKUPFLASH
|
||||
+INVENTORY.INVBAR
|
||||
+INVENTORY.FANCYPICKUPSOUND
|
||||
|
|
|
@ -4,7 +4,6 @@ ACTOR ArtiBlastRadius : CustomInventory 10110
|
|||
Game Hexen
|
||||
SpawnID 74
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
Inventory.DefMaxAmount
|
||||
Inventory.PickupFlash "PickupFlash"
|
||||
+INVBAR +FANCYPICKUPSOUND
|
||||
|
|
|
@ -7,7 +7,6 @@ ACTOR ArtiBoostArmor : Inventory 8041 native
|
|||
SpawnID 22
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
Inventory.DefMaxAmount
|
||||
Inventory.PickupFlash "PickupFlash"
|
||||
+INVBAR +FANCYPICKUPSOUND
|
||||
|
|
|
@ -8,7 +8,6 @@ ACTOR ClericWeaponPiece : WeaponPiece
|
|||
Inventory.ForbiddenTo FighterPlayer, MagePlayer
|
||||
WeaponPiece.Weapon CWeapWraithverge
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
}
|
||||
|
||||
// Cleric Weapon Piece 1 ----------------------------------------------------
|
||||
|
|
|
@ -8,7 +8,6 @@ ACTOR FighterWeaponPiece : WeaponPiece
|
|||
Inventory.ForbiddenTo ClericPlayer, MagePlayer
|
||||
WeaponPiece.Weapon FWeapQuietus
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
}
|
||||
|
||||
// Fighter Weapon Piece 1 ---------------------------------------------------
|
||||
|
|
|
@ -99,7 +99,6 @@ ACTOR ArtiPoisonBag : Inventory 8000 native
|
|||
Game Hexen
|
||||
SpawnID 72
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
Inventory.DefMaxAmount
|
||||
Inventory.PickupFlash "PickupFlash"
|
||||
+INVBAR +FANCYPICKUPSOUND
|
||||
|
|
|
@ -6,7 +6,6 @@ ACTOR ArtiHealingRadius : Inventory 10120 native
|
|||
Game Hexen
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
Inventory.DefMaxAmount
|
||||
+INVENTORY.INVBAR
|
||||
+INVENTORY.PICKUPFLASH
|
||||
|
|
|
@ -8,7 +8,6 @@ ACTOR MageWeaponPiece : WeaponPiece
|
|||
Inventory.ForbiddenTo FighterPlayer, ClericPlayer
|
||||
WeaponPiece.Weapon MWeapBloodscourge
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
}
|
||||
|
||||
// Mage Weapon Piece 1 ------------------------------------------------------
|
||||
|
|
|
@ -11,7 +11,6 @@ ACTOR Mana1 : Ammo 122
|
|||
Radius 8
|
||||
Height 8
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
Inventory.Icon "MAN1I0"
|
||||
Inventory.PickupMessage "$TXT_MANA_1"
|
||||
States
|
||||
|
@ -35,7 +34,6 @@ ACTOR Mana2 : Ammo 124
|
|||
Radius 8
|
||||
Height 8
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
Inventory.Icon "MAN2G0"
|
||||
Inventory.PickupMessage "$TXT_MANA_2"
|
||||
States
|
||||
|
@ -55,7 +53,6 @@ ACTOR Mana3 : CustomInventory 8004
|
|||
Radius 8
|
||||
Height 8
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
Inventory.PickupMessage "$TXT_MANA_BOTH"
|
||||
States
|
||||
{
|
||||
|
|
|
@ -5,7 +5,6 @@ ACTOR ArtiSpeedBoots : PowerupGiver 8002
|
|||
Game Hexen
|
||||
SpawnID 13
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
+COUNTITEM
|
||||
+INVENTORY.PICKUPFLASH
|
||||
Inventory.Icon ARTISPED
|
||||
|
|
|
@ -7,7 +7,6 @@ ACTOR ArtiDarkServant : Inventory 86 native
|
|||
SpawnID 16
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
Inventory.RespawnTics 4230
|
||||
Inventory.DefMaxAmount
|
||||
Inventory.PickupFlash "PickupFlash"
|
||||
|
|
|
@ -7,7 +7,6 @@ ACTOR ArtiTeleportOther : Inventory 10040 native
|
|||
SpawnID 17
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
+INVENTORY.INVBAR
|
||||
+INVENTORY.PICKUPFLASH
|
||||
+INVENTORY.FANCYPICKUPSOUND
|
||||
|
|
|
@ -31,7 +31,6 @@ ACTOR ArtiEgg : CustomInventory 30
|
|||
SpawnID 14
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
+INVENTORY.INVBAR
|
||||
+INVENTORY.PICKUPFLASH
|
||||
+INVENTORY.FANCYPICKUPSOUND
|
||||
|
@ -86,7 +85,6 @@ ACTOR ArtiPork : CustomInventory 30
|
|||
SpawnID 14
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
+INVENTORY.INVBAR
|
||||
+INVENTORY.PICKUPFLASH
|
||||
+INVENTORY.FANCYPICKUPSOUND
|
||||
|
|
|
@ -7,7 +7,6 @@ ACTOR ArtiTeleport : Inventory 36 native
|
|||
SpawnID 18
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
+INVENTORY.INVBAR
|
||||
+INVENTORY.PICKUPFLASH
|
||||
+INVENTORY.FANCYPICKUPSOUND
|
||||
|
|
|
@ -8,7 +8,6 @@ ACTOR ArtiHealth : HealthPickup 82
|
|||
Health 25
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
+INVENTORY.PICKUPFLASH
|
||||
+INVENTORY.FANCYPICKUPSOUND
|
||||
Inventory.Icon ARTIPTN2
|
||||
|
@ -33,7 +32,6 @@ ACTOR ArtiSuperHealth : HealthPickup 32
|
|||
Health 100
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
+INVENTORY.PICKUPFLASH
|
||||
+INVENTORY.FANCYPICKUPSOUND
|
||||
Inventory.Icon ARTISPHL
|
||||
|
@ -57,7 +55,6 @@ ACTOR ArtiFly : PowerupGiver 83
|
|||
SpawnID 15
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
+INVENTORY.PICKUPFLASH
|
||||
+INVENTORY.INTERHUBSTRIP
|
||||
Inventory.RespawnTics 4230
|
||||
|
@ -81,7 +78,6 @@ ACTOR ArtiInvulnerability : PowerupGiver 84
|
|||
SpawnID 133
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
+INVENTORY.PICKUPFLASH
|
||||
Inventory.RespawnTics 4230
|
||||
Inventory.Icon ARTIINVU
|
||||
|
@ -105,7 +101,6 @@ ACTOR ArtiInvulnerability2 : PowerupGiver 84
|
|||
SpawnID 133
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
+INVENTORY.PICKUPFLASH
|
||||
Inventory.RespawnTics 4230
|
||||
Inventory.Icon ARTIDEFN
|
||||
|
@ -128,7 +123,6 @@ ACTOR ArtiTorch : PowerupGiver 33
|
|||
SpawnID 73
|
||||
+COUNTITEM
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
+INVENTORY.PICKUPFLASH
|
||||
Inventory.Icon ARTITRCH
|
||||
Inventory.PickupMessage "$TXT_ARTITORCH"
|
||||
|
|
|
@ -3,7 +3,6 @@ ACTOR CrystalVial : Health 81
|
|||
Game Raven
|
||||
SpawnID 23
|
||||
+FLOATBOB
|
||||
+NOGRAVITY
|
||||
Inventory.Amount 10
|
||||
Inventory.PickupMessage "$TXT_ITEMHEALTH"
|
||||
States
|
||||
|
|
|
@ -198,14 +198,6 @@ E2B5D1400279335811C1C1C0B437D9C8 // Deathknights of the Dark Citadel, map54
|
|||
clearlineflags 1069 0x200
|
||||
}
|
||||
|
||||
CBDE77E3ACB4B166D53C1812E5C72F54 // Hexen IWAD map04
|
||||
{
|
||||
setthingz 49 0
|
||||
setthingz 50 0
|
||||
setthingz 51 0
|
||||
setthingz 52 0
|
||||
}
|
||||
|
||||
3F249EDD62A3A08F53A6C53CB4C7ABE5 // Artica 3 map01
|
||||
{
|
||||
clearlinespecial 66
|
||||
|
|
Loading…
Reference in a new issue