ACTOR DynamitePrimary : Ammo
{
  Inventory.Amount 1
  Inventory.MaxAmount 5
  Ammo.BackpackAmount 1
  Ammo.BackpackMaxAmount 1
  Inventory.Icon "ROCKA0"
  +INVENTORY.IGNORESKILL
}

ACTOR MaxFlick : Inventory
{
	Inventory.MaxAmount 2
}

ACTOR DynamiteSuicide
{
	+NOBLOCKMAP
	+NOINTERACTION
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("ShakeYourAssDouble",0,0,0)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 Radius_Quake(8,12,0,8,0)
		TNT1 AA 0 A_Explode(75,170)
		TNT1 AA 0 A_Explode(75,300)
		TNT1 A 0 A_SpawnItemEx("UltraExplosionDynamite")
		//TNT1 AAAAAAAAAA 0 A_SpawnItemEx("ImpactSpark2", random(-32,32), random(-32,32), random(-32,32), random(-5,5), random(-5,5), random(-1,5), 0, 128, 0)
		//TNT1 AAAAAAAAAA 0 A_SpawnItemEx("ImpactSpark2", random(-32,32), random(-32,32), random(-32,32), random(-5,5), random(-5,5), random(-1,5), 0, 128, 0)
		TNT1 A 20
		stop
	}
}

ACTOR FuseTimer : Ammo
{
	Inventory.MaxAmount 30
	Inventory.Amount 1
	+IGNORESKILL
}

ACTOR TNTTimer : Inventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 20
	+IGNORESKILL
}

ACTOR ThrownDynamite
{
    radius 5
  height 5
  speed 25
	mass 50
	damage (5)
	scale 0.5
	RenderStyle normal
    PROJECTILE
	-NOGRAVITY
	  +RANDOMIZE
	  +HEXENBOUNCE
	  +NOEXTREMEDEATH
	  +FORCERADIUSDMG
	  +CANBOUNCEWATER
	  -BOUNCEONACTORS
	  +ROCKETTRAIL
	  +FORCEXYBILLBOARD
	  +BLOODLESSIMPACT
	bouncetype "doomcompat"
	// bouncecount 2
	gravity 0.4
  bouncefactor 0.4
  wallbouncefactor 0.5
	damagetype "ExplosiveDamage"
	Bouncesound "type97/bounce"
	// deathsound "grenade/bounce"
   Obituary "%o was blown up by %k's frag grenade."
   States
   {
		Spawn:
		    TNT1 A 0
			TNT1 A 0 A_PlaySoundEx("dynamite/fizz","Body",true)
			TNT1 A 0 ACS_ExecuteAlways(557,0,0,0,0)
		SetTimer:
			TNT1 A 1
			TNT1 A 0 // GIVE TIMER HERE
			Goto Flying
		Flying:
			FRGR A 0 ACS_ExecuteAlways(557,0,1,0,0)
		  	PTNT AABB 1 A_SpawnItemEx("QGrenadeSmoke",0,0,0)
			FRGR A 0 ACS_ExecuteAlways(557,0,1,0,0)
			PTNT CCDD 1 A_SpawnItemEx("QGrenadeSmoke",0,0,0)
			FRGR A 0 ACS_ExecuteAlways(557,0,1,0,0)
			PTNT EEFF 1 A_SpawnItemEx("QGrenadeSmoke",0,0,0)
			FRGR A 0 ACS_ExecuteAlways(557,0,1,0,0)
			PTNT GGHH 1 A_SpawnItemEx("QGrenadeSmoke",0,0,0)
			FRGR A 0 A_ScaleVelocity(0.90)
			Loop
		Death:
			FRGG A 0 ACS_ExecuteAlways(557,0,1,0,0)
			PTNT IJK 1
			loop
		Boom:
			TNT1 A 0
			TNT1 A 0 A_StopSoundEx("Body")
			TNT1 A 0 A_AlertMonsters
			TNT1 A 0 Radius_Quake(2,12,0,8,0)
			TNT1 AA 0 A_Explode(75,170)
			TNT1 AA 0 A_Explode(75,300)
			TNT1 A 0 A_SpawnItemEx("UltraExplosionDynamite")
			//TNT1 AAAAAAAAAA 0 A_SpawnItemEx("ImpactSpark2", random(-32,32), random(-32,32), random(-32,32), random(-5,5), random(-5,5), random(-1,5), 0, 128, 0)
			//TNT1 AAAAAAAAAA 0 A_SpawnItemEx("ImpactSpark2", random(-32,32), random(-32,32), random(-32,32), random(-5,5), random(-5,5), random(-1,5), 0, 128, 0)
			TNT1 A 20
			stop
   }
}

ACTOR DyEmpty : Inventory
{
	Inventory.MaxAmount 1
}

ACTOR DynamiteFlame : Inventory { Inventory.MaxAmount 3 }

ACTOR "Dynamite" : Weapon
{
  +WEAPON.NOAUTOAIM
  Weapon.BobStyle Smooth
  Weapon.BobSpeed 2.5
  Weapon.BobRangeX 0.5
  Weapon.BobRangeY 0.3
  Obituary "\cJ%k \cG> \cKDynamite \cG> \cJ%o"
  Inventory.Pickupmessage "You picked up the dynamite."
  Inventory.PickupSound "m79/open"
	//$Category ZT2 - Weapons
	//$Title Dynamite
	//$Sprite PPSHF0
  Tag "Stick of Dynamite"
  +INVENTORY.UNDROPPABLE
  Scale 0.75
  +WEAPON.NOAUTOFIRE
  Weapon.AmmoType "DynamitePrimary"
  Weapon.AmmoUse 1
  States
  {
  Ready:
	PPSS A 0 A_JumpIfInventory("DynamitePrimary",1,1)
	Goto ReadyEmpty
	PPSS A 0 A_JumpIfInventory("DyEmpty",1,"NewStick")
	//PPSS A 0 A_JumpIfInventory("DoBlocking",1,"QuickMelee")
	//PPSS A 0 A_JumpIfInventory("QuickGrenading",1,"ToGrenade")
	PPSS A 0 A_TakeInventory("MaxFlick",4)
	ZDYN K 1 bright A_WeaponReady
	
	PPSS A 0 A_JumpIfInventory("DyEmpty",1,"NewStick")
	//PPSS A 0 A_JumpIfInventory("DoBlocking",1,"QuickMelee")
	//PPSS A 0 A_JumpIfInventory("QuickGrenading",1,"ToGrenade")
	PPSS A 0 A_TakeInventory("MaxFlick",4)
	ZDYN L 1 bright A_WeaponReady
	
	PPSS A 0 A_JumpIfInventory("DyEmpty",1,"NewStick")
	//PPSS A 0 A_JumpIfInventory("DoBlocking",1,"QuickMelee")
	//PPSS A 0 A_JumpIfInventory("QuickGrenading",1,"ToGrenade")
	PPSS A 0 A_TakeInventory("MaxFlick",4)
	ZDYN M 1 bright A_WeaponReady
	Goto Ready
	
  ReadyEmpty:
	PPSS A 0 A_GiveInventory("DyEmpty",1)
	PPSS A 0 A_JumpIfInventory("DynamitePrimary",1,"NewStick")
	//PPSS A 0 A_JumpIfInventory("DoBlocking",1,"QuickMelee")
	//PPSS A 0 A_JumpIfInventory("QuickGrenading",1,"ToGrenade")
	PPSS A 0 A_TakeInventory("MaxFlick",4)
    ZDYO A 1 bright A_WeaponReady
	
	PPSS A 0 A_GiveInventory("DyEmpty",1)
	PPSS A 0 A_JumpIfInventory("DynamitePrimary",1,"NewStick")
	//PPSS A 0 A_JumpIfInventory("DoBlocking",1,"QuickMelee")
	//PPSS A 0 A_JumpIfInventory("QuickGrenading",1,"ToGrenade")
	PPSS A 0 A_TakeInventory("MaxFlick",4)
    ZDYO B 1 bright A_WeaponReady
	
	PPSS A 0 A_GiveInventory("DyEmpty",1)
	PPSS A 0 A_JumpIfInventory("DynamitePrimary",1,"NewStick")
	//PPSS A 0 A_JumpIfInventory("DoBlocking",1,"QuickMelee")
	//PPSS A 0 A_JumpIfInventory("QuickGrenading",1,"ToGrenade")
	PPSS A 0 A_TakeInventory("MaxFlick",4)
    ZDYO C 1 bright A_WeaponReady
	Goto Ready
	
  ToReady:
	 NULL A 0
	 Goto Ready
	 NULL AAA 0
	 NULL A 0 A_PlaySoundEx("dryfire/smg","SoundSlot6")
	 Goto Ready
  Deselect:
	 ZDYN E 0 A_StopSoundEx("SoundSlot7")
	 ZDYN E 0 A_JumpIfInventory("DynamitePrimary",1,1)
	 Goto DeselectEmpty
	 ZDYN EEEE 0
	 ZDYN E 0 A_PlaySoundEx("zippo/close","SoundSlot6")
	 ZDYN E 2 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYN DCBA 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
     TNT1 AAAAAAAAAA 0 A_Lower
	 TNT1 A 1 A_Lower
     Goto Deselect+13
  DeselectEmpty:
	 ZDYP E 0 A_PlaySoundEx("zippo/close","SoundSlot6")
	 ZDYP E 2 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYP DCBA 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
     TNT1 AAAAAAAAAA 0 A_Lower
	 TNT1 A 1 A_Lower
     Goto DeselectEmpty+7
  Select:
	 TNT1 A 0 A_SetCrosshair(16)
	 TNT1 AA 0 A_Raise
	 TNT1 A 1 A_WeaponReady
	 TNT1 A 0 A_PlaySoundEx("cloth/melee","SoundSlot6")
	 Goto SelectAnim
  SelectAnim:
	 ZDYN A 0 A_JumpIfInventory("DynamitePrimary",1,1)
	 Goto SelectAnimEmpty
	 ZDYN A 0 A_TakeInventory("MaxFlick",4)
	 ZDYN ABCD 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYN D 5 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYN E 0 A_PlaySoundEx("zippo/open","SoundSlot6")
	 ZDYN E 3 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYN F 2 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 Goto FlickAttempt
  SelectAnimEmpty:
	 ZDYP A 0 A_TakeInventory("QuickGrenade",1)
	 ZDYP ABCD 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYP D 5 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYP E 0 A_PlaySoundEx("zippo/open","SoundSlot6")
	 ZDYP E 3 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYP F 2 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 Goto FlickAttemptEmpty
  FlickAttempt:
	 ZDYN A 0
	 Goto PerfectFlick
	 /*
	 ZDYN A 0 A_JumpIfInventory("MaxFlick",1,"PerfectFlick")
	 ZDYN A 0 A_GiveInventory("MaxFlick",1)
	 ZDYN F 2 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYN G 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYN E 0 A_PlaySoundEx("zippo/flick","SoundSlot6")
	 ZDYN H 4 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYN G 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYN F 2 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 Loop
	 */
  FlickAttemptEmpty:
	 ZDYP A 0
	 Goto PerfectFlickEmpty
	 /*
	 ZDYP A 0 A_JumpIfInventory("MaxFlick",1,"PerfectFlickEmpty")
	 ZDYP A 0 A_GiveInventory("MaxFlick",1)
	 ZDYP F 2 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYP G 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYP E 0 A_PlaySoundEx("zippo/flick","SoundSlot6")
	 ZDYP H 4 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYP G 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYP F 2 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 Loop
	 */
  PerfectFlick:
	 ZDYN F 2 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYN G 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYN E 0 A_PlaySoundEx("zippo/light","SoundSlot6")
	 ZDYN E 0 A_PlaySoundEx("zippo/loop","SoundSlot7",true)
	 ZDYN IJ 1 bright A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 Goto Ready
  PerfectFlickEmpty:
	 ZDYP F 2 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYP G 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYP E 0 A_PlaySoundEx("zippo/light","SoundSlot6")
	 Goto ReadyEmpty
  Fire:
	 PPFI A 0 A_TakeInventory("QuickGrenading",1)
	 ZDYN X 0 A_TakeInventory("FuseTimer",999)
	 ZDYN NO 1 bright  A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYN PQRQPQPR 1 bright A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYN S 0 A_PlaySoundEx("dynamite/fizz","Weapon",true)
	 ZDYN ST 1 bright A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 Goto FuseLit
  FuseLit:
	 ZDYN U 0 A_JumpIfInventory("FuseTimer",30,"Suicidal")
	 ZDYN U 0 A_GiveInventory("FuseTimer",2)
	 ZDYN UVW 1 bright A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYN U 0 A_ReFire("FuseLit")
	 Goto ThrowDynamite
  ThrowDynamite:
	 ZDYN XYZ 1 bright A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYO ABCAB 1 bright A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYO D 1 bright A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYO D 0 A_FireCustomMissile("ThrownDynamite")
	 Goto FinishThrow
  Suicidal:
	 ZDYN A 0
	 ZDYN A 0 A_StopSoundEx("Weapon")
	 ZDYN A 0 A_FireCustomMissile("DynamiteSuicide",0,0)
	 ZDYN A 0 A_Die("ExplosiveDamage")
	 Goto Ready
	 
  //======================================================================
  // COOK THE DYNAMITE
  //======================================================================
  FuseCheck:
	 TNT1 A 0 A_JumpIfInventory("FuseTimer",28,"Fuse15")
	 TNT1 A 0 A_JumpIfInventory("FuseTimer",26,"Fuse14")
	 TNT1 A 0 A_JumpIfInventory("FuseTimer",24,"Fuse13")
	 TNT1 A 0 A_JumpIfInventory("FuseTimer",22,"Fuse12")
	 TNT1 A 0 A_JumpIfInventory("FuseTimer",20,"Fuse11")
	 TNT1 A 0 A_JumpIfInventory("FuseTimer",18,"Fuse10")
	 TNT1 A 0 A_JumpIfInventory("FuseTimer",16,"Fuse9")
	 TNT1 A 0 A_JumpIfInventory("FuseTimer",14,"Fuse8")
	 TNT1 A 0 A_JumpIfInventory("FuseTimer",12,"Fuse7")
	 TNT1 A 0 A_JumpIfInventory("FuseTimer",10,"Fuse6")
	 TNT1 A 0 A_JumpIfInventory("FuseTimer",8,"Fuse5")
	 TNT1 A 0 A_JumpIfInventory("FuseTimer",6,"Fuse4")
	 TNT1 A 0 A_JumpIfInventory("FuseTimer",4,"Fuse3")
	 TNT1 A 0 A_JumpIfInventory("FuseTimer",2,"Fuse2")
	 Goto Fuse1
	 
  Fuse15:
	 TNT1 A 0 A_FireCustomMissile("ThrownDynamite14")
	 Goto FinishThrow
	 
  Fuse14:
	 TNT1 A 0 A_FireCustomMissile("ThrownDynamite14")
	 Goto FinishThrow
	 
  Fuse13:
	 TNT1 A 0 A_FireCustomMissile("ThrownDynamite13")
	 Goto FinishThrow
	 
  Fuse12:
	 TNT1 A 0 A_FireCustomMissile("ThrownDynamite12")
	 Goto FinishThrow
	 
  Fuse11:
	 TNT1 A 0 A_FireCustomMissile("ThrownDynamite11")
	 Goto FinishThrow
	 
  Fuse10:
	 TNT1 A 0 A_FireCustomMissile("ThrownDynamite10")
	 Goto FinishThrow
	 
  Fuse9:
	 TNT1 A 0 A_FireCustomMissile("ThrownDynamite9")
	 Goto FinishThrow
	 
  Fuse8:
	 TNT1 A 0 A_FireCustomMissile("ThrownDynamite8")
	 Goto FinishThrow
	 
  Fuse7:
	 TNT1 A 0 A_FireCustomMissile("ThrownDynamite7")
	 Goto FinishThrow
	 
  Fuse6:
	 TNT1 A 0 A_FireCustomMissile("ThrownDynamite6")
	 Goto FinishThrow
	 
  Fuse5:
	 TNT1 A 0 A_FireCustomMissile("ThrownDynamite5")
	 Goto FinishThrow
	 
  Fuse4:
	 TNT1 A 0 A_FireCustomMissile("ThrownDynamite4")
	 Goto FinishThrow
	 
  Fuse3:
	 TNT1 A 0 A_FireCustomMissile("ThrownDynamite3")
	 Goto FinishThrow
	 
  Fuse2:
	 TNT1 A 0 A_FireCustomMissile("ThrownDynamite2")
	 Goto FinishThrow
	 
  Fuse1:
	 TNT1 A 0 A_FireCustomMissile("ThrownDynamite1")
	 Goto FinishThrow
	 
  //======================================================================
  FinishThrow:
	 ZDYN A 0 A_StopSoundEx("Weapon")
	 PPBL B 0 A_PlaySoundEx("fist/swing","Weapon")
	 ZDYO EFGHIJKLM 1 bright A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYO ABC 1 bright A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZDYN X 0 A_TakeInventory("FuseTimer",999)
	 PPFI A 0 A_TakeInventory("QuickGrenading",1)
	 ZDYO C 0 A_JumpIfInventory("DynamitePrimary",1,"NewStick")
	 Goto ReadyEmpty
  NewStick:
	 ZDYO N 0 A_TakeInventory("DyEmpty",1)
	 ZDYO NOP 1 bright A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 Goto Ready
  Spawn:
    C4SP G -1
    Stop
  }
}