mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-01-31 05:40:44 +00:00
- scriptified some trivial stuff from g_shared.
This commit is contained in:
parent
0c969746d0
commit
a13e23dbe6
33 changed files with 276 additions and 502 deletions
|
@ -1116,25 +1116,19 @@ set (PCH_SOURCES
|
||||||
g_shared/a_fastprojectile.cpp
|
g_shared/a_fastprojectile.cpp
|
||||||
g_shared/a_flashfader.cpp
|
g_shared/a_flashfader.cpp
|
||||||
g_shared/a_fountain.cpp
|
g_shared/a_fountain.cpp
|
||||||
g_shared/a_hatetarget.cpp
|
|
||||||
g_shared/a_keys.cpp
|
g_shared/a_keys.cpp
|
||||||
g_shared/a_lightning.cpp
|
g_shared/a_lightning.cpp
|
||||||
g_shared/a_mapmarker.cpp
|
|
||||||
g_shared/a_morph.cpp
|
g_shared/a_morph.cpp
|
||||||
g_shared/a_movingcamera.cpp
|
g_shared/a_movingcamera.cpp
|
||||||
g_shared/a_pickups.cpp
|
g_shared/a_pickups.cpp
|
||||||
g_shared/a_puzzleitems.cpp
|
g_shared/a_puzzleitems.cpp
|
||||||
g_shared/a_quake.cpp
|
g_shared/a_quake.cpp
|
||||||
g_shared/a_randomspawner.cpp
|
g_shared/a_randomspawner.cpp
|
||||||
g_shared/a_secrettrigger.cpp
|
|
||||||
g_shared/a_sectoraction.cpp
|
g_shared/a_sectoraction.cpp
|
||||||
g_shared/a_setcolor.cpp
|
|
||||||
g_shared/a_skies.cpp
|
g_shared/a_skies.cpp
|
||||||
g_shared/a_soundenvironment.cpp
|
g_shared/a_soundenvironment.cpp
|
||||||
g_shared/a_soundsequence.cpp
|
g_shared/a_soundsequence.cpp
|
||||||
g_shared/a_spark.cpp
|
|
||||||
g_shared/a_specialspot.cpp
|
g_shared/a_specialspot.cpp
|
||||||
g_shared/a_waterzone.cpp
|
|
||||||
g_shared/a_weaponpiece.cpp
|
g_shared/a_weaponpiece.cpp
|
||||||
g_shared/a_weapons.cpp
|
g_shared/a_weapons.cpp
|
||||||
g_shared/hudmessages.cpp
|
g_shared/hudmessages.cpp
|
||||||
|
|
|
@ -2963,8 +2963,8 @@ void AM_drawAuthorMarkers ()
|
||||||
// [RH] Draw any actors derived from AMapMarker on the automap.
|
// [RH] Draw any actors derived from AMapMarker on the automap.
|
||||||
// If args[0] is 0, then the actor's sprite is drawn at its own location.
|
// If args[0] is 0, then the actor's sprite is drawn at its own location.
|
||||||
// Otherwise, its sprite is drawn at the location of any actors whose TIDs match args[0].
|
// Otherwise, its sprite is drawn at the location of any actors whose TIDs match args[0].
|
||||||
TThinkerIterator<AMapMarker> it (STAT_MAPMARKER);
|
TThinkerIterator<AActor> it ("MapMarker", STAT_MAPMARKER);
|
||||||
AMapMarker *mark;
|
AActor *mark;
|
||||||
|
|
||||||
while ((mark = it.Next()) != NULL)
|
while ((mark = it.Next()) != NULL)
|
||||||
{
|
{
|
||||||
|
|
|
@ -387,6 +387,13 @@ void DThinker::ChangeStatNum (int statnum)
|
||||||
list->AddTail(this);
|
list->AddTail(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(DThinker, ChangeStatNum)
|
||||||
|
{
|
||||||
|
PARAM_SELF_PROLOGUE(DThinker);
|
||||||
|
PARAM_INT(stat);
|
||||||
|
self->ChangeStatNum(stat);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// Mark the first thinker of each list
|
// Mark the first thinker of each list
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#include "actor.h"
|
#include "actor.h"
|
||||||
#include "p_conversation.h"
|
#include "p_conversation.h"
|
||||||
#include "p_lnspec.h"
|
#include "p_lnspec.h"
|
||||||
#include "a_action.h"
|
|
||||||
#include "m_random.h"
|
#include "m_random.h"
|
||||||
#include "s_sound.h"
|
#include "s_sound.h"
|
||||||
#include "d_player.h"
|
#include "d_player.h"
|
||||||
|
@ -18,39 +17,6 @@ static FRandom pr_icesettics ("IceSetTics");
|
||||||
static FRandom pr_freeze ("FreezeDeathChunks");
|
static FRandom pr_freeze ("FreezeDeathChunks");
|
||||||
|
|
||||||
|
|
||||||
// SwitchableDecoration: Activate and Deactivate change state ---------------
|
|
||||||
|
|
||||||
class ASwitchableDecoration : public AActor
|
|
||||||
{
|
|
||||||
DECLARE_CLASS (ASwitchableDecoration, AActor)
|
|
||||||
public:
|
|
||||||
void Activate (AActor *activator);
|
|
||||||
void Deactivate (AActor *activator);
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS(ASwitchableDecoration, false, false)
|
|
||||||
|
|
||||||
void ASwitchableDecoration::Activate (AActor *activator)
|
|
||||||
{
|
|
||||||
SetState (FindState(NAME_Active));
|
|
||||||
}
|
|
||||||
|
|
||||||
void ASwitchableDecoration::Deactivate (AActor *activator)
|
|
||||||
{
|
|
||||||
SetState (FindState(NAME_Inactive));
|
|
||||||
}
|
|
||||||
|
|
||||||
// SwitchingDecoration: Only Activate changes state -------------------------
|
|
||||||
|
|
||||||
class ASwitchingDecoration : public ASwitchableDecoration
|
|
||||||
{
|
|
||||||
DECLARE_CLASS (ASwitchingDecoration, ASwitchableDecoration)
|
|
||||||
public:
|
|
||||||
void Deactivate (AActor *activator) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS(ASwitchingDecoration, false, false)
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// PROC A_NoBlocking
|
// PROC A_NoBlocking
|
||||||
|
@ -412,46 +378,3 @@ DEFINE_ACTION_FUNCTION(AActor, A_DeQueueCorpse)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
|
||||||
//
|
|
||||||
// FaceMovementDirection
|
|
||||||
//
|
|
||||||
//===========================================================================
|
|
||||||
|
|
||||||
void FaceMovementDirection(AActor *actor)
|
|
||||||
{
|
|
||||||
switch (actor->movedir)
|
|
||||||
{
|
|
||||||
case DI_EAST:
|
|
||||||
actor->Angles.Yaw = 0.;
|
|
||||||
break;
|
|
||||||
case DI_NORTHEAST:
|
|
||||||
actor->Angles.Yaw = 45.;
|
|
||||||
break;
|
|
||||||
case DI_NORTH:
|
|
||||||
actor->Angles.Yaw = 90.;
|
|
||||||
break;
|
|
||||||
case DI_NORTHWEST:
|
|
||||||
actor->Angles.Yaw = 135.;
|
|
||||||
break;
|
|
||||||
case DI_WEST:
|
|
||||||
actor->Angles.Yaw = 180.;
|
|
||||||
break;
|
|
||||||
case DI_SOUTHWEST:
|
|
||||||
actor->Angles.Yaw = 225.;
|
|
||||||
break;
|
|
||||||
case DI_SOUTH:
|
|
||||||
actor->Angles.Yaw = 270.;
|
|
||||||
break;
|
|
||||||
case DI_SOUTHEAST:
|
|
||||||
actor->Angles.Yaw = 315.;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DEFINE_ACTION_FUNCTION(AActor, FaceMovementDirection)
|
|
||||||
{
|
|
||||||
PARAM_SELF_PROLOGUE(AActor);
|
|
||||||
FaceMovementDirection(self);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
class AActor;
|
|
||||||
|
|
||||||
/*
|
|
||||||
void A_NoBlocking (AActor *);
|
|
||||||
void A_HideThing (AActor *);
|
|
||||||
void A_UnHideThing (AActor *);
|
|
||||||
void A_FreezeDeath (AActor *);
|
|
||||||
void A_FreezeDeathChunks (AActor *);
|
|
||||||
void A_GenericFreezeDeath (AActor *);
|
|
||||||
void A_IceSetTics (AActor *);
|
|
||||||
void A_IceCheckHeadDone (AActor *);
|
|
||||||
void A_QueueCorpse (AActor *);
|
|
||||||
void A_DeQueueCorpse (AActor *);
|
|
||||||
void A_SetInvulnerable (AActor *);
|
|
||||||
void A_UnSetInvulnerable (AActor *);
|
|
||||||
void A_SetReflective (AActor *);
|
|
||||||
void A_UnSetReflective (AActor *);
|
|
||||||
void A_SetReflectiveInvulnerable (AActor *);
|
|
||||||
void A_UnSetReflectiveInvulnerable (AActor *);
|
|
||||||
void A_SetShootable (AActor *);
|
|
||||||
void A_UnSetShootable (AActor *);
|
|
||||||
void A_SetFloorClip (AActor *);
|
|
||||||
void A_UnSetFloorClip (AActor *);
|
|
||||||
void A_NoGravity (AActor *);
|
|
||||||
void A_SkullPop (AActor *);
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
void FaceMovementDirection (AActor *);
|
|
|
@ -1,76 +0,0 @@
|
||||||
/*
|
|
||||||
** a_hatetarget.cpp
|
|
||||||
** Something for monsters to hate and shoot at
|
|
||||||
**
|
|
||||||
**---------------------------------------------------------------------------
|
|
||||||
** Copyright 2003-2006 Randy Heit
|
|
||||||
** All rights reserved.
|
|
||||||
**
|
|
||||||
** Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions
|
|
||||||
** are met:
|
|
||||||
**
|
|
||||||
** 1. Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in the
|
|
||||||
** documentation and/or other materials provided with the distribution.
|
|
||||||
** 3. The name of the author may not be used to endorse or promote products
|
|
||||||
** derived from this software without specific prior written permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
||||||
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
||||||
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
||||||
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
**---------------------------------------------------------------------------
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "actor.h"
|
|
||||||
#include "info.h"
|
|
||||||
#include "m_fixed.h"
|
|
||||||
|
|
||||||
// Hate Target --------------------------------------------------------------
|
|
||||||
|
|
||||||
class AHateTarget : public AActor
|
|
||||||
{
|
|
||||||
DECLARE_CLASS(AHateTarget, AActor)
|
|
||||||
public:
|
|
||||||
void BeginPlay();
|
|
||||||
int TakeSpecialDamage(AActor *inflictor, AActor *source, int damage, FName damagetype);
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS(AHateTarget, false, false)
|
|
||||||
|
|
||||||
void AHateTarget::BeginPlay()
|
|
||||||
{
|
|
||||||
Super::BeginPlay();
|
|
||||||
if (SpawnAngle != 0)
|
|
||||||
{ // Each degree translates into 10 units of health
|
|
||||||
health = SpawnAngle * 10;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
special2 = 1;
|
|
||||||
health = 1000001;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int AHateTarget::TakeSpecialDamage(AActor *inflictor, AActor *source, int damage, FName damagetype)
|
|
||||||
{
|
|
||||||
if (special2 != 0)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return damage;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,69 +0,0 @@
|
||||||
/*
|
|
||||||
** a_mapmarker.cpp
|
|
||||||
** An actor that appears on the automap instead of in the 3D view.
|
|
||||||
**
|
|
||||||
**---------------------------------------------------------------------------
|
|
||||||
** Copyright 2006 Randy Heit
|
|
||||||
** All rights reserved.
|
|
||||||
**
|
|
||||||
** Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions
|
|
||||||
** are met:
|
|
||||||
**
|
|
||||||
** 1. Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in the
|
|
||||||
** documentation and/or other materials provided with the distribution.
|
|
||||||
** 3. The name of the author may not be used to endorse or promote products
|
|
||||||
** derived from this software without specific prior written permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
||||||
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
||||||
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
||||||
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
**---------------------------------------------------------------------------
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "a_sharedglobal.h"
|
|
||||||
#include "statnums.h"
|
|
||||||
|
|
||||||
// Map Marker --------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// This class uses the following argument:
|
|
||||||
// args[0] == 0, shows the sprite at this actor
|
|
||||||
// != 0, shows the sprite for all actors whose TIDs match instead
|
|
||||||
//
|
|
||||||
// args[1] == 0, show the sprite always
|
|
||||||
// == 1, show the sprite only after its sector has been drawn
|
|
||||||
//
|
|
||||||
// To enable display of the sprite, activate it. To turn off the sprite,
|
|
||||||
// deactivate it.
|
|
||||||
//
|
|
||||||
// All the code to display it is in am_map.cpp.
|
|
||||||
//
|
|
||||||
//--------------------------------------------------------------------------
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS(AMapMarker, false, false)
|
|
||||||
|
|
||||||
void AMapMarker::BeginPlay ()
|
|
||||||
{
|
|
||||||
ChangeStatNum (STAT_MAPMARKER);
|
|
||||||
}
|
|
||||||
|
|
||||||
void AMapMarker::Activate (AActor *activator)
|
|
||||||
{
|
|
||||||
flags2 |= MF2_DORMANT;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AMapMarker::Deactivate (AActor *activator)
|
|
||||||
{
|
|
||||||
flags2 &= ~MF2_DORMANT;
|
|
||||||
}
|
|
|
@ -13,7 +13,6 @@
|
||||||
#include "s_sound.h"
|
#include "s_sound.h"
|
||||||
#include "statnums.h"
|
#include "statnums.h"
|
||||||
#include "gstrings.h"
|
#include "gstrings.h"
|
||||||
#include "a_action.h"
|
|
||||||
#include "v_text.h"
|
#include "v_text.h"
|
||||||
#include "doomstat.h"
|
#include "doomstat.h"
|
||||||
#include "doomdata.h"
|
#include "doomdata.h"
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
/*
|
|
||||||
** a_secrettrigger.cpp
|
|
||||||
** A thing that counts toward the secret count when activated
|
|
||||||
**
|
|
||||||
**---------------------------------------------------------------------------
|
|
||||||
** Copyright 1998-2006 Randy Heit
|
|
||||||
** All rights reserved.
|
|
||||||
**
|
|
||||||
** Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions
|
|
||||||
** are met:
|
|
||||||
**
|
|
||||||
** 1. Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in the
|
|
||||||
** documentation and/or other materials provided with the distribution.
|
|
||||||
** 3. The name of the author may not be used to endorse or promote products
|
|
||||||
** derived from this software without specific prior written permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
||||||
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
||||||
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
||||||
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
**---------------------------------------------------------------------------
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "actor.h"
|
|
||||||
#include "g_level.h"
|
|
||||||
#include "c_console.h"
|
|
||||||
#include "info.h"
|
|
||||||
#include "s_sound.h"
|
|
||||||
#include "d_player.h"
|
|
||||||
#include "doomstat.h"
|
|
||||||
#include "v_font.h"
|
|
||||||
#include "p_spec.h"
|
|
||||||
|
|
||||||
class ASecretTrigger : public AActor
|
|
||||||
{
|
|
||||||
DECLARE_CLASS (ASecretTrigger, AActor)
|
|
||||||
public:
|
|
||||||
void PostBeginPlay ();
|
|
||||||
void Activate (AActor *activator);
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS(ASecretTrigger, false, false)
|
|
||||||
|
|
||||||
void ASecretTrigger::PostBeginPlay ()
|
|
||||||
{
|
|
||||||
Super::PostBeginPlay ();
|
|
||||||
level.total_secrets++;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ASecretTrigger::Activate (AActor *activator)
|
|
||||||
{
|
|
||||||
P_GiveSecret(activator, args[0] <= 1, (args[0] == 0 || args[0] == 2), -1);
|
|
||||||
Destroy ();
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
#include "r_defs.h"
|
|
||||||
#include "actor.h"
|
|
||||||
#include "info.h"
|
|
||||||
|
|
||||||
class AColorSetter : public AActor
|
|
||||||
{
|
|
||||||
DECLARE_CLASS(AColorSetter, AActor)
|
|
||||||
|
|
||||||
void PostBeginPlay()
|
|
||||||
{
|
|
||||||
Super::PostBeginPlay();
|
|
||||||
Sector->SetColor(args[0], args[1], args[2], args[3]);
|
|
||||||
Destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS(AColorSetter, false, false)
|
|
||||||
|
|
||||||
class AFadeSetter : public AActor
|
|
||||||
{
|
|
||||||
DECLARE_CLASS(AFadeSetter, AActor)
|
|
||||||
|
|
||||||
void PostBeginPlay()
|
|
||||||
{
|
|
||||||
Super::PostBeginPlay();
|
|
||||||
Sector->SetFade(args[0], args[1], args[2]);
|
|
||||||
Destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS(AFadeSetter, false, false)
|
|
|
@ -214,15 +214,6 @@ public:
|
||||||
ActorFlags FlagsSave;
|
ActorFlags FlagsSave;
|
||||||
};
|
};
|
||||||
|
|
||||||
class AMapMarker : public AActor
|
|
||||||
{
|
|
||||||
DECLARE_CLASS(AMapMarker, AActor)
|
|
||||||
public:
|
|
||||||
void BeginPlay ();
|
|
||||||
void Activate (AActor *activator);
|
|
||||||
void Deactivate (AActor *activator);
|
|
||||||
};
|
|
||||||
|
|
||||||
class AFastProjectile : public AActor
|
class AFastProjectile : public AActor
|
||||||
{
|
{
|
||||||
DECLARE_CLASS(AFastProjectile, AActor)
|
DECLARE_CLASS(AFastProjectile, AActor)
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
/*
|
|
||||||
** a_spark.cpp
|
|
||||||
** Actor that makes a particle spark when activated
|
|
||||||
**
|
|
||||||
**---------------------------------------------------------------------------
|
|
||||||
** Copyright 1998-2006 Randy Heit
|
|
||||||
** All rights reserved.
|
|
||||||
**
|
|
||||||
** Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions
|
|
||||||
** are met:
|
|
||||||
**
|
|
||||||
** 1. Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in the
|
|
||||||
** documentation and/or other materials provided with the distribution.
|
|
||||||
** 3. The name of the author may not be used to endorse or promote products
|
|
||||||
** derived from this software without specific prior written permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
||||||
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
||||||
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
||||||
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
**---------------------------------------------------------------------------
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "actor.h"
|
|
||||||
#include "info.h"
|
|
||||||
#include "m_random.h"
|
|
||||||
#include "p_effect.h"
|
|
||||||
#include "s_sound.h"
|
|
||||||
|
|
||||||
class ASpark : public AActor
|
|
||||||
{
|
|
||||||
DECLARE_CLASS (ASpark, AActor)
|
|
||||||
public:
|
|
||||||
void Activate (AActor *activator);
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS(ASpark, false, false)
|
|
||||||
|
|
||||||
void ASpark::Activate (AActor *activator)
|
|
||||||
{
|
|
||||||
Super::Activate (activator);
|
|
||||||
P_DrawSplash (args[0] ? args[0] : 32, Pos(), Angles.Yaw, 1);
|
|
||||||
S_Sound (this, CHAN_AUTO, "world/spark", 1, ATTN_STATIC);
|
|
||||||
}
|
|
|
@ -1,53 +0,0 @@
|
||||||
/*
|
|
||||||
** a_waterzone.cpp
|
|
||||||
** Actor that makes BOOM deep water swimmable
|
|
||||||
**
|
|
||||||
**---------------------------------------------------------------------------
|
|
||||||
** Copyright 1998-2006 Randy Heit
|
|
||||||
** All rights reserved.
|
|
||||||
**
|
|
||||||
** Redistribution and use in source and binary forms, with or without
|
|
||||||
** modification, are permitted provided that the following conditions
|
|
||||||
** are met:
|
|
||||||
**
|
|
||||||
** 1. Redistributions of source code must retain the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer.
|
|
||||||
** 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
** notice, this list of conditions and the following disclaimer in the
|
|
||||||
** documentation and/or other materials provided with the distribution.
|
|
||||||
** 3. The name of the author may not be used to endorse or promote products
|
|
||||||
** derived from this software without specific prior written permission.
|
|
||||||
**
|
|
||||||
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
||||||
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
||||||
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
||||||
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
**---------------------------------------------------------------------------
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "info.h"
|
|
||||||
#include "r_defs.h"
|
|
||||||
|
|
||||||
class AWaterZone : public AActor
|
|
||||||
{
|
|
||||||
DECLARE_CLASS (AWaterZone, AActor)
|
|
||||||
public:
|
|
||||||
void PostBeginPlay ();
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS(AWaterZone, false, false)
|
|
||||||
|
|
||||||
void AWaterZone::PostBeginPlay ()
|
|
||||||
{
|
|
||||||
Super::PostBeginPlay ();
|
|
||||||
Sector->MoreFlags |= SECF_UNDERWATER;
|
|
||||||
Destroy ();
|
|
||||||
}
|
|
||||||
|
|
|
@ -53,7 +53,6 @@
|
||||||
#include "p_lnspec.h"
|
#include "p_lnspec.h"
|
||||||
#include "p_effect.h"
|
#include "p_effect.h"
|
||||||
#include "p_enemy.h"
|
#include "p_enemy.h"
|
||||||
#include "a_action.h"
|
|
||||||
#include "decallib.h"
|
#include "decallib.h"
|
||||||
#include "m_random.h"
|
#include "m_random.h"
|
||||||
#include "i_system.h"
|
#include "i_system.h"
|
||||||
|
|
|
@ -574,6 +574,16 @@ void P_DrawSplash (int count, const DVector3 &pos, DAngle angle, int kind)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(AActor, DrawSplash)
|
||||||
|
{
|
||||||
|
PARAM_SELF_PROLOGUE(AActor);
|
||||||
|
PARAM_INT(count);
|
||||||
|
PARAM_FLOAT(angle);
|
||||||
|
PARAM_INT(kind);
|
||||||
|
P_DrawSplash(count, self->Pos(), angle, kind);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void P_DrawSplash2 (int count, const DVector3 &pos, DAngle angle, int updown, int kind)
|
void P_DrawSplash2 (int count, const DVector3 &pos, DAngle angle, int updown, int kind)
|
||||||
{
|
{
|
||||||
int color1, color2, zadd;
|
int color1, color2, zadd;
|
||||||
|
|
|
@ -42,7 +42,6 @@
|
||||||
#include "c_cvars.h"
|
#include "c_cvars.h"
|
||||||
#include "p_enemy.h"
|
#include "p_enemy.h"
|
||||||
#include "a_sharedglobal.h"
|
#include "a_sharedglobal.h"
|
||||||
#include "a_action.h"
|
|
||||||
#include "d_dehacked.h"
|
#include "d_dehacked.h"
|
||||||
#include "g_level.h"
|
#include "g_level.h"
|
||||||
#include "r_utility.h"
|
#include "r_utility.h"
|
||||||
|
|
|
@ -47,7 +47,6 @@
|
||||||
#include "p_acs.h"
|
#include "p_acs.h"
|
||||||
#include "cmdlib.h"
|
#include "cmdlib.h"
|
||||||
#include "decallib.h"
|
#include "decallib.h"
|
||||||
#include "a_action.h"
|
|
||||||
#include "a_keys.h"
|
#include "a_keys.h"
|
||||||
#include "p_conversation.h"
|
#include "p_conversation.h"
|
||||||
#include "g_game.h"
|
#include "g_game.h"
|
||||||
|
|
|
@ -700,6 +700,16 @@ void sector_t::SetColor(int r, int g, int b, int desat)
|
||||||
P_RecalculateAttachedLights(this);
|
P_RecalculateAttachedLights(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Sector, SetColor)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(sector_t);
|
||||||
|
PARAM_COLOR(color);
|
||||||
|
PARAM_INT(desat);
|
||||||
|
self->ColorMap = GetSpecialLights(color, self->ColorMap->Fade, desat);
|
||||||
|
P_RecalculateAttachedLights(self);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void sector_t::SetFade(int r, int g, int b)
|
void sector_t::SetFade(int r, int g, int b)
|
||||||
{
|
{
|
||||||
PalEntry fade = PalEntry (r,g,b);
|
PalEntry fade = PalEntry (r,g,b);
|
||||||
|
@ -707,6 +717,16 @@ void sector_t::SetFade(int r, int g, int b)
|
||||||
P_RecalculateAttachedLights(this);
|
P_RecalculateAttachedLights(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Sector, SetFade)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(sector_t);
|
||||||
|
PARAM_COLOR(fade);
|
||||||
|
self->ColorMap = GetSpecialLights(self->ColorMap->Color, fade, self->ColorMap->Desaturate);
|
||||||
|
P_RecalculateAttachedLights(self);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//
|
//
|
||||||
// sector_t :: ClosestPoint
|
// sector_t :: ClosestPoint
|
||||||
|
|
|
@ -552,6 +552,15 @@ void P_GiveSecret(AActor *actor, bool printmessage, bool playsound, int sectornu
|
||||||
level.found_secrets++;
|
level.found_secrets++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(AActor, GiveSecret)
|
||||||
|
{
|
||||||
|
PARAM_SELF_PROLOGUE(AActor);
|
||||||
|
PARAM_BOOL(printmessage);
|
||||||
|
PARAM_BOOL(playsound);
|
||||||
|
P_GiveSecret(self, printmessage, playsound, -1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
//
|
//
|
||||||
// P_PlayerOnSpecialFlat
|
// P_PlayerOnSpecialFlat
|
||||||
|
|
|
@ -44,7 +44,6 @@
|
||||||
#include "s_sound.h"
|
#include "s_sound.h"
|
||||||
#include "cmdlib.h"
|
#include "cmdlib.h"
|
||||||
#include "p_lnspec.h"
|
#include "p_lnspec.h"
|
||||||
#include "a_action.h"
|
|
||||||
#include "decallib.h"
|
#include "decallib.h"
|
||||||
#include "i_system.h"
|
#include "i_system.h"
|
||||||
#include "thingdef.h"
|
#include "thingdef.h"
|
||||||
|
|
|
@ -45,7 +45,6 @@
|
||||||
#include "templates.h"
|
#include "templates.h"
|
||||||
#include "cmdlib.h"
|
#include "cmdlib.h"
|
||||||
#include "p_lnspec.h"
|
#include "p_lnspec.h"
|
||||||
#include "a_action.h"
|
|
||||||
#include "p_local.h"
|
#include "p_local.h"
|
||||||
#include "v_palette.h"
|
#include "v_palette.h"
|
||||||
#include "doomerrors.h"
|
#include "doomerrors.h"
|
||||||
|
|
|
@ -50,7 +50,6 @@
|
||||||
#include "s_sound.h"
|
#include "s_sound.h"
|
||||||
#include "cmdlib.h"
|
#include "cmdlib.h"
|
||||||
#include "p_lnspec.h"
|
#include "p_lnspec.h"
|
||||||
#include "a_action.h"
|
|
||||||
#include "decallib.h"
|
#include "decallib.h"
|
||||||
#include "m_random.h"
|
#include "m_random.h"
|
||||||
#include "i_system.h"
|
#include "i_system.h"
|
||||||
|
|
|
@ -49,7 +49,6 @@
|
||||||
#include "s_sound.h"
|
#include "s_sound.h"
|
||||||
#include "cmdlib.h"
|
#include "cmdlib.h"
|
||||||
#include "p_lnspec.h"
|
#include "p_lnspec.h"
|
||||||
#include "a_action.h"
|
|
||||||
#include "decallib.h"
|
#include "decallib.h"
|
||||||
#include "m_random.h"
|
#include "m_random.h"
|
||||||
#include "i_system.h"
|
#include "i_system.h"
|
||||||
|
|
|
@ -302,7 +302,6 @@ class Actor : Thinker native
|
||||||
native void SetOrigin(vector3 newpos, bool moving);
|
native void SetOrigin(vector3 newpos, bool moving);
|
||||||
native void SetXYZ(vector3 newpos);
|
native void SetXYZ(vector3 newpos);
|
||||||
native Actor GetPointer(int aaptr);
|
native Actor GetPointer(int aaptr);
|
||||||
native void FaceMovementDirection();
|
|
||||||
native double BulletSlope(out FTranslatedLineTarget pLineTarget = null, int aimflags = 0);
|
native double BulletSlope(out FTranslatedLineTarget pLineTarget = null, int aimflags = 0);
|
||||||
native Actor AimTarget();
|
native Actor AimTarget();
|
||||||
native bool CheckMissileSpawn(double maxdist);
|
native bool CheckMissileSpawn(double maxdist);
|
||||||
|
@ -375,6 +374,8 @@ class Actor : Thinker native
|
||||||
native name GetSpecies();
|
native name GetSpecies();
|
||||||
native void PlayActiveSound();
|
native void PlayActiveSound();
|
||||||
native void Howl();
|
native void Howl();
|
||||||
|
native void DrawSplash (int count, double angle, int kind);
|
||||||
|
native void GiveSecret(bool printmsg = true, bool playsound = true);
|
||||||
|
|
||||||
native bool CheckClass(class<Actor> checkclass, int ptr_select = AAPTR_DEFAULT, bool match_superclass = false);
|
native bool CheckClass(class<Actor> checkclass, int ptr_select = AAPTR_DEFAULT, bool match_superclass = false);
|
||||||
native Inventory FindInventory(class<Inventory> itemtype, bool subclass = false);
|
native Inventory FindInventory(class<Inventory> itemtype, bool subclass = false);
|
||||||
|
|
|
@ -17,20 +17,47 @@ class Object native
|
||||||
|
|
||||||
class Thinker : Object native
|
class Thinker : Object native
|
||||||
{
|
{
|
||||||
|
enum EStatnums
|
||||||
|
{
|
||||||
|
// Thinkers that don't actually think
|
||||||
|
STAT_INFO, // An info queue
|
||||||
|
STAT_DECAL, // A decal
|
||||||
|
STAT_AUTODECAL, // A decal that can be automatically deleted
|
||||||
|
STAT_CORPSEPOINTER, // An entry in Hexen's corpse queue
|
||||||
|
STAT_TRAVELLING, // An actor temporarily travelling to a new map
|
||||||
|
|
||||||
|
// Thinkers that do think
|
||||||
|
STAT_FIRST_THINKING=32,
|
||||||
|
STAT_SCROLLER=STAT_FIRST_THINKING, // A DScroller thinker
|
||||||
|
STAT_PLAYER, // A player actor
|
||||||
|
STAT_BOSSTARGET, // A boss brain target
|
||||||
|
STAT_LIGHTNING, // The lightning thinker
|
||||||
|
STAT_DECALTHINKER, // An object that thinks for a decal
|
||||||
|
STAT_INVENTORY, // An inventory item
|
||||||
|
STAT_LIGHT, // A sector light effect
|
||||||
|
STAT_LIGHTTRANSFER, // A sector light transfer. These must be ticked after the light effects.
|
||||||
|
STAT_EARTHQUAKE, // Earthquake actors
|
||||||
|
STAT_MAPMARKER, // Map marker actors
|
||||||
|
|
||||||
|
STAT_DEFAULT = 100, // Thinkers go here unless specified otherwise.
|
||||||
|
STAT_SECTOREFFECT, // All sector effects that cause floor and ceiling movement
|
||||||
|
STAT_ACTORMOVER, // actor movers
|
||||||
|
STAT_SCRIPTS, // The ACS thinker. This is to ensure that it can't tick before all actors called PostBeginPlay
|
||||||
|
STAT_BOT, // Bot thinker
|
||||||
|
MAX_STATNUM = 127
|
||||||
|
}
|
||||||
|
|
||||||
const TICRATE = 35;
|
const TICRATE = 35;
|
||||||
|
|
||||||
virtual native void Tick();
|
virtual native void Tick();
|
||||||
virtual native void PostBeginPlay();
|
virtual native void PostBeginPlay();
|
||||||
|
virtual native void ChangeStatNum(int stat);
|
||||||
}
|
}
|
||||||
|
|
||||||
class ThinkerIterator : Object native
|
class ThinkerIterator : Object native
|
||||||
{
|
{
|
||||||
enum EStatnums
|
|
||||||
{
|
|
||||||
MAX_STATNUM = 127
|
|
||||||
}
|
|
||||||
|
|
||||||
native static ThinkerIterator Create(class<Object> type = "Actor", int statnum=MAX_STATNUM+1);
|
native static ThinkerIterator Create(class<Object> type = "Actor", int statnum=Thinker.MAX_STATNUM+1);
|
||||||
native Thinker Next(bool exact = false);
|
native Thinker Next(bool exact = false);
|
||||||
native void Reinit();
|
native void Reinit();
|
||||||
}
|
}
|
||||||
|
@ -87,11 +114,11 @@ struct LevelLocals native
|
||||||
native readonly int maptype;
|
native readonly int maptype;
|
||||||
native readonly String Music;
|
native readonly String Music;
|
||||||
native readonly int musicorder;
|
native readonly int musicorder;
|
||||||
native readonly int total_secrets;
|
native int total_secrets;
|
||||||
native int found_secrets;
|
native int found_secrets;
|
||||||
native readonly int total_items;
|
native int total_items;
|
||||||
native int found_items;
|
native int found_items;
|
||||||
native readonly int total_monsters;
|
native int total_monsters;
|
||||||
native int killed_monsters;
|
native int killed_monsters;
|
||||||
native double gravity;
|
native double gravity;
|
||||||
native double aircontrol;
|
native double aircontrol;
|
||||||
|
@ -225,6 +252,19 @@ struct Sector native
|
||||||
native int16 leakydamage;
|
native int16 leakydamage;
|
||||||
|
|
||||||
native uint16 ZoneNumber;
|
native uint16 ZoneNumber;
|
||||||
|
|
||||||
|
enum ESectorMoreFlags
|
||||||
|
{
|
||||||
|
SECMF_FAKEFLOORONLY = 2, // when used as heightsec in R_FakeFlat, only copies floor
|
||||||
|
SECMF_CLIPFAKEPLANES = 4, // as a heightsec, clip planes to target sector's planes
|
||||||
|
SECMF_NOFAKELIGHT = 8, // heightsec does not change lighting
|
||||||
|
SECMF_IGNOREHEIGHTSEC= 16, // heightsec is only for triggering sector actions
|
||||||
|
SECMF_UNDERWATER = 32, // sector is underwater
|
||||||
|
SECMF_FORCEDUNDERWATER= 64, // sector is forced to be underwater
|
||||||
|
SECMF_UNDERWATERMASK = 32+64,
|
||||||
|
SECMF_DRAWN = 128, // sector has been drawn at least once
|
||||||
|
SECMF_HIDDEN = 256, // Do not draw on textured automap
|
||||||
|
}
|
||||||
native uint16 MoreFlags;
|
native uint16 MoreFlags;
|
||||||
|
|
||||||
enum ESectorFlags
|
enum ESectorFlags
|
||||||
|
@ -263,6 +303,8 @@ struct Sector native
|
||||||
|
|
||||||
native void RemoveForceField();
|
native void RemoveForceField();
|
||||||
native static Sector PointInSector(Vector2 pt);
|
native static Sector PointInSector(Vector2 pt);
|
||||||
|
native void SetColor(color c, int desat = 0);
|
||||||
|
native void SetFade(color c);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Wads
|
struct Wads
|
||||||
|
|
|
@ -757,3 +757,50 @@ class MinotaurSmokeExit : Actor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extend class Actor
|
||||||
|
{
|
||||||
|
enum dirtype_t
|
||||||
|
{
|
||||||
|
DI_EAST,
|
||||||
|
DI_NORTHEAST,
|
||||||
|
DI_NORTH,
|
||||||
|
DI_NORTHWEST,
|
||||||
|
DI_WEST,
|
||||||
|
DI_SOUTHWEST,
|
||||||
|
DI_SOUTH,
|
||||||
|
DI_SOUTHEAST,
|
||||||
|
DI_NODIR,
|
||||||
|
NUMDIRS
|
||||||
|
};
|
||||||
|
|
||||||
|
void FaceMovementDirection()
|
||||||
|
{
|
||||||
|
switch (movedir)
|
||||||
|
{
|
||||||
|
case DI_EAST:
|
||||||
|
angle = 0.;
|
||||||
|
break;
|
||||||
|
case DI_NORTHEAST:
|
||||||
|
angle = 45.;
|
||||||
|
break;
|
||||||
|
case DI_NORTH:
|
||||||
|
angle = 90.;
|
||||||
|
break;
|
||||||
|
case DI_NORTHWEST:
|
||||||
|
angle = 135.;
|
||||||
|
break;
|
||||||
|
case DI_WEST:
|
||||||
|
angle = 180.;
|
||||||
|
break;
|
||||||
|
case DI_SOUTHWEST:
|
||||||
|
angle = 225.;
|
||||||
|
break;
|
||||||
|
case DI_SOUTH:
|
||||||
|
angle = 270.;
|
||||||
|
break;
|
||||||
|
case DI_SOUTHEAST:
|
||||||
|
angle = 315.;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
// Hate Target --------------------------------------------------------------
|
// Hate Target --------------------------------------------------------------
|
||||||
|
|
||||||
class HateTarget : Actor native
|
class HateTarget : Actor
|
||||||
{
|
{
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
|
@ -19,4 +19,32 @@ class HateTarget : Actor native
|
||||||
Spawn:
|
Spawn:
|
||||||
TNT1 A -1;
|
TNT1 A -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override void BeginPlay()
|
||||||
|
{
|
||||||
|
Super.BeginPlay();
|
||||||
|
if (SpawnAngle != 0)
|
||||||
|
{ // Each degree translates into 10 units of health
|
||||||
|
health = SpawnAngle * 10;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
special2 = 1;
|
||||||
|
health = 1000001;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override int TakeSpecialDamage(Actor inflictor, Actor source, int damage, Name damagetype)
|
||||||
|
{
|
||||||
|
if (special2 != 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return damage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,5 +1,20 @@
|
||||||
|
// Map Marker --------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// This class uses the following argument:
|
||||||
|
// args[0] == 0, shows the sprite at this actor
|
||||||
|
// != 0, shows the sprite for all actors whose TIDs match instead
|
||||||
|
//
|
||||||
|
// args[1] == 0, show the sprite always
|
||||||
|
// == 1, show the sprite only after its sector has been drawn
|
||||||
|
//
|
||||||
|
// To enable display of the sprite, activate it. To turn off the sprite,
|
||||||
|
// deactivate it.
|
||||||
|
//
|
||||||
|
// All the code to display it is in am_map.cpp.
|
||||||
|
//
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
|
||||||
class MapMarker : Actor native
|
class MapMarker : Actor
|
||||||
{
|
{
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
|
@ -15,4 +30,20 @@ class MapMarker : Actor native
|
||||||
AMRK A -1;
|
AMRK A -1;
|
||||||
Stop;
|
Stop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override void BeginPlay ()
|
||||||
|
{
|
||||||
|
ChangeStatNum (STAT_MAPMARKER);
|
||||||
|
}
|
||||||
|
|
||||||
|
override void Activate (Actor activator)
|
||||||
|
{
|
||||||
|
bDormant = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
override void Deactivate (Actor activator)
|
||||||
|
{
|
||||||
|
bDormant = false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
class SecretTrigger : Actor native
|
class SecretTrigger : Actor
|
||||||
{
|
{
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
|
@ -8,5 +8,19 @@ class SecretTrigger : Actor native
|
||||||
+NOGRAVITY
|
+NOGRAVITY
|
||||||
+DONTSPLASH
|
+DONTSPLASH
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override void PostBeginPlay ()
|
||||||
|
{
|
||||||
|
Super.PostBeginPlay ();
|
||||||
|
level.total_secrets++;
|
||||||
|
}
|
||||||
|
|
||||||
|
override void Activate (Actor activator)
|
||||||
|
{
|
||||||
|
activator.GiveSecret(args[0] <= 1, (args[0] == 0 || args[0] == 2));
|
||||||
|
Destroy ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
class ColorSetter : Actor native
|
class ColorSetter : Actor
|
||||||
{
|
{
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
|
@ -7,10 +7,18 @@ class ColorSetter : Actor native
|
||||||
+DONTSPLASH
|
+DONTSPLASH
|
||||||
RenderStyle "None";
|
RenderStyle "None";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override void PostBeginPlay()
|
||||||
|
{
|
||||||
|
Super.PostBeginPlay();
|
||||||
|
CurSector.SetColor(color(args[0], args[1], args[2]), args[3]);
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class FadeSetter : Actor native
|
class FadeSetter : Actor
|
||||||
{
|
{
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
|
@ -19,4 +27,13 @@ class FadeSetter : Actor native
|
||||||
+DONTSPLASH
|
+DONTSPLASH
|
||||||
RenderStyle "None";
|
RenderStyle "None";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PostBeginPlay()
|
||||||
|
{
|
||||||
|
Super.PostBeginPlay();
|
||||||
|
CurSector.SetFade(color(args[0], args[1], args[2]));
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -157,13 +157,25 @@ class CustomSprite : Actor native
|
||||||
|
|
||||||
// SwitchableDecoration: Activate and Deactivate change state --------------
|
// SwitchableDecoration: Activate and Deactivate change state --------------
|
||||||
|
|
||||||
class SwitchableDecoration : Actor native
|
class SwitchableDecoration : Actor
|
||||||
{
|
{
|
||||||
|
override void Activate (Actor activator)
|
||||||
|
{
|
||||||
|
SetStateLabel("Active");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override void Deactivate (Actor activator)
|
||||||
class SwitchingDecoration : SwitchableDecoration native
|
|
||||||
{
|
{
|
||||||
|
SetStateLabel("Inactive");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class SwitchingDecoration : SwitchableDecoration
|
||||||
|
{
|
||||||
|
override void Deactivate (Actor activator)
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Random spawner ----------------------------------------------------------
|
// Random spawner ----------------------------------------------------------
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
class Spark : Actor native
|
class Spark : Actor
|
||||||
{
|
{
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
|
@ -8,4 +8,12 @@ class Spark : Actor native
|
||||||
+NOGRAVITY
|
+NOGRAVITY
|
||||||
+DONTSPLASH
|
+DONTSPLASH
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override void Activate (Actor activator)
|
||||||
|
{
|
||||||
|
Super.Activate (activator);
|
||||||
|
DrawSplash (args[0] ? args[0] : 32, Angle, 1);
|
||||||
|
A_PlaySound ("world/spark", CHAN_AUTO, 1, false, ATTN_STATIC);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
class WaterZone : Actor native
|
class WaterZone : Actor
|
||||||
{
|
{
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
|
@ -7,4 +7,13 @@ class WaterZone : Actor native
|
||||||
+NOGRAVITY
|
+NOGRAVITY
|
||||||
+DONTSPLASH
|
+DONTSPLASH
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override void PostBeginPlay ()
|
||||||
|
{
|
||||||
|
Super.PostBeginPlay ();
|
||||||
|
CurSector.MoreFlags |= Sector.SECMF_UNDERWATER;
|
||||||
|
Destroy ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue