This jump stuff depends from how tall your 3d water sector is, it could be fixed using MAXSTEPHEIGHT special property through decorate. Here's my Gore example:
Code: Select all
ACTOR Piranha 12512 //new monster from Powerslave
{
//$Category My Monsters
Tag "Piranha"
Game Doom
SpawnId 168
obituary "%o was chewed by a piranha."
health 100
gibhealth 35
mass 300
speed 16
Radius 32
Height 64
seesound "piranha/sight"
deathsound "piranha/death"
activesound "piranha/active"
MONSTER
+FLOAT
+FLOORCLIP
+NOGRAVITY
+LOOKALLAROUND
+QUICKTORETALIATE
MaxStepHeight 1 //only if near sector is tall this=climb so jump on land
scale 0.8
States
	{
	Spawn:
	PINH ABCD 6 A_Look
	loop
	See:
	PINH A 0
	PINH A 0 A_JumpIf(waterlevel<3,2)
	PINH A 0 A_SpawnItemEx("Bubble",random(4,8),0,random(52,60),0,0,2,random(0,360),SXF_TRANSFERTRANSLATION,random(4,8))
	PINH ABCB 4 A_GiveInventory("FishLimit",1)
	loop
	Melee:
	PINH E 0 A_JumpIf(waterlevel<3,2)
	PINH E 0 A_SpawnItemEx("Bubble",random(4,8),0,random(52,60),0,0,2,random(0,360),SXF_TRANSFERTRANSLATION,random(4,8))
	PINH E 6 A_FaceTarget
	PINH F 0 A_JumpIf(waterlevel<3,2)
	PINH F 0 A_SpawnItemEx("Bubble",random(4,8),0,random(52,60),0,0,2,random(0,360),SXF_TRANSFERTRANSLATION,random(4,8))
	PINH F 6 A_FaceTarget
	PINH GGHH 4 A_CustomMeleeAttack(random(3,6)*5,"CHOMP","SWIPE")
	PINH F 0 A_JumpIf(waterlevel<3,2)
	PINH F 0 A_SpawnItemEx("Bubble",random(4,8),0,random(52,60),0,0,2,random(0,360),SXF_TRANSFERTRANSLATION,random(4,8))
	PINH F 6
	PINH E 0 A_JumpIf(waterlevel<3,2)
	PINH E 0 A_SpawnItemEx("Bubble",random(4,8),0,random(52,60),0,0,2,random(0,360),SXF_TRANSFERTRANSLATION,random(4,8))
	PINH E 6
	goto See
	Death:
	PINH I 0
	PINH I 0 A_Scream
	PINH IJKLMNO 5 A_SetFloorCLip
	PINH O -1
	Stop
	XDeath:
	PINH PQRS 3
	PINH T 0 A_SpawnDebris("NashGore_Gib11",0)
	PINH T 0 A_SpawnDebris("NashGore_Gib11",0)
	PINH T 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
	PINH T 0 A_SpawnItemEx("FishGib1",random(4,8),random(4,8),random(4,8),random(3,8),random(3,8),random(3,6),random(0,-359),SXF_TRANSFERTRANSLATION)
	PINH T 5 A_Scream
	PINH U 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,2)
	PINH U 0 A_SpawnItemEx("FishGib2",random(4,8),random(4,8),random(4,8),random(3,8),random(3,8),random(3,6),random(0,-359),SXF_TRANSFERTRANSLATION)
	PINH U 5 A_NoBlocking
	PINH V 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,4)
	PINH V 0 A_SpawnItemEx("FishGib3",random(4,8),random(4,8),random(4,8),random(3,8),random(3,8),random(3,6),random(0,-359),SXF_TRANSFERTRANSLATION)
	PINH V 5
	Stop
	Crush:
	TNT1 A 1 A_SpawnItem("NashGore_CrushedSmall",0,0,0,0)
	stop
	Raise:
	PINH O 5 A_UnSetFloorClip
	PINH NMLKJI 5
	Goto See
	}
}
ACTOR FishGib1
{
Radius 8
Height 8
Speed 8
Mass 192
+CORPSE
+DROPOFF
+DOOMBOUNCE
+NOTELEPORT
+MISSILE
scale 0.8
States
	{
	Spawn:
	PING A 4 A_Countdown
	Loop
	Death:
	PING A 8 A_FadeOut(0.06)
	Stop
	}
}
ACTOR FishGib2 : FishGib1
{
States
	{
	Spawn:
	PING B 4 A_Countdown
	Loop
	Death:
	PING B 8 A_FadeOut(0.07)
	Stop
	}
}
ACTOR FishGib3 : FishGib1
{
States
	{
	Spawn:
	PING C 4 A_Countdown
	Loop
	Death:
	PING C 8 A_FadeOut(0.08)
	Stop
	}
}
Actor FishLimit : CustomInventory
{
Inventory.MaxAmount 0
+Inventory.AutoActivate
States
	{
	Spawn:
	TNT1 A 1
	Fail
	Use:
	TNT1 A 0 A_JumpIf(waterlevel<3,"GoDown")
	TNT1 A 0 A_Chase
	Stop
	GoDown:
	TNT1 A 0 ThrustThingZ(0,4,1,1)
	TNT1 A 0 A_Chase
	Stop
	}
}