mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-02-16 17:21:10 +00:00
SVN r71 (trunk)
This commit is contained in:
parent
eff7c898cf
commit
29cd024aba
31 changed files with 1718 additions and 1105 deletions
|
@ -1,3 +1,32 @@
|
||||||
|
April 30, 2006 (Changes by Graf Zahl)
|
||||||
|
- Removed the DCorpseQueue class. It was no longer used and since
|
||||||
|
the savegames it might have been used in have become incompatible
|
||||||
|
a long time ago there is no reason to keep it around anymore.
|
||||||
|
- Fixed: level.maptime must be set to 0 every time a level is loaded.
|
||||||
|
- Converted a_doomarmor.cpp and a_doomkeys.cpp to DECORATE.
|
||||||
|
- Replaced all need key messages that weren't already in LANGUAGE with
|
||||||
|
a LANGUAGE identifier. Also made the messages for Hexen's keys unique
|
||||||
|
strings instead of constructing them at run time.
|
||||||
|
- Added: Pickup messages can now handle embedded localized strings - like
|
||||||
|
the need key messages
|
||||||
|
- Converted a_hereticdecorations.cpp as well.
|
||||||
|
- Time to put the capabilities of Zip files to good use:
|
||||||
|
Converted a_doomdecorations.cpp into a DECORATE lump to test my changes.
|
||||||
|
(The EXE got 24 kb shorter by that - much more than I expected...)
|
||||||
|
- Added a 'game' property to DECORATE so that game specific IDs can be
|
||||||
|
defined.
|
||||||
|
- Added an #include directive to the DECORATE parser.
|
||||||
|
- Also removed ABreakableDecoration. Using AActor and the metadata
|
||||||
|
for the death and burn height gives the same results with less code.
|
||||||
|
- Removed the ADecoration class. It just inherited from AActor without
|
||||||
|
adding any functionality of its own.
|
||||||
|
- Added functions to sc_man to save and restore the full script state.
|
||||||
|
This allows recursive use of the script parser.
|
||||||
|
- Changed SC_Open to check for full names in a ZIP first.
|
||||||
|
- Fixed: Ammo2 no longer gets displayed when it is identical to Ammo1.
|
||||||
|
- Re-enabled the death camera due to public demand but made it switchable
|
||||||
|
by a CVAR.
|
||||||
|
|
||||||
April 29, 2006 (Changes by Graf Zahl)
|
April 29, 2006 (Changes by Graf Zahl)
|
||||||
- ZDoom now loads zdoom.pk3 instead of zdoom.wad.
|
- ZDoom now loads zdoom.pk3 instead of zdoom.wad.
|
||||||
- Fixed: StreamSong::SetVolume should check the m_stream pointer. This can
|
- Fixed: StreamSong::SetVolume should check the m_stream pointer. This can
|
||||||
|
|
|
@ -77,44 +77,9 @@ struct FExtraInfo
|
||||||
bool ExplosionShooterImmune;
|
bool ExplosionShooterImmune;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ADecoration : public AActor
|
class ASimpleProjectile : public AActor
|
||||||
{
|
{
|
||||||
DECLARE_STATELESS_ACTOR (ADecoration, AActor);
|
DECLARE_STATELESS_ACTOR (ASimpleProjectile, AActor);
|
||||||
};
|
|
||||||
IMPLEMENT_ABSTRACT_ACTOR (ADecoration)
|
|
||||||
|
|
||||||
class ABreakableDecoration : public ADecoration
|
|
||||||
{
|
|
||||||
DECLARE_STATELESS_ACTOR (ABreakableDecoration, ADecoration);
|
|
||||||
public:
|
|
||||||
void Serialize (FArchive &arc)
|
|
||||||
{
|
|
||||||
Super::Serialize (arc);
|
|
||||||
arc << DeathHeight << BurnHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Die (AActor *source, AActor *inflictor)
|
|
||||||
{
|
|
||||||
Super::Die (source, inflictor);
|
|
||||||
flags &= ~MF_CORPSE; // Don't be a corpse
|
|
||||||
if (DamageType == MOD_FIRE)
|
|
||||||
{
|
|
||||||
height = BurnHeight; // Use burn height
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
height = DeathHeight; // Use death height
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
fixed_t DeathHeight;
|
|
||||||
fixed_t BurnHeight;
|
|
||||||
};
|
|
||||||
IMPLEMENT_ABSTRACT_ACTOR (ABreakableDecoration)
|
|
||||||
|
|
||||||
class ASimpleProjectile : public ADecoration
|
|
||||||
{
|
|
||||||
DECLARE_STATELESS_ACTOR (ASimpleProjectile, ADecoration);
|
|
||||||
public:
|
public:
|
||||||
void Serialize (FArchive &arc)
|
void Serialize (FArchive &arc)
|
||||||
{
|
{
|
||||||
|
@ -363,10 +328,32 @@ static void ParseDecorate (void (*process)(FState *, int))
|
||||||
EDefinitionType def;
|
EDefinitionType def;
|
||||||
FActorInfo *info;
|
FActorInfo *info;
|
||||||
char *typeName;
|
char *typeName;
|
||||||
|
int recursion=0;
|
||||||
|
|
||||||
// Get actor class name. The A prefix is added automatically.
|
// Get actor class name. The A prefix is added automatically.
|
||||||
while (SC_GetString ())
|
while (true)
|
||||||
{
|
{
|
||||||
|
if (!SC_GetString ())
|
||||||
|
{
|
||||||
|
if (recursion==0) return;
|
||||||
|
SC_RestoreScriptState();
|
||||||
|
recursion--;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (SC_Compare ("#include"))
|
||||||
|
{
|
||||||
|
int lump;
|
||||||
|
|
||||||
|
SC_MustGetString();
|
||||||
|
// This is not using SC_Open because it can print a more useful error message when done here
|
||||||
|
lump = Wads.CheckNumForFullName(sc_String);
|
||||||
|
if (lump==-1) lump = Wads.CheckNumForName(sc_String);
|
||||||
|
if (lump==-1) SC_ScriptError("Lump '%s' not found", sc_String);
|
||||||
|
SC_SaveScriptState();
|
||||||
|
SC_OpenLumpNum(lump, sc_String);
|
||||||
|
recursion++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (SC_Compare ("Actor"))
|
if (SC_Compare ("Actor"))
|
||||||
{
|
{
|
||||||
ProcessActor (process);
|
ProcessActor (process);
|
||||||
|
@ -380,7 +367,7 @@ static void ParseDecorate (void (*process)(FState *, int))
|
||||||
}
|
}
|
||||||
else if (SC_Compare ("Breakable"))
|
else if (SC_Compare ("Breakable"))
|
||||||
{
|
{
|
||||||
parent = RUNTIME_CLASS(ABreakableDecoration);
|
parent = RUNTIME_CLASS(AActor);
|
||||||
def = DEF_BreakableDecoration;
|
def = DEF_BreakableDecoration;
|
||||||
SC_MustGetString ();
|
SC_MustGetString ();
|
||||||
}
|
}
|
||||||
|
@ -392,7 +379,7 @@ static void ParseDecorate (void (*process)(FState *, int))
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
parent = RUNTIME_CLASS(ADecoration);
|
parent = RUNTIME_CLASS(AActor);
|
||||||
def = DEF_Decoration;
|
def = DEF_Decoration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -424,6 +411,10 @@ static void ParseDecorate (void (*process)(FState *, int))
|
||||||
{
|
{
|
||||||
info->GameFilter |= GAME_Raven;
|
info->GameFilter |= GAME_Raven;
|
||||||
}
|
}
|
||||||
|
else if (SC_Compare ("Strife"))
|
||||||
|
{
|
||||||
|
info->GameFilter |= GAME_Strife;
|
||||||
|
}
|
||||||
else if (SC_Compare ("Any"))
|
else if (SC_Compare ("Any"))
|
||||||
{
|
{
|
||||||
info->GameFilter = GAME_Any;
|
info->GameFilter = GAME_Any;
|
||||||
|
@ -534,15 +525,8 @@ static void ParseDecorate (void (*process)(FState *, int))
|
||||||
info->OwnedStates[extra.DeathStart].Action = A_ScreamAndUnblock;
|
info->OwnedStates[extra.DeathStart].Action = A_ScreamAndUnblock;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extra.DeathHeight == 0)
|
if (extra.DeathHeight == 0) extra.DeathHeight = ((AActor*)(info->Defaults))->height;
|
||||||
{
|
info->Class->Meta.SetMetaFixed (AMETA_DeathHeight, extra.DeathHeight);
|
||||||
((ABreakableDecoration *)(info->Defaults))->DeathHeight =
|
|
||||||
((ABreakableDecoration *)(info->Defaults))->height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
((ABreakableDecoration *)(info->Defaults))->DeathHeight = extra.DeathHeight;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
((AActor *)(info->Defaults))->DeathState = &info->OwnedStates[extra.DeathStart];
|
((AActor *)(info->Defaults))->DeathState = &info->OwnedStates[extra.DeathStart];
|
||||||
}
|
}
|
||||||
|
@ -580,15 +564,9 @@ static void ParseDecorate (void (*process)(FState *, int))
|
||||||
info->OwnedStates[extra.FireDeathStart].Action = A_ActiveAndUnblock;
|
info->OwnedStates[extra.FireDeathStart].Action = A_ActiveAndUnblock;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extra.BurnHeight == 0)
|
if (extra.BurnHeight == 0) extra.BurnHeight = ((AActor*)(info->Defaults))->height;
|
||||||
{
|
info->Class->Meta.SetMetaFixed (AMETA_BurnHeight, extra.BurnHeight);
|
||||||
((ABreakableDecoration *)(info->Defaults))->BurnHeight =
|
|
||||||
((ABreakableDecoration *)(info->Defaults))->height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
((ABreakableDecoration *)(info->Defaults))->BurnHeight = extra.BurnHeight;
|
|
||||||
}
|
|
||||||
((AActor *)(info->Defaults))->BDeathState = &info->OwnedStates[extra.FireDeathStart];
|
((AActor *)(info->Defaults))->BDeathState = &info->OwnedStates[extra.FireDeathStart];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,102 +0,0 @@
|
||||||
#include "info.h"
|
|
||||||
#include "a_pickups.h"
|
|
||||||
#include "d_player.h"
|
|
||||||
#include "p_local.h"
|
|
||||||
#include "gstrings.h"
|
|
||||||
#include "gi.h"
|
|
||||||
|
|
||||||
// Armor bonus --------------------------------------------------------------
|
|
||||||
|
|
||||||
class AArmorBonus : public ABasicArmorBonus
|
|
||||||
{
|
|
||||||
DECLARE_ACTOR (AArmorBonus, ABasicArmorBonus)
|
|
||||||
protected:
|
|
||||||
virtual const char *PickupMessage ()
|
|
||||||
{
|
|
||||||
return GStrings("GOTARMBONUS");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
FState AArmorBonus::States[] =
|
|
||||||
{
|
|
||||||
S_NORMAL (BON2, 'A', 6, NULL , &States[1]),
|
|
||||||
S_NORMAL (BON2, 'B', 6, NULL , &States[2]),
|
|
||||||
S_NORMAL (BON2, 'C', 6, NULL , &States[3]),
|
|
||||||
S_NORMAL (BON2, 'D', 6, NULL , &States[4]),
|
|
||||||
S_NORMAL (BON2, 'C', 6, NULL , &States[5]),
|
|
||||||
S_NORMAL (BON2, 'B', 6, NULL , &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_ACTOR (AArmorBonus, Doom, 2015, 22)
|
|
||||||
PROP_RadiusFixed (20)
|
|
||||||
PROP_HeightFixed (16)
|
|
||||||
PROP_Flags (MF_SPECIAL|MF_COUNTITEM)
|
|
||||||
|
|
||||||
PROP_BasicArmorBonus_SavePercent (FRACUNIT/3)
|
|
||||||
PROP_BasicArmorBonus_SaveAmount (1)
|
|
||||||
PROP_BasicArmorBonus_MaxSaveAmount (200) // deh.MaxArmor
|
|
||||||
PROP_Inventory_FlagsSet (IF_ALWAYSPICKUP)
|
|
||||||
|
|
||||||
PROP_SpawnState (0)
|
|
||||||
PROP_Inventory_Icon ("ARM1A0")
|
|
||||||
END_DEFAULTS
|
|
||||||
|
|
||||||
// Green armor --------------------------------------------------------------
|
|
||||||
|
|
||||||
class AGreenArmor : public ABasicArmorPickup
|
|
||||||
{
|
|
||||||
DECLARE_ACTOR (AGreenArmor, ABasicArmorPickup)
|
|
||||||
protected:
|
|
||||||
virtual const char *PickupMessage ()
|
|
||||||
{
|
|
||||||
return GStrings("GOTARMOR");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
FState AGreenArmor::States[] =
|
|
||||||
{
|
|
||||||
S_NORMAL (ARM1, 'A', 6, NULL , &States[1]),
|
|
||||||
S_BRIGHT (ARM1, 'B', 7, NULL , &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_ACTOR (AGreenArmor, Doom, 2018, 68)
|
|
||||||
PROP_RadiusFixed (20)
|
|
||||||
PROP_HeightFixed (16)
|
|
||||||
PROP_Flags (MF_SPECIAL)
|
|
||||||
|
|
||||||
PROP_BasicArmorPickup_SavePercent (FRACUNIT/3)
|
|
||||||
PROP_BasicArmorPickup_SaveAmount (100) // 100*deh.GreenAC
|
|
||||||
|
|
||||||
PROP_SpawnState (0)
|
|
||||||
PROP_Inventory_Icon ("ARM1A0")
|
|
||||||
END_DEFAULTS
|
|
||||||
|
|
||||||
// Blue armor ---------------------------------------------------------------
|
|
||||||
|
|
||||||
class ABlueArmor : public ABasicArmorPickup
|
|
||||||
{
|
|
||||||
DECLARE_ACTOR (ABlueArmor, ABasicArmorPickup)
|
|
||||||
protected:
|
|
||||||
virtual const char *PickupMessage ()
|
|
||||||
{
|
|
||||||
return GStrings("GOTMEGA");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
FState ABlueArmor::States[] =
|
|
||||||
{
|
|
||||||
S_NORMAL (ARM2, 'A', 6, NULL , &States[1]),
|
|
||||||
S_BRIGHT (ARM2, 'B', 6, NULL , &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_ACTOR (ABlueArmor, Doom, 2019, 69)
|
|
||||||
PROP_RadiusFixed (20)
|
|
||||||
PROP_HeightFixed (16)
|
|
||||||
PROP_Flags (MF_SPECIAL)
|
|
||||||
|
|
||||||
PROP_BasicArmorPickup_SavePercent (FRACUNIT/2)
|
|
||||||
PROP_BasicArmorPickup_SaveAmount (200) // 100*deh.BlueAC
|
|
||||||
|
|
||||||
PROP_SpawnState (0)
|
|
||||||
PROP_Inventory_Icon ("ARM2A0")
|
|
||||||
END_DEFAULTS
|
|
|
@ -1,403 +0,0 @@
|
||||||
#include "actor.h"
|
|
||||||
#include "info.h"
|
|
||||||
|
|
||||||
/********** Decorations ***********/
|
|
||||||
|
|
||||||
#define _DECCOMMON(cls,ednum,rad,hi,ns,id) \
|
|
||||||
class cls : public AActor { DECLARE_STATELESS_ACTOR (cls, AActor) static FState States[ns]; }; \
|
|
||||||
IMPLEMENT_ACTOR (cls, Doom, ednum, id) \
|
|
||||||
PROP_SpawnState(0) \
|
|
||||||
PROP_RadiusFixed(rad) \
|
|
||||||
PROP_HeightFixed(hi)
|
|
||||||
|
|
||||||
#define _DECSTARTSTATES(cls,ns) \
|
|
||||||
FState cls::States[ns] =
|
|
||||||
|
|
||||||
#define DECID(cls,ednum,id,rad,hi,ns) \
|
|
||||||
_DECCOMMON(cls,ednum,rad,hi,ns,id) \
|
|
||||||
PROP_Flags (MF_SOLID) \
|
|
||||||
END_DEFAULTS \
|
|
||||||
_DECSTARTSTATES(cls,ns)
|
|
||||||
|
|
||||||
#define DEC(cls,ednum,rad,hi,ns) \
|
|
||||||
DECID(cls,ednum,0,rad,hi,ns)
|
|
||||||
|
|
||||||
#define DECNSOLID(cls,ednum,rad,hi,ns) \
|
|
||||||
_DECCOMMON(cls,ednum,rad,hi,ns,0) \
|
|
||||||
END_DEFAULTS \
|
|
||||||
_DECSTARTSTATES(cls,ns)
|
|
||||||
|
|
||||||
#define DECHANG(cls,ednum,rad,hi,ns) \
|
|
||||||
_DECCOMMON(cls,ednum,rad,hi,ns,0) \
|
|
||||||
PROP_Flags (MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY) \
|
|
||||||
END_DEFAULTS \
|
|
||||||
_DECSTARTSTATES(cls,ns)
|
|
||||||
|
|
||||||
#define DECHANGNS(cls,ednum,rad,hi,ns) \
|
|
||||||
_DECCOMMON(cls,ednum,rad,hi,ns,0) \
|
|
||||||
PROP_Flags (MF_SPAWNCEILING|MF_NOGRAVITY) \
|
|
||||||
END_DEFAULTS \
|
|
||||||
_DECSTARTSTATES(cls,ns)
|
|
||||||
|
|
||||||
#define DECNBLOCKID(cls,ednum,id,rad,hi,ns) \
|
|
||||||
_DECCOMMON(cls,ednum,rad,hi,ns,id) \
|
|
||||||
/*PROP_Flags (MF_NOBLOCKMAP)*/ \
|
|
||||||
END_DEFAULTS \
|
|
||||||
_DECSTARTSTATES(cls,ns)
|
|
||||||
|
|
||||||
#define SUBCLASS_NS(cls,super,ednum,rad,hi) \
|
|
||||||
class cls : public super { DECLARE_STATELESS_ACTOR (cls, super) }; \
|
|
||||||
IMPLEMENT_STATELESS_ACTOR (cls, Doom, ednum, 0) \
|
|
||||||
PROP_RadiusFixed (rad) \
|
|
||||||
PROP_HeightFixed (hi) \
|
|
||||||
PROP_FlagsClear (MF_SOLID) \
|
|
||||||
END_DEFAULTS
|
|
||||||
|
|
||||||
// Tech lamp ---------------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (ATechLamp, 85, 16, 80, 4)
|
|
||||||
{
|
|
||||||
S_BRIGHT (TLMP, 'A', 4, NULL, &States[1]),
|
|
||||||
S_BRIGHT (TLMP, 'B', 4, NULL, &States[2]),
|
|
||||||
S_BRIGHT (TLMP, 'C', 4, NULL, &States[3]),
|
|
||||||
S_BRIGHT (TLMP, 'D', 4, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
// Tech lamp 2 -------------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (ATechLamp2, 86, 16, 60, 4)
|
|
||||||
{
|
|
||||||
S_BRIGHT (TLP2, 'A', 4, NULL, &States[1]),
|
|
||||||
S_BRIGHT (TLP2, 'B', 4, NULL, &States[2]),
|
|
||||||
S_BRIGHT (TLP2, 'C', 4, NULL, &States[3]),
|
|
||||||
S_BRIGHT (TLP2, 'D', 4, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
// Column ------------------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (AColumn, 2028, 16, 48, 1)
|
|
||||||
{
|
|
||||||
S_BRIGHT (COLU, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Tall green column -------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (ATallGreenColumn, 30, 16, 52, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (COL1, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Short green column ------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (AShortGreenColumn, 31, 16, 40, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (COL2, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Tall red column ---------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (ATallRedColumn, 32, 16, 52, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (COL3, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Short red column --------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (AShortRedColumn, 33, 16, 40, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (COL4, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Skull column ------------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (ASkullColumn, 37, 16, 40, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (COL6, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Heart column ------------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (AHeartColumn, 36, 16, 40, 2)
|
|
||||||
{
|
|
||||||
S_NORMAL (COL5, 'A', 14, NULL, &States[1]),
|
|
||||||
S_NORMAL (COL5, 'B', 14, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
// Evil eye ----------------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (AEvilEye, 41, 16, 54, 4)
|
|
||||||
{
|
|
||||||
S_BRIGHT (CEYE, 'A', 6, NULL, &States[1]),
|
|
||||||
S_BRIGHT (CEYE, 'B', 6, NULL, &States[2]),
|
|
||||||
S_BRIGHT (CEYE, 'C', 6, NULL, &States[3]),
|
|
||||||
S_BRIGHT (CEYE, 'B', 6, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
// Floating skull ----------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (AFloatingSkull, 42, 16, 26, 3)
|
|
||||||
{
|
|
||||||
S_BRIGHT (FSKU, 'A', 6, NULL, &States[1]),
|
|
||||||
S_BRIGHT (FSKU, 'B', 6, NULL, &States[2]),
|
|
||||||
S_BRIGHT (FSKU, 'C', 6, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
// Torch tree --------------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (ATorchTree, 43, 16, 56, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (TRE1, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Blue torch --------------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (ABlueTorch, 44, 16, 68, 4)
|
|
||||||
{
|
|
||||||
S_BRIGHT (TBLU, 'A', 4, NULL, &States[1]),
|
|
||||||
S_BRIGHT (TBLU, 'B', 4, NULL, &States[2]),
|
|
||||||
S_BRIGHT (TBLU, 'C', 4, NULL, &States[3]),
|
|
||||||
S_BRIGHT (TBLU, 'D', 4, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
// Green torch -------------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (AGreenTorch, 45, 16, 68, 4)
|
|
||||||
{
|
|
||||||
S_BRIGHT (TGRN, 'A', 4, NULL, &States[1]),
|
|
||||||
S_BRIGHT (TGRN, 'B', 4, NULL, &States[2]),
|
|
||||||
S_BRIGHT (TGRN, 'C', 4, NULL, &States[3]),
|
|
||||||
S_BRIGHT (TGRN, 'D', 4, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
// Red torch ---------------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (ARedTorch, 46, 16, 68, 4)
|
|
||||||
{
|
|
||||||
S_BRIGHT (TRED, 'A', 4, NULL, &States[1]),
|
|
||||||
S_BRIGHT (TRED, 'B', 4, NULL, &States[2]),
|
|
||||||
S_BRIGHT (TRED, 'C', 4, NULL, &States[3]),
|
|
||||||
S_BRIGHT (TRED, 'D', 4, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
// Short blue torch --------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (AShortBlueTorch, 55, 16, 37, 4)
|
|
||||||
{
|
|
||||||
S_BRIGHT (SMBT, 'A', 4, NULL, &States[1]),
|
|
||||||
S_BRIGHT (SMBT, 'B', 4, NULL, &States[2]),
|
|
||||||
S_BRIGHT (SMBT, 'C', 4, NULL, &States[3]),
|
|
||||||
S_BRIGHT (SMBT, 'D', 4, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
// Short green torch -------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (AShortGreenTorch, 56, 16, 37, 4)
|
|
||||||
{
|
|
||||||
S_BRIGHT (SMGT, 'A', 4, NULL, &States[1]),
|
|
||||||
S_BRIGHT (SMGT, 'B', 4, NULL, &States[2]),
|
|
||||||
S_BRIGHT (SMGT, 'C', 4, NULL, &States[3]),
|
|
||||||
S_BRIGHT (SMGT, 'D', 4, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
// Short red torch ---------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (AShortRedTorch, 57, 16, 37, 4)
|
|
||||||
{
|
|
||||||
S_BRIGHT (SMRT, 'A', 4, NULL, &States[1]),
|
|
||||||
S_BRIGHT (SMRT, 'B', 4, NULL, &States[2]),
|
|
||||||
S_BRIGHT (SMRT, 'C', 4, NULL, &States[3]),
|
|
||||||
S_BRIGHT (SMRT, 'D', 4, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
// Stalagtite --------------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (AStalagtite, 47, 16, 40, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (SMIT, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Tech pillar -------------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (ATechPillar, 48, 16, 128, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (ELEC, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Candle stick ------------------------------------------------------------
|
|
||||||
|
|
||||||
DECNSOLID (ACandlestick, 34, 20, 14, 1)
|
|
||||||
{
|
|
||||||
S_BRIGHT (CAND, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Candelabra --------------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (ACandelabra, 35, 16, 60, 1)
|
|
||||||
{
|
|
||||||
S_BRIGHT (CBRA, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Bloody twitch -----------------------------------------------------------
|
|
||||||
|
|
||||||
DECHANG (ABloodyTwitch, 49, 16, 68, 4)
|
|
||||||
{
|
|
||||||
S_NORMAL (GOR1, 'A', 10, NULL, &States[1]),
|
|
||||||
S_NORMAL (GOR1, 'B', 15, NULL, &States[2]),
|
|
||||||
S_NORMAL (GOR1, 'C', 8, NULL, &States[3]),
|
|
||||||
S_NORMAL (GOR1, 'B', 6, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
// Meat 2 ------------------------------------------------------------------
|
|
||||||
|
|
||||||
DECHANG (AMeat2, 50, 16, 84, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (GOR2, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Meat 3 ------------------------------------------------------------------
|
|
||||||
|
|
||||||
DECHANG (AMeat3, 51, 16, 84, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (GOR3, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Meat 4 ------------------------------------------------------------------
|
|
||||||
|
|
||||||
DECHANG (AMeat4, 52, 16, 68, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (GOR4, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Meat 5 ------------------------------------------------------------------
|
|
||||||
|
|
||||||
DECHANG (AMeat5, 53, 16, 52, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (GOR5, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Nonsolid meat -----------------------------------------------------------
|
|
||||||
|
|
||||||
SUBCLASS_NS (ANonsolidMeat2, AMeat2, 59, 20, 84)
|
|
||||||
SUBCLASS_NS (ANonsolidMeat3, AMeat3, 61, 20, 52)
|
|
||||||
SUBCLASS_NS (ANonsolidMeat4, AMeat4, 60, 20, 68)
|
|
||||||
SUBCLASS_NS (ANonsolidMeat5, AMeat5, 62, 20, 52)
|
|
||||||
|
|
||||||
// Nonsolid bloody twitch --------------------------------------------------
|
|
||||||
|
|
||||||
SUBCLASS_NS (ANonsolidTwitch, ABloodyTwitch, 63, 20, 68)
|
|
||||||
|
|
||||||
// Head on a stick ---------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (AHeadOnAStick, 27, 16, 56, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (POL4, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Heads (plural!) on a stick ----------------------------------------------
|
|
||||||
|
|
||||||
DEC (AHeadsOnAStick, 28, 16, 64, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (POL2, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Head candles ------------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (AHeadCandles, 29, 16, 42, 2)
|
|
||||||
{
|
|
||||||
S_BRIGHT (POL3, 'A', 6, NULL, &States[1]),
|
|
||||||
S_BRIGHT (POL3, 'B', 6, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
// Dead on a stick ---------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (ADeadStick, 25, 16, 64, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (POL1, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Still alive on a stick --------------------------------------------------
|
|
||||||
|
|
||||||
DEC (ALiveStick, 26, 16, 64, 2)
|
|
||||||
{
|
|
||||||
S_NORMAL (POL6, 'A', 6, NULL, &States[1]),
|
|
||||||
S_NORMAL (POL6, 'B', 8, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
// Big tree ----------------------------------------------------------------
|
|
||||||
|
|
||||||
DEC (ABigTree, 54, 32, 108, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (TRE2, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Burning barrel ----------------------------------------------------------
|
|
||||||
|
|
||||||
DECID (ABurningBarrel, 70, 149, 16, 32, 3)
|
|
||||||
{
|
|
||||||
S_BRIGHT (FCAN, 'A', 4, NULL, &States[1]),
|
|
||||||
S_BRIGHT (FCAN, 'B', 4, NULL, &States[2]),
|
|
||||||
S_BRIGHT (FCAN, 'C', 4, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
// Hanging with no guts ----------------------------------------------------
|
|
||||||
|
|
||||||
DECHANG (AHangNoGuts, 73, 16, 88, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (HDB1, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Hanging from bottom with no brain ---------------------------------------
|
|
||||||
|
|
||||||
DECHANG (AHangBNoBrain, 74, 16, 88, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (HDB2, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Hanging from top, looking down ------------------------------------------
|
|
||||||
|
|
||||||
DECHANG (AHangTLookingDown, 75, 16, 64, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (HDB3, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Hanging from top, looking up --------------------------------------------
|
|
||||||
|
|
||||||
DECHANG (AHangTLookingUp, 77, 16, 64, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (HDB5, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Hanging from top, skully ------------------------------------------------
|
|
||||||
|
|
||||||
DECHANG (AHangTSkull, 76, 16, 64, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (HDB4, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Hanging from top without a brain ----------------------------------------
|
|
||||||
|
|
||||||
DECHANG (AHangTNoBrain, 78, 16, 64, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (HDB6, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Colon gibs --------------------------------------------------------------
|
|
||||||
|
|
||||||
DECNBLOCKID (AColonGibs, 79, 147, 20, 4, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (POB1, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Small pool o' blood -----------------------------------------------------
|
|
||||||
|
|
||||||
DECNBLOCKID (ASmallBloodPool, 80, 148, 20, 1, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (POB2, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
// brain stem lying on the ground ------------------------------------------
|
|
||||||
|
|
||||||
DECNBLOCKID (ABrainStem, 81, 150, 20, 4, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (BRS1, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
|
@ -1,164 +0,0 @@
|
||||||
#include "info.h"
|
|
||||||
#include "a_pickups.h"
|
|
||||||
#include "d_player.h"
|
|
||||||
#include "gstrings.h"
|
|
||||||
#include "p_local.h"
|
|
||||||
#include "a_keys.h"
|
|
||||||
#include "gstrings.h"
|
|
||||||
|
|
||||||
IMPLEMENT_STATELESS_ACTOR (ADoomKey, Doom, -1, 0)
|
|
||||||
PROP_RadiusFixed (20)
|
|
||||||
PROP_HeightFixed (16)
|
|
||||||
PROP_Flags (MF_SPECIAL|MF_NOTDMATCH)
|
|
||||||
END_DEFAULTS
|
|
||||||
|
|
||||||
// Blue key card ------------------------------------------------------------
|
|
||||||
|
|
||||||
class ABlueCard : public ADoomKey
|
|
||||||
{
|
|
||||||
DECLARE_ACTOR (ABlueCard, ADoomKey)
|
|
||||||
public:
|
|
||||||
const char *PickupMessage ();
|
|
||||||
};
|
|
||||||
|
|
||||||
FState ABlueCard::States[] =
|
|
||||||
{
|
|
||||||
S_NORMAL (BKEY, 'A', 10, NULL , &States[1]),
|
|
||||||
S_BRIGHT (BKEY, 'B', 10, NULL , &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_ACTOR (ABlueCard, Doom, 5, 85)
|
|
||||||
PROP_SpawnState (0)
|
|
||||||
PROP_Inventory_Icon ("STKEYS0")
|
|
||||||
END_DEFAULTS
|
|
||||||
|
|
||||||
const char *ABlueCard::PickupMessage ()
|
|
||||||
{
|
|
||||||
return GStrings("GOTBLUECARD");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Yellow key card ----------------------------------------------------------
|
|
||||||
|
|
||||||
class AYellowCard : public ADoomKey
|
|
||||||
{
|
|
||||||
DECLARE_ACTOR (AYellowCard, ADoomKey)
|
|
||||||
public:
|
|
||||||
const char *PickupMessage ();
|
|
||||||
};
|
|
||||||
|
|
||||||
FState AYellowCard::States[] =
|
|
||||||
{
|
|
||||||
S_NORMAL (YKEY, 'A', 10, NULL , &States[1]),
|
|
||||||
S_BRIGHT (YKEY, 'B', 10, NULL , &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_ACTOR (AYellowCard, Doom, 6, 87)
|
|
||||||
PROP_SpawnState (0)
|
|
||||||
PROP_Inventory_Icon ("STKEYS1")
|
|
||||||
END_DEFAULTS
|
|
||||||
|
|
||||||
const char *AYellowCard::PickupMessage ()
|
|
||||||
{
|
|
||||||
return GStrings("GOTYELWCARD");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Red key card -------------------------------------------------------------
|
|
||||||
|
|
||||||
class ARedCard : public ADoomKey
|
|
||||||
{
|
|
||||||
DECLARE_ACTOR (ARedCard, ADoomKey)
|
|
||||||
public:
|
|
||||||
const char *PickupMessage ();
|
|
||||||
};
|
|
||||||
|
|
||||||
FState ARedCard::States[] =
|
|
||||||
{
|
|
||||||
S_NORMAL (RKEY, 'A', 10, NULL , &States[1]),
|
|
||||||
S_BRIGHT (RKEY, 'B', 10, NULL , &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_ACTOR (ARedCard, Doom, 13, 86)
|
|
||||||
PROP_SpawnState (0)
|
|
||||||
PROP_Inventory_Icon ("STKEYS2")
|
|
||||||
END_DEFAULTS
|
|
||||||
|
|
||||||
const char *ARedCard::PickupMessage ()
|
|
||||||
{
|
|
||||||
return GStrings("GOTREDCARD");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Blue skull key -----------------------------------------------------------
|
|
||||||
|
|
||||||
class ABlueSkull : public ADoomKey
|
|
||||||
{
|
|
||||||
DECLARE_ACTOR (ABlueSkull, ADoomKey)
|
|
||||||
public:
|
|
||||||
const char *PickupMessage ();
|
|
||||||
};
|
|
||||||
|
|
||||||
FState ABlueSkull::States[] =
|
|
||||||
{
|
|
||||||
S_NORMAL (BSKU, 'A', 10, NULL , &States[1]),
|
|
||||||
S_BRIGHT (BSKU, 'B', 10, NULL , &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_ACTOR (ABlueSkull, Doom, 40, 90)
|
|
||||||
PROP_SpawnState (0)
|
|
||||||
PROP_Inventory_Icon ("STKEYS3")
|
|
||||||
END_DEFAULTS
|
|
||||||
|
|
||||||
const char *ABlueSkull::PickupMessage ()
|
|
||||||
{
|
|
||||||
return GStrings("GOTBLUESKUL");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Yellow skull key ---------------------------------------------------------
|
|
||||||
|
|
||||||
class AYellowSkull : public ADoomKey
|
|
||||||
{
|
|
||||||
DECLARE_ACTOR (AYellowSkull, ADoomKey)
|
|
||||||
public:
|
|
||||||
const char *PickupMessage ();
|
|
||||||
};
|
|
||||||
|
|
||||||
FState AYellowSkull::States[] =
|
|
||||||
{
|
|
||||||
S_NORMAL (YSKU, 'A', 10, NULL , &States[1]),
|
|
||||||
S_BRIGHT (YSKU, 'B', 10, NULL , &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_ACTOR (AYellowSkull, Doom, 39, 88)
|
|
||||||
PROP_SpawnState (0)
|
|
||||||
PROP_Inventory_Icon ("STKEYS4")
|
|
||||||
END_DEFAULTS
|
|
||||||
|
|
||||||
const char *AYellowSkull::PickupMessage ()
|
|
||||||
{
|
|
||||||
return GStrings("GOTYELWSKUL");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Red skull key ------------------------------------------------------------
|
|
||||||
|
|
||||||
class ARedSkull : public ADoomKey
|
|
||||||
{
|
|
||||||
DECLARE_ACTOR (ARedSkull, ADoomKey)
|
|
||||||
public:
|
|
||||||
const char *PickupMessage ();
|
|
||||||
};
|
|
||||||
|
|
||||||
FState ARedSkull::States[] =
|
|
||||||
{
|
|
||||||
S_NORMAL (RSKU, 'A', 10, NULL , &States[1]),
|
|
||||||
S_BRIGHT (RSKU, 'B', 10, NULL , &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_ACTOR (ARedSkull, Doom, 38, 89)
|
|
||||||
PROP_SpawnState (0)
|
|
||||||
PROP_Inventory_Icon ("STKEYS5")
|
|
||||||
END_DEFAULTS
|
|
||||||
|
|
||||||
const char *ARedSkull::PickupMessage ()
|
|
||||||
{
|
|
||||||
return GStrings("GOTREDSKUL");
|
|
||||||
}
|
|
||||||
|
|
|
@ -634,7 +634,7 @@ private:
|
||||||
TAG_DONE);
|
TAG_DONE);
|
||||||
DrBNumberOuter (ammo1->Amount, -67, -4 - BigHeight);
|
DrBNumberOuter (ammo1->Amount, -67, -4 - BigHeight);
|
||||||
ammotop = -4 - BigHeight;
|
ammotop = -4 - BigHeight;
|
||||||
if (ammo2 != NULL)
|
if (ammo2 != NULL && ammo2!=ammo1)
|
||||||
{
|
{
|
||||||
// Draw secondary ammo just above the primary ammo
|
// Draw secondary ammo just above the primary ammo
|
||||||
int y = MIN (-6 - BigHeight, -6 - (ammoIcon != NULL ? ammoIcon->GetHeight() : 0));
|
int y = MIN (-6 - BigHeight, -6 - (ammoIcon != NULL ? ammoIcon->GetHeight() : 0));
|
||||||
|
|
|
@ -1,147 +0,0 @@
|
||||||
#include "actor.h"
|
|
||||||
#include "info.h"
|
|
||||||
|
|
||||||
/********** Decorations ***********/
|
|
||||||
|
|
||||||
#define _DECCOMMON(cls,ednum,rad,hi,ns) \
|
|
||||||
class cls : public AActor { DECLARE_STATELESS_ACTOR (cls, AActor) static FState States[ns]; }; \
|
|
||||||
IMPLEMENT_ACTOR (cls, Heretic, ednum, 0) \
|
|
||||||
PROP_SpawnState (0) \
|
|
||||||
PROP_RadiusFixed (rad) \
|
|
||||||
PROP_HeightFixed (hi)
|
|
||||||
|
|
||||||
#define _DECSTARTSTATES(cls,ns) \
|
|
||||||
FState cls::States[ns] =
|
|
||||||
|
|
||||||
#define DECF(cls,ednum,rad,hi,ns,fl) \
|
|
||||||
_DECCOMMON(cls,ednum,rad,hi,ns) \
|
|
||||||
PROP_Flags (fl) \
|
|
||||||
END_DEFAULTS \
|
|
||||||
_DECSTARTSTATES(cls,ns)
|
|
||||||
|
|
||||||
#define DEC(cls,ednum,rad,hi,ns) \
|
|
||||||
DECF(cls,ednum,rad,hi,ns,MF_SOLID)
|
|
||||||
|
|
||||||
#define DECNSOLID(cls,ednum,rad,hi,ns) \
|
|
||||||
_DECCOMMON(cls,ednum,rad,hi,ns) END_DEFAULTS _DECSTARTSTATES(cls,ns)
|
|
||||||
|
|
||||||
#define DECHANG(cls,ednum,rad,hi,ns) \
|
|
||||||
DECF(cls,ednum,rad,hi,ns,MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY)
|
|
||||||
|
|
||||||
#define DECHANGNS(cls,ednum,rad,hi,ns) \
|
|
||||||
DECF(cls,ednum,rad,hi,ns,MF_SPAWNCEILING|MF_NOGRAVITY)
|
|
||||||
|
|
||||||
#define DECFLOATNS(cls,ednum,rad,hi,ns) \
|
|
||||||
DECF(cls,ednum,rad,hi,ns,MF_NOGRAVITY)
|
|
||||||
|
|
||||||
#define DECNBLOCK(cls,ednum,rad,hi,ns) \
|
|
||||||
DECF(cls,ednum,rad,hi,ns,MF_NOBLOCKMAP)
|
|
||||||
|
|
||||||
DECHANGNS (ASkullHang70, 17, 20, 70, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (SKH1, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
DECHANGNS (ASkullHang60, 24, 20, 60, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (SKH2, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
DECHANGNS (ASkullHang45, 25, 20, 45, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (SKH3, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
DECHANGNS (ASkullHang35, 26, 20, 35, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (SKH4, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
DECHANGNS (AChandelier, 28, 20, 60, 3)
|
|
||||||
{
|
|
||||||
S_NORMAL (CHDL, 'A', 4, NULL, &States[1]),
|
|
||||||
S_NORMAL (CHDL, 'B', 4, NULL, &States[2]),
|
|
||||||
S_NORMAL (CHDL, 'C', 4, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
DEC (ASerpentTorch, 27, 12, 54, 3)
|
|
||||||
{
|
|
||||||
S_NORMAL (SRTC, 'A', 4, NULL, &States[1]),
|
|
||||||
S_NORMAL (SRTC, 'B', 4, NULL, &States[2]),
|
|
||||||
S_NORMAL (SRTC, 'C', 4, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
DEC (ASmallPillar, 29, 16, 34, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (SMPL, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
DEC (AStalagmiteSmall, 37, 8, 32, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (STGS, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
DEC (AStalagmiteLarge, 38, 12, 64, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (STGL, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
DECHANG (AStalactiteSmall, 39, 8, 36, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (STCS, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
DECHANG (AStalactiteLarge, 40, 12, 68, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (STCL, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
DEC (AFireBrazier, 76, 16, 44, 8)
|
|
||||||
{
|
|
||||||
S_BRIGHT (KFR1, 'A', 3, NULL, &States[1]),
|
|
||||||
S_BRIGHT (KFR1, 'B', 3, NULL, &States[2]),
|
|
||||||
S_BRIGHT (KFR1, 'C', 3, NULL, &States[3]),
|
|
||||||
S_BRIGHT (KFR1, 'D', 3, NULL, &States[4]),
|
|
||||||
S_BRIGHT (KFR1, 'E', 3, NULL, &States[5]),
|
|
||||||
S_BRIGHT (KFR1, 'F', 3, NULL, &States[6]),
|
|
||||||
S_BRIGHT (KFR1, 'G', 3, NULL, &States[7]),
|
|
||||||
S_BRIGHT (KFR1, 'H', 3, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
DEC (ABarrel, 44, 12, 32, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (BARL, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
DEC (ABrownPillar, 47, 14, 128, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (BRPL, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
DECHANGNS (AMoss1, 48, 20, 23, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (MOS1, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
DECHANGNS (AMoss2, 49, 20, 27, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (MOS2, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
||||||
|
|
||||||
/*DECFLOATNS (AWallTorch, 50, 20, 16, 3)*/
|
|
||||||
_DECCOMMON(AWallTorch, 50, 20, 16, 3)
|
|
||||||
PROP_Flags (MF_NOGRAVITY)
|
|
||||||
PROP_Flags4 (MF4_FIXMAPTHINGPOS)
|
|
||||||
END_DEFAULTS
|
|
||||||
_DECSTARTSTATES(AWallTorch, 3)
|
|
||||||
{
|
|
||||||
S_BRIGHT (WTRH, 'A', 6, NULL, &States[1]),
|
|
||||||
S_BRIGHT (WTRH, 'B', 6, NULL, &States[2]),
|
|
||||||
S_BRIGHT (WTRH, 'C', 6, NULL, &States[0])
|
|
||||||
};
|
|
||||||
|
|
||||||
DECHANG (AHangingCorpse, 51, 8, 104, 1)
|
|
||||||
{
|
|
||||||
S_NORMAL (HCOR, 'A', -1, NULL, NULL)
|
|
||||||
};
|
|
|
@ -408,6 +408,11 @@ private:
|
||||||
|
|
||||||
// Ammo
|
// Ammo
|
||||||
GetCurrentAmmo (ammo1, ammo2, ammocount1, ammocount2);
|
GetCurrentAmmo (ammo1, ammo2, ammocount1, ammocount2);
|
||||||
|
if (ammo1==ammo2)
|
||||||
|
{
|
||||||
|
// Don't show the same ammo twice.
|
||||||
|
ammo2=NULL;
|
||||||
|
}
|
||||||
if (oldammo1 != ammo1 || oldammo2 != ammo2 ||
|
if (oldammo1 != ammo1 || oldammo2 != ammo2 ||
|
||||||
oldammocount1 != ammocount1 || oldammocount2 != ammocount2)
|
oldammocount1 != ammocount1 || oldammocount2 != ammocount2)
|
||||||
{
|
{
|
||||||
|
@ -600,7 +605,7 @@ private:
|
||||||
DTA_HUDRules, HUD_Normal,
|
DTA_HUDRules, HUD_Normal,
|
||||||
DTA_CenterBottomOffset, true,
|
DTA_CenterBottomOffset, true,
|
||||||
TAG_DONE);
|
TAG_DONE);
|
||||||
if (ammo2 != NULL)
|
if (ammo2 != NULL && ammo2!=ammo1)
|
||||||
{
|
{
|
||||||
// Draw secondary ammo just above the primary ammo
|
// Draw secondary ammo just above the primary ammo
|
||||||
DrINumberOuter (ammo2->Amount, -29, -56);
|
DrINumberOuter (ammo2->Amount, -29, -56);
|
||||||
|
|
|
@ -448,6 +448,11 @@ private:
|
||||||
int drawbar;
|
int drawbar;
|
||||||
|
|
||||||
GetCurrentAmmo (ammo1, ammo2, ammocount1, ammocount2);
|
GetCurrentAmmo (ammo1, ammo2, ammocount1, ammocount2);
|
||||||
|
if (ammo1==ammo2)
|
||||||
|
{
|
||||||
|
// Don't show the same ammo twice.
|
||||||
|
ammo2=NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// If the weapon uses some ammo that is not mana, do not draw
|
// If the weapon uses some ammo that is not mana, do not draw
|
||||||
// the mana bars; draw the specific used ammo instead.
|
// the mana bars; draw the specific used ammo instead.
|
||||||
|
|
|
@ -1735,6 +1735,7 @@ void G_DoLoadLevel (int position, bool autosave)
|
||||||
}
|
}
|
||||||
|
|
||||||
level.starttime = gametic;
|
level.starttime = gametic;
|
||||||
|
level.maptime = 0;
|
||||||
G_UnSnapshotLevel (!savegamerestore); // [RH] Restore the state of the level.
|
G_UnSnapshotLevel (!savegamerestore); // [RH] Restore the state of the level.
|
||||||
G_FinishTravel ();
|
G_FinishTravel ();
|
||||||
if (players[consoleplayer].camera == NULL ||
|
if (players[consoleplayer].camera == NULL ||
|
||||||
|
|
|
@ -331,45 +331,6 @@ void DCorpsePointer::Serialize (FArchive &arc)
|
||||||
arc << Corpse << Count;
|
arc << Corpse << Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pointers to members cannot be assigned to single array elements,
|
|
||||||
// so this class is deprecated. It exists now only for compatibility with
|
|
||||||
// old savegames.
|
|
||||||
|
|
||||||
class DCorpseQueue : public DThinker
|
|
||||||
{
|
|
||||||
DECLARE_CLASS (DCorpseQueue, DThinker)
|
|
||||||
HAS_OBJECT_POINTERS
|
|
||||||
public:
|
|
||||||
void Serialize (FArchive &arc);
|
|
||||||
void Tick ();
|
|
||||||
protected:
|
|
||||||
AActor *CorpseQueue[CORPSEQUEUESIZE];
|
|
||||||
};
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS(DCorpseQueue)
|
|
||||||
|
|
||||||
void DCorpseQueue::Serialize (FArchive &arc)
|
|
||||||
{
|
|
||||||
int foo = 0;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
Super::Serialize (arc);
|
|
||||||
for (i = 0; i < CORPSEQUEUESIZE; ++i)
|
|
||||||
arc << CorpseQueue[i];
|
|
||||||
arc << foo;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DCorpseQueue::Tick ()
|
|
||||||
{
|
|
||||||
for (int i = 0; i < CORPSEQUEUESIZE; ++i)
|
|
||||||
{
|
|
||||||
if (CorpseQueue[i] != NULL)
|
|
||||||
{
|
|
||||||
new DCorpsePointer (CorpseQueue[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Destroy ();
|
|
||||||
}
|
|
||||||
|
|
||||||
// throw another corpse on the queue
|
// throw another corpse on the queue
|
||||||
void A_QueueCorpse (AActor *actor)
|
void A_QueueCorpse (AActor *actor)
|
||||||
|
|
|
@ -812,6 +812,40 @@ void AInventory::Hide ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//===========================================================================
|
||||||
|
|
||||||
|
static void PrintPickupMessage (const char *str)
|
||||||
|
{
|
||||||
|
if (str != NULL)
|
||||||
|
{
|
||||||
|
string temp;
|
||||||
|
|
||||||
|
if (strchr (str, '$'))
|
||||||
|
{
|
||||||
|
// The message or part of it is from the LANGUAGE lump
|
||||||
|
string name;
|
||||||
|
|
||||||
|
size_t part1 = strcspn (str, "$");
|
||||||
|
temp = string(str, part1);
|
||||||
|
|
||||||
|
size_t part2 = strcspn (str + part1 + 1, "$");
|
||||||
|
name = string(str + part1 + 1, part2);
|
||||||
|
|
||||||
|
temp += GStrings(name.GetChars());
|
||||||
|
if (str[part1 + 1 + part2] == '$')
|
||||||
|
{
|
||||||
|
temp += str + part1 + part2 + 2;
|
||||||
|
}
|
||||||
|
str = temp.GetChars();
|
||||||
|
}
|
||||||
|
Printf (PRINT_LOW, "%s\n", str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//
|
//
|
||||||
// AInventory :: Touch
|
// AInventory :: Touch
|
||||||
|
@ -845,7 +879,7 @@ void AInventory::Touch (AActor *toucher)
|
||||||
{
|
{
|
||||||
StaticLastMessageTic = gametic;
|
StaticLastMessageTic = gametic;
|
||||||
StaticLastMessage = message;
|
StaticLastMessage = message;
|
||||||
Printf (PRINT_LOW, "%s\n", message);
|
PrintPickupMessage (message);
|
||||||
StatusBar->FlashCrosshair ();
|
StatusBar->FlashCrosshair ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -860,7 +894,7 @@ void AInventory::Touch (AActor *toucher)
|
||||||
{
|
{
|
||||||
PlayPickupSound (toucher);
|
PlayPickupSound (toucher);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// [RH] Execute an attached special (if any)
|
// [RH] Execute an attached special (if any)
|
||||||
DoPickupSpecial (toucher);
|
DoPickupSpecial (toucher);
|
||||||
|
|
|
@ -478,7 +478,7 @@ private:
|
||||||
DTA_HUDRules, HUD_Normal,
|
DTA_HUDRules, HUD_Normal,
|
||||||
DTA_CenterBottomOffset, true,
|
DTA_CenterBottomOffset, true,
|
||||||
TAG_DONE);
|
TAG_DONE);
|
||||||
if (ammo2 != NULL)
|
if (ammo2 != NULL && ammo1!=ammo2)
|
||||||
{
|
{
|
||||||
// Draw secondary ammo just above the primary ammo
|
// Draw secondary ammo just above the primary ammo
|
||||||
DrINumberOuter (ammo2->Amount, -23, -48, false, 7);
|
DrINumberOuter (ammo2->Amount, -23, -48, false, 7);
|
||||||
|
|
|
@ -101,6 +101,7 @@ static bool r_showviewer;
|
||||||
|
|
||||||
CVAR (String, r_viewsize, "", CVAR_NOSET)
|
CVAR (String, r_viewsize, "", CVAR_NOSET)
|
||||||
CVAR (Int, r_polymost, 0, 0)
|
CVAR (Int, r_polymost, 0, 0)
|
||||||
|
CVAR (Bool, r_deathcamera, false, CVAR_ARCHIVE)
|
||||||
|
|
||||||
fixed_t r_BaseVisibility;
|
fixed_t r_BaseVisibility;
|
||||||
fixed_t r_WallVisibility;
|
fixed_t r_WallVisibility;
|
||||||
|
@ -993,7 +994,7 @@ void R_SetupFrame (AActor *actor)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player != NULL &&
|
if (player != NULL &&
|
||||||
((player->cheats & CF_CHASECAM)/* || (camera->health <= 0)*/) &&
|
((player->cheats & CF_CHASECAM) || (r_deathcamera && camera->health <= 0)) &&
|
||||||
(camera->RenderStyle != STYLE_None) &&
|
(camera->RenderStyle != STYLE_None) &&
|
||||||
!(camera->renderflags & RF_INVISIBLE) &&
|
!(camera->renderflags & RF_INVISIBLE) &&
|
||||||
camera->sprite != 0) // Sprite 0 is always TNT1
|
camera->sprite != 0) // Sprite 0 is always TNT1
|
||||||
|
|
101
src/sc_man.cpp
101
src/sc_man.cpp
|
@ -62,7 +62,7 @@ char *sc_ScriptsDir = "";
|
||||||
|
|
||||||
// PRIVATE DATA DEFINITIONS ------------------------------------------------
|
// PRIVATE DATA DEFINITIONS ------------------------------------------------
|
||||||
|
|
||||||
static char ScriptName[128];
|
static string ScriptName;
|
||||||
static char *ScriptBuffer;
|
static char *ScriptBuffer;
|
||||||
static char *ScriptPtr;
|
static char *ScriptPtr;
|
||||||
static char *ScriptEndPtr;
|
static char *ScriptEndPtr;
|
||||||
|
@ -86,7 +86,9 @@ static bool Escape=true;
|
||||||
|
|
||||||
void SC_Open (const char *name)
|
void SC_Open (const char *name)
|
||||||
{
|
{
|
||||||
SC_OpenLumpNum (Wads.GetNumForName (name), name);
|
int lump = Wads.CheckNumForFullName(name);
|
||||||
|
if (lump==-1) lump = Wads.GetNumForName(name);
|
||||||
|
SC_OpenLumpNum(lump, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
@ -102,7 +104,8 @@ void SC_OpenFile (const char *name)
|
||||||
{
|
{
|
||||||
SC_Close ();
|
SC_Close ();
|
||||||
ScriptSize = M_ReadFile (name, (byte **)&ScriptBuffer);
|
ScriptSize = M_ReadFile (name, (byte **)&ScriptBuffer);
|
||||||
ExtractFileBase (name, ScriptName);
|
ScriptName = name; // This is used for error messages so the full file name is preferable
|
||||||
|
//ExtractFileBase (name, ScriptName);
|
||||||
FreeScript = true;
|
FreeScript = true;
|
||||||
SC_PrepareScript ();
|
SC_PrepareScript ();
|
||||||
}
|
}
|
||||||
|
@ -121,7 +124,7 @@ void SC_OpenMem (const char *name, char *buffer, int size)
|
||||||
SC_Close ();
|
SC_Close ();
|
||||||
ScriptSize = size;
|
ScriptSize = size;
|
||||||
ScriptBuffer = buffer;
|
ScriptBuffer = buffer;
|
||||||
strcpy (ScriptName, name);
|
ScriptName = name;
|
||||||
FreeScript = false;
|
FreeScript = false;
|
||||||
SC_PrepareScript ();
|
SC_PrepareScript ();
|
||||||
}
|
}
|
||||||
|
@ -140,7 +143,7 @@ void SC_OpenLumpNum (int lump, const char *name)
|
||||||
ScriptSize = Wads.LumpLength (lump);
|
ScriptSize = Wads.LumpLength (lump);
|
||||||
ScriptBuffer = new char[ScriptSize];
|
ScriptBuffer = new char[ScriptSize];
|
||||||
Wads.ReadLump (lump, ScriptBuffer);
|
Wads.ReadLump (lump, ScriptBuffer);
|
||||||
strcpy (ScriptName, name);
|
ScriptName = name;
|
||||||
FreeScript = true;
|
FreeScript = true;
|
||||||
SC_PrepareScript ();
|
SC_PrepareScript ();
|
||||||
}
|
}
|
||||||
|
@ -164,6 +167,7 @@ static void SC_PrepareScript (void)
|
||||||
AlreadyGot = false;
|
AlreadyGot = false;
|
||||||
SavedScriptPtr = NULL;
|
SavedScriptPtr = NULL;
|
||||||
CMode = false;
|
CMode = false;
|
||||||
|
Escape = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
@ -596,7 +600,7 @@ BOOL SC_GetFloat (void)
|
||||||
if (*stopper != 0)
|
if (*stopper != 0)
|
||||||
{
|
{
|
||||||
I_Error ("SC_GetFloat: Bad numeric constant \"%s\".\n"
|
I_Error ("SC_GetFloat: Bad numeric constant \"%s\".\n"
|
||||||
"Script %s, Line %d\n", sc_String, ScriptName, sc_Line);
|
"Script %s, Line %d\n", sc_String, ScriptName.GetChars(), sc_Line);
|
||||||
}
|
}
|
||||||
sc_Number = (int)sc_Float;
|
sc_Number = (int)sc_Float;
|
||||||
return true;
|
return true;
|
||||||
|
@ -747,7 +751,7 @@ void STACK_ARGS SC_ScriptError (const char *message, ...)
|
||||||
va_end (arglist);
|
va_end (arglist);
|
||||||
}
|
}
|
||||||
|
|
||||||
I_Error ("Script error, \"%s\" line %d:\n%s\n", ScriptName,
|
I_Error ("Script error, \"%s\" line %d:\n%s\n", ScriptName.GetChars(),
|
||||||
sc_Line, composed.GetChars());
|
sc_Line, composed.GetChars());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -764,3 +768,86 @@ static void CheckOpen(void)
|
||||||
I_FatalError ("SC_ call before SC_Open().");
|
I_FatalError ("SC_ call before SC_Open().");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// Script state saving
|
||||||
|
// This allows recursive script execution
|
||||||
|
// This does not save the last token!
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
|
struct SavedScript
|
||||||
|
{
|
||||||
|
int sc_Line;
|
||||||
|
BOOL sc_End;
|
||||||
|
BOOL sc_Crossed;
|
||||||
|
BOOL sc_FileScripts;
|
||||||
|
|
||||||
|
string * ScriptName;
|
||||||
|
char *ScriptBuffer;
|
||||||
|
char *ScriptPtr;
|
||||||
|
char *ScriptEndPtr;
|
||||||
|
bool ScriptOpen;
|
||||||
|
int ScriptSize;
|
||||||
|
bool FreeScript;
|
||||||
|
char *SavedScriptPtr;
|
||||||
|
int SavedScriptLine;
|
||||||
|
bool CMode;
|
||||||
|
bool Escape;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static TArray<SavedScript> SavedScripts;
|
||||||
|
|
||||||
|
void SC_SaveScriptState()
|
||||||
|
{
|
||||||
|
SavedScript ss;
|
||||||
|
|
||||||
|
ss.sc_Line = sc_Line;
|
||||||
|
ss.sc_End = sc_End;
|
||||||
|
ss.sc_Crossed = sc_Crossed;
|
||||||
|
ss.sc_FileScripts = sc_FileScripts;
|
||||||
|
ss.ScriptName = ::new string(ScriptName);
|
||||||
|
ss.ScriptBuffer = ScriptBuffer;
|
||||||
|
ss.ScriptPtr = ScriptPtr;
|
||||||
|
ss.ScriptEndPtr = ScriptEndPtr;
|
||||||
|
ss.ScriptOpen = ScriptOpen;
|
||||||
|
ss.ScriptSize = ScriptSize;
|
||||||
|
ss.FreeScript = FreeScript;
|
||||||
|
ss.SavedScriptPtr = SavedScriptPtr;
|
||||||
|
ss.SavedScriptLine = SavedScriptLine;
|
||||||
|
ss.CMode = CMode;
|
||||||
|
ss.Escape = Escape;
|
||||||
|
SavedScripts.Push(ss);
|
||||||
|
ScriptOpen = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SC_RestoreScriptState()
|
||||||
|
{
|
||||||
|
if (SavedScripts.Size()>0)
|
||||||
|
{
|
||||||
|
SavedScript ss;
|
||||||
|
|
||||||
|
SavedScripts.Pop(ss);
|
||||||
|
sc_Line = ss.sc_Line;
|
||||||
|
sc_End = ss.sc_End;
|
||||||
|
sc_Crossed = ss.sc_Crossed;
|
||||||
|
sc_FileScripts = ss.sc_FileScripts;
|
||||||
|
ScriptName = *ss.ScriptName;
|
||||||
|
delete ss.ScriptName;
|
||||||
|
ScriptBuffer = ss.ScriptBuffer;
|
||||||
|
ScriptPtr = ss.ScriptPtr;
|
||||||
|
ScriptEndPtr = ss.ScriptEndPtr;
|
||||||
|
ScriptOpen = ss.ScriptOpen;
|
||||||
|
ScriptSize = ss.ScriptSize;
|
||||||
|
FreeScript = ss.FreeScript;
|
||||||
|
SavedScriptPtr = ss.SavedScriptPtr;
|
||||||
|
SavedScriptLine = ss.SavedScriptLine;
|
||||||
|
CMode = ss.CMode;
|
||||||
|
Escape = ss.Escape;
|
||||||
|
SavedScripts.ShrinkToFit();
|
||||||
|
AlreadyGot = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -26,6 +26,8 @@ BOOL SC_Compare (const char *text);
|
||||||
int SC_MatchString (const char **strings);
|
int SC_MatchString (const char **strings);
|
||||||
int SC_MustMatchString (const char **strings);
|
int SC_MustMatchString (const char **strings);
|
||||||
void STACK_ARGS SC_ScriptError (const char *message, ...);
|
void STACK_ARGS SC_ScriptError (const char *message, ...);
|
||||||
|
void SC_SaveScriptState();
|
||||||
|
void SC_RestoreScriptState();
|
||||||
|
|
||||||
extern char *sc_String;
|
extern char *sc_String;
|
||||||
extern int sc_StringLen;
|
extern int sc_StringLen;
|
||||||
|
|
|
@ -2073,6 +2073,42 @@ static void ActorSkipSuper (AActor *defaults, Baggage &bag)
|
||||||
ResetActor(defaults, &bag);
|
ResetActor(defaults, &bag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
static void ActorGame (AActor *defaults, Baggage &bag)
|
||||||
|
{
|
||||||
|
SC_MustGetString ();
|
||||||
|
if (SC_Compare ("Doom"))
|
||||||
|
{
|
||||||
|
bag.Info->GameFilter |= GAME_Doom;
|
||||||
|
}
|
||||||
|
else if (SC_Compare ("Heretic"))
|
||||||
|
{
|
||||||
|
bag.Info->GameFilter |= GAME_Heretic;
|
||||||
|
}
|
||||||
|
else if (SC_Compare ("Hexen"))
|
||||||
|
{
|
||||||
|
bag.Info->GameFilter |= GAME_Hexen;
|
||||||
|
}
|
||||||
|
else if (SC_Compare ("Raven"))
|
||||||
|
{
|
||||||
|
bag.Info->GameFilter |= GAME_Raven;
|
||||||
|
}
|
||||||
|
else if (SC_Compare ("Strife"))
|
||||||
|
{
|
||||||
|
bag.Info->GameFilter |= GAME_Strife;
|
||||||
|
}
|
||||||
|
else if (SC_Compare ("Any"))
|
||||||
|
{
|
||||||
|
bag.Info->GameFilter = GAME_Any;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SC_ScriptError ("Unknown game type %s", sc_String);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
@ -2890,7 +2926,8 @@ static void InventoryIcon (AInventory *defaults, Baggage &bag)
|
||||||
defaults->Icon = TexMan.AddPatch (sc_String, ns_sprites);
|
defaults->Icon = TexMan.AddPatch (sc_String, ns_sprites);
|
||||||
if (defaults->Icon<=0)
|
if (defaults->Icon<=0)
|
||||||
{
|
{
|
||||||
Printf("Icon '%s' for '%s' not found\n", sc_String, bag.Info->Class->Name+1);
|
if (bag.Info->GameFilter == GAME_Any || bag.Info->GameFilter & gameinfo.gametype)
|
||||||
|
Printf("Icon '%s' for '%s' not found\n", sc_String, bag.Info->Class->Name+1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3239,6 +3276,7 @@ static const ActorProps props[] =
|
||||||
{ "dropitem", ActorDropItem, RUNTIME_CLASS(AActor) },
|
{ "dropitem", ActorDropItem, RUNTIME_CLASS(AActor) },
|
||||||
{ "explosiondamage", ActorExplosionDamage, RUNTIME_CLASS(AActor) },
|
{ "explosiondamage", ActorExplosionDamage, RUNTIME_CLASS(AActor) },
|
||||||
{ "explosionradius", ActorExplosionRadius, RUNTIME_CLASS(AActor) },
|
{ "explosionradius", ActorExplosionRadius, RUNTIME_CLASS(AActor) },
|
||||||
|
{ "game", ActorGame, RUNTIME_CLASS(AActor) },
|
||||||
{ "gibhealth", ActorGibHealth, RUNTIME_CLASS(AActor) },
|
{ "gibhealth", ActorGibHealth, RUNTIME_CLASS(AActor) },
|
||||||
{ "greetings", ActorGreetingsState, RUNTIME_CLASS(AActor) },
|
{ "greetings", ActorGreetingsState, RUNTIME_CLASS(AActor) },
|
||||||
{ "heal", ActorHealState, RUNTIME_CLASS(AActor) },
|
{ "heal", ActorHealState, RUNTIME_CLASS(AActor) },
|
||||||
|
|
|
@ -126,44 +126,6 @@ FWadCollection Wads;
|
||||||
|
|
||||||
// CODE --------------------------------------------------------------------
|
// CODE --------------------------------------------------------------------
|
||||||
|
|
||||||
//==========================================================================
|
|
||||||
//
|
|
||||||
// strupr
|
|
||||||
//
|
|
||||||
// Suprisingly, glibc lacks this
|
|
||||||
//==========================================================================
|
|
||||||
|
|
||||||
#ifdef NEED_STRUPR
|
|
||||||
void strupr (char *s)
|
|
||||||
{
|
|
||||||
while (*s) {
|
|
||||||
*s = toupper (*s);
|
|
||||||
++s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//==========================================================================
|
|
||||||
//
|
|
||||||
// filelength
|
|
||||||
//
|
|
||||||
// Suprisingly, glibc lacks this
|
|
||||||
//==========================================================================
|
|
||||||
|
|
||||||
#ifdef NEED_FILELENGTH
|
|
||||||
int filelength (int handle)
|
|
||||||
{
|
|
||||||
struct stat fileinfo;
|
|
||||||
|
|
||||||
if (fstat (handle, &fileinfo) == -1)
|
|
||||||
{
|
|
||||||
close (handle);
|
|
||||||
I_Error ("Error fstating");
|
|
||||||
}
|
|
||||||
return fileinfo.st_size;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// uppercoppy
|
// uppercoppy
|
||||||
|
@ -532,8 +494,7 @@ void FWadCollection::AddFile (const char *filename, const char * data, int lengt
|
||||||
strcpy(base, lname);
|
strcpy(base, lname);
|
||||||
char * dot = strrchr(base,'.');
|
char * dot = strrchr(base,'.');
|
||||||
if (dot) *dot=0;
|
if (dot) *dot=0;
|
||||||
strupr(base);
|
uppercopy(lump_p->name, base);
|
||||||
strncpy(lump_p->name, base, 8);
|
|
||||||
lump_p->fullname = copystring(name);
|
lump_p->fullname = copystring(name);
|
||||||
lump_p->position = LittleLong(zip_fh->dwFileOffset) + sizeof(FZipLocalHeader) + LittleShort(zip_fh->wFileNameSize);
|
lump_p->position = LittleLong(zip_fh->dwFileOffset) + sizeof(FZipLocalHeader) + LittleShort(zip_fh->wFileNameSize);
|
||||||
lump_p->size = zip_fh->dwSize;
|
lump_p->size = zip_fh->dwSize;
|
||||||
|
@ -600,8 +561,7 @@ void FWadCollection::AddFile (const char *filename, const char * data, int lengt
|
||||||
singleinfo.FilePos = 0;
|
singleinfo.FilePos = 0;
|
||||||
singleinfo.Size = LittleLong(wadinfo->GetLength());
|
singleinfo.Size = LittleLong(wadinfo->GetLength());
|
||||||
ExtractFileBase (filename, name);
|
ExtractFileBase (filename, name);
|
||||||
strupr (name);
|
uppercopy(singleinfo.Name, name);
|
||||||
strncpy (singleinfo.Name, name, 8);
|
|
||||||
NumLumps++;
|
NumLumps++;
|
||||||
}
|
}
|
||||||
Printf ("\n");
|
Printf ("\n");
|
||||||
|
|
|
@ -30,6 +30,14 @@ typedef struct
|
||||||
|
|
||||||
} filelump_t;
|
} filelump_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
// appendlump(wadfile, filename):
|
||||||
|
//
|
||||||
|
// open the file by filename, write all of its contents to the wadfile
|
||||||
|
//
|
||||||
|
// returns: 0 = success, 1 = error
|
||||||
|
*/
|
||||||
|
|
||||||
int appendlump (FILE *wadfile, char *filename)
|
int appendlump (FILE *wadfile, char *filename)
|
||||||
{
|
{
|
||||||
char readbuf[64*1024];
|
char readbuf[64*1024];
|
||||||
|
@ -45,28 +53,55 @@ int appendlump (FILE *wadfile, char *filename)
|
||||||
}
|
}
|
||||||
while (lumpfile != NULL)
|
while (lumpfile != NULL)
|
||||||
{
|
{
|
||||||
|
// try to read a chunk of data
|
||||||
readlen = fread (readbuf, 1, sizeof(readbuf), lumpfile);
|
readlen = fread (readbuf, 1, sizeof(readbuf), lumpfile);
|
||||||
|
|
||||||
|
// if we reached the end, or hit an error
|
||||||
if (readlen < sizeof(readbuf))
|
if (readlen < sizeof(readbuf))
|
||||||
{
|
{
|
||||||
|
// if it's an error,
|
||||||
if (ferror (lumpfile))
|
if (ferror (lumpfile))
|
||||||
{
|
{
|
||||||
|
// diagnose
|
||||||
fprintf (stderr, "Error reading %s: %s\n", filename, strerror(errno));
|
fprintf (stderr, "Error reading %s: %s\n", filename, strerror(errno));
|
||||||
|
// set return code to error
|
||||||
ret |= 1;
|
ret |= 1;
|
||||||
}
|
}
|
||||||
|
// in any case, close the lump file to break the loop
|
||||||
fclose (lumpfile);
|
fclose (lumpfile);
|
||||||
lumpfile = NULL;
|
lumpfile = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// write whatever data we have in the buffer
|
||||||
|
|
||||||
|
// if we hit an error (less bytes written than given)
|
||||||
if (fwrite (readbuf, 1, readlen, wadfile) < readlen)
|
if (fwrite (readbuf, 1, readlen, wadfile) < readlen)
|
||||||
{
|
{
|
||||||
|
// diagnose
|
||||||
fprintf (stderr, "Error writing to wad: %s\n", strerror(errno));
|
fprintf (stderr, "Error writing to wad: %s\n", strerror(errno));
|
||||||
|
// close the lump file to break the loop
|
||||||
fclose (lumpfile);
|
fclose (lumpfile);
|
||||||
lumpfile = NULL;
|
lumpfile = NULL;
|
||||||
|
// set return code to error
|
||||||
ret |= 1;
|
ret |= 1;
|
||||||
}
|
}
|
||||||
|
// if the lump file got closed, the loop exits
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
// appendtozip(zipFile, zipname, filename):
|
||||||
|
//
|
||||||
|
// write a given lump file (filename) to the zipFile as zipname
|
||||||
|
//
|
||||||
|
// zipFile: zip object to be written to
|
||||||
|
//
|
||||||
|
// zipname: name of the file inside the zip
|
||||||
|
// filename: file to read data from
|
||||||
|
//
|
||||||
|
// returns: 0 = success, 1 = error
|
||||||
|
*/
|
||||||
int appendtozip (zipFile zipfile, const char * zipname, const char *filename)
|
int appendtozip (zipFile zipfile, const char * zipname, const char *filename)
|
||||||
{
|
{
|
||||||
char *readbuf;
|
char *readbuf;
|
||||||
|
@ -79,11 +114,16 @@ int appendtozip (zipFile zipfile, const char * zipname, const char *filename)
|
||||||
time_t currenttime;
|
time_t currenttime;
|
||||||
struct tm * ltime;
|
struct tm * ltime;
|
||||||
|
|
||||||
|
// clear zip_inf structure
|
||||||
|
memset(&zip_inf, 0, sizeof(zip_inf));
|
||||||
|
|
||||||
|
// try to determine local time
|
||||||
time(¤ttime);
|
time(¤ttime);
|
||||||
ltime = localtime(¤ttime);
|
ltime = localtime(¤ttime);
|
||||||
memset(&zip_inf, 0, sizeof(zip_inf));
|
// if succeeded,
|
||||||
if (ltime != NULL)
|
if (ltime != NULL)
|
||||||
{
|
{
|
||||||
|
// put it into the zip_inf structure
|
||||||
zip_inf.tmz_date.tm_sec = ltime->tm_sec;
|
zip_inf.tmz_date.tm_sec = ltime->tm_sec;
|
||||||
zip_inf.tmz_date.tm_min = ltime->tm_min;
|
zip_inf.tmz_date.tm_min = ltime->tm_min;
|
||||||
zip_inf.tmz_date.tm_hour = ltime->tm_hour;
|
zip_inf.tmz_date.tm_hour = ltime->tm_hour;
|
||||||
|
@ -91,17 +131,20 @@ int appendtozip (zipFile zipfile, const char * zipname, const char *filename)
|
||||||
zip_inf.tmz_date.tm_mon = ltime->tm_mon;
|
zip_inf.tmz_date.tm_mon = ltime->tm_mon;
|
||||||
zip_inf.tmz_date.tm_year = ltime->tm_year;
|
zip_inf.tmz_date.tm_year = ltime->tm_year;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// lumpfile = source file
|
||||||
lumpfile = fopen (filename, "rb");
|
lumpfile = fopen (filename, "rb");
|
||||||
if (lumpfile == NULL)
|
if (lumpfile == NULL)
|
||||||
{
|
{
|
||||||
fprintf (stderr, "Could not open %s: %s\n", filename, strerror(errno));
|
fprintf (stderr, "Could not open %s: %s\n", filename, strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
// len = source size
|
||||||
fseek (lumpfile, 0, SEEK_END);
|
fseek (lumpfile, 0, SEEK_END);
|
||||||
len = ftell(lumpfile);
|
len = ftell(lumpfile);
|
||||||
fseek (lumpfile, 0, SEEK_SET);
|
fseek (lumpfile, 0, SEEK_SET);
|
||||||
|
|
||||||
|
// allocate a buffer for the whole source file
|
||||||
readbuf = (char*)malloc(len);
|
readbuf = (char*)malloc(len);
|
||||||
if (readbuf == NULL)
|
if (readbuf == NULL)
|
||||||
{
|
{
|
||||||
|
@ -109,15 +152,21 @@ int appendtozip (zipFile zipfile, const char * zipname, const char *filename)
|
||||||
fprintf (stderr, "Could not allocate %d bytes\n", len);
|
fprintf (stderr, "Could not allocate %d bytes\n", len);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
// read the whole source file into buffer
|
||||||
readlen = fread (readbuf, 1, len, lumpfile);
|
readlen = fread (readbuf, 1, len, lumpfile);
|
||||||
fclose(lumpfile);
|
fclose(lumpfile);
|
||||||
|
|
||||||
|
// if read less bytes than expected,
|
||||||
if (readlen != len)
|
if (readlen != len)
|
||||||
{
|
{
|
||||||
|
// diagnose and return error
|
||||||
free (readbuf);
|
free (readbuf);
|
||||||
fprintf (stderr, "Unable to read %s\n", filename);
|
fprintf (stderr, "Unable to read %s\n", filename);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
// file loaded
|
||||||
|
|
||||||
|
// create zip entry, giving entry name and zip_inf data
|
||||||
if (Z_OK != zipOpenNewFileInZip(zipfile, zipname, &zip_inf, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_BEST_COMPRESSION))
|
if (Z_OK != zipOpenNewFileInZip(zipfile, zipname, &zip_inf, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_BEST_COMPRESSION))
|
||||||
{
|
{
|
||||||
free (readbuf);
|
free (readbuf);
|
||||||
|
@ -125,44 +174,68 @@ int appendtozip (zipFile zipfile, const char * zipname, const char *filename)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// write data into zipfile (zipfile remembers the state)
|
||||||
if (Z_OK != zipWriteInFileInZip(zipfile, readbuf, (unsigned)len))
|
if (Z_OK != zipWriteInFileInZip(zipfile, readbuf, (unsigned)len))
|
||||||
{
|
{
|
||||||
free (readbuf);
|
free (readbuf);
|
||||||
fprintf (stderr, "Unable to write %s to zip\n", filename);
|
fprintf (stderr, "Unable to write %s to zip\n", filename);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
// done writing data
|
||||||
free (readbuf);
|
free (readbuf);
|
||||||
|
|
||||||
|
// close the zip entry
|
||||||
if (Z_OK != zipCloseFileInZip(zipfile))
|
if (Z_OK != zipCloseFileInZip(zipfile))
|
||||||
{
|
{
|
||||||
fprintf (stderr, "Unable to close %s in zip\n", filename);
|
fprintf (stderr, "Unable to close %s in zip\n", filename);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
// all done
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
// buildwad(listfile, listfilename, makecmd, makefile)
|
||||||
|
//
|
||||||
|
// go through the listfile, either:
|
||||||
|
// writing dependencies (listfile + lumps with files) into a makefile,
|
||||||
|
// -or-
|
||||||
|
// writing lumps into a wad/zip file
|
||||||
|
//
|
||||||
|
// listfile: already opened source file
|
||||||
|
// listfilename: filename, if any - only for the makefile
|
||||||
|
// makecmd: given as argv[0] - only for the makefile
|
||||||
|
// makefile: output filename for makefile. determines mode:
|
||||||
|
// - if specified, we're writing deps into a makefile
|
||||||
|
// - otherwise, we're writing lumps into a wad/zip
|
||||||
|
//
|
||||||
|
*/
|
||||||
int buildwad (FILE *listfile, char *listfilename, char *makecmd, char *makefile)
|
int buildwad (FILE *listfile, char *listfilename, char *makecmd, char *makefile)
|
||||||
{
|
{
|
||||||
|
// destination we're writing output into -
|
||||||
|
// one of these:
|
||||||
zipFile zipfile = NULL;
|
zipFile zipfile = NULL;
|
||||||
|
FILE *wadfile = NULL;
|
||||||
|
|
||||||
wadinfo_t header;
|
wadinfo_t header;
|
||||||
filelump_t directory[MAX_LUMPS];
|
filelump_t directory[MAX_LUMPS];
|
||||||
char str[256];
|
char str[256]; // buffer for reading listfile line by line
|
||||||
FILE *wadfile = NULL;
|
|
||||||
char *pt;
|
char *pt;
|
||||||
char *lumpname, *filename;
|
char *lumpname, *filename;
|
||||||
int lineno = 0;
|
int lineno = 0;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
// prepare PWAD data
|
||||||
strncpy (header.magic, "PWAD", 4);
|
strncpy (header.magic, "PWAD", 4);
|
||||||
header.infotableofs = 0;
|
header.infotableofs = 0;
|
||||||
header.numlumps = 0;
|
header.numlumps = 0;
|
||||||
memset (directory, 0, sizeof(directory));
|
memset (directory, 0, sizeof(directory));
|
||||||
|
|
||||||
|
// read the listfile line by line
|
||||||
while (fgets (str, sizeof(str), listfile))
|
while (fgets (str, sizeof(str), listfile))
|
||||||
{
|
{
|
||||||
lineno++;
|
lineno++; // counting lines for diagnostic purposes
|
||||||
|
|
||||||
// Strip comments
|
// Strip comments
|
||||||
pt = strchr (str, '#');
|
pt = strchr (str, '#');
|
||||||
|
@ -189,7 +262,7 @@ int buildwad (FILE *listfile, char *listfilename, char *makecmd, char *makefile)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!makefile)
|
if (!makefile) // if it's not a makefile,
|
||||||
{
|
{
|
||||||
int ln = (int)strlen(pt+1);
|
int ln = (int)strlen(pt+1);
|
||||||
|
|
||||||
|
@ -210,8 +283,9 @@ int buildwad (FILE *listfile, char *listfilename, char *makecmd, char *makefile)
|
||||||
}
|
}
|
||||||
else filename = makefile;
|
else filename = makefile;
|
||||||
|
|
||||||
if (!zipfile)
|
if (!zipfile) // if we didn't end up opening zip, it's a regular file
|
||||||
{
|
{
|
||||||
|
// open wadfile
|
||||||
wadfile = fopen (filename, makefile ? "w" : "wb");
|
wadfile = fopen (filename, makefile ? "w" : "wb");
|
||||||
if (wadfile == NULL)
|
if (wadfile == NULL)
|
||||||
{
|
{
|
||||||
|
@ -229,7 +303,7 @@ int buildwad (FILE *listfile, char *listfilename, char *makecmd, char *makefile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
} // @
|
||||||
|
|
||||||
// Everything up to the next whitespace is the lump name
|
// Everything up to the next whitespace is the lump name
|
||||||
lumpname = pt;
|
lumpname = pt;
|
||||||
|
@ -247,17 +321,20 @@ int buildwad (FILE *listfile, char *listfilename, char *makecmd, char *makefile)
|
||||||
if (*filename == 0) filename = NULL;
|
if (*filename == 0) filename = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// must have output selected
|
||||||
if (wadfile == NULL && zipfile == NULL)
|
if (wadfile == NULL && zipfile == NULL)
|
||||||
{
|
{
|
||||||
fprintf (stderr, "Line %d: No wad specified before lumps.\n", lineno);
|
fprintf (stderr, "Line %d: No wad specified before lumps.\n", lineno);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if we're writing a makefile,
|
||||||
if (makefile)
|
if (makefile)
|
||||||
{
|
{
|
||||||
|
// and the lump has a filename,
|
||||||
if (filename != NULL)
|
if (filename != NULL)
|
||||||
{
|
{
|
||||||
|
// add it as a dependency (with quotes, if needed)
|
||||||
if (strchr (filename, ' '))
|
if (strchr (filename, ' '))
|
||||||
{
|
{
|
||||||
fprintf (wadfile, " \\\n\t\"%s\"", filename);
|
fprintf (wadfile, " \\\n\t\"%s\"", filename);
|
||||||
|
@ -268,42 +345,67 @@ int buildwad (FILE *listfile, char *listfilename, char *makecmd, char *makefile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else // not writing a makefile
|
||||||
{
|
{
|
||||||
if (zipfile == NULL)
|
if (zipfile == NULL) // must be a wadfile
|
||||||
{
|
{
|
||||||
|
// convert lumpname to uppercase
|
||||||
for (i = 0; lumpname[i]; ++i)
|
for (i = 0; lumpname[i]; ++i)
|
||||||
{
|
{
|
||||||
lumpname[i] = toupper(lumpname[i]);
|
lumpname[i] = toupper(lumpname[i]);
|
||||||
}
|
}
|
||||||
|
// put name into directory entry
|
||||||
strncpy (directory[header.numlumps].name, lumpname, 8);
|
strncpy (directory[header.numlumps].name, lumpname, 8);
|
||||||
|
// put filepos into directory entry
|
||||||
directory[header.numlumps].filepos = ftell (wadfile);
|
directory[header.numlumps].filepos = ftell (wadfile);
|
||||||
|
// if filename given,
|
||||||
if (filename != NULL)
|
if (filename != NULL)
|
||||||
{
|
{
|
||||||
|
// append data to the wadfile
|
||||||
ret |= appendlump (wadfile, filename);
|
ret |= appendlump (wadfile, filename);
|
||||||
}
|
}
|
||||||
|
// put size into directory entry (how many bytes were just written)
|
||||||
directory[header.numlumps].size = ftell (wadfile) - directory[header.numlumps].filepos;
|
directory[header.numlumps].size = ftell (wadfile) - directory[header.numlumps].filepos;
|
||||||
}
|
}
|
||||||
else if (filename != NULL)
|
else if (filename != NULL) // writing a zip, and filename is non-null
|
||||||
{
|
{
|
||||||
|
// convert lumpname to lowercase
|
||||||
for (i = 0; lumpname[i]; ++i)
|
for (i = 0; lumpname[i]; ++i)
|
||||||
{
|
{
|
||||||
lumpname[i] = tolower(lumpname[i]);
|
lumpname[i] = tolower(lumpname[i]);
|
||||||
}
|
}
|
||||||
|
// add lump data to the zip
|
||||||
ret |= appendtozip(zipfile, lumpname, filename);
|
ret |= appendtozip(zipfile, lumpname, filename);
|
||||||
}
|
}
|
||||||
|
// count all lumps
|
||||||
header.numlumps++;
|
header.numlumps++;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
} // end of line-by-line reading
|
||||||
|
|
||||||
|
// the finishing touches:
|
||||||
|
// - makefile: terminate the line, and write the action line
|
||||||
|
// - unzipped wad: write the directory at the end,
|
||||||
|
// and update the header with directory's position
|
||||||
|
// - zipped wad: just close it
|
||||||
|
|
||||||
|
// if we were writing a plain file,
|
||||||
if (wadfile != NULL)
|
if (wadfile != NULL)
|
||||||
{
|
{
|
||||||
|
// if it's makefile,
|
||||||
if (makefile)
|
if (makefile)
|
||||||
{
|
{
|
||||||
|
// terminate the dependencies line,
|
||||||
|
// and write the action command
|
||||||
fprintf (wadfile, "\n\t%s %s\n", makecmd, listfilename);
|
fprintf (wadfile, "\n\t%s %s\n", makecmd, listfilename);
|
||||||
}
|
}
|
||||||
else
|
else // otherwise, it's plain wad
|
||||||
{
|
{
|
||||||
|
// the directory of lumps will be written at the end,
|
||||||
|
// starting at the current position - put it into the header
|
||||||
header.infotableofs = ftell (wadfile);
|
header.infotableofs = ftell (wadfile);
|
||||||
|
|
||||||
|
// swap endianness, if needed
|
||||||
#ifdef WORDS_BIGENDIAN
|
#ifdef WORDS_BIGENDIAN
|
||||||
#define SWAP(x) ((((x)>>24)|(((x)>>8) & 0xff00)|(((x)<<8) & 0xff0000)|((x)<<24)))
|
#define SWAP(x) ((((x)>>24)|(((x)>>8) & 0xff00)|(((x)<<8) & 0xff0000)|((x)<<24)))
|
||||||
|
|
||||||
|
@ -313,29 +415,37 @@ int buildwad (FILE *listfile, char *listfilename, char *makecmd, char *makefile)
|
||||||
directory[i].size = SWAP(directory[i].size);
|
directory[i].size = SWAP(directory[i].size);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
// write the whole directory of lumps
|
||||||
if (fwrite (directory, sizeof(directory[0]), header.numlumps, wadfile) != header.numlumps)
|
if (fwrite (directory, sizeof(directory[0]), header.numlumps, wadfile) != header.numlumps)
|
||||||
{
|
{
|
||||||
|
// failed to write the whole directory
|
||||||
fprintf (stderr, "Error writing to wad: %s\n", strerror(errno));
|
fprintf (stderr, "Error writing to wad: %s\n", strerror(errno));
|
||||||
ret |= 1;
|
ret |= 1;
|
||||||
}
|
}
|
||||||
else
|
else // success - seek to 0 and rewrite the header, now with offset
|
||||||
{
|
{
|
||||||
|
// endianness
|
||||||
#ifdef WORDS_BIGENDIAN
|
#ifdef WORDS_BIGENDIAN
|
||||||
SWAP(header.infotableofs);
|
SWAP(header.infotableofs);
|
||||||
SWAP(header.numlumps);
|
SWAP(header.numlumps);
|
||||||
#endif
|
#endif
|
||||||
|
// seek to 0
|
||||||
fseek (wadfile, 0, SEEK_SET);
|
fseek (wadfile, 0, SEEK_SET);
|
||||||
|
|
||||||
|
// rewrite the header
|
||||||
if (fwrite (&header, sizeof(header), 1, wadfile) != 1)
|
if (fwrite (&header, sizeof(header), 1, wadfile) != 1)
|
||||||
{
|
{
|
||||||
fprintf (stderr, "Error writing to wad: %s\n", strerror(errno));
|
fprintf (stderr, "Error writing to wad: %s\n", strerror(errno));
|
||||||
ret |= 1;
|
ret |= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} // plain wad
|
||||||
|
|
||||||
fclose (wadfile);
|
fclose (wadfile);
|
||||||
}
|
} // wadfile!=NULL - wad or makefile
|
||||||
else if (zipfile != NULL)
|
else if (zipfile != NULL)
|
||||||
{
|
{
|
||||||
|
// zip - just close it
|
||||||
zipClose(zipfile, NULL);
|
zipClose(zipfile, NULL);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -393,6 +503,6 @@ int __cdecl main (int argc, char **argv)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
baduse:
|
baduse:
|
||||||
fprintf (stderr, "Usage: makewad [-make makecommand makefile] [listfile]\n");
|
fprintf (stderr, "Usage: makewad [-make makefile] [listfile]\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
5
wadsrc/decorate/decorate.txt
Normal file
5
wadsrc/decorate/decorate.txt
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#include "actors/doom/doomarmor.txt"
|
||||||
|
#include "actors/doom/doomkeys.txt"
|
||||||
|
#include "actors/doom/doomdecorations.txt"
|
||||||
|
|
||||||
|
#include "actors/heretic/hereticdecorations.txt"
|
66
wadsrc/decorate/doom/doomarmor.txt
Normal file
66
wadsrc/decorate/doom/doomarmor.txt
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
|
||||||
|
// Armor bonus --------------------------------------------------------------
|
||||||
|
|
||||||
|
Actor ArmorBonus : BasicArmorBonus 2015
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
SpawnID 22
|
||||||
|
Radius 20
|
||||||
|
Height 16
|
||||||
|
Inventory.Pickupmessage "$GOTARMBONUS"
|
||||||
|
Inventory.Icon "ARM1A0"
|
||||||
|
Armor.Savepercent 33.33333
|
||||||
|
Armor.Saveamount 1
|
||||||
|
Armor.Maxsaveamount 200
|
||||||
|
+COUNTITEM
|
||||||
|
+INVENTORY.ALWAYSPICKUP
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
BON2 ABCDCB 6
|
||||||
|
loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Green armor --------------------------------------------------------------
|
||||||
|
|
||||||
|
Actor GreenArmor : BasicArmorPickup 2018
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
SpawnID 68
|
||||||
|
Radius 20
|
||||||
|
Height 16
|
||||||
|
Inventory.Pickupmessage "$GOTARMOR"
|
||||||
|
Inventory.Icon "ARM1A0"
|
||||||
|
Armor.Savepercent 33.33333
|
||||||
|
Armor.Saveamount 100
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
ARM1 A 6
|
||||||
|
ARM1 B 7 bright
|
||||||
|
loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Blue armor ---------------------------------------------------------------
|
||||||
|
|
||||||
|
Actor BlueArmor : BasicArmorPickup 2019
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
SpawnID 69
|
||||||
|
Radius 20
|
||||||
|
Height 16
|
||||||
|
Inventory.Pickupmessage "$GOTMEGA"
|
||||||
|
Inventory.Icon "ARM2A0"
|
||||||
|
Armor.Savepercent 50
|
||||||
|
Armor.Saveamount 200
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
ARM2 A 6
|
||||||
|
ARM2 B 6 bright
|
||||||
|
loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
754
wadsrc/decorate/doom/doomdecorations.txt
Normal file
754
wadsrc/decorate/doom/doomdecorations.txt
Normal file
|
@ -0,0 +1,754 @@
|
||||||
|
|
||||||
|
// Tech lamp ---------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR TechLamp 85
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 80
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
TLMP ABCD 4 BRIGHT
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tech lamp 2 -------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR TechLamp2 86
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 60
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
TLP2 ABCD 4 BRIGHT
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Column ------------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR Column 2028
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 48
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
COLU A -1 BRIGHT
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tall green column -------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR TallGreenColumn 30
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 52
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
COL1 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Short green column ------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR ShortGreenColumn 31
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 40
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
COL2 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tall red column ---------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR TallRedColumn 32
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 52
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
COL3 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Short red column --------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR ShortRedColumn 33
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 40
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
COL4 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skull column ------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR SkullColumn 37
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 40
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
COL6 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Heart column ------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR HeartColumn 36
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 40
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
COL5 AB 14
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Evil eye ----------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR EvilEye 41
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 54
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
CEYE ABCB 6 BRIGHT
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Floating skull ----------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR FloatingSkull 42
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 26
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
FSKU ABC 6 BRIGHT
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Torch tree --------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR TorchTree 43
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 56
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
TRE1 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Blue torch --------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR BlueTorch 44
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 68
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
TBLU ABCD 4 BRIGHT
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Green torch -------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR GreenTorch 45
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 68
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
TGRN ABCD 4 BRIGHT
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Red torch ---------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR RedTorch 46
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 68
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
TRED ABCD 4 BRIGHT
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Short blue torch --------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR ShortBlueTorch 55
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 37
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
SMBT ABCD 4 BRIGHT
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Short green torch -------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR ShortGreenTorch 56
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 37
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
SMGT ABCD 4 BRIGHT
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Short red torch ---------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR ShortRedTorch 57
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 37
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
SMRT ABCD 4 BRIGHT
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stalagtite --------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR Stalagtite 47
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 40
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
SMIT A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tech pillar -------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR TechPillar 48
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 128
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
ELEC A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Candle stick ------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR Candlestick 34
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 20
|
||||||
|
Height 14
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
CAND A -1 BRIGHT
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Candelabra --------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR Candelabra 35
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 60
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
CBRA A -1 BRIGHT
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bloody twitch -----------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR BloodyTwitch 49
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 68
|
||||||
|
+SOLID
|
||||||
|
+NOGRAVITY
|
||||||
|
+SPAWNCEILING
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
GOR1 A 10
|
||||||
|
GOR1 B 15
|
||||||
|
GOR1 C 8
|
||||||
|
GOR1 B 6
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Meat 2 ------------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR Meat2 50
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 84
|
||||||
|
+SOLID
|
||||||
|
+NOGRAVITY
|
||||||
|
+SPAWNCEILING
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
GOR2 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Meat 3 ------------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR Meat3 51
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 84
|
||||||
|
+SOLID
|
||||||
|
+NOGRAVITY
|
||||||
|
+SPAWNCEILING
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
GOR3 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Meat 4 ------------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR Meat4 52
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 68
|
||||||
|
+SOLID
|
||||||
|
+NOGRAVITY
|
||||||
|
+SPAWNCEILING
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
GOR4 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Meat 5 ------------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR Meat5 53
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 52
|
||||||
|
+SOLID
|
||||||
|
+NOGRAVITY
|
||||||
|
+SPAWNCEILING
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
GOR5 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nonsolid meat -----------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR NonsolidMeat2 : Meat2 59
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
-SOLID
|
||||||
|
Radius 20
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR NonsolidMeat3 : Meat3 61
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
-SOLID
|
||||||
|
Radius 20
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR NonsolidMeat4 : Meat4 60
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
-SOLID
|
||||||
|
Radius 20
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR NonsolidMeat5 : Meat5 62
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
-SOLID
|
||||||
|
Radius 20
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nonsolid bloody twitch --------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR NonsolidTwitch : BloodyTwitch 63
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
-SOLID
|
||||||
|
Radius 20
|
||||||
|
}
|
||||||
|
|
||||||
|
// Head on a stick ---------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR HeadOnAStick 27
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 56
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
POL4 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Heads (plural!) on a stick ----------------------------------------------
|
||||||
|
|
||||||
|
ACTOR HeadsOnAStick 28
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 64
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
POL2 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Head candles ------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR HeadCandles 29
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 42
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
POL3 AB 6 BRIGHT
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dead on a stick ---------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR DeadStick 25
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 64
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
POL1 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Still alive on a stick --------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR LiveStick 26
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 64
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
POL6 A 6
|
||||||
|
POL6 B 8
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Big tree ----------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR BigTree 54
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 32
|
||||||
|
Height 108
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
TRE2 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Burning barrel ----------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR BurningBarrel 70
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
SpawnID 149
|
||||||
|
Radius 16
|
||||||
|
Height 32
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
FCAN ABC 4 BRIGHT
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hanging with no guts ----------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR HangNoGuts 73
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 88
|
||||||
|
+SOLID
|
||||||
|
+NOGRAVITY
|
||||||
|
+SPAWNCEILING
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
HDB1 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hanging from bottom with no brain ---------------------------------------
|
||||||
|
|
||||||
|
ACTOR HangBNoBrain 74
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 88
|
||||||
|
+SOLID
|
||||||
|
+NOGRAVITY
|
||||||
|
+SPAWNCEILING
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
HDB2 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hanging from top, looking down ------------------------------------------
|
||||||
|
|
||||||
|
ACTOR HangTLookingDown 75
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 64
|
||||||
|
+SOLID
|
||||||
|
+NOGRAVITY
|
||||||
|
+SPAWNCEILING
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
HDB3 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hanging from top, looking up --------------------------------------------
|
||||||
|
|
||||||
|
ACTOR HangTLookingUp 77
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 64
|
||||||
|
+SOLID
|
||||||
|
+NOGRAVITY
|
||||||
|
+SPAWNCEILING
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
HDB5 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hanging from top, skully ------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR HangTSkull 76
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 64
|
||||||
|
+SOLID
|
||||||
|
+NOGRAVITY
|
||||||
|
+SPAWNCEILING
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
HDB4 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hanging from top without a brain ----------------------------------------
|
||||||
|
|
||||||
|
ACTOR AHangTNoBrain 78
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
Radius 16
|
||||||
|
Height 64
|
||||||
|
+SOLID
|
||||||
|
+NOGRAVITY
|
||||||
|
+SPAWNCEILING
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
HDB6 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Colon gibs --------------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR ColonGibs 79
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
SpawnID 147
|
||||||
|
Radius 20
|
||||||
|
Height 4
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
POB1 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Small pool o' blood -----------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR SmallBloodPool 80
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
SpawnID 148
|
||||||
|
Radius 20
|
||||||
|
Height 1
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
POB2 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// brain stem lying on the ground ------------------------------------------
|
||||||
|
|
||||||
|
ACTOR BrainStem 81
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
SpawnID 150
|
||||||
|
Radius 20
|
||||||
|
Height 4
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
BRS1 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
110
wadsrc/decorate/doom/doomkeys.txt
Normal file
110
wadsrc/decorate/doom/doomkeys.txt
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
|
||||||
|
Actor DoomKey : Key
|
||||||
|
{
|
||||||
|
Radius 20
|
||||||
|
Height 16
|
||||||
|
+NOTDMATCH
|
||||||
|
}
|
||||||
|
|
||||||
|
// Blue key card ------------------------------------------------------------
|
||||||
|
|
||||||
|
Actor BlueCard : DoomKey 5
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
SpawnID 85
|
||||||
|
Inventory.Pickupmessage "$GOTBLUECARD"
|
||||||
|
Inventory.Icon "STKEYS0"
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
BKEY A 10
|
||||||
|
BKEY B 10 bright
|
||||||
|
loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Yellow key card ----------------------------------------------------------
|
||||||
|
|
||||||
|
Actor YellowCard : DoomKey 6
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
SpawnID 87
|
||||||
|
Inventory.Pickupmessage "$GOTYELWCARD"
|
||||||
|
Inventory.Icon "STKEYS1"
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
YKEY A 10
|
||||||
|
YKEY B 10 bright
|
||||||
|
loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Red key card -------------------------------------------------------------
|
||||||
|
|
||||||
|
Actor RedCard : DoomKey 13
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
SpawnID 86
|
||||||
|
Inventory.Pickupmessage "$GOTREDCARD"
|
||||||
|
Inventory.Icon "STKEYS2"
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
RKEY A 10
|
||||||
|
RKEY B 10 bright
|
||||||
|
loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Blue skull key -----------------------------------------------------------
|
||||||
|
|
||||||
|
Actor BlueSkull : DoomKey 40
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
SpawnID 90
|
||||||
|
Inventory.Pickupmessage "$GOTBLUESKUL"
|
||||||
|
Inventory.Icon "STKEYS3"
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
BSKU A 10
|
||||||
|
BSKU B 10 bright
|
||||||
|
loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Yellow skull key ---------------------------------------------------------
|
||||||
|
|
||||||
|
Actor YellowSkull : DoomKey 39
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
SpawnID 88
|
||||||
|
Inventory.Pickupmessage "$GOTYELWSKUL"
|
||||||
|
Inventory.Icon "STKEYS4"
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
YSKU A 10
|
||||||
|
YSKU B 10 bright
|
||||||
|
loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Red skull key ------------------------------------------------------------
|
||||||
|
|
||||||
|
Actor RedSkull : DoomKey 38
|
||||||
|
{
|
||||||
|
Game Doom
|
||||||
|
SpawnID 89
|
||||||
|
Inventory.Pickupmessage "$GOTREDSKUL"
|
||||||
|
Inventory.Icon "STKEYS5"
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
RSKU A 10
|
||||||
|
RSKU B 10 bright
|
||||||
|
loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
266
wadsrc/decorate/heretic/hereticdecorations.txt
Normal file
266
wadsrc/decorate/heretic/hereticdecorations.txt
Normal file
|
@ -0,0 +1,266 @@
|
||||||
|
ACTOR SkullHang70 17
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 20
|
||||||
|
Height 70
|
||||||
|
+SPAWNCEILING
|
||||||
|
+NOGRAVITY
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
SKH1 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR SkullHang60 24
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 20
|
||||||
|
Height 60
|
||||||
|
+SPAWNCEILING
|
||||||
|
+NOGRAVITY
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
SKH2 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR SkullHang45 25
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 20
|
||||||
|
Height 45
|
||||||
|
+SPAWNCEILING
|
||||||
|
+NOGRAVITY
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
SKH3 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR SkullHang35 26
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 20
|
||||||
|
Height 35
|
||||||
|
+SPAWNCEILING
|
||||||
|
+NOGRAVITY
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
SKH4 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR Chandelier 28
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 20
|
||||||
|
Height 60
|
||||||
|
+SPAWNCEILING
|
||||||
|
+NOGRAVITY
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
CHDL ABC 4
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR SerpentTorch 27
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 12
|
||||||
|
Height 54
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
SRTC ABC 4
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR SmallPillar 29
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 16
|
||||||
|
Height 34
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
SMPL A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR StalagmiteSmall 37
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 8
|
||||||
|
Height 32
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
STGS A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR StalagmiteLarge 38
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 12
|
||||||
|
Height 64
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
STGL A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR StalactiteSmall 39
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 8
|
||||||
|
Height 36
|
||||||
|
+SOLID
|
||||||
|
+SPAWNCEILING
|
||||||
|
+NOGRAVITY
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
STCS A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR StalactiteLarge 40
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 12
|
||||||
|
Height 68
|
||||||
|
+SOLID
|
||||||
|
+SPAWNCEILING
|
||||||
|
+NOGRAVITY
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
STCL A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR FireBrazier 76
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 16
|
||||||
|
Height 44
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
KFR1 ABCDEFGH 3 Bright
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR Barrel 44
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 12
|
||||||
|
Height 32
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
BARL A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR BrownPillar 47
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 14
|
||||||
|
Height 128
|
||||||
|
+SOLID
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
BRPL A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR Moss1 48
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 20
|
||||||
|
Height 23
|
||||||
|
+SPAWNCEILING
|
||||||
|
+NOGRAVITY
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
MOS1 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR Moss2 49
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 20
|
||||||
|
Height 27
|
||||||
|
+SPAWNCEILING
|
||||||
|
+NOGRAVITY
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
MOS2 A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR WallTorch 50
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 20
|
||||||
|
Height 16
|
||||||
|
+NOGRAVITY
|
||||||
|
+FIXMAPTHINGPOS
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
WTRH ABC 6 Bright
|
||||||
|
Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ACTOR HangingCorpse 51
|
||||||
|
{
|
||||||
|
Game Heretic
|
||||||
|
Radius 8
|
||||||
|
Height 104
|
||||||
|
+SOLID
|
||||||
|
+SPAWNCEILING
|
||||||
|
+NOGRAVITY
|
||||||
|
States
|
||||||
|
{
|
||||||
|
Spawn:
|
||||||
|
HCOR A -1
|
||||||
|
Stop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -85,6 +85,12 @@ PD_YELLOWO = "You need a yellow key to activate this object";
|
||||||
PD_BLUEK = "You need a blue key to open this door";
|
PD_BLUEK = "You need a blue key to open this door";
|
||||||
PD_REDK = "You need a red key to open this door";
|
PD_REDK = "You need a red key to open this door";
|
||||||
PD_YELLOWK = "You need a yellow key to open this door";
|
PD_YELLOWK = "You need a yellow key to open this door";
|
||||||
|
PD_BLUECO = "You need a blue card to activate this object";
|
||||||
|
PD_REDCO = "You need a red card to activate this object";
|
||||||
|
PD_YELLOWCO = "You need a yellow card to activate this object";
|
||||||
|
PD_BLUESO = "You need a blue skull to activate this object";
|
||||||
|
PD_REDSO = "You need a red skull to activate this object";
|
||||||
|
PD_YELLOWSO = "You need a yellow skull to activate this object";
|
||||||
GGSAVED = "game saved.";
|
GGSAVED = "game saved.";
|
||||||
HUSTR_MSGU = "[Message unsent]";
|
HUSTR_MSGU = "[Message unsent]";
|
||||||
|
|
||||||
|
@ -529,8 +535,12 @@ PD_BLUES = "You need a blue skull to open this door";
|
||||||
PD_REDS = "You need a red skull to open this door";
|
PD_REDS = "You need a red skull to open this door";
|
||||||
PD_YELLOWS = "You need a yellow skull to open this door";
|
PD_YELLOWS = "You need a yellow skull to open this door";
|
||||||
PD_ANY = "Any key will open this door";
|
PD_ANY = "Any key will open this door";
|
||||||
|
PD_ANYOBJ = "Any key will activate this object";
|
||||||
PD_ALL3 = "You need all three keys to open this door";
|
PD_ALL3 = "You need all three keys to open this door";
|
||||||
|
PD_ALL3O = "You need all three keys to activate this object";
|
||||||
PD_ALL6 = "You need all six keys to open this door";
|
PD_ALL6 = "You need all six keys to open this door";
|
||||||
|
PD_ALL6O = "You need all six keys to activate this object";
|
||||||
|
PD_ALLKEYS = "You need all the keys";
|
||||||
|
|
||||||
// Gameflow messages
|
// Gameflow messages
|
||||||
TXT_FRAGLIMIT = "Fraglimit hit.";
|
TXT_FRAGLIMIT = "Fraglimit hit.";
|
||||||
|
@ -895,6 +905,18 @@ TXT_KEY_HORN = "HORN KEY";
|
||||||
TXT_KEY_SWAMP = "SWAMP KEY";
|
TXT_KEY_SWAMP = "SWAMP KEY";
|
||||||
TXT_KEY_CASTLE = "CASTLE KEY";
|
TXT_KEY_CASTLE = "CASTLE KEY";
|
||||||
|
|
||||||
|
TXT_NEED_KEY_STEEL = "You need the STEEL KEY";
|
||||||
|
TXT_NEED_KEY_CAVE = "You need the CAVE KEY";
|
||||||
|
TXT_NEED_KEY_AXE = "You need the AXE KEY";
|
||||||
|
TXT_NEED_KEY_FIRE = "You need the FIRE KEY";
|
||||||
|
TXT_NEED_KEY_EMERALD = "You need the EMERALD KEY";
|
||||||
|
TXT_NEED_KEY_DUNGEON = "You need the DUNGEON KEY";
|
||||||
|
TXT_NEED_KEY_SILVER = "You need the SILVER KEY";
|
||||||
|
TXT_NEED_KEY_RUSTED = "You need the RUSTED KEY";
|
||||||
|
TXT_NEED_KEY_HORN = "You need the HORN KEY";
|
||||||
|
TXT_NEED_KEY_SWAMP = "You need the SWAMP KEY";
|
||||||
|
TXT_NEED_KEY_CASTLE = "You need the CASTLE KEY";
|
||||||
|
|
||||||
// Artifacts
|
// Artifacts
|
||||||
|
|
||||||
TXT_ARTIINVULNERABILITY2 = "ICON OF THE DEFENDER";
|
TXT_ARTIINVULNERABILITY2 = "ICON OF THE DEFENDER";
|
||||||
|
@ -948,6 +970,21 @@ TXT_QUIETUS_PIECE = "SEGMENT OF QUIETUS";
|
||||||
TXT_WRAITHVERGE_PIECE = "SEGMENT OF WRAITHVERGE";
|
TXT_WRAITHVERGE_PIECE = "SEGMENT OF WRAITHVERGE";
|
||||||
TXT_BLOODSCOURGE_PIECE = "SEGMENT OF BLOODSCOURGE";
|
TXT_BLOODSCOURGE_PIECE = "SEGMENT OF BLOODSCOURGE";
|
||||||
|
|
||||||
|
// Strife locks
|
||||||
|
|
||||||
|
TXT_NEEDKEY = "You don't have the key";
|
||||||
|
TXT_NEED_PASSCARD = "You need a passcard";
|
||||||
|
TXT_NEED_PASSCARD_DOOR = "You need a pass card key to open this door";
|
||||||
|
TXT_NEED_IDCARD = "You need an ID card"
|
||||||
|
TXT_NEED_PRISONKEY = "You don't have the key to the prison";
|
||||||
|
TXT_NEED_HANDPRINT = "Hand print not on file";
|
||||||
|
TXT_NEED_GOLDKEY = "You need the Gold Key";
|
||||||
|
TXT_NEED_IDBADGE = "You need an ID Badge";
|
||||||
|
TXT_NEED_IDBADGE_DOOR = "You need an ID Badge to open this door";
|
||||||
|
TXT_NEED_SILVERKEY = "You need the Silver Key";
|
||||||
|
TXT_NEED_BRASSKEY = "You need the Brass Key";
|
||||||
|
TXT_NEED_REDCRYSTAL = "You need the Red Crystal";
|
||||||
|
TXT_NEED_BLUECRYSTAL = "You need the Blue Crystal";
|
||||||
|
|
||||||
// Bloodbath announcer
|
// Bloodbath announcer
|
||||||
|
|
||||||
|
|
|
@ -547,6 +547,14 @@ PD_YELLOWS = "ti serve una chiave-teschio gialla per aprire questa porta";
|
||||||
PD_ANY = "Una chiave qualunque aprira' questa porta";
|
PD_ANY = "Una chiave qualunque aprira' questa porta";
|
||||||
PD_ALL3 = "Ti servono tutte le tre chiavi per aprire questa porta";
|
PD_ALL3 = "Ti servono tutte le tre chiavi per aprire questa porta";
|
||||||
PD_ALL6 = "Ti servono tutte le sei chiavi per aprire questa porta";
|
PD_ALL6 = "Ti servono tutte le sei chiavi per aprire questa porta";
|
||||||
|
PD_ALL3O = "Ti servono tutte le tre chiavi per attivare questo oggetto ";
|
||||||
|
PD_ALL6O = "Ti servono tutte le sei chiavi per attivare questo oggetto ";
|
||||||
|
PD_BLUECO = "ti serve una tessera blu per attivare questo oggetto ";
|
||||||
|
PD_REDCO = "ti serve una tessera rossa per attivare questo oggetto ";
|
||||||
|
PD_YELLOWCO = "ti serve una tessera gialla per attivare questo oggetto ";
|
||||||
|
PD_BLUESO = "ti serve una chiave-teschio blu per attivare questo oggetto ";
|
||||||
|
PD_REDSO = "ti serve una chiave-teschio rossa per attivare questo oggetto ";
|
||||||
|
PD_YELLOWSO = "ti serve una chiave-teschio gialla per attivare questo oggetto ";
|
||||||
|
|
||||||
// Gameflow messages
|
// Gameflow messages
|
||||||
TXT_FRAGLIMIT = "Fraglimit raggiunto.";
|
TXT_FRAGLIMIT = "Fraglimit raggiunto.";
|
||||||
|
|
|
@ -7,7 +7,7 @@ Lock 1 Doom
|
||||||
{
|
{
|
||||||
RedCard
|
RedCard
|
||||||
Message "$PD_REDC"
|
Message "$PD_REDC"
|
||||||
RemoteMessage "You need a red card to activate this object"
|
RemoteMessage "$PD_REDCO"
|
||||||
Mapcolor 255 0 0
|
Mapcolor 255 0 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ Lock 2 Doom
|
||||||
{
|
{
|
||||||
BlueCard
|
BlueCard
|
||||||
Message "$PD_BLUEC"
|
Message "$PD_BLUEC"
|
||||||
RemoteMessage "You need a blue card to activate this object"
|
RemoteMessage "$PD_BLUECO"
|
||||||
Mapcolor 0 0 255
|
Mapcolor 0 0 255
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ Lock 3 Doom
|
||||||
{
|
{
|
||||||
YellowCard
|
YellowCard
|
||||||
Message "$PD_YELLOWC"
|
Message "$PD_YELLOWC"
|
||||||
RemoteMessage "You need a yellow card to activate this object"
|
RemoteMessage "$PD_YELLOWCO"
|
||||||
Mapcolor 255 255 0
|
Mapcolor 255 255 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ Lock 4 Doom
|
||||||
{
|
{
|
||||||
RedSkull
|
RedSkull
|
||||||
Message "$PD_REDS"
|
Message "$PD_REDS"
|
||||||
RemoteMessage "You need a red skull to activate this object"
|
RemoteMessage "$PD_REDSO"
|
||||||
Mapcolor 255 0 0
|
Mapcolor 255 0 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ Lock 5 Doom
|
||||||
{
|
{
|
||||||
BlueSkull
|
BlueSkull
|
||||||
Message "$PD_BLUES"
|
Message "$PD_BLUES"
|
||||||
RemoteMessage "You need a blue skull to activate this object"
|
RemoteMessage "$PD_BLUESO"
|
||||||
Mapcolor 0 0 255
|
Mapcolor 0 0 255
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ Lock 6 Doom
|
||||||
{
|
{
|
||||||
YellowSkull
|
YellowSkull
|
||||||
Message "$PD_YELLOWS"
|
Message "$PD_YELLOWS"
|
||||||
RemoteMessage "You need a yellow skull to activate this object"
|
RemoteMessage "$PD_YELLOWSO"
|
||||||
Mapcolor 255 255 0
|
Mapcolor 255 255 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,15 +112,15 @@ Lock 134 Doom
|
||||||
|
|
||||||
Lock 100
|
Lock 100
|
||||||
{
|
{
|
||||||
Message "Any key will open this door"
|
Message "$PD_ANY"
|
||||||
RemoteMessage "Any key will activate this object"
|
RemoteMessage "$PD_ANYOBJ"
|
||||||
Mapcolor 128 128 255
|
Mapcolor 128 128 255
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 228
|
Lock 228
|
||||||
{
|
{
|
||||||
Message "Any key will open this door"
|
Message "$PD_ANY"
|
||||||
RemoteMessage "Any key will activate this object"
|
RemoteMessage "$PD_ANYOBJ"
|
||||||
Mapcolor 128 128 255
|
Mapcolor 128 128 255
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ Lock 229 Doom
|
||||||
Any { YellowCard YellowSkull KeyYellow}
|
Any { YellowCard YellowSkull KeyYellow}
|
||||||
Any { RedCard RedSkull KeyGreen}
|
Any { RedCard RedSkull KeyGreen}
|
||||||
Message "$PD_ALL3"
|
Message "$PD_ALL3"
|
||||||
RemoteMessage "You need all three keys to activate this object"
|
RemoteMessage "$PD_ALL3O"
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 101 Doom
|
Lock 101 Doom
|
||||||
|
@ -142,7 +142,7 @@ Lock 101 Doom
|
||||||
RedCard
|
RedCard
|
||||||
RedSkull
|
RedSkull
|
||||||
Message "$PD_ALL6"
|
Message "$PD_ALL6"
|
||||||
RemoteMessage "You need all six keys to activate this object"
|
RemoteMessage "$PD_ALL6O"
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -203,7 +203,7 @@ Lock 229 Heretic
|
||||||
KeyYellow
|
KeyYellow
|
||||||
KeyBlue
|
KeyBlue
|
||||||
Message "$PD_ALL3"
|
Message "$PD_ALL3"
|
||||||
RemoteMessage "You need all three keys to activate this object"
|
RemoteMessage "$PD_ALL3O"
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 101 Heretic
|
Lock 101 Heretic
|
||||||
|
@ -212,7 +212,7 @@ Lock 101 Heretic
|
||||||
KeyYellow
|
KeyYellow
|
||||||
KeyBlue
|
KeyBlue
|
||||||
Message "$PD_ALL3"
|
Message "$PD_ALL3"
|
||||||
RemoteMessage "You need all three keys to activate this object"
|
RemoteMessage "$PD_ALL3O"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -223,7 +223,7 @@ Lock 101 Heretic
|
||||||
Lock 1 Hexen
|
Lock 1 Hexen
|
||||||
{
|
{
|
||||||
KeySteel
|
KeySteel
|
||||||
Message "You need the $TXT_KEY_STEEL"
|
Message "$TXT_NEED_KEY_STEEL"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -231,7 +231,7 @@ Lock 1 Hexen
|
||||||
Lock 2 Hexen
|
Lock 2 Hexen
|
||||||
{
|
{
|
||||||
KeyCave
|
KeyCave
|
||||||
Message "You need the $TXT_KEY_CAVE"
|
Message "$TXT_NEED_KEY_CAVE"
|
||||||
Mapcolor 255 218 0
|
Mapcolor 255 218 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -239,7 +239,7 @@ Lock 2 Hexen
|
||||||
Lock 3 Hexen
|
Lock 3 Hexen
|
||||||
{
|
{
|
||||||
KeyAxe
|
KeyAxe
|
||||||
Message "You need the $TXT_KEY_AXE"
|
Message "$TXT_NEED_KEY_AXE"
|
||||||
Mapcolor 64 64 255
|
Mapcolor 64 64 255
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,7 +247,7 @@ Lock 3 Hexen
|
||||||
Lock 4 Hexen
|
Lock 4 Hexen
|
||||||
{
|
{
|
||||||
KeyFire
|
KeyFire
|
||||||
Message "You need the $TXT_KEY_FIRE"
|
Message "$TXT_NEED_KEY_FIRE"
|
||||||
Mapcolor 255 128 0
|
Mapcolor 255 128 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -255,7 +255,7 @@ Lock 4 Hexen
|
||||||
Lock 5 Hexen
|
Lock 5 Hexen
|
||||||
{
|
{
|
||||||
KeyEmerald
|
KeyEmerald
|
||||||
Message "You need the $TXT_KEY_EMERALD"
|
Message "$TXT_NEED_KEY_EMERALD"
|
||||||
Mapcolor 0 255 0
|
Mapcolor 0 255 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -263,7 +263,7 @@ Lock 5 Hexen
|
||||||
Lock 6 Hexen
|
Lock 6 Hexen
|
||||||
{
|
{
|
||||||
KeyDungeon
|
KeyDungeon
|
||||||
Message "You need the $TXT_KEY_DUNGEON"
|
Message "$TXT_NEED_KEY_DUNGEON"
|
||||||
Mapcolor 47 151 255
|
Mapcolor 47 151 255
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -271,7 +271,7 @@ Lock 6 Hexen
|
||||||
Lock 7 Hexen
|
Lock 7 Hexen
|
||||||
{
|
{
|
||||||
KeySilver
|
KeySilver
|
||||||
Message "You need the $TXT_KEY_SILVER"
|
Message "$TXT_NEED_KEY_SILVER"
|
||||||
Mapcolor 154 152 188
|
Mapcolor 154 152 188
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -279,7 +279,7 @@ Lock 7 Hexen
|
||||||
Lock 8 Hexen
|
Lock 8 Hexen
|
||||||
{
|
{
|
||||||
KeyRusted
|
KeyRusted
|
||||||
Message "You need the $TXT_KEY_RUSTED"
|
Message "$TXT_NEED_KEY_RUSTED"
|
||||||
Mapcolor 156 76 0
|
Mapcolor 156 76 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -287,7 +287,7 @@ Lock 8 Hexen
|
||||||
Lock 9 Hexen
|
Lock 9 Hexen
|
||||||
{
|
{
|
||||||
KeyHorn
|
KeyHorn
|
||||||
Message "You need the $TXT_KEY_HORN"
|
Message "$TXT_NEED_KEY_HORN"
|
||||||
Mapcolor 255 218 0
|
Mapcolor 255 218 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -295,7 +295,7 @@ Lock 9 Hexen
|
||||||
Lock 10 Hexen
|
Lock 10 Hexen
|
||||||
{
|
{
|
||||||
KeySwamp
|
KeySwamp
|
||||||
Message "You need the $TXT_KEY_SWAMP"
|
Message "$TXT_NEED_KEY_SWAMP"
|
||||||
Mapcolor 64 255 64
|
Mapcolor 64 255 64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -303,7 +303,7 @@ Lock 10 Hexen
|
||||||
Lock 11 Hexen
|
Lock 11 Hexen
|
||||||
{
|
{
|
||||||
KeyCastle
|
KeyCastle
|
||||||
Message "You need the $TXT_KEY_CASTLE"
|
Message "$TXT_NEED_KEY_CASTLE"
|
||||||
Mapcolor 255 64 64
|
Mapcolor 255 64 64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -321,7 +321,7 @@ Lock 101 Hexen
|
||||||
KeyHorn
|
KeyHorn
|
||||||
KeySwamp
|
KeySwamp
|
||||||
KeyCastle
|
KeyCastle
|
||||||
Message "You need all the keys"
|
Message "$PD_ALLKEYS"
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 229 Hexen
|
Lock 229 Hexen
|
||||||
|
@ -337,7 +337,7 @@ Lock 229 Hexen
|
||||||
KeyHorn
|
KeyHorn
|
||||||
KeySwamp
|
KeySwamp
|
||||||
KeyCastle
|
KeyCastle
|
||||||
Message "You need all the keys"
|
Message "$PD_ALLKEYS"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -354,7 +354,7 @@ Lock 1 Strife
|
||||||
Lock 2 Strife
|
Lock 2 Strife
|
||||||
{
|
{
|
||||||
GovsKey
|
GovsKey
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -362,8 +362,8 @@ Lock 2 Strife
|
||||||
Lock 3 Strife
|
Lock 3 Strife
|
||||||
{
|
{
|
||||||
Passcard
|
Passcard
|
||||||
RemoteMessage "You need a passcard"
|
RemoteMessage "$TXT_NEED_PASSCARD"
|
||||||
Message "You need a pass card key to open this door"
|
Message "$TXT_NEED_PASSCARD_DOOR"
|
||||||
Mapcolor 128 266 150
|
Mapcolor 128 266 150
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -371,7 +371,7 @@ Lock 3 Strife
|
||||||
Lock 4 Strife
|
Lock 4 Strife
|
||||||
{
|
{
|
||||||
IDBadge
|
IDBadge
|
||||||
Message "You need an ID card"
|
Message "$TXT_NEED_IDCARD"
|
||||||
Mapcolor 255 128 0
|
Mapcolor 255 128 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -379,7 +379,7 @@ Lock 4 Strife
|
||||||
Lock 5 Strife
|
Lock 5 Strife
|
||||||
{
|
{
|
||||||
PrisonKey
|
PrisonKey
|
||||||
Message "You don't have the key to the prison"
|
Message "$TXT_NEED_PRISONKEY"
|
||||||
Mapcolor 0 255 0
|
Mapcolor 0 255 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -387,7 +387,7 @@ Lock 5 Strife
|
||||||
Lock 6 Strife
|
Lock 6 Strife
|
||||||
{
|
{
|
||||||
SeveredHand
|
SeveredHand
|
||||||
Message "Hand print not on file"
|
Message "$TXT_NEED_HANDPRINT"
|
||||||
Mapcolor 255 151 100
|
Mapcolor 255 151 100
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -395,7 +395,7 @@ Lock 6 Strife
|
||||||
Lock 7 Strife
|
Lock 7 Strife
|
||||||
{
|
{
|
||||||
Power1Key
|
Power1Key
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -403,7 +403,7 @@ Lock 7 Strife
|
||||||
Lock 8 Strife
|
Lock 8 Strife
|
||||||
{
|
{
|
||||||
Power2Key
|
Power2Key
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -411,7 +411,7 @@ Lock 8 Strife
|
||||||
Lock 9 Strife
|
Lock 9 Strife
|
||||||
{
|
{
|
||||||
Power3Key
|
Power3Key
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -419,7 +419,7 @@ Lock 9 Strife
|
||||||
Lock 10 Strife
|
Lock 10 Strife
|
||||||
{
|
{
|
||||||
GoldKey
|
GoldKey
|
||||||
Message "You need the Gold Key"
|
Message "$TXT_NEED_GOLDKEY"
|
||||||
Mapcolor 255 200 0
|
Mapcolor 255 200 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -427,134 +427,134 @@ Lock 10 Strife
|
||||||
Lock 11 Strife
|
Lock 11 Strife
|
||||||
{
|
{
|
||||||
IDCard
|
IDCard
|
||||||
RemoteMessage "You need an ID badge"
|
RemoteMessage "$TXT_NEED_IDBADGE"
|
||||||
Message "You need an ID badge to open this door"
|
Message "$TXT_NEED_IDBADGE_DOOR"
|
||||||
Mapcolor 200 0 0
|
Mapcolor 200 0 0
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 12 Strife
|
Lock 12 Strife
|
||||||
{
|
{
|
||||||
SilverKey
|
SilverKey
|
||||||
Message "You need a Silver Key"
|
Message "$TXT_NEED_SILVERKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 13 Strife
|
Lock 13 Strife
|
||||||
{
|
{
|
||||||
OracleKey
|
OracleKey
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 14 Strife
|
Lock 14 Strife
|
||||||
{
|
{
|
||||||
MilitaryID
|
MilitaryID
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 15 Strife
|
Lock 15 Strife
|
||||||
{
|
{
|
||||||
OrderKey
|
OrderKey
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 16 Strife
|
Lock 16 Strife
|
||||||
{
|
{
|
||||||
WarehouseKey
|
WarehouseKey
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 17 Strife
|
Lock 17 Strife
|
||||||
{
|
{
|
||||||
BrassKey
|
BrassKey
|
||||||
Message "You need a brass key"
|
Message "$TXT_NEED_BRASSKEY"
|
||||||
Mapcolor 150 75 0
|
Mapcolor 150 75 0
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 18 Strife
|
Lock 18 Strife
|
||||||
{
|
{
|
||||||
RedCrystalKey
|
RedCrystalKey
|
||||||
Message "You need the Red Crystal"
|
Message "$TXT_NEED_REDCRYSTAL"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 19 Strife
|
Lock 19 Strife
|
||||||
{
|
{
|
||||||
BlueCrystalKey
|
BlueCrystalKey
|
||||||
Message "You need the Blue Crystal"
|
Message "$TXT_NEED_BLUECRYSTAL"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 20 Strife
|
Lock 20 Strife
|
||||||
{
|
{
|
||||||
ChapelKey
|
ChapelKey
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 21 Strife
|
Lock 21 Strife
|
||||||
{
|
{
|
||||||
CatacombKey
|
CatacombKey
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 22 Strife
|
Lock 22 Strife
|
||||||
{
|
{
|
||||||
SecurityKey
|
SecurityKey
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 23 Strife
|
Lock 23 Strife
|
||||||
{
|
{
|
||||||
CoreKey
|
CoreKey
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 24 Strife
|
Lock 24 Strife
|
||||||
{
|
{
|
||||||
MaulerKey
|
MaulerKey
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 25 Strife
|
Lock 25 Strife
|
||||||
{
|
{
|
||||||
FactoryKey
|
FactoryKey
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 26 Strife
|
Lock 26 Strife
|
||||||
{
|
{
|
||||||
MineKey
|
MineKey
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 27 Strife
|
Lock 27 Strife
|
||||||
{
|
{
|
||||||
NewKey5
|
NewKey5
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 50 Strife
|
Lock 50 Strife
|
||||||
{
|
{
|
||||||
PrisonPass
|
PrisonPass
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
Lock 51 Strife
|
Lock 51 Strife
|
||||||
{
|
{
|
||||||
OraclePass
|
OraclePass
|
||||||
Message "You don't have the key"
|
Message "$TXT_NEEDKEY"
|
||||||
Mapcolor 150 150 150
|
Mapcolor 150 150 150
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -229,6 +229,26 @@
|
||||||
RelativePath=".\languages\italian.txt">
|
RelativePath=".\languages\italian.txt">
|
||||||
</File>
|
</File>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Decorate"
|
||||||
|
Filter="">
|
||||||
|
<File
|
||||||
|
RelativePath=".\decorate\decorate.txt">
|
||||||
|
</File>
|
||||||
|
<Filter
|
||||||
|
Name="Doom"
|
||||||
|
Filter="">
|
||||||
|
<File
|
||||||
|
RelativePath=".\decorate\doom\doomarmor.txt">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\decorate\doom\doomdecorations.txt">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\decorate\doom\doomkeys.txt">
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
</Filter>
|
||||||
</Filter>
|
</Filter>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\Makefile">
|
RelativePath=".\Makefile">
|
||||||
|
|
|
@ -286,7 +286,7 @@ include "xlat/defines.i"
|
||||||
// should give results equivalent to hardware Legacy rendering.
|
// should give results equivalent to hardware Legacy rendering.
|
||||||
284 = 0, TranslucentLine (lineid, 128, 0)
|
284 = 0, TranslucentLine (lineid, 128, 0)
|
||||||
285 = 0, TranslucentLine (lineid, 192, 0)
|
285 = 0, TranslucentLine (lineid, 192, 0)
|
||||||
286 = 0, TranslucentLine (lineid, 208, 0)
|
286 = 0, TranslucentLine (lineid, 48, 0)
|
||||||
287 = 0, TranslucentLine (lineid, 128, 1)
|
287 = 0, TranslucentLine (lineid, 128, 1)
|
||||||
|
|
||||||
281 = 0, ExtraFloor_LightOnly (tag, 0) // thick extra floor
|
281 = 0, ExtraFloor_LightOnly (tag, 0) // thick extra floor
|
||||||
|
|
|
@ -176,3 +176,15 @@ strfinfo.txt mapinfo/strife.txt
|
||||||
========
|
========
|
||||||
# Strife's helper script
|
# Strife's helper script
|
||||||
acs/strfhelp.o strfhelp.o
|
acs/strfhelp.o strfhelp.o
|
||||||
|
|
||||||
|
|
||||||
|
========
|
||||||
|
# Decorate stuff
|
||||||
|
|
||||||
|
decorate.txt decorate/decorate.txt
|
||||||
|
|
||||||
|
actors/doom/doomarmor.txt decorate/doom/doomarmor.txt
|
||||||
|
actors/doom/doomkeys.txt decorate/doom/doomkeys.txt
|
||||||
|
actors/doom/doomdecorations.txt decorate/doom/doomdecorations.txt
|
||||||
|
|
||||||
|
actors/heretic/hereticdecorations.txt decorate/heretic/hereticdecorations.txt
|
||||||
|
|
60
zdoom.vcproj
60
zdoom.vcproj
|
@ -2901,21 +2901,6 @@
|
||||||
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath=".\src\g_doom\a_doomarmor.cpp">
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win32">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath=".\src\g_doom\a_doomartifacts.cpp">
|
RelativePath=".\src\g_doom\a_doomartifacts.cpp">
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
|
@ -2931,21 +2916,6 @@
|
||||||
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath=".\src\g_doom\a_doomdecorations.cpp">
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win32">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath=".\src\g_doom\a_doomglobal.h">
|
RelativePath=".\src\g_doom\a_doomglobal.h">
|
||||||
</File>
|
</File>
|
||||||
|
@ -2979,21 +2949,6 @@
|
||||||
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath=".\src\g_doom\a_doomkeys.cpp">
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win32">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath=".\src\g_doom\a_doommisc.cpp">
|
RelativePath=".\src\g_doom\a_doommisc.cpp">
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
|
@ -3365,21 +3320,6 @@
|
||||||
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath=".\src\g_heretic\a_hereticdecorations.cpp">
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|Win32">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
AdditionalOptions="" /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" " /I /fmod/api/inc" "/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath=".\src\g_heretic\a_hereticglobal.h">
|
RelativePath=".\src\g_heretic\a_hereticglobal.h">
|
||||||
</File>
|
</File>
|
||||||
|
|
Loading…
Reference in a new issue