mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-24 21:11:39 +00:00
- scriptified the teleport fog.
This commit is contained in:
parent
a8beb51ca3
commit
f759b6757a
5 changed files with 30 additions and 38 deletions
|
@ -116,7 +116,7 @@ bool P_MorphPlayer (player_t *activator, player_t *p, PClassPlayerPawn *spawntyp
|
||||||
morphed->flags |= actor->flags & (MF_SHADOW|MF_NOGRAVITY);
|
morphed->flags |= actor->flags & (MF_SHADOW|MF_NOGRAVITY);
|
||||||
morphed->flags2 |= actor->flags2 & MF2_FLY;
|
morphed->flags2 |= actor->flags2 & MF2_FLY;
|
||||||
morphed->flags3 |= actor->flags3 & MF3_GHOST;
|
morphed->flags3 |= actor->flags3 & MF3_GHOST;
|
||||||
AActor *eflash = Spawn(((enter_flash) ? enter_flash : RUNTIME_CLASS(ATeleportFog)), actor->PosPlusZ(TELEFOGHEIGHT), ALLOW_REPLACE);
|
AActor *eflash = Spawn(((enter_flash) ? enter_flash : PClass::FindActor("TeleportFog")), actor->PosPlusZ(TELEFOGHEIGHT), ALLOW_REPLACE);
|
||||||
actor->player = nullptr;
|
actor->player = nullptr;
|
||||||
actor->alternative = morphed;
|
actor->alternative = morphed;
|
||||||
actor->flags &= ~(MF_SOLID|MF_SHOOTABLE);
|
actor->flags &= ~(MF_SOLID|MF_SHOOTABLE);
|
||||||
|
@ -128,7 +128,7 @@ bool P_MorphPlayer (player_t *activator, player_t *p, PClassPlayerPawn *spawntyp
|
||||||
p->MorphedPlayerClass = spawntype;
|
p->MorphedPlayerClass = spawntype;
|
||||||
|
|
||||||
p->MorphStyle = style;
|
p->MorphStyle = style;
|
||||||
p->MorphExitFlash = (exit_flash) ? exit_flash : RUNTIME_CLASS(ATeleportFog);
|
p->MorphExitFlash = (exit_flash) ? exit_flash : PClass::FindActor("TeleportFog");
|
||||||
p->health = morphed->health;
|
p->health = morphed->health;
|
||||||
p->mo = morphed;
|
p->mo = morphed;
|
||||||
p->Vel.X = p->Vel.Y = 0;
|
p->Vel.X = p->Vel.Y = 0;
|
||||||
|
@ -416,7 +416,7 @@ bool P_MorphMonster (AActor *actor, PClassActor *spawntype, int duration, int st
|
||||||
|
|
||||||
morphed->UnmorphTime = level.time + ((duration) ? duration : MORPHTICS) + pr_morphmonst();
|
morphed->UnmorphTime = level.time + ((duration) ? duration : MORPHTICS) + pr_morphmonst();
|
||||||
morphed->MorphStyle = style;
|
morphed->MorphStyle = style;
|
||||||
morphed->MorphExitFlash = (exit_flash) ? exit_flash : RUNTIME_CLASS(ATeleportFog);
|
morphed->MorphExitFlash = (exit_flash) ? exit_flash : PClass::FindActor("TeleportFog");
|
||||||
morphed->FlagsSave = actor->flags & ~MF_JUSTHIT;
|
morphed->FlagsSave = actor->flags & ~MF_JUSTHIT;
|
||||||
morphed->special = actor->special;
|
morphed->special = actor->special;
|
||||||
memcpy (morphed->args, actor->args, sizeof(actor->args));
|
memcpy (morphed->args, actor->args, sizeof(actor->args));
|
||||||
|
@ -434,7 +434,7 @@ bool P_MorphMonster (AActor *actor, PClassActor *spawntype, int duration, int st
|
||||||
actor->flags &= ~(MF_SOLID|MF_SHOOTABLE);
|
actor->flags &= ~(MF_SOLID|MF_SHOOTABLE);
|
||||||
actor->flags |= MF_UNMORPHED;
|
actor->flags |= MF_UNMORPHED;
|
||||||
actor->renderflags |= RF_INVISIBLE;
|
actor->renderflags |= RF_INVISIBLE;
|
||||||
AActor *eflash = Spawn(((enter_flash) ? enter_flash : RUNTIME_CLASS(ATeleportFog)), actor->PosPlusZ(TELEFOGHEIGHT), ALLOW_REPLACE);
|
AActor *eflash = Spawn(((enter_flash) ? enter_flash : PClass::FindActor("TeleportFog")), actor->PosPlusZ(TELEFOGHEIGHT), ALLOW_REPLACE);
|
||||||
if (eflash)
|
if (eflash)
|
||||||
eflash->target = morphed;
|
eflash->target = morphed;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -76,13 +76,6 @@ private:
|
||||||
DImpactDecal();
|
DImpactDecal();
|
||||||
};
|
};
|
||||||
|
|
||||||
class ATeleportFog : public AActor
|
|
||||||
{
|
|
||||||
DECLARE_CLASS (ATeleportFog, AActor)
|
|
||||||
public:
|
|
||||||
void PostBeginPlay ();
|
|
||||||
};
|
|
||||||
|
|
||||||
class ASkyViewpoint : public AActor
|
class ASkyViewpoint : public AActor
|
||||||
{
|
{
|
||||||
DECLARE_CLASS (ASkyViewpoint, AActor)
|
DECLARE_CLASS (ASkyViewpoint, AActor)
|
||||||
|
|
|
@ -109,10 +109,10 @@ DEFINE_CLASS_PROPERTY(type, S, DynamicLight)
|
||||||
// which is controlled by flags
|
// which is controlled by flags
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
IMPLEMENT_CLASS (ADynamicLight, false, false)
|
IMPLEMENT_CLASS(ADynamicLight, false, false)
|
||||||
IMPLEMENT_CLASS (AVavoomLight, false, false)
|
IMPLEMENT_CLASS(AVavoomLight, false, false)
|
||||||
IMPLEMENT_CLASS (AVavoomLightWhite, false, false)
|
IMPLEMENT_CLASS(AVavoomLightWhite, false, false)
|
||||||
IMPLEMENT_CLASS (AVavoomLightColor, false, false)
|
IMPLEMENT_CLASS(AVavoomLightColor, false, false)
|
||||||
|
|
||||||
void AVavoomLight::BeginPlay ()
|
void AVavoomLight::BeginPlay ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -48,28 +48,6 @@ extern void P_CalcHeight (player_t *player);
|
||||||
|
|
||||||
CVAR (Bool, telezoom, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG);
|
CVAR (Bool, telezoom, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG);
|
||||||
|
|
||||||
IMPLEMENT_CLASS(ATeleportFog, false, false)
|
|
||||||
|
|
||||||
void ATeleportFog::PostBeginPlay ()
|
|
||||||
{
|
|
||||||
Super::PostBeginPlay ();
|
|
||||||
S_Sound (this, CHAN_BODY, "misc/teleport", 1, ATTN_NORM);
|
|
||||||
switch (gameinfo.gametype)
|
|
||||||
{
|
|
||||||
case GAME_Hexen:
|
|
||||||
case GAME_Heretic:
|
|
||||||
SetState(FindState(NAME_Raven));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GAME_Strife:
|
|
||||||
SetState(FindState(NAME_Strife));
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// P_SpawnTeleportFog
|
// P_SpawnTeleportFog
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
class TeleportFog : Actor native
|
class TeleportFog : Actor
|
||||||
{
|
{
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,27 @@ class TeleportFog : Actor native
|
||||||
TFOG ABCDEFEDCB 6 Bright;
|
TFOG ABCDEFEDCB 6 Bright;
|
||||||
Stop;
|
Stop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override void PostBeginPlay ()
|
||||||
|
{
|
||||||
|
Super.PostBeginPlay ();
|
||||||
|
A_PlaySound ("misc/teleport", CHAN_BODY);
|
||||||
|
switch (gametype())
|
||||||
|
{
|
||||||
|
case GAME_Hexen:
|
||||||
|
case GAME_Heretic:
|
||||||
|
SetStateLabel("Raven");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GAME_Strife:
|
||||||
|
SetStateLabel("Strife");
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue