actor HatBoomerangWep_NormalBar : NormalBar {args 4, 110}

actor HatBoomerangWep : BaseMM8BDMWep
{
Weapon.AmmoUse 2
Weapon.AmmoGive 28
Weapon.SlotNumber 3
Inventory.Pickupmessage "$PU_HATBOOMERANG"
Obituary "$OB_HATBOOMERANG"
Tag "$TAG_HATBOOMERANG"
weapon.ammotype "HatBoomerangAmmo"
inventory.icon "HBMRICON"
States
{
SpawnLoop:
HBMR Z -1
loop
Ready:
HBMR A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_HATBOOMERANG)
HBMR A 0 A_JumpIfNoAmmo("ReadyNoAmmo")
HBMR A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
ReadyNoAmmo:
HBMR I 1 A_WeaponReady
HBMR I 0 A_JumpIfNoAmmo("ReadyNoAmmo")
Goto Ready+1
Deselect:
HBMR A 0
goto DeselectSwap
Select:
HBMR A 0
goto SelectSwap
Fire:
HBMR A 0 A_JumpIfNoAmmo("NoAmmo")
HBMR A 0 A_PlaySoundEx("weapons/mmv/grabbusterfire","Weapon")
HBMR A 0 A_FireCustomMissile("HatBoomerang",0,1,8,0)
HBMR BCDEFGH 2
HBMR A 0 A_JumpIfNoAmmo("NoneWait")
HBMR A 2 Offset(0,42)
HBMR A 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
goto Ready+1
NoneWait:
HBMR I 2 Offset(0,42)
HBMR I 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
goto Ready+1
NoAmmo:
HBMR I 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}

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

Actor HatBoomerang : RollingCutterBase
{
+HEXENBOUNCE
Damage (CallACS("vile_cbm_damage",8))
obituary "$OB_HATBOOMERANG"
damagetype "HatBoomerang" 
scale 2.5
Speed 34
States
{
Spawn:
HBMR D 0
HBMR KL 2
HBMR A 0 A_PlaySoundEx("weapon/trufflecluster", "Weapon",0)
//HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,20,0,SXF_TRANSFERPOINTERS)
HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,-20,0,SXF_TRANSFERPOINTERS)
HBMR MO 2
HBMR A 0 A_PlaySoundEx("weapon/trufflecluster", "Weapon",0)
//HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,20,0,SXF_TRANSFERPOINTERS)
HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,-20,0,SXF_TRANSFERPOINTERS)
HBMR PQ 2
HBMR A 0 A_PlaySoundEx("weapon/trufflecluster", "Weapon",0)
//HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,20,0,SXF_TRANSFERPOINTERS)
HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,-20,0,SXF_TRANSFERPOINTERS)
HBMR KL 2
HBMR A 0 A_PlaySoundEx("weapon/trufflecluster", "Weapon",0)
//HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,20,0,SXF_TRANSFERPOINTERS)
HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,-20,0,SXF_TRANSFERPOINTERS)
HBMR MO 2
HBMR A 0 A_PlaySoundEx("weapon/trufflecluster", "Weapon",0)
//HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,20,0,SXF_TRANSFERPOINTERS)
HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,-20,0,SXF_TRANSFERPOINTERS)
HBMR PQ 2
HBMR A 0 A_PlaySoundEx("weapon/trufflecluster", "Weapon",0)
//HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,20,0,SXF_TRANSFERPOINTERS)
HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,-20,0,SXF_TRANSFERPOINTERS)
TNT1 A 2 A_CustomMissile("HatBoomerangReturn",0,0,0,0)
stop
}
}

Actor HatBoomerangReturn : HatBoomerang
{
+NOINTERACTION
+NOCLIP
States
{
Spawn:
TNT1 A 0
HBMR F 0 A_FaceTarget
SpawnLoop:
HBMR KKLL 1 A_GiveInventory("HatBoomerangFunc",1) 
HBMR A 0 A_PlaySoundEx("weapon/trufflecluster", "Weapon",0)
//HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,20,0,SXF_TRANSFERPOINTERS)
HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,-20,0,SXF_TRANSFERPOINTERS)
TNT1 A 2 A_CustomMissile("HatBoomerangReturn2",0,0,0,0)
Stop
}
}

Actor HatBoomerangReturn2 : HatBoomerang
{
States
{
Spawn:
TNT1 A 0
HBMR F 0 A_FaceTarget
SpawnLoop:
HBMR MMOO 1 A_GiveInventory("HatBoomerangFunc",1) 
HBMR A 0 A_PlaySoundEx("weapon/trufflecluster", "Weapon",0)
//HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,20,0,SXF_TRANSFERPOINTERS)
HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,-20,0,SXF_TRANSFERPOINTERS)
TNT1 A 2 A_CustomMissile("HatBoomerangReturn3",0,0,0,0)
Stop
}
}

Actor HatBoomerangReturn3 : HatBoomerang
{
States
{
Spawn:
TNT1 A 0
HBMR F 0 A_FaceTarget
SpawnLoop:
HBMR PPQQ 1 A_GiveInventory("HatBoomerangFunc",1) 
HBMR A 0 A_PlaySoundEx("weapon/trufflecluster", "Weapon",0)
//HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,20,0,SXF_TRANSFERPOINTERS)
HBMR A 0 A_SpawnItemEx("HatBoomerangBullet",0,0,0,0,0,-20,0,SXF_TRANSFERPOINTERS)
TNT1 A 2 A_CustomMissile("HatBoomerangReturn",0,0,0,0)
stop
}
}

actor HatBoomerangBullet : BasicProjectile
{
//+HEXENBOUNCE
bouncefactor 1.0
wallbouncefactor 1.0
bouncecount 2
scale 3.75
Radius 16
Height 16
damage (CallACS("vile_cbm_damage",13))
obituary "$OB_HATBOOMERANG"
damagetype "HatBoomerangBit" 
speed 0
States
{
Spawn:
HBMR R 1
loop
}
}

actor HatBoomerangFunc : CustomInventory
{
    States
    {
    Pickup:
	TNT1 A 0 A_GiveToTarget("AliveCheck",1)
	TNT1 A 0 A_JumpIfInTargetInventory("AliveCheckFlag",1,"Pickup2")
	RemoveThis:
	TNT1 A 0 A_RemoveMaster
	TNT1 A 0 Thing_Remove(0)
	stop
	Pickup2:
	TNT1 A 0 A_JumpIfCloser(60,"RemoveThis")
    TNT1 A 0 A_Explode(8, 24, 0, 0, 24)
	TNT1 A 0 A_GiveInventory("HeadTowardsTarget_Arg0",1)
	TNT1 A 0 A_GiveInventory("WarpMasterHere",1)
	stop		
    }
}
