foxygit / doom Log in
commit 66cf5dd1d216b71899831fe8cbb676057c5757f7
Author:     James Haley <haleyjd@hotmail.com>
AuthorDate: Wed Mar 2 00:51:07 2011 +0000
Commit:     James Haley <haleyjd@hotmail.com>
CommitDate: Wed Mar 2 00:51:07 2011 +0000

    Fixed automap background color, size of plrkilledmsg buffer, a bug which
    caused the scanner to never be depleted from the inventory, and
    emulation of seemingly inconsequential undefined behavior in
    P_XYMovement via use of negative numspechit is currently addressed by
    changing the branch condition to > 0.

    Subversion-branch: /branches/strife-branch
    Subversion-revision: 2286
---
 src/strife/am_map.c   | 16 ++++++++--------
 src/strife/d_main.c   |  3 ++-
 src/strife/p_dialog.c |  2 +-
 src/strife/p_inter.c  |  2 +-
 src/strife/p_mobj.c   |  9 +++++++--
 src/strife/p_user.c   | 11 +----------
 src/strife/r_things.c |  2 +-
 7 files changed, 21 insertions(+), 24 deletions(-)

diff --git a/src/strife/am_map.c b/src/strife/am_map.c
index 48c6b475..45b46c9b 100644
--- a/src/strife/am_map.c
+++ b/src/strife/am_map.c
@@ -54,12 +54,12 @@


 // Automap colors
-#define BACKGROUND	0
-#define WALLCOLORS	5           // villsa [STRIFE]
-#define WALLRANGE	16
-#define TSWALLCOLORS	16
-#define FDWALLCOLORS	122         // villsa [STRIFE]
-#define CDWALLCOLORS	116
+#define BACKGROUND      240         // haleyjd [STRIFE]
+#define WALLCOLORS      5           // villsa [STRIFE]
+#define WALLRANGE       16
+#define TSWALLCOLORS    16
+#define FDWALLCOLORS    122         // villsa [STRIFE]
+#define CDWALLCOLORS    116
 #define CTWALLCOLORS    19          // villsa [STRIFE]
 #define SPWALLCOLORS    243         // villsa [STRIFE]
 #define THINGCOLORS     233         // villsa [STRIFE]
@@ -1382,14 +1382,14 @@ void AM_Drawer (void)

     // villsa [STRIFE] not used
     /*if(grid)
-	AM_drawGrid(GRIDCOLORS);*/
+        AM_drawGrid(GRIDCOLORS);*/

     AM_drawWalls();
     AM_drawPlayers();

     // villsa [STRIFE] draw things when map powerup is enabled
     if(cheating == 2 || plr->powers[pw_allmap] > 1)
-	AM_drawThings();
+        AM_drawThings();

     // villsa [STRIFE] not used
     //AM_drawCrosshair(XHAIRCOLORS);
diff --git a/src/strife/d_main.c b/src/strife/d_main.c
index c414a337..6367818a 100644
--- a/src/strife/d_main.c
+++ b/src/strife/d_main.c
@@ -1279,7 +1279,8 @@ static void D_InitIntroSequence(void)
     }
     /*
     // STRIFE-FIXME: This was actually displayed on a special textmode
-    // screen with ANSI color codes...
+    // screen with ANSI color codes... would require use of textlib to
+    // emulate properly...
     else
     {
         puts(DEH_String("Conversation ON"));
diff --git a/src/strife/p_dialog.c b/src/strife/p_dialog.c
index 55d886e5..01887686 100644
--- a/src/strife/p_dialog.c
+++ b/src/strife/p_dialog.c
@@ -733,7 +733,7 @@ boolean P_GiveItemToPlayer(player_t *player, int sprnum, mobjtype_t type)
     // mobjtypes and to implement missing logic.
     switch(sprnum)
     {
-    case SPR_HELT: // STRIFE-TODO: verify - I believe this is related to a cheat
+    case SPR_HELT: // This is given only by the "DONNYTRUMP" cheat (aka Midas)
         P_GiveInventoryItem(player, SPR_HELT, MT_TOKEN_TOUGHNESS);
         P_GiveInventoryItem(player, SPR_GUNT, MT_TOKEN_ACCURACY);

diff --git a/src/strife/p_inter.c b/src/strife/p_inter.c
index b5af6b13..4a7a173d 100644
--- a/src/strife/p_inter.c
+++ b/src/strife/p_inter.c
@@ -748,7 +748,7 @@ void P_TouchSpecialThing(mobj_t* special, mobj_t* toucher)
 }

 // villsa [STRIFE]
-static char plrkilledmsg[76];
+static char plrkilledmsg[80];

 //
 // KillMobj
diff --git a/src/strife/p_mobj.c b/src/strife/p_mobj.c
index f0743125..f8676a95 100644
--- a/src/strife/p_mobj.c
+++ b/src/strife/p_mobj.c
@@ -200,10 +200,15 @@ void P_XYMovement (mobj_t* mo)
             else if (mo->flags & MF_MISSILE)
             {
                 // haley 20110203: [STRIFE]
-                // This modification allows missiles to activate shoot specials
+                // This modification allows missiles to activate shoot specials.
+                // *** BUG: In vanilla Strife the second condition is simply
+                // if(numspechit). However, numspechit can be negative, and
+                // when it is, this accesses spechit[-2]. This always causes the
+                // DOS exe to read from NULL, and the 'special' value there (in
+                // DOS 6.22 at least) is 0x70, which does nothing.
                 if(blockingline && blockingline->special)
                     P_ShootSpecialLine(mo, blockingline);
-                if(numspechit)
+                if(numspechit > 0)
                     P_ShootSpecialLine(mo, spechit[numspechit-1]);

                 // explode a missile
diff --git a/src/strife/p_user.c b/src/strife/p_user.c
index fa521ace..718eb119 100644
--- a/src/strife/p_user.c
+++ b/src/strife/p_user.c
@@ -884,19 +884,15 @@ boolean P_ItemBehavior(player_t* player, int item)
     {
     case SPR_ARM1:  // 136
         return P_GiveArmor(player, 2);
-        break;

     case SPR_ARM2:  // 137
         return P_GiveArmor(player, 1);
-        break;

     case SPR_SHD1:  // 186
         return P_GivePower(player, pw_invisibility);
-        break;

     case SPR_MASK:  // 187
         return P_GivePower(player, pw_ironfeet);
-        break;

     case SPR_PMUP:  // 191
         if(!player->powers[pw_allmap])
@@ -905,27 +901,22 @@ boolean P_ItemBehavior(player_t* player, int item)
             return false;
         }
         player->powers[pw_allmap] = PMUPTICS;
-        break;
+        return true; // haleyjd 20110228: repaired

     case SPR_STMP:  // 180
         return P_GiveBody(player, 10);
-        break;

     case SPR_MDKT:  // 181
         return P_GiveBody(player, 25);
-        break;

     case SPR_FULL:  // 130
         return P_GiveBody(player, 200);
-        break;

     case SPR_BEAC:  // 135
         return P_SpawnTeleportBeacon(player);
-        break;

     case SPR_TARG:  // 108
         return P_GivePower(player, pw_targeter);
-        break;
     }

     return false;
diff --git a/src/strife/r_things.c b/src/strife/r_things.c
index bda7a81c..a4a5595d 100644
--- a/src/strife/r_things.c
+++ b/src/strife/r_things.c
@@ -772,7 +772,7 @@ void R_DrawPSprite (pspdef_t* psp)
     vis->patch = lump;

     if (viewplayer->powers[pw_invisibility] > 4*32
-        || viewplayer->powers[pw_invisibility] & 8)
+        || (viewplayer->powers[pw_invisibility] & 8))
     {
         // shadow draw
         vis->colormap   = spritelights[MAXLIGHTSCALE-1];