actor RingBoomerangBoss : MegaBuster
{
Weapon.AmmoUse 0
Weapon.AmmoGive 0
Weapon.AmmoUse2 0
Weapon.AmmoGive2 0
Weapon.SlotNumber 4
Obituary "%k ran rings around %o with Ring Boomerangs."
Inventory.Pickupmessage "Power up! Ring Boomerang!"
weapon.ammotype "RingBoomerangClassAmmo"
weapon.ammotype2 "RingBoomerangClassAmmo"
inventory.pickupsound "weapon/weaponup"
+WEAPON.AMMO_OPTIONAL
+WEAPON.ALT_AMMO_OPTIONAL
+WEAPON.NOAUTOFIRE
//inventory.icon "RINGSI"
Scale 2.0
States
{
Spawn:
WEA2 H 1
loop
Ready:
RINA A 0 ACS_ExecuteAlways(998,0,240)
RINA A 0 A_Gunflash
RINA A 0 A_GiveInventory("RingFlag",1)
RINA A 0 A_GiveInventory("RingFlag2",1)
RINA A 0 A_GiveInventory("HasRing",1)
RINA A 0 A_GiveInventory("HasRing2",1)
goto Ready2
Ready2:
RINA A 0 A_GiveInventory("MissingRing",1)
RINA A 0 A_JumpIfInventory("MissingRing", 40, "RingRefund")
RINA A 0 A_JumpIfInventory("HasRing", 1, "Ready3")
RINA A 0 A_JumpIfInventory("RingFlag", 1, "Ready4")
TNT1 A 1 A_WeaponReady(WRF_NOSWITCH)
loop
Ready3:
RINA K 1 A_WeaponReady(WRF_NOSWITCH)
Goto Ready2
Ready4:
RINA Q 1 A_WeaponReady(WRF_NOSWITCH)
Goto Ready2
RingRefund:
RINA A 0 A_TakeInventory("MissingRing",999)
RINA A 0 A_GiveInventory("RingFlag",1)
RINA A 0 A_GiveInventory("HasRing",1)
Goto Ready2
Deselect:
ICEB A 0 A_TakeInventory("RingBoomerangBoss")
ICEB A 0 A_GiveInventory("RingBoomerangBoss")
RINA A 1 A_SelectWeapon("RingBoomerangBoss")
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
RING A 1 A_Raise
Loop
Fire:
RINA K 0 A_JumpIfInventory("AltThrow",1,"Ready2")
RINA A 0 A_JumpIfInventory("HasRing", 1, "ThrowRing")
RINA G 0 A_GiveInventory("RingFlag",1)
Goto Ready2
ThrowRing:
RINA A 0 A_TakeInventory("RingFlag",1)
RINA A 0 A_TakeInventory("HasRing",1)
RINA A 0 A_PlaySoundEx("weapon/ringboomerang","Weapon")
RINA A 0 A_FireCustomMissile("RMRingBoomerang",0,0,8,0)
RINA KLMNOP 1
//TNT1 A 12
Goto Ready2
AltFire:
RINA K 0 A_JumpIfInventory("AltThrow",1,"Ready2")
RINA A 0 A_JumpIfInventory("HasRing2", 1, "AltThrowRing")
RINA A 0 A_GiveInventory("RingFlag2",1)
Goto Ready2
AltThrowRing:
RINA A 0 A_TakeInventory("RingFlag2",1)
RINA A 0 A_TakeInventory("HasRing2",1)
RINA A 0 A_PlaySoundEx("weapon/ringboomerang","Weapon")
RINA A 0 A_FireCustomMissile("RMRingBoomerang2",0,0,8,0)
TNT1 A 0 A_GiveInventory("AltThrow",1)
Goto Ready2
Flash:
RINA K 0 A_JumpIfInventory("AltThrow",1,"LeftThrow")
RINA A 0 A_GiveInventory("MissingRing2",1)
RINA A 0 A_JumpIfInventory("MissingRing2", 40, "RingRefund2")
RINA K 0 A_JumpIfInventory("HasRing2",1,"LeftHold")
RINA K 0 A_JumpIfInventory("RingFlag2",1,"LeftCall")
TNT1 A 1
loop
LeftThrow:
RINA ABCDEF 1
//TNT1 A 12
RINA A 0 A_TakeInventory("AltThrow",1)
goto Flash
LeftHold:
RINA A 1
goto Flash
LeftCall:
RINA G 1
goto Flash
RingRefund2:
RINA A 0 A_TakeInventory("MissingRing2",999)
RINA A 0 A_GiveInventory("RingFlag2",1)
RINA A 0 A_GiveInventory("HasRing2",1)
Goto Flash
NoAmmo:
RINA A 1 ACS_Execute(979,0)
Goto Ready+2
}
}

actor RingBoomerangClassAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 2
}

actor RingManFlag : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor RingFlag : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor RingFlag2 : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor HasRing : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor HasRing2 : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor AltThrow : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor StopTrollingNoob : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor StopTrollingNoob2 : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor MissingRing : Inventory
{
inventory.amount 1
inventory.maxamount 100
}

actor MissingRing2 : Inventory
{
inventory.amount 1
inventory.maxamount 100
}

actor RMRingBoomerang
{
Translation "210:211=249:249"
PROJECTILE
Radius 8
Height 8
scale 2.5
damage (0)
+RIPPER
+HEXENBOUNCE
+NOTARGETSWITCH
+SKYEXPLODE
+DONTSPLASH
meleerange 12
damagetype "Ring"
speed 45
reactiontime 20
States
{
Spawn:
RING A 0
RING A 0 A_TakeFromTarget("MissingRing",999)
RING A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RING A 0 A_JumpIfInTargetInventory("StopTrollingNoob",1,"TrollSafe")
RING AA 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING BB 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING CC 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING DD 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING A 0 A_JumpIfInTargetInventory("RingFlag",1,"Return")
//RING A 0 A_JumpIf(abs(momx) < 1 && abs(momy) < 1 && abs(momz) < 1,"TooSlow")
RING A 0 A_JumpIf(momx < 2 && momy < 2 && momz < 2 && momx > -2 && momy > -2 && momz > -2,"TooSlow")
RING A 0 A_JumpIf(ACS_ExecuteWithResult(649,1)==0,"TrollSafe")
loop
/*RING A 0 A_JumpIfInTargetInventory("RingManFlag",1,1)
goto Gone
RING A 0
loop*/
TooSlow:
RING A 0 A_GiveToTarget("RingFlag",1)
Return:
RING A 0 A_Stop
RING A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RING A 0 A_JumpIfInTargetInventory("StopTrollingNoob",1,"TrollSafe")
RING A 0 A_JumpIfCloser(32,"Death")
RING AA 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING B 0 A_JumpIfCloser(32,"Death")
RING BB 1 //A_SpawnItemEx("RingBoomerangDamager",0,0,0,2,0,0)
RING C 0 A_JumpIfCloser(32,"Death")
RING CC 1 //A_SpawnItemEx("RingBoomerangDamager",0,0,0,2,0,0)
RING D 0 A_JumpIfCloser(32,"Death")
RING DD 1 //A_SpawnItemEx("RingBoomerangDamager",0,0,0,2,0,0)
RING A 0 A_CustomMissile("RMReturningRing",0,0,0,0)
stop
/*Crash: 
RING A 0 A_GiveToTarget("RingBoomerangClassAmmo",1)
RING A 0 A_GiveToTarget("HasRing",1)*/
Death:
RING A 0 A_GiveToTarget("RingBoomerangClassAmmo",1)
RING A 0 A_GiveToTarget("HasRing",1)
stop
TrollSafe:
RING A 1 A_TakeFromTarget("StopTrollingNoob",1)
stop
Gone:
TNT1 A 0
stop
}
}

actor RMReturningRing : RMRingBoomerang
{
+NOINTERACTION
radius 0
height 0
States
{
Spawn:
RING A 0
RING A 0 A_TakeFromTarget("MissingRing",999)
RING A 0 A_JumpIfCloser(32,"Death")
RING AA 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING B 0 A_JumpIfCloser(32,"Death")
RING BB 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING C 0 A_JumpIfCloser(32,"Death")
RING CC 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING D 0 A_JumpIfCloser(32,"Death")
RING DD 1 A_SpawnItemEx("RingBoomerangDamager",0,0,0,2,0,0)
RING A 0 A_JumpIfInTargetInventory("CutterFlag",1,"Spawn")
RING A 0 A_Stop
RING A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RING A 0 A_JumpIfCloser(32,"Death")
RING AA 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING B 0 A_JumpIfCloser(32,"Death")
RING BB 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING C 0 A_JumpIfCloser(32,"Death")
RING CC 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING D 0 A_JumpIfCloser(32,"Death")
RING DD 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING A 0 A_CustomMissile("RMReturningRing",0,0,0,0)
stop
}
}

actor RMRingBoomerang2 : RMRingBoomerang
{
States
{
Spawn:
RING A 0
RING A 0 A_TakeFromTarget("MissingRing2",999)
RING A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RING A 0 A_JumpIfInTargetInventory("StopTrollingNoob2",1,"TrollSafe")
RING AA 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING BB 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING CC 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING DD 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING A 0 A_JumpIfInTargetInventory("RingFlag2",1,"Return")
//RING A 0 A_JumpIf(abs(momx) < 1 && abs(momy) < 1 && abs(momz) < 1,"TooSlow")
RING A 0 A_JumpIf(momx < 2 && momy < 2 && momz < 2 && momx > -2 && momy > -2 && momz > -2,"TooSlow")
RING A 0 A_JumpIf(ACS_ExecuteWithResult(649,1)==0,"TrollSafe")
loop
/*RING A 0 A_JumpIfInTargetInventory("RingManFlag",1,1)
goto Gone
RING A 0
loop*/
TooSlow:
RING A 0 A_GiveToTarget("RingFlag2",1)
Return:
RING A 0 A_Stop
RING A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RING A 0 A_JumpIfInTargetInventory("StopTrollingNoob2",1,"TrollSafe")
RING A 0 A_JumpIfCloser(32,"Death")
RING A 2 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING B 0 A_JumpIfCloser(32,"Death")
RING BB 1 //A_SpawnItemEx("RingBoomerangDamager",0,0,0,2,0,0)
RING C 0 A_JumpIfCloser(32,"Death")
RING CC 1 //A_SpawnItemEx("RingBoomerangDamager",0,0,0,2,0,0)
RING D 0 A_JumpIfCloser(32,"Death")
RING DD 1 //A_SpawnItemEx("RingBoomerangDamager",0,0,0,2,0,0)
RING A 0 A_CustomMissile("RMReturningRing2",0,0,0,0)
stop
/*Crash: 
RING A 0 A_GiveToTarget("RingBoomerangClassAmmo",1)
RING A 0 A_GiveToTarget("HasRing2",1)*/
Death:
RING A 0 A_GiveToTarget("RingBoomerangClassAmmo",1)
RING A 0 A_GiveToTarget("HasRing2",1)
stop
TrollSafe:
RING A 1 A_TakeFromTarget("StopTrollingNoob2",1)
stop
}
}

actor RMReturningRing2 : RMRingBoomerang2
{
+NOINTERACTION
radius 0
height 0
States
{
Spawn:
RING A 0
RING A 0 A_TakeFromTarget("MissingRing2",999)
RING A 0 A_JumpIfCloser(32,"Death")
RING AA 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING B 0 A_JumpIfCloser(32,"Death")
RING BB 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING C 0 A_JumpIfCloser(32,"Death")
RING CC 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING D 0 A_JumpIfCloser(32,"Death")
RING DD 1 A_SpawnItemEx("RingBoomerangDamager",0,0,0,2,0,0)
RING A 0 A_JumpIfInTargetInventory("CutterFlag",1,"Spawn")
RING A 0 A_Stop
RING A 0 A_JumpIfInTargetInventory("CutterFlag",999,"Death")
RING A 0 A_JumpIfCloser(32,"Death")
RING A 2 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING B 0 A_JumpIfCloser(32,"Death")
RING BB 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING C 0 A_JumpIfCloser(32,"Death")
RING CC 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING D 0 A_JumpIfCloser(32,"Death")
RING DD 1 A_SpawnItemEx("RingBoomerangDamager2",0,0,0,2,0,0)
RING A 0 A_CustomMissile("RMReturningRing2",0,0,0,0)
stop
}
}

actor RingBoomerangDamager2 : RingBoomerangDamager
{
damage (10)
}

actor StopTrollingNoobDC : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 0
stop
Pickup:
TNT1 A 0 A_JumpIfInventory("RingBoomerangBoss",1,"InGame")
TNT1 A 0 A_GiveInventory("StopTrollingNoob", 1)
TNT1 A 0 A_GiveInventory("StopTrollingNoob2", 1)
stop
InGame:
TNT1 A 0
stop
}
}