// Shamelessly stolen from RGA2

actor ExplosionSmall
{
  RenderStyle Add
  alpha 0.9
  +RANDOMIZE
  //+NOCLIP
  +NOINTERACTION
  PROJECTILE
  //-MISSILE
  Speed 1
  Damage 0
  Scale 0.7
  +FORCEXYBILLBOARD
  +CLIENTSIDEONLY
  states
  {
  Spawn:
    TNT1 A 1
    TNT1 A 0 A_Jump(256,"Spawn1","Spawn2","Spawn3","Spawn4","Spawn5")
  Spawn1:
    EXP1 ABCDEFGHIJ 3 bright
    stop
  Spawn2:
    EXP2 ABCDEFG 5 bright
    stop
  Spawn3:
    EXP3 ABCDEFG 5 bright
    stop
  Spawn4:
    EXP4 ABCDEFGH 4 bright
    stop
  Spawn5:
    EXP5 ABCDEFGHIJK 3 bright
    stop
  }
}
actor ExplosionSmall2 : ExplosionSmall
{
  Scale 0.5
}
actor ExplosionSmall3 : ExplosionSmall
{
  Scale 0.35
}

actor ExplosionSmokePuff
{
  RenderStyle Add
  alpha 0.95
  -RANDOMIZE
  //+NOCLIP
  +NOINTERACTION
  PROJECTILE
  Speed 2
  Damage 0
  Scale 4.0
  +FORCEXYBILLBOARD
  +CLIENTSIDEONLY
  states
  {
  Spawn:
    TNT1 A 1
    TNT1 A 0 A_Jump(256,"Spawn1","Spawn2","Spawn3","Spawn4","Spawn5","Spawn6")
  Spawn1:
    SMK1 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.05)
    stop
  Spawn2:
    SMK2 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.05)
    stop
  Spawn3:
    SMK3 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.05)
    stop
  Spawn4:
    SMK4 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.05)
    stop
  Spawn5:
    SMK5 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.05)
    stop
  Spawn6:
    SMK6 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.05)
    stop
  }
}
actor ExplosionSmokePuff2 : ExplosionSmokePuff
{
  alpha 0.85
  Scale 2.75
}


actor ExplosionMain
{
  RenderStyle Add
  alpha 0.9
  +RANDOMIZE
  +NOGRAVITY
  Scale 1.0
  Damage 0
  +FORCEXYBILLBOARD
  DamageType ExplosiveDamage
  states
  {
  Spawn:
    EXP1 AA 0 A_SpawnItemEx("ExplosionSmall",random(-8,8),random(-8,8),random(1,8),random(-2,2),random(-2,2),random(0,3),0,128,0)
    EXP1 A 0 A_PlayWeaponSound("grenade/boom")
    EXP1 A 0 A_PlaySoundEx("grenade/farboom","SoundSlot6")
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff",random(-8,8),random(-8,8),random(1,8),2,0,0,45,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff",random(-8,8),random(-8,8),random(1,8),2,0,0,90,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff",random(-8,8),random(-8,8),random(1,8),2,0,0,135,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff",random(-8,8),random(-8,8),random(1,8),2,0,0,180,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff",random(-8,8),random(-8,8),random(1,8),2,0,0,225,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff",random(-8,8),random(-8,8),random(1,8),2,0,0,270,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff",random(-8,8),random(-8,8),random(1,8),2,0,0,315,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff",random(-8,8),random(-8,8),random(1,8),2,0,0,360,128,0)
    EXP1 AB 1 bright
    EXP1 BB 0 A_SpawnItemEx("ExplosionSmall",random(-8,8),random(-8,8),random(1,8),random(-2,2),random(-2,2),random(0,3),0,128,0)
    EXP1 CDEF 1 bright
    EXP1 FF 0 A_SpawnItemEx("ExplosionSmall",random(-8,8),random(-8,8),random(1,8),random(-2,2),random(-2,2),random(0,3),0,128,0)
    EXP1 GHIJ 1 bright
    EXP3 AB 1 bright
    EXP3 BB 0 A_SpawnItemEx("ExplosionSmall",random(-8,8),random(-8,8),random(1,8),random(-2,2),random(-2,2),random(0,3),0,128,0)
    EXP3 CDEF 1 bright
    EXP3 FF 0 A_SpawnItemEx("ExplosionSmall",random(-8,8),random(-8,8),random(1,8),random(-2,2),random(-2,2),random(0,3),0,128,0)
    EXP3 GHI 1 bright
    stop
  }
}

actor ExplosionMain2 : ExplosionMain
{
  Scale 0.8
  states
  {
  Spawn:
	EXP1 A 0
	TNT1 A 0 A_Explode((100),170)
    EXP1 AA 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 A 0 A_PlayWeaponSound("type97/explode")
    EXP1 A 0 A_PlaySoundEx("type97/distant","SoundSlot6")
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,45,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,90,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,135,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,180,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,225,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,270,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,315,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,360,128,0)
    EXP1 AB 1 bright
    EXP1 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 CDEF 1 bright
    EXP1 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 GHIJ 1 bright
    EXP3 AB 1 bright
    EXP3 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 CDEF 1 bright
    EXP3 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 GHI 1 bright
    stop
  }
}

actor M79Explosion : ExplosionMain
{
  Scale 0.8
  states
  {
  Spawn:
	EXP1 A 0
	TNT1 A 0 A_Explode(200,80)
	EXP1 A 0 A_SpawnItemEx("QExplosion",0,0,0)
    EXP1 AA 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 A 0 A_PlayWeaponSound("type97/explode")
    EXP1 A 0 A_PlaySoundEx("type97/distant","SoundSlot6")
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,45,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,90,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,135,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,180,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,225,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,270,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,315,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,360,128,0)
    EXP1 AB 1 bright
    EXP1 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 CDEF 1 bright
    EXP1 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 GHIJ 1 bright
    EXP3 AB 1 bright
    EXP3 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 CDEF 1 bright
    EXP3 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 GHI 1 bright
    stop
  }
}

actor DynamiteExplosion : ExplosionMain
{
  Scale 0.8
  states
  {
  Spawn:
	EXP1 A 0
	TNT1 A 0 A_Explode(500,120)
	EXP1 A 0 A_SpawnItemEx("QExplosion",0,0,0)
    EXP1 AA 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 A 0 A_PlayWeaponSound("dynamite/boom")
    EXP1 A 0 A_PlaySoundEx("dynamite/distant","SoundSlot6")
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,45,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,90,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,135,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,180,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,225,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,270,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,315,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,360,128,0)
    EXP1 AB 1 bright
    EXP1 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 CDEF 1 bright
    EXP1 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 GHIJ 1 bright
    EXP3 AB 1 bright
    EXP3 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 CDEF 1 bright
    EXP3 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 GHI 1 bright
    stop
  }
}

actor C4Explosion : ExplosionMain
{
  Scale 0.8
  states
  {
  Spawn:
	EXP1 A 0
	TNT1 A 0 A_Explode(400,80)
	EXP1 A 0 A_SpawnItemEx("QExplosion",0,0,0)
    EXP1 AA 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 A 0 A_PlayWeaponSound("c4/boom")
    EXP1 A 0 A_PlaySoundEx("type97/distant","SoundSlot6")
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,45,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,90,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,135,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,180,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,225,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,270,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,315,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,360,128,0)
    EXP1 AB 1 bright
    EXP1 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 CDEF 1 bright
    EXP1 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 GHIJ 1 bright
    EXP3 AB 1 bright
    EXP3 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 CDEF 1 bright
    EXP3 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 GHI 1 bright
    stop
  }
}

actor ExplosionRoast : ExplosionMain
{
  Obituary "%o let \cIGeneral Roasterock \c-get %h."
  Scale 0.8
  states
  {
  Spawn:
	EXP1 A 0
	TNT1 A 0 A_Explode((100),170)
    EXP1 AA 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 A 0 A_PlayWeaponSound("roaster/boom")
    EXP1 A 0 A_PlaySoundEx("roaster/distant","SoundSlot6")
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,45,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,90,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,135,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,180,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,225,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,270,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,315,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,360,128,0)
    EXP1 AB 1 bright
    EXP1 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 CDEF 1 bright
    EXP1 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 GHIJ 1 bright
    EXP3 AB 1 bright
    EXP3 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 CDEF 1 bright
    EXP3 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 GHI 1 bright
    stop
  }
}

actor ExplosionRoast2 : ExplosionRoast
{
  Scale 0.8
  Obituary "%o let \cIGeneral Roasterock \c-get %h."
  states
  {
  Spawn:
	EXP1 A 0
	TNT1 A 0 A_Explode((100),170)
    EXP1 AA 0 A_SpawnItemEx("ExplosionSmall3",random(-2,2),random(-2,2),random(1,2),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 A 0 A_PlayWeaponSound("roaster/boom")
    EXP1 A 0 A_PlaySoundEx("roaster/distant","SoundSlot6")
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,45,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,90,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,135,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,180,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,225,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,270,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,315,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,360,128,0)
    EXP1 AB 1 bright
    EXP1 BB 0 A_SpawnItemEx("ExplosionSmall3",random(-2,2),random(-2,2),random(1,2),random(-1,1),random(-1,1),random(0,2),0,128,0)
    EXP1 CDEF 1 bright
    EXP1 FF 0 A_SpawnItemEx("ExplosionSmall3",random(-2,2),random(-2,2),random(1,2),random(-1,1),random(-1,1),random(0,2),0,128,0)
    EXP1 GHIJ 1 bright
    EXP3 AB 1 bright
    EXP3 BB 0 A_SpawnItemEx("ExplosionSmall3",random(-2,2),random(-2,2),random(1,2),random(-1,1),random(-1,1),random(0,2),0,128,0)
    EXP3 CDEF 1 bright
    EXP3 FF 0 A_SpawnItemEx("ExplosionSmall3",random(-2,2),random(-2,2),random(1,2),random(-1,1),random(-1,1),random(0,2),0,128,0)
    EXP3 GHI 1 bright
    stop
  }
}

actor WeakExplosionMain2 : ExplosionMain
{
  Scale 0.8
  states
  {
  Spawn:
	EXP1 A 0
	TNT1 A 0 A_Explode((20),170)
    EXP1 AA 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 A 0 A_PlayWeaponSound("grenade/boom")
    EXP1 A 0 A_PlaySoundEx("grenade/farboom","SoundSlot6")
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,45,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,90,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,135,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,180,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,225,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,270,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,315,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,360,128,0)
    EXP1 AB 1 bright
    EXP1 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 CDEF 1 bright
    EXP1 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 GHIJ 1 bright
    EXP3 AB 1 bright
    EXP3 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 CDEF 1 bright
    EXP3 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 GHI 1 bright
    stop
  }
}

actor LAWExplosion : ExplosionMain
{
  Scale 1.2
  states
  {
  Spawn:
	EXP1 A 0
	EXP1 A 0 A_Explode((100),170)
    EXP1 AA 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 A 0 A_PlayWeaponSound("law/explode")
    EXP1 A 0 A_PlaySoundEx("grenade/farboom","SoundSlot6")
	EXP1 A 0 A_SpawnItemEx("LAWBoomShake",0,0,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,45,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,90,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,135,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,180,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,225,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,270,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,315,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,360,128,0)
    EXP1 AB 1 bright
    EXP1 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 CDEF 1 bright
    EXP1 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 GHIJ 1 bright
    EXP3 AB 1 bright
    EXP3 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 CDEF 1 bright
    EXP3 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 GHI 1 bright
    stop
  }
}

actor SeekerExplosion : ExplosionMain
{
  states
  {
  Spawn:
	EXP1 A 0
	EXP1 A 0 A_Explode((100),170)
    EXP1 AA 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 A 0 A_PlayWeaponSound("seeker/explode")
	EXP1 A 0 A_SpawnItemEx("SeekerBoomShake",0,0,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,45,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,90,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,135,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,180,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,225,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,270,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,315,128,0)
    EXP1 A 0 A_SpawnItemEx("ExplosionSmokePuff2",random(-5,5),random(-5,5),random(1,5),2,0,0,360,128,0)
    EXP1 AB 1 bright
    EXP1 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 CDEF 1 bright
    EXP1 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP1 GHIJ 1 bright
    EXP3 AB 1 bright
    EXP3 BB 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 CDEF 1 bright
    EXP3 FF 0 A_SpawnItemEx("ExplosionSmall2",random(-5,5),random(-5,5),random(1,5),random(-2,2),random(-2,2),random(0,2),0,128,0)
    EXP3 GHI 1 bright
    stop
  }
}