Actor SonicBoomerangWep_V_NormalBar{Args 33, 117}
Actor SonicBoomerangWep_V : BaseMM8BDMWep
{
Weapon.AmmoUse 8
Weapon.AmmoGive 48
Weapon.SlotNumber 2
Inventory.Pickupmessage "$PU_SONICBOOMERANG"
Obituary "$OB_SONICBOOMERANG"
Tag "$TAG_SONICBOOMERANG"
weapon.ammotype "SonicBoomerangAmmo_V"
inventory.icon "SNBMICON"
States
{
SpawnLoop:
SNBM Z -1
loop
ReadyC: Goto Ready+1
Ready:
SNBM L 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_SONICBOOMERANG)
SNBM L 0 A_TakeInventory("CutterFlag",999)
SNBM L 0 A_TakeInventory("SonicBoomerangFlag_V",2)
SNBM L 1 A_WeaponReady
Goto Ready+1
Deselect:
SNBM L 0
goto DeselectSwap
Select:
SNBM L 0
goto SelectSwap
Fire:
SNBM L 0 A_JumpIfNoAmmo("NoAmmo")
SNBM L 0 A_FireCustomMissile("SonicBoomerang_V",0,1,8,0)
SNBM L 0 A_PlaySoundEx("weapon/sonicboomerangfire","Weapon")
SNBM MNO 2
SNBM O 0 A_FireCustomMissile("SonicBoomerang_V",0,0,8,0)
SNBM L 0 A_PlaySoundEx("weapon/sonicboomerangfire","Weapon")
SNBM PQR 2
Goto Check
Check:
TNT1 A 1 offset(0,62) A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",70,"Return")
TNT1 A 0 A_JumpIfInventory("SonicBoomerangFlag_V",2,"Return")
loop
Return:
SNBM L 0 A_TakeInventory("CutterFlag",999)
SNBM L 0 A_TakeInventory("SonicBoomerangFlag_V",2)
SNBM L 1 offset(0,62)
SNBM L 1 offset(0,52)
SNBM L 1 offset(0,42)
SNBM L 0 A_Refire
Goto Ready+1
NoAmmo:
SNBM L 1 ACS_NamedExecuteAlways("core_noammo", 0)
Goto Ready+1
}
}

Actor SonicBoomerangAmmo_V : Ammo
{
	Inventory.Amount 1
	Inventory.MaxAmount 48
	+INVENTORY.IGNORESKILL
}

actor SonicBoomerang_V : RollingCutter
{
Radius 6
Height 30
scale 2.5
speed 33
damage (0)
obituary "$OB_SONICBOOMERANG"
damagetype "SonicBoomerang_V"
States
{
Spawn:
TNT1 A 0
SNBM A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
SNBM ABCEFGIJH 1 A_SpawnItemEx("SonicBoomerangDamager_V",0,0,0,2,0,0)
SNBM IJHI 1 A_SpawnItemEx("SonicBoomerangDamager_V",0,0,0,2,0,0)
SNBM JHIJ 1 A_SpawnItemEx("SonicBoomerangDamager_V",0,0,0,2,0,0)
SNBM HIJH 1 A_SpawnItemEx("SonicBoomerangDamager_V",0,0,0,2,0,0)
SNBM A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
SNBM IJHI 1 A_SpawnItemEx("SonicBoomerangDamager_V",0,0,0,2,0,0)
SNBM JHIJ 1 A_SpawnItemEx("SonicBoomerangDamager_V",0,0,0,2,0,0)
SNBM A 0 A_CustomMissile("SonicBoomerangReturn_V",0,0,0,0)
stop
Death:
SNBM K 1 A_GiveToTarget("SonicBoomerangFlag_V",1)
stop
}
}

actor SonicBoomerangReturn_V : SonicBoomerang_V
{
Translation "33:33=4:4", "117:117=[255,189,255]:[255,189,255]", "0:2=[0,173,74]:[0,173,74]"
States
{
Spawn:
TNT1 A 0
RCUT A 0 A_FaceTarget
RCUT A 0 A_JumpIfCloser(512,"StartReturning")
SNBM HIJH 1 A_SpawnItemEx("SonicBoomerangDamagerReturn_V",0,0,0,2,0,0)
RCUT A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCUT A 0 A_FaceTarget
RCUT A 0 A_JumpIfCloser(512,"StartReturning")
SNBM IJHI 1 A_SpawnItemEx("SonicBoomerangDamagerReturn_V",0,0,0,2,0,0)
RCUT A 0 A_Countdown
RCUT A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCUT A 0 A_FaceTarget
RCUT A 0 A_JumpIfCloser(512,"StartReturning")
SNBM JHIJ 1 A_SpawnItemEx("SonicBoomerangDamagerReturn_V",0,0,0,2,0,0)
RCUT A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCUT A 0 A_FaceTarget
RCUT A 0 A_JumpIfCloser(512,"StartReturning")
SNBM HIJH 1 A_SpawnItemEx("SonicBoomerangDamagerReturn_V",0,0,0,2,0,0)
RCUT A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCUT A 0 A_CustomMissile("SonicBoomerangReturn_V",0,0,0,0)
stop
StartReturning:
RCUT A 0 A_CustomMissile("SonicBoomerangReturn2_V",0,0,0,0)
stop
}
}

actor SonicBoomerangReturn2_V : SonicBoomerangReturn_V
{
Translation "4:4=4:4"
Speed 0
States
{
Spawn:
TNT1 A 0
SNBM EFGEFGEFG 1 A_Stop
RCUT A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RCUT A 0 A_CustomMissile("SonicBoomerangReturn3_V",0,0,0,0)
stop
}}

actor SonicBoomerangReturn3_V : SonicBoomerangReturn_V
{
Translation "4:4=4:4"
States
{
Spawn:
TNT1 A 0
SNB2 A 0 A_FaceTarget
SNB2 ABCDEFGHIJKL 1 A_JumpIfCloser(64,"Death")
SNB2 "#" 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
SNB2 "#" 0 A_CustomMissile("SonicBoomerangReturn3_V",0,0,0,0)
stop
Death:
SNB2 "#" 1 A_GiveToTarget("SonicBoomerangFlag_V",1)
stop
}}

actor SonicBoomerangDamager_V : BasicExplosion
{
damagetype "SonicBoomerang_V"
Obituary "$OB_SONICBOOMERANG"
States
{
Spawn:
TNT1 A 0
TNT1 A 2 A_Explode(CallACS("vile_cbm_damage",7),30,0,0,30)
stop
}
}

actor SonicBoomerangDamagerReturn_V : SonicBoomerangDamager_V{Damage (6)}

actor SonicBoomerangProtect_V : PowerProtection
{
	Powerup.Duration 2
	DamageFactor "SonicBoomerang", 0.0
}

actor SonicBoomerangFlag_V : Inventory
{
inventory.amount 1
inventory.maxamount 2
+INVENTORY.IGNORESKILL
}