//==================================
// Kull Warrior
//==================================

ACTOR Kullwarrior 
{ 

    Health 300 
    Radius 20 
    Height 56 
    Speed 15 
    MeleeDamage 1 
    mass 1000
    MONSTER 
    +FLOORCLIP
    +NOBLOOD
	+NoFear
	+NOTARGET
    +MISSILEMORE
	+MISSILEEVENMORE
	+NORADIUSDMG
	+CANUSEWALLS
	+NOBLOCKMONST
	+LOOKALLAROUND
	+SEEINVISIBLE
	+QUICKTORETALIATE
	+DONTHARMSPECIES
    +DONTHURTSPECIES
	+CANTSEEK
    +DONTRIP
	Species "Hell"
    DamageFactor "Hell", 0.0
    DamageFactor "Legendary", 0.6
    DamageFactor "BFGSplash", 0.75
    DamageFactor "PDTBFG", 0.2
    DamageFactor "PDTBFGTracer", 0.2
    DamageFactor "PlayerDevBall", 0.35
    DamageFactor "PlayerDevTracer", 0.25
    DamageFactor "MechStep", 0.0
    DropItem "BonusCrateDrop" 5
	PainChance 55
    Obituary "%o was annihilated by a kull warrior" 
	Tag "\c[M3]Kull \c[B5]Warrior\c-"
    SeeSound "kullsit" 
    DeathSound "kulldth" 
    ActiveSound "kullact"
	var int user_delay;
    PainSound ""   
    States 
    { 
    Spawn:
        KULL A 10 A_Look
        Loop
    See:
	    KULL A 0 A_JumpIfTargetInLOS("Strafing")
		TNT1 A 0 A_Jump(52,"Fly")
		TNT1 A 0 A_Jump(100,"Strafing")
        KULL AABBCCDD 3 A_Chase
        Loop
	Teleport:
        KULL A 1 Bright A_UnSetShootable
		TNT1 A 0 Bright A_SpawnItemEx("KULLSmokeSpawner")
	    KULL AAAAAAAAAA 1  A_FadeOut(0.1,0)
	    KULL A 2 
	    KULL AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	    KULL AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
        KULL A 1 A_PlayWeaponSound("boss/teleport")
	    KULL AAAAAAAAAA 1 A_FadeIn(0.1)
		TNT1 A 0 Bright A_SpawnItemEx("KULLSmokeSpawner")
        KULL A 1 Bright A_SetShootable
    Goto See
	Strafing:
	    TNT1 A 0 Bright A_SpawnItemEx("KULLSmokeSpawner")
	    TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	    TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
	    KULL AA 3 Bright A_GiveInventory("KullZombieStrafing",1)
	    TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
	    KULL BB 3 Bright A_GiveInventory("KullZombieStrafing",1)
	    TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	    TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
        KULL CC 3 Bright A_GiveInventory("KullZombieStrafing",1)	
	    TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
	    KULL DD 3 Bright A_GiveInventory("KullZombieStrafing",1)
	Goto See
    Pause:
	    KULL E 0 A_PlaySound("weapons/demontechsteam")
	    KULL EEEEE 3 Bright A_GiveInventory("KullZombieStrafing",1)
	Goto See
	Fly:
	    KULL E 5 A_FaceTarget
	    KULL E 0 A_SetUserVar("user_delay",0)
        KULL E 0 ThrustThingZ(0,random(80,145),0,1)
        KULL EEEE 5 A_Recoil(-5)
    FlyCheck:
	    KULL E 0 A_JumpIf(user_delay >= 105,"Land")
        KULL E 0 A_SetUserVar("user_delay",user_delay+1)
        KULL E 1 A_CheckFloor("Land")
    Loop
    Land:	
	    KULL E 0
	    KULL E 0 A_Explode(1,4)
	    KULL E 0 Radius_Quake(175,8,512,1024,0)
	    KULL E 1
	Goto See	
    Missile:
    	KULL E 0 A_jump(127,"right")
        KULL E 8 A_FaceTarget
        KULL F 3 bright A_custommissile("kullball",48,10,0)
        KULL F 0 A_FaceTarget        
        KULL F 3 bright A_custommissile("kullball",48,10,0)
        KULL F 0 A_FaceTarget         
        KULL F 3 bright A_custommissile("kullball",48,10,0)
        KULL F 0 A_FaceTarget         
        KULL F 6 bright A_custommissile("kullball",48,10,0) 
        KULL E 6 A_FaceTarget           
        Goto See
    Right:
        KULL G 8 A_FaceTarget
        KULL H 3 bright A_custommissile("kullball",48,-10,0)
        KULL H 0 A_FaceTarget         
        KULL H 3 bright A_custommissile("kullball",48,-10,0)
        KULL H 0 A_FaceTarget          
        KULL H 3 bright A_custommissile("kullball",48,-10,0)
        KULL H 0 A_FaceTarget          
        KULL H 6 bright A_custommissile("kullball",48,-10,0) 
        KULL G 6 A_FaceTarget        
        Goto See          
    Pain:
        KULL A 2
        KULL A 2 A_Pain
		TNT1 A 0 A_Jump(235,"Teleport")
        Goto See
    Death:
        KULL I 8
        KULL J 8 A_Scream
        KULL K 6
        KULL L 6 A_Fall
        KULL M 6
        KULL N 6       
        KULL O -1
        Stop
    Raise:
        KULL ONML 8
        KULL KJI 6
        Goto See
    }
}

Actor KullZombieStrafing : CustomInventory
{
  +INVENTORY.QUIET
  +INVENTORY.UNDROPPABLE
  +INVENTORY.ALWAYSPICKUP
  +INVENTORY.AUTOACTIVATE       
  +COUNTITEM
  Inventory.Amount 1
  Inventory.MaxAmount 0
  +NOTIMEFREEZE
  States
  {
  Pickup:
    NULL A 1 
	NULL A 1 A_SpawnItem("HellionSmokeSpawner",0,0,0,0)
	NULL A 1 A_Jump(188,2)
	NULL A 1 A_GiveInventory("LegZombieJumping",1)
	NULL A 1 A_JumpIf(velx != 0 || vely != 0,2)
	NULL A 1 A_Jump(256,2)
	NULL A 1 A_Jump(235,5)
	NULL A 1 A_JumpIfInventory("LegZombieStrafeSens",1,3)
	NULL A 1 A_GiveInventory("LegZombieStrafeSens",1)
	NULL A 1 A_Jump(256,2)	
	NULL A 1 A_TakeInventory("LegZombieStrafeSens",1)
	NULL A 1 A_JumpIfInventory("LegZombieStrafeSens",1,3)
	NULL A 1 ThrustThing(angle*256/360+38.7,3,0,0)
	NULL A 1 A_Jump(256,2)	
	NULL A 1 ThrustThing(angle*256/360+38.7,-3,0,0)
    NULL A 1 A_FaceTarget
	NULL A 1 A_Jump(24,2)
	NULL A 1 A_JumpIfCloser(300,2)
	NULL A 1 A_Recoil(-1)
    Stop
	NULL A 1 A_Recoil(1)
    Stop	
  }
}

actor KULLBALL
{
    Radius 8
    Height 6
    Speed 30
    Damage 5
    +SEEKERMISSILE
	+DONTHARMSPECIES
	+DONTHURTSPECIES
    PROJECTILE
	Species "Hell"
    DamageFactor "Hell", 0.0
    RENDERSTYLE ADD
    ALPHA 0.67
    SeeSound "kullfir"
    DeathSound "staffhit"
    decal "doomimpScorch"
    States
    {
    Spawn:
        KULF A 4 Bright
        Loop
    Death:
        KULF B 4 BRIGHT a_explode(10,80)
        KULF CDE 4 Bright
        Stop
    }
}

ACTOR KULLSmoke : GhostFire
{
Scale 0.44
RenderStyle Normal
States
{
Spawn:
SMKP ABCDEFGHIJKL 2 Bright A_FadeOut
Stop
}
}

ACTOR KULLSmokeSpawner : RedParticleSpawner
{
  States
  {
  Spawn:
    TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    TNT1 A 0 A_SpawnItemEx("KULLSmoke",random(15,-15),random(15,-15),random(12,64),0,0,random(1,3),0,128,0)
    TNT1 A 1
    Stop
  }
}
