shithub: choc

Download patch

ref: 272bfd44b65ab79dc58422a56e8ef035da9c5784
parent: 5201de4ff2e4f236c5cf2be064aa506e376b80cb
author: James Haley <haleyjd@hotmail.com>
date: Thu Feb 3 00:38:47 EST 2011

Verified various changes in a second sweep through IDA. Fixes:
* P_NightmareRespawn fog z and flags restoration
* P_MobjThinker respawn time and NOTDMATCH exception
* P_RemoveMobj/P_RespawnSpecials timing
* P_SpawnBlood order-of-evaluation fix

Subversion-branch: /branches/strife-branch
Subversion-revision: 2243

--- a/src/strife/p_mobj.c
+++ b/src/strife/p_mobj.c
@@ -47,6 +47,8 @@
 // P_SetMobjState
 // Returns true if the mobj is still present.
 //
+// [STRIFE] Verified unmodified
+//
 int test;
 
 boolean
@@ -84,8 +86,10 @@
 
 
 //
-// P_ExplodeMissile  
+// P_ExplodeMissile
 //
+// [STRIFE] Removed randomization of deathstate tics
+//
 void P_ExplodeMissile (mobj_t* mo)
 {
     mo->momx = mo->momy = mo->momz = 0;
@@ -93,84 +97,88 @@
     P_SetMobjState (mo, mobjinfo[mo->type].deathstate);
 
     // villsa [STRIFE] unused
-    /*mo->tics -= P_Random()&3;
+    /*
+    mo->tics -= P_Random()&3;
 
     if (mo->tics < 1)
-	mo->tics = 1;*/
+        mo->tics = 1;
+    */
 
     mo->flags &= ~MF_MISSILE;
 
     if (mo->info->deathsound)
-	S_StartSound (mo, mo->info->deathsound);
+        S_StartSound (mo, mo->info->deathsound);
 }
 
 
 //
-// P_XYMovement  
+// P_XYMovement
 //
-#define STOPSPEED		0x1000
-#define FRICTION		0xe800
+#define STOPSPEED       0x1000
+#define FRICTION        0xe800
 
 void P_XYMovement (mobj_t* mo) 
-{ 	
-    fixed_t 	ptryx;
-    fixed_t	ptryy;
-    player_t*	player;
-    fixed_t	xmove;
-    fixed_t	ymove;
+{
+    fixed_t     ptryx;
+    fixed_t     ptryy;
+    player_t*   player;
+    fixed_t     xmove;
+    fixed_t     ymove;
 
     // villsa [STRIFE] unused
-    /*if (!mo->momx && !mo->momy)
+    /*
+    if (!mo->momx && !mo->momy)
     {
-	if (mo->flags & MF_SKULLFLY)
-	{
-	    // the skull slammed into something
-	    mo->flags &= ~MF_SKULLFLY;
-	    mo->momx = mo->momy = mo->momz = 0;
+        if (mo->flags & MF_SKULLFLY)
+        {
+            // the skull slammed into something
+            mo->flags &= ~MF_SKULLFLY;
+            mo->momx = mo->momy = mo->momz = 0;
 
-	    P_SetMobjState (mo, mo->info->spawnstate);
-	}
-	return;
-    }*/
-	
+            P_SetMobjState (mo, mo->info->spawnstate);
+        }
+        return;
+    }
+    */
+
     player = mo->player;
-		
+
     if (mo->momx > MAXMOVE)
-	mo->momx = MAXMOVE;
+        mo->momx = MAXMOVE;
     else if (mo->momx < -MAXMOVE)
-	mo->momx = -MAXMOVE;
+        mo->momx = -MAXMOVE;
 
     if (mo->momy > MAXMOVE)
-	mo->momy = MAXMOVE;
+        mo->momy = MAXMOVE;
     else if (mo->momy < -MAXMOVE)
-	mo->momy = -MAXMOVE;
-		
+        mo->momy = -MAXMOVE;
+
     xmove = mo->momx;
     ymove = mo->momy;
-	
+
     do
     {
-	if (xmove > MAXMOVE/2 || ymove > MAXMOVE/2)
-	{
-	    ptryx = mo->x + xmove/2;
-	    ptryy = mo->y + ymove/2;
-	    xmove >>= 1;
-	    ymove >>= 1;
-	}
-	else
-	{
-	    ptryx = mo->x + xmove;
-	    ptryy = mo->y + ymove;
-	    xmove = ymove = 0;
-	}
-		
-	if (!P_TryMove (mo, ptryx, ptryy))
-	{
-	    // blocked move
-	    if (mo->player)
-	    {	// try to slide along it
-		P_SlideMove (mo);
-	    }
+        if (xmove > MAXMOVE/2 || ymove > MAXMOVE/2)
+        {
+            ptryx = mo->x + xmove/2;
+            ptryy = mo->y + ymove/2;
+            xmove >>= 1;
+            ymove >>= 1;
+        }
+        else
+        {
+            ptryx = mo->x + xmove;
+            ptryy = mo->y + ymove;
+            xmove = ymove = 0;
+        }
+
+        if (!P_TryMove (mo, ptryx, ptryy))
+        {
+            // blocked move
+            if (mo->player)
+            {   // try to slide along it
+                P_SlideMove (mo);
+            }
             // villsa [STRIFE] check for bouncy missiles
             else if(mo->flags & MF_BOUNCE)
             {
@@ -182,78 +190,78 @@
                 else
                     mo->momx = -mo->momx;
 
-
                 xmove = 0;
                 ymove = 0;
             }
-	    else if (mo->flags & MF_MISSILE)
-	    {
-		// explode a missile
-		if (ceilingline &&
-		    ceilingline->backsector &&
-		    ceilingline->backsector->ceilingpic == skyflatnum)
-		{
-		    // Hack to prevent missiles exploding
-		    // against the sky.
-		    // Does not handle sky floors.
-		    P_RemoveMobj (mo);
-		    return;
-		}
-		P_ExplodeMissile (mo);
-	    }
-	    else
-		mo->momx = mo->momy = 0;
-	}
+            else if (mo->flags & MF_MISSILE)
+            {
+                // explode a missile
+                if (ceilingline &&
+                    ceilingline->backsector &&
+                    ceilingline->backsector->ceilingpic == skyflatnum)
+                {
+                    // Hack to prevent missiles exploding
+                    // against the sky.
+                    // Does not handle sky floors.
+                    P_RemoveMobj (mo);
+                    return;
+                }
+                P_ExplodeMissile (mo);
+            }
+            else
+                mo->momx = mo->momy = 0;
+        }
     } while (xmove || ymove);
     
     // slow down
     if (player && player->cheats & CF_NOMOMENTUM)
     {
-	// debug option for no sliding at all
-	mo->momx = mo->momy = 0;
-	return;
+        // debug option for no sliding at all
+        mo->momx = mo->momy = 0;
+        return;
     }
 
-    if (mo->flags & (MF_MISSILE | MF_BOUNCE) )  // villsa [STRIFE] replace skullfly flag with MF_BOUNCE
-	return; 	// no friction for missiles ever
-		
+    // villsa [STRIFE] replace skullfly flag with MF_BOUNCE
+    if (mo->flags & (MF_MISSILE | MF_BOUNCE) )
+        return;     // no friction for missiles ever
+
     if (mo->z > mo->floorz)
-	return;		// no friction when airborne
+        return;     // no friction when airborne
 
     if (mo->flags & MF_CORPSE)
     {
-	// do not stop sliding
-	//  if halfway off a step with some momentum
-	if (mo->momx > FRACUNIT/4
-	    || mo->momx < -FRACUNIT/4
-	    || mo->momy > FRACUNIT/4
-	    || mo->momy < -FRACUNIT/4)
-	{
-	    if (mo->floorz != mo->subsector->sector->floorheight)
-		return;
-	}
+        // do not stop sliding
+        //  if halfway off a step with some momentum
+        if (mo->momx > FRACUNIT/4
+            || mo->momx < -FRACUNIT/4
+            || mo->momy > FRACUNIT/4
+            || mo->momy < -FRACUNIT/4)
+        {
+            if (mo->floorz != mo->subsector->sector->floorheight)
+                return;
+        }
     }
 
     if (mo->momx > -STOPSPEED
-	&& mo->momx < STOPSPEED
-	&& mo->momy > -STOPSPEED
-	&& mo->momy < STOPSPEED
-	&& (!player
-	    || (player->cmd.forwardmove== 0
-		&& player->cmd.sidemove == 0 ) ) )
+        && mo->momx < STOPSPEED
+        && mo->momy > -STOPSPEED
+        && mo->momy < STOPSPEED
+        && (!player
+            || (player->cmd.forwardmove == 0
+                && player->cmd.sidemove == 0 ) ) )
     {
-	// if in a walking frame, stop moving
-        // villsa [STRIFE] TODO - verify
-	if ( player&&(unsigned)((player->mo->state - states)- S_PLAY_01) < 4)
-	    P_SetMobjState (player->mo, S_PLAY_00);
-	
-	mo->momx = 0;
-	mo->momy = 0;
+        // if in a walking frame, stop moving
+        // villsa [STRIFE]: different player state (haleyjd - verified 02/02/11)
+        if ( player&&(unsigned)((player->mo->state - states) - S_PLAY_01) < 4)
+            P_SetMobjState (player->mo, S_PLAY_00);
+
+        mo->momx = 0;
+        mo->momy = 0;
     }
     else
     {
-	mo->momx = FixedMul (mo->momx, FRICTION);
-	mo->momy = FixedMul (mo->momy, FRICTION);
+        mo->momx = FixedMul (mo->momx, FRICTION);
+        mo->momy = FixedMul (mo->momy, FRICTION);
     }
 }
 
@@ -440,57 +448,69 @@
 //
 // P_NightmareRespawn
 //
+// [STRIFE] Modifications for:
+// * Destination fog z coordinate
+// * Restoration of all Strife mapthing flags
+//
 void
 P_NightmareRespawn (mobj_t* mobj)
 {
-    fixed_t		x;
-    fixed_t		y;
-    fixed_t		z; 
-    subsector_t*	ss; 
-    mobj_t*		mo;
-    mapthing_t*		mthing;
-		
+    fixed_t      x;
+    fixed_t      y;
+    fixed_t      z; 
+    mobj_t*      mo;
+    mapthing_t*  mthing;
+
     x = mobj->spawnpoint.x << FRACBITS; 
     y = mobj->spawnpoint.y << FRACBITS; 
 
     // somthing is occupying it's position?
     if (!P_CheckPosition (mobj, x, y) ) 
-	return;	// no respwan
+        return;	// no respwan
 
     // spawn a teleport fog at old spot
     // because of removal of the body?
     mo = P_SpawnMobj (mobj->x,
-		      mobj->y,
-		      mobj->subsector->sector->floorheight , MT_TFOG); 
+                      mobj->y,
+                      mobj->subsector->sector->floorheight , MT_TFOG); 
     // initiate teleport sound
     S_StartSound (mo, sfx_telept);
 
     // spawn a teleport fog at the new spot
-    ss = R_PointInSubsector (x,y); 
+    //ss = R_PointInSubsector (x,y); 
 
-    mo = P_SpawnMobj (x, y, ss->sector->floorheight , MT_TFOG); 
+    // haleyjd [STRIFE]: Uses ONFLOORZ instead of ss->sector->floorheight
+    mo = P_SpawnMobj (x, y, ONFLOORZ , MT_TFOG); 
 
     S_StartSound (mo, sfx_telept);
 
     // spawn the new monster
     mthing = &mobj->spawnpoint;
-	
+
     // spawn it
     if (mobj->info->flags & MF_SPAWNCEILING)
-	z = ONCEILINGZ;
+        z = ONCEILINGZ;
     else
-	z = ONFLOORZ;
+        z = ONFLOORZ;
 
     // inherit attributes from deceased one
     mo = P_SpawnMobj (x,y,z, mobj->type);
-    mo->spawnpoint = mobj->spawnpoint;	
+    mo->spawnpoint = mobj->spawnpoint;
     mo->angle = ANG45 * (mthing->angle/45);
 
     if (mthing->options & MTF_AMBUSH)
-	mo->flags |= MF_AMBUSH;
+        mo->flags |= MF_AMBUSH;
+    if (mthing->options & MTF_STAND)       // [STRIFE] Standing mode, for NPCs
+        mobj->flags |= MF_STAND;
+    if (mthing->options & MTF_FRIEND)      // [STRIFE] Allies
+        mobj->flags |= MF_ALLY;
+    if (mthing->options & MTF_TRANSLUCENT) // [STRIFE] Translucent object
+        mobj->flags |= MF_SHADOW;
+    if (mthing->options & MTF_MVIS)        // [STRIFE] Alt. Translucency
+        mobj->flags |= MF_MVIS;
 
     mo->reactiontime = 18;
-	
+
     // remove the old monster,
     P_RemoveMobj (mobj);
 }
@@ -499,20 +519,25 @@
 //
 // P_MobjThinker
 //
+// [STRIFE] Modified for:
+// * Terrain effects
+// * Stonecold cheat
+// * Altered skill 5 respawn behavior
+//
 void P_MobjThinker (mobj_t* mobj)
 {
     // momentum movement
     if (mobj->momx
-	|| mobj->momy
-	/*|| (mobj->flags&MF_SKULLFLY)*/ )  // villsa [STRIFE] unused
+        || mobj->momy
+        /*|| (mobj->flags&MF_SKULLFLY)*/ )  // villsa [STRIFE] unused
     {
-	P_XYMovement (mobj);
+        P_XYMovement (mobj);
 
-	// FIXME: decent NOP/NULL/Nil function pointer please.
-	if (mobj->thinker.function.acv == (actionf_v) (-1))
-	    return;		// mobj was removed
+        // FIXME: decent NOP/NULL/Nil function pointer please.
+        if (mobj->thinker.function.acv == (actionf_v) (-1))
+            return;     // mobj was removed
 
-        // villsa [STRIFE]
+        // villsa [STRIFE] terrain clipping
         if(P_GetTerrainType(mobj) == FLOOR_SOLID)
             mobj->flags &= ~MF_FEETCLIPPED;
         else
@@ -520,22 +545,22 @@
 
     }
     if ( (mobj->z != mobj->floorz && !(mobj->flags & MF_NOGRAVITY)) // villsa [STRIFE]
-	 || mobj->momz )
+        || mobj->momz )
     {
-	P_ZMovement (mobj);
-	
-	// FIXME: decent NOP/NULL/Nil function pointer please.
-	if (mobj->thinker.function.acv == (actionf_v) (-1))
-	    return;		// mobj was removed
+        P_ZMovement (mobj);
 
-        // villsa [STRIFE]
+        // FIXME: decent NOP/NULL/Nil function pointer please.
+        if (mobj->thinker.function.acv == (actionf_v) (-1))
+            return;     // mobj was removed
+
+        // villsa [STRIFE] terrain clipping and sounds
         if(P_GetTerrainType(mobj) == FLOOR_SOLID)
-             mobj->flags &= ~MF_FEETCLIPPED;
-         else
-         {
-             S_StartSound(mobj, sfx_wsplsh);
-             mobj->flags |= MF_FEETCLIPPED;
-         }
+            mobj->flags &= ~MF_FEETCLIPPED;
+        else
+        {
+            S_StartSound(mobj, sfx_wsplsh);
+            mobj->flags |= MF_FEETCLIPPED;
+        }
 
     }
 
@@ -544,7 +569,7 @@
     // calling action functions at transitions
     if (mobj->tics != -1)
     {
-	mobj->tics--;
+        mobj->tics--;
 
         // villsa [STRIFE] stonecold cheat
         if(stonecold)
@@ -552,35 +577,39 @@
             if(mobj->flags & MF_COUNTKILL)
                 P_DamageMobj(mobj, mobj, mobj, 10);
         }
-		
-	// you can cycle through multiple states in a tic
-	if (!mobj->tics)
-	    if (!P_SetMobjState (mobj, mobj->state->nextstate) )
-		return;		// freed itself
+
+        // you can cycle through multiple states in a tic
+        if (!mobj->tics)
+            if (!P_SetMobjState (mobj, mobj->state->nextstate) )
+                return;     // freed itself
     }
     else
     {
-	// check for nightmare respawn
-	if (! (mobj->flags & MF_COUNTKILL) )
-	    return;
+        // check for nightmare respawn
+        if (! (mobj->flags & MF_COUNTKILL) )
+            return;
 
-	if (!respawnmonsters)
-	    return;
+        if (!respawnmonsters)
+            return;
 
-	mobj->movecount++;
+        mobj->movecount++;
 
-	if (mobj->movecount < 12*TICRATE)
-	    return;
+        // haleyjd [STRIFE]: respawn time increased from 12 to 16
+        if (mobj->movecount < 16*TICRATE)
+            return;
 
-	if ( leveltime&31 )
-	    return;
+        if ( leveltime&31 )
+            return;
 
-	if (P_Random () > 4)
-	    return;
+        if (P_Random () > 4)
+            return;
 
-	P_NightmareRespawn (mobj);
-    }
+        // haleyjd [STRIFE]: NOTDMATCH things don't respawn
+        if(mobj->flags & MF_NOTDMATCH)
+            return;
 
+        P_NightmareRespawn (mobj);
+    }
 }
 
 
@@ -587,6 +616,8 @@
 //
 // P_SpawnMobj
 //
+// [STRIFE] Modifications to reactiontime and for terrain types.
+//
 mobj_t*
 P_SpawnMobj
 ( fixed_t	x,
@@ -657,28 +688,29 @@
 //
 // P_RemoveMobj
 //
-mapthing_t	itemrespawnque[ITEMQUESIZE];
-int		itemrespawntime[ITEMQUESIZE];
-int		iquehead;
-int		iquetail;
+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
     if ((mobj->flags & MF_SPECIAL)
-	&& !(mobj->flags & MF_DROPPED)
-	/*&& (mobj->type != MT_INV) // villsa [STRIFE] unused
-	&& (mobj->type != MT_INS)*/)
+        && !(mobj->flags & MF_DROPPED))
     {
-	itemrespawnque[iquehead] = mobj->spawnpoint;
-	itemrespawntime[iquehead] = leveltime;
-	iquehead = (iquehead+1)&(ITEMQUESIZE-1);
+        itemrespawnque[iquehead] = mobj->spawnpoint;
+        itemrespawntime[iquehead] = leveltime + 30*TICRATE; // [STRIFE]
+        iquehead = (iquehead+1)&(ITEMQUESIZE-1);
 
-	// lose one off the end?
-	if (iquehead == iquetail)
-	    iquetail = (iquetail+1)&(ITEMQUESIZE-1);
+        // lose one off the end?
+        if (iquehead == iquetail)
+            iquetail = (iquetail+1)&(ITEMQUESIZE-1);
     }
-	
+
     // unlink from sector and block lists
     P_UnsetThingPosition (mobj);
     
@@ -695,35 +727,37 @@
 //
 // P_RespawnSpecials
 //
+// [STRIFE] modification to item respawn time handling
+//
 void P_RespawnSpecials (void)
 {
-    fixed_t		x;
-    fixed_t		y;
-    fixed_t		z;
+    fixed_t     x;
+    fixed_t     y;
+    fixed_t     z;
     
-    subsector_t*	ss; 
-    mobj_t*		mo;
-    mapthing_t*		mthing;
+    subsector_t*    ss; 
+    mobj_t*         mo;
+    mapthing_t*     mthing;
     
-    int			i;
+    int         i;
 
     // only respawn items in deathmatch
     if (deathmatch != 2)
-	return;	// 
+        return;
 
     // nothing left to respawn?
     if (iquehead == iquetail)
-	return;		
+        return;
 
-    // wait at least 30 seconds
-    if (leveltime - itemrespawntime[iquetail] < 30*TICRATE)
-	return;			
+    // haleyjd [STRIFE]: 30 second wait is not accounted for here, see above.
+    if (leveltime < itemrespawntime[iquetail])
+        return;
 
     mthing = &itemrespawnque[iquetail];
-	
+
     x = mthing->x << FRACBITS; 
     y = mthing->y << FRACBITS; 
-	  
+
     // spawn a teleport fog at the new spot
     ss = R_PointInSubsector (x,y); 
     mo = P_SpawnMobj (x, y, ss->sector->floorheight , MT_IFOG); 
@@ -732,18 +766,18 @@
     // find which type to spawn
     for (i=0 ; i< NUMMOBJTYPES ; i++)
     {
-	if (mthing->type == mobjinfo[i].doomednum)
-	    break;
+        if (mthing->type == mobjinfo[i].doomednum)
+            break;
     }
-    
+
     // spawn it
     if (mobjinfo[i].flags & MF_SPAWNCEILING)
-	z = ONCEILINGZ;
+        z = ONCEILINGZ;
     else
-	z = ONFLOORZ;
+        z = ONFLOORZ;
 
     mo = P_SpawnMobj (x,y,z, i);
-    mo->spawnpoint = *mthing;	
+    mo->spawnpoint = *mthing;
     mo->angle = ANG45 * (mthing->angle/45);
 
     // pull it from the que
@@ -772,7 +806,7 @@
 
     // not playing?
     if(!playeringame[mthing->type-1])
-        return;					
+        return;
 
     p = &players[mthing->type-1];
 
@@ -785,10 +819,10 @@
     mobj    = P_SpawnMobj (x,y,z, MT_PLAYER);
 
     // set color translations for player sprites
-    if(mthing->type > 1)		
+    if(mthing->type > 1)
         mobj->flags |= (mthing->type-1)<<MF_TRANSSHIFT;
 
-    mobj->angle	= ANG45 * (mthing->angle/45);
+    mobj->angle  = ANG45 * (mthing->angle/45);
     mobj->player = p;
     mobj->health = p->health;
 
@@ -810,11 +844,10 @@
 
     // villsa [STRIFE] what a nasty hack...
     if(gamemap == 10)
-      p->weaponowned[wp_sigil] = true;
+        p->weaponowned[wp_sigil] = true;
 
-
-    // villsa [STRIFE] instead of giving cards in deathmatch mode, set
-    // accuracy to 50 and give all quest flags
+    // villsa [STRIFE] instead of just giving cards in deathmatch mode, also
+    // set accuracy to 50 and give all quest flags
     if(deathmatch)
     {
         int i;
@@ -835,7 +868,7 @@
         // wake up the status bar
         ST_Start ();
         // wake up the heads up text
-        HU_Start ();		
+        HU_Start ();
     }
 }
 
@@ -847,12 +880,12 @@
 //
 void P_SpawnMapThing (mapthing_t* mthing)
 {
-    int			i;
-    int			bit;
-    mobj_t*		mobj;
-    fixed_t		x;
-    fixed_t		y;
-    fixed_t		z;
+    int         i;
+    int         bit;
+    mobj_t*     mobj;
+    fixed_t     x;
+    fixed_t     y;
+    fixed_t     z;
 
     // count deathmatch start positions
     if (mthing->type == 11)
@@ -897,8 +930,8 @@
         bit = 1<<(gameskill-1);
 
     if (!(mthing->options & bit) )
-	return;
-	
+        return;
+
     // find which type to spawn
     for (i=0 ; i< NUMMOBJTYPES ; i++)
         if (mthing->type == mobjinfo[i].doomednum)
@@ -917,7 +950,7 @@
     // don't spawn keycards and players in deathmatch
     if (deathmatch && mobjinfo[i].flags & MF_NOTDMATCH)
         return;
-		
+
     // don't spawn any monsters if -nomonsters
     // villsa [STRIFE] Removed MT_SKULL
     if (nomonsters && (mobjinfo[i].flags & MF_COUNTKILL))
@@ -941,8 +974,10 @@
         totalkills++;
 
     // villsa [STRIFE] unused
-    /*if (mobj->flags & MF_COUNTITEM)
-          totalitems++;*/
+    /*
+    if (mobj->flags & MF_COUNTITEM)
+        totalitems++;
+    */
 
     mobj->angle = ANG45 * (mthing->angle/45);
     if (mthing->options & MTF_AMBUSH)
@@ -978,13 +1013,13 @@
     mobj_t*	th;
     int t = P_Random();
 
-    z += ((t - P_Random())<<10);
+    z += ((t - P_Random()) << 10);
 
     // [STRIFE] Unused
     //th->momz = FRACUNIT;
     //th->tics -= P_Random()&3;
 
-    th = P_SpawnMobj (x,y,z, MT_STRIFEPUFF); // [STRIFE]: new type
+    th = P_SpawnMobj(x, y, z, MT_STRIFEPUFF); // [STRIFE]: new type
 
     // don't make punches spark on the wall
     // [STRIFE] Use a separate melee attack range for the player
@@ -992,8 +1027,10 @@
         P_SetMobjState(th, S_POW2_00); // 141
 
     // villsa [STRIFE] unused
-    /*if (th->tics < 1)
-	th->tics = 1;*/
+    /*
+    if (th->tics < 1)
+        th->tics = 1;
+    */
 }
 
 //
@@ -1007,8 +1044,6 @@
     return P_SpawnMobj(x, y, ((t - P_Random()) << 10) + z, MT_SPARKPUFF);
 }
 
-
-
 //
 // P_SpawnBlood
 // 
@@ -1020,24 +1055,27 @@
   int		damage )
 {
     mobj_t*	th;
-
-    z += ((P_Random()-P_Random())<<10);
-    th = P_SpawnMobj (x,y,z, MT_BLOOD_DEATH);
+    
+    int temp = P_Random();
+    z += (temp - P_Random()) << 10;
+    th = P_SpawnMobj(x, y, z, MT_BLOOD_DEATH);
     th->momz = FRACUNIT*2;
     
-    //th->tics -= P_Random()&3; // villsa [STRIFE] unused
-
     // villsa [STRIFE] unused
-    /*if (th->tics < 1)
-        th->tics = 1;*/
+    /*
+    th->tics -= P_Random()&3; 
 
+    if (th->tics < 1)
+        th->tics = 1;
+    */
+
     // villsa [STRIFE] different checks for damage range
-    if (damage >= 10 && damage <= 13)
-        P_SetMobjState (th,S_BLOD_00);
-    else if (damage < 10 && damage >= 7)
-        P_SetMobjState (th,S_BLOD_01);
-    else if (damage < 7)
-        P_SetMobjState (th,S_BLOD_02);
+    if(damage >= 10 && damage <= 13)
+        P_SetMobjState(th, S_BLOD_00);
+    else if(damage >= 7 && damage < 10)
+        P_SetMobjState(th, S_BLOD_01);
+    else if(damage < 7)
+        P_SetMobjState(th, S_BLOD_02);
 }
 
 
@@ -1050,9 +1088,11 @@
 void P_CheckMissileSpawn (mobj_t* th)
 {
     // villsa [STRIFE] unused
-    /*th->tics -= P_Random()&3;
+    /*
+    th->tics -= P_Random()&3;
     if (th->tics < 1)
-	th->tics = 1;*/
+        th->tics = 1;
+    */
     
     // move a little forward so an angle can
     // be computed if it immediately explodes
@@ -1061,7 +1101,7 @@
     th->z += (th->momz>>1);
 
     if (!P_TryMove (th, th->x, th->y))
-	P_ExplodeMissile (th);
+        P_ExplodeMissile (th);
 }
 
 // Certain functions assume that a mobj_t pointer is non-NULL,