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
|
CC ?= gcc
|
||||||
CFLAGS ?= -Wall -Wno-unused -O2 -fomit-frame-pointer
|
CFLAGS ?= -Wall -Wno-unused -O2 -fomit-frame-pointer
|
||||||
CFLAGS += -DHAVE_FILELENGTH -D__forceinline=inline -Izlib -IFLAC `sdl-config --cflags`
|
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`
|
LDFLAGS += -lFLAC++ -lFLAC -lz -lfmod `sdl-config --libs`
|
||||||
|
|
||||||
NASM ?= nasm
|
NASM ?= nasm
|
||||||
|
@ -35,7 +35,7 @@ ZDOOMDEBUG = zdoomd
|
||||||
ifndef DEBUG
|
ifndef DEBUG
|
||||||
OBJDIR = $(RELEASEOBJ)
|
OBJDIR = $(RELEASEOBJ)
|
||||||
CFLAGS += -DNDEBUG
|
CFLAGS += -DNDEBUG
|
||||||
LDFLAGS += -Wl,-Map=zdoomgcc.map
|
LDFLAGS += -Wl,-Map=$(ZDOOM).map
|
||||||
ZDOOMBIN = $(ZDOOM)
|
ZDOOMBIN = $(ZDOOM)
|
||||||
else
|
else
|
||||||
OBJDIR = $(DEBUGOBJ)
|
OBJDIR = $(DEBUGOBJ)
|
||||||
|
@ -44,15 +44,17 @@ else
|
||||||
endif
|
endif
|
||||||
CXXFLAGS += $(CFLAGS)
|
CXXFLAGS += $(CFLAGS)
|
||||||
|
|
||||||
OBJS = $(addprefix $(OBJDIR)/,$(CPPOBJFILES) $(COBJFILES))
|
COBJS = $(addprefix $(OBJDIR)/,$(CPPOBJFILES) $(COBJFILES))
|
||||||
DEPS = $(patsubst %.o,%.d,$(OBJS))
|
DEPS = $(patsubst %.o,%.d,$(COBJS))
|
||||||
OBJS += $(addprefix $(OBJDIR)/,$(AOBJFILES))
|
OBJS = $(addprefix $(OBJDIR)/,$(AOBJFILES)) $(COBJS)
|
||||||
|
|
||||||
|
# controls whether to start another instance of make at deps
|
||||||
|
RESTART?=1
|
||||||
|
|
||||||
# rule pattern for dependencies
|
# rule pattern for dependencies
|
||||||
define DEPBUILD_PATTERN
|
define DEPBUILD_PATTERN
|
||||||
_dep_: _src_
|
_dep_: _src_
|
||||||
$(CXX) _src_ -MM $(CXXFLAGS) -MT "$$(patsubst %.d,%.o,_dep_) _dep_" -MF _dep_
|
$(CXX) _src_ -MM $(CXXFLAGS) -MT "$$(patsubst %.d,%.o,_dep_) _dep_" -MF _dep_
|
||||||
-include _dep_
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# rule pattern for assembly files
|
# rule pattern for assembly files
|
||||||
|
@ -68,10 +70,13 @@ endef
|
||||||
|
|
||||||
all: $(ZDOOMBIN) zdoom.wad
|
all: $(ZDOOMBIN) zdoom.wad
|
||||||
|
|
||||||
$(ZDOOMBIN): $(OBJDIR) $(DEPS) $(OBJS)
|
$(ZDOOMBIN): $(OBJDIR) deps $(OBJS)
|
||||||
$(CXX) $(LDFLAGS) $(OBJDIR)/autostart.o \
|
$(CXX) $(LDFLAGS) $(OBJDIR)/autostart.o \
|
||||||
$(filter-out %/autostart.o %/autozend.o,$(OBJS)) $(OBJDIR)/autozend.o -o $(ZDOOMBIN)
|
$(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
|
# textually substitute in the _dep_ and the _src_ it depends on to create rules
|
||||||
# for creating dependency files without any existing dependency files
|
# for creating dependency files without any existing dependency files
|
||||||
$(foreach src,$(CPPSRCS) $(CSRCS), $(eval $(subst _src_,$(src),$(subst \
|
$(foreach src,$(CPPSRCS) $(CSRCS), $(eval $(subst _src_,$(src),$(subst \
|
||||||
|
@ -89,21 +94,28 @@ _obj_,$(OBJDIR)/$(patsubst %.c,%.o,$(notdir $$$(src))),$(CBUILD_PATTERN)))))
|
||||||
$(OBJDIR)/%.o:
|
$(OBJDIR)/%.o:
|
||||||
$(CXX) -c $(CXXFLAGS) -o $@ -c $<
|
$(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):
|
$(OBJDIR):
|
||||||
mkdir -p $(OBJDIR)
|
mkdir $(OBJDIR)
|
||||||
|
|
||||||
zdoom.wad:
|
zdoom.wad:
|
||||||
make -C wadsrc/ -f Makefile
|
make -C wadsrc/ -f Makefile
|
||||||
|
|
||||||
.PHONY : clean cleandeps cleanobjs
|
.PHONY : clean cleandeps cleanobjs distclean deps
|
||||||
|
|
||||||
clean:
|
clean: cleanobjs
|
||||||
rm -f $(RELEASEOBJ)/* $(DEBUGOBJ)/* $(ZDOOMDEBUG) $(ZDOOM)
|
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:
|
cleandeps:
|
||||||
rm -f $(RELEASEOBJ)/*.d $(DEBUGOBJ)/*.d
|
rm -f $(RELEASEOBJ)/*.d $(DEBUGOBJ)/*.d
|
||||||
|
|
||||||
cleanobjs:
|
cleanobjs:
|
||||||
rm -f $(RELEASEOBJ)/*.o $(DEBUGOBJ)/*.o
|
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
|
April 16, 2006
|
||||||
- Fixed: After respawning in a singleplayer demo, demo playback went out
|
- Fixed: After respawning in a singleplayer demo, demo playback went out
|
||||||
of sync becase the RNG seed was being altered during recording but not
|
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.
|
- Functions in i_music.c now pay attention to the looping flag.
|
||||||
- C_AddNotifyString() now pays attention to show_messages cvar.
|
- C_AddNotifyString() now pays attention to show_messages cvar.
|
||||||
- Added support for specifying console commands on the command line.
|
- Added support for specifying console commands on the command line.
|
||||||
|
|
||||||
|
|
|
@ -600,6 +600,8 @@ public:
|
||||||
|
|
||||||
struct sector_t *floorsector;
|
struct sector_t *floorsector;
|
||||||
SDWORD floorpic; // contacted sec floorpic
|
SDWORD floorpic; // contacted sec floorpic
|
||||||
|
struct sector_t *ceilingsector;
|
||||||
|
SDWORD ceilingpic; // contacted sec ceilingpic
|
||||||
fixed_t radius, height; // for movement checking
|
fixed_t radius, height; // for movement checking
|
||||||
fixed_t momx, momy, momz; // momentums
|
fixed_t momx, momy, momz; // momentums
|
||||||
SDWORD tics; // state tic counter
|
SDWORD tics; // state tic counter
|
||||||
|
|
|
@ -116,7 +116,7 @@ void D_AddWildFile (const char *pattern);
|
||||||
// PRIVATE FUNCTION PROTOTYPES ---------------------------------------------
|
// PRIVATE FUNCTION PROTOTYPES ---------------------------------------------
|
||||||
|
|
||||||
void D_DoomLoop ();
|
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 ();
|
static void STACK_ARGS DoConsoleAtExit ();
|
||||||
|
|
||||||
// EXTERNAL DATA DECLARATIONS ----------------------------------------------
|
// 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];
|
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))
|
if (FileExists (file))
|
||||||
{
|
{
|
||||||
return file;
|
return file;
|
||||||
|
@ -1910,7 +1919,8 @@ void D_DoomMain (void)
|
||||||
|
|
||||||
// [RH] Make sure zdoom.wad is always loaded,
|
// [RH] Make sure zdoom.wad is always loaded,
|
||||||
// as it contains magic stuff we need.
|
// as it contains magic stuff we need.
|
||||||
wad = BaseFileSearch ("zdoom.wad", NULL);
|
|
||||||
|
wad = BaseFileSearch ("zdoom.wad", NULL, true);
|
||||||
if (wad)
|
if (wad)
|
||||||
D_AddFile (wad);
|
D_AddFile (wad);
|
||||||
else
|
else
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include "p_enemy.h"
|
#include "p_enemy.h"
|
||||||
#include "gstrings.h"
|
#include "gstrings.h"
|
||||||
#include "a_action.h"
|
#include "a_action.h"
|
||||||
|
#include "thingdef.h"
|
||||||
|
|
||||||
void A_FatRaise (AActor *);
|
void A_FatRaise (AActor *);
|
||||||
void A_FatAttack1 (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 :)
|
// killough 9/98: a mushroom explosion effect, sorta :)
|
||||||
// Original idea: Linguica
|
// Original idea: Linguica
|
||||||
|
|
|
@ -1918,6 +1918,8 @@ void G_FinishTravel ()
|
||||||
pawn->dropoffz = pawndup->dropoffz;
|
pawn->dropoffz = pawndup->dropoffz;
|
||||||
pawn->floorsector = pawndup->floorsector;
|
pawn->floorsector = pawndup->floorsector;
|
||||||
pawn->floorpic = pawndup->floorpic;
|
pawn->floorpic = pawndup->floorpic;
|
||||||
|
pawn->ceilingsector = pawndup->ceilingsector;
|
||||||
|
pawn->ceilingpic = pawndup->ceilingpic;
|
||||||
pawn->floorclip = pawndup->floorclip;
|
pawn->floorclip = pawndup->floorclip;
|
||||||
pawn->waterlevel = pawndup->waterlevel;
|
pawn->waterlevel = pawndup->waterlevel;
|
||||||
pawn->target = NULL;
|
pawn->target = NULL;
|
||||||
|
|
|
@ -1966,6 +1966,7 @@ IMPLEMENT_ACTOR (ASigil, Strife, -1, 0)
|
||||||
PROP_Flags (MF_SPECIAL)
|
PROP_Flags (MF_SPECIAL)
|
||||||
PROP_Flags2 (MF2_FLOORCLIP)
|
PROP_Flags2 (MF2_FLOORCLIP)
|
||||||
PROP_Weapon_FlagsSet (WIF_CHEATNOTWEAPON)
|
PROP_Weapon_FlagsSet (WIF_CHEATNOTWEAPON)
|
||||||
|
PROP_Inventory_PickupSound("weapons/sigilcharge")
|
||||||
PROP_Tag ("SIGIL")
|
PROP_Tag ("SIGIL")
|
||||||
PROP_Inventory_Icon ("I_SGL1")
|
PROP_Inventory_Icon ("I_SGL1")
|
||||||
END_DEFAULTS
|
END_DEFAULTS
|
||||||
|
|
|
@ -411,8 +411,40 @@ BOOL P_Move (AActor *actor)
|
||||||
tryx = (origx = actor->x) + (deltax = FixedMul (speed, xspeed[actor->movedir]));
|
tryx = (origx = actor->x) + (deltax = FixedMul (speed, xspeed[actor->movedir]));
|
||||||
tryy = (origy = actor->y) + (deltay = FixedMul (speed, yspeed[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:
|
// 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
|
// [GrafZahl] Interpolating monster movement as it is done here just looks bad
|
||||||
// so make it switchable!
|
// so make it switchable!
|
||||||
|
@ -481,7 +513,7 @@ BOOL P_Move (AActor *actor)
|
||||||
{
|
{
|
||||||
// [RH] let monsters push lines, as well as use them
|
// [RH] let monsters push lines, as well as use them
|
||||||
if (P_ActivateLine (ld, actor, 0, SPAC_USE) ||
|
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;
|
good |= ld == BlockingLine ? 1 : 2;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1354,7 +1354,9 @@ BOOL CheckCheatmode ();
|
||||||
|
|
||||||
CCMD (kill)
|
CCMD (kill)
|
||||||
{
|
{
|
||||||
if (argv.argc() > 1 && !stricmp (argv[1], "monsters"))
|
if (argv.argc() > 1)
|
||||||
|
{
|
||||||
|
if (!stricmp (argv[1], "monsters"))
|
||||||
{
|
{
|
||||||
// Kill all the monsters
|
// Kill all the monsters
|
||||||
if (CheckCheatmode ())
|
if (CheckCheatmode ())
|
||||||
|
@ -1364,6 +1366,12 @@ CCMD (kill)
|
||||||
Net_WriteByte (CHT_MASSACRE);
|
Net_WriteByte (CHT_MASSACRE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
Printf("cannot kill '%s'\n", argv[1]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
// Kill the player
|
// Kill the player
|
||||||
Net_WriteByte (DEM_SUICIDE);
|
Net_WriteByte (DEM_SUICIDE);
|
||||||
|
|
|
@ -259,6 +259,8 @@ extern fixed_t tmffloorz, tmfceilingz;
|
||||||
extern fixed_t tmfdropoffz;
|
extern fixed_t tmfdropoffz;
|
||||||
extern fixed_t tmffloorpic;
|
extern fixed_t tmffloorpic;
|
||||||
extern sector_t *tmffloorsector;
|
extern sector_t *tmffloorsector;
|
||||||
|
extern fixed_t tmfceilingpic;
|
||||||
|
extern sector_t *tmfceilingsector;
|
||||||
|
|
||||||
|
|
||||||
//Added by MC: tmsectortype
|
//Added by MC: tmsectortype
|
||||||
|
|
|
@ -93,6 +93,8 @@ fixed_t tmceilingz;
|
||||||
fixed_t tmdropoffz;
|
fixed_t tmdropoffz;
|
||||||
int tmfloorpic;
|
int tmfloorpic;
|
||||||
sector_t *tmfloorsector;
|
sector_t *tmfloorsector;
|
||||||
|
int tmceilingpic;
|
||||||
|
sector_t *tmceilingsector;
|
||||||
|
|
||||||
static fixed_t tmfbbox[4];
|
static fixed_t tmfbbox[4];
|
||||||
static AActor *tmfthing;
|
static AActor *tmfthing;
|
||||||
|
@ -101,6 +103,8 @@ fixed_t tmfceilingz;
|
||||||
fixed_t tmfdropoffz;
|
fixed_t tmfdropoffz;
|
||||||
fixed_t tmffloorpic;
|
fixed_t tmffloorpic;
|
||||||
sector_t *tmffloorsector;
|
sector_t *tmffloorsector;
|
||||||
|
fixed_t tmfceilingpic;
|
||||||
|
sector_t *tmfceilingsector;
|
||||||
|
|
||||||
//Added by MC: So bot will know what kind of sector it's entering.
|
//Added by MC: So bot will know what kind of sector it's entering.
|
||||||
sector_t* tmsector;
|
sector_t* tmsector;
|
||||||
|
@ -122,6 +126,7 @@ AActor *BlockingMobj;
|
||||||
msecnode_t* sector_list = NULL; // phares 3/16/98
|
msecnode_t* sector_list = NULL; // phares 3/16/98
|
||||||
|
|
||||||
extern sector_t *openbottomsec;
|
extern sector_t *openbottomsec;
|
||||||
|
extern sector_t *opentopsec;
|
||||||
|
|
||||||
bool DoRipping;
|
bool DoRipping;
|
||||||
AActor *LastRipped;
|
AActor *LastRipped;
|
||||||
|
@ -228,6 +233,8 @@ void P_FindFloorCeiling (AActor *actor)
|
||||||
tmfceilingz = sec->ceilingplane.ZatPoint (x, y);
|
tmfceilingz = sec->ceilingplane.ZatPoint (x, y);
|
||||||
tmffloorpic = sec->floorpic;
|
tmffloorpic = sec->floorpic;
|
||||||
tmffloorsector = sec;
|
tmffloorsector = sec;
|
||||||
|
tmfceilingpic = sec->ceilingpic;
|
||||||
|
tmfceilingsector = sec;
|
||||||
tmfthing = actor;
|
tmfthing = actor;
|
||||||
validcount++;
|
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);
|
tmfceilingz = newsubsec->sector->ceilingplane.ZatPoint (x, y);
|
||||||
tmffloorpic = newsubsec->sector->floorpic;
|
tmffloorpic = newsubsec->sector->floorpic;
|
||||||
tmffloorsector = newsubsec->sector;
|
tmffloorsector = newsubsec->sector;
|
||||||
|
tmfceilingpic = newsubsec->sector->ceilingpic;
|
||||||
|
tmfceilingsector = newsubsec->sector;
|
||||||
tmfthing = tmthing;
|
tmfthing = tmthing;
|
||||||
|
|
||||||
validcount++;
|
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;
|
fixed_t saveceilingz = tmfceilingz;
|
||||||
sector_t *savesector = tmffloorsector;
|
sector_t *savesector = tmffloorsector;
|
||||||
int savepic = tmffloorpic;
|
int savepic = tmffloorpic;
|
||||||
|
sector_t *savecsector = tmffloorsector;
|
||||||
|
int savecpic = tmffloorpic;
|
||||||
fixed_t savedropoff = tmfdropoffz;
|
fixed_t savedropoff = tmfdropoffz;
|
||||||
|
|
||||||
for (bx=xl ; bx<=xh ; bx++)
|
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->ceilingz = saveceilingz;
|
||||||
thing->floorsector = savesector;
|
thing->floorsector = savesector;
|
||||||
thing->floorpic = savepic;
|
thing->floorpic = savepic;
|
||||||
|
thing->ceilingsector = savecsector;
|
||||||
|
thing->ceilingpic = savecpic;
|
||||||
thing->dropoffz = savedropoff; // killough 11/98
|
thing->dropoffz = savedropoff; // killough 11/98
|
||||||
|
|
||||||
if (thing->flags2 & MF2_FLOORCLIP)
|
if (thing->flags2 & MF2_FLOORCLIP)
|
||||||
|
@ -765,6 +778,8 @@ BOOL PIT_CheckLine (line_t *ld)
|
||||||
if (opentop < tmceilingz)
|
if (opentop < tmceilingz)
|
||||||
{
|
{
|
||||||
tmceilingz = opentop;
|
tmceilingz = opentop;
|
||||||
|
tmceilingsector = opentopsec;
|
||||||
|
tmceilingpic = opentopsec->ceilingpic;
|
||||||
ceilingline = ld;
|
ceilingline = ld;
|
||||||
BlockingLine = ld;
|
BlockingLine = ld;
|
||||||
}
|
}
|
||||||
|
@ -773,6 +788,7 @@ BOOL PIT_CheckLine (line_t *ld)
|
||||||
{
|
{
|
||||||
tmfloorz = openbottom;
|
tmfloorz = openbottom;
|
||||||
tmfloorsector = openbottomsec;
|
tmfloorsector = openbottomsec;
|
||||||
|
tmfloorpic = openbottomsec->floorpic;
|
||||||
BlockingLine = ld;
|
BlockingLine = ld;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1265,6 +1281,8 @@ BOOL P_CheckPosition (AActor *thing, fixed_t x, fixed_t y)
|
||||||
tmceilingz = newsubsec->sector->ceilingplane.ZatPoint (x, y);
|
tmceilingz = newsubsec->sector->ceilingplane.ZatPoint (x, y);
|
||||||
tmfloorpic = newsubsec->sector->floorpic;
|
tmfloorpic = newsubsec->sector->floorpic;
|
||||||
tmfloorsector = newsubsec->sector;
|
tmfloorsector = newsubsec->sector;
|
||||||
|
tmceilingpic = newsubsec->sector->ceilingpic;
|
||||||
|
tmceilingsector = newsubsec->sector;
|
||||||
|
|
||||||
//Added by MC: Fill the tmsector.
|
//Added by MC: Fill the tmsector.
|
||||||
tmsector = newsubsec->sector;
|
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->dropoffz = tmdropoffz; // killough 11/98: keep track of dropoffs
|
||||||
thing->floorpic = tmfloorpic;
|
thing->floorpic = tmfloorpic;
|
||||||
thing->floorsector = tmfloorsector;
|
thing->floorsector = tmfloorsector;
|
||||||
|
thing->ceilingpic = tmceilingpic;
|
||||||
|
thing->ceilingsector = tmceilingsector;
|
||||||
thing->x = x;
|
thing->x = x;
|
||||||
thing->y = y;
|
thing->y = y;
|
||||||
|
|
||||||
|
@ -2983,6 +3003,8 @@ void P_RailAttack (AActor *source, int damage, int offset)
|
||||||
fixed_t savefloor, saveceil, savedropoff;
|
fixed_t savefloor, saveceil, savedropoff;
|
||||||
int savefloorpic;
|
int savefloorpic;
|
||||||
sector_t *savefloorsec;
|
sector_t *savefloorsec;
|
||||||
|
int saveceilingpic;
|
||||||
|
sector_t *saveceilingsec;
|
||||||
|
|
||||||
savex = source->x;
|
savex = source->x;
|
||||||
savey = source->y;
|
savey = source->y;
|
||||||
|
@ -2992,6 +3014,8 @@ void P_RailAttack (AActor *source, int damage, int offset)
|
||||||
savedropoff = source->dropoffz;
|
savedropoff = source->dropoffz;
|
||||||
savefloorpic = source->floorpic;
|
savefloorpic = source->floorpic;
|
||||||
savefloorsec = source->floorsector;
|
savefloorsec = source->floorsector;
|
||||||
|
saveceilingpic = source->ceilingpic;
|
||||||
|
saveceilingsec = source->ceilingsector;
|
||||||
|
|
||||||
source->SetOrigin (trace.X, trace.Y, trace.Z);
|
source->SetOrigin (trace.X, trace.Y, trace.Z);
|
||||||
P_HitWater (source, trace.Sector);
|
P_HitWater (source, trace.Sector);
|
||||||
|
@ -3002,6 +3026,8 @@ void P_RailAttack (AActor *source, int damage, int offset)
|
||||||
source->dropoffz = savedropoff;
|
source->dropoffz = savedropoff;
|
||||||
source->floorpic = savefloorpic;
|
source->floorpic = savefloorpic;
|
||||||
source->floorsector = savefloorsec;
|
source->floorsector = savefloorsec;
|
||||||
|
source->ceilingpic = saveceilingpic;
|
||||||
|
source->ceilingsector = saveceilingsec;
|
||||||
}
|
}
|
||||||
if (trace.CrossedWater)
|
if (trace.CrossedWater)
|
||||||
{
|
{
|
||||||
|
@ -3605,6 +3631,8 @@ BOOL P_AdjustFloorCeil (AActor *thing)
|
||||||
thing->dropoffz = tmdropoffz; // killough 11/98: remember dropoffs
|
thing->dropoffz = tmdropoffz; // killough 11/98: remember dropoffs
|
||||||
thing->floorpic = tmfloorpic;
|
thing->floorpic = tmfloorpic;
|
||||||
thing->floorsector = tmfloorsector;
|
thing->floorsector = tmfloorsector;
|
||||||
|
thing->ceilingpic = tmceilingpic;
|
||||||
|
thing->ceilingsector = tmceilingsector;
|
||||||
return isgood;
|
return isgood;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -189,6 +189,7 @@ fixed_t openrange;
|
||||||
fixed_t lowfloor;
|
fixed_t lowfloor;
|
||||||
extern int tmfloorpic;
|
extern int tmfloorpic;
|
||||||
sector_t *openbottomsec;
|
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)
|
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);*/
|
/*Printf ("]]]]]] %d %d\n", ff, bf);*/
|
||||||
|
|
||||||
|
opentopsec = fc < bc? front : back;
|
||||||
opentop = fc < bc ? fc : bc;
|
opentop = fc < bc ? fc : bc;
|
||||||
|
|
||||||
bool usefront;
|
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;
|
openbottom = ff;
|
||||||
openbottomsec = front;
|
openbottomsec = front;
|
||||||
lowfloor = bf;
|
lowfloor = bf;
|
||||||
tmfloorpic = front->floorpic;
|
//tmfloorpic = front->floorpic;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
openbottom = bf;
|
openbottom = bf;
|
||||||
openbottomsec = back;
|
openbottomsec = back;
|
||||||
lowfloor = ff;
|
lowfloor = ff;
|
||||||
tmfloorpic = back->floorpic;
|
//tmfloorpic = back->floorpic;
|
||||||
}
|
}
|
||||||
|
|
||||||
openrange = opentop - openbottom;
|
openrange = opentop - openbottom;
|
||||||
|
|
|
@ -262,6 +262,7 @@ void AActor::Serialize (FArchive &arc)
|
||||||
<< ceilingz
|
<< ceilingz
|
||||||
<< dropoffz
|
<< dropoffz
|
||||||
<< floorsector
|
<< floorsector
|
||||||
|
<< ceilingsector
|
||||||
<< radius
|
<< radius
|
||||||
<< height
|
<< height
|
||||||
<< momx
|
<< momx
|
||||||
|
@ -1873,8 +1874,7 @@ void P_ZMovement (AActor *mo)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (mo->floorsector->floorpic == skyflatnum &&
|
if (mo->floorpic == skyflatnum && !(mo->flags3 & MF3_SKYEXPLODE))
|
||||||
!(mo->flags3 & MF3_SKYEXPLODE))
|
|
||||||
{
|
{
|
||||||
// [RH] Just remove the missile without exploding it
|
// [RH] Just remove the missile without exploding it
|
||||||
// if this is a sky floor.
|
// if this is a sky floor.
|
||||||
|
@ -1961,7 +1961,7 @@ void P_ZMovement (AActor *mo)
|
||||||
mo->z = mo->ceilingz - mo->height;
|
mo->z = mo->ceilingz - mo->height;
|
||||||
if (mo->flags2 & MF2_BOUNCETYPE)
|
if (mo->flags2 & MF2_BOUNCETYPE)
|
||||||
{ // ceiling bounce
|
{ // ceiling bounce
|
||||||
mo->FloorBounceMissile (mo->Sector->ceilingplane);
|
mo->FloorBounceMissile (mo->ceilingsector->ceilingplane);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (mo->momz > 0)
|
if (mo->momz > 0)
|
||||||
|
@ -1977,8 +1977,7 @@ void P_ZMovement (AActor *mo)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!(mo->flags3 & MF3_SKYEXPLODE) &&
|
if (mo->ceilingpic == skyflatnum && !(mo->flags3 & MF3_SKYEXPLODE))
|
||||||
mo->Sector->ceilingpic == skyflatnum)
|
|
||||||
{
|
{
|
||||||
mo->Destroy ();
|
mo->Destroy ();
|
||||||
return;
|
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->ceilingz = actor->Sector->ceilingplane.ZatPoint (ix, iy);
|
||||||
actor->floorsector = actor->Sector;
|
actor->floorsector = actor->Sector;
|
||||||
actor->floorpic = actor->floorsector->floorpic;
|
actor->floorpic = actor->floorsector->floorpic;
|
||||||
|
actor->ceilingsector = actor->Sector;
|
||||||
|
actor->ceilingpic = actor->ceilingsector->ceilingpic;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3050,6 +3051,8 @@ AActor *AActor::StaticSpawn (const TypeInfo *type, fixed_t ix, fixed_t iy, fixed
|
||||||
actor->ceilingz = tmfceilingz;
|
actor->ceilingz = tmfceilingz;
|
||||||
actor->floorpic = tmffloorpic;
|
actor->floorpic = tmffloorpic;
|
||||||
actor->floorsector = tmffloorsector;
|
actor->floorsector = tmffloorsector;
|
||||||
|
actor->ceilingpic = tmfceilingpic;
|
||||||
|
actor->ceilingsector = tmfceilingsector;
|
||||||
}
|
}
|
||||||
|
|
||||||
actor->SpawnPoint[0] = ix >> FRACBITS;
|
actor->SpawnPoint[0] = ix >> FRACBITS;
|
||||||
|
@ -3143,6 +3146,7 @@ void AActor::HandleSpawnFlags ()
|
||||||
if (SpawnFlags & MTF_FRIENDLY)
|
if (SpawnFlags & MTF_FRIENDLY)
|
||||||
{
|
{
|
||||||
flags |= MF_FRIENDLY;
|
flags |= MF_FRIENDLY;
|
||||||
|
// Friendlies don't count as kills!
|
||||||
if (flags & MF_COUNTKILL)
|
if (flags & MF_COUNTKILL)
|
||||||
{
|
{
|
||||||
flags &= ~MF_COUNTKILL;
|
flags &= ~MF_COUNTKILL;
|
||||||
|
|
|
@ -1011,7 +1011,7 @@ weapons/phgrenadeshoot dsphoot
|
||||||
weapons/phgrenadebang dsexplod
|
weapons/phgrenadebang dsexplod
|
||||||
weapons/sigil dssigil
|
weapons/sigil dssigil
|
||||||
weapons/sigilhit dssglhit
|
weapons/sigilhit dssglhit
|
||||||
weapons/sigilcharge dssglup
|
weapons/sigilcharge dssiglup
|
||||||
|
|
||||||
monsters/rifle dsrifle
|
monsters/rifle dsrifle
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue