SVN r25 (trunk)

This commit is contained in:
Christoph Oelckers 2006-04-10 21:54:50 +00:00
parent d1770a7c2e
commit cd3cebf340
31 changed files with 962 additions and 40 deletions

View file

@ -1,3 +1,33 @@
April 10, 2006 (Changes by Graf Zahl)
- Made the IronLich's projectiles bright. Using them in non-bright state
in dark sectors looks truly odd.
- Fixed: Using bot_observer cleared the FRIENDLY flag off the player.
- Fixed: Changed some decals from DecalScorch to DecalScorchLower.
- Fixed: Added the missing intermission lumps and LOCKDEFS to zdoom.wad
- Changed the damage formula for Strife's dagger. This change has already
been added to the 2.1.0 source but not to the current version.
- Added a call to P_HitFriend to A_SentinelRefire to prevent it from shooting
at friends.
- Fixed: The Inquisitor's grenades should not teleport.
- Fixed: The Inquisitor isn't supposed to be thrust by damage so its mass
has to be increased.
- Fixed: Strife's Inquisitor can be hurt by radius damage as long as this
damage comes from a non-Inquisitor.
- Fixed: AArtiDarkServant::Use must always report successful use of the item.
This function cannot fail. It either spawns a Minotaur or a new artifact
but never nothing at all.
- Fixed: Hexen's temp flames have two spawn IDs each. Since ZDoom doesn't
support multiple spawn IDs per item I added copies of these objects
to assign the second set od IDs.
- Fixed: Hexen's wall torch was missing the MF4_FIXMAPTHINGPOS flag.
- Fixed: A_CStaffCheckBlink must call A_WeaponReady because otherwise the
weapon bobbing becomes slightly erratic.
- Fixed: AGoldWandPuff2 had incorrect values set for flags2.
- Clamped the vertical speed of Heretic's Mace's balls. When shot at a high
vertical angle their movement becomes erratic.
- Fixed: Doom's corpses must clear the MF3_ISMONSTER flag inherited from
their monster parents.
April 9, 2006 April 9, 2006
- Fixed: The strupr() implementation in w_wad.cpp relied on compiler-dependant - Fixed: The strupr() implementation in w_wad.cpp relied on compiler-dependant
behavior. behavior.

View file

@ -138,7 +138,7 @@ void DCajunMaster::Main (int buf)
Printf ("%s is now observer\n", players[consoleplayer].userinfo.netname); Printf ("%s is now observer\n", players[consoleplayer].userinfo.netname);
observer = true; observer = true;
players[consoleplayer].mo->UnlinkFromWorld (); players[consoleplayer].mo->UnlinkFromWorld ();
players[consoleplayer].mo->flags = MF_DROPOFF|MF_NOBLOCKMAP|MF_NOCLIP|MF_NOTDMATCH|MF_NOGRAVITY; players[consoleplayer].mo->flags = MF_DROPOFF|MF_NOBLOCKMAP|MF_NOCLIP|MF_NOTDMATCH|MF_NOGRAVITY|MF_FRIENDLY;
players[consoleplayer].mo->flags2 |= MF2_FLY; players[consoleplayer].mo->flags2 |= MF2_FLY;
players[consoleplayer].mo->LinkToWorld (); players[consoleplayer].mo->LinkToWorld ();
} }
@ -147,7 +147,7 @@ void DCajunMaster::Main (int buf)
Printf ("%s returned to the fray\n", players[consoleplayer].userinfo.netname); Printf ("%s returned to the fray\n", players[consoleplayer].userinfo.netname);
observer = false; observer = false;
players[consoleplayer].mo->UnlinkFromWorld (); players[consoleplayer].mo->UnlinkFromWorld ();
players[consoleplayer].mo->flags = MF_SOLID|MF_SHOOTABLE|MF_DROPOFF|MF_PICKUP|MF_NOTDMATCH; players[consoleplayer].mo->flags = MF_SOLID|MF_SHOOTABLE|MF_DROPOFF|MF_PICKUP|MF_NOTDMATCH|MF_FRIENDLY;
players[consoleplayer].mo->flags2 &= ~MF2_FLY; players[consoleplayer].mo->flags2 &= ~MF2_FLY;
players[consoleplayer].mo->LinkToWorld (); players[consoleplayer].mo->LinkToWorld ();
} }

View file

@ -169,6 +169,7 @@ IMPLEMENT_STATELESS_ACTOR (ADeadCacodemon, Doom, 22, 0)
PROP_PainChance (0) PROP_PainChance (0)
PROP_Flags (0) PROP_Flags (0)
PROP_Flags2 (0) PROP_Flags2 (0)
PROP_Flags3 (0)
PROP_SeeState (255) PROP_SeeState (255)
PROP_PainState (255) PROP_PainState (255)
PROP_MissileState (255) PROP_MissileState (255)

View file

@ -175,6 +175,7 @@ IMPLEMENT_STATELESS_ACTOR (ADeadDemon, Doom, 21, 0)
PROP_PainChance (0) PROP_PainChance (0)
PROP_Flags (0) PROP_Flags (0)
PROP_Flags2 (0) PROP_Flags2 (0)
PROP_Flags3 (0)
PROP_SeeState (255) PROP_SeeState (255)
PROP_PainState (255) PROP_PainState (255)
PROP_MissileState (255) PROP_MissileState (255)

View file

@ -188,6 +188,7 @@ IMPLEMENT_STATELESS_ACTOR (ADeadDoomImp, Doom, 20, 0)
PROP_PainChance (0) PROP_PainChance (0)
PROP_Flags (0) PROP_Flags (0)
PROP_Flags2 (0) PROP_Flags2 (0)
PROP_Flags3 (0)
PROP_SeeState (255) PROP_SeeState (255)
PROP_PainState (255) PROP_PainState (255)
PROP_MissileState (255) PROP_MissileState (255)

View file

@ -130,6 +130,7 @@ IMPLEMENT_STATELESS_ACTOR (ADeadLostSoul, Doom, 23, 0)
PROP_PainChance (0) PROP_PainChance (0)
PROP_Flags (0) PROP_Flags (0)
PROP_Flags2 (0) PROP_Flags2 (0)
PROP_Flags3 (0)
PROP_Flags4 (0) PROP_Flags4 (0)
PROP_RenderStyle (STYLE_Normal) PROP_RenderStyle (STYLE_Normal)
PROP_SeeState (255) PROP_SeeState (255)

View file

@ -164,6 +164,7 @@ IMPLEMENT_STATELESS_ACTOR (ADeadZombieMan, Doom, 18, 0)
PROP_PainChance (0) PROP_PainChance (0)
PROP_Flags (0) PROP_Flags (0)
PROP_Flags2 (0) PROP_Flags2 (0)
PROP_Flags3 (0)
PROP_SeeState (255) PROP_SeeState (255)
PROP_PainState (255) PROP_PainState (255)
PROP_MissileState (255) PROP_MissileState (255)
@ -341,6 +342,7 @@ IMPLEMENT_STATELESS_ACTOR (ADeadShotgunGuy, Doom, 19, 0)
PROP_PainChance (0) PROP_PainChance (0)
PROP_Flags (0) PROP_Flags (0)
PROP_Flags2 (0) PROP_Flags2 (0)
PROP_Flags3 (0)
PROP_SeeState (255) PROP_SeeState (255)
PROP_PainState (255) PROP_PainState (255)
PROP_MissileState (255) PROP_MissileState (255)

View file

@ -483,6 +483,7 @@ class AGoldWandPuff2 : public AGoldWandFX1
}; };
IMPLEMENT_STATELESS_ACTOR (AGoldWandPuff2, Heretic, -1, 0) IMPLEMENT_STATELESS_ACTOR (AGoldWandPuff2, Heretic, -1, 0)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
PROP_SpawnState (S_GWANDFXI1) PROP_SpawnState (S_GWANDFXI1)
END_DEFAULTS END_DEFAULTS
@ -1527,7 +1528,7 @@ void A_FireMacePL2 (AActor *actor)
mo->momx += player->mo->momx; mo->momx += player->mo->momx;
mo->momy += player->mo->momy; mo->momy += player->mo->momy;
mo->momz = 2*FRACUNIT+ mo->momz = 2*FRACUNIT+
finetangent[FINEANGLES/4-(player->mo->pitch>>ANGLETOFINESHIFT)]; clamp<fixed_t>(finetangent[FINEANGLES/4-(player->mo->pitch>>ANGLETOFINESHIFT)], -5*FRACUNIT, 5*FRACUNIT);
if (linetarget) if (linetarget)
{ {
mo->tracer = linetarget; mo->tracer = linetarget;

View file

@ -104,15 +104,15 @@ class AHeadFX1 : public AActor
FState AHeadFX1::States[] = FState AHeadFX1::States[] =
{ {
#define S_HEADFX1 0 #define S_HEADFX1 0
S_NORMAL (FX05, 'A', 6, NULL , &States[S_HEADFX1+1]), S_BRIGHT (FX05, 'A', 6, NULL , &States[S_HEADFX1+1]),
S_NORMAL (FX05, 'B', 6, NULL , &States[S_HEADFX1+2]), S_BRIGHT (FX05, 'B', 6, NULL , &States[S_HEADFX1+2]),
S_NORMAL (FX05, 'C', 6, NULL , &States[S_HEADFX1+0]), S_BRIGHT (FX05, 'C', 6, NULL , &States[S_HEADFX1+0]),
#define S_HEADFXI1 (S_HEADFX1+3) #define S_HEADFXI1 (S_HEADFX1+3)
S_NORMAL (FX05, 'D', 5, A_LichIceImpact , &States[S_HEADFXI1+1]), S_BRIGHT (FX05, 'D', 5, A_LichIceImpact , &States[S_HEADFXI1+1]),
S_NORMAL (FX05, 'E', 5, NULL , &States[S_HEADFXI1+2]), S_BRIGHT (FX05, 'E', 5, NULL , &States[S_HEADFXI1+2]),
S_NORMAL (FX05, 'F', 5, NULL , &States[S_HEADFXI1+3]), S_BRIGHT (FX05, 'F', 5, NULL , &States[S_HEADFXI1+3]),
S_NORMAL (FX05, 'G', 5, NULL , NULL) S_BRIGHT (FX05, 'G', 5, NULL , NULL)
}; };
IMPLEMENT_ACTOR (AHeadFX1, Heretic, -1, 164) IMPLEMENT_ACTOR (AHeadFX1, Heretic, -1, 164)
@ -142,15 +142,15 @@ class AHeadFX2 : public AActor
FState AHeadFX2::States[] = FState AHeadFX2::States[] =
{ {
#define S_HEADFX2 0 #define S_HEADFX2 0
S_NORMAL (FX05, 'H', 6, NULL , &States[S_HEADFX2+1]), S_BRIGHT (FX05, 'H', 6, NULL , &States[S_HEADFX2+1]),
S_NORMAL (FX05, 'I', 6, NULL , &States[S_HEADFX2+2]), S_BRIGHT (FX05, 'I', 6, NULL , &States[S_HEADFX2+2]),
S_NORMAL (FX05, 'J', 6, NULL , &States[S_HEADFX2+0]), S_BRIGHT (FX05, 'J', 6, NULL , &States[S_HEADFX2+0]),
#define S_HEADFXI2 (S_HEADFX2+3) #define S_HEADFXI2 (S_HEADFX2+3)
S_NORMAL (FX05, 'D', 5, NULL , &States[S_HEADFXI2+1]), S_BRIGHT (FX05, 'D', 5, NULL , &States[S_HEADFXI2+1]),
S_NORMAL (FX05, 'E', 5, NULL , &States[S_HEADFXI2+2]), S_BRIGHT (FX05, 'E', 5, NULL , &States[S_HEADFXI2+2]),
S_NORMAL (FX05, 'F', 5, NULL , &States[S_HEADFXI2+3]), S_BRIGHT (FX05, 'F', 5, NULL , &States[S_HEADFXI2+3]),
S_NORMAL (FX05, 'G', 5, NULL , NULL) S_BRIGHT (FX05, 'G', 5, NULL , NULL)
}; };
IMPLEMENT_ACTOR (AHeadFX2, Heretic, -1, 0) IMPLEMENT_ACTOR (AHeadFX2, Heretic, -1, 0)
@ -175,18 +175,18 @@ class AHeadFX3 : public AActor
FState AHeadFX3::States[] = FState AHeadFX3::States[] =
{ {
#define S_HEADFX3 0 #define S_HEADFX3 0
S_NORMAL (FX06, 'A', 4, A_LichFireGrow , &States[S_HEADFX3+1]), S_BRIGHT (FX06, 'A', 4, A_LichFireGrow , &States[S_HEADFX3+1]),
S_NORMAL (FX06, 'B', 4, A_LichFireGrow , &States[S_HEADFX3+2]), S_BRIGHT (FX06, 'B', 4, A_LichFireGrow , &States[S_HEADFX3+2]),
S_NORMAL (FX06, 'C', 4, A_LichFireGrow , &States[S_HEADFX3+0]), S_BRIGHT (FX06, 'C', 4, A_LichFireGrow , &States[S_HEADFX3+0]),
S_NORMAL (FX06, 'A', 5, NULL , &States[S_HEADFX3+4]), S_BRIGHT (FX06, 'A', 5, NULL , &States[S_HEADFX3+4]),
S_NORMAL (FX06, 'B', 5, NULL , &States[S_HEADFX3+5]), S_BRIGHT (FX06, 'B', 5, NULL , &States[S_HEADFX3+5]),
S_NORMAL (FX06, 'C', 5, NULL , &States[S_HEADFX3+3]), S_BRIGHT (FX06, 'C', 5, NULL , &States[S_HEADFX3+3]),
#define S_HEADFXI3 (S_HEADFX3+6) #define S_HEADFXI3 (S_HEADFX3+6)
S_NORMAL (FX06, 'D', 5, NULL , &States[S_HEADFXI3+1]), S_BRIGHT (FX06, 'D', 5, NULL , &States[S_HEADFXI3+1]),
S_NORMAL (FX06, 'E', 5, NULL , &States[S_HEADFXI3+2]), S_BRIGHT (FX06, 'E', 5, NULL , &States[S_HEADFXI3+2]),
S_NORMAL (FX06, 'F', 5, NULL , &States[S_HEADFXI3+3]), S_BRIGHT (FX06, 'F', 5, NULL , &States[S_HEADFXI3+3]),
S_NORMAL (FX06, 'G', 5, NULL , NULL) S_BRIGHT (FX06, 'G', 5, NULL , NULL)
}; };
IMPLEMENT_ACTOR (AHeadFX3, Heretic, -1, 0) IMPLEMENT_ACTOR (AHeadFX3, Heretic, -1, 0)

View file

@ -330,4 +330,8 @@ void A_CStaffCheckBlink (AActor *actor)
P_SetPsprite (actor->player, ps_weapon, &ACWeapStaff::States[S_CSTAFFBLINK]); P_SetPsprite (actor->player, ps_weapon, &ACWeapStaff::States[S_CSTAFFBLINK]);
actor->special1 = (pr_blink()+50)>>2; actor->special1 = (pr_blink()+50)>>2;
} }
else
{
A_WeaponReady (actor);
}
} }

View file

@ -75,7 +75,7 @@ IMPLEMENT_ACTOR (ADragon, Hexen, 254, 0)
PROP_MassLong (0x7fffffff) PROP_MassLong (0x7fffffff)
PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOGRAVITY|MF_FLOAT|MF_NOBLOOD|MF_COUNTKILL) PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOGRAVITY|MF_FLOAT|MF_NOBLOOD|MF_COUNTKILL)
PROP_Flags2 (MF2_PASSMOBJ|MF2_BOSS) PROP_Flags2 (MF2_PASSMOBJ|MF2_BOSS)
PROP_Flags3 (MF3_DONTMORPH) PROP_Flags3 (MF3_DONTMORPH|MF3_NOTARGET)
PROP_Flags4 (MF4_NOICEDEATH) PROP_Flags4 (MF4_NOICEDEATH)
PROP_SpawnState (S_DRAGON_LOOK1) PROP_SpawnState (S_DRAGON_LOOK1)

View file

@ -181,3 +181,27 @@ void A_FlameCheck (AActor *actor)
actor->Destroy (); actor->Destroy ();
} }
} }
//===========================================================================
//
// Hexen uses 2 different spawn IDs for these actors
//
//===========================================================================
class AFlameSmall2 : public AFlameSmall
{
DECLARE_ACTOR (AFlameSmall2, AFlameSmall)
};
IMPLEMENT_STATELESS_ACTOR (AFlameSmall2, Hexen, -1, 66)
END_DEFAULTS
class AFlameLarge2 : public AFlameLarge
{
DECLARE_ACTOR (AFlameLarge2, AFlameLarge)
};
IMPLEMENT_STATELESS_ACTOR (AFlameLarge2, Hexen, -1, 67)
END_DEFAULTS

View file

@ -132,7 +132,7 @@ IMPLEMENT_ACTOR (AHeresiarch, Hexen, 10080, 0)
PROP_Damage (9) PROP_Damage (9)
PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD|MF_COUNTKILL) PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD|MF_COUNTKILL)
PROP_Flags2 (MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_BOSS|MF2_PUSHWALL|MF2_MCROSS) PROP_Flags2 (MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_BOSS|MF2_PUSHWALL|MF2_MCROSS)
PROP_Flags3 (MF3_DONTMORPH) PROP_Flags3 (MF3_DONTMORPH|MF3_NOTARGET)
PROP_Flags4 (MF4_NOICEDEATH|MF4_DEFLECT) PROP_Flags4 (MF4_NOICEDEATH|MF4_DEFLECT)
PROP_SpawnState (S_SORC_SPAWN1) PROP_SpawnState (S_SORC_SPAWN1)

View file

@ -777,6 +777,7 @@ FState AZWallTorch::States[] =
IMPLEMENT_ACTOR (AZWallTorch, Hexen, 54, 0) IMPLEMENT_ACTOR (AZWallTorch, Hexen, 54, 0)
PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY) PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY)
PROP_Flags4 (MF4_FIXMAPTHINGPOS)
PROP_SpawnState (S_ZWALLTORCH) PROP_SpawnState (S_ZWALLTORCH)
PROP_SeeState (S_ZWALLTORCH) PROP_SeeState (S_ZWALLTORCH)

View file

@ -156,7 +156,7 @@ IMPLEMENT_ACTOR (AKorax, Hexen, 10200, 0)
PROP_Damage (15) PROP_Damage (15)
PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL) PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL)
PROP_Flags2 (MF2_FLOORCLIP|MF2_BOSS|MF2_TELESTOMP|MF2_PUSHWALL|MF2_MCROSS) PROP_Flags2 (MF2_FLOORCLIP|MF2_BOSS|MF2_TELESTOMP|MF2_PUSHWALL|MF2_MCROSS)
PROP_Flags3 (MF3_DONTMORPH) PROP_Flags3 (MF3_DONTMORPH|MF3_NOTARGET)
PROP_Flags4 (MF4_NOICEDEATH) PROP_Flags4 (MF4_NOICEDEATH)
PROP_SpawnState (S_KORAX_LOOK1) PROP_SpawnState (S_KORAX_LOOK1)

View file

@ -120,9 +120,8 @@ bool AArtiDarkServant::Use (bool pickup)
mo->target = Owner; mo->target = Owner;
mo->tracer = Owner; mo->tracer = Owner;
mo->momz = 5*FRACUNIT; mo->momz = 5*FRACUNIT;
return true;
} }
return false; return true;
} }
//============================================================================ //============================================================================

View file

@ -97,9 +97,11 @@ IMPLEMENT_ACTOR (AInquisitor, Strife, 16, 0)
PROP_SpeedFixed (12) PROP_SpeedFixed (12)
PROP_RadiusFixed (40) PROP_RadiusFixed (40)
PROP_HeightFixed (110) PROP_HeightFixed (110)
PROP_MassLong(0x7fffffff)
PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_DROPOFF|MF_NOBLOOD|MF_COUNTKILL) PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_DROPOFF|MF_NOBLOOD|MF_COUNTKILL)
PROP_Flags2 (MF2_BOSS|MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_MCROSS) PROP_Flags2 (MF2_BOSS|MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_MCROSS)
PROP_Flags3 (MF3_NORADIUSDMG|MF3_DONTMORPH) PROP_Flags3 (MF3_DONTMORPH)
PROP_Flags4 (MF4_DONTHURTSPECIES)
PROP_MaxDropOffHeight (32) PROP_MaxDropOffHeight (32)
PROP_MinMissileChance (150) PROP_MinMissileChance (150)
PROP_SeeSound ("inquisitor/sight") PROP_SeeSound ("inquisitor/sight")
@ -142,6 +144,7 @@ IMPLEMENT_ACTOR (AInquisitorShot, Strife, -1, 0)
PROP_HeightFixed (13) PROP_HeightFixed (13)
PROP_Mass (15) PROP_Mass (15)
PROP_Flags (MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE) PROP_Flags (MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE)
PROP_Flags2 (MF2_NOTELEPORT)
PROP_Flags4 (MF4_STRIFEDAMAGE) PROP_Flags4 (MF4_STRIFEDAMAGE)
PROP_MaxStepHeight (4) PROP_MaxStepHeight (4)
PROP_SeeSound ("inquisitor/attack") PROP_SeeSound ("inquisitor/attack")
@ -181,7 +184,7 @@ void A_InquisitorWalk (AActor *self)
A_Chase (self); A_Chase (self);
} }
bool Sys1ED64 (AActor *self) bool InquisitorCheckDistance (AActor *self)
{ {
if (self->reactiontime == 0 && P_CheckSight (self, self->target)) if (self->reactiontime == 0 && P_CheckSight (self, self->target))
{ {
@ -196,7 +199,7 @@ void A_InquisitorDecide (AActor *self)
return; return;
A_FaceTarget (self); A_FaceTarget (self);
if (!Sys1ED64 (self)) if (!InquisitorCheckDistance (self))
{ {
self->SetState (&AInquisitor::States[S_INQ_ATK2]); self->SetState (&AInquisitor::States[S_INQ_ATK2]);
} }

View file

@ -225,6 +225,7 @@ class ATeleporterBeacon : public AInventory
DECLARE_ACTOR (ATeleporterBeacon, AInventory) DECLARE_ACTOR (ATeleporterBeacon, AInventory)
public: public:
bool Use (bool pickup); bool Use (bool pickup);
const char *PickupMessage ();
}; };
FState ATeleporterBeacon::States[] = FState ATeleporterBeacon::States[] =
@ -249,6 +250,11 @@ IMPLEMENT_ACTOR (ATeleporterBeacon, Strife, 10, 0)
PROP_Tag ("Teleporter_Beacon") PROP_Tag ("Teleporter_Beacon")
END_DEFAULTS END_DEFAULTS
const char *ATeleporterBeacon::PickupMessage ()
{
return "You picked up the Teleporter Beacon.";
}
bool ATeleporterBeacon::Use (bool pickup) bool ATeleporterBeacon::Use (bool pickup)
{ {
AInventory *drop; AInventory *drop;

View file

@ -186,6 +186,7 @@ void A_SentinelRefire (AActor *self)
if (self->target == NULL || if (self->target == NULL ||
self->target->health <= 0 || self->target->health <= 0 ||
!P_CheckSight (self, self->target) || !P_CheckSight (self, self->target) ||
P_HitFriend(self) ||
pr_sentinelrefire() < 40) pr_sentinelrefire() < 40)
{ {
self->SetState (self->SeeState); self->SetState (self->SeeState);

View file

@ -199,7 +199,7 @@ void A_JabDagger (AActor *actor)
int power; int power;
power = actor->player->stamina / 10; power = actor->player->stamina / 10;
damage = (pr_jabdagger() & (power + 7)) * (power + 2); damage = (pr_jabdagger() % (power + 8)) * (power + 2);
if (actor->FindInventory<APowerStrength>()) if (actor->FindInventory<APowerStrength>())
{ {

89
wadsrc/In_epi1.txt Normal file
View file

@ -0,0 +1,89 @@
Background wimap0
Splat wisplat
Pointer wiurh0 wiurh1
Animation 224 104 11
{
WIA00000
WIA00001
WIA00002
}
Animation 184 160 11
{
WIA00100
WIA00101
WIA00102
}
Animation 112 136 11
{
WIA00200
WIA00201
WIA00202
}
Animation 72 112 11
{
WIA00300
WIA00301
WIA00302
}
Animation 88 96 11
{
WIA00400
WIA00401
WIA00402
}
Animation 64 48 11
{
WIA00500
WIA00501
WIA00502
}
Animation 192 40 11
{
WIA00600
WIA00601
WIA00602
}
Animation 136 16 11
{
WIA00700
WIA00701
WIA00702
}
Animation 80 16 11
{
WIA00800
WIA00801
WIA00802
}
Animation 64 24 11
{
WIA00900
WIA00901
WIA00902
}
Spots
{
E1M1 185 164
E1M2 148 143
E1M3 69 122
E1M4 209 102
E1M5 116 89
E1M6 166 55
E1M7 71 56
E1M8 135 29
E1M9 71 24
}

46
wadsrc/In_epi2.txt Normal file
View file

@ -0,0 +1,46 @@
Background wimap1
Splat wisplat
Pointer wiurh0 wiurh1
// IfEntering and IfLeaving are mutually exclusive so these have to be defined twice!
IfLeaving E2M1 Pic 128 136 WIA10000
IfLeaving E2M2 Pic 128 136 WIA10100
IfLeaving E2M3 Pic 128 136 WIA10200
IfLeaving E2M4 Pic 128 136 WIA10300
IfLeaving E2M5 Pic 128 136 WIA10400
IfLeaving E2M6 Pic 128 136 WIA10500
IfLeaving E2M7 Pic 128 136 WIA10600
IfLeaving E2M9 Pic 128 136 WIA10400
IfEntering E2M2 Pic 128 136 WIA10000
IfEntering E2M3 Pic 128 136 WIA10100
IfEntering E2M4 Pic 128 136 WIA10200
IfEntering E2M5 Pic 128 136 WIA10300
IfEntering E2M6 Pic 128 136 WIA10400
IfEntering E2M7 Pic 128 136 WIA10500
IfEntering E2M8 Pic 128 136 WIA10600
IfEntering E2M9 Pic 128 136 WIA10400
IfVisited E2M9 Pic 192 144 WIA10702
IfEntering E2M9 Animation 192 144 11 ONCE
{
WIA10700
WIA10701
WIA10702
}
Spots
{
E2M1 254 25
E2M2 97 50
E2M3 188 64
E2M4 128 78
E2M5 214 92
E2M6 133 130
E2M7 208 136
E2M8 148 140
E2M9 235 158
}

60
wadsrc/In_epi3.txt Normal file
View file

@ -0,0 +1,60 @@
Background wimap2
Splat wisplat
Pointer wiurh0 wiurh1
Animation 104 168 11
{
WIA20000
WIA20001
WIA20002
}
Animation 40 136 11
{
WIA20100
WIA20101
WIA20102
}
Animation 160 96 11
{
WIA20200
WIA20201
WIA20202
}
Animation 104 80 11
{
WIA30300
WIA30301
WIA30302
}
Animation 120 32 11
{
WIA40400
WIA40401
WIA40402
}
Animation 40 0 8
{
WIA50500
WIA50501
WIA50502
}
Spots
{
E3M1 156 168
E3M2 48 154
E3M3 174 95
E3M4 265 75
E3M5 130 48
E3M6 279 23
E3M7 198 48
E3M8 140 25
E3M9 281 136
}

17
wadsrc/In_htc1.txt Normal file
View file

@ -0,0 +1,17 @@
Background mape1
Splat in_x
Pointer in_yah
Spots
{
E1M1 172 78
E1M2 86 90
E1M3 73 66
E1M4 159 95
E1M5 148 126
E1M6 132 54
E1M7 131 74
E1M8 208 138
E1M9 52 101
}

17
wadsrc/In_htc2.txt Normal file
View file

@ -0,0 +1,17 @@
Background mape2
Splat in_x
Pointer in_yah
Spots
{
E2M1 218 57
E2M2 137 81
E2M3 155 124
E2M4 171 68
E2M5 250 86
E2M6 136 98
E2M7 203 90
E2M8 220 140
E2M9 279 106
}

17
wadsrc/In_htc3.txt Normal file
View file

@ -0,0 +1,17 @@
Background mape3
Splat in_x
Pointer in_yah
Spots
{
E3M1 86 99
E3M2 124 103
E3M3 154 79
E3M4 202 83
E3M5 178 59
E3M6 142 58
E3M7 219 66
E3M8 247 57
E3M9 107 80
}

560
wadsrc/Lockdefs.txt Normal file
View file

@ -0,0 +1,560 @@
//
// Doom Locks - they include Heretic's keys because somebody mentioned that he already used them
//
ClearLocks
Lock 1 Doom
{
RedCard
Message "$PD_REDC"
RemoteMessage "You need a red card to activate this object"
Mapcolor 255 0 0
}
Lock 2 Doom
{
BlueCard
Message "$PD_BLUEC"
RemoteMessage "You need a blue card to activate this object"
Mapcolor 0 0 255
}
Lock 3 Doom
{
YellowCard
Message "$PD_YELLOWC"
RemoteMessage "You need a yellow card to activate this object"
Mapcolor 255 255 0
}
Lock 4 Doom
{
RedSkull
Message "$PD_REDS"
RemoteMessage "You need a red skull to activate this object"
Mapcolor 255 0 0
}
Lock 5 Doom
{
BlueSkull
Message "$PD_BLUES"
RemoteMessage "You need a blue skull to activate this object"
Mapcolor 0 0 255
}
Lock 6 Doom
{
YellowSkull
Message "$PD_YELLOWS"
RemoteMessage "You need a yellow skull to activate this object"
Mapcolor 255 255 0
}
Lock 129 Doom
{
Any { RedCard RedSkull KeyGreen }
Message "$PD_REDK"
RemoteMessage "$PD_REDO"
Mapcolor 255 0 0
}
Lock 130 Doom
{
Any { BlueCard BlueSkull KeyBlue }
Message "$PD_BLUEK"
RemoteMessage "$PD_BLUEO"
Mapcolor 0 0 255
}
Lock 131 Doom
{
Any { YellowCard YellowSkull KeyYellow }
Message "$PD_YELLOWK"
RemoteMessage "$PD_YELLOWO"
Mapcolor 255 255 0
}
Lock 132 Doom
{
Any { RedCard RedSkull }
Message "$PD_REDK"
RemoteMessage "$PD_REDO"
Mapcolor 255 0 0
}
Lock 133 Doom
{
Any { BlueCard BlueSkull }
Message "$PD_BLUEK"
RemoteMessage "$PD_BLUEO"
Mapcolor 0 0 255
}
Lock 134 Doom
{
Any { YellowCard YellowSkull }
Message "$PD_YELLOWK"
RemoteMessage "$PD_YELLOWO"
Mapcolor 255 255 0
}
Lock 100
{
Message "Any key will open this door"
RemoteMessage "Any key will activate this object"
Mapcolor 128 128 255
}
Lock 228
{
Message "Any key will open this door"
RemoteMessage "Any key will activate this object"
Mapcolor 128 128 255
}
Lock 229 Doom
{
Any { BlueCard BlueSkull KeyBlue}
Any { YellowCard YellowSkull KeyYellow}
Any { RedCard RedSkull KeyGreen}
Message "$PD_ALL3"
RemoteMessage "You need all three keys to activate this object"
}
Lock 101 Doom
{
BlueCard
BlueSkull
YellowCard
YellowSkull
RedCard
RedSkull
Message "$PD_ALL6"
RemoteMessage "You need all six keys to activate this object"
}
//
// Heretic KeyDefs
//
Lock 1 Heretic
{
KeyGreen
Message "$TXT_NEEDGREENKEY"
Mapcolor 0 255 0
}
Lock 2 Heretic
{
KeyBlue
Message "$TXT_NEEDBLUEKEY"
Mapcolor 0 0 255
}
Lock 3 Heretic
{
KeyYellow
Message "$TXT_NEEDYELLOWKEY"
Mapcolor 255 255 0
}
Lock 129 Heretic
{
KeyGreen
Message "$TXT_NEEDGREENKEY"
Mapcolor 0 255 0
}
Lock 130 Heretic
{
KeyBlue
Message "$TXT_NEEDBLUEKEY"
Mapcolor 0 0 255
}
Lock 131 Heretic
{
KeyYellow
Message "$TXT_NEEDYELLOWKEY"
Mapcolor 255 255 0
}
Lock 229 Heretic
{
KeyGreen
KeyYellow
KeyBlue
Message "$PD_ALL3"
RemoteMessage "You need all three keys to activate this object"
}
Lock 101 Heretic
{
KeyGreen
KeyYellow
KeyBlue
Message "$PD_ALL3"
RemoteMessage "You need all three keys to activate this object"
}
//
// Hexen KeyDefs
//
Lock 1 Hexen
{
KeySteel
Message "You need the $TXT_KEY_STEEL"
Mapcolor 150 150 150
}
Lock 2 Hexen
{
KeyCave
Message "You need the $TXT_KEY_CAVE"
Mapcolor 255 218 0
}
Lock 3 Hexen
{
KeyAxe
Message "You need the $TXT_KEY_AXE"
Mapcolor 64 64 255
}
Lock 4 Hexen
{
KeyFire
Message "You need the $TXT_KEY_FIRE"
Mapcolor 255 128 0
}
Lock 5 Hexen
{
KeyEmerald
Message "You need the $TXT_KEY_EMERALD"
Mapcolor 0 255 0
}
Lock 6 Hexen
{
KeyDungeon
Message "You need the $TXT_KEY_DUNGEON"
Mapcolor 47 151 255
}
Lock 7 Hexen
{
KeySilver
Message "You need the $TXT_KEY_SILVER"
Mapcolor 154 152 188
}
Lock 8 Hexen
{
KeyRusted
Message "You need the $TXT_KEY_RUSTED"
Mapcolor 156 76 0
}
Lock 9 Hexen
{
KeyHorn
Message "You need the $TXT_KEY_HORN"
Mapcolor 255 218 0
}
Lock 10 Hexen
{
KeySwamp
Message "You need the $TXT_KEY_SWAMP"
Mapcolor 64 255 64
}
Lock 11 Hexen
{
KeyCastle
Message "You need the $TXT_KEY_CASTLE"
Mapcolor 255 64 64
}
Lock 101 Hexen
{
KeySteel
KeyCave
KeyAxe
KeyFire
KeyEmerald
KeyDungeon
KeySilver
KeyRusted
KeyHorn
KeySwamp
KeyCastle
Message "You need all the keys"
}
Lock 229 Hexen
{
KeySteel
KeyCave
KeyAxe
KeyFire
KeyEmerald
KeyDungeon
KeySilver
KeyRusted
KeyHorn
KeySwamp
KeyCastle
Message "You need all the keys"
}
// Strife KeyDefs
Lock 1 Strife
{
BaseKey
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 2 Strife
{
GovsKey
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 3 Strife
{
Passcard
RemoteMessage "You need a passcard"
Message "You need a pass card key to open this door"
Mapcolor 128 266 150
}
Lock 4 Strife
{
IDBadge
Message "You need an ID card"
Mapcolor 255 128 0
}
Lock 5 Strife
{
PrisonKey
Message "You don't have the key to the prison"
Mapcolor 0 255 0
}
Lock 6 Strife
{
SeveredHand
Message "Hand print not on file"
Mapcolor 255 151 100
}
Lock 7 Strife
{
Power1Key
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 8 Strife
{
Power2Key
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 9 Strife
{
Power3Key
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 10 Strife
{
GoldKey
Message "You need the Gold Key"
Mapcolor 255 200 0
}
Lock 11 Strife
{
IDCard
RemoteMessage "You need an ID badge"
Message "You need an ID badge to open this door"
Mapcolor 200 0 0
}
Lock 12 Strife
{
SilverKey
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 13 Strife
{
OracleKey
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 14 Strife
{
MilitaryID
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 15 Strife
{
OrderKey
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 16 Strife
{
WarehouseKey
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 17 Strife
{
BrassKey
Message "You need a brass key"
Mapcolor 150 75 0
}
Lock 18 Strife
{
RedCrystalKey
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 19 Strife
{
BlueCrystalKey
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 20 Strife
{
ChapelKey
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 21 Strife
{
CatacombKey
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 22 Strife
{
SecurityKey
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 23 Strife
{
CoreKey
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 24 Strife
{
MaulerKey
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 25 Strife
{
FactoryKey
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 26 Strife
{
MineKey
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 27 Strife
{
NewKey5
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 50 Strife
{
PrisonPass
Message "You don't have the key"
Mapcolor 150 150 150
}
Lock 51 Strife
{
OraclePass
Message "You don't have the key"
Mapcolor 150 150 150
}

View file

@ -282,6 +282,12 @@ decal PlasmaScorch2
lowerdecal PlasmaScorchLower2 lowerdecal PlasmaScorchLower2
} }
decalgroup PlasmaScorchLower
{
PlasmaScorchLower1 1
PlasmaScorchLower2 1
}
decalgroup PlasmaScorch decalgroup PlasmaScorch
{ {
PlasmaScorch1 1 PlasmaScorch1 1
@ -989,8 +995,8 @@ generator MaceFX1 BaronScorch
generator Blaster RailScorchLower generator Blaster RailScorchLower
generator BlasterFX1 HImpScorch generator BlasterFX1 HImpScorch
generator Ripper HImpScorch generator Ripper HImpScorch
generator HornRodFX1 PlasmaScorch generator HornRodFX1 PlasmaScorchLower
generator HornRodFX2 PlasmaScorch generator HornRodFX2 PlasmaScorchLower
generator PhoenixFX1 Scorch generator PhoenixFX1 Scorch
generator PhoenixFX2 Scorch generator PhoenixFX2 Scorch
@ -1029,8 +1035,8 @@ generator Rebel4 BulletChip
generator Rebel5 BulletChip generator Rebel5 BulletChip
generator Macil1 BulletChip generator Macil1 BulletChip
generator Macil2 BulletChip generator Macil2 BulletChip
generator SentinelFX1 PlasmaScorch generator SentinelFX1 PlasmaScorchLower
generator SentinelFX2 PlasmaScorch generator SentinelFX2 PlasmaScorchLower
generator Templar RailScorchLower generator Templar RailScorchLower
generator Reaver BulletChip generator Reaver BulletChip
generator FlameMissile CacoScorch generator FlameMissile CacoScorch

View file

@ -39,6 +39,13 @@ zdoom.wad: zdoom.lst \
decals/cbowmark.png \ decals/cbowmark.png \
animdefs.txt \ animdefs.txt \
terrain.txt \ terrain.txt \
in_epi1.txt \
in_epi2.txt \
in_epi3.txt \
in_htc1.txt \
in_htc2.txt \
in_htc3.txt \
lockdefs.txt \
dehsupp.lmp \ dehsupp.lmp \
xlat/doom.x \ xlat/doom.x \
xlat/heretic.x \ xlat/heretic.x \

View file

@ -44,6 +44,27 @@
<File <File
RelativePath=".\animdefs.txt"> RelativePath=".\animdefs.txt">
</File> </File>
<File
RelativePath=".\In_epi1.txt">
</File>
<File
RelativePath=".\In_epi2.txt">
</File>
<File
RelativePath=".\In_epi3.txt">
</File>
<File
RelativePath=".\In_htc1.txt">
</File>
<File
RelativePath=".\In_htc2.txt">
</File>
<File
RelativePath=".\In_htc3.txt">
</File>
<File
RelativePath=".\Lockdefs.txt">
</File>
<File <File
RelativePath=".\sndeax.txt"> RelativePath=".\sndeax.txt">
</File> </File>

View file

@ -50,6 +50,13 @@ cbowmark decals/cbowmark.png
animdefs animdefs.txt animdefs animdefs.txt
terrain terrain.txt terrain terrain.txt
in_epi1 in_epi1.txt
in_epi2 in_epi2.txt
in_epi3 in_epi3.txt
in_htc1 in_htc1.txt
in_htc2 in_htc2.txt
in_htc3 in_htc3.txt
lockdefs lockdefs.txt
======== ========
# Support lumps # Support lumps