diff --git a/src/dehacked.c b/src/dehacked.c
index 3972cd171c95454ba13b53f5c2bceb8652f3e9e5..a726ecbc1fa32b6573b373acc261b75af81ca5ce 100644
--- a/src/dehacked.c
+++ b/src/dehacked.c
@@ -2952,7 +2952,7 @@ static void readmaincfg(MYFILE *f)
 			else if (fastcmp(word, "USENIGHTSSS"))
 			{
 				DEH_WriteUndoline(word, va("%d", useNightsSS), UNDO_NONE);
-				useNightsSS = (UINT8)(value || word2[0] == 'T' || word2[0] == 'Y');
+				useNightsSS = (value || word2[0] == 'T' || word2[0] == 'Y');
 			}
 			else if (fastcmp(word, "REDTEAM"))
 			{
@@ -3026,7 +3026,7 @@ static void readmaincfg(MYFILE *f)
 			else if (fastcmp(word, "LOOPTITLE"))
 			{
 				DEH_WriteUndoline(word, va("%d", looptitle), UNDO_NONE);
-				looptitle = (boolean)(value || word2[0] == 'T' || word2[0] == 'Y');
+				looptitle = (value || word2[0] == 'T' || word2[0] == 'Y');
 			}
 			else if (fastcmp(word, "TITLESCROLLSPEED"))
 			{
@@ -3044,7 +3044,7 @@ static void readmaincfg(MYFILE *f)
 			else if (fastcmp(word, "DISABLESPEEDADJUST"))
 			{
 				DEH_WriteUndoline(word, va("%d", disableSpeedAdjust), UNDO_NONE);
-				disableSpeedAdjust = (UINT8)get_number(word2);
+				disableSpeedAdjust = (value || word2[0] == 'T' || word2[0] == 'Y');
 			}
 			else if (fastcmp(word, "NUMDEMOS"))
 			{
diff --git a/src/p_polyobj.c b/src/p_polyobj.c
index 8d0f4dab65058150f737784827c74990127046c8..82c57c85bdbaf2fa5f1ef0daa17ddfc60f4d3986 100644
--- a/src/p_polyobj.c
+++ b/src/p_polyobj.c
@@ -1859,6 +1859,9 @@ void T_PolyObjWaypoint(polywaypoint_t *th)
 		diffz = po->lines[0]->backsector->floorheight - (target->z - amtz);
 		po->lines[0]->backsector->floorheight = target->z - amtz;
 		po->lines[0]->backsector->ceilingheight = target->z + amtz;
+		// Sal: Remember to check your sectors!
+		P_CheckSector(po->lines[0]->frontsector, (boolean)(po->damage));
+		P_CheckSector(po->lines[0]->backsector, (boolean)(po->damage));
 		// Apply action to mirroring polyobjects as well
 		start = 0;
 		while ((po = Polyobj_GetChild(oldpo, &start)))
@@ -1870,6 +1873,9 @@ void T_PolyObjWaypoint(polywaypoint_t *th)
 			// TODO: use T_MovePlane
 			po->lines[0]->backsector->floorheight += diffz; // move up/down by same amount as the parent did
 			po->lines[0]->backsector->ceilingheight += diffz;
+			// Sal: Remember to check your sectors!
+			P_CheckSector(po->lines[0]->frontsector, (boolean)(po->damage));
+			P_CheckSector(po->lines[0]->backsector, (boolean)(po->damage));
 		}
 
 		po = oldpo;
@@ -2030,6 +2036,9 @@ void T_PolyObjWaypoint(polywaypoint_t *th)
 	// TODO: use T_MovePlane
 	po->lines[0]->backsector->floorheight += momz;
 	po->lines[0]->backsector->ceilingheight += momz;
+	// Sal: Remember to check your sectors!
+	P_CheckSector(po->lines[0]->frontsector, (boolean)(po->damage)); // frontsector is NEEDED for crushing
+	P_CheckSector(po->lines[0]->backsector, (boolean)(po->damage)); // backsector may not be necessary, but just in case
 
 	// Apply action to mirroring polyobjects as well
 	start = 0;
@@ -2042,6 +2051,9 @@ void T_PolyObjWaypoint(polywaypoint_t *th)
 		// TODO: use T_MovePlane
 		po->lines[0]->backsector->floorheight += momz;
 		po->lines[0]->backsector->ceilingheight += momz;
+		// Sal: Remember to check your sectors!
+		P_CheckSector(po->lines[0]->frontsector, (boolean)(po->damage));
+		P_CheckSector(po->lines[0]->backsector, (boolean)(po->damage));
 	}
 }
 
diff --git a/src/p_user.c b/src/p_user.c
index a27e571ed6ee684618099365ab9e2033eaffcb43..e4cb01f632883e9eb3ff4a7531334031da447158 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -7630,6 +7630,9 @@ static void P_DeathThink(player_t *player)
 	if (player->deadtimer < INT32_MAX)
 		player->deadtimer++;
 
+	if (player->bot) // don't allow bots to do any of the below, B_CheckRespawn does all they need for respawning already
+		goto notrealplayer;
+
 	// continue logic
 	if (!(netgame || multiplayer) && player->lives <= 0)
 	{
@@ -7749,6 +7752,8 @@ static void P_DeathThink(player_t *player)
 		}
 	}
 
+notrealplayer:
+
 	if (!player->mo)
 		return;