actor QuintBoobeamWall
{
Projectile
+BOUNCEONWALLS
+NOEXPLODEFLOOR
+LOOKALLAROUND
+SEEKERMISSILE
+THRUACTORS
+NOTARGETSWITCH
+DONTREFLECT

height 2
radius 2

speed 0
damage (0)
WallBounceFactor 1

scale 2.5

reactiontime 490
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 A_GiveToTarget("LimitFlag",1)
BBEA AAABBBCCCDDDAAABBBCCCDDDAAABBBCCCDDDAAABBBCCCDDD 1 A_Countdown

Looking:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
BBEA EEFFEEFFEEFFEEFFEEFFEEFF 1 A_Countdown
BBEA E 0 A_PlaySoundEx("weapon/mm2shot","Auto")
BBEA E 0 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256)
BBEA E 0 A_FaceTracer(0, 0)
BBEA E 0 A_CustomMissile("BoobeamShot",16,0,0,CMF_AIMDIRECTION, pitch)
BBEA EEFFEEFFEEFFEEFFEEFFEEFF 1 A_Countdown
TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT,AAPTR_DEFAULT,AAPTR_NULL)
loop

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

actor QuintBoobeamFloor : QuintBoobeamWall
{
+FLOORHUGGER
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 A_GiveToTarget("LimitFlag",1)
BBEA GGGHHHIIIJJJGGGHHHIIIJJJGGGHHHIIIJJJGGGHHHIIIJJJ 1 A_Countdown

Looking:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
BBEA GGKKGGKKGGKKGGKKGGKKGGKK 1 A_Countdown
BBEA E 0 A_PlaySoundEx("weapon/mm2shot","Auto")
BBEA E 0 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256)
BBEA E 0 A_FaceTracer(0, 0)
BBEA E 0 A_CustomMissile("BoobeamShot",16,0,0,CMF_AIMDIRECTION, pitch)
BBEA GGKKGGKKGGKKGGKKGGKKGGKK 3 A_Countdown
TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT,AAPTR_DEFAULT,AAPTR_NULL)
loop
}
}

actor QuintBoobeamCeiling : QuintBoobeamWall
{
+CEILINGHUGGER
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 A_GiveToTarget("LimitFlag",1)
BBEA LLLMMMNNNOOOLLLMMMNNNOOOLLLMMMNNNOOOLLLMMMNNNOOO 1 A_Countdown

Looking:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
BBEA E 0 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256)
BBEA E 0 A_SeekerMissile(0, 0, SMF_LOOK, 256)
TNT1 A 0 A_JumpIfTargetInLOS("Missile", 0, JLOSF_PROJECTILE)
BBEA LLPPLLPPLLPPLLPP 1 A_Countdown
BBEA E 0 A_PlaySoundEx("weapon/mm2shot","Auto")
BBEA E 0 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256)
BBEA E 0 A_FaceTracer(0, 0)
BBEA E 0 A_CustomMissile("BoobeamShot",0,0,0,CMF_AIMDIRECTION,-90)
BBEA LLPPLLPPLLPPLLPP 1 A_Countdown
TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT,AAPTR_DEFAULT,AAPTR_NULL)
loop

Missile:
BBEA E 0 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256)
BBEA E 0 A_SeekerMissile(0, 0, SMF_LOOK, 256)
BBEA E 0 A_FaceTracer(0, 0)
BBEA LLPPLLPPLLPPLLPPLLPPLLPP 1 A_Countdown
BBEA E 0 A_PlaySoundEx("weapon/mm2shot","Auto")
BBEA E 0 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256)
BBEA E 0 A_SeekerMissile(0, 0, SMF_LOOK, 256)
BBEA E 0 A_FaceTracer(0, 0)
BBEA E 0 A_CustomMissile("BoobeamShot",-16,0,0,CMF_AIMDIRECTION, pitch)
BBEA LLPPLLPP 1 A_Countdown
TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT,AAPTR_DEFAULT,AAPTR_NULL)
goto Looking
}
}

actor BoobeamSummon : GenericAssistCapsule
{
-BOUNCEONWALLS
speed 20
gravity 0.9
+THRUACTORS
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
ECAP AB 4
goto Spawn+2
Assist:
TNT1 A 0 A_CheckFloor("FloorSpawn")
TNT1 A 0 A_CheckCeiling("CeilingSpawn")
TNT1 A 0 A_SpawnItemEx("QuintBoobeamWall", -12, 0, 0, 0, 0, 0, 180, SXF_TRANSFERPOINTERS)
goto Death+2
FloorSpawn:
TNT1 A 0 A_SpawnItemEx("QuintBoobeamFloor", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
goto Death+2
CeilingSpawn:
TNT1 A 0 A_SpawnItemEx("QuintBoobeamCeiling", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
goto Death+2
}
}

actor BoobeamShot
{
Obituary "$OB_BOOBEAM"
PROJECTILE
+THRUSPECIES
damagetype "Boobeam"
Speed 50
Damage (3)
radius 12
height 12
scale 2.5
Species "Hothead"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
BBEA Q 0 A_FaceTracer
Idle1:
BBEA Q 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
loop

Death:
TNT1 A 0
stop
}
}