// --------------------------------------------------------------------------
//
//	Hellish Missile Launcher
//
// --------------------------------------------------------------------------

ACTOR U_HellishMissileLauncher : BaseWeapon
{
	Weapon.AmmoUse 0
	Weapon.AmmoGive 6
	Weapon.AmmoType "HellRocketAmmo"
	Weapon.SelectionOrder 6800
	Obituary "%o was found by %k's Hellish Missile Launcher."
    Inventory.PickupSound "CHGNPKUP"
	Inventory.PickupMessage "You got the Revenant's Hellish Missile Launcher!"
	-WEAPON.CHEATNOTWEAPON
	tag "Revenant Missile Launcher"
	States
	{
    Spawn:
        FATB D -1
        Stop
		
	Select:
		TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "PuristGun")
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(1010,8)==0, "PuristGun")
		TNT1 A 0 A_Giveinventory("RevenantLauncherSelected",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("Taunting",1)
		TNT1 A 0 A_Takeinventory("IdleCounter",200)
		TNT1 A 4
		TNT1 A 0 A_Raise
		Wait
		
	Deselect:
		RVCS ABCDEF 1
		TNT1 A 0 A_TakeInventory("RevenantLauncherSelected", 1)
		TNT1 A 0 A_Lower
		Wait
		
	Ready:
		TNT1 A 0 A_JumpIfInventory("GoFatality", 1, "Steady")
		TNT1 A 0 A_PlaySound("CHGNPKUP")		
		RVCS FEDCBA 1
	Ready1:
	Ready2:
        TNT1 A 0 A_JumpIfInventory("Kicking",1,"DoKick")
        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("IdleCounter",200,"PlayerIsIdle")
		RVCG A 2 A_WeaponReady
		Goto Ready2
	
	PuristGun:
		TNT1 A 0 A_TakeInventory("U_HellishMissileLauncher", 1)
		Goto Deselect
	
// --------------------------------------------------------------------------
//
//	Fire
//
// --------------------------------------------------------------------------
	
	Fire:
		//TNT1 A 0 A_JumpIfTargetInLOS("OpenFire", 0, JLOSF_COMBATANTONLY | JLOSF_ALLYNOJUMP)
		//RVCG J 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	    //Goto Ready2
		TNT1 A 0 A_JumpIfInventory("HellRocketAmmo", 1, 1)
		Goto Ready2
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_JumpIfInventory("FireSeq", 1, "OpenFire2")
		
	OpenFire:
        RVCG B 2 BRIGHT
		TNT1 A 0 A_FireCustomMissile("Alerter", 0, 0, -1, 0)
		TNT1 A 0 A_FireCustomMissile("SeekingRevenantRockets", frandom(4,-4), 0, -10, 0)
		TNT1 A 0 A_FireCustomMissile("ShakeYourAss", 0, 0, 0, 0)
		TNT1 A 0 A_TakeInventory("HellRocketAmmo", 1)
		RVCG CDE 2
		RVCG A 6
		TNT1 A 0 A_GiveInventory("FireSeq", 1)
		TNT1 A 0 A_Refire
		Goto Ready2
		
	OpenFire2:
	    RVCG F 2 BRIGHT
		TNT1 A 0 A_FireCustomMissile("Alerter", 0, 0, -1, 0)
		TNT1 A 0 A_FireCustomMissile("SeekingRevenantRockets", frandom(4,-4), 0, 10, 0)
		TNT1 A 0 A_FireCustomMissile("ShakeYourAss", 0, 0, 0, 0)
		TNT1 A 0 A_TakeInventory("HellRocketAmmo", 1)
		RVCG GHI 2
		RVCG A 6
		TNT1 A 0 A_TakeInventory("FireSeq", 1)
		TNT1 A 0 A_Refire
		Goto Ready2

	AltFire:
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_JumpIfInventory("HellRocketAmmo", 1, 1)
		Goto Ready2
		TNT1 A 0 A_JumpIfInventory("FireSeq", 1, "AltFire2")
        RVCG B 2 BRIGHT
		TNT1 A 0 A_FireCustomMissile("Alerter", 0, 0, -1, 0)
		TNT1 A 0 A_FireCustomMissile("RevenantRockets", frandom(4,-4), 0, -10, 0)
		TNT1 A 0 A_FireCustomMissile("ShakeYourAss", 0, 0, 0, 0)
		TNT1 A 0 A_TakeInventory("HellRocketAmmo", 1)
		RVCG CDE 2
		RVCG A 4
		TNT1 A 0 A_GiveInventory("FireSeq", 1)
		TNT1 A 0 A_Refire
		Goto Ready2
		
	AltFire2:
	    RVCG F 2 BRIGHT
		TNT1 A 0 A_FireCustomMissile("Alerter", 0, 0, -1, 0)
		TNT1 A 0 A_FireCustomMissile("RevenantRockets", frandom(4,-4), 0, 10, 0)
		TNT1 A 0 A_FireCustomMissile("ShakeYourAss", 0, 0, 0, 0)
		TNT1 A 0 A_TakeInventory("HellRocketAmmo", 1)
		RVCG GHI 2
		RVCG A 4
		TNT1 A 0 A_TakeInventory("FireSeq", 1)
		TNT1 A 0 A_Refire
		Goto Ready2

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

	KickFlash:
		RVCG A 17
		Stop
		
	AirKickFlash:
		RVCG A 19
		Stop
		
	TauntFlash:
		RVCG A 39
		Stop
		
	GrenadeFlash:
		RVCG A 27
		Stop
		
    Taunt:
		TNT1 A 0 A_GunFlash("TauntFlash")
        TNT1 A 5
		TNT1 A 5 A_PlaySound("FUCK", 2)
		FUCK K 1
		TNT1 A 0 A_FireCustomMissile("Taunter", 0, 0, -1, 0)
		TNT1 A 0 A_FireCustomMissile("Taunter", -9, 0, -1, 0)
		TNT1 A 0 A_FireCustomMissile("Taunter", 9, 0, -1, 0)
        FUCK LMN 1 A_AlertMonsters
		FUCK O 20 A_Takeinventory("Taunting",1)
        FUCK NMLK 1
		Goto Ready2	
	}
}

ACTOR HellRocketAmmo : Ammo
{
	Inventory.Amount 1
	Inventory.MaxAmount 100
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 200
	Inventory.Icon "FATBD0"
	States
	{
	Spawn:
		FATB A -1     
	}
}

ACTOR SeekingRevenantRockets
{
	Game Doom
	SpawnID 53
	PROJECTILE
	Scale 1.0
	Damagetype ExplosiveImpact
	Decal "Scorch"
	+SEEKERMISSILE
	Damage 25
	Speed 20
	Height 4
	Radius 4
	SeeSound "skeleton/attack"
	DeathSound "skeleton/tracex"
	States
	{
	Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "SpawnUnderwater")
		FATB AB 1 BRIGHT A_SpawnItem("RedFlareSmall",0,0)
		TNT1 A 0 A_SpawnItemEx("RevenantProjectileTrails", 0, 0, 0, 0, 0, 0, 0, 128) 
		TNT1 A 0 A_SpawnItem ("OldschoolRocketSmokeTrail2")
		TNT1 A 0 A_CustomMissile ("OldschoolRocketSmokeTrail2", 2, 0, random (160, 210), 2, random (-30, 30))
		TNT1 A 0 A_SeekerMissile (4, 8, SMF_PRECISE | SMF_LOOK )
		Loop
	SpawnUnderwater:
		FATB A 1 BRIGHT A_SpawnItem("RedFlareSmall",0,0)
		TNT1 A 0 A_CustomMissile ("BUBULZ", 0, 0, random (0, 360), 2, random (0, 180))
		FATB B 1 BRIGHT A_SpawnItem("RedFlareSmall",0,0)
		TNT1 A 0 A_CustomMissile ("BUBULZ", 0, 0, random (0, 360), 2, random (0, 180))
		TNT1 A 0 A_SeekerMissile (4, 8, SMF_PRECISE | SMF_LOOK )
		Goto Spawn
	XDeath:
	Death:
		TNT1 A 0
	    TNT1 A 0 Radius_Quake (2, 8, 0, 15, 0)
		TNT1 A 0 A_SpawnItem("WhiteShockwaveSmall")
		TNT1 AAA 0 A_CustomMissile ("ExplosionSmoke", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_SpawnItemEx ("UnderwaterExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		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_Explode(25, 120, 1)
		TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 A 0 A_SpawnItemEx("ExplosionParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
        TNT1 AAAAA 0 A_CustomMissile ("SmallExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 8
		Stop
	}
}

ACTOR RevenantRockets : SeekingRevenantRockets
{
	-SEEKERMISSILE
	States
	{
	Spawn:
	Spawn1:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "SpawnUnderwater")
		FATB AB 1 BRIGHT A_SpawnItem("YellowFlareSmall",0,0)
		TNT1 A 0 A_SpawnItemEx("RevenantProjectileTrails", 0, 0, 0, 0, 0, 0, 0, 128) 
		TNT1 A 0 A_SpawnItem ("OldschoolRocketSmokeTrail2")
		TNT1 A 0 A_CustomMissile ("OldschoolRocketSmokeTrail2", 2, 0, random (160, 210), 2, random (-30, 30))
		Loop
	SpawnUnderwater:
		FATB A 1 BRIGHT A_SpawnItem("YellowFlareSmall",0,0)
		TNT1 A 0 A_CustomMissile ("BUBULZ", 0, 0, random (0, 360), 2, random (0, 180))
		FATB B 1 BRIGHT A_SpawnItem("YellowFlareSmall",0,0)
		TNT1 A 0 A_CustomMissile ("BUBULZ", 0, 0, random (0, 360), 2, random (0, 180))
		Goto Spawn
	}
}

ACTOR RevenantLauncherDummy
{
	Radius 2
	Height 2
	Speed 4
	Mass 10
	BounceFactor 0.2
	+DOOMBOUNCE
	+NOBLOCKMAP
	+MISSILE
	+NOTELEPORT
	+DONTSPLASH
	+MOVEWITHSECTOR
	+CLIENTSIDEONLY
	+THRUACTORS
	+FORCEXYBILLBOARD
	States
	{
	Spawn:
		FATB D 10
		Loop
	Death:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(798, 0, 0, 0, 0)//Check Effects
		Goto Rest
	Rest:
		FATB D 1000
		TNT1 A 0 A_JumpIfInventory("lowgraphicsmode", 1, "Vanish")
        FATB D 20000
	Vanish:
		FATB D 1 A_FadeOut(0.1)
		Wait
    }
}