//Deadly storm damage reduced: 11 > 9
actor Searchman : VCBaseClass
{
Player.ScoreIcon "SEARMUGS"
player.startitem "BaseFlagPack", 1
player.displayname "Searchman"
player.soundclass "Searchmanc"
player.startitem "HomingSniperBoss"
player.startitem "UltimateAttackItem3MM8"
player.startitem "UltSoundWatcherSpawn3"
player.startitem "Base112Ammo", 112
player.viewheight 52
player.startitem "IsFromMM8"
player.startitem "NoHealthBar"
player.jumpz 14
States
{
Spawn:
SEAR E 0
SEAR E 1 A_JumpIf(z-floorz>0, "Jumping")
SEAR AAAAAIIIIIJJJJJKKKKKAAAAAAAAAAAAAAA 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+2
See:
SEAR BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+1
Jumping:
SEAR M 1 A_JumpIf(z-floorz<=0, "SearchLand")
wait
SearchLand:
SEAR LLLL 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+2
Animation0:
Missile:
SEAR FFFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile")
Animation1:
Missile2:
SEAR GGGGG 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
Goto Spawn+2
JumpingMissile:
SEAR VVVVV 1 A_JumpIf(z-floorz<=0, "Missile")
JumpingMissile2:
SEAR VVVVV 1 A_JumpIf(z-floorz<=0, "Missile2")
Goto Jumping
Animation2:
DeadlyStormA:
SEAR SSSSS 1 A_JumpIf(z-floorz>0, "JumpingDeadlyStormA")
Animation3:
DeadlyStormB:
SEAR TTTTT 1 A_JumpIf(z-floorz>0, "JumpingDeadlyStormB")
Animation4:
DeadlyStormC:
SEAR UUUUU 1 A_JumpIf(z-floorz>0, "JumpingDeadlyStormC")
Goto Spawn+2
JumpingDeadlyStormA:
SEAR OOOOO 1 A_JumpIf(z-floorz<=0, "DeadlyStormA")
JumpingDeadlyStormB:
SEAR PPPPP 1 A_JumpIf(z-floorz<=0, "DeadlyStormB")
JumpingDeadlyStormC:
SEAR QQQQQ 1 A_JumpIf(z-floorz<=0, "DeadlyStormC")
Goto Jumping
Animation5:
SearchDisk:
SEAR RRRRR 1 A_JumpIf(z-floorz>0, "JumpingSearchDisk")
Animation6:
SearchDisk2:
SEAR RRRRR 1 A_JumpIf(z-floorz>0, "JumpingSearchDisk2")
Goto Spawn+2
JumpingSearchDisk:
SEAR NNNNN 1 A_JumpIf(z-floorz<=0, "SearchDisk")
JumpingSearchDisk2:
SEAR NNNNN 1 A_JumpIf(z-floorz<=0, "SearchDisk2")
Goto Jumping
Animation7:
EndAnim:
SEAR A 0
Goto Spawn+2
ClassPain:
SEAR XXXXXXXXXX 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1

Death.FlameSword:
Death.FlameSwordSpark:
Death.SwordMan:
Death.SwordMan2:
Death.SwordManAlt:
Death.SwordManUlt:
Death.TrioFlameSword:
TNT1 A 0 A_SpawnItemEx("DeadBurnedSearchMan",0,0,0,0,0,0,0,1)
NOFX Z 20 ACS_ExecuteAlways(999,0,0)
NOFX A 1 A_CheckPlayerDone
wait
ClassDeath:
TNT1 A 0 A_SpawnItemEx("DeadSearchMan",0,0,0,0,0,0,0,1)
TNT1 A 20 ACS_ExecuteAlways(999,0,0)
TNT1 A 0 A_StopSoundEx("Weapon")
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
SEAR H 0 A_JumpIfInTargetInventory("HomingSniperWepM",1,2)
SEAR H 0 A_GiveToTarget("WeaponGetter")
SEAR H 0 A_GiveToTarget("HomingSniperWepM")
goto ClassDeath
}
}

actor DeadSearchMan : DeadTenguMan
{
meleerange 8864
States
{
Spawn:
SEAR H 0
"####" "#" 0
goto loopit

Death:
TNT1 A 0 A_PlaySoundEx("searchman/dead","Auto")
TNT1 A 0 A_PlaySoundEx("mm8/dead","Auto")
TNT1 A 2 A_SpawnItemEx("FakeDeathFXMM8",0,0,32)
stop
}
}

actor DeadBurnedSearchMan
{
PROJECTILE
+MISSILE
species "DeadBody"
+THRUSPECIES
+THRUACTORS
+NOGRAVITY
+NOEXPLODEFLOOR
+DONTBLAST
+BOUNCEONWALLS
WallBounceFactor 0.0
scale 2.5
reactiontime 30
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_PlaySoundEx("weapons/mm2/atomicfirefire","Weapon")
Spawn2:
SE2R MN 1 A_ChangeVelocity(-3,0,0,CVF_RELATIVE|CVF_REPLACE)
TNT1 AA 0 A_SpawnItemEx("SearchManBurnFX",Random(-48,48),Random(-48,48),Random(16,80)) TNT1 A 0 A_CountDown
loop
Death:
TNT1 A 0 A_Stop
TNT1 A 0 A_ChangeFlag("NOINTERACTION",True)
SE2R M 8 ACS_ExecuteAlways(971,0,5678)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MagmaUltDeathFX",random(0,48),0,random(0,64),0,0,frandom(0.0,1.0),random(0,359))
TNT1 A 0 A_PlaySoundEx("mm8/dead","Auto")
TNT1 A 0 A_PlaySoundEx("searchman/dead","Auto")
TNT1 A 2 A_PlaySoundEx("misc/lava","SoundSlot6")
Stop
}
}

actor SearchManBurnFX : BasicClientSide
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Jump(256,"A","B")
wait
A:
SE2R ABCDEF 2
stop
B:
SE2R GHIJKL 2
stop
}
}

Actor HomingSniperBoss : VCBaseWeapon
{
weapon.ammotype "Base112Ammo"
weapon.ammotype2 "Base28Ammo"
Obituary "$OB_SEARCHMAN1"
States
{
Ready:
TNT1 A 0 A_TakeInventory("SearchTargetID1",99) TNT1 A 0 A_TakeInventory("SearchTargetID2",99) TNT1 A 0 A_TakeInventory("SearchTargetID3",99) TNT1 A 0 A_TakeInventory("SearchTargetID4",99)
TNT1 A 0 A_JumpIfInventory("CamouflagedSearchMan",1,"ReadyGuerilla")
TNT1 A 0 A_JumpIfInventory("Base112Ammo",18,"Ready.TF")
HSN8 A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",2,20)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,28)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
HSN8 A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",2,20)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,28)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
TNT1 A 0 A_GiveInventory("Base112Ammo",2)
Goto Ready

ReadyGuerilla:
HSN8 A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",2,20)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
HSN8 A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",2,20)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
TNT1 A 0 A_GiveInventory("Base112Ammo",2)
Goto Ready

Ready.TF:
TNT1 A 0 A_JumpIfInventory("CamouflagedSearchMan",1,"ReadyGuerilla.TF")
HSN8 A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",2,20)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,28)) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1") TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
HSN8 A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",2,20)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,28)) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1") TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
TNT1 A 0 A_GiveInventory("Base112Ammo",2)
Goto Ready

ReadyGuerilla.TF:
HSN8 A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",2,20)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,28)) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1") TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
HSN8 A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",2,20)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,28)) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1") TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
TNT1 A 0 A_GiveInventory("Base112Ammo",2)
Goto Ready

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
HSN8 A 1 A_Lower
Loop

Select:
TNT1 A 0 A_SpawnItemEx("SearchCloakWatcher")
TNT1 A 0 ACS_ExecuteAlways(991,0,8864)
Select2:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
HSN8 A 1 A_Raise
Loop

Fire:
TNT1 A 0 A_JumpIfInventory("CamouflagedSearchMan",1,"ScopeFireGuerilla")
TNT1 A 0 A_JumpIfInventory("SearchBushStock",1,"SummonBushes")
HSN8 BCD 2 ACS_NamedExecuteWithResult("VC_SetState",0)
TNT1 A 0 A_JumpIfInventory("Base112Ammo",36,"ScopeStart")
Goto ScopeRelease

ScopeStart:
TNT1 A 0 A_SpawnItemEx("HomingSniperSounder")

ScopeCharging:
TNT1 A 0 A_GiveInventory("Base28Ammo",1)
TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
HSN8 H 1 A_JumpIfInventory("CamouflagedSearchMan",1,"ScopeFireGuerilla")
TNT1 A 0 A_FireCustomMissile("SearchManTargeter")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0)
HSN8 H 1 A_JumpIfInventory("CamouflagedSearchMan",1,"ScopeFireGuerilla")
TNT1 A 0 A_FireCustomMissile("SearchManTargeter")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0)
TNT1 A 0 A_Refire("ScopeCharging")
goto ScopeRelease

ScopeRelease:
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
TNT1 A 0 A_JumpIfInventory("CamouflagedSearchMan",1,"ScopeFireGuerilla")
TNT1 A 0 A_GiveInventory("SearchM1ReleaseHandler1",1)
TNT1 A 0 A_JumpIfInventory("Base28Ammo",28,"ScopeReleaseHoming")

ScopeReleaseNormal:
TNT1 A 0 A_GiveInventory("SearchM1ReleaseHandler2",1)
HSN8 LI 1 ACS_NamedExecuteWithResult("VC_SetState",1)
HSN8 JK 1 ACS_NamedExecuteWithResult("VC_SetState",0)
TNT1 A 0 A_TakeInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",1,"ScopeReleaseNormal")
Goto EndMain

ScopeReleaseHoming:
TNT1 A 0 A_GiveInventory("SearchChargedM1Handler",1)
TNT1 A 0 A_JumpIfInventory("SearchTargetID4",1,"Fire4") TNT1 A 0 A_JumpIfInventory("SearchTargetID3",1,"Fire3")
TNT1 A 0 A_JumpIfInventory("SearchTargetID2",1,"Fire2") TNT1 A 0 A_JumpIfInventory("SearchTargetID1",1,"Fire1")
goto Fire0
Fire4: HSN8 L 2 A_FireCustomMissile("HomingSniperB4",0,0,8,0) TNT1 A 0 A_TakeInventory("SearchTargetID4",99) TNT1 A 0 A_TakeInventory("SearchTargetID4CD",999) Goto HomingCont
Fire3: HSN8 L 2 A_FireCustomMissile("HomingSniperB3",0,0,8,0) TNT1 A 0 A_TakeInventory("SearchTargetID3",99) TNT1 A 0 A_TakeInventory("SearchTargetID3CD",999) Goto HomingCont
Fire2: HSN8 L 2 A_FireCustomMissile("HomingSniperB2",0,0,8,0) TNT1 A 0 A_TakeInventory("SearchTargetID2",99) TNT1 A 0 A_TakeInventory("SearchTargetID2CD",999) Goto HomingCont
Fire1: HSN8 L 2 A_FireCustomMissile("HomingSniperB1",0,0,8,0) TNT1 A 0 A_TakeInventory("SearchTargetID1",99) TNT1 A 0 A_TakeInventory("SearchTargetID1CD",999) Goto HomingCont
Fire0: HSN8 L 2 A_FireCustomMissile("HomingSniperRMHoming",0,0,8) Goto HomingCont

HomingCont:
HSN8 IJK 2
TNT1 A 0 A_JumpIfInventory("CutterFlag",1,1)
Goto EndMain
TNT1 A 0
goto ScopeReleaseHoming

ScopeFireGuerilla:
TNT1 A 0 A_JumpIfInventory("Base112Ammo",20,1)
Goto Skip
TNT1 A 0 A_GiveInventory("CutterFlag",4)

ScopeFireGuerillaCont:
TNT1 A 0 A_GiveInventory("SearchUltM1Handler",1)
HSN8 LIJK 1
TNT1 A 0 A_TakeInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",1,"ScopeFireGuerillaCont")
Goto EndMain

SummonBushes:
TNT1 A 0 A_PlaySoundEx("weapon/SearchBush", "Weapon")
TNT1 A 0 A_TakeInventory("SearchBushStock",1)
TNT1 A 0 A_SpawnItemEx("SearchBushStart",0,0,32,0,0,0,0)
TNT1 A 0 A_SpawnItemEx("SearchBushStart",0,0,32,0,0,0,118)
TNT1 A 0 A_SpawnItemEx("SearchBushStart",0,0,32,0,0,0,237)
HSN8 A 1 Offset(0,37)
HSN8 A 1 Offset(0,42)
HSN8 A 1 Offset(0,47)
HSN8 A 1 Offset(0,52)
HSN8 A 1 Offset(0,57)
HSN8 A 25 Offset(0,62)
HSN8 A 1 Offset(0,57)
HSN8 A 1 Offset(0,52)
HSN8 A 1 Offset(0,47)
HSN8 A 1 Offset(0,42)
HSN8 A 1 Offset(0,37)
Goto Skip

EndMain:
HSN8 HHHHHH 2 A_TakeInventory("CutterFlag",999)

EndMainCont:
HSN8 DCB 2 A_ClearRefire

Skip:
TNT1 A 0 A_TakeInventory("BaseCustomFlag1")
Goto Ready

Altfire:
RATU A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
TNT1 A 0 A_JumpIfInventory("CamouflagedSearchMan",1,"GuerillaWarfare")
DKC1 A 0 A_PlaySoundEx("weapon/dark1tank","Weapon")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_GiveInventory("NoSpeed",1)
TNT1 A 0 A_SetGravity(0.0)
HSN8 B 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2) HSN8 B 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
HSN8 C 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2) HSN8 C 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
HSN8 D 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3) HSN8 D 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
HSN8 E 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3) HSN8 E 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
HSN8 F 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4) HSN8 F 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
TNT1 A 0 A_PlaySoundEx("weapon/searchopen","Weapon")
HSN8 G 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4) HSN8 G 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
HSN8 G 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4) HSN8 G 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
HSN8 G 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4) HSN8 G 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
TNT1 A 0 A_TakeInventory("NoSpeed",999)
TNT1 A 0 A_GiveInventory("GalaxyFlySlow",1)
TNT1 A 0 A_GiveInventory("GravityRestore")

DeadlyStormHold:
TNT1 A 0 A_JumpIfInventory("Base112Ammo",1,1)
Goto EndAlt
TNT1 A 0 A_GiveInventory("SearchM2Handler",1)
TNT1 A 0 A_GiveInventory("SearchFloatHandler",1)
TNT1 A 0 A_SpawnItemEx("SearchBoostFX",-25,-20,20)
TNT1 A 0 A_SpawnItemEx("SearchBoostFX",-25,20,20)
HSN8 G 1 Offset(0,32)A_TakeInventory("Base112Ammo",1)
TNT1 A 0 A_GiveInventory("SearchFloatHandler",1)
HSN8 G 1 Offset(0,37)A_TakeInventory("Base112Ammo",1)
TNT1 A 0 A_SpawnItemEx("SearchBoostFX",-25,-20,20)
TNT1 A 0 A_SpawnItemEx("SearchBoostFX",-25,20,20)
TNT1 A 0 A_GiveInventory("SearchFloatHandler",1)
HSN8 G 1 Offset(0,42)A_TakeInventory("Base112Ammo",1)
TNT1 A 0 A_GiveInventory("SearchFloatHandler",1)
HSN8 G 1 Offset(0,47)A_TakeInventory("Base112Ammo",1) 
TNT1 A 0 A_Refire("DeadlyStormHold")
goto EndAlt

GuerillaWarfare:
TNT1 A 0 A_TakeInventory("CamouflagedSearchMan")
HSN8 L 0 A_GiveInventory("SearchBushDestroy",3)
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",32,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",28,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",24,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",20,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",16,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",12,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",8,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",4,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",0,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",-4,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",-8,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",-12,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",-16,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",-20,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",-24,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",-28,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1) HSN8 LI 1
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon") TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla2",-32,0,8) TNT1 A 0 A_TakeInventory("Base28Ammo",1) TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0) HSN8 LI 1
HSN8 HHHHHDCB 2
Goto Skip2

EndAlt:
TNT1 A 0 A_WeaponReady(WRF_NOFIRE)
TNT1 A 0 A_ClearRefire
TNT1 A 0 A_TakeInventory("GalaxyFlySlow",1)
HSN8 GG 2 ACS_NamedExecuteWithResult("VC_SetState",4)
HSN8 GFE 2 ACS_NamedExecuteWithResult("VC_SetState",3)
HSN8 D 2 ACS_NamedExecuteWithResult("VC_SetState",2)
HSN8 C 2 ACS_NamedExecuteWithResult("VC_SetState",2)
HSN8 B 2 ACS_NamedExecuteWithResult("VC_SetState",2)

Skip2:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",7)
Goto Ready

User1:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
TNT1 A 0 A_PlaySoundEx("weapon/dustshot","Weapon")
TNT1 A 0 A_TakeInventory("Base112Ammo",18)
TNT1 A 0 A_FireCustomMissile("SearchDisk",0,0)
HSN8 BCDEF 1
HSN8 G 7
HSN8 FEDCBA 2
Goto Ready

UltimateAttack:
HSN8 B 0 ACS_NamedExecuteAlways("VC_UltimateText",0,66) HSN8 B 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
HSN8 B 0 A_GiveInventory("PowerUltBuildCooldown",1) HSN8 B 0 A_TakeInventory("UltAttackFlag",1)
HSN8 BBCCDEFFGG 1 ACS_NamedExecuteWithResult("VC_SetState",0)
GainBushHold:
HSN8 G 0 A_JumpIfInventory("CutterFlag",3,"GainBushEnd")
HSN8 G 0 A_TakeInventory("MediumUltimateAmmo",100)
HSN8 G 0 A_GiveInventory("SearchUltPrepHandler",1)
HSN8 G 0 A_PlaySoundEx("weapon/rminestick","Weapon")
HSN8 GG 1 Offset(0,36)ACS_NamedExecuteWithResult("VC_SetState",1)
HSN8 GG 1 Offset(0,40)ACS_NamedExecuteWithResult("VC_SetState",1)
HSN8 GG 1 Offset(0,44)ACS_NamedExecuteWithResult("VC_SetState",0)
HSN8 GG 1 Offset(0,40)ACS_NamedExecuteWithResult("VC_SetState",0)
loop
GainBushEnd:
HSN8 G 0 ACS_NamedExecuteWithResult("VC_SetState",0)
HSN8 G 0 A_SpawnItemEx("SearchUltCoolDownWatcher")
HSN8 GFEDCBA 2 A_TakeInventory("CutterFlag",3)
HSN8 B 0 A_TakeInventory("UltAttackFlag",1)
Goto Ready
}
}

actor SearchCloakWatcher
{
PROJECTILE
+NOINTERACTION
+NOCLIP
Damage(0)
Height 1
Radius 1
Speed 0
Scale 2.5
States
{
Spawn:
TNT1 A 105
Spawn2:
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_GiveToTarget("SearchManCloakOffPickUp")
TNT1 A 0 A_JumpIfInTargetInventory("CamouflagedSearchMan",1,"Spawn3")
loop
Spawn3:
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_GiveToTarget("SearchManCloakOnPickUp")
TNT1 A 0 A_JumpIfInTargetInventory("CamouflagedSearchMan",1,"Spawn3")
Goto Spawn2
Death:
TNT1 A 0 A_GiveToTarget("SearchManCloakOffPickUp")
stop
}
}

Actor SearchManCloakOnPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SetTranslucent(0.0,0)
TNT1 A 0 A_ChangeFlag("CANTSEEK",True)
TNT1 A 0 A_ChangeFlag("DONTIDENTIFYTARGET",True)
TNT1 A 0 A_GiveInventory("SearchmanFlashState_P",1)
Stop
}
}

Actor SearchManCloakOffPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SetTranslucent(1.0,0)
TNT1 A 0 A_ChangeFlag("CANTSEEK",False)
TNT1 A 0 A_ChangeFlag("DONTIDENTIFYTARGET",False)
TNT1 A 0 A_GiveInventory("SearchmanFlashState_P",1)
Stop
}
}

actor HomingSniperRM
{
PROJECTILE
+SKYEXPLODE
Damagetype "Searchman"
Obituary "$OB_SEARCHMAN1"
Species "SearchBush"
+THRUSPECIES
Radius 10
Height 10
damage (11)
speed 40
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn2:
HMNG AB 2
loop
Death:
XDeath:
TNT1 A 0 A_PlaySoundEx("weapon/napalm", "Weapon")
MTRL GHIJK 2
stop
}
}

actor HomingSniperRMHoming : HomingSniperRM
{
+SEEKERMISSILE
+SCREENSEEKER
+DONTSEEKINVISIBLE
damage (13)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
HMNG AABB 1 A_SpawnItemEx("SearchHomingSniperFX")
goto Spawn+2
}
}

actor HomingSniperRMGuerilla : HomingSniperRMHoming
{
Obituary "$OB_SEARCHMAN4"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
HMNG AB 2 A_SpawnItemEx("SearchHomingSniperFX")
Goto Spawn2
Spawn2:
HMNG A 1 A_SeekerMissile (4,20,SMF_LOOK|SMF_PRECISE,50,8) TNT1 A 0 A_JumpIfTargetInLOS("See",0,1)
HMNG A 1 A_SeekerMissile (4,20,SMF_LOOK|SMF_PRECISE,50,8) TNT1 A 0 A_JumpIfTargetInLOS("See",0,1) TNT1 A 0 A_SpawnItemEx("SearchHomingSniperFX")
HMNG B 1 A_SeekerMissile (4,20,SMF_LOOK|SMF_PRECISE,50,8) TNT1 A 0 A_JumpIfTargetInLOS("See",0,1)
HMNG B 1 A_SeekerMissile (4,20,SMF_LOOK|SMF_PRECISE,50,8) TNT1 A 0 A_JumpIfTargetInLOS("See",0,1) TNT1 A 0 A_SpawnItemEx("SearchHomingSniperFX")
loop
See:
TNT1 A 0 A_ScaleVelocity(2.0)
FastMode:
HMNG A 1 A_SeekerMissile (4, 20, SMF_LOOK, 50, 10) TNT1 A 0 A_SpawnItemEx("SearchHomingSniperFX") HMNG A 1 A_SeekerMissile (4, 20, SMF_LOOK, 50, 10)
HMNG B 1 A_SeekerMissile (4, 20, SMF_LOOK, 50, 10) TNT1 A 0 A_SpawnItemEx("SearchHomingSniperFX") HMNG B 1 A_SeekerMissile (4, 20, SMF_LOOK, 50, 10)
loop
}
}

actor HomingSniperRMGuerilla2 : HomingSniperRMGuerilla
{
damage (4)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
HMNG AB 2 A_SpawnItemEx("SearchHomingSniperFX")
Goto Spawn2
}
}

actor HomingSniperSounder
{
+NOINTERACTION
Damage (0)
height 0
radius 0
scale 2.5
States
{
Spawn: 
TNT1 A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("SearchTargetID1",1,"MakeSound1")
Goto Spawn
MakeSound1:
TNT1 A 0 A_TakeInventory("CutterFlag",99)
TNT1 AA 0 A_PlaySoundEx("weapon/SearchHairCross","Weapon")
MakeSound1Loop:
TNT1 A 0 A_JumpIfInventory("CutterFlag",13,"MakeSound1")
TNT1 A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("SearchTargetID2",1,"MakeSound2")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
Goto MakeSound1Loop
MakeSound2:
TNT1 A 0 A_TakeInventory("CutterFlag",99)
TNT1 AA 0 A_PlaySoundEx("weapon/SearchHairCross","Weapon")
MakeSound2Loop:
TNT1 A 0 A_JumpIfInventory("CutterFlag",10,"MakeSound2")
TNT1 A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("SearchTargetID3",1,"MakeSound3")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
Goto MakeSound2Loop
MakeSound3:
TNT1 A 0 A_TakeInventory("CutterFlag",99)
TNT1 AA 0 A_PlaySoundEx("weapon/SearchHairCross","Weapon")
MakeSound3Loop:
TNT1 A 0 A_JumpIfInventory("CutterFlag",7,"MakeSound3")
TNT1 A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("SearchTargetID4",1,"MakeSound4")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
Goto MakeSound3Loop
MakeSound4:
TNT1 A 0 A_TakeInventory("CutterFlag",99)
TNT1 AA 0 A_PlaySoundEx("weapon/SearchHairCross","Weapon")
MakeSound4Loop:
TNT1 A 0 A_JumpIfInventory("CutterFlag",4,"MakeSound4")
TNT1 A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
Goto MakeSound4Loop
Death:
TNT1 A 0 A_StopSound(CHAN_WEAPON)
stop
}
}

actor DeadlyStormMissile : HomingSniperRM
{
damage (0)
damagetype "DeadlyStorm"
Obituary "$OB_SEARCHMAN2"
speed 90
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_PlaySoundEx("weapon/deadlystormloop","Weapon",1)
HMNG A 1 A_JumpIfInventory("CutterFlag", 1, "Descend") HMNG A 1 A_JumpIfInventory("CutterFlag", 1, "Descend") TNT1 A 0 A_SpawnItemEx("SearchHomingSniperFX")
HMNG B 1 A_JumpIfInventory("CutterFlag", 1, "Descend") HMNG B 1 A_JumpIfInventory("CutterFlag", 1, "Descend") TNT1 A 0 A_SpawnItemEx("SearchHomingSniperFX")
goto Spawn+3
Death:
TNT1 A 0 A_CheckFloor("Forward")
TNT1 A 0 A_CheckCeiling("Descend")
Goto XDeath
Forward:
TNT1 A 0 A_SpawnItemEx("DeadlyStormMissileForward",0,0,0,60)
stop
Descend:
TNT1 A 0 A_SpawnItemEx("DeadlyStormMissileDescend",0,0,0,0,0,-30)
stop
XDeath:
TNT1 A 0 A_SpawnItemEx("DeadlyStormExplosion",0,0,0,0,0,0,0,1)
stop
}
}

actor DeadlyStormExplosion : BasicExplosion
{
damagetype "DeadlyStorm"
Obituary "$OB_SEARCHMAN2"
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_PlaySoundEx("weapon/napalm", "Weapon")
TNT1 A 0 A_Explode(9,32,0,0,32)
TNT1 A 0 A_Quake(2,5,0,50)
MTRL GHIJK 2 
stop
}
}

actor DeadlyStormMissileForward : DeadlyStormMissile
{
States
{
Death:
TNT1 A 0 A_SpawnItemEx("DeadlyStormExplosion",0,0,0,0,0,0,0,1)
stop
}
}

actor DeadlyStormMissileDescend : DeadlyStormMissile
{
Obituary "$OB_SEARCHMAN2"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_PlaySoundEx("weapon/deadlystormloop","Weapon",1)
HMNG CD 2 A_SpawnItemEx("SearchHomingSniperFX") 
goto Spawn+3
Death:
TNT1 A 0 A_SpawnItemEx("DeadlyStormExplosion",0,0,0,0,0,0,0,1)
stop
}
}

actor SearchDisk
{
PROJECTILE
Damagetype "Searchman"
Obituary "$OB_SEARCHMAN3"
BounceSound "weapon/searchbounce"
+BOUNCEONFLOORS
+BOUNCEONWALLS
+BOUNCEONCEILINGS
+CANBOUNCEWATER
+THRUSPECIES
+HITTRACER
Species "SearchBush"
bouncefactor 1.0
wallbouncefactor 1.0
bouncecount 15
reactiontime 24
Damage (0)
Height 16
Radius 16
speed 40
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
HSN8 Q 0 A_CountDown
HSN8 QR 3
goto Spawn+2
XDeath:
TeamCheck:
MRCR A 0 A_JumpIfInventory("LightTeamFlag", 1, "LightCheck", AAPTR_TARGET)
MRCR A 0 A_JumpIfInventory("WilyTeamFlag", 1, "WilyCheck", AAPTR_TARGET)
MRCR A 0 A_JumpIfInventory("CossackTeamFlag", 1, "CossackCheck", AAPTR_TARGET)
MRCR A 0 A_JumpIfInventory("KingTeamFlag", 1, "KingCheck", AAPTR_TARGET)
goto Target
LightCheck:
MRCR A 0 A_JumpIfInventory("LightTeamFlag", 1, "Death", AAPTR_TRACER)
MRCR A 1 A_JumpIf(true, "Target")
wait
WilyCheck:
MRCR A 0 A_JumpIfInventory("WilyTeamFlag", 1, "Death", AAPTR_TRACER)
MRCR A 1 A_JumpIf(true, "Target")
wait
CossackCheck:
MRCR A 0 A_JumpIfInventory("CossackTeamFlag", 1, "Death", AAPTR_TRACER)
MRCR A 1 A_JumpIf(true, "Target")
wait
KingCheck:
MRCR A 0 A_JumpIfInventory("KingTeamFlag", 1, "Death", AAPTR_TRACER)
MRCR A 1 A_JumpIf(true, "Target")
wait
Target:
TNT1 AAAAAAAAAA 0 ACS_NamedExecuteAlways("cbm_divesonardetect",0,64)
Death:
TNT1 A 0 A_PlaySoundEx("weapon/napalm", "Weapon")
TNT1 A 0 A_Explode(20,45,0,0,45)
MTRL BCDEF 2
stop
}
}

actor SearchBushStart
{
PROJECTILE
+SKYEXPLODE
+THRUACTORS
Damagetype "Searchman"
Obituary "$OB_SEARCHMAN1"
Species "SearchBush"
+THRUSPECIES
+DONTREFLECT
Radius 6
Height 6
damage (0)
speed 40
scale 2.5
States
{
Spawn:
TNT1 AAAAAAA 1 A_ChangeVelocity(60,0,0,CVF_RELATIVE|CVF_REPLACE)
Death:
TNT1 A 0 A_SpawnItemEx("SearchBush",0,0,150,0,0,-2,0,SXF_TRANSFERPOINTERS)
stop
}
}

actor SearchBush : ProjSpawnFuncActor
{
Damagetype "SearchBush"
Obituary "$OB_SEARCHMAN5"
PROJECTILE
+CANTSEEK
+NOTARGETSWITCH
+NOCLIP
-NOGRAVITY
-MISSILE
+MOVEWITHSECTOR
+DONTBLAST
Height 96
Radius 48
health 999
speed 0
scale 2.5
+NOBLOOD
+SHOOTABLE
-NORADIUSDMG
-NOBLOCKMAP
+DONTREFLECT
+GHOST
Species "SearchBush"
+THRUSPECIES
painchance 256
mass 99999
+DONTRIP
DamageFactor "Searchman", 0.05
damagefactor "Ignition", 1.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_SetTranslucent(0.75,0)
TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT,AAPTR_TARGET)
TNT1 A 0 A_JumpIfInventory("CutterFlag",600,"BushVanish")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_CheckFloor("StationedBush")
TNT1 A 0 A_GiveInventory("SearchUltBuildCooldownGiver")
HMN2 A 1 A_GiveInventory("CutterFlag",1)
goto Spawn+2
StationedBush:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_checkPitByType",MOD_LAVA),"pain.Ignition") 
TNT1 A 0 A_JumpIfInventory("CutterFlag",600,"BushVanish")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_GiveInventory("SearchUltBuildCooldownGiver")
HMN2 B 1 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfMasterCloser(96,"CloakUser")
goto StationedBush+1
Pain:
HMN2 A 1
Goto Death
Pain.Ignition:
HMN3 B 1
TNT1 A 0 A_JumpIfMasterCloser(96,"Correct2")
Incorrect2:
TNT1 A 0 A_GiveToTarget("SearchBushProtect")
TNT1 A 0 A_SpawnItemEx("SearchDummy",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
Goto BushVanish2
CloakUser:
TNT1 A 0 A_JumpIfInTargetInventory("SearchBushDestroy",1,"BushVanish")
TNT1 A 0 A_GiveToTarget("CamouflagedSearchMan",1)
Goto Spawn
Death:
HMN2 B 5
TNT1 A 0 A_JumpIfMasterCloser(96,"Correct")
Incorrect:
TNT1 A 0 A_GiveToTarget("SearchBushProtect")
TNT1 A 0 A_SpawnItemEx("SearchDummy",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
Goto BushVanish
Correct:
TNT1 A 0 A_PlaySoundEx("weapon/searchcorrect","Voice")
BushVanish:
TNT1 AAAAAAAAAA 0 A_SpawnItemEx("BushPiece",0,0,16,0,0,0,random(0,359))
End:
TNT1 A 2 A_TakeFromTarget("SearchManBush",1)
stop
Correct2:
TNT1 A 0 A_PlaySoundEx("weapon/searchcorrect","Voice")
BushVanish2:
TNT1 AAAAAAAAAA 0 A_SpawnItemEx("BushPiece2",0,0,16,0,0,0,random(0,359))
goto End
}
}
actor SearchDummy
{
Translation "192:192=103:103", "198:198=230:230"
PROJECTILE
Damagetype "SearchBush"
Obituary "$OB_SEARCHMAN5"
scale 2.5
-NOGRAVITY
+THRUACTORS
Speed 16
Radius 1
Height 1
gravity 1.8
Damage (0)
const int EXPL_OFF = 96;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 AAAAA 0 A_PlaySoundEx("weapon/DudHyperBomb", "Weapon")
SEAR W 25
Exploding:
TNT1 A 0 A_JumpIfInventory("CutterFlag",15,"End")
TNT1 A 0 A_PlaySoundEx("weapon/napalm", "Weapon")
TNT1 A 0 A_Quake(3,5,0,250)
TNT1 A 0 A_Explode(4,160,0,0,96)
TNT1 A 1 A_SpawnItemEx("SearchDummyExplosion", random(-EXPL_OFF,EXPL_OFF), random(-EXPL_OFF,EXPL_OFF), random(0,EXPL_OFF))
TNT1 A 0 A_GiveInventory("CutterFlag",1)
loop
End:
TNT1 A 0
stop
}
}

Actor SearchBushProtect : PowerProtection
{
	Powerup.Duration 38
	DamageFactor "SearchBush", 0.0
}

actor SearchDummyExplosion
{
Projectile
Scale 3.5
Height 6
Radius 6

States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 AA 0 A_PlaySoundEx("weapon/napalm", "Weapon")
MTRL BCDEF 2
stop
}
}

actor BushPiece
{
PROJECTILE
damagetype "Searchman"
Obituary "$OB_SEARCHMAN4"
scale 2.5
+THRUACTORS
-NOGRAVITY
Speed 16
Radius 15
Height 8
gravity 1.2
Damage (0)
reactiontime 30
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_Recoil(random(-8,-4))
TNT1 A 0 ThrustThingZ(0, random(30,60), 0, 1)
HMN2 CDE 2
SpawnLoop:
HMN2 FGHIJ 2
loop
Death:
XDeath:
TNT1 A 0
stop
}
}

actor BushPiece2 : BushPiece
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_Recoil(random(-8,-4))
TNT1 A 0 ThrustThingZ(0, random(30,60), 0, 1)
HMN3 CDE 2 A_SpawnItemEx("BushPieceFX")
SpawnLoop:
HMN3 FGHIJ 2 A_SpawnItemEx("BushPieceFX")
loop
Death:
XDeath:
TNT1 A 0
stop
}
}

actor BushPieceFX : ScorchBit
{
+NOGRAVITY
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SCTU NONONONONO 1
stop
}
}

actor SearchUltCoolDownWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 1 A_GiveToTarget("SearchUltBuildCooldownGiver")
TNT1 A 0 A_JumpIfInTargetInventory("SearchManBush",1,"Spawn")
stop
}
}

actor SearchUltBuildCooldownGiver : UltBuildCooldownGiver
{
	Powerup.Duration 15
}

actor CamouflagedSearchMan : Powerup 
{
powerup.duration 3
}
actor SearchBushDestroy : CamouflagedSearchMan {}

actor SearchBushStock : Inventory
{
inventory.amount 1
inventory.maxamount 3
}

actor SearchManBush : Inventory
{
inventory.amount 1
inventory.maxamount 9
}

//CBM
//Dive Sonar
actor PowerSearchLockonG : BasicPowerupGiver
{
powerup.type "PowerSearchLockon"
}

actor PowerSearchLockon : Powerup
{
powerup.duration -10
}

//Search Man
actor CrossHairFrame : Inventory
{
inventory.amount 1
inventory.maxamount 18
}
actor CrossBlink : Inventory
{
inventory.amount 1
inventory.maxamount 8
}

actor SearchTargetID : Inventory
{
inventory.amount 1
inventory.maxamount 64
}

actor SearchTargetID1 : SearchTargetID {}
actor SearchTargetID2 : SearchTargetID {}
actor SearchTargetID3 : SearchTargetID {}
actor SearchTargetID4 : SearchTargetID {}

actor SearchTargetIDCD : Powerup
{
+INVENTORY.ADDITIVETIME
powerup.duration 11
}

actor SearchTargetID1CD : SearchTargetIDCD {}
actor SearchTargetID2CD : SearchTargetIDCD {}
actor SearchTargetID3CD : SearchTargetIDCD {}
actor SearchTargetID4CD : SearchTargetIDCD {}

actor HomingLockedVision : Powerup
{
powerup.duration 10
}

actor SearchTargetID1CD_RC : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("SearchTargetID1CD",1)
goto PickupR
PickupR:
TNT1 A 0 A_GiveInventory("SearchTargetID1CD",1)
stop
}
}
actor SearchTargetID2CD_RC : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("SearchTargetID2CD",1)
goto PickupR
PickupR:
TNT1 A 0 A_GiveInventory("SearchTargetID2CD",1)
stop
}
}
actor SearchTargetID3CD_RC : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("SearchTargetID3CD",1)
goto PickupR
PickupR:
TNT1 A 0 A_GiveInventory("SearchTargetID3CD",1)
stop
}
}
actor SearchTargetID4CD_RC : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("SearchTargetID4CD",1)
goto PickupR
PickupR:
TNT1 A 0 A_GiveInventory("SearchTargetID4CD",1)
stop
}
}

actor SearchmanFlashState_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("SearchTargetID1",1,"Flash1")
TNT1 A 0 A_JumpIfInventory("SearchTargetID2",1,"Flash2")
TNT1 A 0 A_JumpIfInventory("SearchTargetID3",1,"Flash3")
TNT1 A 0 A_JumpIfInventory("SearchTargetID4",1,"Flash4")
TNT1 A 0
stop
Flash1:
TNT1 A 0 ACS_NamedExecuteAlways("cbm_Searchman_ACS",0,3,1)
goto Pickup+1
Flash2:
TNT1 A 0 ACS_NamedExecuteAlways("cbm_Searchman_ACS",0,3,2)
goto Pickup+2
Flash3:
TNT1 A 0 ACS_NamedExecuteAlways("cbm_Searchman_ACS",0,3,3)
goto Pickup+3
Flash4:
TNT1 A 0 ACS_NamedExecuteAlways("cbm_Searchman_ACS",0,3,4)
goto Pickup+4
}
}

actor HomingCrosshairB
{
PainSound "weapon/SearchCross"
+NOGRAVITY
- SOLID
+DONTSPLASH
+DONTBLAST
+THRUGHOST
+THRUACTORS
//+CLIENTSIDEONLY
//+NONETID
+NOINTERACTION
Radius 2
Height 2
Scale 2.5
states
{
Spawn:
HSNC A 0
HSNC A 1 A_Pain
stop
}
}
actor HomingCrosshairB2 : HomingCrosshairB
{
states
{
Spawn:
HSNC B 0
HSNC B 1
stop
}
}
actor HomingCrosshairB3 : HomingCrosshairB
{
states
{
Spawn:
HSNC C 0
HSNC C 1
stop
}
}
actor HomingCrosshairB4 : HomingCrosshairB
{
states
{
Spawn:
HSNC D 0
HSNC D 1 A_Pain
stop
}
}
actor HomingCrosshairB5 : HomingCrosshairB
{
states
{
Spawn:
HSNC E 0
HSNC E 1
stop
}
}
actor HomingCrosshairB6 : HomingCrosshairB
{
states
{
Spawn:
HSNC F 0
HSNC F 1
stop
}
}
actor HomingCrosshairB7 : HomingCrosshairB
{
states
{
Spawn:
HSNC G 0
HSNC G 1 A_Pain
stop
}
}
actor HomingCrosshairB8 : HomingCrosshairB
{
states
{
Spawn:
HSNC H 0
HSNC H 1
stop
}
}
actor HomingCrosshairB9 : HomingCrosshairB
{
states
{
Spawn:
HSNC I 0
HSNC I 1
stop
}
}

actor HomingCrosshairBW : HomingCrosshairB{states{Spawn:HSNC O 0
HSNC O 1 A_Pain
stop}}
actor HomingCrosshairB2W : HomingCrosshairB2{states{Spawn:HSNC P 0
HSNC P 1
stop}}
actor HomingCrosshairB3W : HomingCrosshairB3{states{Spawn:HSNC Q 0
HSNC Q 1
stop}}
actor HomingCrosshairB4W : HomingCrosshairB4{states{Spawn:HSNC R 0
HSNC R 1 A_Pain
stop}}
actor HomingCrosshairB5W : HomingCrosshairB5{states{Spawn:HSNC S 0
HSNC S 1
stop}}
actor HomingCrosshairB6W : HomingCrosshairB6{states{Spawn:HSNC T 0
HSNC T 1
stop}}
actor HomingCrosshairB7W : HomingCrosshairB7{states{Spawn:HSNC U 0
HSNC U 1 A_Pain
stop}}
actor HomingCrosshairB8W : HomingCrosshairB8{states{Spawn:HSNC V 0
HSNC V 1
stop}}
actor HomingCrosshairB9W : HomingCrosshairB9{states{Spawn:HSNC W 0
HSNC W 1
stop}}

actor SearchmanLockonCrosshair
{
-SOLID
+NOGRAVITY
+DONTSPLASH
+CLIENTSIDEONLY
+NOINTERACTION
//+NONETID
Radius 2
Height 2
Scale 2.5
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_PlaySoundEx("weapon/SearchHairCross","Weapon")
HSNC N 1
stop
}
}

actor SearchmanLockonGiver_P : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_GiveInventory("HomingLockedVision",1)
TNT1 A 0 A_SpawnItemEx("SearchmanLockonCrosshair_H")
stop
}
}
		
actor SearchmanLockonGiver_P2 : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_GiveInventory("HomingLockedVision",1)
TNT1 A 0 A_SpawnItemEx("SearchmanLockonReticle",0,0,32)
stop
}
}

actor SearchmanLockonReticle
{
	Scale 2.5
	Height 0
	Radius 0
	+NOINTERACTION
	+CLIENTSIDEONLY
	-SOLID
	+NOGRAVITY
	+NOTARGETSWITCH
	+MISSILE
	+DONTBLAST
	Scale 2.5
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_NamedExecuteAlways("core_shieldwarper", 0, 1)
		TNT1 A 0 A_JumpIfInTargetInventory("CanBeGrabBustered",1,1)
		goto Death
		TNT1 A 0 A_Jump(256, "Shield")
		Goto Shield
		
		Shield:
		TNT1 A 0 A_JumpIfInTargetInventory("NoSearchSound",1,2)
		TNT1 A 0 A_PlaySoundEx("weapon/searchlock","Body")
		TNT1 A 0 A_GiveToTarget("NoSearchSound")
		HSNC ABCDEFGHIJKLM 1 A_Warp(AAPTR_TARGET, 0, 0, 32, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		stop
		
		Death:
		TNT1 A 0
		stop
		}
		}
		
actor SearchmanLockonCrosshair_P : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_SpawnItemEx("SearchmanLockonCrosshair",0,0,32,momx,momy,momz,0,8)
stop
}
}

actor SearchmanLockonCrosshair_H : BasicHelper
{
states
{
Spawn:
TNT1 A 0
TNT1 AAA 1 A_GiveToTarget("SearchmanLockonCrosshair_P",1)
stop
Death:
TNT1 A 1
stop
}
}


actor SearchManTargeterACS_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("cbm_istracerenemy")==1,"Target1")
stop
Target1:
TNT1 A 0 ACS_NamedExecuteAlways("cbm_Searchman_ACS",0,-1,ACS_ExecuteWithResult(257),ACS_ExecuteWithResult(147,1))
stop
}
}

actor SearchManCrossHairFrame_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("CrossHairFrame",18,"FrameReset")
TNT1 A 0 A_GiveInventory("CrossHairFrame",1)
TNT1 A 0 A_JumpIfInventory("CrossBlink",8,"WhiteReset")
TNT1 A 0 A_GiveInventory("CrossBlink",1)
stop
FrameReset:
TNT1 A 0 A_TakeInventory("CrossHairFrame",999)
goto Pickup+1
WhiteReset:
TNT1 A 0 A_TakeInventory("CrossBlink",999)
goto Pickup+3
}
}

actor SearchManTargeterFX_P : CustomInventory
{
States
{
Pickup:
CrossHair:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("SearchManCrossHairFrame_P",1)
TNT1 A 0 A_JumpIfInTargetInventory("CrossBlink",4,"White")
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",17,"CrossHair9")
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",15,"CrossHair8")
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",13,"CrossHair7")
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",11,"CrossHair6")
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",9,"CrossHair5")
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",7,"CrossHair4")
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",5,"CrossHair3")
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",3,"CrossHair2")
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB",8,0,8,0,0,0,0,1)
stop
CrossHair2:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB2",8,0,8,0,0,0,0,1)
stop
CrossHair3:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB3",8,0,8,0,0,0,0,1)
stop
CrossHair4:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB4",8,0,8,0,0,0,0,1)
stop
CrossHair5:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB5",8,0,8,0,0,0,0,1)
stop
CrossHair6:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB6",8,0,8,0,0,0,0,1)
stop
CrossHair7:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB7",8,0,8,0,0,0,0,1)
stop
CrossHair8:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB8",8,0,8,0,0,0,0,1)
stop
CrossHair9:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB9",8,0,8,0,0,0,0,1)
stop

White:
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",17,"CrossHair9W")
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",15,"CrossHair8W")
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",13,"CrossHair7W")
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",11,"CrossHair6W")
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",9,"CrossHair5W")
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",7,"CrossHair4W")
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",5,"CrossHair3W")
TNT1 A 0 A_JumpIfInTargetInventory("CrossHairFrame",3,"CrossHair2W")
TNT1 A 0 A_SpawnItemEx("HomingCrosshairBW",8,0,8,0,0,0,0,1)
stop
CrossHair2W:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB2W",8,0,8,0,0,0,0,1)
stop
CrossHair3W:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB3W",8,0,8,0,0,0,0,1)
stop
CrossHair4W:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB4W",8,0,8,0,0,0,0,1)
stop
CrossHair5W:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB5W",8,0,8,0,0,0,0,1)
stop
CrossHair6W:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB6W",8,0,8,0,0,0,0,1)
stop
CrossHair7W:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB7W",8,0,8,0,0,0,0,1)
stop
CrossHair8W:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB8W",8,0,8,0,0,0,0,1)
stop
CrossHair9W:
TNT1 A 0 A_SpawnItemEx("HomingCrosshairB9W",8,0,8,0,0,0,0,1)
stop

}
}

actor SearchManTargeter : FastProjectile
{
Translation "199:199=212:212","202:202=4:4"
+SKYEXPLODE
+DONTBLAST
+DONTREFLECT
+DONTSPLASH
+HITTRACER
Reactiontime 1
Damage (0)
radius 16
height 16
Speed 700
Species "SearchBush"
+THRUSPECIES
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
TNT1 A 1 A_CountDown
wait

XDeath:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TeamCheck:
MRCR A 0 A_JumpIfInventory("LightTeamFlag", 1, "LightCheck", AAPTR_TARGET)
MRCR A 0 A_JumpIfInventory("WilyTeamFlag", 1, "WilyCheck", AAPTR_TARGET)
MRCR A 0 A_JumpIfInventory("CossackTeamFlag", 1, "CossackCheck", AAPTR_TARGET)
MRCR A 0 A_JumpIfInventory("KingTeamFlag", 1, "KingCheck", AAPTR_TARGET)
goto Target
LightCheck:
MRCR A 0 A_JumpIfInventory("LightTeamFlag", 1, "Death", AAPTR_TRACER)
MRCR A 1 A_JumpIf(true, "Target")
wait
WilyCheck:
MRCR A 0 A_JumpIfInventory("WilyTeamFlag", 1, "Death", AAPTR_TRACER)
MRCR A 1 A_JumpIf(true, "Target")
wait
CossackCheck:
MRCR A 0 A_JumpIfInventory("CossackTeamFlag", 1, "Death", AAPTR_TRACER)
MRCR A 1 A_JumpIf(true, "Target")
wait
KingCheck:
MRCR A 0 A_JumpIfInventory("KingTeamFlag", 1, "Death", AAPTR_TRACER)
MRCR A 1 A_JumpIf(true, "Target")
wait
Target:
TNT1 A 0 A_GiveInventory("SearchManTargeterACS_P",1)
TNT1 A 2 A_GiveInventory("SearchManTargeterFX_P",1)
stop
Death:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 2 A_GiveInventory("SearchManTargeterFX_P",1)
stop
}
}

actor HomingSniperB
{
PROJECTILE
Damagetype "Searchman"
Obituary "$OB_SEARCHMAN1"
Species "SearchBush"
+THRUSPECIES
+DONTSEEKINVISIBLE
+SEEKERMISSILE
+SCREENSEEKER
damage (13)
Radius 9
Height 9
speed 32
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
HMNG A 2
TNT1 A 0 A_SpawnItemEx("SearchHomingSniperFX")
HMNG B 2
TNT1 A 0 A_SpawnItemEx("SearchHomingSniperFX")
goto Spawn+2

SpawnCore:
HMNG AA 1 A_SeekerMissile(90,90,3,256,9)
TNT1 A 0 A_SpawnItemEx("SearchHomingSniperFX")
HMNG BB 1 A_SeekerMissile(90,90,3,256,9)
TNT1 A 0 A_SpawnItemEx("SearchHomingSniperFX")
loop

Death:
MTRL GHIJK 2
stop
}
}

actor HomingSniperBFX
{
PROJECTILE
+DONTBLAST
+PAINLESS
damage (0)
Radius 16
Height 16
speed 80
scale 2.5
States
{
Spawn:
TNT1 A 1
loop
XDeath:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("HomingSniperBFX2",8,0,8,0,0,0,0,9)
Death:
TNT1 A 1
stop
}
}

actor HomingSniperBFX2 : BasicClientSide
{
States
{
Spawn:
X_8E MLKKK 2
stop
}
}

actor HomingSniperCoreB : HomingSniperB
{
Radius 5
Height 5
speed 28
States
{
Spawn:
X_8E B 0
goto SpawnCore
}
}

actor HomingSniperB1
{
var int user_B;
var int user_TID;
PROJECTILE
Damagetype "Searchman"
Obituary "$OB_SEARCHMAN1"
Species "SearchBush"
+THRUSPECIES
+DONTBLAST
+DONTREFLECT
+SEEKERMISSILE
+SKYEXPLODE
damage (13)
Meleerange 1
Radius 10
Height 10
speed 28
scale 2.5
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
HMNG A 0 A_SetUserVar("user_TID",CallACS("cbm_Searchman_ACS",1,Meleerange))
HMNG A 0 A_JumpIf(user_TID==0,"Unlock")
HMNG A 1
HMNG A 0 ACS_ExecuteAlways(4000,0,8,user_TID+999)
Spawn3:
//Check if tracer is alive and give them locked on FX
X_8E B 0 A_JumpIf(CallACS("cbm_Searchman_ACS",2,user_TID)==0,"Unlock")
TNT1 AAAA 0 A_SeekerMissile(90,90,SMF_PRECISE|SMF_CURSPEED,256)
HMNG A 1 A_ChangeVelocity(cos(pitch)*28,0,-sin(pitch)*28,3)
TNT1 A 0 A_SpawnItemEx("SearchHomingSniperFX",0,0,0,0,0,0,0,1)
X_8E B 0 A_JumpIf(CallACS("cbm_Searchman_ACS",2,user_TID)==0,"Unlock")
TNT1 AAAA 0 A_SeekerMissile(90,90,SMF_PRECISE|SMF_CURSPEED,256)
HMNG B 1 A_ChangeVelocity(cos(pitch)*28,0,-sin(pitch)*28,3)
TNT1 A 0 A_SpawnItemEx("SearchHomingSniperFX",0,0,0,0,0,0,0,1)
X_8E B 0 A_JumpIf(CallACS("cbm_Searchman_ACS",2,user_TID)==0,"Unlock")
TNT1 AAAA 0 A_SeekerMissile(90,90,SMF_PRECISE|SMF_CURSPEED,256)
HMNG B 1 A_ChangeVelocity(cos(pitch)*28,0,-sin(pitch)*28,3)
TNT1 A 0 A_SpawnItemEx("SearchHomingSniperFX",0,0,0,0,0,0,0,1)
X_8E B 0 A_JumpIf(CallACS("cbm_Searchman_ACS",2,user_TID)==0,"Unlock")
TNT1 AAAA 0 A_SeekerMissile(90,90,SMF_PRECISE|SMF_CURSPEED,256)
HMNG A 1 A_ChangeVelocity(cos(pitch)*28,0,-sin(pitch)*28,3)
TNT1 A 0 A_SpawnItemEx("SearchHomingSniperFX",0,0,0,0,0,0,0,1)
X_8E B 0 A_JumpIf(user_B>=6,"Spawn3")
X_8E B 0 A_GiveInventory("WeaponCharge",1)
X_8E B 0 A_JumpIfInventory("WeaponCharge",5,"SpawnP")
loop
SpawnP:
X_8E B 0 A_SetUserVar("user_B",user_B+1)
X_8E B 0 A_TakeInventory("WeaponCharge",99)
goto Spawn3
Unlock:
TNT1 A 0 A_SetPitch(user_B)
TNT1 A 0 A_SpawnItemEx("HomingSniperCoreB",0,0,0,momx,momy,momz,0,521,0)
stop
Death:
MTRL GHIJK 2
stop
}
}

actor HomingSniperB2 : HomingSniperB1
{
Meleerange 2
}

actor HomingSniperB3 : HomingSniperB1
{
Meleerange 3
}

actor HomingSniperB4 : HomingSniperB1
{
Meleerange 4
}

actor SearchHomingSniperFX : BasicClientSide
{
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 AA 1
HSN8 NOP 2
stop
}
}

actor SearchUltPrepHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_GiveInventory("SearchBushStock",1)
TNT1 A 0 A_GiveInventory("SearchManBush",3) 
stop
}
}

actor SearchM1ReleaseHandler1 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("BaseCustomFlag1")
TNT1 A 0 A_GiveInventory("CutterFlag",4)
stop
}
}

actor SearchM1ReleaseHandler2 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("SearchTargetID4",99)
TNT1 A 0 A_TakeInventory("SearchTargetID3",99)
TNT1 A 0 A_TakeInventory("SearchTargetID2",99)
TNT1 A 0 A_TakeInventory("SearchTargetID1",99)
TNT1 A 0 A_PlaySoundEx("weapon/searchfire","Weapon")
TNT1 A 0 A_FireCustomMissile("HomingSniperRM",0,0,8)
TNT1 A 0 A_TakeInventory("Base112Ammo",5)
TNT1 A 0 A_TakeInventory("Base28Ammo",7)
stop
}
}

actor SearchM2Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/coilexplode","Weapon")
TNT1 A 0 A_PlaySoundEx("weapon/searchdstorm","Body")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
TNT1 A 0 A_Quake(0.1,5,0,100)
TNT1 A 0 A_FireCustomMissile("DeadlyStormMissile",0,0,random(-20,20),random(-20,20))
stop
}
}

actor SearchUltM1Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/searchfire","Weapon")
TNT1 A 0 A_FireCustomMissile("HomingSniperRMGuerilla",0,0,8)
TNT1 A 0 A_TakeInventory("Base112Ammo",5)
TNT1 A 0 A_TakeInventory("Base28Ammo",7)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0)
stop
}
}

actor SearchChargedM1Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/searchfire","Weapon")
TNT1 A 0 A_TakeInventory("CutterFlag",1)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0)
TNT1 A 0 A_TakeInventory("Base112Ammo",9)
TNT1 A 0 A_TakeInventory("Base28Ammo",7)
stop
}
}

actor SearchFloatHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(momz<0 && z-floorz !=0,"Pickup2")
stop

Pickup2:
TNT1 A 0 ThrustThingZ(0,2,1,0)
stop
}
}

actor SearchBoostFX : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
HMNG EF 1
stop
}
}

actor NoSearchSound : Powerup 
{
powerup.duration 35
}