freeslot(
"MT_SPLATSH",
"S_SPLATSH",
"MT_SPLATSHTAIL",
"S_SPLATSHTAIL",
"SPR_SPL2"
)



addHook("MobjSpawn", function(actor)
	actor.flags2 = MF2_SPLAT
	actor.renderflags = RF_SLOPESPLAT|RF_NOSPLATBILLBOARD
	actor.spriteyscale = FRACUNIT/2
	P_CreateFloorSpriteSlope(actor)
	
	actor.tracer = P_SpawnMobj(actor.x,actor.y,actor.z, MT_SPLATSHTAIL)
	actor.tracer.flags2 = MF2_SPLAT
	actor.tracer.renderflags = RF_SLOPESPLAT|RF_NOSPLATBILLBOARD
	actor.tracer.spriteyscale = FRACUNIT
	P_CreateFloorSpriteSlope(actor.tracer)
end, MT_SPLATSH)


addHook("MobjMoveBlocked", function(actor)
	actor.tracer.state = S_NULL
	actor.state = S_NULL
end, MT_SPLATSH)

function A_Splatsh(actor, var1, var2)
	actor.reactiontime = $1-1
	if (actor.reactiontime == 0) then
	actor.tracer.state = S_NULL
		actor.state = S_NULL
		return
	end
	local scalefactor = ((16-actor.reactiontime)*FRACUNIT)/28
	actor.spritexscale = scalefactor
	actor.floorspriteslope.o = {
	x = actor.x,
	y = actor.y,
	z = actor.z
	}
	actor.floorspriteslope.zdelta = (actor.reactiontime*FRACUNIT)/10
	actor.floorspriteslope.xydirection = actor.angle
	
	actor.tracer.spritexscale = scalefactor
	actor.tracer.floorspriteslope.o = {
	x = actor.x,
	y = actor.y,
	z = actor.z
	}
	actor.tracer.floorspriteslope.xydirection = actor.angle
	actor.tracer.floorspriteslope.zdelta = (actor.reactiontime*FRACUNIT)/-10
	P_TeleportMove(actor.tracer,
	actor.x,//+(cos(actor.angle)*-8),
	actor.y,//+(sin(actor.angle)*-8),
	actor.z)
	actor.tracer.angle = actor.angle
	actor.momx = cos(actor.angle)*15
	actor.momy = sin(actor.angle)*15
	
end


mobjinfo[MT_SPLATSH] = {
spawnstate = S_SPLATSH,
reactiontime = 16,
speed = 10*FRACUNIT,
radius = 1*FRACUNIT,
height = 1*FRACUNIT,
damage = 3,
spawnhealth = 0,
dispoffset = 0,
flags = MF_NOCLIPTHING|MF_NOGRAVITY|MF_MISSILE
}


states[S_SPLATSH] = {
sprite = SPR_SPL2,
frame = A|TR_TRANS50,
tics = 1,
action = A_Splatsh,
nextstate = S_SPLATSH
}


states[S_SPLISH2].action = A_MultiShot
states[S_SPLISH2].var1 = (MT_SPLATSH<<16)+12
states[S_SPLISH2].var2 = -8


mobjinfo[MT_SPLATSHTAIL] = {
spawnstate = S_SPLATSHTAIL,
reactiontime = 45,
speed = 10*FRACUNIT,
radius = 1*FRACUNIT,
height = 1*FRACUNIT,
damage = 3,
spawnhealth = 0,
dispoffset = 0,
flags = MF_NOCLIPTHING|MF_NOGRAVITY
}


states[S_SPLATSHTAIL] = {
sprite = SPR_SPL2,
frame = B|TR_TRANS50,
tics = 45,
action = None,
nextstate = S_SPLATSHTAIL
}

