Actor SnakeCommandoWep_V_NormalBar : NormalBar{Args 4, 130}
Actor SnakeCommandoWep_V : BaseMM8BDMWep
{
Weapon.AmmoUse 4
Weapon.AmmoGive 28
Weapon.SlotNumber 2
Inventory.Pickupmessage "$PU_SNAKECOMMANDO"
Obituary "$OB_SNAKECOMMANDO"
Tag "$TAG_SNAKECOMMANDO"
weapon.ammotype "SnakeCommandoAmmo_V"
inventory.icon "SACMICON"
States
{
SpawnLoop:
SACM Z -1
loop
ReadyC: Goto Ready+1
Ready:
SACM D 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_SNAKECOMMANDO)
SACM D 1 A_WeaponReady
Goto Ready+1
Deselect:
SACM D 0
goto DeselectSwap
Select:
SACM D 0
goto SelectSwap
Fire:
SACM D 0 A_JumpIfNoAmmo("NoAmmo")
SACM D 0 A_PlaySoundEx("weapon/SnakeCommando","Weapon")
SACM D 0 A_FireCustomMissile("SnakeCommando_V",0,1,8,0)
SACM EF 2
SACM F 3
SACM FE 6
SACM D 6
Goto Ready+1
NoAmmo:
SACM D 1 ACS_NamedExecuteAlways("core_noammo", 0)
Goto Ready+1
}
}

Actor SnakeCommandoAmmo_V : Ammo
{
	Inventory.Amount 1
	Inventory.MaxAmount 28
	+INVENTORY.IGNORESKILL
}

actor SnakeCommando_V : BasicProjectile
{
PROJECTILE
DamageType "SnakeCommando_V"
Obituary "$OB_SNAKECOMMANDO"
Speed 35
Damage (CallACS("vile_cbm_damage",9))
radius 20
height 20
scale 2.5
+RIPPER
+SEEKERMISSILE
reactiontime 20
States
{
Spawn:
TNT1 A 0
SACM B 0 ACS_NamedExecuteAlways("core_targetyawpitch", 0, 0)
SACM B 1 A_SeekerMissile (2, 4, SMF_LOOK|SMF_PRECISE, 70, 2) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -48, 0, sin(-pitch)*-16, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -80, 0, sin(-pitch)*-32, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -112, 0, sin(-pitch)*-48, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
SACM B 1 A_SeekerMissile (2, 4, SMF_LOOK|SMF_PRECISE, 70, 2) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -48, 0, sin(-pitch)*-16, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -80, 0, sin(-pitch)*-32, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -112, 0, sin(-pitch)*-48, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
SACM B 1 A_SeekerMissile (2, 4, SMF_LOOK|SMF_PRECISE, 70, 2) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -48, 0, sin(-pitch)*-16, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -80, 0, sin(-pitch)*-32, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -112, 0, sin(-pitch)*-48, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
SACM B 1 A_SeekerMissile (2, 4, SMF_LOOK|SMF_PRECISE, 70, 2) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -48, 0, sin(-pitch)*-16, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -80, 0, sin(-pitch)*-32, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -112, 0, sin(-pitch)*-48, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
SACM C 1 A_SeekerMissile (2, 4, SMF_LOOK|SMF_PRECISE, 70, 2) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -48, 0, sin(-pitch)*-16, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -80, 0, sin(-pitch)*-32, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -112, 0, sin(-pitch)*-48, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
SACM C 1 A_SeekerMissile (2, 4, SMF_LOOK|SMF_PRECISE, 70, 2) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -48, 0, sin(-pitch)*-16, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -80, 0, sin(-pitch)*-32, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -112, 0, sin(-pitch)*-48, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
SACM C 1 A_SeekerMissile (2, 4, SMF_LOOK|SMF_PRECISE, 70, 2) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -48, 0, sin(-pitch)*-16, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -80, 0, sin(-pitch)*-32, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -112, 0, sin(-pitch)*-48, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
SACM C 1 A_SeekerMissile (2, 4, SMF_LOOK|SMF_PRECISE, 70, 2) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -48, 0, sin(-pitch)*-16, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -80, 0, sin(-pitch)*-32, 0, 0, 0, 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrail_V", -112, 0, sin(-pitch)*-48, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
SACM C 0 A_Countdown //I don't want an infinitely looping homing snake thanks. -- MegaVile
goto Spawn+2
Death:
SACM B 0 A_PlaySoundEx("weapon/deepdiggerbreak","Body")
SACM B 0 A_SpawnItemEx("SnakeCommandoEndFX_V", 0, 0, 0, Random(-8,8), Random(-8,8), Random(-8,8), 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrailEndFX_V", -48, 0, 0, Random(-8,8), Random(-8,8), Random(-8,8), 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrailEndFX_V", -80, 0, 0, Random(-8,8), Random(-8,8), Random(-8,8), 0, SXF_TRANSFERPOINTERS) SACM B 0 A_SpawnItemEx("SnakeCommandoTrailEndFX_V", -112, 0, 0, Random(-8,8), Random(-8,8), Random(-8,8), 0, SXF_TRANSFERPOINTERS|1)
stop
}
}

Actor SnakeCommandoTrail_V : BasicGraphicEffect
{
+FORCEXYBILLBOARD
States
{
SpawnFrame:
SACM A 1
Stop
}}

actor SnakeCommandoEndFX_V : HookDrillEndFX_V
{
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("MM8BDMProjSpawnFuncClient", 1)
SACM B 1 A_CheckFloor("Death")
TNT1 A 1 A_CheckFloor("Death")
Goto Spawn+2
Death:
TNT1 A 0
Stop
}}

actor SnakeCommandoTrailEndFX_V : SnakeCommandoEndFX_V
{
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("MM8BDMProjSpawnFuncClient", 1)
SACM A 1 A_CheckFloor("Death")
TNT1 A 1 A_CheckFloor("Death")
Goto Spawn+2
}}