actor NoiseCrushBoss : MegaBuster 
{
//Weapon.AmmoUse 28
Weapon.AmmoGive 28
Weapon.SlotNumber 1
Obituary "%o was crushed by %k's Noise Crush."
Inventory.Pickupmessage "Power up! Noise Crush!"
weapon.ammotype "NoiseCrushClassAmmo"
inventory.pickupsound "weapon/weaponup"
+WEAPON.AMMO_OPTIONAL
+WEAPON.Alt_AMMO_OPTIONAL
//inventory.icon "BRIGHSI"
Scale 2.0
States
{
Spawn:
WEA3 E 1
loop
Ready:
SHDW A 0 ACS_ExecuteAlways(998,0,248)
NCRU I 0 A_JumpIfInventory("NoiseCrushFlag",1,"Charged")
SHDW AAAA 1 A_WeaponReady(WRF_NOSWITCH)
SHDW A 0 A_GiveInventory("NoiseCrushClassAmmo",1)
Goto Ready+1
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
SHDW A 0
SHDW A 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
SHDW A 1 A_Raise
Loop
Fire:
NCRU I 0 A_JumpIfInventory("CutterFlag",1,"Swoop")
NCRU I 0 A_JumpIfInventory("NoiseCrushFlag",1,"Fire2")
SHDW A 0 A_PlaySoundEx("weapon/noisecrush1","Weapon")
SHDW A 0 A_FireCustomMissile("NoiseCrushB",0,0,8,0)
SHDW C 12
SHDW BA 6
SHDW A 0 A_Refire
goto Ready+1
Charged:
SHDW E 0 ACS_ExecuteAlways(991,0,249)
SHDW E 0 A_PlaySoundEx("weapon/noisecrushcharge","Weapon")
SHDW G 1 //WeaponReady
SHDW E 0 ACS_ExecuteAlways(991,0,250)
SHDW E 0 //A_PlaySoundEx("weapon/noisecrushcharge","Voice")
SHDW F 1 //A_WeaponReady
SHDW F 0 ACS_ExecuteAlways(991,0,249)
SHDW F 0 //A_PlaySoundEx("weapon/noisecrushcharge","Voice")
SHDW G 1 //A_WeaponReady
SHDW F 0 ACS_ExecuteAlways(991,0,250)
SHDW F 0 //A_PlaySoundEx("weapon/noisecrushcharge","Voice")
SHDW F 1 //A_WeaponReady
SHDW F 0 ACS_ExecuteAlways(991,0,249)
SHDW F 0 A_PlaySoundEx("weapon/noisecrushcharge","Weapon")
SHDW G 1 A_WeaponReady
SHDW E 0 ACS_ExecuteAlways(991,0,250)
SHDW E 0 //A_PlaySoundEx("weapon/noisecrushcharge","Voice")
SHDW F 1 A_WeaponReady
SHDW F 0 ACS_ExecuteAlways(991,0,249)
SHDW F 0 //A_PlaySoundEx("weapon/noisecrushcharge","Voice")
SHDW G 1 A_WeaponReady
SHDW E 0 ACS_ExecuteAlways(991,0,250)
SHDW E 0 //A_PlaySoundEx("weapon/noisecrushcharge","Voice")
SHDW F 1 A_WeaponReady
SHDW F 0 ACS_ExecuteAlways(991,0,249)
SHDW F 0 A_PlaySoundEx("weapon/noisecrushcharge","Weapon")
SHDW G 1 A_WeaponReady
SHDW E 0 ACS_ExecuteAlways(991,0,250)
SHDW E 0 //A_PlaySoundEx("weapon/noisecrushcharge","Voice")
SHDW F 1 A_WeaponReady
SHDW F 0 ACS_ExecuteAlways(991,0,249)
SHDW F 0 //A_PlaySoundEx("weapon/noisecrushcharge","Voice")
SHDW G 1 A_WeaponReady
SHDW E 0 ACS_ExecuteAlways(991,0,250)
SHDW E 0 //A_PlaySoundEx("weapon/noisecrushcharge","Voice")
SHDW F 1 A_WeaponReady
loop
Fire2:
NCRU I 0 //A_JumpIfNoAmmo("Fire1")
NCRU I 0 A_PlaySoundEx("weapon/noisecrush2","Weapon")
NCRU I 0 A_FireCustomMissile("NoiseCrush2B",0,0,8,0)
SHDW C 30 A_TakeInventory("NoiseCrushFlag",1)
NCRU I 0 ACS_ExecuteAlways(991,0,248)
SHDW BA 8 
NCRU I 0 A_Refire
Goto Ready+1
AltFire:
TNT1 A 0 A_JumpIfInventory("CutterFlag",1,"FlightMode")
TNT1 A 0 A_JumpIfInventory("NoiseCrushFlag",1,"Fire2")
SHDW HIJ 3
TNT1 A 0 A_ChangeFlag("LOWGRAVITY",1)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
Goto FlightMode
FlightMode:
TNT1 A 0 A_TakeInventory("NoiseCrushClassAmmo",2)
TNT1 A 0 A_JumpIfInventory("NoiseCrushClassAmmo",1,"Thrust")
TNT1 A 0 //SetPlayerProperty(0,1,3)
Goto Flight
Thrust:
TNT1 A 0 A_GiveInventory("ShadeWing",1)
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,2)
TNT1 A 0 ThrustThingZ(0,30,0,0)
TNT1 A 0
Flight:
TNT1 A 0 A_ChangeFlag("INVULNERABLE",0)
TNT1 AAAA 1
TNT1 A 0 A_TakeInventory("ShadeWing",1)
TNT1 AAAAAAAAAAAAAAAA 1 A_JumpIf(floorz-z==0,"FlightEnd")
TNT1 A 0 //SetPlayerProperty(0,0,3)
TNT1 A 0 A_JumpIf(floorz-z==0,"FlightEnd")
TNT1 AA 1 A_WeaponReady
TNT1 A 0 A_JumpIf(floorz-z==0,"FlightEnd")
TNT1 AA 1 A_WeaponReady
TNT1 A 0 A_JumpIf(floorz-z==0,"FlightEnd")
TNT1 AA 1 A_WeaponReady
TNT1 A 0 A_JumpIf(floorz-z==0,"FlightEnd")
TNT1 AA 1 A_WeaponReady
TNT1 A 0 A_JumpIf(floorz-z==0,"FlightEnd")
TNT1 AA 1 A_WeaponReady
TNT1 A 0 A_JumpIf(floorz-z==0,"FlightEnd")
TNT1 AA 1 A_WeaponReady
TNT1 A 0 A_JumpIf(floorz-z==0,"FlightEnd")
TNT1 AA 1 A_WeaponReady
Goto Flight
Swoop:
TNT1 A 0 A_JumpIfInventory("NoiseCrushClassAmmo",5,"SwoopStart")
Goto Flight
SwoopStart:
TNT1 A 0 A_PlayWeaponSound("weapon/shadedive")
TNT1 A 0 A_TakeInventory("NoiseCrushClassAmmo",5)
TNT1 A 0 SetPlayerProperty(0,1,0)
TNT1 A 2 A_Stop
SHDW D 2
Swooping:
SHDW D 0 A_GiveInventory("ShadeDrain",1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
SHDW D 0 A_Recoil(-3)
SHDW D 0 ThrustThingZ(0,7,1,1)
SHDW D 0 A_SpawnItemEx("SwoopDamager",0,0,0,momx+8,momy,momz,0,SXF_ABSOLUTEMOMENTUM, 0)
TNT1 A 0 A_JumpIfInventory("SwoopSafeGuard",100,"SwoopFail")
SHDW E 1 A_JumpIf(floorz-z==0,"SwoopFail")
SHDW D 0 A_GiveInventory("SwoopSafeGuard",1)
loop
SwoopFail:
TNT1 A 0 A_ChangeFlag("INVULNERABLE",0)
SHDW D 0 A_TakeInventory("SwoopSafeGuard",999)
SHDW D 0 A_SpawnItemEx("SwoopDamager",0,0,0,momx+8,momy,momz,0,SXF_ABSOLUTEMOMENTUM, 0)
SHDW E 2 A_Recoil(-2)
SHDW D 0 //ThrustThingZ(0,18,0,1)
SHDW D 0 A_SpawnItemEx("SwoopDamager",0,0,0,momx+8,momy,momz,0,SXF_ABSOLUTEMOMENTUM, 0)
SHDW E 2 A_Recoil(-2)
SHDW D 0 //ThrustThingZ(0,18,0,1)
SHDW D 0 A_SpawnItemEx("SwoopDamager",0,0,0,momx+8,momy,momz,0,SXF_ABSOLUTEMOMENTUM, 0)
SHDW E 2 A_Recoil(-2)
SHDW D 0 A_TakeInventory("PowerDrain",1)
SHDW D 0 A_TakeInventory("ShadeDrain",1)
SHDW D 0 ThrustThingZ(0,18,0,1)
SHDW E 2 A_Recoil(-2)
SHDW D 0 ThrustThingZ(0,18,0,1)
SHDW E 2 A_Recoil(-2)
SHDW D 0 ThrustThingZ(0,6,0,1)
SHDW E 2 A_Recoil(-2)
SHDW D 0 ThrustThingZ(0,6,0,1)
SHDW D 4 SetPlayerProperty(0,0,0)
Goto FlightEnd
FlightEnd:
SHDW JIH 2
TNT1 A 0 A_TakeInventory("CutterFlag",1)
TNT1 A 0 A_TakeInventory("NoiseCrushFlag",1)
TNT1 A 0 A_ChangeFlag("LOWGRAVITY",0)
Goto Ready+1
NoAmmo:
SHDW A 0
//SHDW A 1 ACS_Execute(979,0)
Goto Ready+1
}
}

actor ShadeWing : Inventory
{
Inventory.amount 1
Inventory.maxamount 1
}

actor SwoopSafeGuard : Inventory
{
Inventory.amount 1
Inventory.maxamount 50
}

actor ShadeDrain : PowerupGiver
{
 +AUTOACTIVATE
 inventory.maxamount 0
 powerup.type "Drain"

   states
 {
 Spawn:
   TNT1 A 4
   loop
 }
}


actor SwoopDamager
{
PROJECTILE
Radius 1
Height 1
damagetype "Noise"
Speed 1
Obituary "%o was drained dry by %k's Shade Swoop."
States
{
Spawn:
TNT1 A 0
TNT1 A 2 A_Explode(15,80,0)
stop
}
}

actor NoiseCrushClassAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 28
}

actor NoiseCrushB : NoiseCrushC
{
damage (15)
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("NoiseCrushTrailBoss1",0,0,0,0,0,0,0)
TNT1 A 1 A_CountDown
TNT1 A 0 A_SpawnItemEx("NoiseCrushTrailBoss2",0,0,0,0,0,0,0)
TNT1 A 1 A_CountDown
TNT1 A 0 A_SpawnItemEx("NoiseCrushTrailBoss3",0,0,0,0,0,0,0)
TNT1 A 1 A_CountDown
TNT1 A 0 A_SpawnItemEx("NoiseCrushTrailBoss4",0,0,0,0,0,0,0)
TNT1 A 1 A_CountDown
Goto Look
Look:
TNT1 A 0 A_JumpIfCloser(40, "Give")
TNT1 A 0 A_SpawnItemEx("NoiseCrushTrailBoss1",0,0,0,0,0,0,0)
TNT1 A 1 A_CountDown
TNT1 A 0 A_JumpIfCloser(40, "Give")
TNT1 A 0 A_SpawnItemEx("NoiseCrushTrailBoss2",0,0,0,0,0,0,0)
TNT1 A 1 A_CountDown
TNT1 A 0 A_JumpIfCloser(40, "Give")
TNT1 A 0 A_SpawnItemEx("NoiseCrushTrailBoss3",0,0,0,0,0,0,0)
TNT1 A 1 A_CountDown
TNT1 A 0 A_JumpIfCloser(40, "Give")
TNT1 A 0 A_SpawnItemEx("NoiseCrushTrailBoss4",0,0,0,0,0,0,0)
TNT1 A 1 A_CountDown
loop
}
}

actor NoiseCrush2B : NoiseCrush2C
{
damage (45)
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_SpawnItemEx("NoiseCrushTrailBoss5",0,0,0,0,0,0,0)
TNT1 A 1 A_SpawnItemEx("NoiseCrushTrailBoss6",0,0,0,0,0,0,0)
TNT1 A 1 A_SpawnItemEx("NoiseCrushTrailBoss7",0,0,0,0,0,0,0)
TNT1 A 1 A_SpawnItemEx("NoiseCrushTrailBoss8",0,0,0,0,0,0,0)
loop
}
}

actor NoiseCrushTrailBoss1 : NoiseCrushTrail1
{
translation "192:207=254:254",  "250:254=4:4"
}

actor NoiseCrushTrailBoss2 : NoiseCrushTrailBoss1
{
States
{
Spawn:
NCRU C 5
stop
}
}

actor NoiseCrushTrailBoss3 : NoiseCrushTrailBoss1
{
States
{
Spawn:
NCRU B 5
stop
}
}

actor NoiseCrushTrailBoss4 : NoiseCrushTrailBoss1
{
States
{
Spawn:
NCRU A 5
stop
}
}

actor NoiseCrushTrailBoss5 : NoiseCrushTrailBoss1
{
States
{
Spawn:
NCRU H 8
stop
}
}

actor NoiseCrushTrailBoss6 : NoiseCrushTrailBoss1
{
States
{
Spawn:
NCRU G 8
stop
}
}

actor NoiseCrushTrailBoss7 : NoiseCrushTrailBoss1
{
States
{
Spawn:
NCRU F 8
stop
}
}

actor NoiseCrushTrailBoss8 : NoiseCrushTrailBoss1
{
States
{
Spawn:
NCRU E 8
stop
}
}