mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-22 12:11:25 +00:00
SVN r51 (trunk)
This commit is contained in:
parent
fa7987005e
commit
36e37becb5
14 changed files with 167 additions and 41 deletions
|
@ -3,7 +3,7 @@ CXX ?= g++
|
|||
CC ?= gcc
|
||||
CFLAGS ?= -Wall -Wno-unused -O2 -fomit-frame-pointer
|
||||
CFLAGS += -DHAVE_FILELENGTH -D__forceinline=inline -Izlib -IFLAC `sdl-config --cflags`
|
||||
CFLAGS += -Dstricmp=strcasecmp -Dstrnicmp=strncasecmp
|
||||
CFLAGS += -Dstricmp=strcasecmp -Dstrnicmp=strncasecmp -DNEED_STRUPR
|
||||
LDFLAGS += -lFLAC++ -lFLAC -lz -lfmod `sdl-config --libs`
|
||||
|
||||
NASM ?= nasm
|
||||
|
@ -35,7 +35,7 @@ ZDOOMDEBUG = zdoomd
|
|||
ifndef DEBUG
|
||||
OBJDIR = $(RELEASEOBJ)
|
||||
CFLAGS += -DNDEBUG
|
||||
LDFLAGS += -Wl,-Map=zdoomgcc.map
|
||||
LDFLAGS += -Wl,-Map=$(ZDOOM).map
|
||||
ZDOOMBIN = $(ZDOOM)
|
||||
else
|
||||
OBJDIR = $(DEBUGOBJ)
|
||||
|
@ -44,15 +44,17 @@ else
|
|||
endif
|
||||
CXXFLAGS += $(CFLAGS)
|
||||
|
||||
OBJS = $(addprefix $(OBJDIR)/,$(CPPOBJFILES) $(COBJFILES))
|
||||
DEPS = $(patsubst %.o,%.d,$(OBJS))
|
||||
OBJS += $(addprefix $(OBJDIR)/,$(AOBJFILES))
|
||||
COBJS = $(addprefix $(OBJDIR)/,$(CPPOBJFILES) $(COBJFILES))
|
||||
DEPS = $(patsubst %.o,%.d,$(COBJS))
|
||||
OBJS = $(addprefix $(OBJDIR)/,$(AOBJFILES)) $(COBJS)
|
||||
|
||||
# controls whether to start another instance of make at deps
|
||||
RESTART?=1
|
||||
|
||||
# rule pattern for dependencies
|
||||
define DEPBUILD_PATTERN
|
||||
_dep_: _src_
|
||||
$(CXX) _src_ -MM $(CXXFLAGS) -MT "$$(patsubst %.d,%.o,_dep_) _dep_" -MF _dep_
|
||||
-include _dep_
|
||||
endef
|
||||
|
||||
# rule pattern for assembly files
|
||||
|
@ -68,10 +70,13 @@ endef
|
|||
|
||||
all: $(ZDOOMBIN) zdoom.wad
|
||||
|
||||
$(ZDOOMBIN): $(OBJDIR) $(DEPS) $(OBJS)
|
||||
$(ZDOOMBIN): $(OBJDIR) deps $(OBJS)
|
||||
$(CXX) $(LDFLAGS) $(OBJDIR)/autostart.o \
|
||||
$(filter-out %/autostart.o %/autozend.o,$(OBJS)) $(OBJDIR)/autozend.o -o $(ZDOOMBIN)
|
||||
|
||||
#include any of the dep files that already exist
|
||||
$(foreach dep,$(DEPS),$(if $(wildcard $(dep)),$(eval include $(dep))))
|
||||
|
||||
# textually substitute in the _dep_ and the _src_ it depends on to create rules
|
||||
# for creating dependency files without any existing dependency files
|
||||
$(foreach src,$(CPPSRCS) $(CSRCS), $(eval $(subst _src_,$(src),$(subst \
|
||||
|
@ -89,21 +94,28 @@ _obj_,$(OBJDIR)/$(patsubst %.c,%.o,$(notdir $$$(src))),$(CBUILD_PATTERN)))))
|
|||
$(OBJDIR)/%.o:
|
||||
$(CXX) -c $(CXXFLAGS) -o $@ -c $<
|
||||
|
||||
-include $(DEPS)
|
||||
# start a new instance of make after dependency files have been made
|
||||
deps: $(DEPS)
|
||||
$(if $(RESTART),@make -f $(firstword $(MAKEFILE_LIST)) RESTART=)
|
||||
|
||||
$(OBJDIR):
|
||||
mkdir -p $(OBJDIR)
|
||||
mkdir $(OBJDIR)
|
||||
|
||||
zdoom.wad:
|
||||
make -C wadsrc/ -f Makefile
|
||||
|
||||
.PHONY : clean cleandeps cleanobjs
|
||||
.PHONY : clean cleandeps cleanobjs distclean deps
|
||||
|
||||
clean:
|
||||
rm -f $(RELEASEOBJ)/* $(DEBUGOBJ)/* $(ZDOOMDEBUG) $(ZDOOM)
|
||||
clean: cleanobjs
|
||||
rm -f $(ZDOOMDEBUG) $(ZDOOM) $(ZDOOM).map
|
||||
|
||||
# I could use a recursive delete instead, but that could be dangerous...
|
||||
distclean: clean cleandeps
|
||||
rmdir $(RELEASEOBJ) $(DEBUGOBJ)
|
||||
|
||||
cleandeps:
|
||||
rm -f $(RELEASEOBJ)/*.d $(DEBUGOBJ)/*.d
|
||||
|
||||
cleanobjs:
|
||||
rm -f $(RELEASEOBJ)/*.o $(DEBUGOBJ)/*.o
|
||||
|
|
@ -1,3 +1,25 @@
|
|||
April 17, 2006 (Changes by Graf Zahl)
|
||||
- Fixed: dssiglup was misspelled as dssglup in SNDINFO so the Sigil's
|
||||
charging sound never played.
|
||||
- Fixed: The sigil doesn't use the generic weapon pickup sound. It should
|
||||
use weapons/sigilcharge.
|
||||
- Fixed: P_Move never checked whether a monster has the MF2_PUSHWALL flag.
|
||||
As a result everything using A_Chase was able to activate pushable
|
||||
walls and not just the monsters which are allowed to activate them.
|
||||
- Fixed: P_Move must split the move if the step size is larger than the
|
||||
radius.
|
||||
- Fixed: tmfloorpic was set in P_LineOpening. But this is not guaranteed
|
||||
to set the correct picture because the end result depends on the line
|
||||
ordering and not the sector heights. It must be set in PIT_CheckLine.
|
||||
- Fixed: Due to the previously missing ceilingsector variable bouncing
|
||||
missiles could use the incorrect sector when hitting an edge between
|
||||
ceilings of different height.
|
||||
- Fixed: Missiles exploding on the edge of a ceiling neighboring to a
|
||||
sky vanished instead of exploding if the missile's center was in the
|
||||
sky sector. To do this I added ceilingsector and ceilingpic variables
|
||||
to AActor, similar to the already existing floorsector and floorpic.
|
||||
- Fixed: ZDoom now looks for ZDoom.wad in the program directory first.
|
||||
|
||||
April 16, 2006
|
||||
- Fixed: After respawning in a singleplayer demo, demo playback went out
|
||||
of sync becase the RNG seed was being altered during recording but not
|
||||
|
@ -12198,3 +12220,4 @@ March 6, 1998
|
|||
- Functions in i_music.c now pay attention to the looping flag.
|
||||
- C_AddNotifyString() now pays attention to show_messages cvar.
|
||||
- Added support for specifying console commands on the command line.
|
||||
|
||||
|
|
|
@ -600,6 +600,8 @@ public:
|
|||
|
||||
struct sector_t *floorsector;
|
||||
SDWORD floorpic; // contacted sec floorpic
|
||||
struct sector_t *ceilingsector;
|
||||
SDWORD ceilingpic; // contacted sec ceilingpic
|
||||
fixed_t radius, height; // for movement checking
|
||||
fixed_t momx, momy, momz; // momentums
|
||||
SDWORD tics; // state tic counter
|
||||
|
|
|
@ -116,7 +116,7 @@ void D_AddWildFile (const char *pattern);
|
|||
// PRIVATE FUNCTION PROTOTYPES ---------------------------------------------
|
||||
|
||||
void D_DoomLoop ();
|
||||
static const char *BaseFileSearch (const char *file, const char *ext);
|
||||
static const char *BaseFileSearch (const char *file, const char *ext, bool lookfirstinprogdir=false);
|
||||
static void STACK_ARGS DoConsoleAtExit ();
|
||||
|
||||
// EXTERNAL DATA DECLARATIONS ----------------------------------------------
|
||||
|
@ -1692,10 +1692,19 @@ static EIWADType IdentifyVersion (void)
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
static const char *BaseFileSearch (const char *file, const char *ext)
|
||||
static const char *BaseFileSearch (const char *file, const char *ext, bool lookfirstinprogdir)
|
||||
{
|
||||
static char wad[PATH_MAX];
|
||||
|
||||
if (lookfirstinprogdir)
|
||||
{
|
||||
sprintf (wad, "%s%s%s", progdir, progdir[strlen (progdir) - 1] != '/' ? "/" : "", file);
|
||||
if (FileExists (wad))
|
||||
{
|
||||
return wad;
|
||||
}
|
||||
}
|
||||
|
||||
if (FileExists (file))
|
||||
{
|
||||
return file;
|
||||
|
@ -1910,7 +1919,8 @@ void D_DoomMain (void)
|
|||
|
||||
// [RH] Make sure zdoom.wad is always loaded,
|
||||
// as it contains magic stuff we need.
|
||||
wad = BaseFileSearch ("zdoom.wad", NULL);
|
||||
|
||||
wad = BaseFileSearch ("zdoom.wad", NULL, true);
|
||||
if (wad)
|
||||
D_AddFile (wad);
|
||||
else
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include "p_enemy.h"
|
||||
#include "gstrings.h"
|
||||
#include "a_action.h"
|
||||
#include "thingdef.h"
|
||||
|
||||
void A_FatRaise (AActor *);
|
||||
void A_FatAttack1 (AActor *);
|
||||
|
@ -252,7 +253,6 @@ void A_FatAttack3 (AActor *self)
|
|||
}
|
||||
}
|
||||
|
||||
int EvalExpressionI (int id, AActor *self);
|
||||
//
|
||||
// killough 9/98: a mushroom explosion effect, sorta :)
|
||||
// Original idea: Linguica
|
||||
|
|
|
@ -1918,6 +1918,8 @@ void G_FinishTravel ()
|
|||
pawn->dropoffz = pawndup->dropoffz;
|
||||
pawn->floorsector = pawndup->floorsector;
|
||||
pawn->floorpic = pawndup->floorpic;
|
||||
pawn->ceilingsector = pawndup->ceilingsector;
|
||||
pawn->ceilingpic = pawndup->ceilingpic;
|
||||
pawn->floorclip = pawndup->floorclip;
|
||||
pawn->waterlevel = pawndup->waterlevel;
|
||||
pawn->target = NULL;
|
||||
|
|
|
@ -1966,6 +1966,7 @@ IMPLEMENT_ACTOR (ASigil, Strife, -1, 0)
|
|||
PROP_Flags (MF_SPECIAL)
|
||||
PROP_Flags2 (MF2_FLOORCLIP)
|
||||
PROP_Weapon_FlagsSet (WIF_CHEATNOTWEAPON)
|
||||
PROP_Inventory_PickupSound("weapons/sigilcharge")
|
||||
PROP_Tag ("SIGIL")
|
||||
PROP_Inventory_Icon ("I_SGL1")
|
||||
END_DEFAULTS
|
||||
|
|
|
@ -411,8 +411,40 @@ BOOL P_Move (AActor *actor)
|
|||
tryx = (origx = actor->x) + (deltax = FixedMul (speed, xspeed[actor->movedir]));
|
||||
tryy = (origy = actor->y) + (deltay = FixedMul (speed, yspeed[actor->movedir]));
|
||||
|
||||
// Like P_XYMovement this should do multiple moves if the step size is too large
|
||||
|
||||
fixed_t maxmove = actor->radius - FRACUNIT;
|
||||
int steps = 1;
|
||||
|
||||
if (maxmove > 0)
|
||||
{
|
||||
const fixed_t xspeed = abs (deltax);
|
||||
const fixed_t yspeed = abs (deltay);
|
||||
|
||||
if (xspeed > yspeed)
|
||||
{
|
||||
if (xspeed > maxmove)
|
||||
{
|
||||
steps = 1 + xspeed / maxmove;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (yspeed > maxmove)
|
||||
{
|
||||
steps = 1 + yspeed / maxmove;
|
||||
}
|
||||
}
|
||||
}
|
||||
try_ok = true;
|
||||
for(int i=1; i < steps; i++)
|
||||
{
|
||||
try_ok = P_TryMove(actor, origx + Scale(deltax, i, steps), origy + Scale(deltay, i, steps), false);
|
||||
if (!try_ok) break;
|
||||
}
|
||||
|
||||
// killough 3/15/98: don't jump over dropoffs:
|
||||
try_ok = P_TryMove (actor, tryx, tryy, false);
|
||||
if (try_ok) try_ok = P_TryMove (actor, tryx, tryy, false);
|
||||
|
||||
// [GrafZahl] Interpolating monster movement as it is done here just looks bad
|
||||
// so make it switchable!
|
||||
|
@ -481,7 +513,7 @@ BOOL P_Move (AActor *actor)
|
|||
{
|
||||
// [RH] let monsters push lines, as well as use them
|
||||
if (P_ActivateLine (ld, actor, 0, SPAC_USE) ||
|
||||
P_ActivateLine (ld, actor, 0, SPAC_PUSH))
|
||||
((actor->flags & MF2_PUSHWALL) && P_ActivateLine (ld, actor, 0, SPAC_PUSH)))
|
||||
{
|
||||
good |= ld == BlockingLine ? 1 : 2;
|
||||
}
|
||||
|
|
|
@ -1354,7 +1354,9 @@ BOOL CheckCheatmode ();
|
|||
|
||||
CCMD (kill)
|
||||
{
|
||||
if (argv.argc() > 1 && !stricmp (argv[1], "monsters"))
|
||||
if (argv.argc() > 1)
|
||||
{
|
||||
if (!stricmp (argv[1], "monsters"))
|
||||
{
|
||||
// Kill all the monsters
|
||||
if (CheckCheatmode ())
|
||||
|
@ -1364,6 +1366,12 @@ CCMD (kill)
|
|||
Net_WriteByte (CHT_MASSACRE);
|
||||
}
|
||||
else
|
||||
{
|
||||
Printf("cannot kill '%s'\n", argv[1]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Kill the player
|
||||
Net_WriteByte (DEM_SUICIDE);
|
||||
|
|
|
@ -259,6 +259,8 @@ extern fixed_t tmffloorz, tmfceilingz;
|
|||
extern fixed_t tmfdropoffz;
|
||||
extern fixed_t tmffloorpic;
|
||||
extern sector_t *tmffloorsector;
|
||||
extern fixed_t tmfceilingpic;
|
||||
extern sector_t *tmfceilingsector;
|
||||
|
||||
|
||||
//Added by MC: tmsectortype
|
||||
|
|
|
@ -93,6 +93,8 @@ fixed_t tmceilingz;
|
|||
fixed_t tmdropoffz;
|
||||
int tmfloorpic;
|
||||
sector_t *tmfloorsector;
|
||||
int tmceilingpic;
|
||||
sector_t *tmceilingsector;
|
||||
|
||||
static fixed_t tmfbbox[4];
|
||||
static AActor *tmfthing;
|
||||
|
@ -101,6 +103,8 @@ fixed_t tmfceilingz;
|
|||
fixed_t tmfdropoffz;
|
||||
fixed_t tmffloorpic;
|
||||
sector_t *tmffloorsector;
|
||||
fixed_t tmfceilingpic;
|
||||
sector_t *tmfceilingsector;
|
||||
|
||||
//Added by MC: So bot will know what kind of sector it's entering.
|
||||
sector_t* tmsector;
|
||||
|
@ -122,6 +126,7 @@ AActor *BlockingMobj;
|
|||
msecnode_t* sector_list = NULL; // phares 3/16/98
|
||||
|
||||
extern sector_t *openbottomsec;
|
||||
extern sector_t *opentopsec;
|
||||
|
||||
bool DoRipping;
|
||||
AActor *LastRipped;
|
||||
|
@ -228,6 +233,8 @@ void P_FindFloorCeiling (AActor *actor)
|
|||
tmfceilingz = sec->ceilingplane.ZatPoint (x, y);
|
||||
tmffloorpic = sec->floorpic;
|
||||
tmffloorsector = sec;
|
||||
tmfceilingpic = sec->ceilingpic;
|
||||
tmfceilingsector = sec;
|
||||
tmfthing = actor;
|
||||
validcount++;
|
||||
|
||||
|
@ -338,6 +345,8 @@ BOOL P_TeleportMove (AActor *thing, fixed_t x, fixed_t y, fixed_t z, BOOL telefr
|
|||
tmfceilingz = newsubsec->sector->ceilingplane.ZatPoint (x, y);
|
||||
tmffloorpic = newsubsec->sector->floorpic;
|
||||
tmffloorsector = newsubsec->sector;
|
||||
tmfceilingpic = newsubsec->sector->ceilingpic;
|
||||
tmfceilingsector = newsubsec->sector;
|
||||
tmfthing = tmthing;
|
||||
|
||||
validcount++;
|
||||
|
@ -367,6 +376,8 @@ BOOL P_TeleportMove (AActor *thing, fixed_t x, fixed_t y, fixed_t z, BOOL telefr
|
|||
fixed_t saveceilingz = tmfceilingz;
|
||||
sector_t *savesector = tmffloorsector;
|
||||
int savepic = tmffloorpic;
|
||||
sector_t *savecsector = tmffloorsector;
|
||||
int savecpic = tmffloorpic;
|
||||
fixed_t savedropoff = tmfdropoffz;
|
||||
|
||||
for (bx=xl ; bx<=xh ; bx++)
|
||||
|
@ -386,6 +397,8 @@ BOOL P_TeleportMove (AActor *thing, fixed_t x, fixed_t y, fixed_t z, BOOL telefr
|
|||
thing->ceilingz = saveceilingz;
|
||||
thing->floorsector = savesector;
|
||||
thing->floorpic = savepic;
|
||||
thing->ceilingsector = savecsector;
|
||||
thing->ceilingpic = savecpic;
|
||||
thing->dropoffz = savedropoff; // killough 11/98
|
||||
|
||||
if (thing->flags2 & MF2_FLOORCLIP)
|
||||
|
@ -765,6 +778,8 @@ BOOL PIT_CheckLine (line_t *ld)
|
|||
if (opentop < tmceilingz)
|
||||
{
|
||||
tmceilingz = opentop;
|
||||
tmceilingsector = opentopsec;
|
||||
tmceilingpic = opentopsec->ceilingpic;
|
||||
ceilingline = ld;
|
||||
BlockingLine = ld;
|
||||
}
|
||||
|
@ -773,6 +788,7 @@ BOOL PIT_CheckLine (line_t *ld)
|
|||
{
|
||||
tmfloorz = openbottom;
|
||||
tmfloorsector = openbottomsec;
|
||||
tmfloorpic = openbottomsec->floorpic;
|
||||
BlockingLine = ld;
|
||||
}
|
||||
|
||||
|
@ -1265,6 +1281,8 @@ BOOL P_CheckPosition (AActor *thing, fixed_t x, fixed_t y)
|
|||
tmceilingz = newsubsec->sector->ceilingplane.ZatPoint (x, y);
|
||||
tmfloorpic = newsubsec->sector->floorpic;
|
||||
tmfloorsector = newsubsec->sector;
|
||||
tmceilingpic = newsubsec->sector->ceilingpic;
|
||||
tmceilingsector = newsubsec->sector;
|
||||
|
||||
//Added by MC: Fill the tmsector.
|
||||
tmsector = newsubsec->sector;
|
||||
|
@ -1710,6 +1728,8 @@ BOOL P_TryMove (AActor *thing, fixed_t x, fixed_t y,
|
|||
thing->dropoffz = tmdropoffz; // killough 11/98: keep track of dropoffs
|
||||
thing->floorpic = tmfloorpic;
|
||||
thing->floorsector = tmfloorsector;
|
||||
thing->ceilingpic = tmceilingpic;
|
||||
thing->ceilingsector = tmceilingsector;
|
||||
thing->x = x;
|
||||
thing->y = y;
|
||||
|
||||
|
@ -2983,6 +3003,8 @@ void P_RailAttack (AActor *source, int damage, int offset)
|
|||
fixed_t savefloor, saveceil, savedropoff;
|
||||
int savefloorpic;
|
||||
sector_t *savefloorsec;
|
||||
int saveceilingpic;
|
||||
sector_t *saveceilingsec;
|
||||
|
||||
savex = source->x;
|
||||
savey = source->y;
|
||||
|
@ -2992,6 +3014,8 @@ void P_RailAttack (AActor *source, int damage, int offset)
|
|||
savedropoff = source->dropoffz;
|
||||
savefloorpic = source->floorpic;
|
||||
savefloorsec = source->floorsector;
|
||||
saveceilingpic = source->ceilingpic;
|
||||
saveceilingsec = source->ceilingsector;
|
||||
|
||||
source->SetOrigin (trace.X, trace.Y, trace.Z);
|
||||
P_HitWater (source, trace.Sector);
|
||||
|
@ -3002,6 +3026,8 @@ void P_RailAttack (AActor *source, int damage, int offset)
|
|||
source->dropoffz = savedropoff;
|
||||
source->floorpic = savefloorpic;
|
||||
source->floorsector = savefloorsec;
|
||||
source->ceilingpic = saveceilingpic;
|
||||
source->ceilingsector = saveceilingsec;
|
||||
}
|
||||
if (trace.CrossedWater)
|
||||
{
|
||||
|
@ -3605,6 +3631,8 @@ BOOL P_AdjustFloorCeil (AActor *thing)
|
|||
thing->dropoffz = tmdropoffz; // killough 11/98: remember dropoffs
|
||||
thing->floorpic = tmfloorpic;
|
||||
thing->floorsector = tmfloorsector;
|
||||
thing->ceilingpic = tmceilingpic;
|
||||
thing->ceilingsector = tmceilingsector;
|
||||
return isgood;
|
||||
}
|
||||
|
||||
|
|
|
@ -189,6 +189,7 @@ fixed_t openrange;
|
|||
fixed_t lowfloor;
|
||||
extern int tmfloorpic;
|
||||
sector_t *openbottomsec;
|
||||
sector_t *opentopsec;
|
||||
|
||||
void P_LineOpening (const line_t *linedef, fixed_t x, fixed_t y, fixed_t refx, fixed_t refy)
|
||||
{
|
||||
|
@ -212,6 +213,7 @@ void P_LineOpening (const line_t *linedef, fixed_t x, fixed_t y, fixed_t refx, f
|
|||
|
||||
/*Printf ("]]]]]] %d %d\n", ff, bf);*/
|
||||
|
||||
opentopsec = fc < bc? front : back;
|
||||
opentop = fc < bc ? fc : bc;
|
||||
|
||||
bool usefront;
|
||||
|
@ -241,14 +243,14 @@ void P_LineOpening (const line_t *linedef, fixed_t x, fixed_t y, fixed_t refx, f
|
|||
openbottom = ff;
|
||||
openbottomsec = front;
|
||||
lowfloor = bf;
|
||||
tmfloorpic = front->floorpic;
|
||||
//tmfloorpic = front->floorpic;
|
||||
}
|
||||
else
|
||||
{
|
||||
openbottom = bf;
|
||||
openbottomsec = back;
|
||||
lowfloor = ff;
|
||||
tmfloorpic = back->floorpic;
|
||||
//tmfloorpic = back->floorpic;
|
||||
}
|
||||
|
||||
openrange = opentop - openbottom;
|
||||
|
|
|
@ -262,6 +262,7 @@ void AActor::Serialize (FArchive &arc)
|
|||
<< ceilingz
|
||||
<< dropoffz
|
||||
<< floorsector
|
||||
<< ceilingsector
|
||||
<< radius
|
||||
<< height
|
||||
<< momx
|
||||
|
@ -1873,8 +1874,7 @@ void P_ZMovement (AActor *mo)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (mo->floorsector->floorpic == skyflatnum &&
|
||||
!(mo->flags3 & MF3_SKYEXPLODE))
|
||||
if (mo->floorpic == skyflatnum && !(mo->flags3 & MF3_SKYEXPLODE))
|
||||
{
|
||||
// [RH] Just remove the missile without exploding it
|
||||
// if this is a sky floor.
|
||||
|
@ -1961,7 +1961,7 @@ void P_ZMovement (AActor *mo)
|
|||
mo->z = mo->ceilingz - mo->height;
|
||||
if (mo->flags2 & MF2_BOUNCETYPE)
|
||||
{ // ceiling bounce
|
||||
mo->FloorBounceMissile (mo->Sector->ceilingplane);
|
||||
mo->FloorBounceMissile (mo->ceilingsector->ceilingplane);
|
||||
return;
|
||||
}
|
||||
if (mo->momz > 0)
|
||||
|
@ -1977,8 +1977,7 @@ void P_ZMovement (AActor *mo)
|
|||
{
|
||||
return;
|
||||
}
|
||||
if (!(mo->flags3 & MF3_SKYEXPLODE) &&
|
||||
mo->Sector->ceilingpic == skyflatnum)
|
||||
if (mo->ceilingpic == skyflatnum && !(mo->flags3 & MF3_SKYEXPLODE))
|
||||
{
|
||||
mo->Destroy ();
|
||||
return;
|
||||
|
@ -3041,6 +3040,8 @@ AActor *AActor::StaticSpawn (const TypeInfo *type, fixed_t ix, fixed_t iy, fixed
|
|||
actor->ceilingz = actor->Sector->ceilingplane.ZatPoint (ix, iy);
|
||||
actor->floorsector = actor->Sector;
|
||||
actor->floorpic = actor->floorsector->floorpic;
|
||||
actor->ceilingsector = actor->Sector;
|
||||
actor->ceilingpic = actor->ceilingsector->ceilingpic;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -3050,6 +3051,8 @@ AActor *AActor::StaticSpawn (const TypeInfo *type, fixed_t ix, fixed_t iy, fixed
|
|||
actor->ceilingz = tmfceilingz;
|
||||
actor->floorpic = tmffloorpic;
|
||||
actor->floorsector = tmffloorsector;
|
||||
actor->ceilingpic = tmfceilingpic;
|
||||
actor->ceilingsector = tmfceilingsector;
|
||||
}
|
||||
|
||||
actor->SpawnPoint[0] = ix >> FRACBITS;
|
||||
|
@ -3143,6 +3146,7 @@ void AActor::HandleSpawnFlags ()
|
|||
if (SpawnFlags & MTF_FRIENDLY)
|
||||
{
|
||||
flags |= MF_FRIENDLY;
|
||||
// Friendlies don't count as kills!
|
||||
if (flags & MF_COUNTKILL)
|
||||
{
|
||||
flags &= ~MF_COUNTKILL;
|
||||
|
|
|
@ -1011,7 +1011,7 @@ weapons/phgrenadeshoot dsphoot
|
|||
weapons/phgrenadebang dsexplod
|
||||
weapons/sigil dssigil
|
||||
weapons/sigilhit dssglhit
|
||||
weapons/sigilcharge dssglup
|
||||
weapons/sigilcharge dssiglup
|
||||
|
||||
monsters/rifle dsrifle
|
||||
|
||||
|
|
Loading…
Reference in a new issue