#include "Actors/Weapons/LegendaryRevolver.dec"
#include "Actors/Monsters/LegendaryCowboy.dec"
#include "Actors/Others/LegStuff.dec"
#include "Actors/Weapons/LegendarySSG.dec"
#include "Actors/Weapons/Legendaryrailgun.dec"
#include "Actors/Items/extralegendaryrunes.dec"
#include "Actors/Monsters/LegSSGZombie.dec"
#include "Actors/Weapons/Nailgun.dec"
#include "Actors/Monsters/NailgunCommando.dec"
#include "Actors/Weapons/BigFreezeGun.dec"


ACTOR LegendaryRuneSpawner : RandomSpawner replaces LegendaryRune
{
DropItem "LegendaryRune2", 256, 1
DropItem "LifeLegendaryRune", 256, 1
DropItem "SuperLegendaryRune", 256, 1
}

ACTOR EnergyProjectileSparkSea : EnergyProjectileSparkRed
{
BounceFactor 0.6
Gravity 0.2
States
{
Spawn:
BPKG A 2 Bright A_FadeOut(0.08)
Loop
}
}

ACTOR BPSG1 : EnergyProjectileSparkSea
{
Scale 0.06
}

ACTOR BPSG2 : EnergyProjectileSparkSea
{
Speed 1
Scale 0.05
}

ACTOR BPSG3 : EnergyProjectileSparkSea
{
Speed 2
Scale 0.04
}

ACTOR BPSG4 : EnergyProjectileSparkSea
{
Speed 3
Scale 0.03
}

ACTOR BPSG5 : EnergyProjectileSparkSea
{
Speed 4
Scale 0.02
}

ACTOR BPSG6 : EnergyProjectileSparkSea
{
Speed 5
Scale 0.01
}

ACTOR BPSG7 : EnergyProjectileSparkSea
{
Scale 0.040
}

ACTOR BPSG8 : EnergyProjectileSparkSea
{
Scale 0.035
}

ACTOR BPSG9 : EnergyProjectileSparkSea
{
Scale 0.030
}

ACTOR BPSG10 : EnergyProjectileSparkSea
{
Scale 0.025
}

ACTOR BPSG11 : EnergyProjectileSparkSea
{
Scale 0.020
}

ACTOR BPSG12 : EnergyProjectileSparkSea
{
Scale 0.015
}

ACTOR SeaParticleSpawner : GreenParticleSpawner
{
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("BPSG1",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("BPSG2",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("BPSG3",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("BPSG4",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("BPSG5",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("BPSG6",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 1
    Stop
  }
}

// Blue Legendary EnergyProjectileSpark
ACTOR LegendaryEnergyProjectileSparkSea : EnergyProjectileSparkSea { +NOTIMEFREEZE }
ACTOR BEPSGD1 : LegendaryEnergyProjectileSparkSea { Scale 0.06 }
ACTOR BEPSGD2 : LegendaryEnergyProjectileSparkSea { Scale 0.05 }
ACTOR BEPSGD3 : LegendaryEnergyProjectileSparkSea { Scale 0.04 }
ACTOR BEPSGD4 : LegendaryEnergyProjectileSparkSea { Scale 0.03 }
ACTOR BEPSGD5 : LegendaryEnergyProjectileSparkSea { Scale 0.02 }
ACTOR BEPSGD6 : LegendaryEnergyProjectileSparkSea { Scale 0.01 }
ACTOR LegendaryBlueParticleSpawner : SeaParticleSpawner
{
  +NOTIMEFREEZE
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("BEPSGD1",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("BEPSGD2",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("BEPSGD3",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("BEPSGD4",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("BEPSGD5",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("BEPSGD6",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 1
    Stop
  }
}
ACTOR DemonTechZombie2 28984 { 
	Health 60
	Radius 20
	Height 56
	Speed 8
	Mass 100
	PainChance 80
	PainChance "ZombieDemonTech", 0
	DropItem "StimKit" 150
	DropItem "ArmorBooster" 150
	DropItem "HandGrenadeAmmo" 150 1
	DropItem "MineAmmo" 75 1
	DropItem "AmmoPack" 75
	DropItem "DemonAmmo" 256 80
	DamageFactor "ZombieDemonTech", 0.15
	MONSTER 
	+MISSILEMORE
	+MISSILEEVENMORE
SeeSound "fem/sight"
PainSound "fem/pain"
DeathSound "fem/death"
ActiveSound "fem/active"
	Obituary "%o was seared by a Demon Tech zombie."
	States {
	Spawn:
		ZMBY A 10 A_Look
		Loop
	See:
		ZMBY AABB 3 A_Chase
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		ZMBY CCDD 3 A_Chase
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		Loop	
	Missile:
		ZMBY E 14 A_FaceTarget
		ZMBY E 1 A_FaceTarget
		TNT1 AAAAA 0 A_CustomMissile("DemonTechProjectile2",32,0,Random(-20,20)*0.1,0,Random(-5,5)*0.1)
		ZMBY F 3 Bright A_PlaySoundEx("weapons/demontechfire","Weapon")
		ZMBY E 30
		TNT1 A 0 A_SpidRefire
		Goto Missile+1
	Pain:
		ZMBY G 6 A_Pain
		Goto See
	Death:
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(298) == 1, "AlwaysDrop")
		TNT1 A 0 A_Jump(224,2)
		TNT1 A 0 A_SpawnItem("Demon Tech Ballista",0,12)
		ZMBY H 5 A_Scream
		ZMBY I 5 A_Fall
		ZMBY J 5 A_SpawnItem("BodyCrash",0,0,0,0)
		ZMBY K 5
		ZMBY L -1
		Stop
	XDeath:
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(298) == 1, "XAlwaysDrop")
		TNT1 A 0 A_Jump(224,2)
		TNT1 A 0 A_SpawnItem("Demon Tech Ballista",0,12)
		ASGZ O 3 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
		ASGZ P 3 A_XScream
		ASGZ R 3 A_Fall
		ASGZ STUV 3
		ASGZ W -1 
		Stop
	AlwaysDrop:
		TNT1 A 0 A_SpawnItem("Demon Tech Ballista",0,12)
		Goto Death+3
	XAlwaysDrop:
		TNT1 A 0 A_SpawnItem("Demon Tech Ballista",0,12)
		Goto XDeath+3	
	Raise:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		ASGZ VUTSRQPO 5
		Goto See
	}
}
ACTOR "Demon Tech Ballista" : Weapon
{
	Scale 0.95
        Weapon.SlotNumber 6
	Weapon.PreferredSkin "DTBallista-Marine"
	Weapon.SelectionOrder 7980
	Weapon.KickBack 60
	Weapon.AmmoGive 60
	Weapon.AmmoType "DemonAmmo"   
	Inventory.Pickupmessage "Demon Tech Ballista"
	Inventory.Icon "DTBIA0"
	Obituary "%o was pierced by %k's Demon Tech Ballista." 
	+WEAPON.NOAUTOAIM
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.NOALERT
	-INVENTORY.UNDROPPABLE
	States {
	Select:   
		TNT1 A 0 A_JumpIfInventory("DemonAmmo",5,2)
		DTBG E 1 A_Raise
		Goto Select
		DTBG ABCD 1 A_Raise
		Goto Select+2
	Ready:
		TNT1 A 0 A_JumpIfInventory("DemonAmmo",5,2)
		DTBG E 1 A_WeaponReady
		Goto Ready
		TNT1 A 0 A_PlaySound("weapons/demontechidle")
		DTBG ABCDCB 4 A_WeaponReady
		Goto Ready+2
	Deselect:
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0 A_TakeInventory("MineAction",1)
		TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
		TNT1 A 0 A_JumpIfInventory("DemonAmmo",5,2)
		DTBG E 1 A_Lower
		Goto Deselect+3
		DTBG ABCD 1 A_Lower
		Goto Deselect+3
	Fire:
		TNT1 A 0 A_JumpIfInventory("DemonAmmo",5,1)
		Goto Empty
		TNT1 A 0 A_PlaySound("weapons/BallistaFire")
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 Radius_Quake(1,2,0,1,0)
		TNT1 A 0 A_TakeInventory("DemonAmmo",5)
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_PlayWeaponSound("weapons/demontechfire")
		TNT1 A 0 A_FireCustomMissile("DemonTechProjectile",Random(-20,-15)*0.1,1,0,8,0,Random(-5,5)*0.1)
		TNT1 A 0 A_FireCustomMissile("DemonTechProjectile",Random(-10,-5)*0.1,1,0,8,0,Random(-5,5)*0.1) 
		TNT1 A 0 A_FireCustomMissile("DemonTechProjectile",Random(-2,2)*0.1,1,0,8,0,Random(-5,5)*0.1) 
		TNT1 A 0 A_FireCustomMissile("DemonTechProjectile",Random(5,10)*0.1,1,0,8,0,Random(-5,5)*0.1) 
		TNT1 A 0 A_FireCustomMissile("DemonTechProjectile",Random(15,20)*0.1,1,0,8,0,Random(-5,5)*0.1)
		DTBF A 2 Bright
		TNT1 A 0 A_Light0
		DTBF BCD 1
		DTBF EFG 2
		TNT1 A 0 A_JumpIfInventory("DemonAmmo",5,3)
		DTBF JK 2
		Goto Ready
		DTBF JK 2
		DTBG E 10
		DTBG FG 2
		DTBG A 1 A_WeaponReady
		Goto Ready+2
	Empty:
		TNT1 A 0 A_PlayWeaponSound("weapons/click")
		DTBF EFGJK 2
		Goto Ready
	GrenadeCheck:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		Goto Ready
	GrenadeToss:
		TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
		DTBG A 4 A_Lower
		TNT1 A 6
		HGRN ABC 1
		HGRN D 3
		HGRN EFGHI 2
		TNT1 A 14 A_PlayWeaponSound("weapons/hgrenadepin")
		TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
		TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
		TNT1 A 0 A_JumpIfInventory("DemolitionSoul",1,"HGTDSoul")
		TNT1 A 0 A_Jump(64,"HGTMSoul")
		TNT1 A 0 Bright A_FireCustomMissile("ThrownGrenade",0,0,0,0)
		TNT1 A 0 A_Jump(256,"HGTReady")
	HGTDSoul:
		TNT1 A 0 Bright A_FireCustomMissile("ThrownGrenade2",0,0,0,0)
		TNT1 A 0 A_Jump(256,"HGTReady")
	HGTMSoul:
		TNT1 A 0 Bright A_FireCustomMissile("ThrownGrenadeC",0,0,0,0)
		TNT1 A 0 A_Jump(256,"HGTReady")
	HGTReady:
		HGRN AJ 1
		HGRN KLM 2
		HGRN NO 1
		TNT1 A 6
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
		TNT1 A 0 A_TakeInventory("Hand Grenade",1)
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0
		Goto Ready+1
	MineCheck:
		TNT1 A 0 A_JumpIfInventory("MineAmmo",1,"MineToss")
		TNT1 A 0 A_TakeInventory("MineAction",1)
		Goto Ready+5
	MineToss:
		TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
		DTBG A 4 A_Lower
		TNT1 A 10 
		TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
		MINE ABCDEF 1		
		TNT1 A 0 A_TakeInventory("MineAmmo",1)
		TNT1 A 0 A_JumpIfInventory("DemolitionSoul",1,"MineDSoul")
		TNT1 A 0 A_Jump(64,"MineMSoul")
		TNT1 A 0 Bright A_FireCustomMissile("ThrownMine",0,0,0,0)
		TNT1 A 0 A_Jump(256,"MineReady")
	MineDSoul:
		TNT1 A 0 Bright A_FireCustomMissile("ThrownMine2",0,0,0,0)
		TNT1 A 0 A_Jump(256,"MineReady")
	MineMSoul:
		TNT1 A 0 Bright A_FireCustomMissile("ThrownMineC",0,0,0,0)
		TNT1 A 0 A_Jump(256,"MineReady")
	MineReady:
		MINE G 1 
		MINE HI 1
		MINE JK 2
		TNT1 A 0 A_JumpIfInventory("MineAmmo",1,2)
		TNT1 A 0 A_TakeInventory("Land Mine",1)
		TNT1 A 0 A_TakeInventory("MineAction",1)
		TNT1 A 0
		TNT1 A 5
		Goto Ready+1
	Spawn:
		DTBI A -1
		Stop    
	}
}
ACTOR DemonTechProjectile2 : DemonTechProjectile {
	Damage 4
	Scale 0.20
	States {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jump(128,"Spawn2")
	Normal:
		DTPR A 1 Bright A_SpawnItemEx("DemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
		Loop
	Spawn2:
		DTPR A 1 Bright A_SpawnItemEx("DemonTechTrail2",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
		Loop	  
	Death:
		TNT1 A 0
		TNT1 A 0 Bright A_SpawnItemEx("GreenParticleSpawnerDT", 0, 0, 0, 0, 0, 0, 0, 128)
		TNT1 A 0 Bright A_SpawnItemEx("DemonTechEx",0,0,0,0,0,0,0,128,0)
		TNT1 AAA 0 A_CustomMissile("SmokeFX4", 0, 0, random(0,360), 2, random(0,360))
		TNT1 A 1 Bright A_Explode(10,64)
		Stop
	  }
}
