ACTOR RifleCaseSpawn
{
	Speed 20
	PROJECTILE
	+NOCLIP
	+CLIENTSIDEONLY
	States
	{
	Spawn:
        TNT1 A 0
		TNT1 A 1 A_CustomMissile("EmptyBrass",1,0,random(-80,-100),2,random(45,80))
		Stop
	}
}


ACTOR PistolCaseSpawn : RifleCaseSpawn
{
	States
	{
	Spawn:
        TNT1 A 0
		TNT1 A 1 A_CustomMissile("PistolCasing",0,0,random(-80,-100),2,random(40,60))
		Stop
	}
} 


ACTOR ShotCaseSpawn : RifleCaseSpawn
{
	States
	{
	Spawn:
        TNT1 A 0
		TNT1 A 1 A_CustomMissile("ShotgunCasing",0,0,random(-80,-100),2,random(40,60))
		Stop
	}
} 

Actor SSGCaseSpawner : ShotcaseSpawn
{
		States
		{
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0,390)
				TNT1 A 1
				Goto Death
		Death:
				TNT1 A 0 A_CustomMissile("ShotgunCasing",0,0,random(80,100),2,random(50,70))
				Stop
		}
}


ACTOR 50CaseSpawn
{
	Speed 20
	PROJECTILE
	+NOCLIP
	+CLIENTSIDEONLY
	States
	{
	Spawn:
        TNT1 A 0
		
		TNT1 A 1 A_CustomMissile("EmptyBrass",-2,0,random(80,100),2,random(40,80))
		TNT1 A 1 A_CustomMissile("MGLinks",-4,0,random(80,100),2,random(40,80))
		Stop
	}
}

ACTOR 50CaseSpawn2: 50CaseSpawn
{
	States
	{
	Spawn:
        TNT1 A 0
		TNT1 A 1 A_CustomMissile("EmptyBrass",-2,0,random(-80,-100),2,random(40,80))
		TNT1 A 1 A_CustomMissile("MGLinks",-4,0,random(-80,-100),2,random(40,80))
		Stop
	}
}


ACTOR MastermindCaseSpawn
{
	Speed 20
	PROJECTILE
	+NOCLIP
	+CLIENTSIDEONLY
	States
	{
	Spawn:
        TNT1 A 0
		TNT1 A 1 A_CustomMissile("20mmBrass",-5,0,random(-80,-100),2,random(45,80))
		Stop
	}
}

ACTOR AutoCannonCaseSpawn: MastermindCaseSpawn
{
	States
	{
	Spawn:
        TNT1 A 0
		TNT1 A 1 A_CustomMissile("40mmBrass",-5,0,random(-80,-100),2,random(30,50))
		Stop
	}
}


ACTOR EmptyBrass
{
   Height 2
   Radius 2
   Speed 6
   Scale 0.20
   +DOOMBOUNCE
   -CANBOUNCEWATER
   - NOGRAVITY
   +WINDTHRUST
   +CLIENTSIDEONLY
   +MOVEWITHSECTOR
   +MISSILE
   +NOBLOCKMAP
   -DROPOFF
   +NOTELEPORT
   +FORCEXYBILLBOARD
   +NOTDMATCH
   +GHOST
   //+DONTSPLASH
   //+CANBOUNCEWATER
   +FLOORCLIP
   +THRUACTORS
   Mass 0
   BounceFactor 0.3
   DeathSound "weapons/casing"
   BounceSound "weapons/casing"
   States
   {
   Spawn:
      //C4S3 FGHABCDEFGHABCDEFGH 3 
	  TNT1 A 0
	  TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
	  C4S3 FFGGHHAABBCCDDEEFFGGHHAABBCCDDEEFFGGHH 1
	  C4S3 FFGGHHAABBCCDDEEFFGGHHAABBCCDDEEFFGGHH 1
      STOP

   Death:
      C4S3 I 0
	  TNT1 A 0 ACS_NamedExecuteAlways("BDCheckJanitor")//Check Effects
	  TNT1 A 0 ACS_NamedExecuteAlways("BDCheckJanitor2")//Check Effects
      LCPJ A 0 A_Jump(256,"Rest1","Rest2","Rest3","Rest4","Rest5","Rest6","Rest7","Rest8")
      Goto Rest1
    Rest1:
      C4S3 I 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
	  C4S3 I -1
      Loop
    Rest2:
      C4S3 J 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
	  C4S3 J -1
      Loop
    Rest3:
      C4S3 K 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
	  C4S3 K -1
      Loop
    Rest4:
      C4S3 L 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
	  C4S3 L -1
      Loop
    Rest5:
      C4S3 M 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
	  C4S3 M -1
      Loop
    Rest6:
      C4S3 I 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
	  C4S3 I -1
      Loop
    Rest7:
      C4S3 J 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
	  C4S3 J -1
      Loop
    Rest8:
      C4S3 K 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
	  C4S3 K -1
      Loop
	 
	Splash:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("UnderwaterEmptyBrass")
	Stop
	
	Stoping:
	TNT1 A 0
	Stop
   }
}


Actor EnemyMinigunBrass: EmptyBrass
{
	States
		{
			Death:
			TNT1 A 0
			Stop
		}
}

ACTOR PistolCasing: EMptyBrass
{
   
   Scale 0.15
   States
   {
   Spawn:
	  TNT1 A 0
	  
      C4S1 FFGGHHAABBCCDDEEFFGGHHAABBCCDDEEFFGGHH 1
      STOP

   Death:
       C4S1 I 0
	   TNT1 A 0 ACS_NamedExecuteAlways("BDCheckJanitor")//Check Effects
	   TNT1 A 0 ACS_NamedExecuteAlways("BDCheckJanitor2")//Check Effects
      LCPJ A 0 A_Jump(256,"Rest1","Rest2","Rest3","Rest4","Rest5")
      Goto Rest1
    Rest1:
      C4S1 I 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest2:
      C4S1 J 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest3:
      C4S1 K 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest4:
      C4S1 L 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest5:
      C4S1 M 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
	 
	Splash:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("UnderwaterEmptyBrass")
	Stop
	
	Stoping:
	TNT1 A 0
	Stop
   }
}


ACTOR MGLinks: EMptyBrass
{
   
   Scale 0.25
   States
   {
   Spawn:
	  TNT1 A 0
	  
      CLIN ABCDEFGHABCDEFGHABCDEFGHABCDEFGH 1
      STOP

   Death:
       CLIN A 0
	   TNT1 A 0 ACS_NamedExecuteAlways("BDCheckJanitor")//Check Effects
	   TNT1 A 0 ACS_NamedExecuteAlways("BDCheckJanitor2")//Check Effects
      LCPJ A 0 A_Jump(256,"Rest1","Rest2","Rest3","Rest4","Rest5")
      Goto Rest1
    Rest1:
      CLIN F 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest2:
      CLIN B 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest3:
      CLIN F 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest4:
      CLIN B 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest5:
      CLIN F 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
	 
	Splash:
	TNT1 A 0
	Stop
	
	Stoping:
	TNT1 A 0
	Stop
   }
}


ACTOR 20mmBrass: EmptyBrass
{
Gravity 0.8
Speed 12
Scale 0.5
}


ACTOR 40mmBrass: EmptyBrass
{
Gravity 0.8
Speed 12
Scale 0.8
DeathSound "40mmcasing"
BounceSound "None"
}



ACTOR underwaterEmptyBrass: EmptyBrass
{
   Speed 0
   -BOUNCEONWALLS
   Mass 1
   DeathSound "none"
   BounceSound "none"
   States
   {
   Spawn:
      BLUD C 0 ThrustThingZ (0,7,1,0)
      C4S3 ABCD 3 
	  BLUD C 0 ThrustThingZ (0,7,1,0)
	  C4S3 EFGH 3
	  BLUD C 0 ThrustThingZ (0,7,1,0)
      C4S3 ABCD 3 
	  BLUD C 0 ThrustThingZ (0,7,1,0)
	  C4S3 EFGH 3
	   TNT1 A 0 A_SpawnItem("BUBULZ")
      Loop
   }
}

ACTOR ShotgunCasing
{
   Height 2
   Radius 2
   Speed 6
   Scale 0.25
   +DOOMBOUNCE
   -CANBOUNCEWATER
   - NOGRAVITY
   +WINDTHRUST
   +CLIENTSIDEONLY
   +MOVEWITHSECTOR
   +MISSILE
   +NOBLOCKMAP
   -DROPOFF
   +NOTELEPORT
   +FORCEXYBILLBOARD
   +NOTDMATCH
   +GHOST
   //+CANBOUNCEWATER
   //+DONTSPLASH
   Mass 2
   BounceFactor 0.3
   DeathSound "weapons/shell"
   BounceSound "weapons/shell"
   States
   {
    Spawn:
      C4S2 AABBCCDDEEFFGGHHAABBCCDDEEFFGGHH 1 A_CustomMissile("CasingSmoke", 0, 0, random(0, 360), 2, random(85, 90))
      Stop
   Death:
	  TNT1 A 0
	  TNT1 A 0 ACS_NamedExecuteAlways("BDCheckJanitor")//Check Effects
	  TNT1 A 0 ACS_NamedExecuteAlways("BDCheckJanitor2")//Check Effects
	  TNT1 A 0 A_SpawnItem("MicroSmokeColumn")
      LCPJ A 0 A_Jump(256,"Rest1","Rest2","Rest3","Rest4","Rest5","Rest6","Rest7","Rest8")
      Goto Rest1
    Rest1:
      C4S2 I 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest2:
      C4S2 J 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest3:
      C4S2 K 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest4:
      C4S2 L 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest5:
      C4S2 M 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest6:
      C4S2 I 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest7:
      C4S2 J 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest8:
      C4S2 K 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
   Loop
   
	Stoping:
		TNT1 A 0 
		TNT1 A 0
		Stop
   }
}


ACTOR EmptyClip
{
   Height 2
   Radius 2
   Speed 4
   Scale 0.25
   //+DOOMBOUNCE
   - NOGRAVITY
   +WINDTHRUST
   +CLIENTSIDEONLY
   +MOVEWITHSECTOR
   +MISSILE
   +NOBLOCKMAP
   -DROPOFF
   +NOTELEPORT
   +FORCEXYBILLBOARD
   +NOTDMATCH
   +GHOST
   BounceFactor 0.3
   Bouncecount 3
   Mass 1
   BounceType doom
	BounceSound "mbounce1"
	DeathSound "smolmag"
   +ROLLSPRITE
   +ROLLCENTER
   +FORCEXYBILLBOARD
   States
   {
   Spawn:
      TNT1 A 3 NODELAY A_SetRoll(45)
	SpawnLoop:
      ECLI G 1 A_SetRoll(roll+15)
      loop
   Death:
      ECLI G 200 A_SetRoll(0)
	  TNT1 A 0 A_JumpIf(GetCVAR("bd_infinitecasings")==0,"Stoping")
	  ECLI G -1
      Loop
	Stoping:
		TNT1 A 0
		Stop
   }
}

ACTOR EmptyClipSMG : EMPTYCLIP
{
	yscale 0.18
	xscale 0.27
}

ACTOR EmptyClipRifle : EmptyClip
{
YSCALE 0.06
Xscale 0.07
+ROLLSPRITE
+ROLLCENTER
	BounceSound "mbounce1"
	DeathSound "riflemag"
	States
	{
   Spawn:
      TNT1 A 5
	Fly:
      ECLP A 1 A_SETROLL(ROLL+20)
      loop
   Death:
	  TNT1 A 0 A_PlaySound("MAGTHUD")
	  TNT1 A 0 ACS_NamedExecuteAlways("BDCheckJanitor")//Check Effects
	  TNT1 A 0 ACS_NamedExecuteAlways("BDCheckJanitor2")//Check Effects
      ECLP A 1 A_SETROLL(0)
	  TNT1 A 0 A_JumpIf(GetCVAR("bd_infinitecasings")==0,"Stoping")
	  ECLP A -1
      Loop
	Stoping:
		TNT1 A 0
		Stop
	}
} 

ACTOR EmptyASGDrum : EmptyClip
{
+ROLLSPRITE
+ROLLCENTER
 gravity 1.5
 Scale 0.2
BounceFactor 0.5
BounceCount 4
WallBounceFactor 0.5
+bounceonfloors
+bounceonwalls
	BounceSound "mbounce2"
	DeathSound "medmag"

   States
    {
	Spawn:
		TNT1 A 0
	Flying:
        ASGB X 1 a_setroll(roll+15)
		loop
     Death:
        ASGB X 2 a_setroll(35)
		ASGB X 2 a_setroll(-35)
		ASGB X 2 a_setroll(30)
		ASGB X 2 a_setroll(-30)
		ASGB X 1 a_setroll(20)
		ASGB X 1 a_setroll(-20)
		ASGB X 1 a_setroll(20)
		ASGB X 1 a_setroll(-20)
		ASGB X 1 a_setroll(10)
		ASGB X 1 a_setroll(-10)
		ASGB X 1 a_setroll(10)
		ASGB X 1 a_setroll(-10)
		ASGB X 1 a_setroll(10)
		ASGB X 1 a_setroll(-10)
		ASGB X 1 a_setroll(0)
		ASGB X -1
		stop
	}
}

ACTOR EmptyRocketChamber
{
   Height 2
   Radius 2
   Speed 4
   Scale 0.9
   +DOOMBOUNCE
   - NOGRAVITY
   +WINDTHRUST
   +CLIENTSIDEONLY
   +MOVEWITHSECTOR
   +MISSILE
   +NOBLOCKMAP
   -DROPOFF
   +NOTELEPORT
   +FORCEXYBILLBOARD
   +NOTDMATCH
   +GHOST
   Mass 1
   BounceFactor 0.3
	BounceSound "mbounce2"
	DeathSound "bigmag2"
   States
   {
   Spawn:
      TNT1 A 1 A_PlaySound("magthud")
      RCSE ABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGH 4
      Stop
   Death:
      RCSE G 600
      Loop
   }
}

ACTOR emptyammobox : emptyrocketchamber
{
	scale 0.55
	 gravity 1.8
	 BounceFactor 0.2
	BounceCount 3
	WallBounceFactor 0.2
	+ROLLSPRITE
	+ROLLCENTER
	+bounceonfloors
	+bounceonwalls
		BounceSound "mbounce2"
	DeathSound "bigmag"
scale 0.6
	states
	{
	 Spawn:
      TNT1 A 0
	Flying:
        LMGB O 1 a_setroll(roll+15)
		loop
     Death:
		TNT1 A 0 A_JUMP(127, "Death2","Death3","Death4")
		LMGB O 1 a_setroll(15)
        LMGB O -1
        stop
	 Death2:
		LMGB O 1 a_setroll(90)
        LMGB O -1
        stop
	Death3:
		LMGB O 1 a_setroll(180)
        LMGB O -1
        stop
	Death4:
		LMGB O 1 a_setroll(270)
        LMGB O -1
        stop
	  }
}
	

ACTOR EmptyCell
{
   Height 17
   Radius 10
   Speed 4
   Scale 0.2
   +DOOMBOUNCE
   - NOGRAVITY
   +WINDTHRUST
   +CLIENTSIDEONLY
   +MOVEWITHSECTOR
   +MISSILE
   +NOBLOCKMAP
   -DROPOFF
   +NOTELEPORT
   +FORCEXYBILLBOARD
   +NOTDMATCH
   +ROLLSPRITE
   BounceFactor 0.3
   +GHOST
   Mass 1
	BounceSound "mbounce1"
	DeathSound "smolmag"
   States
   {
   Spawn:
      TNT1 A 2 A_PlaySound("NULL")
	   TNT1 A 0 A_SETROLL(90) 
      ECEL AAAAAAAAAAA 4 A_SETROLL(ROLL+25) 
      Stop
   Death:
      ECEL A 30 A_SETROLL(0) 
	  ECEL A -1
      STOP
   }
}


ACTOR RocketCaseSpawn
{
	Speed 20
	PROJECTILE
	+NOCLIP
	+CLIENTSIDEONLY
	States
	{
	Spawn:
        TNT1 A 0
		TNT1 A 1 A_CustomMissile("EmptyRocketChamber",0,0,random(-80,-100),2,random(40,60))
		Stop
	}
} 

ACTOR MMGboxSpawn
{
	Speed 20
	PROJECTILE
	+NOCLIP
	+CLIENTSIDEONLY
	States
	{
	Spawn:
        TNT1 A 0
		TNT1 A 1 A_CustomMissile("emptyammobox",0,0,random(80,100),2,random(40,60))
		Stop
	}
} 

ACTOR PlasmaCaseSpawn : RifleCaseSpawn
{
	States
	{
	Spawn:
        TNT1 A 0
		TNT1 A 1 A_CustomMissile("EmptyCell",0,0,random(-80,-100),2,random(40,60))
		Stop
	}
} 


ACTOR EmptyClipSpawn
{
	Speed 20
	PROJECTILE
	+NOCLIP
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1 A_CustomMissile("EmptyClip",1,0,random(85,95),2,1)
		Stop
	}
}

ACTOR EmptyClipSpawnSMG :  EmptyClipSpawn
{
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1 A_CustomMissile("EmptyClipSMG",1,0,random(85,95),2,1)
		Stop
	}
}

ACTOR EmptyClipSpawnASG :  EmptyClipSpawn
{
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1 A_CustomMissile("EmptyASGdrum",1,0,random(85,95),2,1)
		Stop
	}
}

ACTOR EmptyClipRifleSpawn : EmptyClipSpawn
{
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1 A_CustomMissile("EmptyClipRifle",1,0,random(85,95),2,1)
		Stop
	}
}

ACTOR SlugCaseSpawn : RifleCaseSpawn
{
	States
	{
	Spawn:
        TNT1 A 0
		TNT1 A 1 A_CustomMissile("SlugShellCasing",0,0,random(-80,-100),2,random(40,60))
		Stop
	}
} 

ACTOR SlugShellCasing : Shotguncasing
{
   Scale 0.28
   States
   {
    Spawn:
      CAS4 AABBCCDDEEFFGGHHAABBCCDDEEFFGGHH 1 A_CustomMissile("CasingSmoke", 0, 0, random(0, 360), 2, random(85, 90))
      Stop
   Death:
	  TNT1 A 0
	  TNT1 A 0 ACS_NamedExecuteAlways("BDCheckJanitor")//Check Effects
	  TNT1 A 0 ACS_NamedExecuteAlways("BDCheckJanitor2")//Check Effects
	  TNT1 A 0 A_SpawnItem("MicroSmokeColumn")
      LCPJ A 0 A_Jump(256,"Rest1","Rest2","Rest3","Rest4","Rest5","Rest6","Rest7","Rest8")
      Goto Rest1
    Rest1:
      CAS4 I 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest2:
      CAS4 J 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest3:
      CAS4 K 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest4:
      CAS4 L 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest5:
      CAS4 M 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest6:
      CAS4 I 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest7:
      CAS4 J 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
      Loop
    Rest8:
      CAS4 K 200
	  TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Stoping")
   Loop
   
	Stoping:
		TNT1 A 0
		Stop
   }
}


//// UNLOAD CASINGS

///spawners
ACTOR RifleCaseSpawnsave : RifleCaseSpawn
{
	States
	{
	Spawn:
        TNT1 A 0
		TNT1 A 1 A_CustomMissile("RifleCasingsave",0,0,random(-80,-100),2,random(40,60))
		Stop
	}
} 

ACTOR PistolCaseSpawnsave : RifleCaseSpawn
{
	States
	{
	Spawn:
        TNT1 A 0
		TNT1 A 1 A_CustomMissile("PistolCasingsave",0,0,random(-80,-100),2,random(40,60))
		Stop
	}
} 

///actual casings

ACTOR PistolCasingSave: PistolCasing
{
   Scale 0.15
   States
   {
   Spawn:
	  TNT1 A 0
      C4S1 FFGGHHAABBCC 1
	  stop
	  
	 Death:
	 TNT1 A 1
	 stop
	 }
}

ACTOR RifleCasingSave: EmptyBrass
{
   Scale 0.15
   States
   {
   Spawn:
	  TNT1 A 0
      C4S3 FFGGHHAABBCC 1
	  stop
	  
	 Death:
	 TNT1 A 1
	 stop
	 }
}