foxygit / doom Log in
commit aecddc60790bac4b44ce0e5790ec644da657571b
Author:     James Haley <haleyjd@hotmail.com>
AuthorDate: Fri Feb 4 01:37:51 2011 +0000
Commit:     James Haley <haleyjd@hotmail.com>
CommitDate: Fri Feb 4 01:37:51 2011 +0000

    Finished second pass through p_mobj.c - module should now be finalized
    except for explicitly tagged FIXME/TODO items in P_SpawnMapThing.

    Subversion-branch: /branches/strife-branch
    Subversion-revision: 2245
---
 src/strife/p_mobj.c   | 61 +++++++++++++++++++++++++++++++++++++++++----------
 src/strife/st_stuff.c |  2 +-
 2 files changed, 51 insertions(+), 12 deletions(-)

diff --git a/src/strife/p_mobj.c b/src/strife/p_mobj.c
index e53678b4..f20295b8 100644
--- a/src/strife/p_mobj.c
+++ b/src/strife/p_mobj.c
@@ -117,6 +117,11 @@ void P_ExplodeMissile (mobj_t* mo)
 //
 // P_XYMovement
 //
+// [STRIFE] Modifications for:
+// * No SKULLFLY logic (replaced by BOUNCE flag)
+// * Missiles can activate G1/GR line types
+// * Player walking logic
+//
 #define STOPSPEED       0x1000
 #define FRICTION        0xe800

@@ -278,6 +283,12 @@ void P_XYMovement (mobj_t* mo)
 //
 // P_ZMovement
 //
+// [STRIFE] Modifications for:
+// * 3D Object Clipping
+// * Different momz handling
+// * No SKULLFLY logic (replaced with BOUNCE)
+// * Missiles don't hit sky flats
+//
 void P_ZMovement (mobj_t* mo)
 {
     fixed_t	dist;
@@ -320,7 +331,7 @@ void P_ZMovement (mobj_t* mo)
             if (delta<0 && dist < -(delta*3) )
                 mo->z -= FLOATSPEED;
             else if (delta>0 && dist < (delta*3) )
-                mo->z += FLOATSPEED;
+                mo->z += FLOATSPEED;
         }

     }
@@ -353,6 +364,7 @@ void P_ZMovement (mobj_t* mo)
         // So we need to check that this is either retail or commercial
         // (but not doom2)

+        // [STRIFE] not applicable
         //int correct_lost_soul_bounce = gameversion >= exe_ultimate;

         if (/*correct_lost_soul_bounce &&*/ mo->flags & MF_BOUNCE)
@@ -371,7 +383,7 @@ void P_ZMovement (mobj_t* mo)
         if (mo->momz < 0)
         {
             if (mo->player
-                && mo->momz < -GRAVITY*8)
+                && mo->momz < -GRAVITY*8)
             {
                 // Squat down.
                 // Decrease viewheight for a moment
@@ -401,8 +413,10 @@ void P_ZMovement (mobj_t* mo)
         //

         // villsa [STRIFE] unused
-        /*if (!correct_lost_soul_bounce && mo->flags & MF_SKULLFLY)
-            mo->momz = -mo->momz;*/
+        /*
+        if (!correct_lost_soul_bounce && mo->flags & MF_SKULLFLY)
+            mo->momz = -mo->momz;
+        */

         // villsa [STRIFE] also check for MF_BOUNCE
         if ( (mo->flags & MF_MISSILE)
@@ -698,14 +712,13 @@ P_SpawnMobj
 //
 // P_RemoveMobj
 //
+// [STRIFE] Modifications for item respawn timing
+//
 mapthing_t  itemrespawnque[ITEMQUESIZE];
 int         itemrespawntime[ITEMQUESIZE];
 int         iquehead;
 int         iquetail;

-//
-// [STRIFE] Modifications to item respawn timing
-//
 void P_RemoveMobj (mobj_t* mobj)
 {
     // villsa [STRIFE] removed invuln/invis. sphere exceptions
@@ -803,6 +816,10 @@ void P_RespawnSpecials (void)
 // Most of the player structure stays unchanged
 //  between levels.
 //
+// [STRIFE] Modifications for:
+// * stonecold cheat, -workparm
+// * default inventory/questflags
+//
 void P_SpawnPlayer(mapthing_t* mthing)
 {
     player_t*   p;
@@ -888,6 +905,14 @@ void P_SpawnPlayer(mapthing_t* mthing)
 // The fields of the mapthing should
 // already be in host byte order.
 //
+// [STRIFE] Modifications for:
+// * No Lost Souls, item count
+// * New mapthing_t flag bits
+//
+// STRIFE-FIXME/STRIFE-TODO:
+// * 8-player support
+// * Restore I_Error for missing mapthings (8-player support is prerequisite)
+//
 void P_SpawnMapThing (mapthing_t* mthing)
 {
     int         i;
@@ -1012,6 +1037,10 @@ void P_SpawnMapThing (mapthing_t* mthing)
 //
 // P_SpawnPuff
 //
+// [STRIFE] Modifications for:
+// * No spawn tics randomization
+// * Player melee behavior
+//
 extern fixed_t attackrange;

 void
@@ -1057,6 +1086,10 @@ mobj_t* P_SpawnSparkPuff(fixed_t x, fixed_t y, fixed_t z)
 //
 // P_SpawnBlood
 //
+// [STRIFE] Modifications for:
+// * No spawn tics randomization
+// * Different damage ranges for state setting
+//
 void
 P_SpawnBlood
 ( fixed_t	x,
@@ -1095,6 +1128,9 @@ P_SpawnBlood
 // Moves the missile forward a bit
 //  and possibly explodes it right there.
 //
+// [STRIFE] Modifications for:
+// * No spawn tics randomization
+//
 void P_CheckMissileSpawn (mobj_t* th)
 {
     // villsa [STRIFE] unused
@@ -1140,6 +1176,8 @@ mobj_t *P_SubstNullMobj(mobj_t *mobj)
 //
 // P_SpawnMissile
 //
+// [STRIFE] Added MVIS inaccuracy
+//
 mobj_t*
 P_SpawnMissile
 ( mobj_t*	source,
@@ -1309,10 +1347,10 @@ mobj_t* P_SpawnPlayerMissile(mobj_t* source, mobjtype_t type)

 //
 // P_SpawnMortar
+//
 // villsa [STRIFE] new function
 // Spawn a high-arcing ballistic projectile
 //
-
 mobj_t* P_SpawnMortar(mobj_t *source, mobjtype_t type)
 {
     mobj_t* th;
@@ -1326,13 +1364,14 @@ mobj_t* P_SpawnMortar(mobj_t *source, mobjtype_t type)
     th->angle = an;
     an >>= ANGLETOFINESHIFT;

-    slope = P_AimLineAttack(source, source->angle, 1024*FRACUNIT);
-
+    // haleyjd 20110203: corrected order of function calls
     th->momx = FixedMul(th->info->speed, finecosine[an]);
     th->momy = FixedMul(th->info->speed, finesine[an]);
-    th->momz = FixedMul(th->info->speed, slope);

     P_CheckMissileSpawn(th);
+
+    slope = P_AimLineAttack(source, source->angle, 1024*FRACUNIT);
+    th->momz = FixedMul(th->info->speed, slope);

     return th;
 }
diff --git a/src/strife/st_stuff.c b/src/strife/st_stuff.c
index bd1061a9..cebc5bfc 100644
--- a/src/strife/st_stuff.c
+++ b/src/strife/st_stuff.c
@@ -331,7 +331,7 @@ cheatseq_t cheat_stealth    = CHEAT("gripper", 0);      // [STRIFE]: new cheat g
 cheatseq_t cheat_midas      = CHEAT("donnytrump", 0);   // [STRIFE]: new cheat
 cheatseq_t cheat_lego       = CHEAT("lego", 0);         // [STRIFE]: new cheat

-cheatseq_t	cheat_powerup[7] = // STRIFE-TODO
+cheatseq_t cheat_powerup[7] = // STRIFE-TODO
 {
     CHEAT("idbeholdv", 0),
     CHEAT("idbeholds", 0),