diff --git a/extras/conf/udb/Includes/SRB222_things.cfg b/extras/conf/udb/Includes/SRB222_things.cfg
index 8ae317d89deca483a81a362bb175cb4b40f49a49..cf6b8a875a3aac75cdd3fe5fd53f2b9c94ea7d90 100644
--- a/extras/conf/udb/Includes/SRB222_things.cfg
+++ b/extras/conf/udb/Includes/SRB222_things.cfg
@@ -3596,6 +3596,10 @@ udmf
 			sprite = "FISHA0";
 			width = 8;
 			height = 28;
+			arg0
+			{
+				title = "Jump strength";
+			}
 		}
 		103
 		{
@@ -6468,6 +6472,10 @@ udmf
 			sprite = "PUMAA0";
 			width = 8;
 			height = 16;
+			arg0
+			{
+				title = "Jump strength";
+			}
 		}
 		1806
 		{
diff --git a/src/p_enemy.c b/src/p_enemy.c
index a4607b49774b523df7e237fbf3622ae64d6f8178..64b21809f8b367573c358ff834afdc1b692199ae 100644
--- a/src/p_enemy.c
+++ b/src/p_enemy.c
@@ -4803,12 +4803,16 @@ void A_FishJump(mobj_t *actor)
 		fixed_t jumpval;
 
 		if (locvar1)
-			jumpval = var1;
+			jumpval = locvar1;
 		else
-			jumpval = FixedMul(AngleFixed(actor->angle)/4, actor->scale);
+		{
+			if (actor->spawnpoint && actor->spawnpoint->args[0])
+				jumpval = actor->spawnpoint->args[0];
+			else
+				jumpval = 44;
+		}
 
-		if (!jumpval) jumpval = FixedMul(44*(FRACUNIT/4), actor->scale);
-		actor->momz = jumpval;
+		actor->momz = FixedMul(jumpval << (FRACBITS - 2), actor->scale);
 		P_SetMobjStateNF(actor, actor->info->seestate);
 	}
 
diff --git a/src/p_setup.c b/src/p_setup.c
index fc47c457326ef149ff1a64f503a6a69cd93beef1..ee29d6e1076a2508dc2d971c1a37a772122f326c 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -4879,6 +4879,10 @@ static void P_ConvertBinaryMap(void)
 
 		switch (mapthings[i].type)
 		{
+		case 102: //SDURF
+		case 1805: //Puma
+			mapthings[i].args[0] = mapthings[i].angle;
+			break;
 		case 110: //THZ Turret
 			mapthings[i].args[0] = LE_TURRET;
 			break;