diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c
index 57d329f66b2cd013dafbaceaa60b67e614052bb1..7aefc9187546422b6d0bcc6d50268c68f5547fac 100644
--- a/src/hardware/hw_main.c
+++ b/src/hardware/hw_main.c
@@ -5572,16 +5572,6 @@ static void HWR_ProjectPrecipitationSprite(precipmobj_t *thing)
 	vis->gz = vis->gzt - FIXED_TO_FLOAT(spritecachedinfo[lumpoff].height);
 
 	vis->precip = true;
-
-	// okay... this is a hack, but weather isn't networked, so it should be ok
-	if (!(thing->precipflags & PCF_THUNK))
-	{
-		if (thing->precipflags & PCF_RAIN)
-			P_RainThinker(thing);
-		else
-			P_SnowThinker(thing);
-		thing->precipflags |= PCF_THUNK;
-	}
 }
 #endif
 
diff --git a/src/p_mobj.c b/src/p_mobj.c
index 719858802bd933074637cf880364f9a1f54345fe..146ec3daccdda1c78b88bac45b759ea96d69c53d 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -4021,8 +4021,7 @@ void P_RecalcPrecipInSector(sector_t *sector)
 //
 void P_NullPrecipThinker(precipmobj_t *mobj)
 {
-	//(void)mobj;
-	mobj->precipflags &= ~PCF_THUNK;
+	(void)mobj;
 }
 
 void P_SnowThinker(precipmobj_t *mobj)
@@ -10950,14 +10949,14 @@ static inline precipmobj_t *P_SpawnRainMobj(fixed_t x, fixed_t y, fixed_t z, mob
 {
 	precipmobj_t *mo = P_SpawnPrecipMobj(x,y,z,type);
 	mo->precipflags |= PCF_RAIN;
-	//mo->thinker.function.acp1 = (actionf_p1)P_RainThinker;
+	mo->thinker.function.acp1 = (actionf_p1)P_RainThinker;
 	return mo;
 }
 
 static inline precipmobj_t *P_SpawnSnowMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
 {
 	precipmobj_t *mo = P_SpawnPrecipMobj(x,y,z,type);
-	//mo->thinker.function.acp1 = (actionf_p1)P_SnowThinker;
+	mo->thinker.function.acp1 = (actionf_p1)P_SnowThinker;
 	return mo;
 }
 
diff --git a/src/p_mobj.h b/src/p_mobj.h
index 998baa19e842532dedcddf676a7b341404bdf930..702fd40474411cd7fe8e0dc0523d532918d99f0a 100644
--- a/src/p_mobj.h
+++ b/src/p_mobj.h
@@ -269,8 +269,6 @@ typedef enum {
 	PCF_MOVINGFOF = 8,
 	// Is rain.
 	PCF_RAIN = 16,
-	// Ran the thinker this tic.
-	PCF_THUNK = 32,
 } precipflag_t;
 
 // Map Object definition.
diff --git a/src/r_things.c b/src/r_things.c
index b3d5bc2ed8faa85be5cc2fa7157a48d0ce6a5d06..19961c51b42f395bad93aab88606d31a18668edd 100644
--- a/src/r_things.c
+++ b/src/r_things.c
@@ -2258,7 +2258,7 @@ static void R_ProjectPrecipitationSprite(precipmobj_t *thing)
 	if (thing->subsector->sector->cullheight)
 	{
 		if (R_DoCulling(thing->subsector->sector->cullheight, viewsector->cullheight, viewz, gz, gzt))
-			goto weatherthink;
+			return;
 	}
 
 	// store information in a vissprite
@@ -2312,17 +2312,6 @@ static void R_ProjectPrecipitationSprite(precipmobj_t *thing)
 
 	// Fullbright
 	vis->colormap = colormaps;
-
-weatherthink:
-	// okay... this is a hack, but weather isn't networked, so it should be ok
-	if (!(thing->precipflags & PCF_THUNK))
-	{
-		if (thing->precipflags & PCF_RAIN)
-			P_RainThinker(thing);
-		else
-			P_SnowThinker(thing);
-		thing->precipflags |= PCF_THUNK;
-	}
 }
 
 // R_AddSprites