- Converted the stealth monsters to DECORATE.
- Added string replacement option to obituary strings. - Changed lock and pickup message handling so that it is either a real string or a LANGUAGE identifier. The only reason I did the mixed format in the first place were Hexen's lock messages but they have been replaced by unique strings in the mean time so the feature isn't needed any more. - Added a flags parameter to TranslucentLine. - Extended the second arg of Line_SetIdentification to set not only ML_ZONEBOUNDARY but all 8 bits of the third byte in the flag word. This allows a relatively simple means of setting all the new flags directly. - Moved ML_ZONEBOUNDARY to doomdata.h so that it is in the same place as the other line flags. - Fixed: Strife's teleport swirl didn't loop its animation. - Fixed: Strife's rat is not supposed to be shootable. SVN r110 (trunk)
This commit is contained in:
parent
e89867489c
commit
01441cd4f0
22 changed files with 173 additions and 217 deletions
|
|
@ -157,20 +157,18 @@ static inline int GET_SPAC (int flags)
|
|||
// [RH] In case I feel like it, here it is...
|
||||
#define ML_3DMIDTEX_ETERNITY 0x0400
|
||||
|
||||
// [RH] Line blocks everything
|
||||
#define ML_BLOCKEVERYTHING 0x8000
|
||||
|
||||
// [RH] Extra flags for Strife compatibility
|
||||
// The first set are as they exist in Strife maps.
|
||||
// The second set are what they get translated into.
|
||||
#define ML_TRANSLUCENT_STRIFE 0x1000
|
||||
#define ML_RAILING_STRIFE 0x0200
|
||||
#define ML_BLOCK_FLOATERS_STRIFE 0x0400
|
||||
|
||||
#define ML_RAILING 0x20000
|
||||
#define ML_BLOCK_FLOATERS 0x40000
|
||||
#define ML_CLIP_MIDTEX 0x80000 // Automatic for every Strife line
|
||||
#define ML_WRAP_MIDTEX 0x100000
|
||||
|
||||
#define ML_BLOCKEVERYTHING 0x00008000 // [RH] Line blocks everything
|
||||
#define ML_ZONEBOUNDARY 0x00010000
|
||||
#define ML_RAILING 0x00020000
|
||||
#define ML_BLOCK_FLOATERS 0x00040000
|
||||
#define ML_CLIP_MIDTEX 0x00080000 // Automatic for every Strife line
|
||||
#define ML_WRAP_MIDTEX 0x00100000
|
||||
|
||||
// Sector definition, from editing
|
||||
typedef struct
|
||||
|
|
|
|||
|
|
@ -94,19 +94,6 @@ IMPLEMENT_ACTOR (AArachnotron, Doom, 68, 6)
|
|||
PROP_ActiveSound ("baby/active")
|
||||
END_DEFAULTS
|
||||
|
||||
class AStealthArachnotron : public AArachnotron
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (AStealthArachnotron, AArachnotron)
|
||||
public:
|
||||
const char *GetObituary () { return GStrings("OB_STEALTHBABY"); }
|
||||
};
|
||||
|
||||
IMPLEMENT_STATELESS_ACTOR (AStealthArachnotron, Doom, 9050, 117)
|
||||
PROP_FlagsSet (MF_STEALTH)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (0)
|
||||
END_DEFAULTS
|
||||
|
||||
class AArachnotronPlasma : public APlasmaBall
|
||||
{
|
||||
DECLARE_ACTOR (AArachnotronPlasma, APlasmaBall)
|
||||
|
|
|
|||
|
|
@ -99,19 +99,6 @@ const char *AArchvile::GetObituary ()
|
|||
return GStrings("OB_VILE");
|
||||
}
|
||||
|
||||
class AStealthArchvile : public AArchvile
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (AStealthArchvile, AArchvile)
|
||||
public:
|
||||
const char *GetObituary () { return GStrings("OB_STEALTHVILE"); }
|
||||
};
|
||||
|
||||
IMPLEMENT_STATELESS_ACTOR (AStealthArchvile, Doom, 9051, 118)
|
||||
PROP_FlagsSet (MF_STEALTH)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (0)
|
||||
END_DEFAULTS
|
||||
|
||||
class AArchvileFire : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AArchvileFire, AActor)
|
||||
|
|
|
|||
|
|
@ -89,20 +89,6 @@ IMPLEMENT_ACTOR (ABaronOfHell, Doom, 3003, 3)
|
|||
PROP_ActiveSound ("baron/active")
|
||||
END_DEFAULTS
|
||||
|
||||
class AStealthBaron : public ABaronOfHell
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (AStealthBaron, ABaronOfHell)
|
||||
public:
|
||||
const char *GetObituary () { return GStrings("OB_STEALTHBARON"); }
|
||||
const char *GetHitObituary () { return GStrings("OB_STEALTHBARON"); }
|
||||
};
|
||||
|
||||
IMPLEMENT_STATELESS_ACTOR (AStealthBaron, Doom, 9052, 100)
|
||||
PROP_FlagsSet (MF_STEALTH)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (0)
|
||||
END_DEFAULTS
|
||||
|
||||
class ABaronBall : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (ABaronBall, AActor)
|
||||
|
|
@ -219,20 +205,6 @@ IMPLEMENT_ACTOR (AHellKnight, Doom, 69, 113)
|
|||
PROP_ActiveSound ("knight/active")
|
||||
END_DEFAULTS
|
||||
|
||||
class AStealthHellKnight : public AHellKnight
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (AStealthHellKnight, AHellKnight)
|
||||
public:
|
||||
const char *GetObituary () { return GStrings("OB_STEALTHKNIGHT"); }
|
||||
const char *GetHitObituary () { return GStrings("OB_STEALTHKNIGHT"); }
|
||||
};
|
||||
|
||||
IMPLEMENT_STATELESS_ACTOR (AStealthHellKnight, Doom, 9056, 101)
|
||||
PROP_FlagsSet (MF_STEALTH)
|
||||
PROP_Alpha (0)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
END_DEFAULTS
|
||||
|
||||
void A_BruisAttack (AActor *self)
|
||||
{
|
||||
if (!self->target)
|
||||
|
|
|
|||
|
|
@ -78,20 +78,6 @@ IMPLEMENT_ACTOR (ACacodemon, Doom, 3005, 19)
|
|||
PROP_AttackSound ("caco/melee")
|
||||
END_DEFAULTS
|
||||
|
||||
class AStealthCacodemon : public ACacodemon
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (AStealthCacodemon, ACacodemon)
|
||||
public:
|
||||
const char *GetObituary () { return GStrings("OB_STEALTHCACO"); }
|
||||
const char *GetHitObituary () { return GStrings("OB_STEALTHCACO"); }
|
||||
};
|
||||
|
||||
IMPLEMENT_STATELESS_ACTOR (AStealthCacodemon, Doom, 9053, 119)
|
||||
PROP_FlagsSet (MF_STEALTH)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (0)
|
||||
END_DEFAULTS
|
||||
|
||||
class ACacodemonBall : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (ACacodemonBall, AActor)
|
||||
|
|
|
|||
|
|
@ -84,20 +84,6 @@ IMPLEMENT_ACTOR (ADemon, Doom, 3002, 8)
|
|||
PROP_ActiveSound ("demon/active")
|
||||
END_DEFAULTS
|
||||
|
||||
class AStealthDemon : public ADemon
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (AStealthDemon, ADemon)
|
||||
public:
|
||||
const char *GetObituary () { return GStrings("OB_STEALTHDEMON"); }
|
||||
const char *GetHitObituary () { return GStrings("OB_STEALTHDEMON"); }
|
||||
};
|
||||
|
||||
IMPLEMENT_STATELESS_ACTOR (AStealthDemon, Doom, 9055, 121)
|
||||
PROP_FlagsSet (MF_STEALTH)
|
||||
PROP_Alpha (0)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
END_DEFAULTS
|
||||
|
||||
class ASpectre : public ADemon
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (ASpectre, ADemon)
|
||||
|
|
|
|||
|
|
@ -94,20 +94,6 @@ IMPLEMENT_ACTOR (ADoomImp, Doom, 3001, 5)
|
|||
PROP_ActiveSound ("imp/active")
|
||||
END_DEFAULTS
|
||||
|
||||
class AStealthDoomImp : public ADoomImp
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (AStealthDoomImp, ADoomImp)
|
||||
public:
|
||||
const char *GetObituary () { return GStrings("OB_STEALTHIMP"); }
|
||||
const char *GetHitObituary () { return GStrings("OB_STEALTHIMP"); }
|
||||
};
|
||||
|
||||
IMPLEMENT_STATELESS_ACTOR (AStealthDoomImp, Doom, 9057, 122)
|
||||
PROP_FlagsSet (MF_STEALTH)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (0)
|
||||
END_DEFAULTS
|
||||
|
||||
class ADoomImpBall : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (ADoomImpBall, AActor)
|
||||
|
|
|
|||
|
|
@ -103,19 +103,6 @@ IMPLEMENT_ACTOR (AFatso, Doom, 67, 112)
|
|||
PROP_ActiveSound ("fatso/active")
|
||||
END_DEFAULTS
|
||||
|
||||
class AStealthFatso : public AFatso
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (AStealthFatso, AFatso)
|
||||
public:
|
||||
const char *GetObituary () { return GStrings("OB_STEALTHFATSO"); }
|
||||
};
|
||||
|
||||
IMPLEMENT_STATELESS_ACTOR (AStealthFatso, Doom, 9058, 123)
|
||||
PROP_FlagsSet (MF_STEALTH)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (0)
|
||||
END_DEFAULTS
|
||||
|
||||
class AFatShot : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (AFatShot, AActor)
|
||||
|
|
|
|||
|
|
@ -108,19 +108,6 @@ void AZombieMan::NoBlockingSet ()
|
|||
P_DropItem (this, "Clip", -1, 256);
|
||||
}
|
||||
|
||||
class AStealthZombieMan : public AZombieMan
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (AStealthZombieMan, AZombieMan)
|
||||
public:
|
||||
const char *GetObituary () { return GStrings("OB_STEALTHZOMBIE"); }
|
||||
};
|
||||
|
||||
IMPLEMENT_STATELESS_ACTOR (AStealthZombieMan, Doom, 9061, 102)
|
||||
PROP_FlagsSet (MF_STEALTH)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (0)
|
||||
END_DEFAULTS
|
||||
|
||||
//
|
||||
// A_PosAttack
|
||||
//
|
||||
|
|
@ -235,19 +222,6 @@ void AShotgunGuy::NoBlockingSet ()
|
|||
P_DropItem (this, "Shotgun", -1, 256);
|
||||
}
|
||||
|
||||
class AStealthShotgunGuy : public AShotgunGuy
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (AStealthShotgunGuy, AShotgunGuy)
|
||||
public:
|
||||
const char *GetObituary () { return GStrings("OB_STEALTHSHOTGUY"); }
|
||||
};
|
||||
|
||||
IMPLEMENT_STATELESS_ACTOR (AStealthShotgunGuy, Doom, 9060, 103)
|
||||
PROP_FlagsSet (MF_STEALTH)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (0)
|
||||
END_DEFAULTS
|
||||
|
||||
static void A_SPosAttack2 (AActor *self)
|
||||
{
|
||||
int i;
|
||||
|
|
@ -379,19 +353,6 @@ void AChaingunGuy::NoBlockingSet ()
|
|||
P_DropItem (this, "Chaingun", -1, 256);
|
||||
}
|
||||
|
||||
class AStealthChaingunGuy : public AChaingunGuy
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (AStealthChaingunGuy, AChaingunGuy)
|
||||
public:
|
||||
const char *GetObituary () { return GStrings("OB_STEALTHCHAINGUY"); }
|
||||
};
|
||||
|
||||
IMPLEMENT_STATELESS_ACTOR (AStealthChaingunGuy, Doom, 9054, 120)
|
||||
PROP_FlagsSet (MF_STEALTH)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (0)
|
||||
END_DEFAULTS
|
||||
|
||||
// Wolfenstein SS ----------------------------------------------------------
|
||||
|
||||
class AWolfensteinSS : public AActor
|
||||
|
|
|
|||
|
|
@ -104,20 +104,6 @@ IMPLEMENT_ACTOR (ARevenant, Doom, 66, 20)
|
|||
END_DEFAULTS
|
||||
|
||||
|
||||
class AStealthRevenant : public ARevenant
|
||||
{
|
||||
DECLARE_STATELESS_ACTOR (AStealthRevenant, ARevenant)
|
||||
public:
|
||||
const char *GetObituary () { return GStrings("OB_STEALTHUNDEAD"); }
|
||||
const char *GetHitObituary () { return GStrings("OB_STEALTHUNDEAD"); }
|
||||
};
|
||||
|
||||
IMPLEMENT_STATELESS_ACTOR (AStealthRevenant, Doom, 9059, 124)
|
||||
PROP_FlagsSet (MF_STEALTH)
|
||||
PROP_RenderStyle (STYLE_Translucent)
|
||||
PROP_Alpha (0)
|
||||
END_DEFAULTS
|
||||
|
||||
class ARevenantTracer : public AActor
|
||||
{
|
||||
DECLARE_ACTOR (ARevenantTracer, AActor)
|
||||
|
|
|
|||
|
|
@ -177,25 +177,9 @@ static void PrintMessage (const char *str)
|
|||
{
|
||||
if (str != NULL)
|
||||
{
|
||||
FString temp;
|
||||
|
||||
if (strchr (str, '$'))
|
||||
if (str[0]=='$')
|
||||
{
|
||||
// The message or part of it is from the LANGUAGE lump
|
||||
FString name;
|
||||
|
||||
size_t part1 = strcspn (str, "$");
|
||||
temp = FString(str, part1);
|
||||
|
||||
size_t part2 = strcspn (str + part1 + 1, "$");
|
||||
name = FString(str + part1 + 1, part2);
|
||||
|
||||
temp += GStrings(name.GetChars());
|
||||
if (str[part1 + 1 + part2] == '$')
|
||||
{
|
||||
temp += str + part1 + part2 + 2;
|
||||
}
|
||||
str = temp.GetChars();
|
||||
str=GStrings(str+1);
|
||||
}
|
||||
C_MidPrint (str);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -824,25 +824,9 @@ static void PrintPickupMessage (const char *str)
|
|||
{
|
||||
if (str != NULL)
|
||||
{
|
||||
FString temp;
|
||||
|
||||
if (strchr (str, '$'))
|
||||
if (str[0]=='$')
|
||||
{
|
||||
// The message or part of it is from the LANGUAGE lump
|
||||
FString name;
|
||||
|
||||
size_t part1 = strcspn (str, "$");
|
||||
temp = FString(str, part1);
|
||||
|
||||
size_t part2 = strcspn (str + part1 + 1, "$");
|
||||
name = FString(str + part1 + 1, part2);
|
||||
|
||||
temp += GStrings(name.GetChars());
|
||||
if (str[part1 + 1 + part2] == '$')
|
||||
{
|
||||
temp += str + part1 + part2 + 2;
|
||||
}
|
||||
str = temp.GetChars();
|
||||
str=GStrings(str+1);
|
||||
}
|
||||
Printf (PRINT_LOW, "%s\n", str);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -126,6 +126,11 @@ void SexMessage (const char *from, char *to, int gender, const char *victim, con
|
|||
};
|
||||
const char *subst = NULL;
|
||||
|
||||
if (from[0]=='$')
|
||||
{
|
||||
from=GStrings(from+1);
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
if (*from != '%')
|
||||
|
|
|
|||
|
|
@ -1290,21 +1290,22 @@ void P_AdjustLine (line_t *ld)
|
|||
}
|
||||
|
||||
// [RH] Set line id (as appropriate) here
|
||||
// for Doom format maps this must be done in P_TranslateLinedef because
|
||||
// the tag doesn't always go into the first arg!
|
||||
// for Doom format maps this must be done in P_TranslateLineDef because
|
||||
// the tag doesn't always go into the first arg.
|
||||
if (HasBehavior)
|
||||
{
|
||||
if (ld->special == Line_SetIdentification)
|
||||
{
|
||||
ld->id = ld->args[0];
|
||||
if (ld->args[1] == 1)
|
||||
{
|
||||
ld->flags |= ML_ZONEBOUNDARY;
|
||||
}
|
||||
ld->flags |= ld->args[1]<<16;
|
||||
}
|
||||
else if (ld->special == TranslucentLine)
|
||||
{
|
||||
ld->id = ld->args[0];
|
||||
ld->flags |= ld->args[3]<<16;
|
||||
}
|
||||
else if (
|
||||
ld->special == Teleport_Line ||
|
||||
ld->special == TranslucentLine ||
|
||||
ld->special == Scroll_Texture_Model)
|
||||
{
|
||||
ld->id = ld->args[0];
|
||||
|
|
|
|||
|
|
@ -419,7 +419,6 @@ enum slopetype_t
|
|||
ST_NEGATIVE
|
||||
};
|
||||
|
||||
#define ML_ZONEBOUNDARY 0x00010000
|
||||
|
||||
struct line_s
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue