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

ACTOR StuckCeiling : Inventory
{
	Inventory.MaxAmount 1
}

ACTOR StuckFloor : Inventory
{
	Inventory.MaxAmount 1
}

ACTOR StuckWall : Inventory
{
	Inventory.MaxAmount 1
}

ACTOR ThrowableC4
{
  Radius 11
  Height 8
  Speed 30
  Mass 50
  Damage 20
  -NOGRAVITY
  -FLOAT
  -NOBLOCKMAP
  -NOTELEPORT
  -LOWGRAVITY
  +MISSILE
  Obituary "$OB_MPROCKET" // "%o rode %k's rocket."
  DeathSound "type97/bounce"
  Scale 0.75
  Renderstyle Normal
  DamageType ExplosiveDamage
  Alpha 1.0
  States
  {
  Spawn:
	C4SP D 0
	C4SP D 0 ACS_ExecuteAlways(556,0,0,0,0)
	C4SP E 4
  Spawning:
    C4SP E 1 A_ScaleVelocity(0.95)
    Loop
  // Stick to walls
  Death:
	C4SP D 0 ACS_ExecuteAlways(556,0,0,0,0)
	MISL B 0
	MISL B 0 A_CheckFloor("FloorStuck")
	MISL B 0 A_CheckCeiling("CeilingStuck")
	MISL B 0 A_GiveInventory("StuckWall",1)
	MISL B 0 A_Stop
	MISL B 0 A_NoGravity
  Stuck:
	C4SP E 1
	Loop
  XDeath:
  FloorStuck:
	MISL B 0 A_GiveInventory("StuckFloor",1)
	MISL B 0 A_Stop
	MISL B 0 A_ChangeFlag("MOVEWITHSECTOR",true)
	MISL B 0 A_ChangeFlag("FLOORCLIP",true)
  NormalStuck:
	C4SP D 1
	Loop
  CeilingStuck:
	MISL B 0 A_GiveInventory("StuckCeiling",1)
	MISL B 0 A_Stop
	MISL B 0 A_NoGravity
	MISL B 0 A_ChangeFlag("MOVEWITHSECTOR",true)
	MISL B 0 A_ChangeFlag("FLOORCLIP",true)
  CSA:
	C4SP F 1
	Loop
  Detonate:
    TNT1 A 0
	TNT1 A 0 A_PlaySoundEx("c4/beep","SoundSlot6")
	TNT1 A 0 A_JumpIfInventory("StuckFloor",1,"PDFloor")
	TNT1 A 0 A_JumpIfInventory("StuckWall",1,"PDWall")
	TNT1 A 0 A_JumpIfInventory("StuckCeiling",1,"PDCeiling")
	Goto PDFloor
  PDFloor:
	C4SP D 6
	Goto ReallyDetonate
  PDCeiling:
	C4SP F 6
	Goto ReallyDetonate
  PDWall:
	C4SP E 6
	Goto ReallyDetonate
  ReallyDetonate:
    TNT1 A 0 A_AlertMonsters
    TNT1 A 0 Radius_Quake(4,12,0,16,0)
    TNT1 AA 0 A_Explode(75,170)
    TNT1 A 0 A_SpawnItemEx("C4Explosion")
    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
  XDeath:
    C4SP E 1
	C4SP E 0 A_CheckFloor("FloorStuck")
	Loop
  }
}

ACTOR "C4 Kit" : Weapon 11451
{
  Weapon.AmmoUse 0
  Weapon.AmmoGive 2
  Weapon.AmmoType "C4Primary"
  Obituary "\cJ%k \cG> \cKC4 \cG> \cJ%o"
  Inventory.Pickupmessage "You picked up the C4 kit."
  Inventory.PickupSound "m79/open"
	//$Category ZT2 - Weapons
	//$Title C4 Kit
	//$Sprite PPSHF0
  Tag "C4 Kit"
  Scale 0.75
  +WEAPON.NOAUTOFIRE
  States
  {
  Ready:
	PPSS A 0 A_JumpIfInventory("DoBlocking",1,"QuickMelee")
	PPSS A 0 A_JumpIfInventory("QuickGrenading",1,"ToGrenade")
    ZC4I A 1 A_WeaponReady
    Goto Ready
  ToGrenade:
	PPSS A 0
	Goto Fire
  QuickMelee:
	PPBL A 1
	PPBL B 0 A_PlaySoundEx("fist/swing","Weapon")
	PPBL BC 1
	PPBL D 0 A_CustomPunch (random(4,5),1,0,"BlockPuff")
	PPBL D 2
	PPBL E 4
	PPBL DCBA 2
	PPBL A 0 A_TakeInventory("DoBlocking",1)
	Goto Ready
  ToReady:
	NULL A 0
	Goto Ready
	NULL AAA 0
	NULL A 0 A_PlaySoundEx("dryfire/smg","SoundSlot6")
	Goto Ready
  Deselect:
	 ZC4S DCBA 1
     TNT1 AAAAAAAAAA 0 A_Lower
	 TNT1 A 1 A_Lower
     Goto Deselect+4
  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:
	 ZC4S ABCD 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 Goto Ready
  Fire:
	 PPFI A 0 A_JumpIfInventory("C4Primary",1,1)
	 Goto ToReady+2
	 ZC4F A 0 A_TakeInventory("QuickGrenading",1)
	 ZC4F ABCD 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZC4F E 3 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 PPBL B 0 A_PlaySoundEx("fist/swing","Weapon")
	 ZC4F EF 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 PPFI A 0 A_TakeInventory("C4Primary",1)
	 PPFI A 0 A_FireCustomMissile("ThrowableC4")
	 ZC4F GHIJKLM 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZC4F E 3 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZC4F DCBA 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 Goto Ready
  AltFire:
	 ZC4I BC 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 ZC4I D 0 ACS_ExecuteAlways(556,0,1,0,0)
	 TNT1 A 0 A_PlaySoundEx("c4/click","SoundSlot6")
	 ZC4I DCB 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	 Goto Ready
  Spawn:
    C4SP G -1
    Stop
  }
}