From cd3cebf3407075466557ad653094d4bb4b936b0a Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 10 Apr 2006 21:54:50 +0000 Subject: [PATCH] SVN r25 (trunk) --- docs/rh-log.txt | 30 ++ src/b_game.cpp | 4 +- src/g_doom/a_cacodemon.cpp | 1 + src/g_doom/a_demon.cpp | 1 + src/g_doom/a_doomimp.cpp | 1 + src/g_doom/a_lostsoul.cpp | 1 + src/g_doom/a_possessed.cpp | 2 + src/g_heretic/a_hereticweaps.cpp | 3 +- src/g_heretic/a_ironlich.cpp | 48 +-- src/g_hexen/a_clericstaff.cpp | 4 + src/g_hexen/a_dragon.cpp | 2 +- src/g_hexen/a_flame.cpp | 24 ++ src/g_hexen/a_heresiarch.cpp | 2 +- src/g_hexen/a_hexenspecialdecs.cpp | 1 + src/g_hexen/a_korax.cpp | 2 +- src/g_hexen/a_summon.cpp | 3 +- src/g_strife/a_inquisitor.cpp | 9 +- src/g_strife/a_rebels.cpp | 6 + src/g_strife/a_sentinel.cpp | 1 + src/g_strife/a_strifeweapons.cpp | 2 +- wadsrc/In_epi1.txt | 89 +++++ wadsrc/In_epi2.txt | 46 +++ wadsrc/In_epi3.txt | 60 ++++ wadsrc/In_htc1.txt | 17 + wadsrc/In_htc2.txt | 17 + wadsrc/In_htc3.txt | 17 + wadsrc/Lockdefs.txt | 560 +++++++++++++++++++++++++++++ wadsrc/decals/decaldef.txt | 14 +- wadsrc/wadmake | 7 + wadsrc/wadsrc.vcproj | 21 ++ wadsrc/zdoom.lst | 7 + 31 files changed, 962 insertions(+), 40 deletions(-) create mode 100644 wadsrc/In_epi1.txt create mode 100644 wadsrc/In_epi2.txt create mode 100644 wadsrc/In_epi3.txt create mode 100644 wadsrc/In_htc1.txt create mode 100644 wadsrc/In_htc2.txt create mode 100644 wadsrc/In_htc3.txt create mode 100644 wadsrc/Lockdefs.txt diff --git a/docs/rh-log.txt b/docs/rh-log.txt index d816de349..a36b51b4b 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -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 - Fixed: The strupr() implementation in w_wad.cpp relied on compiler-dependant behavior. diff --git a/src/b_game.cpp b/src/b_game.cpp index 263a88bac..87bcaeb79 100644 --- a/src/b_game.cpp +++ b/src/b_game.cpp @@ -138,7 +138,7 @@ void DCajunMaster::Main (int buf) Printf ("%s is now observer\n", players[consoleplayer].userinfo.netname); observer = true; 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->LinkToWorld (); } @@ -147,7 +147,7 @@ void DCajunMaster::Main (int buf) Printf ("%s returned to the fray\n", players[consoleplayer].userinfo.netname); observer = false; 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->LinkToWorld (); } diff --git a/src/g_doom/a_cacodemon.cpp b/src/g_doom/a_cacodemon.cpp index 49d5c67bb..31fb63d05 100644 --- a/src/g_doom/a_cacodemon.cpp +++ b/src/g_doom/a_cacodemon.cpp @@ -169,6 +169,7 @@ IMPLEMENT_STATELESS_ACTOR (ADeadCacodemon, Doom, 22, 0) PROP_PainChance (0) PROP_Flags (0) PROP_Flags2 (0) + PROP_Flags3 (0) PROP_SeeState (255) PROP_PainState (255) PROP_MissileState (255) diff --git a/src/g_doom/a_demon.cpp b/src/g_doom/a_demon.cpp index d03db3563..b63c2aab0 100644 --- a/src/g_doom/a_demon.cpp +++ b/src/g_doom/a_demon.cpp @@ -175,6 +175,7 @@ IMPLEMENT_STATELESS_ACTOR (ADeadDemon, Doom, 21, 0) PROP_PainChance (0) PROP_Flags (0) PROP_Flags2 (0) + PROP_Flags3 (0) PROP_SeeState (255) PROP_PainState (255) PROP_MissileState (255) diff --git a/src/g_doom/a_doomimp.cpp b/src/g_doom/a_doomimp.cpp index b77d3f56f..21b34bbb5 100644 --- a/src/g_doom/a_doomimp.cpp +++ b/src/g_doom/a_doomimp.cpp @@ -188,6 +188,7 @@ IMPLEMENT_STATELESS_ACTOR (ADeadDoomImp, Doom, 20, 0) PROP_PainChance (0) PROP_Flags (0) PROP_Flags2 (0) + PROP_Flags3 (0) PROP_SeeState (255) PROP_PainState (255) PROP_MissileState (255) diff --git a/src/g_doom/a_lostsoul.cpp b/src/g_doom/a_lostsoul.cpp index 9e7f21cd1..95fb595e8 100644 --- a/src/g_doom/a_lostsoul.cpp +++ b/src/g_doom/a_lostsoul.cpp @@ -130,6 +130,7 @@ IMPLEMENT_STATELESS_ACTOR (ADeadLostSoul, Doom, 23, 0) PROP_PainChance (0) PROP_Flags (0) PROP_Flags2 (0) + PROP_Flags3 (0) PROP_Flags4 (0) PROP_RenderStyle (STYLE_Normal) PROP_SeeState (255) diff --git a/src/g_doom/a_possessed.cpp b/src/g_doom/a_possessed.cpp index ddc7f69d6..94bea8993 100644 --- a/src/g_doom/a_possessed.cpp +++ b/src/g_doom/a_possessed.cpp @@ -164,6 +164,7 @@ IMPLEMENT_STATELESS_ACTOR (ADeadZombieMan, Doom, 18, 0) PROP_PainChance (0) PROP_Flags (0) PROP_Flags2 (0) + PROP_Flags3 (0) PROP_SeeState (255) PROP_PainState (255) PROP_MissileState (255) @@ -341,6 +342,7 @@ IMPLEMENT_STATELESS_ACTOR (ADeadShotgunGuy, Doom, 19, 0) PROP_PainChance (0) PROP_Flags (0) PROP_Flags2 (0) + PROP_Flags3 (0) PROP_SeeState (255) PROP_PainState (255) PROP_MissileState (255) diff --git a/src/g_heretic/a_hereticweaps.cpp b/src/g_heretic/a_hereticweaps.cpp index 16e1786f4..594d71b81 100644 --- a/src/g_heretic/a_hereticweaps.cpp +++ b/src/g_heretic/a_hereticweaps.cpp @@ -483,6 +483,7 @@ class AGoldWandPuff2 : public AGoldWandFX1 }; IMPLEMENT_STATELESS_ACTOR (AGoldWandPuff2, Heretic, -1, 0) + PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY) PROP_SpawnState (S_GWANDFXI1) END_DEFAULTS @@ -1527,7 +1528,7 @@ void A_FireMacePL2 (AActor *actor) mo->momx += player->mo->momx; mo->momy += player->mo->momy; mo->momz = 2*FRACUNIT+ - finetangent[FINEANGLES/4-(player->mo->pitch>>ANGLETOFINESHIFT)]; + clamp(finetangent[FINEANGLES/4-(player->mo->pitch>>ANGLETOFINESHIFT)], -5*FRACUNIT, 5*FRACUNIT); if (linetarget) { mo->tracer = linetarget; diff --git a/src/g_heretic/a_ironlich.cpp b/src/g_heretic/a_ironlich.cpp index 1c8a602b5..80a39e48a 100644 --- a/src/g_heretic/a_ironlich.cpp +++ b/src/g_heretic/a_ironlich.cpp @@ -104,15 +104,15 @@ class AHeadFX1 : public AActor FState AHeadFX1::States[] = { #define S_HEADFX1 0 - S_NORMAL (FX05, 'A', 6, NULL , &States[S_HEADFX1+1]), - S_NORMAL (FX05, 'B', 6, NULL , &States[S_HEADFX1+2]), - S_NORMAL (FX05, 'C', 6, NULL , &States[S_HEADFX1+0]), + S_BRIGHT (FX05, 'A', 6, NULL , &States[S_HEADFX1+1]), + S_BRIGHT (FX05, 'B', 6, NULL , &States[S_HEADFX1+2]), + S_BRIGHT (FX05, 'C', 6, NULL , &States[S_HEADFX1+0]), #define S_HEADFXI1 (S_HEADFX1+3) - S_NORMAL (FX05, 'D', 5, A_LichIceImpact , &States[S_HEADFXI1+1]), - S_NORMAL (FX05, 'E', 5, NULL , &States[S_HEADFXI1+2]), - S_NORMAL (FX05, 'F', 5, NULL , &States[S_HEADFXI1+3]), - S_NORMAL (FX05, 'G', 5, NULL , NULL) + S_BRIGHT (FX05, 'D', 5, A_LichIceImpact , &States[S_HEADFXI1+1]), + S_BRIGHT (FX05, 'E', 5, NULL , &States[S_HEADFXI1+2]), + S_BRIGHT (FX05, 'F', 5, NULL , &States[S_HEADFXI1+3]), + S_BRIGHT (FX05, 'G', 5, NULL , NULL) }; IMPLEMENT_ACTOR (AHeadFX1, Heretic, -1, 164) @@ -142,15 +142,15 @@ class AHeadFX2 : public AActor FState AHeadFX2::States[] = { #define S_HEADFX2 0 - S_NORMAL (FX05, 'H', 6, NULL , &States[S_HEADFX2+1]), - S_NORMAL (FX05, 'I', 6, NULL , &States[S_HEADFX2+2]), - S_NORMAL (FX05, 'J', 6, NULL , &States[S_HEADFX2+0]), + S_BRIGHT (FX05, 'H', 6, NULL , &States[S_HEADFX2+1]), + S_BRIGHT (FX05, 'I', 6, NULL , &States[S_HEADFX2+2]), + S_BRIGHT (FX05, 'J', 6, NULL , &States[S_HEADFX2+0]), #define S_HEADFXI2 (S_HEADFX2+3) - S_NORMAL (FX05, 'D', 5, NULL , &States[S_HEADFXI2+1]), - S_NORMAL (FX05, 'E', 5, NULL , &States[S_HEADFXI2+2]), - S_NORMAL (FX05, 'F', 5, NULL , &States[S_HEADFXI2+3]), - S_NORMAL (FX05, 'G', 5, NULL , NULL) + S_BRIGHT (FX05, 'D', 5, NULL , &States[S_HEADFXI2+1]), + S_BRIGHT (FX05, 'E', 5, NULL , &States[S_HEADFXI2+2]), + S_BRIGHT (FX05, 'F', 5, NULL , &States[S_HEADFXI2+3]), + S_BRIGHT (FX05, 'G', 5, NULL , NULL) }; IMPLEMENT_ACTOR (AHeadFX2, Heretic, -1, 0) @@ -175,18 +175,18 @@ class AHeadFX3 : public AActor FState AHeadFX3::States[] = { #define S_HEADFX3 0 - S_NORMAL (FX06, 'A', 4, A_LichFireGrow , &States[S_HEADFX3+1]), - S_NORMAL (FX06, 'B', 4, A_LichFireGrow , &States[S_HEADFX3+2]), - S_NORMAL (FX06, 'C', 4, A_LichFireGrow , &States[S_HEADFX3+0]), - S_NORMAL (FX06, 'A', 5, NULL , &States[S_HEADFX3+4]), - S_NORMAL (FX06, 'B', 5, NULL , &States[S_HEADFX3+5]), - S_NORMAL (FX06, 'C', 5, NULL , &States[S_HEADFX3+3]), + S_BRIGHT (FX06, 'A', 4, A_LichFireGrow , &States[S_HEADFX3+1]), + S_BRIGHT (FX06, 'B', 4, A_LichFireGrow , &States[S_HEADFX3+2]), + S_BRIGHT (FX06, 'C', 4, A_LichFireGrow , &States[S_HEADFX3+0]), + S_BRIGHT (FX06, 'A', 5, NULL , &States[S_HEADFX3+4]), + S_BRIGHT (FX06, 'B', 5, NULL , &States[S_HEADFX3+5]), + S_BRIGHT (FX06, 'C', 5, NULL , &States[S_HEADFX3+3]), #define S_HEADFXI3 (S_HEADFX3+6) - S_NORMAL (FX06, 'D', 5, NULL , &States[S_HEADFXI3+1]), - S_NORMAL (FX06, 'E', 5, NULL , &States[S_HEADFXI3+2]), - S_NORMAL (FX06, 'F', 5, NULL , &States[S_HEADFXI3+3]), - S_NORMAL (FX06, 'G', 5, NULL , NULL) + S_BRIGHT (FX06, 'D', 5, NULL , &States[S_HEADFXI3+1]), + S_BRIGHT (FX06, 'E', 5, NULL , &States[S_HEADFXI3+2]), + S_BRIGHT (FX06, 'F', 5, NULL , &States[S_HEADFXI3+3]), + S_BRIGHT (FX06, 'G', 5, NULL , NULL) }; IMPLEMENT_ACTOR (AHeadFX3, Heretic, -1, 0) diff --git a/src/g_hexen/a_clericstaff.cpp b/src/g_hexen/a_clericstaff.cpp index 6be253b8e..3fd0f9184 100644 --- a/src/g_hexen/a_clericstaff.cpp +++ b/src/g_hexen/a_clericstaff.cpp @@ -330,4 +330,8 @@ void A_CStaffCheckBlink (AActor *actor) P_SetPsprite (actor->player, ps_weapon, &ACWeapStaff::States[S_CSTAFFBLINK]); actor->special1 = (pr_blink()+50)>>2; } + else + { + A_WeaponReady (actor); + } } diff --git a/src/g_hexen/a_dragon.cpp b/src/g_hexen/a_dragon.cpp index ce0484334..8c64daa87 100644 --- a/src/g_hexen/a_dragon.cpp +++ b/src/g_hexen/a_dragon.cpp @@ -75,7 +75,7 @@ IMPLEMENT_ACTOR (ADragon, Hexen, 254, 0) PROP_MassLong (0x7fffffff) PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOGRAVITY|MF_FLOAT|MF_NOBLOOD|MF_COUNTKILL) PROP_Flags2 (MF2_PASSMOBJ|MF2_BOSS) - PROP_Flags3 (MF3_DONTMORPH) + PROP_Flags3 (MF3_DONTMORPH|MF3_NOTARGET) PROP_Flags4 (MF4_NOICEDEATH) PROP_SpawnState (S_DRAGON_LOOK1) diff --git a/src/g_hexen/a_flame.cpp b/src/g_hexen/a_flame.cpp index 383a0b76e..449c73ace 100644 --- a/src/g_hexen/a_flame.cpp +++ b/src/g_hexen/a_flame.cpp @@ -181,3 +181,27 @@ void A_FlameCheck (AActor *actor) 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 diff --git a/src/g_hexen/a_heresiarch.cpp b/src/g_hexen/a_heresiarch.cpp index 9d5fcda34..cfef1b912 100644 --- a/src/g_hexen/a_heresiarch.cpp +++ b/src/g_hexen/a_heresiarch.cpp @@ -132,7 +132,7 @@ IMPLEMENT_ACTOR (AHeresiarch, Hexen, 10080, 0) PROP_Damage (9) PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD|MF_COUNTKILL) 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_SpawnState (S_SORC_SPAWN1) diff --git a/src/g_hexen/a_hexenspecialdecs.cpp b/src/g_hexen/a_hexenspecialdecs.cpp index 549177e3a..1c4c56172 100644 --- a/src/g_hexen/a_hexenspecialdecs.cpp +++ b/src/g_hexen/a_hexenspecialdecs.cpp @@ -777,6 +777,7 @@ FState AZWallTorch::States[] = IMPLEMENT_ACTOR (AZWallTorch, Hexen, 54, 0) PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY) + PROP_Flags4 (MF4_FIXMAPTHINGPOS) PROP_SpawnState (S_ZWALLTORCH) PROP_SeeState (S_ZWALLTORCH) diff --git a/src/g_hexen/a_korax.cpp b/src/g_hexen/a_korax.cpp index 2b728efc9..8ae0943ac 100644 --- a/src/g_hexen/a_korax.cpp +++ b/src/g_hexen/a_korax.cpp @@ -156,7 +156,7 @@ IMPLEMENT_ACTOR (AKorax, Hexen, 10200, 0) PROP_Damage (15) PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_COUNTKILL) 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_SpawnState (S_KORAX_LOOK1) diff --git a/src/g_hexen/a_summon.cpp b/src/g_hexen/a_summon.cpp index 9f27febec..2837c45c0 100644 --- a/src/g_hexen/a_summon.cpp +++ b/src/g_hexen/a_summon.cpp @@ -120,9 +120,8 @@ bool AArtiDarkServant::Use (bool pickup) mo->target = Owner; mo->tracer = Owner; mo->momz = 5*FRACUNIT; - return true; } - return false; + return true; } //============================================================================ diff --git a/src/g_strife/a_inquisitor.cpp b/src/g_strife/a_inquisitor.cpp index b7c285e3a..61d69f911 100644 --- a/src/g_strife/a_inquisitor.cpp +++ b/src/g_strife/a_inquisitor.cpp @@ -97,9 +97,11 @@ IMPLEMENT_ACTOR (AInquisitor, Strife, 16, 0) PROP_SpeedFixed (12) PROP_RadiusFixed (40) PROP_HeightFixed (110) + PROP_MassLong(0x7fffffff) 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_Flags3 (MF3_NORADIUSDMG|MF3_DONTMORPH) + PROP_Flags3 (MF3_DONTMORPH) + PROP_Flags4 (MF4_DONTHURTSPECIES) PROP_MaxDropOffHeight (32) PROP_MinMissileChance (150) PROP_SeeSound ("inquisitor/sight") @@ -142,6 +144,7 @@ IMPLEMENT_ACTOR (AInquisitorShot, Strife, -1, 0) PROP_HeightFixed (13) PROP_Mass (15) PROP_Flags (MF_NOBLOCKMAP|MF_DROPOFF|MF_MISSILE) + PROP_Flags2 (MF2_NOTELEPORT) PROP_Flags4 (MF4_STRIFEDAMAGE) PROP_MaxStepHeight (4) PROP_SeeSound ("inquisitor/attack") @@ -181,7 +184,7 @@ void A_InquisitorWalk (AActor *self) A_Chase (self); } -bool Sys1ED64 (AActor *self) +bool InquisitorCheckDistance (AActor *self) { if (self->reactiontime == 0 && P_CheckSight (self, self->target)) { @@ -196,7 +199,7 @@ void A_InquisitorDecide (AActor *self) return; A_FaceTarget (self); - if (!Sys1ED64 (self)) + if (!InquisitorCheckDistance (self)) { self->SetState (&AInquisitor::States[S_INQ_ATK2]); } diff --git a/src/g_strife/a_rebels.cpp b/src/g_strife/a_rebels.cpp index 998391e12..a05705c92 100644 --- a/src/g_strife/a_rebels.cpp +++ b/src/g_strife/a_rebels.cpp @@ -225,6 +225,7 @@ class ATeleporterBeacon : public AInventory DECLARE_ACTOR (ATeleporterBeacon, AInventory) public: bool Use (bool pickup); + const char *PickupMessage (); }; FState ATeleporterBeacon::States[] = @@ -249,6 +250,11 @@ IMPLEMENT_ACTOR (ATeleporterBeacon, Strife, 10, 0) PROP_Tag ("Teleporter_Beacon") END_DEFAULTS +const char *ATeleporterBeacon::PickupMessage () +{ + return "You picked up the Teleporter Beacon."; +} + bool ATeleporterBeacon::Use (bool pickup) { AInventory *drop; diff --git a/src/g_strife/a_sentinel.cpp b/src/g_strife/a_sentinel.cpp index 3c7220840..4678713ee 100644 --- a/src/g_strife/a_sentinel.cpp +++ b/src/g_strife/a_sentinel.cpp @@ -186,6 +186,7 @@ void A_SentinelRefire (AActor *self) if (self->target == NULL || self->target->health <= 0 || !P_CheckSight (self, self->target) || + P_HitFriend(self) || pr_sentinelrefire() < 40) { self->SetState (self->SeeState); diff --git a/src/g_strife/a_strifeweapons.cpp b/src/g_strife/a_strifeweapons.cpp index 23deddd06..93507ed76 100644 --- a/src/g_strife/a_strifeweapons.cpp +++ b/src/g_strife/a_strifeweapons.cpp @@ -199,7 +199,7 @@ void A_JabDagger (AActor *actor) int power; power = actor->player->stamina / 10; - damage = (pr_jabdagger() & (power + 7)) * (power + 2); + damage = (pr_jabdagger() % (power + 8)) * (power + 2); if (actor->FindInventory()) { diff --git a/wadsrc/In_epi1.txt b/wadsrc/In_epi1.txt new file mode 100644 index 000000000..213e80cd4 --- /dev/null +++ b/wadsrc/In_epi1.txt @@ -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 +} + \ No newline at end of file diff --git a/wadsrc/In_epi2.txt b/wadsrc/In_epi2.txt new file mode 100644 index 000000000..4570b943e --- /dev/null +++ b/wadsrc/In_epi2.txt @@ -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 +} diff --git a/wadsrc/In_epi3.txt b/wadsrc/In_epi3.txt new file mode 100644 index 000000000..de009e437 --- /dev/null +++ b/wadsrc/In_epi3.txt @@ -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 +} diff --git a/wadsrc/In_htc1.txt b/wadsrc/In_htc1.txt new file mode 100644 index 000000000..808e66590 --- /dev/null +++ b/wadsrc/In_htc1.txt @@ -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 +} + diff --git a/wadsrc/In_htc2.txt b/wadsrc/In_htc2.txt new file mode 100644 index 000000000..d44a91b65 --- /dev/null +++ b/wadsrc/In_htc2.txt @@ -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 +} + diff --git a/wadsrc/In_htc3.txt b/wadsrc/In_htc3.txt new file mode 100644 index 000000000..7e85977be --- /dev/null +++ b/wadsrc/In_htc3.txt @@ -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 +} + diff --git a/wadsrc/Lockdefs.txt b/wadsrc/Lockdefs.txt new file mode 100644 index 000000000..8ca368de8 --- /dev/null +++ b/wadsrc/Lockdefs.txt @@ -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 +} + diff --git a/wadsrc/decals/decaldef.txt b/wadsrc/decals/decaldef.txt index 9a6086b71..afa7a5540 100644 --- a/wadsrc/decals/decaldef.txt +++ b/wadsrc/decals/decaldef.txt @@ -282,6 +282,12 @@ decal PlasmaScorch2 lowerdecal PlasmaScorchLower2 } +decalgroup PlasmaScorchLower +{ + PlasmaScorchLower1 1 + PlasmaScorchLower2 1 +} + decalgroup PlasmaScorch { PlasmaScorch1 1 @@ -989,8 +995,8 @@ generator MaceFX1 BaronScorch generator Blaster RailScorchLower generator BlasterFX1 HImpScorch generator Ripper HImpScorch -generator HornRodFX1 PlasmaScorch -generator HornRodFX2 PlasmaScorch +generator HornRodFX1 PlasmaScorchLower +generator HornRodFX2 PlasmaScorchLower generator PhoenixFX1 Scorch generator PhoenixFX2 Scorch @@ -1029,8 +1035,8 @@ generator Rebel4 BulletChip generator Rebel5 BulletChip generator Macil1 BulletChip generator Macil2 BulletChip -generator SentinelFX1 PlasmaScorch -generator SentinelFX2 PlasmaScorch +generator SentinelFX1 PlasmaScorchLower +generator SentinelFX2 PlasmaScorchLower generator Templar RailScorchLower generator Reaver BulletChip generator FlameMissile CacoScorch diff --git a/wadsrc/wadmake b/wadsrc/wadmake index 500baeda1..314e01b2a 100644 --- a/wadsrc/wadmake +++ b/wadsrc/wadmake @@ -39,6 +39,13 @@ zdoom.wad: zdoom.lst \ decals/cbowmark.png \ animdefs.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 \ xlat/doom.x \ xlat/heretic.x \ diff --git a/wadsrc/wadsrc.vcproj b/wadsrc/wadsrc.vcproj index 61a772607..4a893f619 100644 --- a/wadsrc/wadsrc.vcproj +++ b/wadsrc/wadsrc.vcproj @@ -44,6 +44,27 @@ + + + + + + + + + + + + + + diff --git a/wadsrc/zdoom.lst b/wadsrc/zdoom.lst index 5f1c4ac0b..75972307b 100644 --- a/wadsrc/zdoom.lst +++ b/wadsrc/zdoom.lst @@ -50,6 +50,13 @@ cbowmark decals/cbowmark.png animdefs animdefs.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