///////////////////////////////Wolfenstine///////////////////////////////////
actor InstantSwitchWeapon: Weapon
{
    States
    {
      Select:
        TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_Raise
        TNT1 A 1 A_Raise
        loop

      Deselect:
        TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_Lower
        TNT1 A 1 A_Lower
        loop

      Ready:
        TNT1 A 0 A_TakeInventory("InstantSwitchWeapon")
        TNT1 A 1 A_WeaponReady
        loop

      Fire:
        TNT1 A 1
        goto Ready
    }
}

actor "RocketLauncherBJ" : InstantSwitchWeapon
{
    Weapon.SelectionOrder 2500
    Weapon.SlotNumber 0
    Inventory.PickUpSound "wolfen/rocketget"
    Weapon.AmmoUse 1
    Weapon.AmmoGive 2
    Weapon.AmmoType "RocketAmmo"
    //+AMMO_OPTIONAL
    +DONTBOB
    +INVENTORY.UNDROPPABLE
    Inventory.PickupMessage "You got the Rocket Launcher!"
    Weapon.YAdjust 16
    States
    {
      Spawn:
        WRLP A -1
        Stop

      Ready:
        WRCK A 1 A_WeaponReady
        loop

      Fire:
        WRCK B 4 BRIGHT A_FireCustomMissile("WolfRocket")
        WRCK CDCA 4
        WRCK A 0 A_Refire
        Goto Ready
		
	  RJFire:
        WRCK B 4 BRIGHT A_FireCustomMissile("WolfRocketRJ")
        WRCK CDCA 4
        WRCK A 0 A_Refire
        Goto Ready

      CoopFire:
        WRCK B 4 BRIGHT A_FireCustomMissile("WolfRocket2")
        WRCK CDCA 4
        WRCK A 0 A_Refire
        Goto Ready
		
	  RJFireCoop:
        WRCK B 4 BRIGHT A_FireCustomMissile("WolfRocket2RJ")
        WRCK CDCA 4
        WRCK A 0 A_Refire
        Goto Ready
    }
}

actor WolfRocket
{
    Scale 1.0 //0.75
    Radius 8
    Height 6
    Speed 30
    Damage 20
    Projectile
    +RIPPER
//   +FORCERADIUSDMG
    +NOEXTREMEDEATH
    +NOBOSSRIP
	+RANDOMIZE
    SeeSound "wolfen/missilefire"
    DeathSound "wolfen/missilexplod"
    Obituary "%k \cjtore through\c- %o \cjwith the Rocket Launcher.\c-"
    States
    {
      Spawn:
        WMSL A 3 A_SpawnItem("WolfRocketSmoke")
        Loop

      Death:
        WFLB C 8 Bright A_Explode(428,50,0)
        WFLB D 6 Bright
        WFLB E 4 Bright
        Stop
    }
}

actor WolfRocketRJ : WolfRocket
{
    States
	{
      Death:
        WFLB C 8 Bright A_Explode(128,64)
        WFLB D 6 Bright
        WFLB E 4 Bright
        Stop
	}
}

actor WolfRocket2: WolfRocket { +THRUSPECIES Species "Player" }
actor WolfRocket2RJ: WolfRocketRJ { +THRUSPECIES Species "Player" }

actor WolfRocketSmoke
{
    Radius 1
    Height 1
    Speed 0
    Renderstyle Translucent
    Alpha 0.5
    +NOGRAVITY
    -SOLID
    +NOCLIP
    +CLIENTSIDEONLY
    States
    {
      Spawn:
        TNT1 A 2
        RTRL ABCD 4
        stop
    }
}
///////////////////////////////MoonMan////////////////////////////////////////
ACTOR GrenadeLauncher : Weapon
{
	Weapon.SelectionOrder 2300
	Weapon.SlotNumber 0
	Weapon.Ammogive 2
	Weapon.Ammotype1 "RocketAmmo"
	Weapon.Ammotype2 "RocketAmmo"
	Weapon.Ammouse1 1
	Weapon.Ammouse2 1
	+WEAPON.EXPLOSIVE
	+WEAPON.NOAUTOFIRE
	Inventory.PickupMessage "You got the Grenade Launcher!"
	States
	{
	Ready:
		WRLA A 1 A_WeaponReady
		Loop
	Deselect:
		WRLA A 1 A_Lower
		Loop
	Select:
		WRLA A 1 A_Raise
		Loop
	Fire:
		WRLA A 4
		WRLA A 0 A_GunFlash
		WRLA B 1 Bright A_FireCustomMissile("LauncherGrenade")
		WRLA B 1 Bright Offset(0, 49) A_SetPitch(pitch-0.6)
		WRLA A 2 Offset(0, 46)
		WRLA A 2 Offset(0, 43) A_SetPitch(pitch+0.6)
		WRLA A 2 Offset(0, 40)
		WRLA A 2 Offset(0, 37)
		WRLA A 2 Offset(0, 34)
		WRLA A 2 Offset(0, 32)
		WRLA ACDEA 2
		WRLA A 0 A_Refire
		Goto Ready
	Altfire:
		WRLA A 4
		WRLA A 0 A_GunFlash
		WRLA B 1 Bright A_FireCustomMissile("LauncherGrenade2")
		WRLA B 1 Bright Offset(0, 49) A_SetPitch(pitch-0.6)
		WRLA A 2 Offset(0, 46)
		WRLA A 2 Offset(0, 43) A_SetPitch(pitch+0.6)
		WRLA A 2 Offset(0, 40)
		WRLA A 2 Offset(0, 37)
		WRLA A 2 Offset(0, 34)
		WRLA A 2 Offset(0, 32)
		WRLA ACDEA 2
		WRLA A 0 A_Refire
		Goto Ready
	Flash:
		TNT1 A 1 A_Light2
		TNT1 A 1 A_Light1
		Goto Lightdone
	Spawn:
		GLAN A -1
		Stop
	}
}

ACTOR GasGrenadeLauncher : GrenadeLauncher
{
	Inventory.PickupMessage "You got the Gas Grenade Launcher!"
	States
	{
	Ready:
		GRLA A 1 A_WeaponReady
		Loop
	Deselect:
		GRLA A 1 A_Lower
		Loop
	Select:
		GRLA A 1 A_Raise
		Loop
	Fire:
		GRLA A 4
		GRLA A 0 A_GunFlash
		GRLA B 1 Bright A_FireCustomMissile("LauncherGasGrenade")
		GRLA B 1 Bright Offset(0, 49) A_SetPitch(pitch-0.6)
		GRLA A 2 Offset(0, 46)
		GRLA A 2 Offset(0, 43) A_SetPitch(pitch+0.6)
		GRLA A 2 Offset(0, 40)
		GRLA A 2 Offset(0, 37)
		GRLA A 2 Offset(0, 34)
		GRLA A 2 Offset(0, 32)
		GRLA ACDEA 2
		GRLA A 0 A_Refire
		Goto Ready
	Altfire:
		GRLA A 4
		GRLA A 0 A_GunFlash
		GRLA B 1 Bright A_FireCustomMissile("LauncherGasGrenade2")
		GRLA B 1 Bright Offset(0, 49) A_SetPitch(pitch-0.6)
		GRLA A 2 Offset(0, 46)
		GRLA A 2 Offset(0, 43) A_SetPitch(pitch+0.6)
		GRLA A 2 Offset(0, 40)
		GRLA A 2 Offset(0, 37)
		GRLA A 2 Offset(0, 34)
		GRLA A 2 Offset(0, 32)
		GRLA ACDEA 2
		GRLA A 0 A_Refire
		Goto Ready
	Flash:
		TNT1 A 1 A_Light2
		TNT1 A 1 A_Light1
		Goto Lightdone
	Spawn:
		GLAN A -1
		Stop
	}
}

ACTOR NapalmGrenadeLauncher : GasGrenadeLauncher
{
	Inventory.PickupMessage "You got the Napalm Grenade Launcher!"
	States
	{
	Ready:
		GRLA A 1 A_WeaponReady
		Loop
	Deselect:
		GRLA A 1 A_Lower
		Loop
	Select:
		GRLA A 1 A_Raise
		Loop
	Fire:
		GRLA A 4
		GRLA A 0 A_GunFlash
		GRLA B 1 Bright A_FireCustomMissile("LauncherNapalmGrenade")
		GRLA B 1 Bright Offset(0, 49) A_SetPitch(pitch-0.6)
		GRLA A 2 Offset(0, 46)
		GRLA A 2 Offset(0, 43) A_SetPitch(pitch+0.6)
		GRLA A 2 Offset(0, 40)
		GRLA A 2 Offset(0, 37)
		GRLA A 2 Offset(0, 34)
		GRLA A 2 Offset(0, 32)
		GRLA ACDEA 2
		GRLA A 0 A_Refire
		Goto Ready
	Altfire:
		GRLA A 4
		GRLA A 0 A_GunFlash
		GRLA B 1 Bright A_FireCustomMissile("LauncherNapalmGrenade2")
		GRLA B 1 Bright Offset(0, 49) A_SetPitch(pitch-0.6)
		GRLA A 2 Offset(0, 46)
		GRLA A 2 Offset(0, 43) A_SetPitch(pitch+0.6)
		GRLA A 2 Offset(0, 40)
		GRLA A 2 Offset(0, 37)
		GRLA A 2 Offset(0, 34)
		GRLA A 2 Offset(0, 32)
		GRLA ACDEA 2
		GRLA A 0 A_Refire
		Goto Ready
	Flash:
		TNT1 A 1 A_Light2
		TNT1 A 1 A_Light1
		Goto Lightdone
	Spawn:
		GLAN A -1
		Stop
	}
}

////////////////////////////////////////////////////////////////////

ACTOR "RocketLauncherA" : RocketLauncher
{
	Weapon.SlotNumber 0
// Inventory.ForbiddenTo ""
// Inventory.RestrictedTo ZyklonB
  States
  {
  Ready:
    RLNR A 1 A_WeaponReady
    Loop
  Deselect:
    RLNR A 1 A_Lower
    Loop
  Select:
    RLNR A 1 A_Raise
    Loop
  Fire:
    RLNR A 3
    RLNR A 1 A_GunFlash
    RLNR C 1 Bright A_FireCustomMissile("MoonRocket")
    RLNR C 1 Bright Offset(0,50) A_SetPitch(pitch-0.8)
    RLNR B 2 Offset(0,50)
    RLNR B 2 Offset(0,46) A_SetPitch(pitch+0.8)
    RLNR B 2 Offset(0,42)
    RLNR B 2 Offset(0,38)
    RLNR B 2 Offset(0,34)
    RLNR B 2 Offset(0,32)
    RLNR B 2  
    RLNR A 2 
    RLNR A 0 A_ReFire
    Goto Ready
  Flash:
    TNT1 A 2 A_Light2
    TNT1 A 1 A_Light1
    Goto LightDone
    }
}

ACTOR NapalmRocketLauncher : RocketLauncherA
{
	States
	{
	Fire:
	RLNR A 3
	RLNR A 1 A_GunFlash
	RLNR C 1 Bright A_FireCustomMissile("NapalmRocket")
	RLNR C 1 Bright Offset(0,50) A_SetPitch(pitch-0.8)
	RLNR B 2 Offset(0,50)
	RLNR B 2 Offset(0,46) A_SetPitch(pitch+0.8)
	RLNR B 2 Offset(0,42)
	RLNR B 2 Offset(0,38)
	RLNR B 2 Offset(0,34)
	RLNR B 2 Offset(0,32)
	RLNR B 2  
	RLNR A 2 
	RLNR A 0 A_ReFire
	Goto Ready
	}
}

ACTOR MoonRocket : Rocket
{
	SeeSound "MOONROK"
	+FULLVOLDEATH
	Decal Scorch
	States
	{
	Death:
		REXP CCCCCC 0 Bright A_SpawnItemEx("GrenadeParticle", random(-10, 10), random(-10, 10), random(-10, 10), random(-10, 10), random(-10, 10), random(-10, 10))
		REXP C 0 Bright A_SpawnItemEx("Lighter")
		REXP C 2 Bright A_Explode
		REXP C 0 Bright Radius_Quake(10, 3, 0, 5, 0)
		REXP DEFGHIJKLMN 2 Bright
		Stop
	}
}

ACTOR NapalmRocket : MoonRocket
{
	Damage 10
	States
	{
	Death:
		REXP AAAAAA 0 A_SpawnItemEx("GrenadeParticle", random(-10, 10), random(-10, 10), random(-10, 10), random(-10, 10), random(-10, 10), random(-10, 10))
		REXP A 0 A_SpawnItemEx("Lighter")
		REXP A 2 Bright A_Explode(12,12)
		REXP A 0 Radius_Quake(10, 3, 0, 5, 0)
		REXP BCD 2 A_Fadeout(0.2)
		TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 0)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 60)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 120)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 180)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 240)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 300)
	TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 30)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 90)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 150)
	TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 210)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 270)
	TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 330)
	TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 330)
		Stop
	}
}

ACTOR HitlerRocket : MoonRocket
{
	Speed 30
}

ACTOR LauncherGrenade
{
	Radius 10
	Height 10
	Speed 35
	Damage 20
	SeeSound "GLANFIR"
	DeathSound "weapons/rocklx"
	BounceSound "GLANBNC"
	+FULLVOLDEATH
	BounceType Doom
	Projectile
	Gravity 0.8
	BounceCount 5
	-NOGRAVITY
	Decal Scorch
	States
	{
	Spawn:
		GRND A 1 Bright
		Loop
	Death:
		REXP C 0 A_NoGravity
		REXP CCCCCC 0 A_SpawnItemEx("GrenadeParticle", random(-10, 10), random(-10, 10), random(-10, 10), random(-10, 10), random(-10, 10), random(-10, 10))
		REXP C 0 A_SpawnItemEx("Lighter")
		REXP C 2 Bright A_Explode
		REXP C 0 Radius_Quake(10, 3, 0, 5, 0)
		REXP DEFGHIJKLMN 2 Bright
		Stop
	}
}

ACTOR LauncherGasGrenade : LauncherGrenade
{
	Damage 10
	States
	{
	Death:
		REXP A 0 A_NoGravity
		REXP AAAAAA 0 A_SpawnItemEx("GrenadeParticle", random(-10, 10), random(-10, 10), random(-10, 10), random(-10, 10), random(-10, 10), random(-10, 10))
		REXP A 0 A_SpawnItemEx("Lighter")
		REXP A 2 Bright A_Explode(12,12)
		REXP A 0 Radius_Quake(10, 3, 0, 5, 0)
		REXP BCD 2 A_FadeOut(0.2)
	TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall2", 0, 0, 0, 5, 0, random(-2,2), 0)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall2", 0, 0, 0, 5, 0, random(-2,2), 60)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall2", 0, 0, 0, 5, 0, random(-2,2), 120)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall2", 0, 0, 0, 5, 0, random(-2,2), 180)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall2", 0, 0, 0, 5, 0, random(-2,2), 240)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall2", 0, 0, 0, 5, 0, random(-2,2), 300)
	TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall2", 0, 0, 0, 5, 0, random(-2,2), 30)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall2", 0, 0, 0, 5, 0, random(-2,2), 90)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall2", 0, 0, 0, 5, 0, random(-2,2), 150)
	TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall2", 0, 0, 0, 5, 0, random(-2,2), 210)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall2", 0, 0, 0, 5, 0, random(-2,2), 270)
	TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall2", 0, 0, 0, 5, 0, random(-2,2), 330)
		Stop
	}
}

ACTOR LauncherNapalmGrenade : LauncherGasGrenade
{
	States
	{
	Death:
		REXP A 0 A_NoGravity
		REXP AAAAAA 0 A_SpawnItemEx("GrenadeParticle", random(-10, 10), random(-10, 10), random(-10, 10), random(-10, 10), random(-10, 10), random(-10, 10))
		REXP A 0 A_SpawnItemEx("Lighter")
		REXP A 2 Bright A_Explode(12,12)
		REXP A 0 Radius_Quake(10, 3, 0, 5, 0)
		REXP BCD 2 A_FadeOut(0.2)
	TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 0)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 60)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 120)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 180)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 240)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 300)
	TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 30)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 90)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 150)
	TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 210)
      TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 270)
	TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 330)
	TNT1 A 0 A_SpawnItemEx("FTFire", 0, 0, 0, 5, 0, random(-2,2), 330)
		Stop
	}
}

ACTOR LauncherNapalmGrenade2 : LauncherNapalmGrenade
{
	BounceType none
}

ACTOR LauncherGrenade2 : LauncherGrenade
{
	BounceType none
}

ACTOR LauncherGasGrenade2 : LauncherGasGrenade
{
	BounceType none
}

		
///////////////////////////////////////////////////////////////////////////////
ACTOR "Panzerschreck" : RocketLauncherA
{
	Weapon.SlotNumber 0
// Inventory.ForbiddenTo ""
// Inventory.RestrictedTo ZyklonB
  States
  {
  Ready:
    PANZ A 1 A_WeaponReady
    Loop
  Deselect:
    PANZ A 1 A_Lower
    Loop
  Select:
    PANZ A 1 A_Raise
    Loop
  Fire:
    PANZ A 3
    PANZ A 1 A_GunFlash
    PANZ B 1 Bright A_FireCustomMissile("HitlerRocket")
    PANZ B 1 Bright Offset(20,70) A_SetPitch(pitch-1)
    PANZ A 2 Offset(18,60)
    PANZ A 2 Offset(16,50) A_SetPitch(pitch+1)
    PANZ A 2 Offset(14,40)
    PANZ A 2 Offset(10,38)
    PANZ A 2 Offset(7,36)
    PANZ A 2 Offset(4,34)
    PANZ A 2 Offset(2,32)
    PANZ A 2 Offset(0,32)
    PANZ A 0 A_ReFire
    Goto Ready
  Flash:
    TNT1 A 2 A_Light2
    TNT1 A 1 A_Light1
    Goto LightDone
    }
}
