From d6b466b7dd4271d2468e449fa7d06bc9209187e9 Mon Sep 17 00:00:00 2001
From: wolfy852 <wolfy852@hotmail.com>
Date: Sat, 5 Jul 2014 03:15:35 -0500
Subject: [PATCH] Add skin flag for running on water

---
 src/d_player.h | 1 +
 src/dehacked.c | 1 +
 src/p_mobj.c   | 2 +-
 3 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/d_player.h b/src/d_player.h
index 65333ecce1..3bced1a8b6 100644
--- a/src/d_player.h
+++ b/src/d_player.h
@@ -38,6 +38,7 @@ typedef enum
 	SF_HIRES            = 1<<3, // Draw the sprite 2x as small?
 	SF_NOSKID           = 1<<4, // No skid particles etc
 	SF_NOSPEEDADJUST    = 1<<5, // Skin-specific version of disablespeedadjust
+	SF_RUNONWATER       = 1<<6, // Run on top of water FOFs?
 } skinflags_t;
 
 //Primary and secondary skin abilities
diff --git a/src/dehacked.c b/src/dehacked.c
index 284d82c3d5..37bd529504 100644
--- a/src/dehacked.c
+++ b/src/dehacked.c
@@ -7507,6 +7507,7 @@ struct {
 	{"SF_HIRES",SF_HIRES},
 	{"SF_NOSKID",SF_NOSKID},
 	{"SF_NOSPEEDADJUST",SF_NOSPEEDADJUST},
+	{"SF_RUNONWATER",SF_RUNONWATER},
 
 	// Character abilities!
 	// Primary
diff --git a/src/p_mobj.c b/src/p_mobj.c
index 29ba5d0430..eaf57e57d3 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -2398,7 +2398,7 @@ static boolean P_SceneryZMovement(mobj_t *mo)
 boolean P_CanRunOnWater(player_t *player, ffloor_t *rover)
 {
 	if (!(player->pflags & PF_NIGHTSMODE) && !player->homing
-		&& (((player->charability == CA_SWIM) || player->powers[pw_super]) && player->mo->ceilingz-*rover->topheight >= player->mo->height)
+		&& (((player->charability == CA_SWIM) || player->powers[pw_super] || player->charflags & SF_RUNONWATER) && player->mo->ceilingz-*rover->topheight >= player->mo->height)
 		&& (rover->flags & FF_SWIMMABLE) && !(player->pflags & PF_SPINNING) && player->speed > FixedMul(player->runspeed, player->mo->scale)
 		&& !(player->pflags & PF_SLIDING)
 		&& abs(player->mo->z - *rover->topheight) < FixedMul(30*FRACUNIT, player->mo->scale))
-- 
GitLab