May 4, 2006 (Changes by Graf Zahl)

- Converted A_Hexendecorations.cpp
- Changed the lower decal spawning code to transfer the main decal's color if
  the lower decal's default color is the same as the main decal's.
- Changed the decal stretcher back to use the specified size parameters as a 
  scaling factor and not a destination size because this is more consistent with 
  the rest of the decal code. Also adjusted the blood smear definition in DECALDEF
  and the description in the Wiki for this.
- Added Jim's most recent fixes.


SVN r77 (trunk)
This commit is contained in:
Christoph Oelckers 2006-05-04 12:40:39 +00:00
parent fe84b6077e
commit 650d07b8c1
21 changed files with 1796 additions and 906 deletions

View file

@ -3,7 +3,7 @@ do ifopt help
debug - Build debug instead of release
verbose - Show system commands instead of decorated messages
clean - Clean temp files (use with debug to clean debug files)
zdoom.wad - (Re)build just zdoom.wad, even if it already exists
zdoom.pk3 - (Re)build just zdoom.pk3, even if it already exists
To use with MinGW, compile cbuild.c into an executable using:
gcc -O2 -W -Wall -Werror -o cbuild.exe cbuild.c
@ -70,7 +70,7 @@ do ifnopt clean
ifnexist "${OBJ_DIR}" mkdir "${OBJ_DIR}"
ifopt zdoom.wad goto makewad
ifopt zdoom.pk3 goto makewad
do if "${NOASM}"=""
# This sets a custom command to run durring a compile for files with the
@ -201,15 +201,15 @@ ${COMPILER} "autostart.cpp a.nas blocks.nas misc.nas tmap.nas tmap2.nas tmap3.na
${LINK} "${TARGET}"
# If we're not cleaning and zdoom.wad exists, exit now.
if "${EVILCLEAN}"="0" ifexist zdoom.wad exit 0
# If we're not cleaning and zdoom.pk3 exists, exit now.
if "${EVILCLEAN}"="0" ifexist zdoom.pk3 exit 0
#:makewad
LDFLAGS = ''
CFLAGS = '-Os -Wall -fomit-frame-pointer'
LDFLAGS = '-lz'
src_paths tools/makewad
${COMPILER} makewad.c
${COMPILER} makewad.c ioapi.c zip.c
${LINK} tools/makewad/makewad
src_paths tools/xlatcc
@ -224,12 +224,12 @@ do if "${EVILCLEAN}"="1"
-rm "${OBJ_DIR}"
-rm "${DEP_DIR}"
-rm zdoomgcc.map
-rm zdoom.wad
-rm zdoom.pk3
else
chdir wadsrc
do ifret 0
-call ../tools/makewad/makewad zdoom.lst
ifret 0 -copy zdoom.wad ../
ifret 0 -copy zdoom.pk3 ../
chdir ..
done
done

View file

@ -1,3 +1,13 @@
May 4, 2006 (Changes by Graf Zahl)
- Converted A_Hexendecorations.cpp
- Changed the lower decal spawning code to transfer the main decal's color if
the lower decal's default color is the same as the main decal's.
- Changed the decal stretcher back to use the specified size parameters as a
scaling factor and not a destination size because this is more consistent with
the rest of the decal code. Also adjusted the blood smear definition in DECALDEF
and the description in the Wiki for this.
- Added Jim's most recent fixes.
May 3, 2006
- Fixed: Conversion of c_bind.cpp to FString was incomplete.
- Fixed some functions that were declared as taking size_t's but defined as taking
@ -40,6 +50,8 @@ May 3, 2006
- Renamed the string class to FString to emphasize that it is not std::string.
May 3, 2006 (Changes by Graf Zahl)
- Converted A_Speedboots.cpp, A_HexenArmor.cpp and A_Hexenkeys.cpp to DECORATE
- Fixed a few memory allocation issues pointed out by Jim's Valgrind dump.
- Removed doom.x, heretic.x and strife.x from the SVN repository. These
are generated files.
- Fixed: A_PainDie has to check whether a valid target exists before

View file

@ -326,7 +326,7 @@ CCMD (bind)
}
if (argv.argc() == 2)
{
Printf ("\"%s\" = \"%s\"\n", argv[1], (Bindings[i].GetChars() ? Bindings[i].GetChars() : ""));
Printf ("\"%s\" = \"%s\"\n", argv[1], Bindings[i].GetChars());
}
else
{
@ -417,7 +417,7 @@ CCMD (doublebind)
}
if (argv.argc() == 2)
{
Printf ("\"%s\" = \"%s\"\n", argv[1], (DoubleBindings[i].GetChars() ? DoubleBindings[i].GetChars() : ""));
Printf ("\"%s\" = \"%s\"\n", argv[1], DoubleBindings[i].GetChars());
}
else
{

View file

@ -1187,20 +1187,18 @@ DThinker *FDecalStretcherAnim::CreateThinker (DBaseDecal *actor, side_t *wall) c
thinker->TimeToStart = level.maptime + StretchStart;
thinker->TimeToStop = thinker->TimeToStart + StretchTime;
FTexture * tex = TexMan[actor->PicNum];
if (GoalX >= 0 && tex != NULL)
if (GoalX >= 0)
{
thinker->GoalX = GoalX / tex->GetWidth();
thinker->GoalX = GoalX;
thinker->bStretchX = true;
}
else
{
thinker->bStretchX = false;
}
if (GoalY >= 0 && tex != NULL)
if (GoalY >= 0)
{
thinker->GoalY = GoalY / tex->GetHeight();
thinker->GoalY = GoalY;
thinker->bStretchY = true;
}
else

View file

@ -336,6 +336,7 @@ static void ParseDecorate (void (*process)(FState *, int))
if (!SC_GetString ())
{
if (recursion==0) return;
SC_Close();
SC_RestoreScriptState();
recursion--;
continue;

View file

@ -1,111 +0,0 @@
#include "info.h"
#include "a_pickups.h"
#include "d_player.h"
#include "gstrings.h"
#include "p_local.h"
#define PROP_HexenArmor_Class PROP_SpawnHealth
enum
{
ARMOR_ARMOR, // MeshArmor
ARMOR_SHIELD, // FalconShield
ARMOR_HELMET, // PlatinumHelm
ARMOR_AMULET // AmuletOfWarding
};
// Mesh Armor (1) -----------------------------------------------------------
class AMeshArmor : public AHexenArmor
{
DECLARE_ACTOR (AMeshArmor, AHexenArmor)
protected:
const char *PickupMessage ()
{
return GStrings("TXT_ARMOR1");
}
};
FState AMeshArmor::States[] =
{
S_NORMAL (AR_1, 'A', -1, NULL , NULL),
};
IMPLEMENT_ACTOR (AMeshArmor, Hexen, 8005, 68)
PROP_Flags (MF_SPECIAL|MF_NOGRAVITY)
PROP_HexenArmor_Class (ARMOR_ARMOR)
PROP_SpawnState (0)
PROP_Inventory_Amount (0)
END_DEFAULTS
// Falcon Shield (2) --------------------------------------------------------
class AFalconShield : public AHexenArmor
{
DECLARE_ACTOR (AFalconShield, AHexenArmor)
protected:
const char *PickupMessage ()
{
return GStrings("TXT_ARMOR2");
}
};
FState AFalconShield::States[] =
{
S_NORMAL (AR_2, 'A', -1, NULL , NULL),
};
IMPLEMENT_ACTOR (AFalconShield, Hexen, 8006, 69)
PROP_Flags (MF_SPECIAL|MF_NOGRAVITY)
PROP_HexenArmor_Class (ARMOR_SHIELD)
PROP_SpawnState (0)
PROP_Inventory_Amount (0)
END_DEFAULTS
// Platinum Helm (3) --------------------------------------------------------
class APlatinumHelm : public AHexenArmor
{
DECLARE_ACTOR (APlatinumHelm, AHexenArmor)
protected:
const char *PickupMessage ()
{
return GStrings("TXT_ARMOR3");
}
};
FState APlatinumHelm::States[] =
{
S_NORMAL (AR_3, 'A', -1, NULL , NULL),
};
IMPLEMENT_ACTOR (APlatinumHelm, Hexen, 8007, 70)
PROP_Flags (MF_SPECIAL|MF_NOGRAVITY)
PROP_HexenArmor_Class (ARMOR_HELMET)
PROP_SpawnState (0)
PROP_Inventory_Amount (0)
END_DEFAULTS
// Amulet of Warding (4) ----------------------------------------------------
class AAmuletOfWarding : public AHexenArmor
{
DECLARE_ACTOR (AAmuletOfWarding, AHexenArmor)
protected:
const char *PickupMessage ()
{
return GStrings("TXT_ARMOR4");
}
};
FState AAmuletOfWarding::States[] =
{
S_NORMAL (AR_4, 'A', -1, NULL , NULL),
};
IMPLEMENT_ACTOR (AAmuletOfWarding, Hexen, 8008, 71)
PROP_Flags (MF_SPECIAL|MF_NOGRAVITY)
PROP_HexenArmor_Class (ARMOR_AMULET)
PROP_SpawnState (0)
PROP_Inventory_Amount (0)
END_DEFAULTS

View file

@ -1,625 +0,0 @@
#include "actor.h"
#include "info.h"
// Convenient macros --------------------------------------------------------
#define _DECCOMMON(cls,ednum,rad,hi,ns) \
class cls : public AActor { DECLARE_STATELESS_ACTOR (cls, AActor) static FState States[ns]; }; \
IMPLEMENT_ACTOR (cls, Hexen, ednum, 0) \
PROP_SpawnState (0) \
PROP_RadiusFixed (rad) \
PROP_HeightFixed (hi)
#define _DECSTARTSTATES(cls,ns) \
END_DEFAULTS FState cls::States[ns] =
#define DEC(cls,ednum,rad,hi,ns) \
_DECCOMMON(cls,ednum,rad,hi,ns) \
PROP_Flags (MF_SOLID) \
_DECSTARTSTATES(cls,ns)
#define DECNS(cls,ednum,rad,hi,ns) \
_DECCOMMON(cls,ednum,rad,hi,ns) _DECSTARTSTATES(cls,ns)
#define DECHANG(cls,ednum,rad,hi,ns) \
_DECCOMMON(cls,ednum,rad,hi,ns) \
PROP_Flags (MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY) \
_DECSTARTSTATES(cls,ns)
#define DECHANGNB(cls,ednum,rad,hi,ns) \
_DECCOMMON(cls,ednum,rad,hi,ns) \
PROP_Flags (MF_NOBLOCKMAP|MF_SPAWNCEILING|MF_NOGRAVITY) \
_DECSTARTSTATES(cls,ns)
#define DECHANGNS(cls,ednum,rad,hi,ns) \
_DECCOMMON(cls,ednum,rad,hi,ns) \
PROP_Flags (MF_SPAWNCEILING|MF_NOGRAVITY) \
_DECSTARTSTATES(cls,ns)
#define DECNBLOCK(cls,ednum,rad,hi,ns) \
_DECCOMMON(cls,ednum,rad,hi,ns) \
PROP_Flags (MF_NOBLOCKMAP) \
_DECSTARTSTATES(cls,ns)
#define DECNBNG(cls,ednum,rad,hi,ns) \
_DECCOMMON(cls,ednum,rad,hi,ns) \
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY) \
_DECSTARTSTATES(cls,ns)
#define DECNBNGT(cls,ednum,rad,hi,ns) \
_DECCOMMON(cls,ednum,rad,hi,ns) \
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY) \
PROP_RenderStyle (STYLE_Translucent) \
PROP_Alpha (OPAQUE*8/10) \
_DECSTARTSTATES(cls,ns)
// Definitions --------------------------------------------------------------
DEC (AZWingedStatue, 5, 10, 62, 1)
{
S_NORMAL (STTW, 'A', -1, NULL, NULL)
};
DECNS (AZRock1, 6, 20, 16, 1)
{
S_NORMAL (RCK1, 'A', -1, NULL, NULL)
};
DECNS (AZRock2, 7, 20, 16, 1)
{
S_NORMAL (RCK2, 'A', -1, NULL, NULL)
};
DECNS (AZRock3, 9, 20, 16, 1)
{
S_NORMAL (RCK3, 'A', -1, NULL, NULL)
};
DECNS (AZRock4, 15, 20, 16, 1)
{
S_NORMAL (RCK4, 'A', -1, NULL, NULL)
};
DECHANGNS (AZChandelier, 17, 20, 60, 3)
{
S_NORMAL (CDLR, 'A', 4, NULL, &States[1]),
S_NORMAL (CDLR, 'B', 4, NULL, &States[2]),
S_NORMAL (CDLR, 'C', 4, NULL, &States[0]),
};
DECHANGNS (AZChandelierUnlit, 8063, 20, 60, 1)
{
S_NORMAL (CDLR, 'D', -1, NULL, NULL)
};
DEC (AZTreeDead, 24, 10, 96, 1)
{
S_NORMAL (ZTRE, 'A', -1, NULL, NULL)
};
DEC (AZTree, 25, 15, 128, 1)
{
S_NORMAL (ZTRE, 'A', -1, NULL, NULL)
};
DEC (AZTreeSwamp150, 26, 10, 150, 1)
{
S_NORMAL (TRES, 'A', -1, NULL, NULL)
};
DEC (AZTreeSwamp120, 27, 10, 120, 1)
{
S_NORMAL (TRE3, 'A', -1, NULL, NULL)
};
DEC (AZStumpBurned, 28, 12, 20, 1)
{
S_NORMAL (STM1, 'A', -1, NULL, NULL)
};
DEC (AZStumpBare, 29, 12, 20, 1)
{
S_NORMAL (STM2, 'A', -1, NULL, NULL)
};
DECNS (AZStumpSwamp1, 37, 20, 16, 1)
{
S_NORMAL (STM3, 'A', -1, NULL, NULL)
};
DECNS (AZStumpSwamp2, 38, 20, 16, 1)
{
S_NORMAL (STM4, 'A', -1, NULL, NULL)
};
DECNS (AZShroomLarge1, 39, 20, 16, 1)
{
S_NORMAL (MSH1, 'A', -1, NULL, NULL)
};
DECNS (AZShroomLarge2, 40, 20, 16, 1)
{
S_NORMAL (MSH2, 'A', -1, NULL, NULL)
};
DECNS (AZShroomLarge3, 41, 20, 16, 1)
{
S_NORMAL (MSH3, 'A', -1, NULL, NULL)
};
DECNS (AZShroomSmall1, 42, 20, 16, 1)
{
S_NORMAL (MSH4, 'A', -1, NULL, NULL)
};
DECNS (AZShroomSmall2, 44, 20, 16, 1)
{
S_NORMAL (MSH5, 'A', -1, NULL, NULL)
};
DECNS (AZShroomSmall3, 45, 20, 16, 1)
{
S_NORMAL (MSH6, 'A', -1, NULL, NULL)
};
DECNS (AZShroomSmall4, 46, 20, 16, 1)
{
S_NORMAL (MSH7, 'A', -1, NULL, NULL)
};
DECNS (AZShroomSmall5, 47, 20, 16, 1)
{
S_NORMAL (MSH8, 'A', -1, NULL, NULL)
};
DEC (AZStalagmitePillar, 48, 8, 138, 1)
{
S_NORMAL (SGMP, 'A', -1, NULL, NULL)
};
DEC (AZStalagmiteLarge, 49, 8, 48, 1)
{
S_NORMAL (SGM1, 'A', -1, NULL, NULL)
};
DEC (AZStalagmiteMedium, 50, 6, 40, 1)
{
S_NORMAL (SGM2, 'A', -1, NULL, NULL)
};
DEC (AZStalagmiteSmall, 51, 8, 36, 1)
{
S_NORMAL (SGM3, 'A', -1, NULL, NULL)
};
DECHANG (AZStalactiteLarge, 52, 8, 66, 1)
{
S_NORMAL (SLC1, 'A', -1, NULL, NULL)
};
DECHANG (AZStalactiteMedium, 56, 6, 50, 1)
{
S_NORMAL (SLC2, 'A', -1, NULL, NULL)
};
DECHANG (AZStalactiteSmall, 57, 8, 40, 1)
{
S_NORMAL (SLC3, 'A', -1, NULL, NULL)
};
DECHANGNS (AZMossCeiling1, 58, 20, 20, 1)
{
S_NORMAL (MSS1, 'A', -1, NULL, NULL)
};
DECHANGNS (AZMossCeiling2, 59, 20, 24, 1)
{
S_NORMAL (MSS2, 'A', -1, NULL, NULL)
};
DEC (AZSwampVine, 60, 8, 52, 1)
{
S_NORMAL (SWMV, 'A', -1, NULL, NULL)
};
DEC (AZCorpseKabob, 61, 10, 92, 1)
{
S_NORMAL (CPS1, 'A', -1, NULL, NULL)
};
DECNS (AZCorpseSleeping, 62, 20, 16, 1)
{
S_NORMAL (CPS2, 'A', -1, NULL, NULL)
};
DEC (AZTombstoneRIP, 63, 10, 46, 1)
{
S_NORMAL (TMS1, 'A', -1, NULL, NULL)
};
DEC (AZTombstoneShane, 64, 10, 46, 1)
{
S_NORMAL (TMS2, 'A', -1, NULL, NULL)
};
DEC (AZTombstoneBigCross, 65, 10, 46, 1)
{
S_NORMAL (TMS3, 'A', -1, NULL, NULL)
};
DEC (AZTombstoneBrianR, 66, 10, 52, 1)
{
S_NORMAL (TMS4, 'A', -1, NULL, NULL)
};
DEC (AZTombstoneCrossCircle, 67, 10, 52, 1)
{
S_NORMAL (TMS5, 'A', -1, NULL, NULL)
};
DEC (AZTombstoneSmallCross, 68, 8, 46, 1)
{
S_NORMAL (TMS6, 'A', -1, NULL, NULL)
};
DEC (AZTombstoneBrianP, 69, 8, 46, 1)
{
S_NORMAL (TMS7, 'A', -1, NULL, NULL)
};
DECHANG (AZCorpseHanging, 71, 6, 75, 1)
{
S_NORMAL (CPS3, 'A', -1, NULL, NULL)
};
DEC (AZStatueGargoyleGreenTall, 72, 14, 108, 1)
{
S_NORMAL (STT2, 'A', -1, NULL, NULL)
};
DEC (AZStatueGargoyleBlueTall, 73, 14, 108, 1)
{
S_NORMAL (STT3, 'A', -1, NULL, NULL)
};
DEC (AZStatueGargoyleGreenShort, 74, 14, 62, 1)
{
S_NORMAL (STT4, 'A', -1, NULL, NULL)
};
DEC (AZStatueGargoyleBlueShort, 76, 14, 62, 1)
{
S_NORMAL (STT5, 'A', -1, NULL, NULL)
};
DEC (AZStatueGargoyleStripeTall, 8044, 14, 108, 1)
{
S_NORMAL (GAR1, 'A', -1, NULL, NULL)
};
DEC (AZStatueGargoyleDarkRedTall, 8045, 14, 108, 1)
{
S_NORMAL (GAR2, 'A', -1, NULL, NULL)
};
DEC (AZStatueGargoyleRedTall, 8046, 14, 108, 1)
{
S_NORMAL (GAR3, 'A', -1, NULL, NULL)
};
DEC (AZStatueGargoyleTanTall, 8047, 14, 108, 1)
{
S_NORMAL (GAR4, 'A', -1, NULL, NULL)
};
DEC (AZStatueGargoyleRustTall, 8048, 14, 108, 1)
{
S_NORMAL (GAR5, 'A', -1, NULL, NULL)
};
DEC (AZStatueGargoyleDarkRedShort, 8049, 14, 62, 1)
{
S_NORMAL (GAR6, 'A', -1, NULL, NULL)
};
DEC (AZStatueGargoyleRedShort, 8050, 14, 62, 1)
{
S_NORMAL (GAR7, 'A', -1, NULL, NULL)
};
DEC (AZStatueGargoyleTanShort, 8051, 14, 62, 1)
{
S_NORMAL (GAR8, 'A', -1, NULL, NULL)
};
DEC (AZStatueGargoyleRustShort, 8052, 14, 62, 1)
{
S_NORMAL (GAR9, 'A', -1, NULL, NULL)
};
DEC (AZBannerTattered, 77, 8, 120, 1)
{
S_NORMAL (BNR1, 'A', -1, NULL, NULL)
};
DEC (AZTreeLarge1, 78, 15, 180, 1)
{
S_NORMAL (TRE4, 'A', -1, NULL, NULL)
};
DEC (AZTreeLarge2, 79, 15, 180, 1)
{
S_NORMAL (TRE5, 'A', -1, NULL, NULL)
};
DEC (AZTreeGnarled1, 80, 22, 100, 1)
{
S_NORMAL (TRE6, 'A', -1, NULL, NULL)
};
DEC (AZTreeGnarled2, 87, 22, 100, 1)
{
S_NORMAL (TRE7, 'A', -1, NULL, NULL)
};
DEC (AZLog, 88, 20, 25, 1)
{
S_NORMAL (LOGG, 'A', -1, NULL, NULL)
};
DECHANG (AZStalactiteIceLarge, 89, 8, 66, 1)
{
S_NORMAL (ICT1, 'A', -1, NULL, NULL)
};
DECHANG (AZStalactiteIceMedium, 90, 5, 50, 1)
{
S_NORMAL (ICT2, 'A', -1, NULL, NULL)
};
DECHANG (AZStalactiteIceSmall, 91, 4, 32, 1)
{
S_NORMAL (ICT3, 'A', -1, NULL, NULL)
};
DECHANG (AZStalactiteIceTiny, 92, 4, 8, 1)
{
S_NORMAL (ICT4, 'A', -1, NULL, NULL)
};
DEC (AZStalagmiteIceLarge, 93, 8, 66, 1)
{
S_NORMAL (ICM1, 'A', -1, NULL, NULL)
};
DEC (AZStalagmiteIceMedium, 94, 5, 50, 1)
{
S_NORMAL (ICM2, 'A', -1, NULL, NULL)
};
DEC (AZStalagmiteIceSmall, 95, 4, 32, 1)
{
S_NORMAL (ICM3, 'A', -1, NULL, NULL)
};
DEC (AZStalagmiteIceTiny, 96, 4, 8, 1)
{
S_NORMAL (ICM4, 'A', -1, NULL, NULL)
};
DEC (AZRockBrown1, 97, 17, 72, 1)
{
S_NORMAL (RKBL, 'A', -1, NULL, NULL)
};
DEC (AZRockBrown2, 98, 15, 50, 1)
{
S_NORMAL (RKBS, 'A', -1, NULL, NULL)
};
DEC (AZRockBlack, 99, 20, 40, 1)
{
S_NORMAL (RKBK, 'A', -1, NULL, NULL)
};
DECNS (AZRubble1, 100, 20, 16, 1)
{
S_NORMAL (RBL1, 'A', -1, NULL, NULL)
};
DECNS (AZRubble2, 101, 20, 16, 1)
{
S_NORMAL (RBL2, 'A', -1, NULL, NULL)
};
DECNS (AZRubble3, 102, 20, 16, 1)
{
S_NORMAL (RBL3, 'A', -1, NULL, NULL)
};
DEC (AZVasePillar, 103, 12, 54, 1)
{
S_NORMAL (VASE, 'A', -1, NULL, NULL)
};
DECHANG (AZCorpseLynched, 108, 11, 95, 1)
{
S_NORMAL (CPS4, 'A', -1, NULL, NULL)
};
DECNBNG (AZCandle, 119, 20, 16, 3)
{
S_BRIGHT (CNDL, 'A', 4, NULL, &States[1]),
S_BRIGHT (CNDL, 'B', 4, NULL, &States[2]),
S_BRIGHT (CNDL, 'C', 4, NULL, &States[0])
};
DEC (AZBarrel, 8100, 15, 32, 1)
{
S_NORMAL (ZBAR, 'A', -1, NULL, NULL)
};
DECHANG (AZBucket, 8103, 8, 72, 1)
{
S_NORMAL (BCKT, 'A', -1, NULL, NULL)
};
DEC (AFireThing, 8060, 5, 10, 9)
{
S_BRIGHT (FSKL, 'A', 4, NULL, &States[1]),
S_BRIGHT (FSKL, 'B', 3, NULL, &States[2]),
S_BRIGHT (FSKL, 'C', 4, NULL, &States[3]),
S_BRIGHT (FSKL, 'D', 3, NULL, &States[4]),
S_BRIGHT (FSKL, 'E', 4, NULL, &States[5]),
S_BRIGHT (FSKL, 'F', 3, NULL, &States[6]),
S_BRIGHT (FSKL, 'G', 4, NULL, &States[7]),
S_BRIGHT (FSKL, 'H', 3, NULL, &States[8]),
S_BRIGHT (FSKL, 'I', 4, NULL, &States[0])
};
DEC (ABrassTorch, 8061, 6, 35, 13)
{
S_BRIGHT (BRTR, 'A', 4, NULL, &States[1]),
S_BRIGHT (BRTR, 'B', 4, NULL, &States[2]),
S_BRIGHT (BRTR, 'C', 4, NULL, &States[3]),
S_BRIGHT (BRTR, 'D', 4, NULL, &States[4]),
S_BRIGHT (BRTR, 'E', 4, NULL, &States[5]),
S_BRIGHT (BRTR, 'F', 4, NULL, &States[6]),
S_BRIGHT (BRTR, 'G', 4, NULL, &States[7]),
S_BRIGHT (BRTR, 'H', 4, NULL, &States[8]),
S_BRIGHT (BRTR, 'I', 4, NULL, &States[9]),
S_BRIGHT (BRTR, 'J', 4, NULL, &States[10]),
S_BRIGHT (BRTR, 'K', 4, NULL, &States[11]),
S_BRIGHT (BRTR, 'L', 4, NULL, &States[12]),
S_BRIGHT (BRTR, 'M', 4, NULL, &States[0])
};
DECNBLOCK (AZBlueCandle, 8066, 20, 16, 5)
{
S_BRIGHT (BCAN, 'A', 5, NULL, &States[1]),
S_BRIGHT (BCAN, 'B', 5, NULL, &States[2]),
S_BRIGHT (BCAN, 'C', 5, NULL, &States[3]),
S_BRIGHT (BCAN, 'D', 5, NULL, &States[4]),
S_BRIGHT (BCAN, 'E', 5, NULL, &States[0])
};
DEC (AZIronMaiden, 8067, 12, 60, 1)
{
S_NORMAL (IRON, 'A', -1, NULL, NULL)
};
DECHANGNB (AZChainBit32, 8071, 4, 32, 1)
{
S_NORMAL (CHNS, 'A', -1, NULL, NULL)
};
DECHANGNB (AZChainBit64, 8072, 4, 64, 1)
{
S_NORMAL (CHNS, 'B', -1, NULL, NULL)
};
DECHANGNB (AZChainEndHeart, 8073, 4, 32, 1)
{
S_NORMAL (CHNS, 'C', -1, NULL, NULL)
};
DECHANGNB (AZChainEndHook1, 8074, 4, 32, 1)
{
S_NORMAL (CHNS, 'D', -1, NULL, NULL)
};
DECHANGNB (AZChainEndHook2, 8075, 4, 32, 1)
{
S_NORMAL (CHNS, 'E', -1, NULL, NULL)
};
DECHANGNB (AZChainEndSpike, 8076, 4, 32, 1)
{
S_NORMAL (CHNS, 'F', -1, NULL, NULL)
};
DECHANGNB (AZChainEndSkull, 8077, 4, 32, 1)
{
S_NORMAL (CHNS, 'G', -1, NULL, NULL)
};
DECNBLOCK (ATableShit1, 8500, 20, 16, 1)
{
S_NORMAL (TST1, 'A', -1, NULL, NULL)
};
DECNBLOCK (ATableShit2, 8501, 20, 16, 1)
{
S_NORMAL (TST2, 'A', -1, NULL, NULL)
};
DECNBLOCK (ATableShit3, 8502, 20, 16, 1)
{
S_NORMAL (TST3, 'A', -1, NULL, NULL)
};
DECNBLOCK (ATableShit4, 8503, 20, 16, 1)
{
S_NORMAL (TST4, 'A', -1, NULL, NULL)
};
DECNBLOCK (ATableShit5, 8504, 20, 16, 1)
{
S_NORMAL (TST5, 'A', -1, NULL, NULL)
};
DECNBLOCK (ATableShit6, 8505, 20, 16, 1)
{
S_NORMAL (TST6, 'A', -1, NULL, NULL)
};
DECNBLOCK (ATableShit7, 8506, 20, 16, 1)
{
S_NORMAL (TST7, 'A', -1, NULL, NULL)
};
DECNBLOCK (ATableShit8, 8507, 20, 16, 1)
{
S_NORMAL (TST8, 'A', -1, NULL, NULL)
};
DECNBLOCK (ATableShit9, 8508, 20, 16, 1)
{
S_NORMAL (TST9, 'A', -1, NULL, NULL)
};
DECNBLOCK (ATableShit10, 8509, 20, 16, 1)
{
S_NORMAL (TST0, 'A', -1, NULL, NULL)
};
DECNBNGT (ATeleSmoke, 140, 20, 16, 26)
{
S_NORMAL (TSMK, 'A', 4, NULL, &States[1]),
S_NORMAL (TSMK, 'B', 3, NULL, &States[2]),
S_NORMAL (TSMK, 'C', 4, NULL, &States[3]),
S_NORMAL (TSMK, 'D', 3, NULL, &States[4]),
S_NORMAL (TSMK, 'E', 4, NULL, &States[5]),
S_NORMAL (TSMK, 'F', 3, NULL, &States[6]),
S_NORMAL (TSMK, 'G', 4, NULL, &States[7]),
S_NORMAL (TSMK, 'H', 3, NULL, &States[8]),
S_NORMAL (TSMK, 'I', 4, NULL, &States[9]),
S_NORMAL (TSMK, 'J', 3, NULL, &States[10]),
S_NORMAL (TSMK, 'K', 4, NULL, &States[11]),
S_NORMAL (TSMK, 'L', 3, NULL, &States[12]),
S_NORMAL (TSMK, 'M', 4, NULL, &States[13]),
S_NORMAL (TSMK, 'N', 3, NULL, &States[14]),
S_NORMAL (TSMK, 'O', 4, NULL, &States[15]),
S_NORMAL (TSMK, 'P', 3, NULL, &States[16]),
S_NORMAL (TSMK, 'Q', 4, NULL, &States[17]),
S_NORMAL (TSMK, 'R', 3, NULL, &States[18]),
S_NORMAL (TSMK, 'S', 4, NULL, &States[19]),
S_NORMAL (TSMK, 'T', 3, NULL, &States[20]),
S_NORMAL (TSMK, 'U', 4, NULL, &States[21]),
S_NORMAL (TSMK, 'V', 3, NULL, &States[22]),
S_NORMAL (TSMK, 'W', 4, NULL, &States[23]),
S_NORMAL (TSMK, 'X', 3, NULL, &States[24]),
S_NORMAL (TSMK, 'Y', 4, NULL, &States[25]),
S_NORMAL (TSMK, 'Z', 3, NULL, &States[0])
};

View file

@ -1,33 +0,0 @@
#include "info.h"
#include "a_pickups.h"
#include "gstrings.h"
#include "a_keys.h"
#include "tarray.h"
IMPLEMENT_STATELESS_ACTOR (AHexenKey, Hexen, -1, 0)
PROP_RadiusFixed (8)
PROP_HeightFixed (20)
PROP_Flags (MF_SPECIAL)
END_DEFAULTS
#define MAKEKEY(num,n1,name,ednum, spawn) \
class AKey##n1 : public AHexenKey { \
DECLARE_ACTOR (AKey##n1, AHexenKey) \
public: \
const char *PickupMessage () { return GStrings("TXT_KEY_" #name); } \
}; \
FState AKey##n1::States[] = { S_NORMAL (KEY##num, 'A', -1, NULL, NULL) }; \
IMPLEMENT_ACTOR (AKey##n1, Hexen, ednum, spawn) PROP_SpawnState (0) \
PROP_Inventory_Icon ("KEYSLOT" #num) END_DEFAULTS
MAKEKEY (1, Steel, STEEL, 8030, 85)
MAKEKEY (2, Cave, CAVE, 8031, 86)
MAKEKEY (3, Axe, AXE, 8032, 87)
MAKEKEY (4, Fire, FIRE, 8033, 88)
MAKEKEY (5, Emerald, EMERALD, 8034, 89)
MAKEKEY (6, Dungeon, DUNGEON, 8035, 90)
MAKEKEY (7, Silver, SILVER, 8036, 91)
MAKEKEY (8, Rusted, RUSTED, 8037, 92)
MAKEKEY (9, Horn, HORN, 8038, 93)
MAKEKEY (A, Swamp, SWAMP, 8039, 94)
MAKEKEY (B, Castle, CASTLE, 8200, 0)

View file

@ -1,40 +0,0 @@
#include "info.h"
#include "a_pickups.h"
#include "a_artifacts.h"
#include "gstrings.h"
#include "p_local.h"
// Speed Boots Artifact -----------------------------------------------------
class AArtiSpeedBoots : public APowerupGiver
{
DECLARE_ACTOR (AArtiSpeedBoots, APowerupGiver)
public:
const char *PickupMessage ();
};
FState AArtiSpeedBoots::States[] =
{
S_BRIGHT (SPED, 'A', 3, NULL , &States[1]),
S_BRIGHT (SPED, 'B', 3, NULL , &States[2]),
S_BRIGHT (SPED, 'C', 3, NULL , &States[3]),
S_BRIGHT (SPED, 'D', 3, NULL , &States[4]),
S_BRIGHT (SPED, 'E', 3, NULL , &States[5]),
S_BRIGHT (SPED, 'F', 3, NULL , &States[6]),
S_BRIGHT (SPED, 'G', 3, NULL , &States[7]),
S_BRIGHT (SPED, 'H', 3, NULL , &States[0]),
};
IMPLEMENT_ACTOR (AArtiSpeedBoots, Hexen, 8002, 13)
PROP_Flags (MF_SPECIAL)
PROP_Flags2 (MF2_FLOATBOB)
PROP_SpawnState (0)
PROP_Inventory_FlagsSet (IF_PICKUPFLASH)
PROP_Inventory_Icon ("ARTISPED")
PROP_PowerupGiver_Powerup ("PowerSpeed")
END_DEFAULTS
const char *AArtiSpeedBoots::PickupMessage ()
{
return GStrings("TXT_ARTISPEED");
}

View file

@ -610,7 +610,13 @@ DImpactDecal *DImpactDecal::StaticCreate (const FDecalTemplate *tpl, fixed_t x,
{
if (tpl->LowerDecal)
{
StaticCreate (tpl->LowerDecal->GetDecal(), x, y, z, wall);
int lowercolor = color;
const FDecalTemplate * tpl_low = tpl->LowerDecal->GetDecal();
// If the default color of the lower decal is the same as the main decal's
// apply the custom color as well.
if (tpl->ShadeColor == tpl_low->ShadeColor) lowercolor=0;
StaticCreate (tpl_low, x, y, z, wall, lowercolor);
}
DImpactDecal::CheckMax();
decal = new DImpactDecal (z);

View file

@ -15,11 +15,6 @@ protected:
virtual bool ShouldStay ();
};
class AHexenKey : public AKey
{
DECLARE_STATELESS_ACTOR (AHexenKey, AKey)
};
class AStrifeKey : public AKey
{
DECLARE_STATELESS_ACTOR (AStrifeKey, AKey)

View file

@ -37,7 +37,7 @@
#include "i_system.h"
#include "m_alloc.h"
void *Malloc (size_t size)
void *M_Malloc (size_t size)
{
void *zone = malloc (size);
@ -47,7 +47,7 @@ void *Malloc (size_t size)
return zone;
}
void *Calloc (size_t num, size_t size)
void *M_Calloc (size_t num, size_t size)
{
void *zone = calloc (num, size);
@ -57,7 +57,7 @@ void *Calloc (size_t num, size_t size)
return zone;
}
void *Realloc (void *memblock, size_t size)
void *M_Realloc (void *memblock, size_t size)
{
void *zone = realloc (memblock, size);

View file

@ -2671,7 +2671,7 @@ static void BuildModesList (int hiwidth, int hiheight, int hi_bits)
char strtemp[32], **str;
int i, c;
int width, height, showbits;
bool letterbox;
bool letterbox=false;
int ratiomatch;
if (menu_screenratios >= 0 && menu_screenratios <= 4 && menu_screenratios != 3)

View file

@ -1746,7 +1746,7 @@ void FIMGZTexture::MakeTexture ()
}
}
Spans = CreateSpans (Pixels);
if (Spans == NULL) Spans = CreateSpans (Pixels);
}
@ -1976,7 +1976,7 @@ void FPNGTexture::MakeTexture ()
delete[] oldpix;
}
}
Spans = CreateSpans (Pixels);
if (Spans == NULL) Spans = CreateSpans (Pixels);
}
@ -2220,7 +2220,8 @@ void FMultiPatchTexture::MakeTexture ()
{
// Add a little extra space at the end if the texture's height is not
// a power of 2, in case somebody accidentally makes it repeat vertically.
int numpix = Width * Height + (1 << HeightBits) - Height;
// (Jim's Valgrind dump indicates that more padding is needed here.)
int numpix = Width * Height + Height;// (1 << HeightBits) - Height;
Pixels = new BYTE[numpix];
memset (Pixels, 0, numpix);
@ -2231,7 +2232,7 @@ void FMultiPatchTexture::MakeTexture ()
Parts[i].OriginX, Parts[i].OriginY);
}
Spans = CreateSpans (Pixels);
if (Spans == NULL) Spans = CreateSpans (Pixels);
}
void FMultiPatchTexture::CheckForHacks ()

View file

@ -386,13 +386,13 @@ static int matchfile (const struct dirent *ent)
void *I_FindFirst (const char *filespec, findstate_t *fileinfo)
{
string dir;
FString dir;
char *slash = strrchr (filespec, '/');
if (slash)
{
pattern = slash+1;
dir = string(filespec, slash-filespec+1);
dir = FString(filespec, slash-filespec+1);
}
else
{

View file

@ -21,7 +21,7 @@ colorchanger ToBlack
stretcher BloodStretcher
{
StretchTime 35
GoalY 80
GoalY 2.0
}
slider BloodSlider

View file

@ -1 +1,73 @@
//
// Mesh Armor (1) -----------------------------------------------------------
ACTOR MeshArmor : HexenArmor 8005
{
Game Hexen
SpawnID 68
+NOGRAVITY
Health 0 // Armor class
Inventory.Amount 0
Inventory.PickupMessage "$TXT_ARMOR1"
States
{
Spawn:
AR_1 A -1
Stop
}
}
// Falcon Shield (2) --------------------------------------------------------
ACTOR FalconShield : HexenArmor 8006
{
Game Hexen
SpawnID 69
+NOGRAVITY
Health 1 // Armor class
Inventory.Amount 0
Inventory.PickupMessage "$TXT_ARMOR2"
States
{
Spawn:
AR_2 A -1
Stop
}
}
// Platinum Helm (3) --------------------------------------------------------
ACTOR PlatinumHelm : HexenArmor 8007
{
Game Hexen
SpawnID 70
+NOGRAVITY
Health 2 // Armor class
Inventory.Amount 0
Inventory.PickupMessage "$TXT_ARMOR3"
States
{
Spawn:
AR_3 A -1
Stop
}
}
// Amulet of Warding (4) ----------------------------------------------------
ACTOR AmuletOfWarding : HexenArmor 8008
{
Game Hexen
SpawnID 71
+NOGRAVITY
Health 3 // Armor class
Inventory.Amount 0
Inventory.PickupMessage "$TXT_ARMOR4"
States
{
Spawn:
AR_4 A -1
Stop
}
}

File diff suppressed because it is too large Load diff

View file

@ -1 +1,160 @@
//
ACTOR HexenKey : Key
{
Radius 8
Height 20
}
ACTOR KeySteel : HexenKey 8030
{
Game Hexen
SpawnID 85
Inventory.Icon KEYSLOT1
Inventory.PickupMessage "$TXT_KEY_STEEL"
States
{
Spawn:
KEY1 A -1
Stop
}
}
ACTOR KeyCave : HexenKey 8031
{
Game Hexen
SpawnID 86
Inventory.Icon KEYSLOT2
Inventory.PickupMessage "$TXT_KEY_CAVE"
States
{
Spawn:
KEY2 A -1
Stop
}
}
ACTOR KeyAxe : HexenKey 8032
{
Game Hexen
SpawnID 87
Inventory.Icon KEYSLOT3
Inventory.PickupMessage "$TXT_KEY_AXE"
States
{
Spawn:
KEY3 A -1
Stop
}
}
ACTOR KeyFire : HexenKey 8033
{
Game Hexen
SpawnID 88
Inventory.Icon KEYSLOT4
Inventory.PickupMessage "$TXT_KEY_FIRE"
States
{
Spawn:
KEY4 A -1
Stop
}
}
ACTOR KeyEmerald : HexenKey 8034
{
Game Hexen
SpawnID 89
Inventory.Icon KEYSLOT5
Inventory.PickupMessage "$TXT_KEY_EMERALD"
States
{
Spawn:
KEY5 A -1
Stop
}
}
ACTOR KeyDungeon : HexenKey 8035
{
Game Hexen
SpawnID 90
Inventory.Icon KEYSLOT6
Inventory.PickupMessage "$TXT_KEY_DUNGEON"
States
{
Spawn:
KEY6 A -1
Stop
}
}
ACTOR KeySilver : HexenKey 8036
{
Game Hexen
SpawnID 91
Inventory.Icon KEYSLOT7
Inventory.PickupMessage "$TXT_KEY_SILVER"
States
{
Spawn:
KEY7 A -1
Stop
}
}
ACTOR KeyRusted : HexenKey 8037
{
Game Hexen
SpawnID 92
Inventory.Icon KEYSLOT8
Inventory.PickupMessage "$TXT_KEY_RUSTED"
States
{
Spawn:
KEY8 A -1
Stop
}
}
ACTOR KeyHorn : HexenKey 8038
{
Game Hexen
SpawnID 93
Inventory.Icon KEYSLOT9
Inventory.PickupMessage "$TXT_KEY_HORN"
States
{
Spawn:
KEY9 A -1
Stop
}
}
ACTOR KeySwamp : HexenKey 8039
{
Game Hexen
SpawnID 94
Inventory.Icon KEYSLOTA
Inventory.PickupMessage "$TXT_KEY_SWAMP"
States
{
Spawn:
KEYA A -1
Stop
}
}
ACTOR KeyCastle : HexenKey 8200
{
Game Hexen
Inventory.Icon KEYSLOTB
Inventory.PickupMessage "$TXT_KEY_CASTLE"
States
{
Spawn:
KEYB A -1
Stop
}
}

View file

@ -1 +1,18 @@
//
ACTOR ArtiSpeedBoots : PowerupGiver 8002
{
Game Hexen
SpawnID 13
+FLOATBOB
+INVENTORY.PICKUPFLASH
Inventory.Icon ARTISPED
Inventory.PickupMessage "$TXT_ARTISPEED"
Powerup.Type Speed
States
{
Spawn:
SPED ABCDEFGH 3 Bright
Loop
}
}

View file

@ -3744,54 +3744,9 @@
AdditionalOptions="&quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; "/>
</FileConfiguration>
</File>
<File
RelativePath=".\src\g_hexen\a_hexenarmor.cpp">
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="&quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; "/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="&quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; "/>
</FileConfiguration>
</File>
<File
RelativePath=".\src\g_hexen\a_hexendecorations.cpp">
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="&quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; "/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="&quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; "/>
</FileConfiguration>
</File>
<File
RelativePath=".\src\g_hexen\a_hexenglobal.h">
</File>
<File
RelativePath=".\src\g_hexen\a_hexenkeys.cpp">
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="&quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; "/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="&quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; "/>
</FileConfiguration>
</File>
<File
RelativePath=".\src\g_hexen\a_hexenspecialdecs.cpp">
<FileConfiguration
@ -3978,21 +3933,6 @@
AdditionalOptions="&quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; "/>
</FileConfiguration>
</File>
<File
RelativePath=".\src\g_hexen\a_speedboots.cpp">
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="&quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; "/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="&quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; &quot; /I /fmod/api/inc&quot; "/>
</FileConfiguration>
</File>
<File
RelativePath=".\src\g_hexen\a_spike.cpp">
<FileConfiguration