- Generalized Hexen's class-based spawning to be a property of the player class
so now it is available in all games. - Replaced the call to A_FlameSnd in the HereticPlayer's burn death sequence with A_FireScream and defined *burndeath for Heretic. - Added Grubber's custom player class support. SVN r250 (trunk)
This commit is contained in:
parent
38a073626f
commit
31c749058b
45 changed files with 1728 additions and 819 deletions
|
|
@ -1,5 +1,6 @@
|
|||
#include "actor.h"
|
||||
#include "info.h"
|
||||
#include "thingdef.h"
|
||||
#include "p_conversation.h"
|
||||
#include "p_lnspec.h"
|
||||
#include "a_action.h"
|
||||
#include "m_random.h"
|
||||
|
|
@ -66,6 +67,55 @@ IMPLEMENT_ACTOR (AIceChunkHead, Any, -1, 0)
|
|||
PROP_SpawnState (0)
|
||||
END_DEFAULTS
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// PROC A_NoBlocking
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
void A_NoBlocking (AActor *actor)
|
||||
{
|
||||
// [RH] Andy Baker's stealth monsters
|
||||
if (actor->flags & MF_STEALTH)
|
||||
{
|
||||
actor->alpha = OPAQUE;
|
||||
actor->visdir = 0;
|
||||
}
|
||||
|
||||
actor->flags &= ~MF_SOLID;
|
||||
|
||||
// If the actor has a conversation that sets an item to drop, drop that.
|
||||
if (actor->Conversation != NULL && actor->Conversation->DropType != NULL)
|
||||
{
|
||||
P_DropItem (actor, actor->Conversation->DropType, -1, 256);
|
||||
actor->Conversation = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
actor->Conversation = NULL;
|
||||
|
||||
// If the actor has attached metadata for items to drop, drop those.
|
||||
// Otherwise, call NoBlockingSet() and let it decide what to drop.
|
||||
if (!actor->IsKindOf (RUNTIME_CLASS (APlayerPawn))) // [GRB]
|
||||
{
|
||||
FDropItem *di = GetDropItems(actor);
|
||||
|
||||
while (di != NULL)
|
||||
{
|
||||
if (di->Name != NAME_None)
|
||||
{
|
||||
const PClass *ti = PClass::FindClass(di->Name);
|
||||
if (ti) P_DropItem (actor, ti, di->amount, di->probability);
|
||||
}
|
||||
di = di->Next;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
actor->NoBlockingSet ();
|
||||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// A_SetFloorClip
|
||||
|
|
@ -224,7 +274,7 @@ void A_FreezeDeathChunks (AActor *actor)
|
|||
}
|
||||
if (actor->player)
|
||||
{ // attach the player's view to a chunk of ice
|
||||
AIceChunkHead *head = Spawn<AIceChunkHead> (actor->x, actor->y, actor->z + actor->player->defaultviewheight);
|
||||
AIceChunkHead *head = Spawn<AIceChunkHead> (actor->x, actor->y, actor->z + actor->player->mo->ViewHeight);
|
||||
head->momz = FixedDiv(head->z-actor->z, actor->height)<<2;
|
||||
head->momx = pr_freeze.Random2 () << (FRACBITS-7);
|
||||
head->momy = pr_freeze.Random2 () << (FRACBITS-7);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue