actor SneakTraverserWep_NormalBar : NormalBar{args 104,110}
actor SneakTraverserWep_ScriptBar : ScriptBar {}
actor SneakTraverserWep : BaseMM8BDMWep
{
Weapon.AmmoUse 7
Weapon.AmmoGive 28
Weapon.SlotNumber 7
Inventory.Pickupmessage "$PU_SNEAKTRAVERSER"
Obituary "$OB_SNEAKTRAVERSER"
Tag "$TAG_SNEAKTRAVERSER"
weapon.ammotype "SneakTraverserAmmo"
inventory.icon "STRVICON"
States
{
SpawnLoop:
STRV Z 1
loop
Ready:
STRV A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_SNEAKTRAVERSER)
STRV A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
STRV A 0 
goto DeselectSwap
Select:
STRV A 0 
goto SelectSwap
Fire:
STRV A 0 A_JumpIfNoAmmo("NoAmmo")
STRV A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
STRV A 0 A_TakeInventory("SneakTraverserAmmo",7,TIF_NOTAKEINFINITE)
STRV A 2 A_GiveInventory("CentaurFlashHalfAlphaGiver", 1)
STRV B 1 A_GiveInventory("CentaurFlashQuarterAlphaGiver", 1)
STRV C 1 
TNT1 A 0 A_GiveInventory("SneakTraverser_P",1)
CENF D 0 ACS_NamedExecuteWithResult("core_cantseekplayer", 0, true)
CENF D 0 ACS_NamedExecuteWithResult("core_notargetplayer", 0, true)
CENF D 0 ACS_NamedExecuteWithResult("core_dontidentifytargetplayer", 0, true)
TNT1 A 1 A_GiveInventory("CentaurFlashNoAlphaGiver", 1)
TNT1 A 0 A_GiveInventory("WeaponCharge", 35)
Goto Traversing
Traversing:
TNT1 A 0 A_TakeInventory("WeaponCharge", 1)
TNT1 A 1 A_RailWait
TNT1 A 0 A_Refire("TraverseCheck")
goto Uncloak
TraverseCheck: //Do you want to keep using Sneak Traverser?
TNT1 A 0 A_JumpIfInventory("WeaponCharge", 1, "Traversing")
TNT1 A 1 A_JumpIf(true, "Uncloak")
goto Uncloak
Uncloak:
TNT1 A 0 A_TakeInventory("WeaponCharge",999)
CENF D 0 ACS_NamedExecuteWithResult("core_cantseekplayer", 0, false)
CENF D 0 ACS_NamedExecuteWithResult("core_notargetplayer", 0, false)
CENF D 0 ACS_NamedExecuteWithResult("core_dontidentifytargetplayer", 0, false)
TNT1 A 0 A_ScaleVelocity(0.25)
STRV D 0 A_TakeInventory("SneakTraverserSpeedGiver",1) STRV D 0 A_TakeInventory("SneakTraverserSpeedLMSGiver",1)
STRV D 0 A_TakeInventory("SneakTraverserSpeed",1) STRV D 0 A_TakeInventory("SneakTraverserSpeedLMS",1)
SnakeFire:
STRV G 0 A_PlaySoundEx("weapon/sneaksnake","Weapon")
STRV D 1 A_TakeInventory("CentaurFlashNoAlpha", 999)
STRV E 1 A_TakeInventory("CentaurFlashQuarterAlpha", 999)
STRV F 1 A_TakeInventory("CentaurFlashHalfAlpha", 999)
STRV G 0 A_FireCustomMissile("SneakSnakeStart",6,0,8,0)
STRV G 0 A_FireCustomMissile("SneakSnakeStart",0,0,8,0)
STRV G 0 A_FireCustomMissile("SneakSnakeStart",-6,0,8,0)
STRV GHIJK 2
STRV K 1
TNT1 A 2
STRV A 1 offset(0, 135) 
Goto Ready+1
Altfire:
STRV A 0 A_JumpIfInventory("Vile_ClassAltfire", 1, "ClassAltfire")
STRV A 0 A_JumpIf(CallACS("Vile_class_altfire"), "ClassAltfire")
STRV A 1 A_JumpIfInventory("MM8BDMPlayer", 1, 1)
wait
STRV A 0 A_JumpIfInventory("SneakTraverserAmmo",3,1)
goto NoAmmo
STRV A 0 A_TakeInventory("SneakTraverserAmmo",3,TIF_NOTAKEINFINITE)
STRV G 0 A_PlaySoundEx("weapon/sneaksnake","Weapon")
STRV DEF 1
STRV G 0 A_FireCustomMissile("SneakSnakeStart",6,0,8,0)
STRV G 0 A_FireCustomMissile("SneakSnakeStart",0,0,8,0)
STRV G 0 A_FireCustomMissile("SneakSnakeStart",-6,0,8,0)
STRV GHIJK 2
STRV K 1
TNT1 A 2
STRV A 1 offset(0, 135) 
Goto Ready+1
ClassAltfire:
STRV A 0 
goto Super::Altfire
NoAmmo:
STRV A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}


actor SneakTraverserAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 28
+INVENTORY.IGNORESKILL
}

actor SneakTraverser_P : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(975,0)==2,"LMS")
TNT1 A 0 A_GiveInventory("SneakTraverserSpeedGiver",1)
stop
LMS:
TNT1 A 0 A_GiveInventory("SneakTraverserSpeedLMSGiver",1)
stop
}
}

Actor SneakTraverserSpeedGiver : PowerApropGiver {}

actor SneakTraverserSpeed : Powerup
{
powerup.duration 800
+INVENTORY.ALWAYSPICKUP
}


Actor SneakTraverserSpeedLMSGiver : PowerApropGiver {}

actor SneakTraverserSpeedLMS : Powerup
{
powerup.duration 800
+INVENTORY.ALWAYSPICKUP
}

actor SneakSnakeStart : BasicProjectile
{
PROJECTILE
-NOGRAVITY
+HEXENBOUNCE
bouncefactor 0.8
wallbouncefactor 0.8
-BOUNCEONFLOORS
Damage (CallACS("vile_cbm_damage",8))
Speed 34
damagetype "SneakTraverser"
Obituary "$OB_SNEAKTRAVERSER"
Height 5
Radius 6
Scale 2.5
Translation "4:4=104:104", "208:208=104:104", "168:168=104:104"
States
{
Spawn:
SNAK AB 4
loop
Death:
TNT1 A 0 A_JumpIf(ceilingz-z < 48, "XDeath")
TNT1 A 0 A_SpawnItemEx("SneakSnake",0,0,0,48)
stop
XDeath:
Crash:
TNT1 A 0
stop
}
}

actor SneakSnakeStartA : SneakSnakeStart {damage(CallACS("vile_cbm_damage",9))}

actor SneakSnake : BasicProjectile
{
PROJECTILE
Damage (CallACS("vile_cbm_damage",8))
damagetype "SneakTraverser"
Obituary "$OB_SNEAKTRAVERSER"
Height 5
Radius 6
+STEPMISSILE
maxstepheight 48
-NOGRAVITY
+HEXENBOUNCE
+THRUGHOST
BounceCount 2
WallBounceFactor 1.0
Scale 2.5
Speed 48
Translation "4:4=104:104", "208:208=104:104", "168:168=104:104"
States
{
Spawn:
SNAK B 2
SNAK AABBBBAA 1
SNAK A 0 A_ChangeVelocity(48,0,0, CVF_REPLACE | CVF_RELATIVE)
goto Spawn+1
XDeath:
Crash:
TNT1 A 0
stop
Death:
TNT1 A 0
stop
}
}
