// Bomb pack
actor BombPack : AOWWeapon {
    Weapon.BobSpeed 1.75
    Weapon.BobRangeX 0.2
    Weapon.BobRangeY 0.4
    Weapon.BobStyle Alpha
	+WEAPON.CHEATNOTWEAPON
	Inventory.PickupMessage "Picked up the bomb pack... \cGwait what?!"
	Weapon.SelectionOrder 1
	Weapon.Kickback 0
	Weapon.AmmoType "Bomb-PackAmmo"
	Weapon.AmmoUse 1
	Weapon.AmmoGive 1
	Weapon.UpSound "terrorist/select"
	Weapon.ReadySound "terrorist/scream"
	Weapon.PreferredSkin "MarineBackpack"
	DropItem "Nothing"
	States {
	Ready:
		SBOM AAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_WeaponReady (WRF_NOSWITCH)
		SBOM A 0 A_ChangeFlag ("PICKUP", 0)
		loop
	Deselect:
		TNT1 A 0 A_Lower
		TNT1 A 1 A_Lower
		loop
	Select:
		SBOM A 1 offset (90,100)
		SBOM A 1 offset (80,89)
		SBOM A 1 offset (70,79)
		SBOM A 1 offset (60,70)
		SBOM A 1 offset (50,62)
		SBOM A 1 offset (40,55)
		SBOM A 1 offset (30,49)
		SBOM A 1 offset (20,44)
		SBOM A 1 offset (15,40)
		SBOM A 1 offset (10,37)
		SBOM A 1 offset (5,34)
		SBOM A 1 offset (0,0)
		goto ready
	DontFire:
		SBOM A 2
		goto Ready
	Fire:
		TNT1 A 0
		TNT1 A 0 A_GiveInventory("preventBomberMenuAccess")
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "DontFire")
		TNT1 A 0 A_JumpIfInventory ("InMenu", 1, "DontFire")
		SBOM A 0 A_TakeInventory ("PowerInvulnerable", 1)
		SBOM A 0 A_FireCustomMissile ("DummyMissile")
		SBOM A 0 A_PlaySound("terrorist/scream", CHAN_VOICE)
		SBOM A 5 A_PlaySound ("terrorist/activate", CHAN_WEAPON)
		SBOM B 5
		SBOM C 18
		SBOM C 7 A_PlaySound("terrorist/scream", CHAN_VOICE)
		SBOM C 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Ready")
		SBOM C 6 A_GiveInventory ("IsTerrorist", 1)
		SBOM C -1 DamageThing (1000000)
		stop
	Spawn:
		TNT1 A 0
		stop
	}
}

Actor preventBomberMenuAccess : Inventory	{	Inventory.MaxAmount 1	}

actor DummyMissile {
	PROJECTILE
	Speed 0
	Radius 0
	Height 0
	States {
	Spawn:
		TNT1 A 0
		stop
	}
}

actor Bomb-PackAmmo : Ammo {
	+INVENTORY.IGNORESKILL
	inventory.icon "TNT1A0"
	inventory.amount 1
	inventory.maxamount 1
	ammo.backpackamount 0
	ammo.backpackmaxamount 0
}

actor IsTerrorist : Inventory {}

// [Dusk] The big explosion. The bomb pack itself does not spawn this, it is
// actually spawned by the player body. The bomb pack gives a dummy item that
// instructs the player body to spawn this.
actor KamikazeExplosion {
	PROJECTILE
	+NOGRAVITY
	+NOINTERACTION
	Obituary "$OB_BOMBPACK" // "%o \cIwas wiped off the face of Earth by %k."
	Damage 100
	DamageType "Explosion"
	states {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("KamikazeExplosionFX")
		TNT1 A 0 A_Explode (7000, 128)
		TNT1 A 0 A_Explode (2000, 256)
		TNT1 A 10 A_Explode (400, 1536)
		stop
	}
}

// [Dusk] Explosion effect. Should check for aow_fx here...
actor KamikazeExplosionFX {
	+CLIENTSIDEONLY
	+NOINTERACTION
	+NOGRAVITY
	states {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("BombPackQuake")
		TNT1 A 0 A_SpawnItemEx ("NukeMushroom")
		TNT1 A 0 A_SpawnItemEx ("ExplosionMain", random (-48, 48), random(-48, 48), random (16, 32))
		TNT1 A 0 A_PlaySound ("weapons/rocklx", CHAN_BODY)
		TNT1 A 0 A_PlaySound ("weapons/rocklx", CHAN_WEAPON)
		TNT1 AA 0 A_SpawnItemEx ("BombPackSmoke", 0, 0, random (32, 64), random (-1.5, 1.5), random (-1.5, 1.5))
		TNT1 A 2
		TNT1 AAA 0 A_SpawnItemEx ("BombPackSmoke", 0, 0, random (64, 96), random (-1.5, 1.5), random (-1.5, 1.5))
		TNT1 A 2
		TNT1 AAAA 0 A_SpawnItemEx ("BombPackSmoke", 0, 0, random (96, 128), random (-1.5, 1.5), random (-1.5, 1.5))
		TNT1 A 2
		TNT1 AAAAA 0 A_SpawnItemEx ("BombPackSmoke", 0, 0, random (128, 144), random (-1.5, 1.5), random (-1.5, 1.5))
		TNT1 A 2
		TNT1 AAAAAA 0 A_SpawnItemEx ("BombPackSmoke", 0, 0, random (144, 160), random (-1.5, 1.5), random (-1.5, 1.5))
		TNT1 A 2
		TNT1 AAAAAAA 0 A_SpawnItemEx ("BombPackSmoke", 0, 0, random (160, 192), random (-1.5, 1.5), random (-1.5, 1.5))
		TNT1 A 2
		TNT1 AAAAAAAA 0 A_SpawnItemEx ("BombPackSmoke", 0, 0, random (192, 224), random (-1.5, 1.5), random (-1.5, 1.5))
		TNT1 A 2
		TNT1 AAAAAAAAAA 0 A_SpawnItemEx ("BombPackSmoke", 0, 0, random (224, 256), random (-1.5, 1.5), random (-1.5, 1.5))
		stop
	}
}

actor BombPackSmoke : NukeSmoke {
	+FORCEXYBILLBOARD
	scale 1.5
}

actor BombPackQuake {
	+CLIENTSIDEONLY +NOSECTOR +NOCLIP +NOINTERACTION
	states {
	Spawn:
		TNT1 A 0
		TNT1 A 10 Radius_Quake (9, 10, 0, 24, 0)
		TNT1 A 10 Radius_Quake (8, 10, 0, 20, 0)
		TNT1 A 10 Radius_Quake (7, 10, 0, 19, 0)
		TNT1 A 10 Radius_Quake (6, 10, 0, 18, 0)
		TNT1 A 10 Radius_Quake (5, 10, 0, 16, 0)
		TNT1 A 10 Radius_Quake (3, 10, 0, 12, 0)
		TNT1 A 10 Radius_Quake (1, 10, 0, 6, 0)
		stop
	}
}

// [Dusk] Given on resign to free the player of the effects of the bomb pack
actor NoMoreTerrorism : CustomInventory {
	+AUTOACTIVATE
	+ALWAYSPICKUP
	States {
	Spawn:
		TNT1 A 0
		stop
	Pickup:
		TNT1 A 0 A_ChangeFlag ("PICKUP", 1)
		TNT1 A 0 A_StopSound (5)
		stop
	}
}

// Inventory item for insta-suicidebomber switch.
actor BombPackItem : InventoryItem {
	Inventory.Icon "sbomicon"
	Tag "Bomb Pack"
	states {
	Spawn:
		TNT1 A 0
		stop
	Use:
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Failure")
		TNT1 A 0 A_JumpIfInventory ("IsMech", 1, "Use.Mech")
		TNT1 A 0 A_JumpIfInventory ("StealthMode", 1, "Destealth")
		TNT1 A 0 A_JumpIfInventory ("PowerBerserk", 1, "Failure")
		TNT1 A 0 ACS_ExecuteWithResult (807, 0)
		stop
	}
}

// old stuff
actor BombPackKamikaze
{
  radius 13
  height 8
  speed 0
  damage 0
  renderstyle Add
  alpha 0.75
  deathsound "weapons/rocklx"
  PROJECTILE
  -RANDOMIZE
  +STRIFEDAMAGE
  //+FULLVOLDEATH
  +NOEXTREMEDEATH
  +NODAMAGETHRUST
  DamageType "Terrorist"
  Scale 2.0
  states
  {
  Spawn:
    PLS1 A 0 bright
    goto Death
    PLS1 A 0 bright A_SetShootable
    PLS1 A 0 bright A_Die
    Stop
  Death:
    TNT1 A 0
    TNT1 A 0 A_SpawnItemEx("ExplosionMainLarge", 0, 0, 0, 0, 0, 0, 0, 128, 0)
    TNT1 A 0 A_PlaySound("weapons/rocklx")
    TNT1 A 0 A_PlayWeaponSound("weapons/rocklx")
    TNT1 A 0 bright A_Explode(100,512,0)
    TNT1 A 0 bright A_Explode(700,128,0)
    TNT1 A 1 bright A_Explode(700,256,0)
    TNT1 AAAAA 0 A_SpawnItemEx("FlameWallDecay", random(-48,48), random(-48,48), 4, 0, 0, 0, 0, 0, 0)
    TNT1 A 0 A_SpawnItemEx("BombPackKamikazeSuicide", -1, 0, 0, 0, 0, 0, 0, 0, 0)
    stop
  }
}

actor BombPackKamikazeSuicide
{
  RenderStyle None
  -RANDOMIZE
  +NOCLIP
  PROJECTILE
  Speed 1
  Damage 0
  Scale 0.7
  DamageType "Suicide"
  states
  {
  Spawn:
    TNT1 A 0
    TNT1 A 5 bright A_Explode(250,16,1)
    stop
  }  
}