ACTOR EntityPlayer : PlayerPawn
{
  Health 1000
  Height 150
  Radius 80
  Mass 8000
  Player.forwardmove 0.75
  Player.MaxHealth 40000
  Player.sidemove 0.75
  Player.ViewHeight 120
  PainChance 20
  Player.JumpZ 6
  Player.DisplayName "Entity"
  Player.MorphWeapon "EntityWeapon0"
  Player.SoundClass "Entity"
  Player.StartItem "Mana", 100
  DamageFactor "Boss", 0
  BloodColor Green
  limitedtoteam 1
  PainSound "Entity/Pain"
  SEESOUND "Entity/Sight"
  DEATHSOUND "Entity/Death"
  Species "Boss"
  +NOSKIN
  +DONTTRANSLATE
  -PICKUP
  states
{
	Spawn:
        TNT1 AA 0 SetPlayerProperty(0, 1, 1)
	    TNT1 AA 0 SetPlayerProperty (0, 1, 3)
		ENTL B 5
		Loop
	See:
	    TNT1 AA 0 SetPlayerProperty(0, 1, 1)
	    TNT1 AA 0 SetPlayerProperty (0, 1, 3)
		ENTL BCDEFGHIJK 4 
		Loop
	  Missile:
		ENTL G 12
		Goto Spawn
	  Melee:
		ENTL G 12
		Goto Spawn
	  Pain:
		TNT1 A 0 A_Pain
		ENTL G 4
	    Goto Spawn
	  Death:
		TNT1 A 0 A_Scream
		TNT1 A 0 a_givetotarget("BOSSKILLEDSTAT", 1)
		TNT1 A 0 A_GiveToTarget("reward", 1)
    	ENTM L 7 Bright A_Scream
    	ENTM KIJHGFEDCBA 7 Bright
    	TNT1 A -1 Bright
    	Stop
	}
}

Actor EntityMode1 : Inventory
{
	inventory.maxamount 1
}

Actor EntityMode2 : Inventory
{
	inventory.maxamount 1
}

Actor EntityMode3 : Inventory
{
	inventory.maxamount 1
}

Actor EntityMode4 : Inventory
{
	inventory.maxamount 1
}

Actor EntityMode5 : Inventory
{
	inventory.maxamount 1
}

ACTOR EntityWeapon0 : Weapon 
{
 Weapon.SelectionOrder 800
 Obituary "%o was raped by %k"
 Inventory.PickupMessage ""
 Inventory.PickupSound "misc/pk_up"
 Weapon.AmmoUse 0
 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("EntityWeapon")
       TNT1 A 0 A_SelectWeapon("EntityWeapon")
       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 EntityWeapon : Weapon 
{
 Weapon.SelectionOrder 800
 obituary "%o has a new God"
 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:
       CLA3 A 1 A_WeaponReady
       goto ready
  Deselect:
       CLA3 A 1 A_Lower
       Loop
  Select:
       CLA3 A 0 A_Raise
       Loop
  Fire:
       TNT1 A 0 A_jumpIfinventory("EntityMode1", 1, "ThunderCheck")
       TNT1 A 0 A_jumpIfinventory("EntityMode2", 1, "LightingCheck")
       TNT1 A 0 A_jumpIfinventory("EntityMode3", 1, "BoltCheck")
	   TNT1 A 0 A_jumpIfinventory("EntityMode4", 1, "LightingStormCheck")
	   TNT1 A 0 A_jumpIfinventory("EntityMode5", 1, "ShockCheck")
	   CLA3 A 1
	   Goto ready
  AltFire:
  	   CLA3 A 1 ACS_execute(812, 0) //812
       CLA3 A 2
       CLA3 A 12
       goto ready
  Thunder:
	   TNT1 A 0 A_GunFlash
	   CLA3 A 3
       TNT1 A 0 A_Takeinventory("mana", 5)
	   CLA3 BBBB 1 A_FireCustomMissile("EntityLightingProjectile", random(-3,3))
       Goto Ready
  Lighting:
	   TNT1 A 0 A_GunFlash
	   CLA3 A 10
       TNT1 A 0 A_Takeinventory("mana", 30)
	   TNT1 A 0 A_FireCustomMissile("EntitySpectreBProjectile", 0)
	   CLA3 B 10
       Goto Ready
  Bolt:
	   TNT1 A 0 A_GunFlash
	   CLA3 A 10
       TNT1 A 0 A_Takeinventory("mana", 30)
	   TNT1 A 0 A_FireCustomMissile("EntitySpectreAProjectile", 0)
	   CLA3 B 10
       Goto Ready
  LightingStorm:
       TNT1 A 0 A_GunFlash
       TNT1 A 0 A_Takeinventory("mana", 15)
	   TNT1 AA 0 A_SpawnItemEx("RazorFallingLightning", momx*random(-128,128), momy*random(-128,128), ceilingz)
	   CLA3 B 1
	   TNT1 AAAA 0 A_SpawnItemEx("RazorFallingLightning", momx*random(-128,128), momy*random(-128,128), ceilingz)
	   CLA3 B 1
	   TNT1 AAAA 0 A_SpawnItemEx("RazorFallingLightning", momx*random(-128,128), momy*random(-128,128), ceilingz)
	   CLA3 B 1
	   TNT1 AAAA 0 A_SpawnItemEx("RazorFallingLightning", momx*random(-128,128), momy*random(-128,128), ceilingz)
	   CLA3 B 1
	   TNT1 AAAA 0 A_SpawnItemEx("RazorFallingLightning", momx*random(-128,128), momy*random(-128,128), ceilingz)
	   CLA3 B 1
	   TNT1 AAAA 0 A_SpawnItemEx("RazorFallingLightning", momx*random(-128,128), momy*random(-128,128), ceilingz)
	   CLA3 B 1
	   TNT1 AAAA 0 A_SpawnItemEx("RazorFallingLightning", momx*random(-128,128), momy*random(-128,128), ceilingz)
	   CLA3 B 1
	   TNT1 AAAA 0 A_SpawnItemEx("RazorFallingLightning", momx*random(-128,128), momy*random(-128,128), ceilingz)
	   CLA3 B 1
	   TNT1 AAAA 0 A_SpawnItemEx("RazorFallingLightning", momx*random(-128,128), momy*random(-128,128), ceilingz)
	   CLA3 B 1
	   TNT1 AAAA 0 A_SpawnItemEx("RazorFallingLightning", momx*random(-128,128), momy*random(-128,128), ceilingz)
	   CLA3 B 1
       Goto Ready
  Shock:
       TNT1 A 0 A_GunFlash
	   CLA3 A 10
       TNT1 A 0 A_Takeinventory("mana", 50)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 0)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 5)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 10)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 15)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 20)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 25)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 30)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 35)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 40)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 45)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 50)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 55)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 60)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 65)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 70)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 75)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 80)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 85)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", 90)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -5)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -10)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -15)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -20)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -25)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -30)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -35)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -40)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -45)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -50)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -65)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -70)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -75)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -80)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -85)
	   TNT1 A 0 A_FireCustomMissile("EntityMinorLightingProjectile", -90)
	   CLA3 A 15
       Goto Ready
  ThunderCheck:
       TNT1 A 0 A_jumpIfinventory("mana", 5, "Thunder")
       Goto Ready 
  LightingCheck:
       TNT1 A 0 A_jumpIfinventory("mana", 30, "Lighting")
       Goto Ready 
  BoltCheck:
       TNT1 A 0 A_jumpIfinventory("mana", 30, "Bolt")
       Goto Ready 
  LightingStormCheck:
       TNT1 A 0 A_jumpIfinventory("mana", 15, "LightingStorm")
       Goto Ready 
  ShockCheck:
       TNT1 A 0 A_jumpIfinventory("mana", 50, "Shock")
       Goto Ready 
  Flash:
       SNIF F 225 Bright
       Goto LightDone     
       }
}

Actor EntityLightingProjectile
{
	PROJECTILE
	Speed 35
	Radius 6
	Height 10
	Damage (random(15,50))
	Deathsound "RazorLHit"
	DamageType "Boss"
	Alpha 0.75
	Renderstyle Add	
	States
	{
	Spawn:
      ZAP6 AAAABBBBCCCC 1 Bright
      Loop
	Death:
	  TNT1 A 0 A_SetScale(2.0)
      ZAP1 FEDCBA 1 bright 
      stop
	}
}

Actor EntityLightingProjectile2 : EntityLightingProjectile
{
	Speed 20
}

ACTOR EntitySpectreBProjectile
{
   Radius 18
   Height 12
   Speed 60
   Damage (random(200,400))
   PROJECTILE
   RENDERSTYLE Add
   Alpha 0.90
   Scale 1.3
   Decal BFGScorch
   Damagetype "Boss"
   +FORCEXYBILLBOARD
   SeeSound "moloch/thunder"
   Deathsound "moloch/thundercrash"
   States
   {
   Spawn:
      TNT1 A 0 Bright A_CustomMissile("EntityLightingProjectile2",0,0,-90,2)
      TNT1 A 0 Bright A_CustomMissile("EntityLightingProjectile2",0,0,90,2) 
	  TNT1 A 0 Bright A_CustomMissile("EntityLightingProjectile2",0,0,0,2) 
      ZAP7 ABCDE 1 Bright
      loop
   Death:
      TNT1 A 0 A_SetScale(2.0)
      ZAP7 FGHIJK 4 Bright A_Explode(96,256)
      stop
   }
}

Actor EntitySpectreAProjectile
{
	PROJECTILE
	+BLOODLESSIMPACT
	+SEEKERMISSILE
	+LOOKALLAROUND
	DamageType "Boss"
	Speed 25
	Radius 8
	Height 16
	Damage (75)
	Alpha 0.75
	Renderstyle Add
	Deathsound "RazorLHit"
	States
	{
	  Spawn:
        TNT1 A 0
        TNT1 A 0 A_RearrangePointers(AAPTR_NULL,AAPTR_TARGET,AAPTR_TRACER)
        TNT1 A 0 A_LookEx(0,0,0,0,0,"Acquired")
        TNT1 A 0 A_RearrangePointers(AAPTR_MASTER,AAPTR_MASTER,AAPTR_TRACER)
        Goto Idle
      Acquired:
        TNT1 A 0 A_RearrangePointers(AAPTR_MASTER,AAPTR_MASTER,AAPTR_TARGET)
        Goto Idle
      Idle:
	    ZOT2 ABCDE 3 Bright A_SeekerMissile(25,10)
	    Loop
	  Death:
	    TNT1 A 0 A_SetScale(2.0)
		ZAP1 FEDCBA 1 bright 
        Stop
	}
}

Actor EntityMinorLightingProjectile
{
	PROJECTILE
	Speed 35
	Radius 6
	Height 10
	Damage (random(15,50))
	Deathsound "RazorLHit"
	DamageType "Boss"
	Alpha 0.75
	Renderstyle Add	
	States
	{
	Spawn:
      ZOT3 ABCDE 4 Bright
      Loop
	Death:
      ZAP1 FEDCBA 1 bright 
      stop
	}
}

actor PowerEntity : PowerMorph
{
	powerup.duration 0x7FFFFFFF
	PowerMorph.PlayerClass "EntityPlayer"
}
