actor TacticalInsertion : RGUWeapon
{
  weapon.ammotype "RevivalKitAmmo"
  weapon.ammouse 1
  weapon.ammogive 0
  weapon.selectionorder 500
  +WEAPON.WIMPY_WEAPON
  inventory.pickupmessage "You got the Tactical Insertion Kit. Wait, how'd you find this?"
  states
  {
  Ready:
    TACT B 0 A_JumpIfInventory("ThrowingGrenade",1,"FragGrenade")
    TACT B 0 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    TACT B 1 A_WeaponReady(WRF_ALLOWZOOM|WRF_ALLOWRELOAD)
    TACT B 0 A_JumpIfInventory("Reloading",1,"Reload")
    loop
  Select:
    TACT B 0
    TACT B 0 A_TakeInventory("Reloading",1)
    TACT B 0 A_PlaySoundEx("weapon/draw","SoundSlot5")
    TACT B 0 A_Raise
    TACT B 1 A_Raise
    Goto Select+3
  Deselect:
    TACT B 0
    TACT B 0 A_TakeInventory("Reloading",1)
    TACT B 0 A_PlaySoundEx("weapon/down","SoundSlot5")
    TACT B 0 A_Lower
    TACT B 1 A_Lower
    Goto Deselect+3
  Fire:
    TACT B 0 A_JumpIf(ACS_NamedExecuteWithResult("RefTacIns",2,0,0) == 1, "Fire2")
    TACT B 0 A_JumpIfInventory("Perk1_SOH",1,"Fire_SOH")
    TACT CD 3
    TACT E 3 A_PlayWeaponSound("tactical/insert")
    TACT FGHLMNOP 3
    TACT Q 3 A_PlayWeaponSound("tactical/insert")
    TACT RIHLMNOP 3
    TACT Q 3 A_PlayWeaponSound("tactical/insert")
    TACT R 0 A_TakeInventory("RevivalKitAmmo",1)
    TACT R 0 ACS_NamedExecuteAlways("RefTacIns",0,0,0,0)
    TACT R 3 A_PlaySound("tactical/flare")
    TACT IJK 3
	TNT1 A 30
    TACT A 3
    Goto Ready
  Fire_SOH:
    TACT CD 2
    TACT E 2 A_PlayWeaponSound("tactical/insert")
    TACT FGHLMNOP 2
    TACT Q 2 A_PlayWeaponSound("tactical/insert")
    TACT RIHLMNOP 2
    TACT Q 2 A_PlayWeaponSound("tactical/insert")
    TACT R 0 A_TakeInventory("RevivalKitAmmo",1)
    TACT R 0 ACS_NamedExecuteAlways("RefTacIns",0,0,0,0)
    TACT R 2 A_PlaySound("tactical/flare")
    TACT IJK 2
    TNT1 A 20
    TACT A 2
    Goto Ready
  Fire2:
    TACT B 0 ACS_NamedExecuteAlways("RefTacIns",0,3,0,0)
    TACT B 0 A_JumpIfInventory("Perk1_SOH",1,2)
    TACT B 30 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
    Goto Ready
    TACT B 20 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
    Goto Ready
  Zoom:
  AltFire:
    TACT B 0 ACS_NamedExecuteAlways("RefTacIns",0,4,0,0)
    TACT B 0 A_JumpIfInventory("Perk1_SOH",1,2)
    TACT B 30 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
    Goto Ready
    TACT B 20 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
    Goto Ready
  Reload:
    TACT B 0 ACS_NamedExecuteAlways("RefTacIns",0,1,0,0)
    TACT B 0 A_JumpIfInventory("Perk1_SOH",1,2)
    TACT B 30 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
    Goto Ready
    TACT B 20 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
    Goto Ready
  Spawn:
    ATTA H 1
    stop
  FragGrenade:
    U45F A 0 ACS_NamedExecuteAlways("RefSpeak",0,1,0,0)
    U45F A 0 A_ZoomFactor(1.0)
    U45A L 0 A_TakeInventory("Aiming",1)
    U45A L 0 A_TakeInventory("Reloading",1)
    U45F A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    U45A L 0 A_JumpIfInventory("Perk1_SOH_Pro",1,"FragGrenade_SOH")
    GRNA ABC 2
    GRNA D 2 A_PlaySound("grenade/pinpull")
    GRNA EFGH 2
    TNT1 A 15
    TNT1 A 0 A_PlaySound("grenade/throw")
    GRNA A 0 A_PlaySoundEx("us/grenades","Voice")
    GRNA IJK 2
    GRNA L 0 A_TakeInventory("GrenadeAmmo",1)
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
    U45A L 0 A_TakeInventory("Aiming",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    GRNA L 0 A_JumpIfInventory("Perk4_Stun",1,"StunGrenade")
    GRNA L 0 A_JumpIfInventory("Perk4_Inc",1,"IncGrenade")
    GRNA L 2 A_FireCustomMissile("FragGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 2
    TACT A 3
    Goto Ready
  FragGrenade_SOH:
    GRNA ABC 1
    GRNA D 1 A_PlaySound("grenade/pinpull")
    GRNA EFGH 1
    TNT1 A 10
    TNT1 A 0 A_PlaySound("grenade/throw")
    GRNA A 0 A_PlaySoundEx("us/grenades","Voice")
    GRNA IJK 1
    GRNA L 0 A_TakeInventory("GrenadeAmmo",1)
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
    U45A L 0 A_TakeInventory("Aiming",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    GRNA L 0 A_JumpIfInventory("Perk4_Stun",1,"StunGrenade_SOH")
    GRNA L 0 A_JumpIfInventory("Perk4_Inc",1,"IncGrenade_SOH")
    GRNA L 1 A_FireCustomMissile("FragGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 1
    TACT A 3
    Goto Ready
  KnifeAttack:
    U45F A 0 A_ZoomFactor(1.0)
    U45A L 0 A_JumpIfInventory("ThrowingGrenade",1,"FragGrenade")
    U45A L 0 A_TakeInventory("Aiming",1)
    U45A L 0 A_TakeInventory("Reloading",1)
    U45F A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    U45A L 0 A_JumpIfInventory("Perk1_SOH_Pro",1,"KnifeAttack_SOH")
    U45C A 0 A_JumpIfInventory("Perk3_Commando",1,"KnifeAttack_Commando")
    KNFA A 0 ACS_NamedExecuteAlways("RefSlash",0,0,0,0)
    KNFA AB 1
    KNFA B 0 A_PlaySound("knife/swing")
    KNFA C 1 A_CustomPunch(102,1,0,"KnifePuff",104)
    KNFA DEFGHIJKL 1
    TNT1 A 30
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    TACT A 3
    Goto Ready
  KnifeAttack_Commando:
    KNFA A 0 ACS_NamedExecuteAlways("RefSlash",0,0,0,0)
    KNFA AB 1
    KNFA B 0 A_PlaySound("knife/swing")
    KNFA C 1 A_CustomPunch(102,1,0,"KnifePuff",160)
    KNFA DEFGHIJKL 1
    TNT1 A 30
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    TACT A 3
    Goto Ready
  KnifeAttack_SOH:
    U45C A 0 A_JumpIfInventory("Perk3_Commando",1,"KnifeAttack_SOH_Commando")
    KNFA A 0 ACS_NamedExecuteAlways("RefSlash",0,0,0,0)
    KNFA AB 1
    KNFA B 0 A_PlaySound("knife/swing")
    KNFA C 1 A_CustomPunch(102,1,0,"KnifePuff",104)
    KNFA DEFGHIJKL 1
    TNT1 A 20
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    TACT A 3
    Goto Ready
  KnifeAttack_SOH_Commando:
    KNFA A 0 ACS_NamedExecuteAlways("RefSlash",0,0,0,0)
    KNFA AB 1
    KNFA B 0 A_PlaySound("knife/swing")
    KNFA C 1 A_CustomPunch(102,1,0,"KnifePuff",160)
    KNFA DEFGHIJKL 1
    TNT1 A 20
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    TACT A 3
    Goto Ready
  StunGrenade:
    GRNA L 2 A_FireCustomMissile("StunGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 2
    TACT A 3
    Goto Ready
  IncGrenade:
    GRNA L 2 A_FireCustomMissile("IncGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 2
    TACT A 3
    Goto Ready
  StunGrenade_SOH:
    GRNA L 1 A_FireCustomMissile("StunGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 1
    TACT A 3
    Goto Ready
  IncGrenade_SOH:
    GRNA L 1 A_FireCustomMissile("IncGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 1
    TACT A 3
    Goto Ready
  }
}

ACTOR TacticalInsertionPlaced
{
  Game Doom
  Radius 4
  Height 4
  Health 50
  //+SHOOTABLE
  //+SOLID
  //+NOCLIP
  //+NOBLOCKMAP
  -TELESTOMP
  States
  {
  Spawn:
    CAND A 105 bright A_SpawnItemEx("WeaponSmokePuff", 0, 0, 14, 0, 0, 0, 0, 128, 0)
    loop
  Death:
    CAND A 35 bright ACS_NamedExecuteAlways("RefTacIns",0,4,0,0)
    stop
  }
}

//Gives the TacticalInsertion
actor TacticalInsertionPickup : CustomInventory
{
  inventory.pickupmessage "Tactical Insertion! \cgPlace on the ground to mark your next \cdrespawn."
  inventory.pickupsound "misc/w_pkup"
  +INVENTORY.AUTOACTIVATE
  inventory.respawntics 1050
  scale 0.75
  States
  {
  Spawn:
    BKPK A -1
    stop
  Pickup:
    BKPK A 0 A_GiveInventory("TacticalInsertion",1)
    stop
  }
}

actor "Revival Kit" : RGUWeapon
{
  weapon.ammotype2 "RevivalKitAmmo"
  weapon.ammouse2 1
  weapon.ammogive2 0
  weapon.selectionorder 500
  +WEAPON.PRIMARY_USES_BOTH
  +WEAPON.WIMPY_WEAPON
  inventory.pickupmessage "You got the Revival Kit. Now go help your buddies stay alive. Wait, how'd you find this?"
  states
  {
  Ready:
    TACT I 0 A_JumpIfInventory("ThrowingGrenade",1,"FragGrenade")
    TACT I 0 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    TACT I 1 A_WeaponReady(WRF_ALLOWZOOM)
    loop
  Select:
    TACT I 0 A_PlaySoundEx("weapon/draw","SoundSlot5")
    TACT I 0 A_Raise
    TACT I 1 A_Raise
    Goto Select+1
  Deselect:
    TACT I 0 A_PlaySoundEx("weapon/down","SoundSlot5")
    TACT I 0 A_Lower
    TACT I 1 A_Lower
    Goto Deselect+1
  Fire:
    TACT R 0 A_JumpIfInventory("Perk1_SOH",1,"Fire_SOH")
    TACT R 3
    TACT Q 3 A_PlayWeaponSound("revival/open")
    TACT PDEFGHLMNO 3
    TACT P 3 A_PlayWeaponSound("revival/insert")
    TACT Q 1 A_FireBullets (0, 0, 1, 0, "RevivePuff", 1, 256)
	//KNFA C 1 A_CustomPunch(0,1,0,"RevivePuff",104)
	TACT Q 2 A_RadiusGive("RefReviver",72,RGF_PLAYERS,1)
    TACT RIJK 3
    TNT1 A 30
    TACT KJ 2
    Goto Ready
  Fire_SOH:
    TACT R 2 A_PlayWeaponSound("revival/open")
    TACT QPDEFGHLMNO 2
    TACT P 2 A_PlayWeaponSound("revival/insert")
    TACT Q 1 A_FireBullets (0, 0, 1, 0, "RevivePuff", 1, 256)
	TACT Q 1 A_RadiusGive("RefReviver",72,RGF_PLAYERS,1)
    TACT RIJK 2
    TNT1 A 20
    TACT KJ 2
    Goto Ready
  Zoom:
  AltFire:
    TACT R 0 A_JumpIfInventory("Perk1_SOH",1,"AltFire_SOH")
    TACT R 3 A_PlayWeaponSound("revival/open")
    TACT QPDEFGHLMNO 3
    TACT P 3 A_PlayWeaponSound("revival/insert")
    TACT Q 0 A_SpawnItemEx("SpawnedMedikit",36,0,16,8,0,0,0,0,0)
    TACT Q 3 A_TakeInventory("RevivalKitAmmo",1)
    TACT RIJK 3
    TNT1 A 15
    TACT KJ 2
    Goto Ready
  AltFire_SOH:
    TACT R 2
    TACT Q 2 A_PlayWeaponSound("revival/open")
    TACT PDEFGHLMNO 2
    TACT P 2 A_PlayWeaponSound("revival/insert")
    TACT Q 0 A_SpawnItemEx("SpawnedMedikit",36,0,16,8,0,0,0,0,0)
    TACT Q 2 A_TakeInventory("RevivalKitAmmo",1)
    TACT RIJK 2
    TNT1 A 10
    TACT KJ 2
    Goto Ready
  Spawn:
    STIM B 1
    stop
  FragGrenade:
    U45F A 0 ACS_NamedExecuteAlways("RefSpeak",0,1,0,0)
    U45F A 0 A_ZoomFactor(1.0)
    U45A L 0 A_TakeInventory("Aiming",1)
    U45A L 0 A_TakeInventory("Reloading",1)
    U45F A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    U45A L 0 A_JumpIfInventory("Perk1_SOH_Pro",1,"FragGrenade_SOH")
    GRNA ABC 2
    GRNA D 2 A_PlaySound("grenade/pinpull")
    GRNA EFGH 2
    TNT1 A 15
    TNT1 A 0 A_PlaySound("grenade/throw")
    GRNA A 0 A_PlaySoundEx("us/grenades","Voice")
    GRNA IJK 2
    GRNA L 0 A_TakeInventory("GrenadeAmmo",1)
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
    U45A L 0 A_TakeInventory("Aiming",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    GRNA L 0 A_JumpIfInventory("Perk4_Stun",1,"StunGrenade")
    GRNA L 0 A_JumpIfInventory("Perk4_Inc",1,"IncGrenade")
    GRNA L 2 A_FireCustomMissile("FragGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 2
    TACT KJ 2
    Goto Ready
  FragGrenade_SOH:
    GRNA ABC 1
    GRNA D 1 A_PlaySound("grenade/pinpull")
    GRNA EFGH 1
    TNT1 A 10
    TNT1 A 0 A_PlaySound("grenade/throw")
    GRNA A 0 A_PlaySoundEx("us/grenades","Voice")
    GRNA IJK 1
    GRNA L 0 A_TakeInventory("GrenadeAmmo",1)
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
    U45A L 0 A_TakeInventory("Aiming",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    GRNA L 0 A_JumpIfInventory("Perk4_Stun",1,"StunGrenade_SOH")
    GRNA L 0 A_JumpIfInventory("Perk4_Inc",1,"IncGrenade_SOH")
    GRNA L 1 A_FireCustomMissile("FragGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 1
    TACT KJ 2
    Goto Ready
  KnifeAttack:
    U45F A 0 A_ZoomFactor(1.0)
    U45A L 0 A_JumpIfInventory("ThrowingGrenade",1,"FragGrenade")
    U45A L 0 A_TakeInventory("Aiming",1)
    U45A L 0 A_TakeInventory("Reloading",1)
    U45F A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    U45A L 0 A_JumpIfInventory("Perk1_SOH_Pro",1,"KnifeAttack_SOH")
    U45C A 0 A_JumpIfInventory("Perk3_Commando",1,"KnifeAttack_Commando")
    KNFA A 0 ACS_NamedExecuteAlways("RefSlash",0,0,0,0)
    KNFA AB 1
    KNFA B 0 A_PlaySound("knife/swing")
    KNFA C 1 A_CustomPunch(102,1,0,"KnifePuff",104)
    KNFA DEFGHIJKL 1
    TNT1 A 30
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    TACT KJ 2
    Goto Ready
  KnifeAttack_Commando:
    KNFA A 0 ACS_NamedExecuteAlways("RefSlash",0,0,0,0)
    KNFA AB 1
    KNFA B 0 A_PlaySound("knife/swing")
    KNFA C 1 A_CustomPunch(102,1,0,"KnifePuff",160)
    KNFA DEFGHIJKL 1
    TNT1 A 30
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    TACT KJ 2
    Goto Ready
  KnifeAttack_SOH:
    U45C A 0 A_JumpIfInventory("Perk3_Commando",1,"KnifeAttack_SOH_Commando")
    KNFA A 0 ACS_NamedExecuteAlways("RefSlash",0,0,0,0)
    KNFA AB 1
    KNFA B 0 A_PlaySound("knife/swing")
    KNFA C 1 A_CustomPunch(102,1,0,"KnifePuff",104)
    KNFA DEFGHIJKL 1
    TNT1 A 20
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    TACT KJ 2
    Goto Ready
  KnifeAttack_SOH_Commando:
    KNFA A 0 ACS_NamedExecuteAlways("RefSlash",0,0,0,0)
    KNFA AB 1
    KNFA B 0 A_PlaySound("knife/swing")
    KNFA C 1 A_CustomPunch(102,1,0,"KnifePuff",160)
    KNFA DEFGHIJKL 1
    TNT1 A 20
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    TACT KJ 2
    Goto Ready
  StunGrenade:
    GRNA L 2 A_FireCustomMissile("StunGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 2
    TACT KJ 2
    Goto Ready
  IncGrenade:
    GRNA L 2 A_FireCustomMissile("IncGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 2
    TACT KJ 2
    Goto Ready
  StunGrenade_SOH:
    GRNA L 1 A_FireCustomMissile("StunGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 1
    TACT KJ 2
    Goto Ready
  IncGrenade_SOH:
    GRNA L 1 A_FireCustomMissile("IncGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 1
    TACT KJ 2
    Goto Ready
  }
}

ACTOR Stimpack2 : Stimpack
{
  inventory.pickupsound "pickup/stim"
}

ACTOR Medikit2 : Medikit
{
  inventory.pickupsound "pickup/medi"
}

actor MedikitSpawner : RandomSpawner replaces Medikit
{
    DropItem "Medikit2", 255, 8
    DropItem "RevivalKitAmmo"
}
actor StimpackSpawner : RandomSpawner replaces Stimpack
{
    DropItem "Stimpack2", 255, 4
    DropItem "RevivalKitAmmo"
}
actor RevivalKitAmmo : Ammo
{
    inventory.icon "STIMB0"
    inventory.amount 2
    inventory.maxamount 6
    ammo.backpackamount 2
    ammo.backpackmaxamount 9
    Scale 0.9
    +IGNORESKILL
    inventory.pickupsound "weapon/draw1"
    inventory.pickupmessage "Picked up 2 field supplies!"
    States
    {
    Spawn:
      STIM B -1
      Stop
    }
}
actor RevivePuff : BulletPuff
{
  renderstyle None
  +NOBLOCKMAP
  +NOGRAVITY
  -ALLOWPARTICLES
  +BLOODLESSIMPACT
  +PIERCEARMOR
  damagetype "Revive"
  +NOEXTREMEDEATH
  +NODAMAGETHRUST
  +PUFFONACTORS
  -ACTIVATEIMPACT
  -ACTIVATEPCROSS
  +FORCEPAIN
  states
  {
  Spawn:
    TNT1 A 1
    //TNT1 A 0 A_GiveToTarget("HitIndicator",1)
    TNT1 A 30 A_RadiusGive("RefReviver",72,RGF_PLAYERS,1)
    //TNT1 A 15 A_Explode(6,72,0)
    stop
  }
}

actor SpawnedMedikit : Medikit2
{
  Scale 0.8
  inventory.amount 30
  -TELESTOMP
  States
  {
  Spawn:
    MEDI B 8505
	MEDI B 105 A_FadeOut(0.05)
    wait
  }
}