actor SearchSnakeBoss : Weapon
{
Weapon.AmmoUse 1
Weapon.AmmoGive 28
Weapon.SlotNumber 1
Obituary "%o was caught by one of %k's Search Snakes."
weapon.ammotype "SnakeManAmmo"
inventory.pickupsound "weapon/weaponup"
+WEAPON.AMMO_OPTIONAL
+WEAPON.DONTBOB
/*Weapon.AmmoUse2 1
Weapon.AmmoGive2 28
weapon.ammotype2 "Stamina"
+WEAPON.ALT_AMMO_OPTIONAL*/
Scale 2.0
States
{
Spawn:
TNT1 A 0
stop
Ready:
SNAB A 0 ACS_ExecuteAlways(998,0,12)
SNAB A 0 A_TakeInventory("Climbing",1)
SNAB A 0 A_GunFlash
SNAB A 0 A_JumpIfInventory("SnakeManAmmo",1,"Ready2")
SNAB A 5 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSWITCH)
SNAB A 0 A_GiveInventory("SnakeManAmmo",1)
Goto Ready+3
Ready2:
SNAB A 5 A_WeaponReady(WRF_NOSWITCH)
SNAB A 0 A_GiveInventory("SnakeManAmmo",1)
loop
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
SNAB A 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
SNAB A 1 A_Raise
Loop
Fire:
SNAB A 0 A_JumpIfNoAmmo("NoAmmo")
SNAB A 0 A_playSoundEx("weapon/mbuster","Weapon")
SNAB A 0 A_FireCustomMissile("SearchmanSnakeStart",0,1,8,0)
SNAB A 0 A_TakeInventory("SnakeManAmmo",1)
SNAB BC 3
SNAB A 4
SNAB A 0 A_Refire
Goto Ready+3
AltFire:
SNAB A 0 A_GiveInventory("Climbing",1)
SNAA D 0 A_FireCustomMissile("MeleeSnake")
SNAA D 0 A_GunFlash
SNAA ABCD 2
SNAA D 0 A_FireCustomMissile("MeleeSnake")
SNAA D 0 A_GunFlash
SNAA GFED 2
Goto Ready+1
NoAmmo:
SNAB A 0
//SNAB A 1 ACS_Execute(979,0)
Goto Ready+1
Flash:
TNT1 A 0 A_JumpIfInventory("Climbing",1,"Climbing")
goto Rest
Climbing:
TNT1 AAAAAAAAAAAA 2 A_FireBullets (0, 0, 1, 0, "ClimbChecker", 0, 43) 
stop
Rest:
//TNT1 A 1 A_JumpIf(momz==0, "Rest2")
TNT1 A 1 A_JumpIf(z-floorz<1, "Rest2")
loop
Rest2:
TNT1 A 1 A_GiveInventory("Stamina",10)
goto Rest
NoFlash:
TNT1 A 0
stop
}
}
actor SnakeManAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 28
}

actor Stamina : Ammo
{
inventory.amount 1
inventory.maxamount 500
}

actor Climbing : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor ClimbChecker : BulletPuff
{
+PUFFGETSOWNER
States
{
Spawn:
TNT1 A 1
stop
Crash:
TNT1 A 1
TNT1 A 0 A_GiveToTarget("Climb",1)
stop
}
}

actor Climb : CustomInventory
{
+INVENTORY.AUTOACTIVATE
states
{
Pickup:
TNT1 A 0 //A_Stop
TNT1 A 0 A_JumpIfInventory("Stamina",1,"Success")
stop
Success:
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,3)
TNT1 A 0 A_TakeInventory("Stamina",1)
TNT1 A 0 ThrustThingZ(0,20,0,0)
TNT1 A 0
stop
}
}

actor MeleeSnake
{
PROJECTILE
Radius 7
Height 7
scale 2.5
damagetype "Snake"
damage (10)
Obituary "%o was poked by %k."
speed 40
States
{
Spawn:
TNT1 A 3
stop
}
}

actor SearchmanSnakeStart : SearchSnakeStartC
{
damage (15)
speed 24
States
{
Spawn:
//SNAK A 0
SNAK A 1 //ThrustThingZ(0,24,0,1)
SNAK A 1
goto Spawn+1
Death:
TNT1 A 1 A_SpawnItemEx("SearchSnakeB",0,0,0,18,0,0,0,0,0)
stop
}
}

actor SearchSnakeB : SearchSnakeC
{
damage (23)
}