mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-08 14:01:32 +00:00
cf11cbdb30
SVN r4 (trunk)
229 lines
6.1 KiB
C++
229 lines
6.1 KiB
C++
#include "actor.h"
|
|
#include "a_sharedglobal.h"
|
|
#include "m_random.h"
|
|
#include "gi.h"
|
|
|
|
// Water --------------------------------------------------------------------
|
|
|
|
FState AWaterSplash::States[] =
|
|
{
|
|
#define S_SPLASH 0
|
|
S_NORMAL (SPSH, 'A', 8, NULL, &States[1]),
|
|
S_NORMAL (SPSH, 'B', 8, NULL, &States[2]),
|
|
S_NORMAL (SPSH, 'C', 8, NULL, &States[3]),
|
|
S_NORMAL (SPSH, 'D', 16, NULL, NULL),
|
|
|
|
#define S_SPLASHX (S_SPLASH+4)
|
|
S_NORMAL (SPSH, 'D', 10, NULL, NULL)
|
|
};
|
|
|
|
IMPLEMENT_ACTOR (AWaterSplash, Any, -1, 0)
|
|
PROP_RadiusFixed (2)
|
|
PROP_HeightFixed (4)
|
|
PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF)
|
|
PROP_Flags2 (MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH)
|
|
PROP_Flags3 (MF3_DONTSPLASH|MF3_DONTBLAST)
|
|
|
|
PROP_SpawnState (S_SPLASH)
|
|
PROP_DeathState (S_SPLASHX)
|
|
END_DEFAULTS
|
|
|
|
FState AWaterSplashBase::States[] =
|
|
{
|
|
S_NORMAL (SPSH, 'E', 5, NULL, &States[1]),
|
|
S_NORMAL (SPSH, 'F', 5, NULL, &States[2]),
|
|
S_NORMAL (SPSH, 'G', 5, NULL, &States[3]),
|
|
S_NORMAL (SPSH, 'H', 5, NULL, &States[4]),
|
|
S_NORMAL (SPSH, 'I', 5, NULL, &States[5]),
|
|
S_NORMAL (SPSH, 'J', 5, NULL, &States[6]),
|
|
S_NORMAL (SPSH, 'K', 5, NULL, NULL)
|
|
};
|
|
|
|
IMPLEMENT_ACTOR (AWaterSplashBase, Any, -1, 0)
|
|
PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY)
|
|
PROP_Flags3 (MF3_DONTSPLASH|MF3_DONTBLAST)
|
|
|
|
PROP_SpawnState (0)
|
|
END_DEFAULTS
|
|
|
|
// Lava ---------------------------------------------------------------------
|
|
|
|
FState ALavaSplash::States[] =
|
|
{
|
|
S_BRIGHT (LVAS, 'A', 5, NULL, &States[1]),
|
|
S_BRIGHT (LVAS, 'B', 5, NULL, &States[2]),
|
|
S_BRIGHT (LVAS, 'C', 5, NULL, &States[3]),
|
|
S_BRIGHT (LVAS, 'D', 5, NULL, &States[4]),
|
|
S_BRIGHT (LVAS, 'E', 5, NULL, &States[5]),
|
|
S_BRIGHT (LVAS, 'F', 5, NULL, NULL)
|
|
};
|
|
|
|
IMPLEMENT_ACTOR (ALavaSplash, Any, -1, 0)
|
|
PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY)
|
|
PROP_Flags3 (MF3_DONTSPLASH)
|
|
|
|
PROP_SpawnState (0)
|
|
END_DEFAULTS
|
|
|
|
FState ALavaSmoke::States[] =
|
|
{
|
|
S_BRIGHT (LVAS, 'G', 5, NULL, &States[1]),
|
|
S_BRIGHT (LVAS, 'H', 5, NULL, &States[2]),
|
|
S_BRIGHT (LVAS, 'I', 5, NULL, &States[3]),
|
|
S_BRIGHT (LVAS, 'J', 5, NULL, &States[4]),
|
|
S_BRIGHT (LVAS, 'K', 5, NULL, NULL)
|
|
};
|
|
|
|
IMPLEMENT_ACTOR (ALavaSmoke, Any, -1, 0)
|
|
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP)
|
|
PROP_RenderStyle (STYLE_Translucent)
|
|
|
|
PROP_SpawnState (0)
|
|
END_DEFAULTS
|
|
|
|
AT_GAME_SET (LavaSmoke)
|
|
{
|
|
ALavaSmoke *def = GetDefault<ALavaSmoke>();
|
|
def->alpha = (gameinfo.gametype == GAME_Heretic ? HR_SHADOW : HX_SHADOW);
|
|
}
|
|
|
|
// Sludge -------------------------------------------------------------------
|
|
|
|
FState ASludgeChunk::States[] =
|
|
{
|
|
#define S_SLUDGECHUNK 0
|
|
S_NORMAL (SLDG, 'A', 8, NULL, &States[1]),
|
|
S_NORMAL (SLDG, 'B', 8, NULL, &States[2]),
|
|
S_NORMAL (SLDG, 'C', 8, NULL, &States[3]),
|
|
S_NORMAL (SLDG, 'D', 8, NULL, NULL),
|
|
|
|
#define S_SLUDGECHUNKX (S_SLUDGECHUNK+4)
|
|
S_NORMAL (SLDG, 'D', 6, NULL, NULL)
|
|
};
|
|
|
|
IMPLEMENT_ACTOR (ASludgeChunk, Any, -1, 0)
|
|
PROP_RadiusFixed (2)
|
|
PROP_HeightFixed (4)
|
|
PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF)
|
|
PROP_Flags2 (MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH)
|
|
PROP_Flags3 (MF3_DONTSPLASH)
|
|
|
|
PROP_SpawnState (S_SLUDGECHUNK)
|
|
PROP_DeathState (S_SLUDGECHUNKX)
|
|
END_DEFAULTS
|
|
|
|
FState ASludgeSplash::States[] =
|
|
{
|
|
S_NORMAL (SLDG, 'E', 6, NULL, &States[1]),
|
|
S_NORMAL (SLDG, 'F', 6, NULL, &States[2]),
|
|
S_NORMAL (SLDG, 'G', 6, NULL, &States[3]),
|
|
S_NORMAL (SLDG, 'H', 6, NULL, NULL)
|
|
};
|
|
|
|
IMPLEMENT_ACTOR (ASludgeSplash, Any, -1, 0)
|
|
PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY)
|
|
PROP_Flags3 (MF3_DONTSPLASH)
|
|
|
|
PROP_SpawnState (0)
|
|
END_DEFAULTS
|
|
|
|
/*
|
|
* These next four classes are not used by me anywhere.
|
|
* They are for people who want to use them in a TERRAIN lump.
|
|
*/
|
|
|
|
class ABloodSplash : public AActor
|
|
{
|
|
DECLARE_ACTOR (ABloodSplash, AActor);
|
|
};
|
|
class ABloodSplashBase : public AActor
|
|
{
|
|
DECLARE_ACTOR (ABloodSplashBase, AActor);
|
|
};
|
|
class ASlimeSplash : public AActor
|
|
{
|
|
DECLARE_ACTOR (ASlimeSplash, AActor)
|
|
};
|
|
class ASlimeChunk : public AActor
|
|
{
|
|
DECLARE_ACTOR (ASlimeChunk, AActor)
|
|
};
|
|
|
|
// Blood (water with a different sprite) ------------------------------------
|
|
|
|
FState ABloodSplash::States[] =
|
|
{
|
|
S_NORMAL (BSPH, 'A', 8, NULL, &States[1]),
|
|
S_NORMAL (BSPH, 'B', 8, NULL, &States[2]),
|
|
S_NORMAL (BSPH, 'C', 8, NULL, &States[3]),
|
|
S_NORMAL (BSPH, 'D', 16, NULL, NULL),
|
|
|
|
S_NORMAL (BSPH, 'D', 10, NULL, NULL)
|
|
};
|
|
|
|
IMPLEMENT_ACTOR (ABloodSplash, Any, -1, 0)
|
|
PROP_RadiusFixed (2)
|
|
PROP_HeightFixed (4)
|
|
PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF)
|
|
PROP_Flags2 (MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH)
|
|
PROP_Flags3 (MF3_DONTSPLASH)
|
|
|
|
PROP_SpawnState (0)
|
|
PROP_DeathState (4)
|
|
END_DEFAULTS
|
|
|
|
FState ABloodSplashBase::States[] =
|
|
{
|
|
S_NORMAL (BSPH, 'E', 5, NULL, &States[1]),
|
|
S_NORMAL (BSPH, 'F', 5, NULL, &States[2]),
|
|
S_NORMAL (BSPH, 'G', 5, NULL, &States[3]),
|
|
S_NORMAL (BSPH, 'H', 5, NULL, &States[4]),
|
|
S_NORMAL (BSPH, 'I', 5, NULL, &States[5]),
|
|
S_NORMAL (BSPH, 'J', 5, NULL, &States[6]),
|
|
S_NORMAL (BSPH, 'K', 5, NULL, NULL)
|
|
};
|
|
|
|
IMPLEMENT_ACTOR (ABloodSplashBase, Any, -1, 0)
|
|
PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY)
|
|
PROP_Flags3 (MF3_DONTSPLASH)
|
|
|
|
PROP_SpawnState (0)
|
|
END_DEFAULTS
|
|
|
|
// Slime (sludge with a different sprite) -----------------------------------
|
|
|
|
FState ASlimeChunk::States[] =
|
|
{
|
|
S_NORMAL (SLIM, 'A', 8, NULL, &States[1]),
|
|
S_NORMAL (SLIM, 'B', 8, NULL, &States[2]),
|
|
S_NORMAL (SLIM, 'C', 8, NULL, &States[3]),
|
|
S_NORMAL (SLIM, 'D', 8, NULL, NULL),
|
|
|
|
S_NORMAL (SLIM, 'D', 6, NULL, NULL)
|
|
};
|
|
|
|
IMPLEMENT_ACTOR (ASlimeChunk, Any, -1, 0)
|
|
PROP_RadiusFixed (2)
|
|
PROP_HeightFixed (4)
|
|
PROP_Flags (MF_NOBLOCKMAP|MF_MISSILE|MF_DROPOFF)
|
|
PROP_Flags2 (MF2_NOTELEPORT|MF2_LOGRAV|MF2_CANNOTPUSH)
|
|
PROP_Flags3 (MF3_DONTSPLASH)
|
|
|
|
PROP_SpawnState (0)
|
|
PROP_DeathState (4)
|
|
END_DEFAULTS
|
|
|
|
FState ASlimeSplash::States[] =
|
|
{
|
|
S_NORMAL (SLIM, 'E', 6, NULL, &States[1]),
|
|
S_NORMAL (SLIM, 'F', 6, NULL, &States[2]),
|
|
S_NORMAL (SLIM, 'G', 6, NULL, &States[3]),
|
|
S_NORMAL (SLIM, 'H', 6, NULL, NULL)
|
|
};
|
|
|
|
IMPLEMENT_ACTOR (ASlimeSplash, Any, -1, 0)
|
|
PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY)
|
|
PROP_Flags3 (MF3_DONTSPLASH)
|
|
|
|
PROP_SpawnState (0)
|
|
END_DEFAULTS
|