actor HQSemtex : HQWeapon
{
  Weapon.SelectionOrder 3700
  Inventory.PickupMessage "[ \c[Purple]Sorry, Plastique.\c- ]"
  Tag "Modular Plastic Explosives"
  Weapon.Kickback 200
  Weapon.SlotNumber 5
  Scale 0.25
  weapon.ammotype1 "STXAmmo"
  weapon.ammotype2 "STXActive"
  weapon.ammouse1 1
  weapon.ammouse2 1
  weapon.ammogive1 1
  weapon.ammogive2 0
  +FORCEPAIN
  +NOAUTOAIM
  +NOAUTOFIRE
  +IGNORESKILL
  +WEAPON.NOALERT
  +Ammo_CheckBoth
  Inventory.PickupSound "STXPKP"
  Weapon.UpSound "SLDSEL" 
  Obituary "%k left %o a package for later."
  States
  {
    Spawn:
    DYNP A -1
    Stop 
  Ready:
	DYNA A 0 A_JumpIf(CountInv("STXAmmo") == 0,"EmptyReady")
    DYNA A 35 A_WeaponReady(WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_ALLOWUSER1|WRF_ALLOWUSER2)
    DYNA GF 2 A_WeaponReady(WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_ALLOWUSER1|WRF_ALLOWUSER2)
    loop
  Deselect:
    NULL A 0 A_JumpIf(CountInv("HQGrabbedBarrel") == 1,"ZeroFucksGiven")
	DYNA A 0 A_JumpIf(CountInv("STXAmmo") == 0,"EmptyDeselect")
    DYNA A 1 A_Lower(20)
    loop
  Select: 
    TNT1 A 1
    TNT1 A 0 A_JumpIfInventory("HQSemtexToken",1,"SelectNormal") 
    TNT1 A 0 A_Giveinventory("HarleyTalk",1)
	TNT1 A 0 A_Giveinventory("HQSemtexToken",1)    
	TNT1 A 0 A_Playsound("HQVSTX",CHAN_VOICE)
    Goto SelectNormal
  SelectNormal:
	DYNA A 0 A_JumpIf(CountInv("STXAmmo") == 0,"EmptySelect")
    DYNA A 1 A_Raise(20)
    loop
  EmptyReady:
	DYTA A 0 A_JumpIf(CountInv("STXAmmo") > 0,"Redraw")
    DYTA A 1 A_WeaponReady(WRF_ALLOWZOOM|WRF_ALLOWUSER1|WRF_ALLOWUSER2)
    loop
  EmptyDeselect:
    DYTA A 1 A_Lower(20)
    loop
  EmptySelect: 
    DYTA A 1 A_Raise(20)
    loop
  Fire:
 	DYNA A 0 A_JumpIf(CountInv("STXAmmo") == 0,"Empty")
	DYNA BCDE 1
  Hold:
    DYNA E 1
	DYNA E 1 A_Refire
	Goto Hit
  Hit:
    DYNA E 0 A_Overlay(-3,"Toss")
    DYNA E 15
	Goto Redraw
	Redraw:
	DYNA A 0 A_JumpIf(CountInv("STXAmmo") == 0,"EmptyRedraw")
	DYNA E 1
	DYNA D 1
	DYNA C 1
	DYNA B 1
	DYNA A 1
	Goto Ready
	EmptyRedraw:
	DYTA D 1
	DYTA C 1
	DYTA B 1
	DYTA A 1
	Goto Ready
  Empty:
 	DYTA B 1
	DYTA A 1
	Goto Ready
  Toss:
    TNT1 A 1 A_PlaySound("SMTTHW",CHAN_WEAPON)
	THRW AB 1 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
	THRW C 1 A_Quake(2, 4, 0, 48576, "None")
	THRW C 0 A_JumpIfInventory("STXProxy",1,"TossProxy")
	THRW C 0 A_JumpIfInventory("STXTimed",1,"TossTimed")
	Goto TossRemote
  TossRemote:
    THRW C 0 A_GiveInventory("STXActive",1)
    THRW C 1 A_FireCustomMissile("STXBundle1",0,1,6,0)
    Goto TossFinish
  TossTimed:
    THRW C 1 A_FireCustomMissile("STXBundle2",0,1,6,0)
    Goto TossFinish
  TossProxy:
    THRW C 1 A_FireCustomMissile("STXBundle3",0,1,6,0)
    Goto TossFinish
  TossFinish:
	THRW DE 1 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
	TNT1 A 3
    Stop
 AltFire:
    TNT1 A 0 A_PlaySound("SMTCLI",CHAN_WEAPON)
    //DYTT C 0 Thing_Projectile(5555,201,0,0,0)
	//DYTT C 0 Thing_Destroy(5555,1,0)
	TNT1 A 0 A_TakeInventory("STXActive",99)
	DYNT A 0 A_JumpIf(CountInv("STXAmmo") == 0,"AltEmpty")
    DYNT ABC 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	DYNT CBA 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	Goto Ready
  AltEmpty:
    DYTT ABC 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	DYTT CBA 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	Goto Ready
 Reload:
    TNT1 A 0 A_PlaySound("SMTCL2",CHAN_WEAPON)
	TNT1 A 0 A_JumpIfInventory("STXTimed",1,"SetProxy")
	TNT1 A 0 A_JumpIfInventory("STXProxy",1,"SetRemote")
	Goto SetTimed
 SetTimed:
	TNT1 A 0 A_GiveInventory("STXTimed",1)
	Goto ReloadFinish
 SetProxy:
	TNT1 A 0 A_TakeInventory("STXTimed",99)
	TNT1 A 0 A_GiveInventory("STXProxy",1)
	Goto ReloadFinish
 SetRemote:
	TNT1 A 0 A_TakeInventory("STXProxy",99)
	TNT1 A 0 A_TakeInventory("STXTimed",99)
	Goto ReloadFinish
 ReloadFinish:
    DYNT ABC 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	DYNT CBA 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	Goto Ready
	Zoom:
	    MOLO A 0 A_JumpIf(CountInv("STXAmmo") == 0,"EmptyZoom")
        DYNA BCD 1
	    DYNA E 10 A_Overlay(-3,"QuickKick")
	    DYNA DCB 1
        Goto Ready
	EmptyZoom:
        DYTA BCD 1
	    DYTA E 10 A_Overlay(-3,"QuickKick")
	    DYTA DCB 1
        Goto Ready
	Zoom:
	    MOLO A 0 A_JumpIf(CountInv("STXAmmo") == 0,"EmptyZoom")
        DYNA BCD 1
	    DYNA E 10 A_Overlay(-3,"QuickMelee")
	    DYNA DCB 1
        Goto Ready
	EmptyZoom:
        DYTA BCD 1
	    DYNA E 10 A_Overlay(-3,"QuickMelee")
	    DYTA DCB 1
        Goto Ready
  User1:
   MOLO A 0 A_JumpIf(CountInv("STXAmmo") == 0,"EmptyGrenade")
   MELE A 0 A_JumpIfInventory("ThrowableAmmo",1,1)
   Goto GrenadeDry
   DYNA BD 1
   TNT1 A 0 A_Overlay (-3, "ThrowNao")
   DYNA E 8
   DYNA DCB 2
   Goto Ready
   EmptyGrenade:
   MELE A 0 A_JumpIfInventory("ThrowableAmmo",1,1)
   Goto EmptyGrenadeDry
   DYTA BD 1
   TNT1 A 0 A_Overlay (-3, "ThrowNao")
   DYNA E 8
   DYTA DCB 2
   Goto Ready
  User2:
   MOLO A 0 A_JumpIf(CountInv("STXAmmo") == 0,"EmptyStim")
   SOCH A 0 A_JumpIfInventory("StimAmmo",1,1)
   Goto StimDry
   SOCH A 0 A_JumpIfInventory("SpeedItem",1,2)
   SOCH A 0 A_JumpIfHealthLower(100, 1)
   Goto HealthFull
   DYNA BD 1
   TNT1 A 0 A_Overlay (-3, "InjectorPlunge")
   DYNA E 30
   DYNA DCB 2
   Goto Ready
   EmptyStim:
   SOCH A 0 A_JumpIfInventory("StimAmmo",1,1)
   Goto EmptyStimDry
   SOCH A 0 A_JumpIfInventory("SpeedItem",1,2)
   SOCH A 0 A_JumpIfHealthLower(100, 1)
   Goto EmptyHealthFull
   DYTA BD 1
   TNT1 A 0 A_Overlay (-3, "InjectorPlunge")
   DYNA E 30
   DYTA DCB 2
   Goto Ready
   GrenadeDry:
   DYNA A 1 ACS_NamedExecute("NoGrenades", 0)
   Goto Ready
   HealthFull:
   DYNA A 1 ACS_NamedExecute("FullHealth", 0)
   Goto Ready
   StimDry:
   DYNA A 1 ACS_NamedExecute("NoStims", 0)
   Goto Ready
   EmptyGrenadeDry:
   DYTA A 1 ACS_NamedExecute("NoGrenades", 0)
   Goto Ready
   EmptyHealthFull:
   DYTA A 1 ACS_NamedExecute("FullHealth", 0)
   Goto Ready
   EmptyStimDry:
   DYTA A 1 ACS_NamedExecute("NoStims", 0)
   Goto Ready
}
}

ACTOR STXBundle1
{
  Health 25
  Radius 8
  Height 8
  Speed 16
  Scale 0.3
  Damage 5
  //Projectile
  +MISSILE
  +CANPASS +NOBLOOD +SHOOTABLE
  +BLOODLESSIMPACT +DONTRIP
  -ISMONSTER
  -NOGRAVITY
  +RANDOMIZE +MOVEWITHSECTOR
  +DONTRIP
  +ACTIVATEMCROSS
  +DONTGIB
  +CANBOUNCEWATER +BOUNCEONACTORS
  +USEBOUNCESTATE -ROCKETTRAIL
  +ROLLSPRITE +ROLLCENTER +INTERPOLATEANGLES
  BounceType "Doom"
  Gravity 0.6
  BounceFactor 0.4
  SeeSound ""
  DeathSound "STXBNCE"
  BounceSound "STXBNCE"
  Tag "Remote Semtex Brick"
  DamageType Melee
  States
  {
  Spawn:
	SMTX A 1 NoDelay
	Goto Spawn2
  Spawn2:
    SMTX AAAAAAAAAAAAAAAA 1 { 
	If (CountInv("STXActive",AAPTR_TARGET) == 0) { return state("Death.Explosive"); } 
	A_SetAngle(Angle+15.0,SPF_INTERPOLATE); 
	return state("");  
	}
    Loop
  Bounce.Floor:
	"####" "#" 0
	Goto Spawn2
  Death:
	"####" "#" 0 { A_SpawnItemEx("STXBomb1",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|SXF_ORIGINATOR); } //Thing_ChangeTID(0,5555);
    Stop
  Death.Explosive:
    TNT1 A 0 
	SMTX A 1 bright { A_ChangeFlag("NOGRAVITY",1); A_ScaleVelocity(0.0); A_ChangeFlag("SOLID",0); A_ChangeFlag("SHOOTABLE",0); }
	PTNT I 0 { A_PlaySound("SMTXPL",CHAN_BODY,CHANF_NOSTOP); A_AlertMonsters; A_TakeInventory("STXActive",99,0,AAPTR_TARGET); }
	TNT1 A 0 { A_SpawnItemEx("BaseFlash", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE); A_SpawnItemEx("BaseBlast", 0, 0, 0, 0, 0, 2, 0, SXF_CLIENTSIDE); }
    TNT1 AAAAAAAAAAA 0 A_CustomMissile("DarkSmoke",0,0,Random(0,360),2,Random(0,360))
	TNT1 AA 0 A_CustomMissile("SemtexDebris", 16, 0, random(0,360), 2, Random(5,46))
	TNT1 AA 0 A_CustomMissile("SemtexDebris", 16, 0, random(0,360), 2, Random(4,44))
	TNT1 A 0 A_SpawnItemEx ("SemtexBoom",0,0,13,0,0,0,0,SXF_TRANSFERPOINTERS|SXF_NOCHECKPOSITION,0)
    TNT1 AAA 0 A_SpawnItemEx ("STXExplode3",0,0,0,2,0,random(1,2),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAAA 0 A_SpawnItemEx ("STXExplode1",0,0,0,2,0,random(1,3),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAA 0 A_SpawnItemEx ("STXExplode2",0,0,0,2,0,random(2,4),random(0,359),SXF_CLIENTSIDE)
    TNT1 EEEEEEEEEEE 1 A_Quake(15,18,0,3200,"none")
    Stop
  }
}

ACTOR STXBundle2: STXBundle1
{
  Tag "Timed Semtex Brick"
  DamageType Melee
  States
  {
  Spawn:
	SMTX A 1
	Goto Spawn2
  Spawn2:
    SMTX AAAAAAAAAAAAAAAA 1 { A_SetAngle(Angle+15.0,SPF_INTERPOLATE); } //A_SetRoll(Roll+16.5,SPF_INTERPOLATE);
    Loop
  Bounce.Floor:
	"####" "#" 0
	Goto Spawn2
  Death:
	FLFR M 0 bright A_SpawnItemEx("STXBomb2",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|SXF_ORIGINATOR)
    Stop
  }
}

ACTOR STXBundle3 : STXBundle1
{
  Tag "Proximity Semtex Brick"
  -BOUNCEONACTORS
  DamageType Melee
  States
  {
  Spawn:
	SMTX A 1
	Goto Spawn2
  Spawn2:
    SMTX AAAAAAAAAAAAAAAA 1 { A_SetAngle(Angle+15.0,SPF_INTERPOLATE); } //A_SetRoll(Roll+16.5,SPF_INTERPOLATE);
    Loop
  Bounce.Floor:
	"####" "#" 0
	Goto Spawn2
  Death:
  Crash:
	FLFR M 0 bright A_SpawnItemEx("STXBomb3",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|SXF_ORIGINATOR)
    Stop
  XDeath:
    TNT1 A 0 
	SMTX A 1 bright { A_ChangeFlag("NOGRAVITY",1); A_ScaleVelocity(0.0); A_ChangeFlag("SOLID",0); A_ChangeFlag("SHOOTABLE",0); }
	PTNT I 0 { A_PlaySound("SMTXPL",CHAN_BODY,CHANF_NOSTOP); A_AlertMonsters; A_TakeInventory("STXActive",99,0,AAPTR_TARGET); }
	TNT1 A 0 { A_SpawnItemEx("BaseFlash", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE); A_SpawnItemEx("BaseBlast", 0, 0, 0, 0, 0, 2, 0, SXF_CLIENTSIDE); }
    TNT1 AAAAAAAAAAA 0 A_CustomMissile("DarkSmoke",0,0,Random(0,360),2,Random(0,360))
	TNT1 AA 0 A_CustomMissile("SemtexDebris", 16, 0, random(0,360), 2, Random(5,46))
	TNT1 AA 0 A_CustomMissile("SemtexDebris", 16, 0, random(0,360), 2, Random(4,44))
	TNT1 A 0 A_SpawnItemEx ("SemtexBoom",0,0,13,0,0,0,0,SXF_TRANSFERPOINTERS|SXF_NOCHECKPOSITION,0)
    TNT1 AAA 0 A_SpawnItemEx ("STXExplode3",0,0,0,2,0,random(1,2),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAAA 0 A_SpawnItemEx ("STXExplode1",0,0,0,2,0,random(1,3),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAA 0 A_SpawnItemEx ("STXExplode2",0,0,0,2,0,random(2,4),random(0,359),SXF_CLIENTSIDE)
    TNT1 EEEEEEEEEEE 1 A_Quake(15,18,0,3200,"none")
    Stop
  }
}

ACTOR STXBomb1 : SwitchingDecoration
{
  Health 40
  Mass 65
  Radius 8
  Height 8
  DeathHeight 0
  Painchance   "Melee", 256
  DamageFactor "Melee", 0.1
  Painchance   "Kick", 256
  DamageFactor "Kick", 0.1
  Painchance   "Bat", 256
  DamageFactor "Bat", 0.1
  Scale 0.3
  +SOLID
  +CANPASS
  +PUSHABLE
  +SHOOTABLE
  +NOBLOOD 
  +BLOODLESSIMPACT
  +DONTRIP
  +ACTIVATEMCROSS
  +DONTGIB
  +NOICEDEATH
  +OLDRADIUSDMG
  Activation THINGSPEC_Activate | THINGSPEC_Switch | THINGSPEC_Default | THINGSPEC_ThingTargets
  +USESPECIAL 
  Tag "Remote Semtex Brick"
  DamageType Explosive
  PainSound "STXBNCE"
  DeathSound "SMTXPL"
  Obituary "%k left %o a little gift for later."
  States
  {
  Spawn:
	SMTX A 0 A_SetAngle(Angle+15)
	SMTX A 0 A_SpawnItemEx("STXGlow1",0,0,10)
	PTNT I 0 A_GiveInventory("STXActive",1,AAPTR_TARGET)
	SMTX A 1 A_JumpIf(CountInv("STXActive",AAPTR_TARGET) == 0, "Death") //Thing_ChangeTID (0, 5555)
	Goto Spawn2
  Spawn2:
    SMTX A 1 A_JumpIf(CountInv("STXActive",AAPTR_TARGET) == 0, "Death")
    Loop
    Pain.Melee:
	Pain.Kick:
	Pain.Bat:
	SMTX A 1 A_Pain
	TNT1 A 0 A_FaceTarget
    TNT1 A 0 ThrustThingZ (0, 20, 0, 0)
	TNT1 A 0 ThrustThing(angle*256/360+128, 5, 0, 0)
  	SMTX AAAAAAAA 1 A_SetAngle(Angle+15)
	Goto Spawn2
  Death:
    TNT1 A 0 A_ChangeFlag("USESPECIAL",0)
    TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
	TNT1 A 0 A_ChangeFlag("SOLID",0)
	SMTX A 1 bright
	PTNT I 0 A_AlertMonsters
	PTNT I 0 A_Scream
	PTNT I 0 A_TakeInventory("STXActive",99,0,AAPTR_TARGET)
	TNT1 A 0 A_SpawnItemEx("BaseFlash", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE)
	FLFR M 0 bright A_SpawnItemEx("BaseBlast", 0, 0, 0, 0, 0, 2, 0, SXF_CLIENTSIDE)
    TNT1 AAAAAAAAAAA 0 A_CustomMissile("DarkSmoke",0,0,Random(0,360),2,Random(0,360))
	TNT1 AA 0 A_CustomMissile("SemtexDebris", 16, 0, random(0,360), 2, random(5, 45))
	TNT1 AA 0 A_CustomMissile("SemtexDebris", 16, 0, random(0,360), 2, random(4, 44))
	TNT1 A 0 A_SpawnItemEx ("SemtexBoom",0,0,13,0,0,0,0,SXF_TRANSFERPOINTERS|SXF_NOCHECKPOSITION,0)
    TNT1 AAA 0 A_SpawnItemEx ("STXExplode3",0,0,0,2,0,random(1,2),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAAA 0 A_SpawnItemEx ("STXExplode1",0,0,0,2,0,random(1,3),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAA 0 A_SpawnItemEx ("STXExplode2",0,0,0,2,0,random(2,4),random(0,359),SXF_CLIENTSIDE)
    TNT1 EEEEEEEEEEE 1 A_Quake(15,18,0,3200,"none")
    Stop
Death.Quietly:
	FX08 B 0
	Stop
    Active:     
    Inactive:
    "####" "#" 0
    "####" "#" 0 A_JumpIf(CountInv("Backpack",AAPTR_TARGET),"BackpackSTXPickup")
	STXPickup:
	"####" "#" 0
    "####" "#" 0 A_JumpIf(CountInv("STXAmmo",AAPTR_TARGET) == 15,"PickupFailure")
    Goto STXPickupNow
	BackpackSTXPickup:
    "####" "#" 0
    "####" "#" 0 A_JumpIf(CountInv("STXAmmo",AAPTR_TARGET) == 30,"PickupFailure")
    Goto STXPickupNow
	STXPickupNow:
	SMTX A 3 ThrustThingZ(0,10,0,1)
	SMTX A 0 A_SpawnItemEx("STXGlow1",0,0,10)
    SMTX A 0 A_PlaySound("SMTTHW",CHAN_7,0.9)
	SMTX A 1 A_GiveToTarget("STXAmmo",1)
	TNT1 A 1 A_ChangeFlag("NOINTERACTION", true)
	TNT1 A 2 
	TNT1 A 0 A_Die("Quietly")
    Stop
	PickupFailure:
	SMTX A 3 ThrustThingZ(0,10,0,1)
	SMTX A 0 A_SpawnItemEx("STXGlow1",0,0,10)
	SMTX A 4
	SMTX A 0 A_SpawnItemEx("STXGlow1",0,0,10)
	SMTX A 4 
	SMTX A 0 A_SpawnItemEx("STXGlow1",0,0,10)
	SMTX A 12 
	Goto Spawn2
  }
}

Actor SemtexBoom
{
   Radius 2
   Height 2
  +MISSILE
  +NOCLIP
  +FORCEPAIN
  States
  {
  Spawn:
    TNT1 A 0
	TNT1 A 0 A_Explode(128,150,XF_HURTSOURCE|XF_EXPLICITDAMAGETYPE,1,0,0,0,"None","Explosive")
	TNT1 I 0 A_RadiusThrust(300,155,RTF_AFFECTSOURCE|RTF_THRUSTZ)
    Stop
  }
}


ACTOR STXBomb2 : STXBomb1
{
  Tag "Timed Semtex Brick"
  Var Int User_DynamiteExplosion;
  Obituary "%o opened %k's package too soon."
  States
  {
  Spawn:
 	SMTX A 0 NoDelay A_SpawnItemEx("STXGlow2",0,0,10)
	SMTX A 1 { A_SetAngle(Angle+15,SPF_INTERPOLATE); A_SetUserVar("User_DynamiteExplosion",0); }
	SMTX A 0 A_Jump(256,"Spawn2")
	Stop
  Spawn2:
	SMTX A 0
	{
	A_SetUserVar("User_DynamiteExplosion",User_DynamiteExplosion+1);
	If(User_DynamiteExplosion == 32) { A_Die("Explosive"); Return A_Jump(256,"Death.Explosive"); }
	Else If(User_DynamiteExplosion > 21) { A_SpawnItemEx("STXGlow2",0,0,10); Return A_Jump(256,5); }
	Else If(User_DynamiteExplosion > 10) { A_SpawnItemEx("STXGlow2",0,0,10); Return A_Jump(256,3); }
	Return State("");
	}
	SMTX A 40
	SMTX A 0 { A_SpawnItemEx("STXGlow2",0,0,10); Return A_Jump(256,"Spawn2"); }
	SMTX A 25
	SMTX A 0 A_Jump(256,"Spawn2")
	SMTX A 10
	Loop
  PickupFailure:
	SMTX A 3 ThrustThingZ(0,10,0,1)
	SMTX A 0 A_SpawnItemEx("STXGlow2",0,0,10)
	SMTX A 5
	SMTX A 0 A_SpawnItemEx("STXGlow2",0,0,10)
	SMTX A 5 
	SMTX A 0 A_SpawnItemEx("STXGlow2",0,0,10)
	SMTX A 12
	SMTX A 0 A_Jump(256,"Spawn2")
	Goto Spawn2
  }
}

ACTOR STXBomb3 : STXBomb1
{
  +FRIENDLY
  MaxTargetRange 48
  Tag "Proximity Semtex Brick"
  Obituary "%o opened %k's package... at all."
  States
  {
  Spawn:
	SMTX A 1 A_SetAngle(Angle+15)
	Goto Spawn2
  Spawn2:
 	SMTX A 0 A_SpawnItemEx("STXGlow3",0,0,10)
    SMTX A 30 A_LookEx(LOF_NOSOUNDCHECK, 0, 80, 0, 360)
    Loop
  See:
   SMTX A 1 A_Chase ("Melee", 0, CHF_DONTMOVE)
  Loop
  Melee:
  TNT1 A 0 A_Jump(256,"Death")
  Stop
  Pain.Melee:
  Pain.Kick:
  Pain.Bat:
  SMTX A 1 A_Pain
  TNT1 A 0 A_FaceTarget
  TNT1 A 0 ThrustThingZ (0, 20, 0, 0)
  TNT1 A 0 ThrustThing(angle*256/360+128, 5, 0, 0)
  SMTX AAAAAAAA 1 A_SetAngle(Angle+15)
  Goto Spawn2
Death.Quietly:
	FX08 B 0
	Stop
	Active: 	
	Inactive:
	SMTX A 0 A_JumpIf(CountInv("Backpack",AAPTR_TARGET),"BackCheck")
	SMTX A 0 A_JumpIfInventory("STXAmmo",15,"PickupFailure",AAPTR_TARGET)
	Goto STXPickup
	BackCheck:
	SMTX A 0 A_JumpIfInventory("STXAmmo",30,"PickupFailure",AAPTR_TARGET)
	Goto STXPickup
	STXPickup:
	SMTX A 3 ThrustThingZ(0,10,0,1)
	SMTX A 0 A_SpawnItemEx("STXGlow1",0,0,10)
    SMTX A 0 A_PlaySound("SMTTHW",CHAN_7,0.9)
	SMTX A 1 A_GiveToTarget("STXAmmo",1)
	TNT1 A 1 A_ChangeFlag("NOINTERACTION", true)
	TNT1 A 2 
	TNT1 A 0 A_Die("Quietly")
    Stop
	PickupFailure:
	SMTX A 3 ThrustThingZ(0,10,0,1)
	SMTX A 0 A_SpawnItemEx("STXGlow3",0,0,10)
	SMTX A 4
	SMTX A 0 A_SpawnItemEx("STXGlow3",0,0,10)
	SMTX A 4
	SMTX A 0 A_SpawnItemEx("STXGlow3",0,0,10)
	SMTX A 12
	Goto Spawn2
  Death:
    TNT1 A 0 A_ChangeFlag("USESPECIAL",0)
    TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
	TNT1 A 0 A_ChangeFlag("SOLID",0)
	SMTX A 1 bright
	PTNT I 0 A_AlertMonsters
	PTNT I 0 A_Scream
	PTNT I 0 A_TakeInventory("STXActive",99,0,AAPTR_TARGET)
	TNT1 A 0 A_SpawnItemEx("BaseFlash", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE)
	FLFR M 0 bright A_SpawnItemEx("BaseBlast", 0, 0, 0, 0, 0, 2, 0, SXF_CLIENTSIDE)
    TNT1 AAAAAAAAAAA 0 A_CustomMissile("DarkSmoke",0,0,Random(0,360),2,Random(0,360))
	TNT1 AA 0 A_CustomMissile("SemtexDebris", 16, 0, random(0,360), 2, random(5, 45))
	TNT1 AA 0 A_CustomMissile("SemtexDebris", 16, 0, random(0,360), 2, random(4, 44))
	TNT1 A 0 A_SpawnItemEx ("SemtexBoom",0,0,13,0,0,0,0,SXF_TRANSFERPOINTERS|SXF_NOCHECKPOSITION,0)
    TNT1 AAA 0 A_SpawnItemEx ("STXExplode3",0,0,0,2,0,random(1,2),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAAA 0 A_SpawnItemEx ("STXExplode1",0,0,0,2,0,random(1,3),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAA 0 A_SpawnItemEx ("STXExplode2",0,0,0,2,0,random(2,4),random(0,359),SXF_CLIENTSIDE)
    TNT1 EEEEEEEEEEE 1 A_Quake(15,18,0,3200,"none")
    Stop
  }
}

  ACTOR STXGlow1 : DisasterShotSmoke
{
    Alpha 0.8
	Scale  0.5
	States
	{
    Spawn:
	TNT1 A 0
	DYLT A 0 A_PlaySound("SMTBEP")
    DYLT ABBBCCCDDD 1 bright { A_FadeOut(0.01,1); A_SetRoll(Roll+frandom(8,25),SPF_INTERPOLATE);}
    Stop
    }
}

  ACTOR STXGlow2 : DisasterShotSmoke
{
    Alpha 0.8
	Scale  0.5
	States
	{
    Spawn:
	TNT1 A 0
	DYLT A 0 A_PlaySound("SMTBEP")
    DYL2 ABBBCCCDDD 1 bright { A_FadeOut(0.01,1); A_SetRoll(Roll+frandom(8,25),SPF_INTERPOLATE);}
    Stop
    }
}

  ACTOR STXGlow3 : DisasterShotSmoke
{
    Alpha 0.8
	Scale  0.5
	States
	{
    Spawn:
	TNT1 A 0
	DYLT A 0 A_PlaySound("PRXBEP")
    DYL3 ABBBCCCDDD 1 bright { A_FadeOut(0.01,1); A_SetRoll(Roll+frandom(8,25),SPF_INTERPOLATE);}
    Stop
    }
}

ACTOR STXActive : Ammo
{
   +IGNORESKILL
   Tag "Active Bricks"
   Inventory.Amount 0
   Ammo.BackpackAmount 0
   Inventory.MaxAmount 1
   Ammo.BackpackMaxAmount 1
}

Actor STXProxy : QuinnBoolean { Inventory.MaxAmount 1 }
Actor STXTimed : QuinnBoolean { Inventory.MaxAmount 1 }