actor "Spear of Destiny": InstantSwitchWeapon
{
    Weapon.SelectionOrder 2900
    Inventory.PickUpSound "wolfen/spearget"
	Weapon.SlotNumber 0
    Weapon.AmmoUse 40
    Weapon.AmmoGive 40
    Weapon.AmmoType "Cell"
    +DONTBOB
    +INVENTORY.UNDROPPABLE
    +WEAPON.NOAUTOFIRE

    Weapon.SisterWeapon "Spear of Eternity"

    Obituary "%k cleansed %o from this world with the Spear of Destiny." 
    Inventory.PickupMessage "You got the Spear of Destiny!"

    States
    {
      Spawn:
        WSPR E -1
        Stop

      Ready:
        WSPR A 1 A_WeaponReady
        loop

      Fire:
        WSPR B 20 A_PlayWeaponSound("wolfen/spearready")
        WSPR C 15 BRIGHT
        WSPR C 0 A_PlayWeaponSound("wolfen/spearfire")
        WSPR D 15 BRIGHT A_FireCustomMissile("SpearBoltDM", 0, 1, 0, 0)
        WSPR C 15 BRIGHT
        WSPR B 15
        WSPR A 5 A_Refire
        goto Ready

      SPFire:
        WSPR B 20 A_PlayWeaponSound("wolfen/spearready")
        WSPR C 15 BRIGHT
        WSPR C 0 A_PlayWeaponSound("wolfen/spearfire")
        WSPR D 15 BRIGHT A_FireCustomMissile("SpearBolt", 0, 1, 0, 0)
        WSPR C 15 BRIGHT
        WSPR B 15
        WSPR A 5 A_Refire
        goto Ready

      CoopFire:
        WSPR B 20 A_PlayWeaponSound("wolfen/spearready")
        WSPR C 15 BRIGHT
        WSPR C 0 A_PlayWeaponSound("wolfen/spearfire")
        WSPR D 15 BRIGHT A_FireCustomMissile("SpearBolt2", 0, 1, 0, 0)
        WSPR C 15 BRIGHT
        WSPR B 15
        WSPR A 5 A_Refire
        goto Ready
    }
}

actor "Spear of Eternity": "Spear of Destiny"
{
    Weapon.AmmoType ""
    Weapon.AmmoUse  0
    Weapon.AmmoGive 0

    Weapon.SisterWeapon "Spear of Destiny"
    +POWERED_UP

    States
    {
      Fire:
        WSPR B 20 A_PlayWeaponSound("wolfen/spearready")
        WSPR C 16 BRIGHT
        WSPR C 0 A_PlayWeaponSound("wolfen/spearfire")
        WSPR C 0 ACS_ExecuteAlways(317, 0, 50)
        WSPR D 16 BRIGHT A_FireCustomMissile("SpectralSpearBolt")
        WSPR C 16 BRIGHT
        WSPR B 8
        WSPR A 6 A_Refire
        goto Ready
    }
}

actor SpearBolt
{
    Speed 15
    Height 2
    Radius 4
    Mass 9
    Damage 55
    SeeSound ""
    DeathSound "wolfen/spearexplode1"
    Obituary "%k \cjcleansed\c- %o \cjfrom this world with the Spear of Destiny.\c-" 
    PROJECTILE
    +DONTREFLECT
    DamageType "BJSpear"
    Scale 0.80
    RENDERSTYLE ADD
    States
    {
      Spawn:
        SPB1 ABABABAB 3 BRIGHT A_SpawnItemEx("SpearShotTrail", 0, 0, 0)
        goto Death

      Death:
        SPX1 A 0 A_Stop
        SPX1 AAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("SpearShotMini", 0, 0, random(-180, 180), 2, random(-25, 25))
        SPX1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("SpearShotMini2", 0, 0, random(-180, 180), 2, random(-25, 25))
        SPX1 A 0 A_Scream
        SPX1 A 4 BRIGHT A_Explode(120, 240, 0)
        SPX1 BCDEF 4 BRIGHT
        Stop
    }
}

actor SpearBoltDM: SpearBolt
{
    DamageType "BJSpear"
    Obituary "%k \cjcleansed\c- %o \cjfrom this world with the Spear of Destiny.\c-" 
    States
    {
      Death:
        SPX1 A 0 A_Stop
        SPX1 AAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("SpearShotMiniDM", 0, 0, random(-180, 180), 2, random(-25, 25))
        SPX1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("SpearShotMini2DM", 0, 0, random(-180, 180), 2, random(-25, 25))
        SPX1 A 0 A_Scream
        SPX1 A 4 BRIGHT A_Explode(120, 198, 0)
        SPX1 BCDEF 4 BRIGHT
        Stop
    }
}

actor SpearBolt2: SpearBolt { +THRUSPECIES Species "Player" }

actor SpearShotMini
{
    Radius 10
    Height 16
    Speed 10
    Damage 4
    Scale 0.75
    Obituary "%k \cjcleansed\c- %o \cjfrom this world with the Spear of Destiny.\c-" 
    PROJECTILE
    +RIPPER
    +NOBOSSRIP
    +DOOMBOUNCE
    +NODAMAGETHRUST
    +SKYEXPLODE
    +CANBOUNCEWATER
    +DONTREFLECT
    DamageType "BJSpear"
    SeeSound "wolfen/spearbounce"
    DeathSound "wolfen/spearexplode2"
    States
    {
      Spawn:
        SPB3 ABABABABAB 10 BRIGHT A_SpawnItemEx("SpearShotTrail2", 0, 0, 1)
        TNT1 A 0 A_Jump(128, "Spawn")
        goto Death

      Death:
        TNT1 A 0 A_Scream
        SPX3 C 1 A_Explode(64, 64, 0)
        SPX3 C 1
        SPX3 C 4 BRIGHT
        SPX3 D 6 BRIGHT
        Stop
    }
}

actor SpearShotMiniDM: SpearShotMini
{
    DamageType "BJSpear"
    Damage 3
    +STRIFEDAMAGE
    States
    {
      Spawn:
        SPB3 ABABAB 10 BRIGHT A_SpawnItemEx("SpearShotTrail2", 0, 0, 1)
        TNT1 A 0 A_Jump(96, "Spawn")
        goto Death

      Death:
        TNT1 A 0 A_Scream
        SPX3 C 1 A_Explode(32, 64, 0)
        SPX3 C 1
        SPX3 C 4 BRIGHT
        SPX3 D 6 BRIGHT
        Stop
    }
}

actor SpearShotMini2
{
    Radius 3
    Height 4
    Speed 10
    Damage 4
    Obituary "%k \cjcleansed\c- %o \cjfrom this world with the Spear of Destiny.\c-" 
    PROJECTILE
    +RIPPER
    +NOBOSSRIP
    +STRIFEDAMAGE
    +DOOMBOUNCE
    +NODAMAGETHRUST
    +SKYEXPLODE
    +CANBOUNCEWATER
    +DONTREFLECT
    DamageType "BJSpear"
    SeeSound "wolfen/spearbounce"
    DeathSound "wolfen/spearexplode2"
    States
    {
      Spawn:
        SPB2 ABABABABAB 10 BRIGHT A_SpawnItemEx("SpearShotTrail2", 0, 0, 1)
        TNT1 A 0 A_Jump(128, "Spawn")
        goto Death

      Death:
        TNT1 A 0 A_Scream
        SPX2 AA 2 A_Explode(64, 64, 0)
        SPX2 BCDE 4 BRIGHT
        Stop
    }
}

actor SpearShotMini2DM: SpearShotMini2
{
    DamageType "BJSpear"
    Damage 3
    +STRIFEDAMAGE
    States
    {
      Spawn:
        SPB2 ABABAB 10 BRIGHT A_SpawnItemEx("SpearShotTrail2", 0, 0, 1)
        TNT1 A 0 A_Jump(96, "Spawn")
        goto Death

      Death:
        TNT1 A 0 A_Scream
        SPX2 AA 2 A_Explode(32, 64, 0)
        SPX2 BCDE 4 BRIGHT
        Stop
    }
}

actor SpearShotTrail 
{
    Speed 1
    Scale 0.8
    Damage 0
    PROJECTILE
    -SOLID
    +NOCLIP
    +NOINTERACTION
    +CLIENTSIDEONLY
    States
    {
      Spawn:
        TNT1 A 2
        SPTR ABCD 2 Bright
        Stop   
    }
}

actor SpearShotTrail2: SpearShotTrail
{
    Scale 0.3
    +CLIENTSIDEONLY
}


actor SpectralSpearBolt: SpearBolt
{
    DamageType "Spectral" 

    States
    {
      Spawn:
        SPB1 ABABABAB 3 BRIGHT A_SpawnItemEx("SpearShotTrail", 0, 0, 0)
        goto Death

      Death:
        SPX1 A 0 A_Stop
        SPX1 AAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("SpectralMiniBolt", 0, 0, random(-180, 180), 6, random(-25, 25))
        SPX1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("SpectralMiniBolt2", 0, 0, random(-180, 180), 6, random(-25, 25))
        SPX1 A 0 A_Scream
        SPX1 A 4 BRIGHT A_Explode(120, 240, 0)
        SPX1 BCDEF 4 BRIGHT
        stop
    }
}

actor SpectralMiniBolt:  SpearShotMini  { DamageType "Spectral" }
actor SpectralMiniBolt2: SpearShotMini2 { DamageType "Spectral" }
///////////////////////////////////////////////////////////////////////////////
ACTOR "ZyklonBFG" : BFG9000 
{
  Weapon.SlotNumber 0
  Weapon.Ammouse 60
  Weapon.Ammogive 60
  // Inventory.ForbiddenTo ""
  // Inventory.RestrictedTo ZyklonB
  States
  {
  Fire:
    BFGG A 20 A_BFGSound
    BFGG B 10 A_GunFlash
    BFGG D 2 Bright A_FireCustomMissile("ZyklonBall", 0, 1)
    BFGG D 1 Bright 
    BFGG D 1 Bright
    BFGG D 1 Bright A_SetPitch(pitch-2.0)
    BFGG C 1 Offset(0,32)
    BFGG C 1 Offset(0,42)
    BFGG C 1 Offset(0,52) A_SetPitch(pitch+0.4)
    BFGG C 1 Offset(0,62) A_SetPitch(pitch+0.4)
    BFGG C 1 Offset(0,72) A_SetPitch(pitch+0.4)
    BFGG A 1 Offset(0,92) A_SetPitch(pitch+0.4)
    BFGG A 1 Offset(0,83) A_SetPitch(pitch+0.4)
    BFGG A 1 Offset(0,74)
    BFGG A 1 Offset(0,65)
    BFGG A 1 Offset(0,56)
    BFGG A 1 Offset(0,46)
    BFGG A 1 Offset(0,37)
    BFGG A 1 Offset(0,35)
    BFGG A 1 Offset(0,33)
    BFGG A 1 Offset(0,32)
    BFGG A 5
    BFGG A 5 A_ReFire
    Goto Ready
  Flash:
    TNT1 A 11 Bright A_Light1
    TNT1 A 6 Bright A_Light2
    Goto LightDone
  Spawn:
    BFUG A -1
    Stop
    }
}

ACTOR ZyklonBall
{
  Radius 8
  Height 8
  Speed 25
  Damage 0
  Projectile
  +RIPPER
  DeathSound "weapons/bfgx"
  Obituary "%o found out that it isn't a shower"
  States
  {
  Spawn:
    TNT1 A 1 A_SpawnItemEx("ZyklonCloudSmall", 0, 0, 0, -2, random(-1,1), random(-1,1), random(-30,30))
    Loop
  Death:
    TNT1 AAAA 1 A_FadeOut
    TNT1 A 0 A_SpawnItemEx("ZyklonCloud", 0, 0, 0, 20, 0, random(-2,2), 0)
    TNT1 A 0 A_SpawnItemEx("ZyklonCloud", 0, 0, 0, 20, 0, random(-2,2), 30)
    TNT1 A 0 A_SpawnItemEx("ZyklonCloud", 0, 0, 0, 20, 0, random(-2,2), 60)
    TNT1 A 0 A_SpawnItemEx("ZyklonCloud", 0, 0, 0, 20, 0, random(-2,2), 90)
    TNT1 A 0 A_SpawnItemEx("ZyklonCloud", 0, 0, 0, 20, 0, random(-2,2), 120)
    TNT1 A 0 A_SpawnItemEx("ZyklonCloud", 0, 0, 0, 20, 0, random(-2,2), 150)
    TNT1 A 0 A_SpawnItemEx("ZyklonCloud", 0, 0, 0, 20, 0, random(-2,2), 180)
    TNT1 A 0 A_SpawnItemEx("ZyklonCloud", 0, 0, 0, 20, 0, random(-2,2), 210)
    TNT1 A 0 A_SpawnItemEx("ZyklonCloud", 0, 0, 0, 20, 0, random(-2,2), 240)
    TNT1 A 0 A_SpawnItemEx("ZyklonCloud", 0, 0, 0, 20, 0, random(-2,2), 270)
    TNT1 A 0 A_SpawnItemEx("ZyklonCloud", 0, 0, 0, 20, 0, random(-2,2), 300)
    TNT1 A 0 A_SpawnItemEx("ZyklonCloud", 0, 0, 0, 20, 0, random(-2,2), 330)
    //TNT1 A 0 A_SpawnItemEx("ZyklonCloud", 0, 0, 0, 20, 0, 0, 360)
    Stop
  }
}

ACTOR ZyklonCloud
{
	Damage 5
	Scale 0.8
	Height 12
	Radius 22
	+RIPPER
	+BRIGHT
	+NOBOSSRIP
	Projectile
	Bouncetype Doom
      Bouncecount 3
	RenderStyle Translucent
      Alpha 0.5
	States
	{
	Spawn:
	GTXL A 0 A_PlaySound("GASSND")
	GTXL EDCBAEDCBAEDCBAEDCBAEDCBA 1
	Death:
	GTXL EDCBA 1 A_FadeOut
	TNT1 A 0 A_SpawnItemEx("ZyklonCloudMedium", 0, 0, 0, 20, 0, random(-2,2), 0)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudMedium", 0, 0, 0, 20, 0, random(-2,2), 30)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudMedium", 0, 0, 0, 20, 0, random(-2,2), 60)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudMedium", 0, 0, 0, 20, 0, random(-2,2), 90)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudMedium", 0, 0, 0, 20, 0, random(-2,2), 120)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudMedium", 0, 0, 0, 20, 0, random(-2,2), 150)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudMedium", 0, 0, 0, 20, 0, random(-2,2), 180)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudMedium", 0, 0, 0, 20, 0, random(-2,2), 210)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudMedium", 0, 0, 0, 20, 0, random(-2,2), 240)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudMedium", 0, 0, 0, 20, 0, random(-2,2), 270)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudMedium", 0, 0, 0, 20, 0, random(-2,2), 300)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudMedium", 0, 0, 0, 20, 0, random(-2,2), 330) 
	Stop
	}
}

ACTOR ZyklonCloudMedium : ZyklonCloud
{
	Damage 3
	Height 8
	Radius 13
	Bouncecount 2
	States
	{
	Spawn:
	GTXM EDCBAEDCBAEDCBAEDCBAEDCBA 1
	Death:
	GTXM EDCBA 1 A_FadeOut
	TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall", 0, 0, 0, 20, 0, random(-2,2), 0)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall", 0, 0, 0, 20, 0, random(-2,2), 30)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall", 0, 0, 0, 20, 0, random(-2,2), 60)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall", 0, 0, 0, 20, 0, random(-2,2), 90)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall", 0, 0, 0, 20, 0, random(-2,2), 120)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall", 0, 0, 0, 20, 0, random(-2,2), 150)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall", 0, 0, 0, 20, 0, random(-2,2), 180)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall", 0, 0, 0, 20, 0, random(-2,2), 210)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall", 0, 0, 0, 20, 0, random(-2,2), 240)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall", 0, 0, 0, 20, 0, random(-2,2), 270)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall", 0, 0, 0, 20, 0, random(-2,2), 300)
      TNT1 A 0 A_SpawnItemEx("ZyklonCloudSmall", 0, 0, 0, 20, 0, random(-2,2), 330) 
	Stop
	}
}

ACTOR ZyklonCloudSmall : ZyklonCloudMedium
{
	Damage 2
	Height 6
	Radius 8
	Bouncetype none
	States
	{
	Spawn:
	GTXS EDCBAEDCBAEDCBAEDCBAEDCBA 1
	Death:
	GTXS EDCBA 1 A_FadeOut
	Stop
	}
}


ACTOR ZyklonCloudSmall2 : ZyklonCloudSmall
{
	Damage 1
	Bouncetype Doom
}
	
//////////////////////////////HITLER'S MECHA SUIT///////////////////////////////

Actor PowerMechaSuit : PowerProtection 
{
	DamageFactor 0.5
	Powerup.Duration 0x7fffffff
}

Actor PowerMechaSuit2 : PowerSpeed
{
	Powerup.Duration 0x7fffffff
	Speed 0.4
}

Actor MechaSuit : Weapon
{
	+WEAPON.DONTBOB
	+WEAPON.NO_AUTO_SWITCH
	Weapon.AmmoType1 "Cell"
	Weapon.AmmoType2 "Clip"
	Weapon.AmmoUse1 1
	Weapon.AmmoGive1 50
	Weapon.AmmoGive2 50
	States {
		Select:
			TNT1 AAAAAAAAAAAAAAAAAA 0 A_Raise
			HMEC G 1 A_Raise
			loop
		Deselect:
			TNT1 A 0 A_TakeInventory("PowerMechaSuit", 1)
			TNT1 A 0 A_TakeInventory("PowerMechaSuit2", 1)
			TNT1 A 0 A_PlaySound("Weapons/MechaPowerOff", CHAN_WEAPON)
			TNT1 A 0 A_SetBlend("90 90 ff", 0.5, 10)
			TNT1 A 0 A_PlaySound("Weapons/MechaSuitDown")
			HMEC GFEDCBA 2
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_Lower
			HMEC A 1 A_Lower
			loop
		
		Ready:
			TNT1 A 0 A_PlaySound("Weapons/MechaSuitUp", CHAN_WEAPON)
			HMEC ABC 2
			TNT1 A 0 A_PlaySound("Weapons/MechaGunsUp")
			HMEC DEFG 2
			TNT1 A 0 A_PlaySound("Weapons/MechaPowerOn", CHAN_WEAPON)
			TNT1 A 0 A_SetBlend("90 90 ff", 0.5, 10)
			TNT1 A 0 A_GiveInventory("PowerMechaSuit", 1)
			TNT1 A 0 A_GiveInventory("PowerMechaSuit2", 1)
		
		ReallyReady:
			HMEC H 1 A_WeaponReady
			HMEC A 0 A_CheckReload
			goto ReallyReady

		Fire:
			HMEC A 0 A_JumpIfInventory("Clip", 2, "ReallyFire")
			goto ReallyReady
		ReallyFire:
			HMEC A 0 A_PlayWeaponSound("wolfen/chaingun")
			HMEC A 0 A_TakeInventory("Clip", 1)
			HMEC A 0 A_Light2
			HMEC I 3 Bright A_FireBullets(5, 5, 4, 5, "BlankPuff", 0)
			HMEC A 0 A_PlayWeaponSound("wolfen/chaingun")
			HMEC J 3 Bright A_FireBullets(5, 5, 4, 5, "BlankPuff", 0)
			HMEC H 1 A_ReFire
			HMEC A 0 A_Light0
			HMEC A 0 A_CheckReload
			goto ReallyReady
	}
}