// --------------------------------------------------------------------------
//
//	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(1002,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("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:
		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")		
	Ready1:
		RVCS FEDCBA 1
	Ready2:
		TNT1 A 0 //A_GunFlash
	Ready3:
		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
		Loop
	
// --------------------------------------------------------------------------
//
//	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

// --------------------------------------------------------------------------
//
//	Misc.
//
// --------------------------------------------------------------------------

	PuristGun:
		TNT1 A 0 A_TakeInventory("U_HellishMissileLauncher", 1)
		Goto Deselect

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

	Taunt:
		TNT1 A 0 A_GunFlash("TauntFlash")
		TNT1 A 5
		TNT1 A 0 A_JumpIfInventory("GenderFemale", 1, 3)
		TNT1 A 5 A_PlaySound("FUCK", 2)
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 5 A_PlaySound("FTAUNT", 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

	TauntFlash:
		RVCG A 39
		Stop

	KickFlash:
		RVCG A 17
		Stop

	AirKickFlash:
		RVCG A 19
		Stop

	SlideKickStartFlash:
		RVCG A 21
		Stop

	SlideKickEndFlash:
		RVCG A 12
		Stop

	GrenadeFlash:
		RVCG A 32
		TNT1 A 0 A_JumpIfInventory("ExecuteDownedEnemy",1,"MoreFlash")
		TNT1 A 0 A_JumpIfInventory("TossGrenade",1,"MoreFlash")
		Stop

	MoreFlash:
		RVCG A 2
		TNT1 A 0 A_JumpIfInventory("ExecuteDownedEnemy",1,"MoreFlash")
		TNT1 A 0 A_JumpIfInventory("TossGrenade",1,"MoreFlash")
		Stop
	}
}

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
	+SCREENSEEKER
	Damage 30
	Speed 20
	Height 3
	Radius 3
	SeeSound "skeleton/attack"
	DeathSound "skeleton/tracex"
	States
	{
	Spawn:
		TNT1 A 0 A_JumpIf(waterlevel > 1, "SpawnUnderwater")
		FATB AA 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(3, 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 A 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(3, 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(30, 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 AA 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 A 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_NamedExecuteAlways("BDCheckJanitor")
		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
	}
}

ACTOR RevenantProjectileTrails: FlameTrails
{
	Scale 0.2
	States
	{
	Spawn:
		TNT1 A 1
		FRPR ABCDEFGH 1 BRIGHT
		Stop
	}
}