Actor Spin : Inventory
{
Inventory.MaxAmount 1
}

// --------------------------------------------------------------------------
//
//	Mastermind's Autocannon
//
// --------------------------------------------------------------------------

ACTOR Autocannon : BrutalWeapon
{
	Weapon.AmmoUse 1
	Weapon.AmmoGive 400
	Weapon.AmmoType "CannonShells"
	Weapon.SelectionOrder 2800
	Inventory.PickupSound "BFGREADY"
	Inventory.PickupMessage "You got the Spider Mastermind's AutoCannon!"
	Obituary "%o was vindicated down by %k's AutoCannon."
	Tag "Autocannon"
	Scale 0.8
	//+WEAPON.CHEATNOTWEAPON
	States
	{
	Spawn:
		ACN1 A -1
		Stop

	Select:
		TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist",1,"PuristGun")
//		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(1001,8)==0,"PuristGun")
	MGN1 A 0 A_Giveinventory("HeavyAutomaticWeapon",1)
		TNT1 A 0 A_Giveinventory("MinigunSelected",1)
		TNT1 A 0 A_Giveinventory("GoSpecial",1)
		TNT1 A 0 A_Takeinventory("Unloading",1)
		TNT1 A 0 A_Takeinventory("Reloading",1)
		TNT1 A 0 A_TakeInventory("TossGrenade",1)
		TNT1 A 0 A_Takeinventory("WeapSpecial",1)
		TNT1 A 0 A_Takeinventory("SwitchFlashlight",1)
		TNT1 A 0 A_Takeinventory("Taunting",1)
//		TNT1 A 0 A_Takeinventory("IdleCounter",200)
		TNT1 A 4
		TNT1 A 0 A_Raise
		Wait

	Deselect:
		TNT1 A 0 A_JumpIfInventory("Spin",1,2)
		TNT1 A 0 A_Jump(256,3)
		TNT1 A 0 A_PlaySound("AUTOSTO",6)
		TNT1 A 0 A_TakeInventory("Spin",1)
		TNT1 A 0 A_TakeInventory("MinigunSelected",1)
TNT1 A 0 A_Takeinventory("HeavyAutomaticWeapon",1)
TNT1 A 0 A_Takeinventory("TossGrenade",1)
		ACAS ABCDEF 1
		TNT1 A 0 A_Lower
		Wait

	Ready:
		TNT1 A 0 A_JumpIfInventory("GoFatality",1,"Steady")
		TNT1 A 0 A_PlaySound("CHGNPKUP")
	Ready1:
		ACAS FEDCBA 1
TNT1 A 0 A_GunFlash
	Ready2:
        //TNT1 A 0 A_JumpIfInventory("Kicking",1,"Kick")
       // TNT1 A 0 A_JumpIfInventory("Taunting",1,"Taunt")
		TNT1 A 0 A_JumpIfInventory("Salute1",1,"Salute")
		TNT1 A 0 A_JumpIfInventory("Salute2",1,"Salute")
//TNT1 A 0 A_JumpIfInventory("TossGrenade",1,"TossGrenade")
		TNT1 A 0 A_JumpIfInventory("Spin",1,"ReadySpin")
		ACA1 A 1 A_WeaponReady
		Goto Ready2


	ReadySpin:
		ACA1 CD 1 A_WeaponReady
       // TNT1 A 0 A_JumpIfInventory("Kicking",1,"Kick")
       // TNT1 A 0 A_JumpIfInventory("Taunting",1,"Taunt")
		TNT1 A 0 A_JumpIfInventory("Salute1",1,"Salute")
		TNT1 A 0 A_JumpIfInventory("Salute2",1,"Salute")
ACA1 D 0 BRIGHT A_SetAngle(frandom(1,-1) + angle)
		ACA1 D 1 A_SetPitch(-0.35 + pitch)
		

TNT1 A 0 A_JumpIfInventory("TossGrenade",1,"TossGrenade")
		ACA1 EF 1 A_WeaponReady
       // TNT1 A 0 A_JumpIfInventory("Kicking",1,"KickR")
       // TNT1 A 0 A_JumpIfInventory("Taunting",1,"TauntR")
		TNT1 A 0 A_JumpIfInventory("Salute1",1,"Salute")
		TNT1 A 0 A_JumpIfInventory("Salute2",1,"Salute")
	//	TNT1 A 0 A_JumpIfInventory("TossGrenade",1,"TossGrenade")

ACA1 D 0 BRIGHT A_SetAngle(frandom(1,-1) + angle)
		ACA1 D 1 A_SetPitch(0.35 + pitch)

		ACA1 GH 1 A_WeaponReady
      //  TNT1 A 0 A_JumpIfInventory("Kicking",1,"KickR")
       // TNT1 A 0 A_JumpIfInventory("Taunting",1,"TauntR")
		TNT1 A 0 A_JumpIfInventory("Salute1",1,"Salute")
		TNT1 A 0 A_JumpIfInventory("Salute2",1,"Salute")
		
ACA1 D 0 BRIGHT A_SetAngle(frandom(1,-1) + angle)

//TNT1 A 0 A_JumpIfInventory("TossGrenade",1,"TossGrenade")
		TNT1 A 0 A_AlertMonsters
		Goto Ready2
		
	Fire:
		TNT1 A 0 A_JumpIfInventory("Spin",1,"Hold")
		TNT1 A 0 A_PlaySound("AUTOSTA",6)
		ACA1 DEF 3
		ACA1 GHCD 2
		ACA1 EF 2 //EFGH 1
		TNT1 A 0 A_PlaySound("AUTOSPI",6,1,1)
ACA1 GH 1 //new

    Hold:
		TNT1 A 0 A_FireCustomMissile("Alerter",0,0,0,0)
		TNT1 A 0 A_AlertMonsters
		
		TNT1 A 0 A_Recoil(0.9)
		TNT1 A 0 A_PlaySound("CHGNSHOT",1)
		TNT1 A 0 A_FireCustomMissile("ShakeYourAss",0,0,0,0)
		TNT1 A 0 A_FireCustomMissile("YellowFlareSpawn",0,0,0,0)
		//ACA1 A 1 BRIGHT A_FireBullets(6,4,1,9,"MachineGunBulletPuff",1)
		TNT1 A 0 A_SpawnItemEx("PlayerMuzzle2",30,5,27)
		TNT1 A 0 A_Jump(128,3)
		ACA2 A 1 BRIGHT A_FireCustomMissile("AutoCannonShot",frandom(-3,3),1,0,-6,0,frandom(-3,3))
		TNT1 A 0 A_Jump(256,2)
		ACA2 C 1 BRIGHT A_FireCustomMissile("AutoCannonShot",frandom(-3,3),1,0,-6,0,frandom(-3,3))
		TNT1 A 0 A_Firecustommissile("MasterMindCaseSpawn",0,0,12,-18)
		TNT1 AA 0 A_FireCustomMissile("ShotgunParticles",frandom(-9,9),0,-1,-6,0,frandom(-9,9))
		TNT1 A 0 A_Jump(128,3)
		ACA2 B 1 BRIGHT A_SetAngle(frandom(3,-3) + angle)
		TNT1 A 0 A_Jump(256,2)
		ACA2 D 1 BRIGHT A_SetAngle(frandom(3,-3) + angle)
		TNT1 A 0 A_Jump(128,3)
		ACA1 E 1 A_SetPitch(-0.7 + pitch)
		TNT1 A 0 A_Jump(256,2)
		ACA1 H 1 A_SetPitch(-0.7 + pitch)
		
		TNT1 A 0 A_ReFire
		TNT1 A 0 A_JumpIfInventory("Spin",1,"ReadySpin")
		
		TNT1 A 0 A_TakeInventory("Spin",1)
		TNT1 A 0 A_PlaySound("AUTOSTO",6)
		ACA1 CDEF 1 A_WeaponReady
		ACA1 GHCDEFGHCD 2 A_WeaponReady
		ACA1 EFGH 3 A_WeaponReady
		ACA1 B 4 A_WeaponReady
		Goto Ready2

	AltFire:
		TNT1 A 0 A_JumpIfInventory("Spin",1,"StopAlt")
		TNT1 A 0 A_GiveInventory("Spin",1)
		TNT1 A 0 A_PlaySound("AUTOSTA",6)
		ACA1 DEF 4 //3
		ACA1 GHCD 2
		ACA1 EF 2
		TNT1 A 0 A_PlaySound("AUTOSPI",6,1,1)
		ACA1 GH 2
		Goto Ready2

	StopAlt:
		TNT1 A 0 A_TakeInventory("Spin",1)
		TNT1 A 0 A_PlaySound("AUTOSTO",6)
		ACA1 CDEF 1 //A_WeaponReady
		ACA1 GHCDEFGHCD 2 //A_WeaponReady
		ACA1 EFGH 3 //A_WeaponReady
		ACA1 B 4 //A_WeaponReady
		Goto Ready2
 		
	PuristGun:
		TNT1 A 1
		TNT1 A 0 A_TakeInventory("Autocannon",1)
		TNT1 A 10
		Goto Ready2

// --------------------------------------------------------------------------
//
//	End Stuff
//
// --------------------------------------------------------------------------

	TauntFlash:
		TNT1 A 0 A_JumpIfInventory("Spin",1,"TauntFlashSpin")
		ACAK ABCD 1
		ACAK E 36
		ACAK DCBA 1
		Stop

	TauntFlashSpin:
		ACAK FGHI 1
		ACAK JKLMNOJKLMNOJKLMNOJKLMNOJKLMNOJKLMNO 1
		ACAK PQRS 1
		Stop

	KickFlash:
		TNT1 A 0 A_JumpIfInventory("Spin",1,"KickFlashSpin")
		ACAK ABCD 1
		ACAK E 9
		ACAK DCBA 1
		Stop

	KickFlashSpin:
		ACAK FGHI 1
		ACAK JKLMNOJKL 1
		ACAK PQRS 1
		Stop

	AirKickFlash:
		TNT1 A 0 A_JumpIfInventory("Spin",1,"AirKickFlashSpin")
		ACAK ABCD 1
		ACAK E 11
		ACAK DCBA 1
		Stop

	AirKickFlashSpin:
		ACAK FGHI 1
		ACAK JKLMNOJKLMN 1
		ACAK PQRS 1
		Stop

	SlideKickStartFlash:
		TNT1 A 0 A_JumpIfInventory("Spin",1,"SlideKickStartFlashSpin")
		ACAK ABCD 1
		ACAK E 17
		Stop
	
	SlideKickEndFlash:
		TNT1 A 0 A_JumpIfInventory("Spin",1,"SlideKickEndFlashSpin")
		ACAK EDCBA 2
		ACAK A 1
		Stop

	SlideKickStartFlashSpin:
		ACAK FGHI 1
		ACAK JKLMNOJKLMNOJKLMN 1
		Stop

	SlideKickEndFlashSpin:
		ACAK LPQRS 2
		ACAK A 1
		Stop

//	GrenadeFlash:
//		ACAS ABCDEF 1
//		Stop
	}
}

ACTOR CannonShells : Ammo
{
   Inventory.Amount 0
   Inventory.MaxAmount 200
   Ammo.BackpackAmount 0
   Ammo.BackpackMaxAmount 400
   Inventory.Icon "ACN1A0"
}

Actor AutoCannonShot: FastProjectile
{
	Game Doom
	+MISSILE
	+NOEXTREMEDEATH
	Projectile
	+RANDOMIZE
	+FORCEXYBILLBOARD
	+BLOODSPLATTER 
	+THRUGHOST
	speed 120
	damage 20
	scale 1.0
	radius 2
	height 2
	RenderStyle Add
	Alpha 0.9
	seesound "SSHFIRE"
	damagetype ExplosiveImpact
	Decal "Scorch"
	Obituary "%o was vindicated down by %k's AutoCannon."
	States
	{
	Spawn:
		TNT1 A 1
		TNT1 A 0 A_SpawnItemEx("AutoCannonTracerTrail2",(2 *momx)/-35.0,-(2 *momy)/-35.0,2+(2 *momz)/-35.0,0,0,0,0,SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_SpawnItemEx("AutoCannonTracerTrail3",(4 *momx)/-35.0,-(4 *momy)/-35.0,2+(4 *momz)/-35.0,0,0,0,0,SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_SpawnItemEx("AutoCannonTracerTrail4",(6 *momx)/-35.0,-(6 *momy)/-35.0,2+(6 *momz)/-35.0,0,0,0,0,SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_SpawnItemEx("AutoCannonTracerTrail5",(8 *momx)/-35.0,-(8 *momy)/-35.0,2+(8 *momz)/-35.0,0,0,0,0,SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_SpawnItemEx("AutoCannonTracerTrail6",(10*momx)/-35.0,-(10*momy)/-35.0,2+(10*momz)/-35.0,0,0,0,0,SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_SpawnItemEx("AutoCannonTracerTrail7",(12*momx)/-35.0,-(12*momy)/-35.0,2+(12*momz)/-35.0,0,0,0,0,SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_SpawnItemEx("AutoCannonTracerTrail8",(14*momx)/-35.0,-(14*momy)/-35.0,2+(14*momz)/-35.0,0,0,0,0,SXF_ABSOLUTEANGLE)
		TNT1 A 0 A_SpawnItemEx("AutoCannonTracerTrail9",(16*momx)/-35.0,-(16*momy)/-35.0,2+(16*momz)/-35.0,0,0,0,0,SXF_ABSOLUTEANGLE)
	Loop
	XDeath:
	Death:
	//	TNT1 A 0 A_Explode(10,120,0)
TNT1 A 0 A_Explode(12, 120) 

		TNT1 A 0 A_SpawnItemEx("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)//
		TNT1 AA 0 A_SpawnItemEx("TinyExplosionFlames",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)//
		TNT1 A 0 A_SpawnItem("WhiteShockwaveSmall")
		TNT1 A 0 A_CustomMissile("BDExplosionparticles",0,0,random(0,360),2,random(40,90))
		TNT1 A 0 A_CustomMissile("U_ExplosionParticleHeavy",0,0,random(0,360),2,random(-90,90))
		TNT1 A 0 A_PlaySound("FAREXPL")
		TNT1 A 0 Radius_Quake(4,3,0,15,0)
		XPAC ABCDEFGHIJ 1 BRIGHT
		Stop
	}
}