// --------------------------------------------------------------------------
//
//	Rocket launcher
//
// --------------------------------------------------------------------------

ACTOR U_Rocket_Launcher : Rocket_Launcher
{
	+WEAPON.NOALERT
	States
	{	
	Fire:
        TNT1 A 0 A_JumpIfInventory("RocketRounds",1,1)
        Goto Reload
		TNT1 A 0 A_FireCustomMissile("RedFlareSpawn",-5,0,0,0)
        TNT1 A 0 A_PlaySound ("DSRFIRE")
		TNT1 A 0 BRIGHT A_FireCustomMissile("Alerter")
		MISF A 1 BRIGHT A_FireCustomMissile("U_Rocket", 0, 1, 0, -10)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_Takeinventory("RocketRounds",1)
		MISF BCD 1 BRIGHT
        MISF E 1 A_SetPitch(-6.0 + pitch)
        MISG BBCDEE 1 A_SetPitch(1.0 + pitch)
		MISG FA 2
        TNT1 A 0 A_Refire
        Goto Ready+11
		
	AltFire:
        TNT1 A 0 A_JumpIfInventory("RocketRounds",1,1)
        Goto Reload
		TNT1 A 0 A_FireCustomMissile("RedFlareSpawn",-5,0,0,0)
		TNT1 A 0 A_PlaySound("weapons/firegrenade")
		TNT1 AAAAAA 0 BRIGHT A_FireCustomMissile("ShotgunParticles", random(-10,10), 0, -1, random(-9,9))
		MISF A 1 BRIGHT A_FireCustomMissile("GrenadeMissile2", 0, 1, 0, 0)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_Takeinventory("RocketRounds",1)
		MISF BCD 1 BRIGHT
        MISF E 1 A_SetPitch(-6.0 + pitch)
        MISG BBCDEE 1 A_SetPitch(1.0 + pitch)
		MISG FA 2
        TNT1 A 0 A_Refire
        Goto Ready+11

	ReloadPitch:
		TNT1 A 1 A_SetPitch(+0.2 + pitch)
		TNT1 AAA 1 A_SetPitch(+0.4 + pitch)
		TNT1 A 1 A_SetPitch(+0.2 + pitch)
		TNT1 A 1
		TNT1 A 1 A_SetPitch(-0.2 + pitch)
		TNT1 AAA 1 A_SetPitch(-0.4 + pitch)
		TNT1 A 1 A_SetPitch(-0.2 + pitch)
		Stop

    Reload:
		MISG A 1 A_WeaponReady
		MISG A 6
		TNT1 A 0 A_Takeinventory("Reloading",1)
        TNT1 A 0 A_JumpIfInventory("RocketRounds",6,"NoNeedToReload")
        TNT1 A 0 A_JumpIfInventory("RocketAmmo",1,1)
        Goto Ready+18
        TNT1 A 0 A_PlaySound("Reload")
		TNT1 A 0 A_GunFlash("ReloadPitch")
        MISR ABCD 1 A_SetAngle(-0.3 + angle)
		MISR DEE 1
		TNT1 A 0 A_FireCustomMissile("RocketCaseSpawn",-30,0,-4,-4)
        MISR FFGG 1 A_SetAngle(+0.3 + angle)
		MISR HHIIJ 1 A_SetAngle(+0.10 + angle)
		MISR JKL 1 A_SetAngle(+0.05 + angle)
		MISR MM 1
        MISR MMN 1 A_SetAngle(-0.05 + angle)
		MISR OPQQQ 1 A_SetAngle(-0.10 + angle)
		MISR PR 1
		MISG DEF 2
		MISG A 6
		Goto FinishReload

	FinishReload:
		TNT1 A 0 A_JumpIfInventory("RocketRounds",6,"NoNeedToReload")
		TNT1 A 0 A_JumpIfInventory("RocketAmmo",1,1)
		Goto Ready+6
		TNT1 A 0 A_Giveinventory("RocketRounds",1)
		TNT1 A 0 A_Takeinventory("RocketAmmo",1)
		Goto FinishReload
		
	AirKickFlash: //18
		MISK ABCD 1
		MISK E 10
		MISK DCBA 1
		Stop
		
	TauntFlash: //43
		MISK ABCD 1
		MISK E 35
		MISK DCBA 1
		Stop

    DoKick:
		TNT1 A 0 A_JumpIf (momZ > 0, "AirKick")
		TNT1 A 0 A_JumpIf (momZ < 0, "AirKick")
		TNT1 A 0 A_JumpIf (pitch > 32, "LowKickChecker1")
		Goto InitializeNormalKick
		
	LowKickChecker1:
		TNT1 A 0
	    TNT1 A 0 A_JumpIf (pitch > 90, "InitializeNormalKick")
		TNT1 A 0 A_FireCustomMissile("KickAttackDetectDowned", 0, 0, 0, 0)
		
	InitializeNOrmalKick:
        TNT1 A 0 A_jumpifinventory("PowerStrength",1,"BerserkerKick")
		TNT1 A 0 A_PlaySound("KICK")
		TNT1 A 0 SetPlayerProperty(0,1,0)
		RLKI BCD 1
		TNT1 A 0 A_FireCustomMissile("KickAttack", 0, 0, 0, -7)
        RLKI H 5
		KICK A 0 A_Takeinventory("Kicking",1)
		RLKI I 1
		RLKI GFEDCBA 1 
		TNT1 A 0 SetPlayerProperty(0,0,0)
		TNT1 A 0 A_JumpIfInventory("GoFatality", 1, "Steady")
		Goto Ready+11
		
    BerserkerKick:
		TNT1 A 0 A_PlaySound("KICK")
		TNT1 A 0 SetPlayerProperty(0,1,0)
		RLKI BCD 1
        TNT1 A 0 A_FireCustomMissile("SuperKickAttack", 0, 0, 0, -7)
        RLKI H 5
		KICK A 0 A_Takeinventory("Kicking",1)
		RLKI I 1
		RLKI GFEDCBA 1 
		TNT1 A 0 SetPlayerProperty(0,0,0)
		TNT1 A 0 A_JumpIfInventory("GoFatality", 1, "Steady")
		Goto Ready+11
	
	AirKick:
		TNT1 A 0 A_GunFlash("AirKickFlash")
	    TNT1 A 0 A_jumpifinventory("PowerStrength",1,"SuperAirKick")
		TNT1 A 0 A_PlaySound("KICK")
		TNT1 A 0 A_Recoil (-6)
		KICK JKLMN 1
        TNT1 A 0 A_FireCustomMissile("AirKickAttack", 0, 0, 0, -31)
        KICK O 2
		KICK A 0 A_Takeinventory("Kicking",1)
		KICK PQRST 2
		TNT1 A 0 A_JumpIfInventory("GoFatality", 1, "Steady")
		Goto Ready+11
		
	SuperAirKick:
		TNT1 A 0 A_PlaySound("KICK")
		TNT1 A 0 A_Recoil (-6)
		KICK JKLMN 1
        TNT1 A 0 A_FireCustomMissile("SuperAirKickAttack", 0, 0, 0, -31)
        KICK O 2
		KICK A 0 A_Takeinventory("Kicking",1)
		KICK PQRST 2
		TNT1 A 0 A_JumpIfInventory("GoFatality", 1, "Steady")
		Goto Ready+11
	
	Taunt:
		TNT1 A 0 A_GunFlash("TauntFlash")
		TNT1 A 0 A_Takeinventory("Taunting",1)
		TNT1 A 0 A_JumpIfInventory("RealismMode", 1, "CheckGrab")
        TNT1 A 5
		TNT1 A 5 A_PlaySound("FUCK", 2)
		FUCK A 1
		TNT1 A 0 BRIGHT A_FireCustomMissile("Taunter", 0, 0, -1, 0)
		TNT1 A 0 BRIGHT A_FireCustomMissile("Taunter", -9, 0, -1, 0)
		TNT1 A 0 BRIGHT A_FireCustomMissile("Taunter", 9, 0, -1, 0)
        FUCK BCD 1 A_AlertMonsters
		FUCK E 14 A_Takeinventory("Taunting",1)
        FUCK DCBA 1
        TNT1 A 10
		Goto Ready+11
	}
}

ACTOR GrenadeMissile2
{
	Radius 4
	Height 4
	Speed 50
	Damage (random(1,2))
    +MISSILE
    +BLOODSPLATTER
	+SKYEXPLODE
	+DOOMBOUNCE
	+EXPLODEONWATER
	DamageType Kick
	BounceFactor 0.3
	WallBounceFactor 0.3
	Gravity 0.7
	SeeSound "Weapons/GrenadeBounce"
	DeathSound "none"
	Obituary "$OB_MPROCKET"
	States
	{
	Spawn:
		TNT1 A 0 A_JumpIf(waterlevel > 1, "SpawnUnderwater")
		GBPJ ABCD 3 A_CustomMissile("U_RocketSmokeTrail", 2, 0, random (70, 110), 2, random (0, 360))
		TNT1 A 0 A_JumpIfInventory("STGrenadeTimer", 5, "Explode")
		TNT1 A 0 A_GiveInventory("STGrenadeTimer", 1)
		TNT1 A 0 A_CheckFloor("Death")
		
		TNT1 A 0 A_JumpIf(waterlevel > 1, "SpawnUnderwater")
		GBPJ EFGH 3	A_CustomMissile("U_RocketSmokeTrail", 2, 0, random (70, 110), 2, random (0, 360))
		TNT1 A 0 A_JumpIfInventory("STGrenadeTimer", 5, "Explode")
		TNT1 A 0 A_GiveInventory("STGrenadeTimer", 1)
		TNT1 A 0 A_CheckFloor("Death")
		Loop
	SpawnUnderwater:
		TNT1 A 0 A_ScaleVelocity(0.2)
		TNT1 A 0 ThrustThingZ (0,7,1,0)
		GBPJ ABCD 3 A_CustomMissile ("BUBULZ", 0, 0, random (0, 360), 2, random (0, 180))
		TNT1 A 0 A_JumpIfInventory("STGrenadeTimer", 5, "Explode")
		TNT1 A 0 A_GiveInventory("STGrenadeTimer", 1)
		TNT1 A 0 A_CheckFloor("Death")
		TNT1 A 0 A_ScaleVelocity(0.2)
		TNT1 A 0 ThrustThingZ (0,7,1,0)
		GBPJ EFGH 3 A_CustomMissile ("BUBULZ", 0, 0, random (0, 360), 2, random (0, 180))
		TNT1 A 0 A_JumpIfInventory("STGrenadeTimer", 5, "Explode")
		TNT1 A 0 A_GiveInventory("STGrenadeTimer", 1)
		TNT1 A 0 A_CheckFloor("Death")
	    Loop
	Death:
		GBPJ AAAA 3 A_CustomMissile("U_RocketSmokeTrail", 2, 0, random (70, 110), 2, random (0, 360))
		TNT1 A 0 A_JumpIfInventory("STGrenadeTimer", 5, "Explode")
		TNT1 A 0 A_GiveInventory("STGrenadeTimer", 1)
		Loop
	XDeath:
		TNT1 A 0 A_Recoil(1)
		TNT1 A 0 A_SetAngle(random (90,-90) + angle)
		GBPJ C 1 ThrustThingZ(0,20,0,1)
		Goto Spawn
	Explode:
	Death.Slime:
	Death.Fire:
	Death.Bullet:
	Death.Shotgun:
	Death.SSG:
	Death.Cutless:
	Death.Shrapnel:
		TNT1 A 0 A_NoBlocking
		TNT1 A 0 A_SpawnItem("GrenadeMissileExplosion")
		GBPJ C 1
		Stop
	}
}

actor GrenadeMissileExplosion
{
	+NOBLOCKMAP
	+MISSILE
	Damagetype ExplosiveImpact
	DeathSound "Explosion"
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 ThrustThingZ(0,20,0,1)
		TNT1 A 0 Radius_Quake (3, 8, 0, 15, 0)//(intensity, duration, damrad, tremrad, tid)
		TNT1 A 1
		TNT1 A 0 A_CustomMissile("BigRicoChet")
		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 BRIGHT A_Scream
		TNT1 AA 0 A_CustomMissile ("MetalShardz1", 5, 0, random (0, 360), 2, random (0, 360))
		TNT1 AA 0 A_CustomMissile ("MetalShardz2", 5, 0, random (0, 360), 2, random (0, 360))
		TNT1 AA 0 A_CustomMissile ("MetalShardz3", 5, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_Explode(30,200)
		TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
		TNT1 AAAAAAAAA 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 AAAAA 0 A_CustomMissile ("MediumExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAAA 0 A_CustomMissile ("ExplosionSmokeFast22", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_SpawnItemEx ("RocketExplosion",0,0,13,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_SpawnItemEx ("LiquidExplosionEffectSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_PlaySound("FAREXPL", 3)
		TNT1 A 7
		Stop
	}
}

ACTOR U_Rocket
{
	Radius 4
	Height 2
	Projectile
	Speed 37
    Damage 30
	DamageType Explosive
    MeleeDamage 0
    Gravity 0.00
	Scale 0.7
    Decal "Scorch"
    -NOGRAVITY
    +EXTREMEDEATH
    +BLOODSPLATTER 
	+THRUSPECIES
	+MTHRUSPECIES
	SeeSound "weapons/RLL"
	DeathSound "Explosion"
	Obituary "$OB_MPROCKET"
	Species "Marines"
	States
	{
	DM:
		TNT1 A 0
		TNT1 A 0 A_ChangeFLag("THRUSPECIES", 0)
		TNT1 A 0 A_ChangeFLag("MTHRUSPECIES", 0)
		Goto Spawn1
	Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(719, 0, 0, 0, 0)//Check if Coop
	Spawn1:
	    MISL A 1 Bright 
		TNT1 A 0 A_PlaySound("DSRLAUN")
		TNT1 A 0 A_JumpIf(waterlevel > 1, "SpawnUnderwater")
		TNT1 A 0 A_SpawnItem("RocketFlare",-20,0)
		TNT1 A 0 A_SpawnItem ("OldschoolRocketSmokeTrail2")
		TNT1 A 0 A_CustomMissile ("OldschoolRocketSmokeTrail2", 2, 0, random (160, 210), 2, random (-30, 30))
		Loop
	SpawnUnderwater:
	    TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
		TNT1 A 0 A_SpawnItem("RocketFlare",-20,0)
	    TNT1 A 0 A_CustomMissile ("BUBULZ", 0, 0, random (0, 360), 2, random (0, 180))
	    Goto Spawn1
	Death:
        TNT1 A 0 Radius_Quake (3, 8, 0, 15, 0)//(intensity, duration, damrad, tremrad, tid)
		TNT1 A 0 A_CustomMissile("BigRicoChet")
        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 BRIGHT A_Scream
		TNT1 AA 0 A_CustomMissile ("MetalShardz1", 5, 0, random (0, 360), 2, random (0, 360))
		TNT1 AA 0 A_CustomMissile ("MetalShardz2", 5, 0, random (0, 360), 2, random (0, 360))
		TNT1 AA 0 A_CustomMissile ("MetalShardz3", 5, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
		TNT1 AAAAAAAAA 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 AAAAA 0 A_CustomMissile ("MediumExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
        TNT1 AAAAA 0 A_CustomMissile ("ExplosionSmokeFast22", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_SpawnItemEx ("RocketExplosion",0,0,13,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_SpawnItemEx ("LiquidExplosionEffectSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_PlaySound("FAREXPL", 3)
		TNT1 A 7
		Stop
	}
}

actor U_RocketSmokeTrail : RocketSmokeTrail52
{
	States
	{
	Spawn:
		TNT1 A 2
		TNT1 A 0 ThrustThingZ (0,random(3,6),0,0)
		SMK3 B 20
		SMK3 CDEFGHIJKLM 1
		Stop
	}
}