ACTOR ZKriegerBall1
{
    Radius 16
    Height 16
    Speed 30
    Damage 20
    Projectile
	RenderStyle Add
	Scale 0.60
    SeeSound "KriegerBall1/Fire"
    DeathSound "KriegerBall1/Hit"
    Obituary "%o was taken out by the Krieger."
	damagetype "boss"
    States
    {
    Spawn:
        KGB1 ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 Bright A_SpawnItemEx("ZKriegerBallTrail", 0, 0, 0, 0, 0, 0, 0, 128)
		Loop
	Death: 
	    KGB2 A 1 Bright A_SpawnItemEx("KriegerCometDeathGlow", 0, 0, 0, 0, 0, 0, 0, 128)
		KGB2 B 1 Bright A_SetScale(0.82,0.82)
	    KGB2 C 1 Bright A_Explode(64, 104, 0)
		KGB2 DEFGHIJKLMNOPQRS 1 Bright 
		Stop
    }
}

ACTOR ZKriegerBall2
{
    Radius 18
    Height 18
    Speed 50
    Damage 30
    Projectile
	Scale 1.24
	+FORCERADIUSDMG
    SeeSound "KriegerBall2/Fire"
    DeathSound "KriegerBall2/Hit"
    Obituary "%o was taken out by the Krieger."
	damagetype "boss"
    States
    {
    Spawn:
        KGB3 AABBCCDDEEFFGGHH 1 Bright A_SpawnItemEx("ZKriegerBall2Trail", 0, 0, 0, 0, 0, 0, 0, 128)
        Loop
    Death:
        KGB3 I 1 Bright A_SpawnItemEx("KriegerCometDeathGlow", 0, 0, 0, 0, 0, 0, 0, 128)
		KGB3 I 1 Bright A_Explode(128, 140, 0)
		KGB3 I 3 Bright 
		KGB3 J 4 Bright 
		KGB3 KLM 3 Bright
        Stop
    }
}

ACTOR ZKriegerBallTrail
{
    Alpha 0.75
    Scale .78
	+NOINTERACTION
    +NOGRAVITY
    +CLIENTSIDEONLY
    Renderstyle Add
    States
	{
    Spawn:
	    TNT1 A 2
        FRFY JKLMNOP 1 Bright
		Stop
	}
}

ACTOR ZKriegerBall2Trail : ZKriegerBallTrail
{
    Alpha 0.8
    Scale .84
    States
	{
    Spawn:
	    TNT1 A 2
        FRFY JJKKLLMNOP 1 Bright
		Stop
	}
}

ACTOR KriegerCometDeathGlow 
{
    Projectile
    +NOCLIP
    RenderStyle Add
    Scale 1.70
    Alpha 0.78
    States
    {
    Spawn:
        HCFB AAABBBCCCDDDEEFFGGHHII 1 Bright
        Stop
    }
}

Actor RainCometNull
{
  Radius 0
  Height 0
  Speed 8
  Projectile
  +FloorClip
  +Ripper
  +DoomBounce
  +CeilingHugger
  +DontHurtSpecies
  damagetype "boss"
  States
  {
  Spawn:
    TNT1 A 0 A_Jump(5,8)
    TNT1 AAAAAA 1 A_Wander
    TNT1 A 8 A_CustomMissile("FallingComet",-24,random(0,128),random(0,360),2,random(1,89))
    Loop
  Death:
    TNT1 A 0
    Stop
  }
}

Actor FallingComet
{
  Radius 6
  Height 8
  Speed 5
  Damage 5
  ExplosionDamage 40
  ExplosionRadius 80
  Scale 0.55
  Projectile
  SeeSound "pyro/comet"
  DeathSound "pyro/cometdeath"
  -NoGravity
  -Float
  +FloorClip
  +DontHurtSpecies 
  +SpawnCeiling
  Decal RevenantScorch
  damagetype "boss"
  States
  {
  Spawn:
    COMT AAAABBBBCCCC 1 Bright A_SpawnItemEx("FireTail", 0, 0, 0, 0, 0, 0, 0, 128)
    Loop
  Death:
    COMT D 3 Bright A_SpawnItemEx("CometDeathGlow", 0, 0, 0, 0, 0, 0, 0, 128)
    COMT E 3 Bright A_Explode(64,128,0)
    COMT E 0 A_SpawnItemEx("CometDeath", 0, 0, 0, 0, 0, 0, 0, 128)
	COMT EE 0 A_SpawnItemEx("WalkFire",0,0,0,1,0,0,0,128)
    Stop
  }
}

Actor CometDeathGlow 
{
  +NoClip
  +Missile
  +DropOff
  +Randomize
  Scale 2
  Speed 1
  RenderStyle Add
  Alpha 0.67
  damagetype "boss"
  States
  {
  Spawn:
    HCFB ABCDEFGHI 3 Bright A_Explode(10,128,0)
    Stop
  }
}

Actor CometDeath
{
  Projectile
  RenderStyle Add
  +NoClip
  Alpha 0.7
  States
  {
  Spawn:
    COMT FGHI 3 Bright
    Stop
  }
}

Actor FireTail
{
  Projectile
  RenderStyle Add
  +NoClip
  Alpha 0.4
  States
  {
  Spawn:
    HCFB ABCDEFGHI 1 Bright
    Stop
  }
}

Actor WalkFire
{
  +NoClip
  +Missile
  +DropOff
  +Randomize
  Scale 1.5
  Speed 1
  RenderStyle Add
  Alpha 0.67
  DamageType "Boss"
  States
  {
  Spawn:
    TNT1 A 8
    FRTF AAABBBCCC 1 Bright A_Explode(48,128,0) 
    FRTF C 0 
    FRTF C 0 A_Jump(191,4)
    FRTF C 0 A_CustomMissile("WalkFire", 0, 24, 0)
    FRTF C 0 A_CustomMissile("WalkFire", 0, 0, 0)
    FRTF C 0 A_CustomMissile("WalkFire", 0, -24, 0)
    FRTF DEFGHIJKLMNO 3 Bright A_Explode(48,128,0) 
    Stop
  }
}

ACTOR KriegerMorpher : PowerupGiver 
{
Scale 2
radius 48
height 128
powerup.type Krieger
inventory.pickupmessage ""
powerup.duration 99999999999999
states
{
Spawn:
TNT1 A 6
loop
 }
 }


actor PowerKrieger : PowerMorph
{
powerup.duration 99999999999999
PowerMorph.PlayerClass "KriegerPlayer"
}

ACTOR KriegerPlayer : PlayerPawn
{
  Scale 2
  Health 1000
  Radius 48
  Height 116
  Speed 0.85
  mass 2000
  Player.ColorRange 0, 0
  Player.JumpZ 8
  Player.MaxHealth 20000
  Player.ViewHeight 112
  Player.DisplayName "Krieger"
  Player.SoundClass "Krieger"
  Player.MorphWeapon "KriegerWeapon0"
  Player.StartItem "Mana", 100
  limitedtoteam 1
  DamageFactor "Tcherno2", 0
  damagefactor "boss", 0
  damagefactor "Slime", 0
  SeeSound "Krieger/See"
  PainSound "Krieger/Pain"
  DeathSound "Krieger/Death"
  ActiveSound "Krieger/Active"
  BloodColor "FFAA00"
  +NOSKIN
  -PICKUP
  states
{
	Spawn:
		KRIS AB 10  
		Loop
	See:
		KRIS AABB 3 Bright A_SpawnItemEx("WalkFire",random(-20,20),0,0,1,0,0,0,128)
		KRIS C 0 A_SpawnItemEx("UniversalStomp")
		KRIS CCDD 3 Bright A_SpawnItemEx("WalkFire",random(-20,20),0,0,1,0,0,0,128)
		KRIS A 0 A_SpawnItemEx("UniversalStomp")
		Loop
	Missile:
	    KRIS E 1 Bright 
		KRIS E 1 Bright A_JumpIfInventory("UsingComets", 1, "Comets")
		KRIS E 4 Bright
		KRIS FG 6 Bright
		KRIS HIJ 6 Bright
	    Goto Spawn
	Comets:
	    KRIS KL 6 Bright 
        KRIS M 12 Bright 
		Goto Spawn
	Death:
		KRID A 6 Bright A_Scream
		KRID BCD 4 Bright 
		KRID EFG 4 Bright
		KRID H 4 Bright A_Fall
		KRID IJKLMNOP 4 Bright
		KRID QRSTUV 4
		KRID W -1   
		Stop
}
}

ACTOR KriegerWeapon0 : Weapon 
{
 Weapon.SelectionOrder 800
 Obituary "%o was taken out by the Krieger %k"
 Inventory.PickupMessage ""
 Inventory.PickupSound "misc/pk_up"
 Weapon.AmmoUse 5
 Weapon.AmmoGive 0
 Weapon.AmmoType "Mana"
 +WEAPON.NOAUTOAIM
  States
 {
  Spawn:
       TNT1 A -1
       Loop
  Ready:
       TNT1 A 1 A_WeaponReady
       goto AltFire
  Fire:
  TNT1 A 1
  goto AltFire
  Deselect:
       TNT1 A 1 A_Lower
       Loop
  Select:
       TNT1 A 0 A_Raise
       Loop
  AltFire:
       TNT1 A 0 A_GiveInventory("KriegerWeapon")
       TNT1 A 0 A_SelectWeapon("KriegerWeapon")
       TNT1 A 0 
       goto deselect
  Flash:
       SNIF F 3 Bright A_Light2
       SNIF F 3 Bright A_Light1
       SNIF F 0 Bright A_Light0
       Goto LightDone     
       }
}


actor Kriegerattackmode1 : Inventory
{
Inventory.Amount 1
Inventory.MaxAmount 1
  States
  {
  Spawn:
    TNT1 A -1
    Stop
  }
}

actor Kriegerattackmode2 : Inventory
{
Inventory.Amount 1
Inventory.MaxAmount 1
  States
  {
  Spawn:
    TNT1 A -1
    Stop
  }
}

actor Kriegerattackmode3 : Inventory
{
Inventory.Amount 1
Inventory.MaxAmount 1
  States
  {
  Spawn:
    TNT1 A -1
    Stop
  }
}

actor Kriegerattackmode4 : Inventory
{
Inventory.Amount 1
Inventory.MaxAmount 1
  States
  {
  Spawn:
    TNT1 A -1
    Stop
  }
}

ACTOR KriegerWeapon : Weapon 
{
 Weapon.SelectionOrder 800
 Obituary "%o was taken out by the Krieger %k"
 Inventory.PickupMessage ""
 Inventory.PickupSound "misc/pk_up"
 Weapon.AmmoUse 0
 Weapon.AmmoGive 0
 Weapon.AmmoType "Mana"
 +WEAPON.NOAUTOAIM
 +INVENTORY.UNDROPPABLE
  States
 {
  Spawn:
       TNT1 A -1
       Loop
  Ready:
       CLA2 A 0 A_TakeInventory("UsingComets", 1)
       CLA2 A 1 A_WeaponReady
       goto ready
  Deselect:
       CLA2 A 1 A_Lower
       Loop
  Select:
       CLA2 A 0 A_Raise
       Loop
  Fire:
       CLA2 A 0 A_jumpIfinventory("Kriegerattackmode1", 1, "HellfireAttackcheck")
       CLA2 A 0 A_jumpIfinventory("Kriegerattackmode2", 1, "CometAttackcheck")
       CLA2 A 0 A_jumpIfinventory("Kriegerattackmode3", 1, "HellCryAttackcheck")
	   CLA2 A 0 A_jumpIfinventory("Kriegerattackmode4", 1, "HellRageAttackCheck")
	   Goto ready
  AltFire:
  	   CLA2 A 1 ACS_execute(812)
       CLA2 A 1
       CLA2 A 13
       goto ready
  HellfireAttack:
       CLA2 A 0 A_Takeinventory("mana", 20)
	   CLA2 A 0 A_jumpIfinventory("EnrageTwo", 1, "HellfireAttackThree")
	   CLA2 A 0 A_jumpIfinventory("EnrageOne", 1, "HellfireAttackTwo")
       CLA2 A 12 A_GunFlash
       CLA2 B 0 A_FireCustomMissile("ZKriegerBall1",0,1,1,40)
       CLA2 BAA 6
	   CLA2 B 0 A_FireCustomMissile("ZKriegerBall1",0,1,1,40)
	   CLA2 A 6 
       goto ready
  HellFireAttackThree:
       CLA2 A 12 A_GunFlash
       CLA2 B 0 A_FireCustomMissile("ZKriegerBall1",0,1,1,40)
	   CLA2 BB 0 A_FireCustomMissile("ZKriegerBall1",random(-10,10),1,1,40,0,random(-10,10))
       CLA2 BAA 6
	   CLA2 B 0 A_FireCustomMissile("ZKriegerBall1",0,1,1,40)
	   CLA2 BB 0 A_FireCustomMissile("ZKriegerBall1",random(-10,10),1,1,40,0,random(-10,10))
	   CLA2 A 6 
       goto ready
  HellFireAttackTwo:
       CLA2 A 12 A_GunFlash
       CLA2 B 0 A_FireCustomMissile("ZKriegerBall1",0,1,1,40)
	   CLA2 B 0 A_FireCustomMissile("ZKriegerBall1",random(-10,10),1,1,40,0,random(-10,10))
       CLA2 BAA 6
	   CLA2 B 0 A_FireCustomMissile("ZKriegerBall1",0,1,1,40)
	   CLA2 B 0 A_FireCustomMissile("ZKriegerBall1",random(-10,10),1,1,40,0,random(-10,10))
	   CLA2 A 6 
       goto ready
  CometAttack:
       CLA2 A 0 A_GiveInventory("UsingComets", 1)
       CLA2 A 0 A_Takeinventory("mana", 40)
	   CLA2 A 0 A_jumpIfinventory("EnrageTwo", 1, "CometAttackThree")
	   CLA2 A 0 A_jumpIfinventory("EnrageOne", 1, "CometAttackTwo")
       CLA2 A 12 A_GunFlash
       CLA2 B 0 A_FireCustomMissile("ZKriegerBall2",0,1,1,40)
       CLA2 B 12
       goto ready
  CometAttackThree:
       CLA2 A 12 A_GunFlash
	   CLA2 B 0 A_FireCustomMissile("ZKriegerBall2",-10,1,1,40)
	   CLA2 B 0 A_FireCustomMissile("ZKriegerBall2",10,1,1,40)
	   CLA2 B 0 A_FireCustomMissile("ZKriegerBall2",-5,1,1,40)
	   CLA2 B 0 A_FireCustomMissile("ZKriegerBall2",5,1,1,40)
       CLA2 B 0 A_FireCustomMissile("ZKriegerBall2",0,1,1,40)
       CLA2 B 12
       goto ready
  CometAttackTwo:
       CLA2 A 12 A_GunFlash
	   CLA2 B 0 A_FireCustomMissile("ZKriegerBall2",-5,1,1,40)
	   CLA2 B 0 A_FireCustomMissile("ZKriegerBall2",5,1,1,40)
       CLA2 B 0 A_FireCustomMissile("ZKriegerBall2",0,1,1,40)
       CLA2 B 12
       goto ready
  HellCryAttack:
       CLA2 A 0 A_GiveInventory("UsingComets", 1)
       CLA2 A 0 A_Takeinventory("mana", 50)
       CLA2 A 12 A_GunFlash
       CLA2 B 0 A_FireCustomMissile("RainCometNull",0,1,1,40)
	   CLA2 B 0 A_FireCustomMissile("RainCometNull",90,1,1,40)
	   CLA2 B 0 A_FireCustomMissile("RainCometNull",180,1,1,40)
	   CLA2 B 0 A_FireCustomMissile("RainCometNull",-90,1,1,40)
       CLA2 BAA 6
	   CLA2 B 0 A_FireCustomMissile("RainCometNull",45,1,1,40)
	   CLA2 B 0 A_FireCustomMissile("RainCometNull",-45,1,1,40)
	   CLA2 B 0 A_FireCustomMissile("RainCometNull",135,1,1,40)
	   CLA2 B 0 A_FireCustomMissile("RainCometNull",-135,1,1,40)
	   CLA2 A 6 
       goto ready
  HellRageAttack:
       CLA2 A 0 A_GiveInventory("UsingComets", 1)
       CLA2 A 0 A_Takeinventory("mana", 50)
	   CLA2 A 0 A_PlayWeaponSound("PainLord/Sight")
       TNT1 A 0 A_GunFlash
	   CLA3 B 16 Bright
	   TNT1 A 0 A_SpawnItemEx("KriegerExplosionCircle", 0, 0, 128)
	   TNT1 A 0 A_Stop
       CLA3 B 10 bright A_Stop
	   CLA3 A 5
       goto ready
  HellfireAttackcheck:
       TNT1 A 0 A_jumpIfinventory("mana", 20, "HellfireAttack")
  goto ready
  CometAttackcheck:
       TNT1 A 0 A_jumpIfinventory("mana", 40, "CometAttack")  
  goto ready
  HellCryAttackcheck:
       TNT1 A 0 A_jumpIfinventory("mana", 50, "HellCryAttack")  
  goto ready
  HellRageAttackcheck:
       TNT1 A 0 A_jumpIfinventory("mana", 50, "HellRageAttack")  
  goto ready
  Flash:
       SNIF F 3 Bright A_Light2
       SNIF F 3 Bright A_Light1
       SNIF F 0 Bright A_Light0
       Goto LightDone     
       }
}

Actor KriegerExplosion 
{
	Speed 40
	Radius 8
	Height 8
	PROJECTILE
	RenderStyle Add
	Damage 0
	+RIPPER
	+FLOORHUGGER
	+BLOODLESSIMPACT
	DamageType "Boss"
	Obituary "%o was taken out by the Krieger"
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_PlaySound("TchernobogExplosionLimit")
			RPGX BCD 4 Bright A_Explode(100, 128, 0)
		Death:
			TNT1 A 0 A_Stop
			RPGX EFGHIJKLMNOPQRSTUV 2 Bright A_Explode(100, 128, 0)
		Stop
	}
}

Actor KriegerExplosionHigh : KriegerExplosion
{
	-FLOORHUGGER
}

Actor KriegerExplosionCircle
{
	Radius 1
	Height 1
	-SOLID
	-TELESTOMP
	+NOGRAVITY
	
	States
	{
		Spawn:
			TNT1 A 1
			TNT1 A 0 A_CustomMissile("KriegerExplosionHigh", 0, 0, 0, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("KriegerExplosion", 0, 0, 0, CMF_AIMDIRECTION | CMF_TRACKOWNER)			
			TNT1 A 0 A_CustomMissile("KriegerExplosionHigh", 0, 0, 30, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("KriegerExplosion", 0, 0, 30, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("KriegerExplosionHigh", 0, 0, 60, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("KriegerExplosion", 0, 0, 60, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("KriegerExplosionHigh", 0, 0, 90, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("KriegerExplosion", 0, 0, 90, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("KriegerExplosionHigh", 0, 0, 120, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("KriegerExplosion", 0, 0, 120, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("KriegerExplosionHigh", 0, 0, 150, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("KriegerExplosion", 0, 0, 150, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("KriegerExplosionHigh", 0, 0, 180, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("KriegerExplosion", 0, 0, 180, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("KriegerExplosionHigh", 0, 0, 210, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("KriegerExplosion", 0, 0, 210, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("KriegerExplosionHigh", 0, 0, 240, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("KriegerExplosion", 0, 0, 240, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("KriegerExplosionHigh", 0, 0, 270, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("KriegerExplosion", 0, 0, 270, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("KriegerExplosionHigh", 0, 0, 300, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("KriegerExplosion", 0, 0, 300, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("KriegerExplosionHigh", 0, 0, 330, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("KriegerExplosion", 0, 0, 330, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		Stop
	}
}

Actor EnrageOne : Inventory
{
	inventory.maxamount 1
}

Actor EnrageTwo : Inventory
{
	inventory.maxamount 1
}

Actor UsingComets : Inventory
{
	inventory.maxamount 1
}