actor Squidon
{
Projectile
-NOGRAVITY
+BOUNCEONWALLS
+NOEXPLODEFLOOR
+NOTARGETSWITCH
+LOOKALLAROUND
+SEEKERMISSILE
+THRUACTORS
+DONTREFLECT

height 18
radius 20

speed 0
damage (0)
WallBounceFactor 1

scale 2.5

reactiontime 300

States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 A_GiveInventory("LimitFlag", 1, AAPTR_TARGET)
AirWait:
SQUD AAAAAAAAABBBBBBBBB 1 A_JumpIf(z-floorz<=0, "Land")
loop

Land:
SQUD A 0 A_Stop
SQUD A 0 ThrustThingZ(0,0,0,1)

Looking:
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Countdown
SQUD A 0 A_SeekerMissile(0, 0, SMF_LOOK, 256)
SQUD AAAAAAAAABBBBBBBBBAAAAAAAAA 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")

Missile:
SQUD CCCCCDDDDD 1 A_FaceTracer(0, 0)
SQUD A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
SQUD D 0 A_CustomMissile("SquidonBlock",24,0,0,CMF_AIMDIRECTION, 0)
SQUD D 0 A_GiveInventory("LimitFlag", 1, AAPTR_TARGET)
SQUD A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
SQUD A 0 A_RearrangePointers(AAPTR_DEFAULT,AAPTR_DEFAULT,AAPTR_NULL)
SQUD EEEFFFGGG 1 A_FaceTracer(0, 0)
SQUD D 0 A_CustomMissile("SquidonMissile",90,0,0,CMF_AIMDIRECTION,45)
SQUD GGGGGGFFFEEE 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
SQUD A 0 A_RearrangePointers(AAPTR_DEFAULT,AAPTR_DEFAULT,AAPTR_NULL)
goto Looking

Death:
TNT1 A 0 A_SpawnItemEx("DeadSquidon")
TNT1 A 0 A_TakeInventory("LimitFlag", 1, 0, AAPTR_MASTER)
stop
}
}

actor SquidonTeleport
{
Translation "70:70=4:4", "60:60=104:104"
+MISSILE
+THRUACTORS
+NOGRAVITY
+NOINTERACTION
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 1 A_JumpIfInventory("LimitFlag", 1, "Death2", AAPTR_TARGET)
lop:
DMUN A 1 A_CheckFloor("Death")
loop

Death:
//spawn capsule
TNT1 A 0 A_Stop
DMUN B 4 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_TARGET)
DMUN C 4 A_SpawnItemEx("Squidon", 0, 0, 16, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
stop

Death2:
TNT1 A 0 A_GiveInventory("EnemyAssist", 1, AAPTR_TARGET)
stop
}
}

actor SquidonBlock
{
Obituary "$OB_SQUIDON"
PROJECTILE
-NOGRAVITY
+THRUSPECIES
+NOEXPLODEFLOOR
+SEEKERMISSILE
damagetype "FireBoy"
Speed 40
Damage (16)
radius 16
height 16
scale 2.5
gravity 1.0
Species "FireBoy"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)

Spawn2:
SQUD H 0 ThrustThingZ(0,0,0,1)

Idle1:
SQUD H 1 A_JumpIf(z-floorz>0, "Air")
SQUD H 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
loop

Air:
SQUD H 1 A_JumpIf(z-floorz<=0, "Spawn2")
SQUD H 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
loop

Death:
TNT1 A 0
stop
}
}

actor SquidonMissile
{
Obituary "$OB_SQUIDON"
PROJECTILE
+THRUSPECIES
+NOEXPLODEFLOOR
+SEEKERMISSILE
damagetype "FireBoy"
Speed 9
Damage (10)
radius 12
height 12
scale 2.5
Species "FireBoy"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
SQUD KLKLKLKL 1
SQUD K 0 A_ChangeVelocity(9,0,0,3)

Idle1:
SQUD IJ 1 A_SeekerMissile(22,90,SMF_LOOK,256,10)
SQUD I 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
loop

Death:
TNT1 A 0
stop
}
}

actor SquidonTeleportStart : AssistTPStart
{
States
{
Death:
TNT1 A 0 A_SpawnItemEx("SquidonTeleport", 0, 0, 0, 0, 0, -16)
stop
}
}

actor DeadSquidon
{
+NOINTERACTION
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
SQUD A 10 A_SpawnItemEx("ParocketExplosionFX", random(-32, 32), 0, random(-32, 96))
SQUD A 0 A_PlaySoundEx("weapon/hyperbomb", "Weapon")
SQUD A 2 A_FadeOut(0.2)
goto Spawn+2

Death:
SQUD A 0
stop
}
}