//66 frames of fire rate, 5 seconds of homing from the missiles
actor StegorusSlashman
{
Projectile
-NOGRAVITY
+BOUNCEONWALLS
+NOEXPLODEFLOOR
+NOTARGETSWITCH
+LOOKALLAROUND
+SEEKERMISSILE
+THRUACTORS
+DONTBLAST
//species "HyperStormHSpawn"
+THRUSPECIES
+DONTREFLECT
height 18
radius 20

speed 0
damage (0)
WallBounceFactor 1

scale 2.5

reactiontime 490
var int user_walkdir;
var int user_deathTimer;
var int user_shotAlready;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 A_SetUserVar("user_walkdir",1)//Pitch is used as a variable to determine his walk
TNT1 A 0 A_GiveInventory("LimitFlag", 1, AAPTR_TARGET)
TNT1 A 0 A_SetUserVar("user_deathTimer",reactiontime)//User vars are used here because it's easier to handle here than A_CountDown spam

AirWait:
STEG A 1 A_JumpIf(z-floorz<=0, "Land")
loop

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

Looking:
STEG A 0 A_JumpIf(user_deathTimer <= 0,"Death")

STEG A 0 A_GiveInventory("StegorusBladeChecker_CI",1,AAPTR_DEFAULT)
STEG A 0 A_JumpIfInventory("VC_Timer",1,"Missile2")
STEG A 16
STEG A 0 A_GiveInventory("StegorusBladeChecker_CI",1,AAPTR_DEFAULT)
STEG A 0 A_JumpIfInventory("VC_Timer",1,"Missile2")

LookingBruhhh:
TNT1 A 0 A_SetUserVar("user_deathTimer", user_deathTimer - 16)
STEG A 0 A_SeekerMissile(0, 0, SMF_LOOK, 256)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_ChangeVelocity(user_walkdir, 0, 0, CVF_RELATIVE | CVF_REPLACE)
Walk:
TNT1 A 0 A_JumpIf(user_walkdir == -1,"WalkBack")

STEG ABCDEFABCD 6 A_SetUserVar("user_deathTimer", user_deathTimer - 6)

TNT1 A 0 A_JumpIfTargetInLOS("Missile", 0, JLOSF_PROJECTILE)
TNT1 A 0 A_SetUserVar("user_walkdir",user_walkdir * -1)
TNT1 A 0 A_ChangeVelocity(0, 0, 0, CVF_RELATIVE | CVF_REPLACE)
goto Looking

WalkBack:
STEG DCBAFEDCBA 6
goto Walk+11


Missile:
STEG F 6 A_SetUserVar("user_deathTimer", user_deathTimer - 6)
TNT1 A 0 A_SetUserVar("user_walkdir",user_walkdir * -1)
TNT1 A 0 A_ChangeVelocity(0, 0, 0, CVF_RELATIVE | CVF_REPLACE)

STEG A 0 A_GiveInventory("StegorusBladeChecker_CI",1,AAPTR_DEFAULT)
STEG A 0 A_JumpIfInventory("VC_Timer",1,"Missile2")

TNT1 A 0 A_PlaySoundEx("weapon/coltonshot","Weapon")
TNT1 A 0 A_CustomMissile("StegorusMissile",45,0,0,CMF_AIMDIRECTION,45)
STEG G 31 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT,AAPTR_DEFAULT,AAPTR_NULL)
TNT1 A 0 A_SetUserVar("user_deathTimer", user_deathTimer - 31)

STEG A 0 A_GiveInventory("StegorusBladeChecker_CI",1,AAPTR_DEFAULT)
STEG A 0 A_JumpIfInventory("VC_Timer",1,"Missile2")

TNT1 A 0 A_PlaySoundEx("weapon/coltonshot","Weapon")
TNT1 A 0 A_CustomMissile("StegorusMissile",45,0,0,CMF_AIMDIRECTION,45)
STEG G 31 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT,AAPTR_DEFAULT,AAPTR_NULL)
TNT1 A 0 A_SetUserVar("user_deathTimer", user_deathTimer - 31)
STEG A 16
goto Looking

Missile2Check:
TNT1 A 0 A_JumpIfInTargetInventory("Base28Ammo",1,"Missile2")
goto Looking+2

Missile2://The multi blades
TNT1 A 0 A_SetPitch(30)
TNT1 A 0 A_CustomMissile("StegorusBlade",45,0,-20,CMF_AIMDIRECTION,45)
STEG G 9 A_PlaySoundEx("weapon/enemyweapon","Weapon")
TNT1 A 0 A_CustomMissile("StegorusBlade",45,0,-10,CMF_AIMDIRECTION,45)
STEG G 9 A_PlaySoundEx("weapon/enemyweapon","Weapon")
TNT1 A 0 A_CustomMissile("StegorusBlade",45,0,0,CMF_AIMDIRECTION,45)
STEG G 9 A_PlaySoundEx("weapon/enemyweapon","Weapon")
TNT1 A 0 A_CustomMissile("StegorusBlade",45,0,10,CMF_AIMDIRECTION,45)
STEG G 9 A_PlaySoundEx("weapon/enemyweapon","Weapon")
TNT1 A 0 A_CustomMissile("StegorusBlade",45,0,20,CMF_AIMDIRECTION,45)
STEG G 9 A_PlaySoundEx("weapon/enemyweapon","Weapon")
STEG G 0 A_SetUserVar("user_deathTimer", user_deathTimer - 24)
goto Looking


Death:
TNT1 A 1
TNT1 A 0 A_PlaySoundEx("weapon/mm7explode", "Weapon")
TNT1 AAAA 0 A_SpawnItemEx("MM7ExplodeFX",random(-8,8),random(-8,8),random(-8,8),0,0,0,0,1)
STEG A 1

STEG A 1
TNT1 A 0 A_PlaySoundEx("weapon/mm7explode", "Weapon")
TNT1 AAAA 0 A_SpawnItemEx("MM7ExplodeFX",random(-8,8),random(-8,8),random(-8,8),0,0,0,0,1)
STEG A 1

TNT1 A 1
TNT1 A 0 A_PlaySoundEx("weapon/mm7explode", "Weapon")
TNT1 AAAA 0 A_SpawnItemEx("MM7ExplodeFX",random(-8,8),random(-8,8),random(-8,8),0,0,0,0,1)
STEG A 1

TNT1 A 1
TNT1 A 0 A_PlaySoundEx("weapon/mm7explode", "Weapon")
TNT1 AAAA 0 A_SpawnItemEx("MM7ExplodeFX",random(-8,8),random(-8,8),random(-8,8),0,0,0,0,1)
STEG A 1

TNT1 A 0 A_TakeInventory("LimitFlag", 1, 0, AAPTR_MASTER)
stop
}
}

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

actor StegorusTeleport
{
Translation "198:198=128:128", "192:192=4:4"
+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:
TFOG D 1 A_CheckFloor("Death")
loop

Death:
//spawn capsule
TNT1 A 0 A_Stop
TFOG E 4 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_TARGET)
TFOG F 4 A_SpawnItemEx("StegorusSlashman", 0, 0, 16, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
stop

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

actor StegorusMissile
{
Obituary "%o received a blast from the past by %k's \cdStegorus\c-."
PROJECTILE
+THRUSPECIES
+NOEXPLODEFLOOR
+SEEKERMISSILE
damagetype "FireBoy"
Speed 9
Damage (19)
radius 12
height 12
scale 2.5
Species "FireBoy"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
STEG HIHIHIHI 1
STEG K 0 A_ChangeVelocity(9,0,0,3)

Idle1:
STEG JK 1 A_SeekerMissile(22,45,SMF_LOOK,256,10)
STEG I 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
loop

Death:
TNT1 A 0 A_PlaySoundEx("weapon/mm7explode", "Weapon")
TNT1 A 0 A_SpawnItemEx("MM7ExplodeFX",0,0,0,0,0,0,0,1)
stop
}
}



actor StegorusBlade
{
Obituary "%o received a blast from the past by %k's \cdStegorus\c-."
PROJECTILE
scale 2.5
Speed 16
Radius 5//3
Height 16//4
+RIPPER
Damage (11)
damagetype "Metalman"
-NOGRAVITY
//gravity 2.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
WING AB 3
Goto Spawn+2
Death:
TNT1 A 1 A_CheckFloor("GearGo")
stop
GearGo:
TNT1 A 0 A_SpawnItemEx("StegorusBlade2",0,0,0,0)
stop
}
}

actor StegorusBlade2
{
Obituary "%o received a blast from the past by %k's \cdStegorus\c-."
Translation "192:192=4:4", "198:198=95:95"
PROJECTILE
+HEXENBOUNCE
bouncecount 1
bouncefactor 1.0
-BOUNCEONFLOORS
+NOEXPLODEFLOOR
scale 2.5
Speed 0
Radius 5//3
Height 32//4
+RIPPER
+STEPMISSILE
maxstepheight 16
Damage (8)
damagetype "Metalman"
-NOGRAVITY
species "MetalGearType"
+THRUSPECIES
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
loopit:
METG A 0 A_PlaySoundEx("misc/repairing","Body")
METG A 0 A_JumpIfInventory("CutterFlag",280,"Death")
METG A 0 A_GiveInventory("CutterFlag",2)
WING A 1 A_JumpIf(z-floorz>2, "Falling")
METG A 0 A_Recoil(-2)
WING B 1 A_JumpIf(z-floorz>2, "Falling")
METG A 0 A_Recoil(-2)
loop
Falling:
TNT1 A 0 A_ChangeVelocity(0,0,-40,CVF_REPLACE|CVF_RELATIVE)
TNT1 A 0 ThrustThingZ(0,40,1,0)
TNT1 A 0 A_PlaySoundEx("misc/repairing","Body")
TNT1 A 0 A_GiveInventory("CutterFlag",6)
TNT1 A 0 A_JumpIfInventory("CutterFlag",280,"Death")
WING ABABAB 1 A_CheckFloor("Land")
goto Falling+2
Land:
METG A 0 A_Recoil(-30)
METG A 0 ThrustThingZ(0,0,0,0)
goto loopit
Death:
TNT1 A 0
stop
}
}



/////////////////////ULT ASSIST/////////////////////////////////



actor TamagodonHelper
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
Renderstyle none
reactiontime 2
States
{
Spawn:
TNT1 A 0
TNT1 A 3 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_GiveToTarget("TamagodonEgg_CI")
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0
stop
}
}

Actor TamagodonEgg_CI : CustomInventory
{
	States
	{
		Pickup:
		TNT1 A 0 A_PlaySoundEx("weapon/minidragon","weapon")
		TNT1 A 0 A_FireCustomMissile("TamagodonEggAssist",0,1,11,-8)
		stop
	}
}

actor TamagodonEggAssist
{
PROJECTILE
//damagetype "SlashManGoo"
Obituary "%o was egged on by %k's \cdTamagodon\c-."
-NOGRAVITY
+NOCLIP
BounceType Hexen
damage (3)
radius 16
height 16
speed 35
scale 2.5
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TMGD I 1 A_PlaySoundEx("weapon/minidragon","weapon")
TNT1 A 0 A_ChangeFlag("NOCLIP",0)
TMGD J 1 A_CheckFloor("Death")
wait
Death:
//SLS2 B 0 A_PlaySoundEx("weapon/SlashGoop","Weapon")
SLS2 B 0 A_ChangeFlag("NOINTERACTION",True)
TNT1 A 1 A_Stop
SLS2 C 0 A_SpawnItemEx("TamagodonAssist")
TNT1 AAAA 0 A_SpawnItemEx("TamagodonAssistFX",0,0,8,random(-8,8),random(-8,8),random(-3,16),0,1)
stop
}
}

actor TamagodonAssistFX 
{
PROJECTILE
	scale 2.5
	+CLIENTSIDEONLY
	-NOGRAVITY
	Height 4
	Radius 4
	+HEXENBOUNCE
	reactiontime 50
	bouncefactor 0.5
	bouncecount 6
	gravity 0.2
	+RIPPER
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode")
		TNT1 A 0 A_Jump(256,"S_1", "S_2", "S_3", "S_4", "S_5")
		stop
		
		S_1:
		TMGD P 1
		TNT1 A 1 A_Countdown
		loop
		
		S_2:
		TMGD Q 1
		TNT1 A 1 A_Countdown
		loop
		
		S_3:
		TMGD R 1
		TNT1 A 1 A_Countdown
		loop
		
		S_4:
		TMGD S 1
		TNT1 A 1 A_Countdown
		loop
		
		S_5:
		TMGD T 1
		TNT1 A 1 A_Countdown
		loop
	}
}

actor TamagodonAssist
{
Obituary "%o was egged on by %k's \cdTamagodon\c-."
-SOLID
+MISSILE
+NOBLOOD
Bouncetype Hexen
-ALLOWBOUNCEONACTORS
+CANBOUNCEWATER
+FORCEXYBILLBOARD
+NOEXPLODEFLOOR
-BOUNCEONFLOORS
+SEEKERMISSILE
+LOOKALLAROUND
+RIPPER
+DONTBLAST
bouncefactor 1.0
wallbouncefactor 1.0
maxstepheight 32
maxdropoffheight 32
Height 24
damagetype "Rabbiton"
//translation "198:198=0:0", "192:192=95:95"
scale 2.5
damage (4)
reactiontime 490
radius 16
speed 22
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_GiveToTarget("LimitFlag",1)
TNT1 A 0 A_PlaySoundEx("weapon/minidragon","weapon")
Land:
TMGD G 0 A_Stop
TMGD G 0 A_Recoil(-14)
TMGD G 0 A_SeekerMissile(0,0,SMF_LOOK|SMF_CURSPEED,256)
OtherSpawn:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")

TNT1 AAAAA 0 A_Countdown
TMGD G 0 A_ChangeVelocity(14,0,momz,CVF_REPLACE|CVF_RELATIVE)

TMGD G 1 A_FaceTracer(7) TMGD G 0 A_JumpIf(z-floorz>0, "Jump")
TMGD G 1 A_FaceTracer(7) TMGD G 0 A_JumpIf(z-floorz>0, "Jump")
TMGD G 1 A_FaceTracer(7) TMGD G 0 A_JumpIf(z-floorz>0, "Jump")
TMGD G 1 A_FaceTracer(7) TMGD G 0 A_JumpIf(z-floorz>0, "Jump")
TMGD G 1 A_FaceTracer(7) TMGD G 0 A_JumpIf(z-floorz>0, "Jump")


TNT1 AAAAA 0 A_Countdown
TMGD G 0 A_ChangeVelocity(14,0,momz,CVF_REPLACE|CVF_RELATIVE)
TMGD H 1 A_FaceTracer(7) TMGD G 0 A_JumpIf(z-floorz>0, "Jump")
TMGD H 1 A_FaceTracer(7) TMGD G 0 A_JumpIf(z-floorz>0, "Jump")
TMGD H 1 A_FaceTracer(7) TMGD G 0 A_JumpIf(z-floorz>0, "Jump")
TMGD H 1 A_FaceTracer(7) TMGD G 0 A_JumpIf(z-floorz>0, "Jump")
TMGD H 1 A_FaceTracer(7) TMGD G 0 A_JumpIf(z-floorz>0, "Jump")

loop
Jump:
TMGD G 0 A_SeekerMissile(90,90,SMF_LOOK|SMF_CURSPEED,256)
//TMGD G 0 A_FaceTracer(90)
TMGD G 0 ThrustThingZ(0,50,0,0)
TMGD B 0 A_Recoil(-4)
TMGD G 0 A_PlaySoundEx("weapon/topspin","Body")
TMGD BA 1 A_Countdown
JumpLoop:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 AAAA 0 A_Countdown
TMGD A 1 A_JumpIf(z-floorz<=0, "Land")
loop
Death:
TNT1 A 0 A_SpawnItemEx("GenericAssistDeath", 0, 0, height/2)
TNT1 A 0 A_TakeFromTarget("LimitFlag",1)
stop
}
}


Actor StegorusBladeChecker_CI : CustomInventory
{
States
	{
	Pickup:
	TNT1 A 0
	TNT1 A 0 A_JumpIfMasterCloser(250,"Pickup2")
	TNT1 A 0 A_TakeInventory("VC_Timer",9,AAPTR_DEFAULT)
	stop
	Pickup2:
	TNT1 A 0 A_JumpIfInTargetInventory("Base28Ammo",1,"Success")
	TNT1 A 0 A_TakeInventory("VC_Timer",9,AAPTR_DEFAULT)
	stop
	Success:
	TNT1 A 0 A_GiveInventory("VC_Timer",1,AAPTR_DEFAULT)
	stop
	}
}