ACTOR CyberdemonsMissileLauncher : BrutalWeapon
{
	Weapon.AmmoUse1 0
	Weapon.AmmoGive1 0
	Weapon.AmmoUse2 0
	Weapon.AmmoGive2 0
	Weapon.AmmoType1 "CyberdemonRockets"
	weapon.selectionorder 3800
	Obituary "%o was blown up by %k's Cyberdemon missile launcher. Ouch!"
    AttackSound "None"
    Inventory.PickupSound "BFGREADY"
	Inventory.Pickupmessage "You got the Cyberdemon's missile launcher! Holy shit, that thing's heavy... (Slot 8)"
    +WEAPON.NOAUTOAIM
	+WEAPON.NOAUTOFIRE
	+WEAPON.NOALERT
	+WEAPON.NO_AUTO_SWITCH
	+WEAPON.WIMPY_WEAPON
    +FORCEXYBILLBOARD
	Scale 0.9
	Tag "Cyberdemon's Missile Launcher"
	States
	{
	GrenadeThrowFlash:
	CYBF LMNO 1 BRIGHT 
	TNT1 A 28
	CYBF ONML 1 BRIGHT //36 in total
	stop
	
	KickingFlash:
	CYBF PQRSTUTUTUTUSRQP 1 BRIGHT 
	stop
	
	AirKickingFlash:
	CYBF PQRSTUTUTUTUTUSRQP 1 BRIGHT 
	    stop
	
	 SlideKickingStart:
	    CYBF PQRS 1 BRIGHT 
	    CYBF TUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTUTU 1 BRIGHT  //39 total
	    Stop

	 SlideKickingEnd:
	    CYBF TUTUTUSRQP 1 BRIGHT 
	    Stop
	FuckYouFlash:
	CYBF PQRS 1 BRIGHT  //28
	CYBF TUTUTUTUTUTUTUTUTUTU 1 BRIGHT 
	CYBF SRQP 1 BRIGHT 
	stop
	
	Ready3:
	Ready:
        CYBF I 0 A_JumpIfInventory("Kicking",1,"DoKick")
        CYBF I 0 A_JumpIfInventory("Taunting",1,"Taunt")
		CYBF I 0 A_JumpIfInventory("Salute1", 1, "Salute")
		CYBF I 0 A_JumpIfInventory("Salute2", 1, "Salute")
		CYBF I 0 A_JumpIfInventory("TossGrenade",1,"TossGrenade")
		CYBF IJ 1 BRIGHT A_WeaponReady
		CYBF I 0 A_JumpIfInventory("IsRunning",1,"CheckSprint")
		Loop
		
	CheckSprint:
		CYBF I 1 BRIGHT  A_WeaponReady(WRF_NOFIRE)
		CYBF I 0 A_JumpIfInventory("IsStandingStill", 1, "Ready3")
		CYBF I 0 A_JumpIfInventory("IsTacticalClass", 1, "StartSprint")
		Goto Ready
		
	StartSprint:
		CYBF J 1 BRIGHT  A_WeaponReady(WRF_NOFIRE)
		CYBF I 0 A_JumpIfInventory("UsedStamina", 40, "StopSprintTired")
		
	Sprinting:	
		PISP A 0 offset(-9,32) 
		CYBF I 0 offset(-9,32) A_JumpIfInventory("IsStandingStill", 1, "Ready3")
		CYBF I 0 offset(-9,32) A_JumpIfInventory("UsedStamina", 100, "StopSprintTired")
		PLAY A 0 offset(-9,32) ACS_ExecuteAlways(852, 0, 0, 0, 0)//Makes player faster.
		CYBF I 0 offset(-9,32) A_JumpIfInventory("PowerStrength", 1, 2)
		CYBF I 0 offset(-9,32) A_GiveInventory("UsedStamina", 6)
		CYBF I 0 offset(-9,32)
		CYBF R 1 BRIGHT  offset(-9,34) A_SetPitch(pitch -0.5, SPF_INTERPOLATE)
		CYBF R 1 BRIGHT  offset(-6,36) A_SetPitch(pitch -0.5, SPF_INTERPOLATE)
		CYBF R 1 BRIGHT  offset(-3,38) A_SetPitch(pitch -0.5, SPF_INTERPOLATE)
		CYBF R 1 BRIGHT  offset(0,38) A_SetPitch(pitch -0.5, SPF_INTERPOLATE)
		CYBF R 1 BRIGHT  offset(3,36) A_SetPitch(pitch -0.5, SPF_INTERPOLATE)
		CYBF R 1 BRIGHT  offset(6,34) A_SetPitch(pitch -0.5, SPF_INTERPOLATE)
		CYBF R 1 BRIGHT  offset(9,32) A_SetPitch(pitch -0.5, SPF_INTERPOLATE)
		CYBF I 0 offset(9,32) A_WeaponReady(WRF_NOBOB)
		CYBF I 0 A_JumpIfInventory("Kicking",1,"DoKick")
        CYBF I 0 A_JumpIfInventory("Taunting",1,"Taunt")
		CYBF I 0 offset(-9,32) A_GiveInventory("UsedStamina", 8)
		CYBF I 0 offset(9,33) A_SpawnItemEx("FootStep", 0, 0, 2, 0, 0, -4)
		CYBF R 1 BRIGHT  offset(9,34) A_SetPitch(pitch +0.5, SPF_INTERPOLATE)
		CYBF R 1 BRIGHT  offset(6,36) A_SetPitch(pitch +0.5, SPF_INTERPOLATE)
		CYBF R 1 BRIGHT  offset(3,38) A_SetPitch(pitch +0.5, SPF_INTERPOLATE)
		CYBF R 1 BRIGHT  offset(0,38) A_SetPitch(pitch +0.5, SPF_INTERPOLATE)
		CYBF R 1 BRIGHT  offset(-3,36) A_SetPitch(pitch +0.5, SPF_INTERPOLATE)
		CYBF R 1 BRIGHT  offset(-6,34) A_SetPitch(pitch +0.5, SPF_INTERPOLATE)
		CYBF R 1 BRIGHT  offset(-9,32) A_SetPitch(pitch +0.5, SPF_INTERPOLATE)
		CYBF I 0 offset(-9,32) A_WeaponReady(WRF_NOBOB)
		CYBF I 0 offset(-9,32) A_JumpIfInventory("IsRunning", 1, "Sprinting")
		
		Goto StopSprint
	StopSprintTired:
		CYBF J 1 BRIGHT 
		PLAY A 0 ACS_ExecuteAlways(853, 0, 0, 0, 0)//Makes player slower.
		CYBF I 0 A_PlaySound("Tired", 2)
		CYBF I 0 A_TakeInventory("UsedStamina", 2)
		CYBF IJIJ 1 BRIGHT  A_WeaponReady
		CYBF I 0 A_TakeInventory("UsedStamina", 2)
		CYBF IJIJ 1 BRIGHT  A_WeaponReady
		CYBF I 0 A_TakeInventory("UsedStamina", 2)
		CYBF IJIJ 1 BRIGHT  A_WeaponReady
		CYBF I 0 A_TakeInventory("UsedStamina", 2)
		CYBF IJIJ 1 BRIGHT  A_WeaponReady
		CYBF I 0 A_TakeInventory("UsedStamina", 2)
		CYBF IJIJ 1 BRIGHT A_WeaponReady
		Goto Ready
	StopSprint:
		CYBF R 1 BRIGHT
		CYBF I 0 A_JumpIfInventory("UsedStamina", 60, "StopSprintTired")
		PLAY A 0 ACS_ExecuteAlways(853, 0, 0, 0, 0)//Makes player slower.
		Goto Ready	
		
	Deselect:
        CYBF LMNO 1 BRIGHT
		TNT1 AAAAAAAAAAAAAAAAAA 0 A_Lower
		CYBF I 0 A_TakeInventory("TossGrenade", 1)
		CYBF I 0 A_TakeInventory("Reloading", 1)
		CYBF I 0 A_TakeInventory("Unloading", 1)
		CYBF I 0 A_Takeinventory("StartDualWield",1)
		TNT1 A 1 A_Lower
		Wait
		
		
	Select:
		CYBF I 0 A_Takeinventory("StartDualWield",1)
		CYBF I 0 A_Giveinventory("GoSpecial",1)
		CYBF I 0 A_Takeinventory("FistsSelected",1)
		CYBF I 0 A_Takeinventory("SawSelected",1)
		CYBF I 0 A_Takeinventory("ShotgunSelected",1)
		CYBF I 0 A_Takeinventory("SSGSelected",1)
		CYBF I 0 A_Takeinventory("MinigunSelected",1)
		CYBF I 0 A_Takeinventory("PlasmaGunSelected",1)
		CYBF I 0 A_Takeinventory("RocketLauncherSelected",1)
		CYBF I 0 A_Takeinventory("GrenadeLauncherSelected",1)
		CYBF I 0 A_Takeinventory("BFGSelected",1)
		CYBF I 0 A_Takeinventory("BFG10kSelected",1)
		CYBF I 0 A_Takeinventory("RailGunSelected",1)
		CYBF I 0 A_Takeinventory("SubMachineGunSelected",1)
		CYBF I 0 A_Takeinventory("RevenantLauncherSelected",1)
		CYBF I 0 A_Takeinventory("LostSoulSelected",1)
		CYBF I 0 A_Takeinventory("FlameCannonSelected",1)
		CYBF I 0 A_Takeinventory("HasBarrel",1)
		TNT1 A 1
		TNT1 AAAAAAAAAAAAAAA 0 A_Raise	
		
	SelectAnimation:
	    CYBF I 0 A_JumpIfInventory("GoFatality", 1, "Steady")
        CYBF I 0 A_PlaySound("BFGREADY")
        CYBF ONML 1 BRIGHT  //A_WeaponReady(WRF_NOFIRE)
        CYBF I 0 A_GunFlash
		Goto Ready

    Fire:
        CYBF I 0 A_JumpIfInventory("CyberdemonRockets",1,2)
        Goto NoAmmo
        TNT1 AAAA 0
		CYBF I 0 A_AlertMonsters
		CYBF I 0 A_ZoomFactor(0.99)
		TNT1 A 0 A_PlaySound("DSCANFIR",1)
		CYBF A 1 BRIGHT A_FireCustomMissile("CyberBallsPlayer", random(-2,2), 0, 0, 0, 0, frandom(-0.5,0.5))
		CYBF I 0 A_ZoomFactor(1.0)
		CYBF I 0 A_Takeinventory("CyberdemonRockets",1)
		TNT1 A 0 A_SetAngle(Angle+random(-2,2), SPF_INTERPOLATE)
        CYBF B 1 BRIGHT A_SetPitch(pitch-2, SPF_INTERPOLATE)
		CYBF C 1 A_SetPitch(pitch-1, SPF_INTERPOLATE)
		CYBF D 1 BRIGHT 
		CYBF D 1 BRIGHT A_SetPitch(pitch+0.6, SPF_INTERPOLATE)
		CYBF EFG 1 BRIGHT A_SetPitch(pitch+0.8, SPF_INTERPOLATE)
		CYBF HJ 1 BRIGHT  
		CYBF I 0 A_REfire
		TNT1 A 0 A_FireCustomMissile("SmokeSpawner11",0,0,0,7)
		Goto Ready
		
	AltFire:
        CYBF I 0 A_JumpIfInventory("CyberdemonRockets",1,2)
        Goto NoAmmo
        TNT1 AAAA 0
		CYBF I 0 A_AlertMonsters
		CYBF I 0 A_ZoomFactor(0.99)
		TNT1 A 0 A_PlaySound("DSCANFIR",1)
		CYBF A 1 BRIGHT A_FireCustomMissile("CyberBallsPlayer", 0, 0, 0, 0, 0, 0)
		CYBF I 0 A_ZoomFactor(1.0)
		CYBF I 0 A_Takeinventory("CyberdemonRockets",1)
		TNT1 A 0 A_SetAngle(Angle+random(-2,2), SPF_INTERPOLATE)
        CYBF B 1 BRIGHT A_SetPitch(pitch-2, SPF_INTERPOLATE)
		CYBF C 1 A_SetPitch(pitch-1, SPF_INTERPOLATE)
		CYBF D 1 BRIGHT A_SetPitch(pitch+0.6, SPF_INTERPOLATE)
		CYBF EFG 1 BRIGHT A_SetPitch(pitch+0.8, SPF_INTERPOLATE)
		
		CYBF I 0 A_JumpIfInventory("CyberdemonRockets",1,2)
        Goto NoAmmo
        TNT1 AAAA 0
		CYBF I 0 A_AlertMonsters
		CYBF I 0 A_ZoomFactor(0.99)
		TNT1 A 0 A_PlaySound("DSCANFIR",1)
		CYBF A 1 BRIGHT A_FireCustomMissile("CyberBallsPlayer", -5, 0, 0, 0, 0, 0)
		CYBF I 0 A_ZoomFactor(1.0)
		CYBF I 0 A_Takeinventory("CyberdemonRockets",1)
		TNT1 A 0 A_SetAngle(Angle+random(-2,2), SPF_INTERPOLATE)
        CYBF B 1 BRIGHT A_SetPitch(pitch-2, SPF_INTERPOLATE)
		CYBF C 1 A_SetPitch(pitch-1, SPF_INTERPOLATE)
		CYBF D 1 BRIGHT A_SetPitch(pitch+0.6, SPF_INTERPOLATE)
		CYBF EFG 1 BRIGHT A_SetPitch(pitch+0.8, SPF_INTERPOLATE)
		
		CYBF I 0 A_JumpIfInventory("CyberdemonRockets",1,2)
        Goto NoAmmo
        TNT1 AAAA 0
		CYBF I 0 A_AlertMonsters
		CYBF I 0 A_ZoomFactor(0.99)
		TNT1 A 0 A_PlaySound("DSCANFIR",1)
		CYBF A 1 BRIGHT A_FireCustomMissile("CyberBallsPlayer", 5, 0, 0, 0, 0, 0)
		CYBF I 0 A_ZoomFactor(1.0)
		CYBF I 0 A_Takeinventory("CyberdemonRockets",1)
		TNT1 A 0 A_SetAngle(Angle+random(-2,2), SPF_INTERPOLATE)
        CYBF B 1 BRIGHT A_SetPitch(pitch-2, SPF_INTERPOLATE)
		CYBF C 1 A_SetPitch(pitch-1, SPF_INTERPOLATE)
		CYBF D 1 BRIGHT A_SetPitch(pitch+0.6, SPF_INTERPOLATE)
		CYBF EFG 1 BRIGHT A_SetPitch(pitch+0.8, SPF_INTERPOLATE)
		
		CYBF I 0 A_JumpIfInventory("CyberdemonRockets",1,2)
        Goto NoAmmo
        TNT1 AAAA 0
		CYBF I 0 A_AlertMonsters
		CYBF I 0 A_ZoomFactor(0.99)
		TNT1 A 0 A_PlaySound("DSCANFIR",1)
		CYBF A 1 BRIGHT A_FireCustomMissile("CyberBallsPlayer", 0, 0, 0, 0, 0, 0)
		CYBF I 0 A_ZoomFactor(1.0)
		CYBF I 0 A_Takeinventory("CyberdemonRockets",1)
		TNT1 A 0 A_SetAngle(Angle+random(-2,2), SPF_INTERPOLATE)
        CYBF B 1 BRIGHT A_SetPitch(pitch-2, SPF_INTERPOLATE)
		CYBF C 1 A_SetPitch(pitch-1, SPF_INTERPOLATE)
		CYBF D 3 BRIGHT
		CYBF D 1 BRIGHT A_SetPitch(pitch+0.6, SPF_INTERPOLATE)
		CYBF EEFFGG 1 BRIGHT A_SetPitch(pitch+0.4, SPF_INTERPOLATE)
        TNT1 A 0 A_FireCustomMissile("SmokeSpawner11",0,0,0,7)
		CYBF HHJ 1 BRIGHT  
		CYBF IJIJIJ 1 BRIGHT 
		TNT1 A 0 A_FireCustomMissile("SmokeSpawner11",0,0,0,7)
		TNT1 A 0 A_ReFire
		Goto Ready
		
		
	NoAmmo:
		RIFG A 0
		RIFG A 0 A_ZoomFactor(1.0)
		TNT1 A 0 A_PlaySound("weapons/empty", 4)
		NoAmmo2:
		RIFG A 0 A_JumpIfInventory("TossGrenade",1,"TossGrenade")
	    RIFG A 0 A_JumpIfInventory("Taunting",1,"Taunt")
		RIFG A 0 A_JumpIfInventory("Salute1", 1, "Salute")
		RIFG A 0 A_JumpIfInventory("Salute2", 1, "Salute")
		RIFG A 0 A_JumpIfInventory("IsRunning",1,"CheckSprint")
		RIFG A 0 A_JumpIfInventory("ExecuteDownedEnemy", 1, "DoExecution")
		RIFG A 0 A_JumpIfInventory("Kicking",1,"DoKick")
		CYBF IJIJ 1 BRIGHT  A_WeaponReady(WRF_NOFIRE)
		Goto Ready3
	

 	Spawn:
		CYBF A 0
		CYGG E -1
		Stop
	Steady:
		TNT1 A 1
		Goto Ready	
	}
}

ACTOR CyberdemonRockets : Ammo
{
   Inventory.Amount 0
   Inventory.MaxAmount 50
   Ammo.BackpackAmount 40
   Ammo.BackpackMaxAmount 100
   Inventory.Icon "CYBFV0"
}

ACTOR CyberBallsPlayer: FastProjectile
{
	Radius 10
	Height 8
	Projectile
	Speed 90
    Damage (random (250, 250))
	DamageType Extreme
    Gravity 0.00
    Decal "Scorch"
	Renderstyle Add
    -NOGRAVITY
	+EXTREMEDEATH
	+THRUGHOST
	-THRUSPECIES
	Species "None"
	Scale 1.7
    SeeSound "DSCANFIR"
    //SeeSound "RLANSHOT"
	DeathSound "Explosion"
	Obituary "%o was blown up by %k's Cyberdemon missile launcher. Ouch!"
	States
	{
	Spawn:
	    TNT1 A 0
		TNT1 A 0 ACS_NamedExecuteAlways("BDCheckJanitor", 0, 0, 0, 0)//Check Effects
		
	Spawn1:
		TNT1 A 0 A_JumpIf(waterlevel > 1, "SpawnUnderwater")
	    WYVB A 1 Bright A_SpawnItem("RedFlareSmall22",0,0)
		TNT1 A 0 A_CustomMissile ("OldschoolRocketSmokeTrail2", 2, 0, random (160, 210), 2, random (-30, 30))
		TNT1 A 0 A_JumpIfInventory("lowgraphicsmode", 1, "SpawnCheap")
		Loop
		
	SpawnCheap:
	    TNT1 A 0
	    WYVB A 1 Bright A_SpawnItem("RedFlareSmall22",0,0)
		Loop
	
	
	SpawnUnderwater:
	    WYVB A 1 Bright A_SpawnItem("YellowFlareSmall",0,0)
        TNT1 A 0 A_CustomMissile ("BUBULZ", 0, 0, random (0, 360), 2, random (0, 180))
		Goto Spawn1
		
	Death:
		EXPL A 1 A_Explode(80,200)
        EXPL A 0 Radius_Quake (2, 8, 0, 15, 0)
        TNT1 A 0 //A_AlertMonsters
        TNT1 A 0 A_SpawnItemEx ("DetectFloorCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("DetectCeilCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("UnderwaterExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_SpawnItemEx ("RocketExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 AAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
        TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
        TNT1 AAAAAAA 0 A_CustomMissile ("MediumExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
        TNT1 A 1
		TNT1 A 0 A_PlaySound("FAREXPL", 3)
		//TNT1 A 3 A_CustomMissile ("HeavyExplosionSmoke", 2, 0, random (0, 360), 2, random (0, 360))
		Stop
	}
}
