// Sprites by Eriance
Actor " Machine gun " : Weapon
{
	Weapon.SelectionOrder 720
	Weapon.SlotNumber 4
    Inventory.PickupSound "weapons/pickup"
    Inventory.PickupMessage "You got the machinegun!"	
    Obituary "%o was gunned down by %k's machinegun."
	Weapon.AmmoType1 "Clip"
	Weapon.AmmoType2 "MGClip"
	Weapon.AmmoUse2 0
	Weapon.AmmoUse1 0
	Weapon.AmmoGive1 0
	Decal "BulletChip"
	+WEAPON.NOALERT
	AttackSound ""
	+INVENTORY.UNDROPPABLE
	Tag "Machine Gun"
	Weapon.BobStyle InverseSmooth
    Weapon.BobSpeed 1.9
    Weapon.BobRangeY 0.4
    Weapon.BobRangeX 0.7
	States
	{
		Spawn:
			WASG A -1
		Stop
		Ready:
			TNT1 A 0 A_GunFlash("FlashNorm", GFF_NOEXTCHANGE)
			DMGG A 1 A_WeaponReady(WRF_ALLOWRELOAD)
		Loop
		Deselect:
		    TNT1 A 0 A_TakeInventory("H_WeaponSlot4", 1)
			DMGG A 1 A_Lower
			TNT1 A 0 A_Lower
		Loop
		Select:
			TNT1 A 0 A_GiveInventory("H_WeaponSlot4", 1)
			TNT1 A 0 A_TakeInventory("DnD_WeaponID", 0x7FFFFFFF)
			TNT1 A 0 A_GiveInventory("DnD_WeaponID", DND_WEAPON_MACHINEGUN)
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_0, 5, 3 | (4 << 16))
			// compat with GL
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_1, 128)
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_2, 80)
	    SelectLoop:
			DMGG A 1 A_Raise
			TNT1 A 0 A_Raise
		Loop
		Fire:
			TNT1 A 0 A_JumpIfInventory("SpecialAmmoMode_4", AMMO_GRENADE, "FireGrenade")
			TNT1 A 0 A_JumpIfInventory("ArtemisCheck", 1, "ContinueFire")
			TNT1 A 0 A_JumpIfInventory("MGClip", 1, "ContinueFire")
		Goto Warned
		ContinueFire:
			DMGF A 2 Bright A_GunFlash("FlashNorm")
			TNT1 A 0 A_PlayWeaponSound("Weapons/MGFireSoft")
			TNT1 A 0 A_AlertMonsters
			TNT1 A 0 A_FireCustomMissile("Tracer", frandom(-3, 3), 0, 0, frandom(-3, 3))
			TNT1 A 0 A_SpawnItemEx("GunSmokeSmaller", 18 * cos(-pitch), 0, 32 * (1 + sin(-pitch)), 2, 0, 1)
			TNT1 A 0 A_GiveInventory("MGShooter", 1)
			TNT1 A 0 A_SpawnItemEx ("bulletcasing",cos(pitch)*28,4,32+(sin(-pitch)*20),0,8,random(4,10),0,0,0)
			TNT1 A 0 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,0,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			DMGF B 2 Bright A_GunFlash("FlashLower")
			TNT1 A 0 A_JumpIfInventory("ArtemisCheck", 1, "Continue2nd")
			TNT1 A 0 A_JumpIfInventory("MGClip", 1, "Continue2nd")
			DMGG B 2 A_GunFlash("FlashLower")
		Goto Warned
		Continue2nd:
			DMGF C 2 Bright A_GunFlash("FlashNorm")
			TNT1 A 0 A_PlayWeaponSound("Weapons/MGFireSoft")
			TNT1 A 0 A_AlertMonsters
			TNT1 A 0 A_GunFlash
			TNT1 A 0 A_FireCustomMissile("Tracer", Random(-3, 3), 0, 0, Random(-3, 3))
			TNT1 A 0 A_SpawnItemEx("GunSmokeSmaller", 18 * cos(-pitch), 0, 32 * (1 + sin(-pitch)), 2, 0, 1)
			TNT1 A 0 A_GiveInventory("MGShooter", 1)
			TNT1 A 0 A_SpawnItemEx ("bulletcasing",cos(pitch)*28,4,32+(sin(-pitch)*20),0,8,random(4,10),0,0,0)
			TNT1 A 0 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,0,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			DMGF D 2 Bright A_GunFlash("FlashLower")
		FireEnd:
			TNT1 A 0 A_Refire
			DMGG B 2 A_GunFlash("FlashLower")
		Goto Ready
		Warned:
			TNT1 A 0 A_JumpIfInventory("WarnTimer", 1, "NoWarn")
			TNT1 A 0 A_PlaySound("Weapons/MGWarn", 6)
			TNT1 A 0 A_GiveInventory("WarnTimer", 1)
		Reload:
			TNT1 A 0 A_JumpIfInventory("Clip", 1, "ContinueReload")
		NoWarn:
			TNT1 A 0 A_GunFlash("FlashNormLightless", GFF_NOEXTCHANGE)
			DMGG A 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
		Goto Ready
		ContinueReload:
			TNT1 A 0 A_JumpIfInventory("MGClip", 50, "Failed")
			TNT1 A 0 A_JumpIfInventory("Ability_Reloader", 1, "ReloadFaster")
			DMGG B 1 Offset(-1, 33)
			DMGG B 1 Offset(-3, 34)
			DMGG B 1 Offset(-5, 35)
			DMGG B 1 Offset(-8, 37)
			DMGG B 1 Offset(-11, 39)
			DMGG B 1 Offset(-15, 42)
			DMGG B 1 Offset(-18, 45)
			DMGG B 1 Offset(-21, 48)
			TNT1 A 0 A_PlaySound("Weapons/MGLoad", 6)
			TNT1 A 0 A_FireCustomMissile("MGClip2Drop", frandom(-12.0, 12.0), 0, 0, 0)
			DMGG B 1 Offset(-21, 50)
			DMGG B 48 Offset(-21, 51)
			TNT1 A 0 ACS_ExecuteAlways(998, 0, 0)
			DMGG B 1 Offset(-21, 51)
			DMGG B 1 Offset(-21, 43)
			DMGG B 1 Offset(-21, 49)
			DMGG B 1 Offset(-18, 47)
			DMGG B 1 Offset(-15, 45)
			DMGG B 1 Offset(-12, 43)
			DMGG B 1 Offset(-9, 41)
			DMGG B 1 Offset(-6, 38)
			DMGG B 1 Offset(-3, 36)
			DMGG B 1 Offset(-1, 33)
			DMGG A 1 Offset(0, 32)
		Goto Ready
		Failed:
			TNT1 A 0 A_GunFlash("FlashNormLightless", GFF_NOEXTCHANGE)
			DMGG A 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
		Goto Ready
		ReloadFaster:
			DMGG B 1 Offset(-1, 33)
			DMGG B 1 Offset(-3, 34)
			DMGG B 1 Offset(-5, 35)
			DMGG B 1 Offset(-8, 37)
			DMGG B 1 Offset(-11, 39)
			DMGG B 1 Offset(-15, 42)
			DMGG B 1 Offset(-18, 45)
			DMGG B 1 Offset(-21, 48)
			TNT1 A 0 A_PlaySound("Weapons/MGLoad", 6)
			TNT1 A 0 A_FireCustomMissile("MGClip2Drop", frandom(-12.0, 12.0), 0, 0, 0)
			DMGG B 1 Offset(-21, 50)
			DMGG B 24 Offset(-21, 51)
			TNT1 A 0 ACS_ExecuteAlways(998, 0, 0)
			DMGG B 1 Offset(-21, 51)
			DMGG B 1 Offset(-21, 43)
			DMGG B 1 Offset(-21, 49)
			DMGG B 1 Offset(-18, 47)
			DMGG B 1 Offset(-15, 45)
			DMGG B 1 Offset(-12, 43)
			TNT1 A 0 A_PlaySound("Weapons/MGReady", 6)
			DMGG B 1 Offset(-9, 41)
			DMGG B 1 Offset(-6, 38)
			DMGG B 1 Offset(-3, 36)
			DMGG B 1 Offset(-1, 33)
			DMGG A 1 Offset(0, 32)
		Goto Ready
		Flash:
		FlashNorm:
			TNT1 A 0 A_Light0
		FlashNormLightless:
			TNT1 A 0 A_JumpIfInventory("MGClip", 1, 2)
			MGNM A 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 2, 2)
			MGNM B 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 3, 2)
			MGNM C 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 4, 2)
			MGNM D 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 5, 2)
			MGNM E 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 6, 2)
			MGNM F 2 Bright
			Goto FlashFinish			
			TNT1 A 0 A_JumpIfInventory("MGClip", 7, 2)
			MGNM G 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 8, 2)
			MGNM H 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 9, 2)
			MGNM I 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 10, 2)
			MGNM J 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 11, 2)
			MGNM K 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 12, 2)
			MGNM L 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 13, 2)
			MGNM M 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 14, 2)
			MGNM N 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 15, 2)
			MGNM O 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 16, 2)
			MGNM P 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 17, 2)
			MGNM Q 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 18, 2)
			MGNM R 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 19, 2)
			MGNM S 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 20, 2)
			MGNM T 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 21, 2)
			MGNM U 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 22, 2)
			MGNM V 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 23, 2)
			MGNM W 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 24, 2)
			MGNM X 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 25, 2)
			MGNM Y 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 26, 2)
			MGNM Z 2 Bright
			Goto FlashFinish			
			TNT1 A 0 A_JumpIfInventory("MGClip", 27, 2)
			MGN2 A 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 28, 2)
			MGN2 B 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 29, 2)
			MGN2 C 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 30, 2)
			MGN2 D 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 31, 2)
			MGN2 E 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 32, 2)
			MGN2 F 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 33, 2)
			MGN2 G 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 34, 2)
			MGN2 H 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 35, 2)
			MGN2 I 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 36, 2)
			MGN2 J 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 37, 2)
			MGN2 K 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 38, 2)
			MGN2 L 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 39, 2)
			MGN2 M 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 40, 2)
			MGN2 N 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 41, 2)
			MGN2 O 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 42, 2)
			MGN2 P 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 43, 2)
			MGN2 Q 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 44, 2)
			MGN2 R 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 45, 2)
			MGN2 S 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 46, 2)
			MGN2 T 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 47, 2)
			MGN2 U 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 48, 2)
			MGN2 V 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 49, 2)
			MGN2 W 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 50, 2)
			MGN2 X 2 Bright
			Goto FlashFinish
			MGN2 Y 2 Bright
			
		FlashFinish:
			TNT1 A 1
			Goto LightDone
			
		FlashLower:
			TNT1 A 0 A_Light1
			TNT1 A 0 A_JumpIfInventory("MGClip", 1, 2)
			MGN3 A 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 2, 2)
			MGN3 B 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 3, 2)
			MGN3 C 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 4, 2)
			MGN3 D 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 5, 2)
			MGN3 E 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 6, 2)
			MGN3 F 2 Bright
			Goto FlashFinish			
			TNT1 A 0 A_JumpIfInventory("MGClip", 7, 2)
			MGN3 G 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 8, 2)
			MGN3 H 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 9, 2)
			MGN3 I 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 10, 2)
			MGN3 J 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 11, 2)
			MGN3 K 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 12, 2)
			MGN3 L 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 13, 2)
			MGN3 M 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 14, 2)
			MGN3 N 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 15, 2)
			MGN3 O 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 16, 2)
			MGN3 P 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 17, 2)
			MGN3 Q 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 18, 2)
			MGN3 R 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 19, 2)
			MGN3 S 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 20, 2)
			MGN3 T 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 21, 2)
			MGN3 U 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 22, 2)
			MGN3 V 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 23, 2)
			MGN3 W 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 24, 2)
			MGN3 X 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 25, 2)
			MGN3 Y 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 26, 2)
			MGN3 Z 2 Bright
			Goto FlashFinish			
			TNT1 A 0 A_JumpIfInventory("MGClip", 27, 2)
			MGN4 A 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 28, 2)
			MGN4 B 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 29, 2)
			MGN4 c 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 30, 2)
			MGN4 D 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 31, 2)
			MGN4 E 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 32, 2)
			MGN4 F 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 33, 2)
			MGN4 G 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 34, 2)
			MGN4 H 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 35, 2)
			MGN4 I 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 36, 2)
			MGN4 J 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 37, 2)
			MGN4 K 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 38, 2)
			MGN4 L 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 39, 2)
			MGN4 M 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 40, 2)
			MGN4 N 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 41, 2)
			MGN4 O 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 42, 2)
			MGN4 P 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 43, 2)
			MGN4 Q 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 44, 2)
			MGN4 R 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 45, 2)
			MGN4 S 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 46, 2)
			MGN4 T 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 47, 2)
			MGN4 U 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 48, 2)
			MGN4 V 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 49, 2)
			MGN4 W 2 Bright
			Goto FlashFinish
			TNT1 A 0 A_JumpIfInventory("MGClip", 50, 2)
			MGN4 X 2 Bright
			Goto FlashFinish
			MGN4 Y 2 Bright
			Goto FlashFinish
			
		Altfire:
			TNT1 A 0 A_GunFlash("FlashNorm", GFF_NOEXTCHANGE)
			TNT1 A 0 A_JumpIfInventory("AmmoSwitchCooldown", 1, "NoAction")
			DMGG A 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			TNT1 A 0 A_GiveInventory("AmmoSwitchCooldown", 1)
			TNT1 A 0 ACS_ExecuteAlways(DND_SPECIALAMMO_SCRIPT, 0, AMMO_TYPE_MGGRENADE, SPWEP_MG)
			DMGG A 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			TNT1 A 0 ACS_ExecuteAlways(DND_SPECIALAMMOMSG_SCRIPT, 0)
			TNT1 A 0 A_GunFlash("FlashNorm", GFF_NOEXTCHANGE)
			DMGG A 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
		Goto Ready
		NoAction:
			TNT1 A 0 A_GunFlash("FlashNorm", GFF_NOEXTCHANGE)
			DMGG A 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
		Goto Ready
		
		FireGrenade:
			DMGG A 1 Offset(0, 33) A_PlayWeaponSound("WeaponGL/Fire")
			DMGG A 1 Offset(0, 34) A_GiveInventory("GrenadeShooterGeneric", 1)
			DMGG A 2 Offset(0, 44)
			DMGG A 1 Offset(0, 41)
			DMGG A 1 Offset(0, 36)
			DMGG A 1 Offset(3, 40)
			DMGG A 1 Offset(6, 46) 
			DMGG A 1 Offset(8, 51)
			DMGG A 1 Offset(9, 54) A_PlaySound("WeaponGL/Open")
			DMGG A 1 Offset(10, 56)
			DMGG A 19 Offset(11, 58)
			DMGG A 3 Offset(13, 62) A_PlaySound("WeaponGL/In")
			DMGG A 3 Offset(11, 59)
			DMGG A 2 Offset(9, 54)
			DMGG A 3 Offset(6, 50)
			DMGG A 3 Offset(4, 45)
			DMGG A 2 Offset(3, 41) A_PlaySound("WeaponGL/Close")
			DMGG A 2 Offset(1, 36)
			DMGG A 2 Offset(0, 34)
		Goto Ready
	}
}

Actor WarnTimer : PowerDamage {
	powerup.duration 17
	damagefactor "normal", 1.0
}

Actor MGShooter : DND_Activator {
	States {
		Pickup:
			TNT1 A 0 A_GiveInventory("DnD_UsedNonSpecial", 1)
			TNT1 A 0 A_JumpIfInventory("ArtemisCheck", 1, "NoTake")
			TNT1 A 0 A_TakeInventory("MGClip", 1)
		NoTake:
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 A 0 A_FireBullets(2.4, 1.6, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_BALLISTIC), "NewBulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			Stop
		Full:
			TNT1 A 0 A_FireBullets(2.4, 1.6, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_BALLISTIC), "NewBulletPuff_FullDMG", FBF_NORANDOM | FBF_USEAMMO)
			Stop
	}
}

// Sprites from Redfaction + edits from Geoffrey and IvanDobrovski
Actor "Upgraded Machine Gun" : Chaingun
{
	Weapon.SelectionOrder 720
	Weapon.SlotNumber 4
    Inventory.PickupSound "weapons/pickup"
    Inventory.PickupMessage "You got the heavy machinegun!"	
    Obituary "%o was gunned down by %k's machinegun."
	Weapon.AmmoType1 "Clip"
	Weapon.AmmoType2 "MGClip2"
	Weapon.AmmoUse2 0
	Weapon.AmmoUse1 0
	Weapon.AmmoGive1 0
	Decal "BulletChip"
	+WEAPON.NOALERT
	AttackSound ""
	+INVENTORY.UNDROPPABLE
	Tag "Heavy Machine Gun"
	Weapon.BobStyle InverseSmooth
	Weapon.BobSpeed 2.0
	Weapon.BobRangeY 0.4
	Weapon.BobRangeX 0.7
	States
	{
		Spawn:
			WSG2 A -1
		Stop
		Ready:
			TNT1 A 0 A_JumpIfInventory("WeaponZoom", 1, "ZoomReady")
			SMG2 A 1 A_WeaponReady(WRF_ALLOWRELOAD)
		Loop
		ZoomReady:
			SMG2 F 1 A_WeaponReady(WRF_ALLOWRELOAD)
		Goto Ready
		Deselect:
			TNT1 A 0 A_TakeInventory("WeaponZoom", 1)
			TNT1 A 0 A_ZoomFactor(1.0, ZOOM_NOSCALETURNING)
			TNT1 A 0 A_TakeInventory("H_WeaponSlot4", 1)
			SMG2 A 1 A_Lower
			TNT1 A 0 A_Lower
		Loop
		Select:
			TNT1 A 0 A_GiveInventory("H_WeaponSlot4", 1)
			TNT1 A 0 A_TakeInventory("DnD_WeaponID", 0x7FFFFFFF)
			TNT1 A 0 A_GiveInventory("DnD_WeaponID", DND_WEAPON_HEAVYMACHINEGUN)
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_0, 25)
	    SelectLoop:
			SMG2 A 1 A_Raise
			TNT1 A 0 A_Raise
		Loop
		Fire:
			TNT1 A 0 A_JumpIfInventory("ArtemisCheck", 1, "FireDecide")
			TNT1 A 0 A_JumpIfInventory("MGClip2", 1, "FireDecide")
		Goto Reload
		FireDecide:
			TNT1 A 0 A_Jump(256, "Fire1", "Fire2")
		Fire1:
			SMG2 B 1 Bright A_AlertMonsters
			TNT1 A 0 A_PlayWeaponSound("weapons/mgfire2")
			TNT1 A 0 A_FireCustomMissile("Tracer", frandom(-2, 2), 0, 0, frandom(-2, 2))
			TNT1 A 0 A_SpawnItemEx("GunSmokeSmaller", 18 * cos(-pitch), 6, 32 * (1 + sin(-pitch)), 2, 0, 1)
			TNT1 A 0 A_GiveInventory("HeavyMGShooter", 1)
			TNT1 A 0 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			TNT1 A 0 A_SpawnItemEx ("bulletcasing",cos(pitch)*20,11,32+(sin(-pitch)*20),0,8,random(4,8),0,0,0)
			TNT1 A 0 Radius_Quake(1,2,0,1,0)
			SMG2 D 1 Bright
			SMG2 FG 1
		Goto FireEnd
		Fire2:
			SMG2 C 1 Bright
			TNT1 A 0 A_PlayWeaponSound("weapons/mgfire2")
			TNT1 A 0 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			TNT1 A 0 A_SpawnItemEx ("bulletcasing",cos(pitch)*20,11,32+(sin(-pitch)*20),0,8,random(4,8),0,0,0)
			TNT1 A 0 A_FireCustomMissile("Tracer", frandom(-2, 2), 0, 0, frandom(-2, 2))
			TNT1 A 0 A_SpawnItemEx("GunSmokeSmaller", 18 * cos(-pitch), 6, 32 * (1 + sin(-pitch)), 2, 0, 1)
			TNT1 A 0 A_GiveInventory("HeavyMGShooter", 1)
			TNT1 A 0 Radius_Quake(1,2,0,1,0)
			SMG2 E 1 Bright
			SMG2 FG 1
		Goto FireEnd
		FireEnd:
			TNT1 A 0 A_JumpIfInventory("WeaponZoom", 1, "SkipAuto")
			SMG2 A 1 A_Refire
			SMG2 A 2	
		Goto Ready
		SkipAuto:
			SMG2 A 3
		Goto Ready
		AltFire:
			TNT1 A 0 A_GiveInventory("DnD_UsedNonSpecial", 1)
			TNT1 A 0 A_JumpIfInventory("WeaponZoomCooldown", 1, "Failed")
			TNT1 A 0 A_GiveInventory("WeaponZoomCooldown", 1)
			TNT1 A 0 A_JumpIfInventory("WeaponZoom", 1, "RevertZoom")
		    TNT1 A 0 A_GiveInventory("WeaponZoom", 1)
			TNT1 A 0 A_PlaySound("Weapons/Scope")
			SMG2 A 2 A_ZoomFactor(2.0, ZOOM_NOSCALETURNING)
		Goto Ready
		RevertZoom:
			TNT1 A 0 A_GiveInventory("WeaponZoomCooldown", 1)
		    TNT1 A 0 A_TakeInventory("WeaponZoom", 1)
			TNT1 A 0 A_PlaySound("Weapons/Scope")
			SMG2 A 2 A_ZoomFactor(1.0, ZOOM_NOSCALETURNING)
		Goto Ready
		Reload:
			TNT1 A 0 A_JumpIfInventory("Clip", 1, "ContinueReload")
			SMG2 A 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
		Goto Ready
		ContinueReload:
			TNT1 A 0 A_JumpIfInventory("MGClip2", 60, "Failed")
			TNT1 A 0 A_JumpIfInventory("Ability_Reloader", 1, "ReloadFaster")
			SMG2 HIJKLMN 1
			TNT1 A 0 A_PlaySound("weapons/mg2clipout")
			TNT1 A 0 A_FireCustomMissile("MGClip2Drop", frandom(-12.0, 12.0), 0, 0, 0)
			SMG2 O 16
			SMG2 PQR 2
			TNT1 A 0 ACS_ExecuteAlways(998, 0, 2)
			TNT1 A 0 A_PlaySound("weapons/mg2clipin")
			SMG2 STU 2
			SMG2 VWXYZ 1
			TNT1 A 0 A_PlaySound("weapons/mg2ready")
			SMG2 A 4
		Goto Ready
		Failed:
			SMG2 A 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
		Goto Ready
		
		ReloadFaster:
			TNT1 A 0 A_JumpIfInventory("MGClip2", 60, "Failed")
			SMG2 HJLN 1
			TNT1 A 0 A_PlaySound("weapons/mg2clipout")
			TNT1 A 0 A_FireCustomMissile("MGClip2Drop", frandom(-12.0, 12.0), 0, 0, 0)
			SMG2 O 8
			SMG2 PQR 1
			TNT1 A 0 ACS_ExecuteAlways(998, 0, 2)
			TNT1 A 0 A_PlaySound("weapons/mg2clipin")
			SMG2 STU 1
			SMG2 VXZ 1
			TNT1 A 0 A_PlaySound("weapons/mg2ready")
			SMG2 A 4
		Goto Ready
		
		Flash:
		  TNT1 A 4 A_Light1
		  TNT1 A 3 A_Light2
		  TNT1 A 0 A_Light0
		  stop
	}
}

Actor HeavyMGShooter : DND_Activator {
	states {
		Use:
			TNT1 A 0 A_GiveInventory("DnD_UsedNonSpecial", 1)
			TNT1 A 0 A_JumpIfInventory("ArtemisCheck", 1, "NoTake")
			TNT1 A 0 A_TakeInventory("MGClip2", 1)
		NoTake:
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 A 0 A_JumpIfInventory("WeaponZoom", 1, "ZoomFire")
			TNT1 A 0 A_FireBullets(4.0, 2.0, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_BALLISTIC), "NewBulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			Stop
		Full:
			TNT1 A 0 A_JumpIfInventory("WeaponZoom", 1, "ZoomFull")
			TNT1 A 0 A_FireBullets(4.0, 2.0, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_BALLISTIC), "NewBulletPuff_FullDMG", FBF_NORANDOM | FBF_USEAMMO)
			Stop
		ZoomFire:
			TNT1 A 0 A_FireBullets(1.6, 0.8, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_BALLISTIC), "NewBulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			Stop
		ZoomFull:
			TNT1 A 0 A_FireBullets(1.6, 0.8, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_BALLISTIC), "NewBulletPuff_FullDMG", FBF_NORANDOM | FBF_USEAMMO)
			Stop
	}
}

Actor "Upgraded Machine Gun2" : Weapon {
   	Weapon.SelectionOrder 450
   	Weapon.AmmoType1 "Clip"
   	Weapon.AmmoUse1 0
	Weapon.AmmoGive1 0
	Weapon.AmmoType2 "MGClip3"
	Weapon.AmmoUse2 0
	Weapon.AmmoGive2 0
   	Weapon.Kickback 240
	Inventory.PickupMessage " "
	Weapon.SlotNumber 4
	Scale 0.8
	Tag "Lead Spitter"
	Weapon.BobStyle InverseSmooth
    Weapon.BobSpeed 2.0
    Weapon.BobRangeY 0.4
    Weapon.BobRangeX 0.8
	+INVENTORY.UNDROPPABLE
   	+AMMO_OPTIONAL
   	States
   	{
	Spawn:
		QWOP A -1
		Stop
  	Ready:
		TNT1 A 0 A_GiveInventory("LeadSoundChecker", 1)
	ReadyLoop:
      	QUAG A 1 A_WeaponReady(WRF_ALLOWRELOAD)
		Loop
   	Deselect:
		QUAH A 0 A_StopSoundEx("Weapon")
		TNT1 A 0 A_TakeInventory("DnD_UsingEnergy", 1)
		TNT1 A 0 A_TakeInventory("H_WeaponSlot4", 1)
      	QUAG A 1 A_Lower
		TNT1 A 0 A_Lower
      	Loop
	Select:
		TNT1 A 0 A_GiveInventory("H_WeaponSlot4", 1)
		TNT1 A 0 A_GiveInventory("DnD_UsingEnergy", 1)
		TNT1 A 0 A_TakeInventory("DnD_WeaponID", 0x7FFFFFFF)
		TNT1 A 0 A_GiveInventory("DnD_WeaponID", DND_WEAPON_LEADSPITTER)
		TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_0, 18)
	SelectLoop:
      	QUAG A 1 A_Raise
		TNT1 A 0 A_Raise
      	Loop
	Fire:
		TNT1 A 0 A_JumpIfInventory("ArtemisCheck", 1, "ContinueFire")
		QUAG A 0 A_JumpIfInventory("MGClip3", 1, "ContinueFire")
	Goto Reload
	ContinueFire:
		QUAG A 0 A_PlaySoundEx("Leadspitter/fireloop","Weapon",1)
		TNT1 A 0 A_GiveInventory("LeadTimer", 1)
		TNT1 A 0 A_SpawnItemEx ("leadspittercasing",cos(pitch)*20,11,32+(sin(-pitch)*20),0,8,random(4,8),0,0,0)
		TNT1 A 0 A_SpawnItemEx ("PlasmaSmoke",cos(-pitch)*20, 4,37+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
		TNT1 AA 0 A_FireCustomMissile("LeadSpitterTracer", frandom(-5, 5), 0, 0, frandom(-4, 4))
		TNT1 A 0 A_JumpIfInventory("LeadAnim", 1, "OtherAnim")
		QUAF A 1 BRIGHT A_GiveInventory("LeadShooter", 1)
		TNT1 A 0 A_SpawnItemEx ("leadspittercasing",cos(pitch)*20,11,32+(sin(-pitch)*20),0,8,random(4,8),0,0,0)
		TNT1 A 0 A_SpawnItemEx ("PlasmaSmoke",cos(-pitch)*20, 4,37+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
		TNT1 AA 0 A_FireCustomMissile("LeadSpitterTracer", frandom(-5, 5), 0, 0, frandom(-4, 4))
		QUAF B 1 BRIGHT A_GiveInventory("LeadShooter", 1)
		TNT1 A 0 A_GiveInventory("LeadAnim", 1)
	AnimFinish:
		TNT1 A 0 A_Recoil(0.35)
		TNT1 A 0 A_SetPitch(pitch - 0.8)
		QUAG B 2
		QUAG A 0 A_Refire
		QUAG A 0 A_PlaySoundEx("Leadspitter/firetail","Weapon",0)
		Goto Ready
	OtherAnim:
		QUAF C 1 BRIGHT A_GiveInventory("LeadShooter", 1)
		TNT1 A 0 A_SpawnItemEx ("leadspittercasing",cos(pitch)*20,11,32+(sin(-pitch)*20),0,8,random(4,8),0,0,0)
		TNT1 A 0 A_SpawnItemEx ("PlasmaSmoke",cos(-pitch)*20, 4,37+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
		TNT1 AA 0 A_FireCustomMissile("LeadSpitterTracer", frandom(-5, 5), 0, 0, frandom(-4, 4))
		QUAF D 1 BRIGHT A_GiveInventory("LeadShooter", 1)
		TNT1 A 0 A_TakeInventory("LeadAnim", 1)
	Goto AnimFinish
	Dryfire:
		QUAG B 0 A_StopSoundEx("Weapon")
		QUAG B 0 A_PlaySoundEx("Leadspitter/dryfire","SoundSlot5")
		QUAG BAAA 3
	Reload:
		QUAR A 0 A_JumpIfInventory("MGClip3", 0, "NoReload")
		QUAR A 0 A_JumpIfInventory("Clip", 1, "ContinueReload")
	NoReload:
		QUAR A 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
		Goto Ready
	ContinueReload:
		TNT1 A 0 A_GiveInventory("LeadSoundChecker", 1)
		QUAR A 1 A_PlaySoundEx("Leadspitter/burst","SoundSlot5")
		TNT1 A 0 A_JumpIfInventory("Ability_Reloader", 1, "DoReloadFaster")
		QUAR BC 1
		QUAR D 10
		QUAR EFGH 2
		QUAR I 2 A_PlayWeaponSound("Leadspitter/eject")
		QUAR JKLMNOPQ 2
		QUAR R 25
		QUAR QPON 2
	ReloadWork:
		QUAR M 0 A_TakeInventory("Clip", 1)
		QUAR M 0 A_GiveInventory("MGClip3", 1)
		QUAR M 0 A_JumpIfInventory("MGClip3", 0, "ReloadFinish")
		QUAR M 0 A_JumpIfInventory("Clip", 1,"ReloadWork")
	ReloadFinish:
		QUAR M 3 A_PlayWeaponSound("Leadspitter/reload")
		QUAR LKJIHGFEDBCA 3
		Goto Ready
	DoReloadFaster:
		QUAR B 1
		QUAR D 5
		QUAR EFGH 1
		QUAR I 1 A_PlayWeaponSound("Leadspitter/eject")
		QUAR JKLMNOPQ 1
		QUAR R 12
		QUAR QPON 1
	ReloadWorkFast:
		QUAR M 0 A_TakeInventory("Clip", 1)
		QUAR M 0 A_GiveInventory("MGClip3", 1)
		QUAR M 0 A_JumpIfInventory("MGClip3", 0, "ReloadFinishFast")
		QUAR M 0 A_JumpIfInventory("Clip", 1,"ReloadWorkFast")
	ReloadFinishFast:
		QUAR M 2 A_PlayWeaponSound("Leadspitter/reload")
		QUAR LKJIHGFEDBCA 2
		Goto Ready
   	}
}

Actor LeadAnim : DnD_Boolean { }

Actor LeadTimer : PowerDamage {
	powerup.duration 40
	damagefactor "Normal", 1.0
}

Actor LeadSoundChecker : DND_Activator {
	States {
		Pickup:
			TNT1 A 0 A_JumpIFInventory("LeadTimer", 1, "StopSound")
		Stop
		StopSound:
			TNT1 A 0 A_PlaySoundEx("Leadspitter/firetail","Weapon",0)
		Stop
	}
}

Actor LeadShooter : DND_Activator {
	states {
		Use:
			TNT1 A 0 A_GiveInventory("DnD_UsedNonSpecial", 1)
			TNT1 A 0 A_JumpIfInventory("ArtemisCheck", 1, "NoTake")
			TNT1 A 0 A_TakeInventory("MGClip3", 1)
		NoTake:
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 A 0 A_FireBullets(6.4, 4.8, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY), "LeadBulletPuff", FBF_NORANDOM)
			TNT1 A 0 A_FireBullets(6.4, 4.8, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY), "LeadBulletPuff", FBF_NORANDOM)
		Stop
		Full:
			TNT1 A 0 A_FireBullets(6.4, 4.8, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY), "LeadBulletPuff_FullDMG", FBF_NORANDOM)
			TNT1 A 0 A_FireBullets(6.4, 4.8, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY), "LeadBulletPuff_FullDMG", FBF_NORANDOM)
		Stop
	}
}

Actor "Upgraded Machine Gun3" : Weapon {
	Weapon.UpSound ""
	Weapon.AmmoType "DSealAmmo"
	Weapon.AmmoUse 1
	Weapon.SlotNumber 4
	Obituary "%o was sealed away by %k."
	Decal ""
	Tag "Demon Sealer"
	Weapon.BobStyle InverseSmooth
    Weapon.BobSpeed 1.8
    Weapon.BobRangeY 0.5
    Weapon.BobRangeX 0.7
	States {
		Ready:
			TNT1 A 0 A_JumpIfInventory ("DSealAmmo", 1, "ReadyAmmo")
		ReadyNoAmmo:
			JPLA A 1 A_WeaponReady
			TNT1 A 0 A_JumpIfInventory ("DSealAmmo", 1, "LoadAmmo")
		Goto ReadyNoAmmo
		LoadAmmo:
			TNT1 A 0 A_PlaySound("jpcpplasmarifle/idle", 7, 0.3, 1, 1.4)
			JPLA BC 1
		Goto Ready
		ReadyAmmo:
			TNT1 A 0 A_PlaySound("jpcpplasmarifle/idle", 7, 0.3, 1, 1.4)
		ReadyAmmoLoop:
			JPLA C 1 A_WeaponReady
		Loop

		Select:
			TNT1 A 0 A_GiveInventory("P_RedFire", 1)
			TNT1 A 0 A_GiveInventory("H_WeaponSlot4", 1)
			TNT1 A 0 A_TakeInventory("DnD_WeaponID", 0x7FFFFFFF)
			TNT1 A 0 A_GiveInventory("DnD_WeaponID", DND_WEAPON_DEMONSEALER)
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_0, 15)
			TNT1 A 0 A_JumpIfInventory ("DSealAmmo", 1, "SelectAmmo")
		SelectLoop:
			JPLA A 1 A_Raise
			"####" "#" 0 A_Raise
		Loop
		SelectAmmo:
			JPLA C 1 A_Raise
			"####" "#" 0 A_Raise
		Loop
		Deselect:
			TNT1 A 0 A_TakeInventory("P_RedFire", 1)
			TNT1 A 0 A_StopSound(7)
			TNT1 A 0 A_JumpIfInventory ("DSealAmmo", 1, "DeselectAmmo")
		DeselectLoop:
			JPLA A 1 A_Lower
			"####" "#" 0 A_Lower
		Loop
		DeselectAmmo:
			JPLA C 1 A_Lower
			"####" "#" 0 A_Lower
		Loop

		Dryfire:
			JPLA A 6 A_PlaySound("weapons/dryfire1", 5, 1, 0, 1.25)
		Goto Ready

		Fire:
			TNT1 A 0 A_JumpIfInventory ("DSealAmmo", 1, 1)
		Goto Dryfire
			TNT1 A 0 A_GunFlash
			TNT1 A 0 A_PlaySound ("jpcpplasmarifle/fire", CHAN_WEAPON, 1, 0, 0.8)
			TNT1 A 0 A_GiveInventory("DemonSealShooter1", 1)
		FireDone:
			TNT1 A 0 A_JumpIfInventory ("DSealAmmo", 1, 2)
			TNT1 A 0 A_StopSound(7) // Doesn't hum if there's no amulets loaded in it
			JPLA D 1 Bright A_SetPitch(pitch - 0.1)
			TNT1 A 0 A_Jump (256, "FireAnimation1", "FireAnimation2")
		FireAnimation1:
			JPLA E 1 Bright A_SetPitch(pitch + 0.06)
			JPLA F 1 Bright A_SetPitch(pitch + 0.03)
			JPLA G 1 Bright A_SetPitch(pitch + 0.01)
		Goto FireEnd
		FireAnimation2:
			JPLA H 1 Bright A_SetPitch(pitch + 0.06)
			JPLA I 1 Bright A_SetPitch(pitch + 0.03)
			JPLA J 1 Bright A_SetPitch(pitch + 0.01)
		Goto FireEnd
		FireEnd:
			TNT1 A 0 A_JumpIfInventory ("DSealAmmo", 1, 1)
		Goto Ready
			JPLA ABC 1
			JPLA CCCCCCCCCC 1 A_Refire
		Goto Ready

		Flash:
			TNT1 A 1 A_Light2
			TNT1 A 1 A_Light1
			TNT1 A 0 A_Light0
		Goto LightDone
	}
}

Actor DemonSealCard {
	Radius 6
	Height 6
	Speed 48
	Damage (ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_OCCULT, DND_USETARGET))
	DamageType "Magic"
	+THRUSPECIES
	+FORCEXYBILLBOARD
	+BLOODLESSIMPACT
	+EXPLODEONWATER
	+HITTRACER
	Projectile
	RenderStyle Translucent
	Alpha 1.0
	Scale 0.6
	Species "Player"
	States {
		Spawn:
			OFUD A 1 Bright Light("FDOfudaGlow") A_SpawnItemEx("DemonSealTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
		Loop
		Death:
			TNT1 A 0 A_SetScale (1.0)
			TNT1 A 0 A_Jump (256, 1,2,3)
			TNT1 AAAA 0 
			TNT1 A 0 A_Jump (256, 1,2,3)
			TNT1 AAAAAAAAA 0 
			TNT1 A 0 A_Jump (256, 1,2,3)
			TNT1 AAAAAAAAAAA 0 
			TNT1 A 0 A_Jump (256, 1,2,3)
			TNT1 AAAAAA 0
			TNT1 A 0 A_Jump (256, "DeathCheck")
		Goto DeathCheck
		DeathCheck:
			TNT1 A 0 A_CheckFlag ("ISMONSTER", "TracerApplication", AAPTR_TRACER)
		Goto DeathAnimation
		TracerApplication:
			TNT1 A 0 A_GiveInventory ("DemonSealEffectChecker", 1, AAPTR_TRACER)
			TNT1 A 0 A_GiveInventory("DemonSealDebuffGiver", 1, AAPTR_TRACER)
			TNT1 A 0 A_SpawnItemEx("DemonSealImpactFX", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
		Goto CheckForOrder66

		DeathAnimation:
			TNT1 A 0 A_SpawnItemEx("RedParticleSpawner3")
			TNT1 A 0 A_SpawnItemEx("DemonSealImpactFX", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
		Stop

		CheckForOrder66:
			TNT1 AAA 1 A_JumpIfInventory ("DemonSealEffectSuccess", 1, "SEAL", AAPTR_TRACER)
		Stop
		SEAL:
			TNT1 A 5 A_CustomMissile ("DemonSealingDamage", 0,0, 0, CMF_AIMDIRECTION | CMF_TRACKOWNER, 0)
		Stop
	}
}

Actor DemonSealCard_FullDMG : DemonSealCard {
	DamageType "MagicFull"
}

Actor DemonSealShooter1 : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 A 0 A_FireCustomMissile ("DemonSealCard")
		Stop
		Full:
			TNT1 A 0 A_FireCustomMissile ("DemonSealCard_FullDMG")
		Stop
	}
}

actor DemonSealEffectChecker : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_JumpIf(((health * 1.0) / (ACS_ExecuteWithResult(961, 7) * 1.0)) > 0.1, "NoEffect")
			TNT1 A 0 A_GiveInventory ("DemonSealEffectSuccess", 1)
		Stop
		NoEffect:
			TNT1 A 0
		Stop
	}
}

Actor DemonSealEffectSuccess : PowerProtection {
	damagefactor "normal", 1.0
	Powerup.Duration 15
}

ACTOR DemonSealingDamage {
	Radius 6
	Height 6
	Speed 60
	Damage (0x3FFFFFFF)
	DamageType "MagicSealing"
	+THRUSPECIES
	+NODAMAGETHRUST
	+BLOODLESSIMPACT
	+FORCEXYBILLBOARD
	+EXPLODEONWATER
	+HITTRACER
	+NOEXTREMEDEATH
	Projectile
	RenderStyle Add
	Alpha 1.0
	Scale 1.0
	Species "Player"
	States {
		Spawn:
			TNT1 A 3
		Stop
		Death:
			TNT1 A 1
		Stop
	}
}

actor DemonSealTrail {
    Scale 0.6
    RenderStyle Add
    Alpha 0.65
    +FORCEXYBILLBOARD
    +NOINTERACTION
	+CLIENTSIDEONLY
    States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
			OFUD BCDEFG 1 A_FadeTo (0, 0.08, 1)
        Stop
    }
}

actor DemonSealImpactFX : DemonSealTrail {
    Alpha 0.95
    States {
		Spawn:
			TNT1 A 0 NoDelay A_PlaySound ("jpcpplasmarifle/hit", CHAN_AUTO, 0.5, 0, 1.2)
			OFUD HIJK 3 Bright
			OFUD LM 3
		Stop
    }
}

actor DemonSealKanji : DemonSealTrail {
    Scale 0.8
    Alpha 0.9
    States {
		Spawn:
			KANJ ABCABCABC 3 Bright
		EndLoop:
			TNT1 A 0 A_FadeTo (0, 0.08, 1)
			KANJ A 1 Bright A_SetScale (scalex * 0.90, scaley * 0.99)
			TNT1 A 0 A_FadeTo (0, 0.08, 1)
			KANJ A 1 Bright A_SetScale (scalex * 0.90, scaley * 0.99)
			TNT1 A 0 A_FadeTo (0, 0.08, 1)
			KANJ A 1 Bright A_SetScale (scalex * 0.90, scaley * 0.99)
			TNT1 A 0 A_FadeTo (0, 0.08, 1)
			KANJ B 1 Bright A_SetScale (scalex * 0.90, scaley * 0.99)
			TNT1 A 0 A_FadeTo (0, 0.08, 1)
			KANJ B 1 Bright A_SetScale (scalex * 0.90, scaley * 0.99)
			TNT1 A 0 A_FadeTo (0, 0.08, 1)
			KANJ B 1 Bright A_SetScale (scalex * 0.90, scaley * 0.99)
			TNT1 A 0 A_FadeTo (0, 0.08, 1)
			KANJ C 1 Bright A_SetScale (scalex * 0.90, scaley * 0.99)
			TNT1 A 0 A_FadeTo (0, 0.08, 1)
			KANJ C 1 Bright A_SetScale (scalex * 0.90, scaley * 0.99)
			TNT1 A 0 A_FadeTo (0, 0.08, 1)
			KANJ C 1 Bright A_SetScale (scalex * 0.90, scaley * 0.99)
		Loop
    }
}

actor DemonSealWhoosh {
    Scale 1.3
	Alpha 0.99
	+CLIENTSIDEONLY
	+NOINTERACTION
    States {
		Spawn:
		SpawnLoop:
			TNT1 A 0 A_FadeTo (0, 0.05, 1)
			TNT1 A 0 A_SpawnItemEx("RedMagicSpark", 0, 0, height / 2 + frandom(-16.0, 16.0), frandom(-2.4, 2.4), frandom(-2.4, 2.4), frandom(-1.2, 2.4), 0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_JumpIf (alpha <= 0.2, "GlowLevel4")
			TNT1 A 0 A_JumpIf (alpha <= 0.4, "GlowLevel3")
			TNT1 A 0 A_JumpIf (alpha <= 0.6, "GlowLevel2")
			TNT1 A 0 A_JumpIf (alpha <= 0.8, "GlowLevel1")
		GlowLevel0:
			OGLP C 1 Bright Light("FDOfudaRedFlash0") A_SetScale (scalex * frandom(0.92,0.95))
		Goto SpawnLoop
		GlowLevel1:
			OGLP C 1 Bright Light("FDOfudaRedFlash1") A_SetScale (scalex * frandom(0.92,0.95))
		Goto SpawnLoop
		GlowLevel2:
			OGLP C 1 Bright Light("FDOfudaRedFlash2") A_SetScale (scalex * frandom(0.92,0.95))
		Goto SpawnLoop
		GlowLevel3:
			OGLP C 1 Bright Light("FDOfudaRedFlash3") A_SetScale (scalex * frandom(0.92,0.95))
		Goto SpawnLoop
		GlowLevel4:
			OGLP C 1 Bright Light("FDOfudaRedFlash4") A_SetScale (scalex * frandom(0.92,0.95))
		Goto SpawnLoop
    }
}

actor DemonSealWhoosh2 : DemonSealWhoosh {
    Scale 1.0
    States {
		Spawn:
			TNT1 A 37
		SpawnLoop:
			TNT1 A 0 A_FadeTo (0, 0.09, 1)
			TNT1 A 0 A_SpawnItemEx("BlueMagicSpark", 0, 0, height / 2 + frandom(-16.0, 16.0), frandom(-2.4, 2.4), frandom(-2.4, 2.4), frandom(-1.2, 2.4), 0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_JumpIf (alpha <= 0.2, "GlowLevel4")
			TNT1 A 0 A_JumpIf (alpha <= 0.4, "GlowLevel3")
			TNT1 A 0 A_JumpIf (alpha <= 0.6, "GlowLevel2")
			TNT1 A 0 A_JumpIf (alpha <= 0.8, "GlowLevel1")
		GlowLevel0:
			OGLP D 1 Bright Light("FDOfudaBlueGlow0") A_SetScale (scalex * frandom(0.82,0.85))
		Goto SpawnLoop
		GlowLevel1:
			OGLP D 1 Bright Light("FDOfudaBlueGlow1") A_SetScale (scalex * frandom(0.82,0.85))
		Goto SpawnLoop
		GlowLevel2:
			OGLP D 1 Bright Light("FDOfudaBlueGlow2") A_SetScale (scalex * frandom(0.82,0.85))
		Goto SpawnLoop
		GlowLevel3:
			OGLP D 1 Bright Light("FDOfudaBlueGlow3") A_SetScale (scalex * frandom(0.82,0.85))
		Goto SpawnLoop
		GlowLevel4:
			OGLP D 1 Bright Light("FDOfudaBlueGlow4") A_SetScale (scalex * frandom(0.82,0.85))
		Goto SpawnLoop
    }
}

actor SealedDemonFX {
    Scale 0.6
    RenderStyle Translucent
    Alpha 1.0
	Mass 0x7FFFFFFF
	Gravity 0.2
	+CLIENTSIDEONLY
    States {
		Spawn:
			OFUD N 1 Light("FDOfudaSoftGlow")
		MonsterUnsealed:
			TNT1 A 0 A_Jump (256, 1,2,3)
			TNT1 AAAA 0 
			TNT1 A 0 A_Jump (256, 1,2,3)
			TNT1 AAAAAAAAA 0 
			TNT1 A 0 A_Jump (256, 1,2,3)
			TNT1 AAAAAAAAAAA 0 
			TNT1 A 0 A_Jump (256, 1,2,3)
			TNT1 AAAAAA 0 
		MonsterUnsealedParticlesDone:
			TNT1 A 0
        Stop
    }
}

Actor DemonSealDebuffGiver : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_JumpIfHealthLower(1, "Nothing")
			TNT1 A 0 A_CheckFlag("INVULNERABLE", "Nothing")
			TNT1 A 0 A_CheckFlag("FRIENDLY", "Nothing")
			TNT1 A 0 ACS_NamedExecuteAlways("DND Demon Seal FX")
		Stop
		Nothing:
			TNT1 A 0
		Stop
	}
}

actor DemonSealDebuffFXSpawner {
	+NOINTERACTION
	+CLIENTSIDEONLY
    States {
		Spawn:
			TNT1 A 0 NoDelay A_SpawnItemEx("DemonSealVFX", frandom(-20.0,20.0),frandom(-20.0,20.0),frandom(0.0,50.0), 0,0,0, 0, SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItemEx("DemonSealDebuffParticle", frandom(-42.0, 42.0),frandom(-42.0,42.0),frandom(40.0,68.0), 0,0,-2, 0, SXF_NOCHECKPOSITION)
			TNT1 A 1 Light("FDNeutronRedGlow")
		Stop
    }
}

Actor DemonSealResistDebuff : PowerProtection {
	DamageFactor "Normal", 1.5
	Powerup.Duration -6
}

Actor DemonSealDamageDebuff : PowerDamage {
	DamageFactor "Normal", 0.5
	Powerup.Duration -6
}

actor DemonSealVFX {
    Scale 0.2
    RenderStyle Add
    Alpha 0.85
    +FORCEXYBILLBOARD
    +NOINTERACTION
	+CLIENTSIDEONLY
    States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
			JDBF B 1 A_FadeTo (0, 0.13, 1)
        Wait
    }
}

actor DemonSealDebuffParticle {
    Scale 0.3
    RenderStyle Add
    Alpha 0.85
    +FORCEXYBILLBOARD
	+NOGRAVITY
	+THRUACTORS
    +NOINTERACTION
	+CLIENTSIDEONLY
    States {
		Spawn:
			TNT1 A 0
			JDBF A 1 Bright Light("FDDebuffSmallRedGlow") A_FadeTo (0, 0.03, 1)
		Wait
    }
}

// Sprites / most of decorate by DoomNukem
actor " Minigun " : Chaingun {
	Weapon.AmmoUse 1
	Weapon.AmmoGive 40
	Weapon.AmmoType "Clip"
	Weapon.SlotNumber 4
	Weapon.SelectionOrder 775
	Weapon.Kickback 125
	Inventory.PickupSound "misc/w_pkup"
	Inventory.PickupMessage "You got the chaingun!"
	Obituary "%o didn't quite make through %k's Minigun bullet storm."
	+NOALERT
	+NOAUTOAIM
	Tag "Minigun"
	Scale 1.1
	Weapon.BobStyle InverseSmooth
    Weapon.BobSpeed 1.4
    Weapon.BobRangeY 0.5
    Weapon.BobRangeX 1.1
	States {
		Ready:
		    TNT1 A 0
			TNT1 A 0 A_StopSound(1)
			TNT1 A 0 A_StopSound(5)
			TNT1 A 0 ACS_ExecuteAlways(920, 0, 1)
			TNT1 A 0 A_TakeInventory("MinigunFiring", 1)
		ReadyLoop:
			CHNG A 1 A_WeaponReady
		Loop
		Deselect:
			TNT1 A 0
			TNT1 A 0 A_TakeInventory("H_WeaponSlot4", 1)
			TNT1 A 0 ACS_ExecuteAlways(920, 0, 1)
			TNT1 A 0 A_TakeInventory("MinigunFiring", 1)
			TNT1 A 0 A_StopSound(1)
			TNT1 A 0 A_StopSound(5)
		DeselectLoop:
			CHNG A 1 A_Lower
			TNT1 A 0 A_Lower
		Loop
		Select:
			TNT1 A 0 A_GiveInventory("H_WeaponSlot4", 1)
			TNT1 A 0 A_TakeInventory("DnD_WeaponID", 0x7FFFFFFF)
			TNT1 A 0 A_GiveInventory("DnD_WeaponID", DND_WEAPON_MINIGUN)
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_0, 4, 4 | (7 << 16))
	    SelectLoop:
			CHNG A 1 A_Raise
			TNT1 A 0 A_Raise
		Loop
		Fire:
			TNT1 A 0 A_JumpIFInventory("MinigunSpin", 1, "ToastMcFire")
			CHNG A 0 A_PlaySound("Throttle/WindUp",5,0.8)
			TNT1 A 0 ACS_ExecuteAlways(920, 0, 2)
			TNT1 A 0 A_AlertMonsters
			CHNG ABCDEFG 1
			TNT1 A 0 A_GiveInventory("MinigunFiring", 1)
			CHNG ACEGACEGACEGACEGACEG 1
			CHNG A 0 A_JumpIfNoAmmo("NoMoreMangling")
		Goto ToastMcFire
		ToastMcFire:
			TNT1 A 0 ACS_ExecuteAlways(920, 0, 2)
			TNT1 A 0 A_TakeInventory("MinigunSpin", 1)
			CHNF A 0 A_JumpIfNoAmmo("NoMoreMangling")
			CHNF A 0 A_PlaySound("Throttle/Fire",1,0.8,1)
			CHNF A 0 A_PlaySound("Throttle/Add",5,0.9,1)
			CHNF A 0 A_Quake(3,8,0,2,"none")

			TNT1 A 0 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			TNT1 A 0 A_GiveInventory("ThrottleShooter", 1)
			CHNF A 0 A_AlertMonsters
			CHNF A 0 A_GunFlash
			CHNF A 0 A_Recoil(0.2)
			TNT1 A 0 A_SpawnItemEx ("bulletcasing",cos(pitch)*20,12,32+(sin(-pitch)*20),0,8,random(4,8),0,0,0)
			CHNF A 0 A_SetAngle(Angle-0.25)
			CHNF A 1 Bright A_SetPitch(Pitch-0.35)
			TNT1 A 0 A_GiveInventory("MinigunFiring", 1)

			CHNF A 0 A_JumpIfNoAmmo("NoMoreMangling")
			TNT1 A 0 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			TNT1 A 0 A_GiveInventory("ThrottleShooter_Ammoless", 1)
			CHNF A 0 A_Recoil(0.2)
			TNT1 A 0 A_SpawnItemEx ("bulletcasing",cos(pitch)*20,12,32+(sin(-pitch)*20),0,8,random(4,8),0,0,0)
			CHNF A 0 A_SetAngle(Angle-0.25)
			CHNF A 0 A_SetPitch(Pitch-0.35)
			CHNF B 1 Bright

			CHNF A 0 A_JumpIfNoAmmo("NoMoreMangling")
			TNT1 A 0 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			TNT1 A 0 A_GiveInventory("ThrottleShooter", 1)
			CHNF A 0 A_GunFlash
			CHNF A 0 A_Recoil(0.2)
			TNT1 A 0 A_SpawnItemEx ("bulletcasing",cos(pitch)*20,12,32+(sin(-pitch)*20),0,8,random(4,8),0,0,0)
			CHNF A 0 A_SetAngle(Angle-0.25)
			CHNF A 0 A_SetPitch(Pitch-0.35)
			CHNF C 1 Bright

			CHNF A 0 A_JumpIfNoAmmo("NoMoreMangling")
			TNT1 A 0 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			TNT1 A 0 A_GiveInventory("ThrottleShooter_Ammoless", 1)
			//CHNF A 0 A_GunFlash
			CHNF A 0 A_Recoil(0.2)
			TNT1 A 0 A_SpawnItemEx ("bulletcasing",cos(pitch)*20,12,32+(sin(-pitch)*20),0,8,random(4,8),0,0,0)
			CHNF A 0 A_SetAngle(Angle-0.25)
			CHNF A 0 A_SetPitch(Pitch-0.35)
			CHNF D 1 Bright

			CHNF A 0 A_JumpIfNoAmmo("NoMoreMangling")
			TNT1 A 0 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			TNT1 A 0 A_GiveInventory("ThrottleShooter", 1)
			CHNF A 0 A_GunFlash
			CHNF A 0 A_Recoil(0.2)
			TNT1 A 0 A_SpawnItemEx ("bulletcasing",cos(pitch)*20,12,32+(sin(-pitch)*20),0,8,random(4,8),0,0,0)
			CHNF A 0 A_SetAngle(Angle-0.25)
			CHNF A 0 A_SetPitch(Pitch-0.35)
			CHNF E 1 Bright

			CHNF A 0 A_JumpIfNoAmmo("NoMoreMangling")
			TNT1 A 0 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			TNT1 A 0 A_GiveInventory("ThrottleShooter_Ammoless", 1)
			//CHNF A 0 A_GunFlash
			CHNF A 0 A_Recoil(0.2)
			TNT1 A 0 A_SpawnItemEx ("bulletcasing",cos(pitch)*20,12,32+(sin(-pitch)*20),0,8,random(4,8),0,0,0)
			CHNF A 0 A_SetAngle(Angle-0.25)
			CHNF A 0 A_SetPitch(Pitch-0.35)
			CHNF F 1 Bright

			CHNF A 0 A_JumpIfNoAmmo("NoMoreMangling")
			TNT1 A 0 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			TNT1 A 0 A_GiveInventory("ThrottleShooter", 1)
			CHNF A 0 A_GunFlash
			CHNF A 0 A_Recoil(0.2)
			TNT1 A 0 A_SpawnItemEx ("bulletcasing",cos(pitch)*20,12,32+(sin(-pitch)*20),0,8,random(4,8),0,0,0)
			CHNF A 0 A_SetAngle(Angle-0.25)
			CHNF A 0 A_SetPitch(Pitch-0.35)
			CHNF G 1 Bright

			CHNF A 0 A_JumpIfNoAmmo("NoMoreMangling")
			TNT1 A 0 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			TNT1 A 0 A_GiveInventory("ThrottleShooter_Ammoless", 1)
			CHNF A 0 A_AlertMonsters
			//CHNF A 0 A_GunFlash
			CHNF A 0 A_Recoil(0.2)
			TNT1 A 0 A_SpawnItemEx ("bulletcasing",cos(pitch)*20,12,32+(sin(-pitch)*20),0,8,random(4,8),0,0,0)
			CHNF A 0 A_SetAngle(Angle-0.25)
			CHNF A 0 A_SetPitch(Pitch-0.35)
			CHNF H 1 Bright
			CHNG A 0 A_ReFire("ToastMcFire")
		Goto WindDownAfterFire
		NoMoreMangling:
			CHNG A 0 A_PlaySound("Throttle/Dry",1,0.8,1)
			CHNG A 0 A_StopSound(5)
			TNT1 A 0 A_AlertMonsters
			CHNG ACEGACEGACEGACEG 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			CHNG A 0 A_ReFire("ToastMcFire")
		Goto WindDown
		WindDownAfterFire:
			TNT1 A 0 ACS_ExecuteAlways(920, 0, 1)
			TNT1 A 0 A_TakeInventory("MinigunFiring", 1)
			CHNE A 0 A_StopSound(5)
			CHNE A 0 A_PlaySound("Throttle/WindDown",1,0.8)
			CHNE A 1 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			CHNE A 0 A_ReFire("ToastMcFire")
			CHNE B 1 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			CHNE A 0 A_ReFire("ToastMcFire")
			CHNE C 1 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			CHNG A 0 A_ReFire("ToastMcFire")
			CHNG G 1 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			CHNG A 0 A_ReFire("ToastMcFire")
			CHNG A 1 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			CHNG A 0 A_ReFire("ToastMcFire")
			CHNG C 1 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			CHNG A 0 A_ReFire("ToastMcFire")
			CHNG E 1 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			CHNG A 0 A_ReFire("ToastMcFire")
			CHNG G 1 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			CHNG A 0 A_ReFire("ToastMcFire")
			CHNG A 1 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			CHNG A 0 A_ReFire("ToastMcFire")
			CHNG C 1 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			CHNG A 0 A_ReFire("ToastMcFire")
			CHNG E 1 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			CHNG A 0 A_ReFire("ToastMcFire")
			CHNG G 1 A_SpawnItemEx ("chaingunsmoke",cos(-pitch)*20,2,36+(sin(-pitch)*20),cos(-pitch)*0,0,2,0,0,0)
			CHNG A 0 A_ReFire("ToastMcFire")
			CHNG ABCDEFGABCDE 1 A_ReFire("ToastMcFire")
			CHNG FFGGAABBCCCDDDEEEEFFFFGGGGAAAABBBBCCCCCDDDDDEEEEEFFFFFFGGGGGGGG 1 A_WeaponReady(WRF_NOSWITCH)
		Goto Ready
		WindDown:
			CHNG A 0 A_StopSound(5)
			TNT1 A 0 ACS_ExecuteAlways(920, 0, 1)
			TNT1 A 0 A_TakeInventory("MinigunFiring", 1)
			CHNG A 0 A_PlaySound("Throttle/WindDown",1,0.8)
			CHNG ACEGACEGACEG 1 A_ReFire("ToastMcFire")
			CHNG ABCDEFGABCDE 1 A_ReFire("Fire")
			CHNG FFGGAABBCCCDDDEEEEFFFFGGGGAAAABBBBCCCCCDDDDDEEEEEFFFFFFGGGGGGGG 1 A_WeaponReady(WRF_NOSWITCH)
		Goto Ready
		AltFire:
			TNT1 A 0 A_PlaySound("Throttle/WindUp",5,0.8)
			TNT1 A 0 ACS_ExecuteAlways(920, 0, 2)
			TNT1 A 0 A_JumpIfInventory("MinigunSpin", 1, "HackedAltfire")
			TNT1 A 0 A_AlertMonsters
			CHNG ABCDEFGACEGACEGACEGACEGACEG 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			TNT1 A 0 A_GiveInventory("MinigunFiring", 1)
			TNT1 A 0 A_GiveInventory("MinigunSpin", 1)
			TNT1 A 0 A_Refire
		Goto Ready
		HackedAltFire:
			TNT1 A 0 A_PlaySound("Throttle/Loop",5,0.8)
			TNT1 A 0 A_AlertMonsters
			CHNG ACEGACEGACEGACEGACEG 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOSECONDARY)
			TNT1 A 0 A_Refire("HackedAltFire")
			TNT1 A 0 A_StopSound(5)
			TNT1 A 0 ACS_ExecuteAlways(920, 0, 1)
			CHNG A 0 A_PlaySound("Throttle/WindDown",1,0.8)
			CHNG FFGGAABBCCCDDDEEEEFFFFGGGGAAAABBBBCCCCCDDDDDEEEEEFFFFFFGGGGGGGG 1 A_WeaponReady(WRF_NOSWITCH)
		Goto Ready
		Flash:
			TNT1 A 1 A_Light2
			TNT1 A 6 A_Light1
			TNT1 A 0 A_Light0
		Stop	
		Spawn:
			CHNG X -1
		Stop
	}
}

Actor MinigunFiring : DND_Boolean { }
Actor MinigunSpin : DND_Boolean { }

Actor ThrottleTrail
{
	+NoInteraction
	+ForceXYBillboard
	+CLIENTSIDEONLY
	Alpha 0.05
	Scale 0.0625
	RenderStyle Translucent
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_Jump(255, "SpriteA", "SpriteB", "SpriteC", "SpriteD")
		SpriteA:
			DYMI E 0 A_Jump(255, "FadeIn")
			Goto SpriteA
		SpriteB:
			DYMI F 0 A_Jump(255, "FadeIn")
			Goto SpriteB
		SpriteC:
			DYMI G 0 A_Jump(255, "FadeIn")
			Goto SpriteC
		SpriteD:
			DYMI H 0 A_Jump(255, "FadeIn")
			Goto SpriteD
		FadeIn:
			"####" "#" 1 A_FadeIn(FRandom(0.1, 0.05))
			"####" "#" 0 A_JumpIf(Alpha >= 0.25, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 A_FadeOut(FRandom(0.125,0.075))
			Loop
	}
}

Actor ThrottleShooter : DND_Activator {
	states {
		Use:
			TNT1 A 0 A_GiveInventory("DnD_UsedNonSpecial", 1)
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 A 0 A_FireBullets(10.5, 5.25, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_BALLISTIC), "NewBulletPuffMinigun", FBF_NORANDOM)
			TNT1 A 0 A_FireBullets(10.5, 5.25, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_BALLISTIC), "NewBulletPuffMinigun", FBF_NORANDOM | FBF_USEAMMO)
			TNT1 A 0 A_FireCustomMissile("Tracer",0.035*frandom(300,-300),1,6,0,0,0.035*frandom(150,-150))
			TNT1 A 0 A_FireCustomMissile("Tracer",0.035*frandom(300,-300),0,6,0,0,0.035*frandom(150,-150))
		Stop
		Full:
			TNT1 A 0 A_FireBullets(10.5, 5.25, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_BALLISTIC), "NewBulletPuff_FullDMG", FBF_NORANDOM)
			TNT1 A 0 A_FireBullets(10.5, 5.25, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_BALLISTIC), "NewBulletPuff_FullDMG", FBF_NORANDOM | FBF_USEAMMO)
			TNT1 A 0 A_FireCustomMissile("Tracer",0.035*frandom(300,-300),1,6,0,0,0.035*frandom(150,-150))
			TNT1 A 0 A_FireCustomMissile("Tracer",0.035*frandom(300,-300),0,6,0,0,0.035*frandom(150,-150))
		Stop
	}
}

Actor ThrottleShooter_Ammoless : DND_Activator {
	states {
		Use:
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 A 0 A_FireBullets(10.5, 5.25, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_BALLISTIC), "NewBulletPuffMinigun", FBF_NORANDOM)
			TNT1 A 0 A_FireBullets(10.5, 5.25, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_BALLISTIC), "NewBulletPuffMinigun", FBF_NORANDOM)
			TNT1 A 0 A_FireCustomMissile("Tracer",0.035*frandom(300,-300),0,6,0,0,0.035*frandom(150,-150))
			TNT1 A 0 A_FireCustomMissile("Tracer",0.035*frandom(300,-300),0,6,0,0,0.035*frandom(150,-150))
		Stop
		Full:
			TNT1 A 0 A_FireBullets(10.5, 5.25, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_BALLISTIC), "NewBulletPuffMinigun", FBF_NORANDOM)
			TNT1 A 0 A_FireBullets(10.5, 5.25, -1, ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_BALLISTIC), "NewBulletPuffMinigun", FBF_NORANDOM)
			TNT1 A 0 A_FireCustomMissile("Tracer",0.035*frandom(300,-300),0,6,0,0,0.035*frandom(150,-150))
			TNT1 A 0 A_FireCustomMissile("Tracer",0.035*frandom(300,-300),0,6,0,0,0.035*frandom(150,-150))
		Stop
	}
}

Actor EbonyOverheat : Inventory {
	inventory.maxamount 4
}

// Sprites by Eriance
Actor "Ebony Cannon" : Weapon {
	Weapon.SelectionOrder 600
	Weapon.SlotNumber 4
    Inventory.PickupSound "weapons/pickup"
    Inventory.PickupMessage "You got the Ebony Cannon!"	
    Obituary "%o met a grim dark future by %k's Ebony Cannon"
	Weapon.AmmoType1 "EbonyAmmo"
	Weapon.AmmoType2 "EbonyAmmoX"
	Weapon.AmmoUse2 1
	Weapon.AmmoUse1 1
	Weapon.AmmoGive1 10
	Weapon.AmmoGive2 4
	AttackSound ""
	+AMMO_OPTIONAL
	+ALT_AMMO_OPTIONAL
	+INVENTORY.UNDROPPABLE
	+NOAUTOAIM
	Weapon.BobStyle InverseSmooth
    Weapon.BobSpeed 1.8
    Weapon.BobRangeY 0.3
    Weapon.BobRangeX 0.6
	States {
		Spawn:
			WMAU Q -1
		Stop
		Ready:
			WMAU A 1 A_WeaponReady
		Loop
		Deselect:
			WMAU A 1 A_Lower
			TNT1 A 0 A_Lower
		Loop
		Select:
			TNT1 A 0 A_TakeInventory("DnD_WeaponID", 0x7FFFFFFF)
			TNT1 A 0 A_GiveInventory("DnD_WeaponID", DND_WEAPON_EBONYCANNON)
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_0, 96)
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_1, 8, 2 | (5 << 16))
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_2, 1, 4 | (8 << 16))
	    SelectLoop:
			WMAU A 1 A_Raise
			TNT1 A 0 A_Raise
		Loop
		Fire:
			TNT1 A 0 A_JumpIfInventory("EbonyAmmo", 1, "ContinueFire")
			WMAU A 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
		Goto Ready
		ContinueFire:
			TNT1 A 0 A_JumpIfInventory("EbonyOverheat", 0, "CoolOff")
			WMAU C 3 Bright A_PlaySoundEx("weapons/ebonyfire", CHAN_WEAPON)
			TNT1 A 0 A_GiveInventory("EbonyOverHeat", 1)
			TNT1 A 0 A_GunFlash
			TNT1 A 0 A_GiveInventory("EbonyShooter", 1)
			WMAU D 1 Bright
			TNT1 A 0 A_SetPitch(pitch - 5.0)
			WMAU D 1 Bright
			TNT1 A 0 A_SetPitch(pitch + 1.0)
			WMAU D 1 Bright
			TNT1 A 0 A_SetPitch(pitch + 1.0)
			WMAU E 1
			TNT1 A 0 A_SetPitch(pitch + 1.0)
			WMAU E 1
			TNT1 A 0 A_SetPitch(pitch + 1.0)
			WMAU E 1
			TNT1 A 0 A_SetPitch(pitch + 1.0)
			WMAU E 1
			WMAU F 5
			TNT1 A 0 A_Refire
		CoolOff:
			WMAU G 5 A_TakeInventory("EbonyOverHeat", 4)
			TNT1 A 0 A_PlaySound("Weapons/EbonyHiss")
			WMAU H 4
			WMAU IJK 3
		Goto Ready
		AltFire:
			TNT1 A 0 A_JumpIfInventory("EbonyAmmoX", 1, "ContinueAltFire")
			WMAU A 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
		Goto Ready
		ContinueAltFire:
			WMAU L 3 Bright A_PlaySoundEx("weapons/ebonyalt", CHAN_WEAPON)
			TNT1 A 0 A_GunFlash
			TNT1 A 0 A_GiveInventory("EbonyShooter2", 1)
			WMAU M 1 Bright
			TNT1 A 0 A_SetPitch(pitch - 8.0)
			WMAU M 1 Bright
			TNT1 A 0 A_SetPitch(pitch + 1.0)
			WMAU M 1 Bright
			TNT1 A 0 A_SetPitch(pitch + 1.0)
			WMAU N 1
			TNT1 A 0 A_SetPitch(pitch + 1.0)
			WMAU N 1 
			TNT1 A 0 A_SetPitch(pitch + 1.0)
			WMAU N 1
			TNT1 A 0 A_SetPitch(pitch + 1.0)
			WMAU N 1
			TNT1 A 0 A_SetPitch(pitch + 1.0)
			WMAU O 1
			TNT1 A 0 A_SetPitch(pitch + 1.0)
			WMAU O 1
			TNT1 A 0 A_SetPitch(pitch + 1.0)
			WMAU O 2
			WMAU PB 5
		Goto CoolOff
		Flash:
			TNT1 A 6
		Stop
	}
}

Actor EbonyExplosion1 : BaseExplosionDamage {
	DamageType "Explosives_Magic"
	Obituary "%o was blown up by %k's Ebony Cannon."
	+FORCERADIUSDMG
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_Explode(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_OCCULT, DND_USETARGET) / 2, 64, 1)
		Stop
	}	
}

Actor EbonyExplosion1_FullDMG : EbonyExplosion1 {
	DamageType "Explosives_MagicFull"
}

Actor EbonyExplosion2 : EbonyExplosion1 {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_Explode(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_OCCULT, DND_USETARGET), 64, 1)
		Stop
	}
}

Actor EbonyExplosion2_FullDMG : EbonyExplosion2 {
	DamageType "Explosives_MagicFull"
}

Actor EbonyBalls {
	PROJECTILE
	Radius 6
	Height 12
	Damage (ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_1, TALENT_OCCULT, DND_USETARGET))
	DamageType "Magic"
	Gravity 0.6
	BounceCount 4
	Speed 24
	Scale 0.6
	+MTHRUSPECIES
	-NOGRAVITY
	+FOILINVUL
	+DONTBLAST
	+CANBOUNCEWATER
	BounceType Doom
	BounceSound "weapons/ebonybounce"
	DeathSound "weapons/ebonyexplode"
	States {
		Spawn:
			EBOP ABCD 3
		Loop
		Death:
			TNT1 A 0 A_Stop
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 1)
			TNT1 A 0 A_SetTranslucent(0.7, 1)
			TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSmall", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AAAAA 0 A_CustomMissile("RocketSmokeSmall", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 AAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
			BAXP A 6 Bright
			TNT1 A 0 A_SpawnItem("EbonyExplosion1")
			BAXP BCDEF 2 Bright
		Stop
	}
}

Actor EbonyBalls_FullDMG : EbonyBalls {
	States {
		Spawn:
			EBOP ABCD 3
		Loop
		Death:
			TNT1 A 0 A_Stop
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 1)
			TNT1 A 0 A_SetTranslucent(0.7, 1)
			TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSmall", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AAAAA 0 A_CustomMissile("RocketSmokeSmall", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 AAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
			BAXP A 6 Bright
			TNT1 A 0 A_SpawnItem("EbonyExplosion1_FullDMG")
			BAXP BCDEF 2 Bright
		Stop
	}
}

Actor EbonyPellets {
	PROJECTILE
	Damage (ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_2, TALENT_OCCULT, DND_USETARGET))
	DamageType "Magic"
	Gravity 0.6
	Height 4
	Radius 2
	Speed 16
	BounceCount 4
	+DOOMBOUNCE
	+RIPPER
	+BLOODLESSIMPACT
	+PAINLESS
	+CANBOUNCEWATER
	-NOGRAVITY
	
	States {
		Spawn:
			TNT1 AA 0 ThrustThingZ(0, 8 * random(2, 4), 0, 0)
			MAPF A 3 Bright
		SpawnLoop:
			MAPF BC 2 Bright
		Loop
		Death:
			MAPF DEFGH 2
		Stop
	}
}

Actor EbonyBalls2 : EbonyBalls {
	States {
		Spawn:
			EBOP EFGH 3 Bright
		Loop
		Death:
			TNT1 A 0 A_Stop
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 1)
			TNT1 A 0 A_SetTranslucent(0.7, 1)
			TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSmall", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AAAAA 0 A_CustomMissile("RocketSmokeSmall", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 AAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
			BAXP A 6 Bright
			TNT1 AAAAA 0 A_CustomMissile("EbonyPellets", 0, 0, random(0, 360), CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_SpawnItem("EbonyExplosion2")
			BAXP BCDEF 2 Bright
		Stop		
	}
}

Actor EbonyBalls2_FullDMG : EbonyBalls2 {
	States {
		Spawn:
			EBOP EFGH 3 Bright
		Loop
		Death:
			TNT1 A 0 A_Stop
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 1)
			TNT1 A 0 A_SetTranslucent(0.7, 1)
			TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSmall", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AAAAA 0 A_CustomMissile("RocketSmokeSmall", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 AAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
			BAXP A 6 Bright
			TNT1 AAAAA 0 A_CustomMissile("EbonyPellets", 0, 0, random(0, 360), CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_SpawnItem("EbonyExplosion2_FullDMG")
			BAXP BCDEF 2 Bright
		Stop		
	}
}

Actor EbonyShooter : DnD_Activator {
	States {
		Use:
			TNT1 A 0 A_GiveInventory("DnD_UsedNonSpecial", 1)
			TNT1 A 0 A_JumpIfInventory("DnD_QuestReward_DreamingGodBonus", 1, "Full")
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 A 0 A_FireCustomMissile("EbonyBalls", 0, 1, 10, 8)
			TNT1 A 0 A_FireCustomMissile("EbonyBalls", 0, 0, -10, 8)
			TNT1 A 0 A_FireCustomMissile("EbonyBalls", 0, 0, 0, 18)
			TNT1 A 0 A_FireCustomMissile("EbonyBalls", 0, 0, 0, -2)
		Stop
		Full:
			TNT1 A 0 A_FireCustomMissile("EbonyBalls_FullDMG", 0, 1, 10, 8)
			TNT1 A 0 A_FireCustomMissile("EbonyBalls_FullDMG", 0, 0, -10, 8)
			TNT1 A 0 A_FireCustomMissile("EbonyBalls_FullDMG", 0, 0, 0, 18)
			TNT1 A 0 A_FireCustomMissile("EbonyBalls_FullDMG", 0, 0, 0, -2)
		Stop
	}
}

Actor EbonyShooter2 : DnD_Activator {
	States {
		Use:
			TNT1 A 0 A_GiveInventory("DnD_UsedNonSpecial", 1)
			TNT1 A 0 A_JumpIfInventory("DnD_QuestReward_DreamingGodBonus", 1, "Full")
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 A 0 A_FireCustomMissile("EbonyBalls2", 0, 1, 10, 8)
			TNT1 A 0 A_FireCustomMissile("EbonyBalls2", 0, 0, -10, 8)
			TNT1 A 0 A_FireCustomMissile("EbonyBalls2", 0, 0, 0, 18)
			TNT1 A 0 A_FireCustomMissile("EbonyBalls2", 0, 0, 0, -2)
		Stop
		Full:
			TNT1 A 0 A_FireCustomMissile("EbonyBalls2_FullDMG", 0, 1, 10, 8)
			TNT1 A 0 A_FireCustomMissile("EbonyBalls2_FullDMG", 0, 0, -10, 8)
			TNT1 A 0 A_FireCustomMissile("EbonyBalls2_FullDMG", 0, 0, 0, 18)
			TNT1 A 0 A_FireCustomMissile("EbonyBalls2_FullDMG", 0, 0, 0, -2)
		Stop
	}
}