actor KingRodWep_NormalBar : NormalBar{args 212, 221}
actor KingRodWep : BaseMM8BDMWep
{
Weapon.AmmoUse 2
Weapon.AmmoGive 28
Weapon.SlotNumber 2
Inventory.Pickupmessage "$PU_KINGROD"
Obituary "$OB_KINGROD"
Tag "$TAG_KINGROD"
weapon.ammotype "KingRodAmmo"
inventory.icon "KRODICON"
States
{
SpawnLoop:
KROD Z 1
loop
Ready:
KROD A 0 ACS_NamedExecuteWithResult("core_weaponcolor",CLR_KINGROD)
ReadyC:
KROD A 1 A_WeaponReady
Goto Ready+1
Deselect:
KROD A 0
goto DeselectSwap
Select:
KROD A 0
goto SelectSwap
Fire:
KROD A 0 A_JumpIfNoAmmo("NoAmmo")
KROD A 0 A_TakeInventory("KingRodAmmo",2,1)
KROD A 0 A_PlaySoundEx("weapons/busters/megaarmfire3","Weapon")
KROD A 0 A_TakeInventory("KingRodRecallFlag",1)
KROD A 0 A_TakeInventory("KingRodReturnedFlag",1)
KROD A 0 A_FireCustomMissile("KingRod",0,1,8,0)
KROD B 4
FireLoop:
KROD C 4 A_JumpIfInventory("KingRodRecallFlag",1,3)
KROD C 0 ACS_NamedExecute("vile_StateChange",0,2)
KROD C 4 A_Refire("FireLoop")
KROD C 0 A_GiveInventory("KingRodRecallFlag",1)
KROD B 4 ACS_NamedExecute("vile_StateChange",0,2)
ReturnWait:
KROD B 0 ACS_NamedExecute("vile_StateChange",0,2)
KROD B 0 A_GiveInventory("WeaponCharge",1)
KROD B 0 A_JumpIfInventory("WeaponCharge",35,"Returned")
KROD B 3 A_JumpIfInventory("KingRodReturnedFlag",1,1)
Goto ReturnWait
Returned:
KROD A 0 A_TakeInventory("WeaponCharge",35)
KROD A 0 A_PlaySoundEx("weapon/kingrodreturn","Weapon")
KROD A 16
Goto Ready+1

NoAmmo:
KROD A 1 ACS_NamedExecute("core_noammo",0)
Goto ReadyC
}
}

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

actor KingRodRecallFlag : Once {}
actor KingRodReturnedFlag : Once {}

actor KingRod : BasicProjectile
{
+SKYEXPLODE
Damage (CallACS("vile_cbm_damage",15))
Speed 45
Radius 20
Height 20
damagetype "KingRod"
Obituary "$OB_KINGROD"
reactiontime 1
States
{
Spawn:
KROD P 0
KROD P 0 ACS_NamedExecuteWithResult("core_drawhookshot", ACS_NamedExecuteWithResult("core_gettarget"), 32, 8, DHS_MAXDIST + 1290)
Spawn2:
KROD P 1 A_JumpIfCloser(1000,1)
goto Death
KROD PPOO 1 A_JumpIfInTargetInventory("KingRodRecallFlag",1,"KillMe")
loop
KillMe:
TNT1 A 0 A_Countdown
Death:
TNT1 A 0 A_GiveToTarget("KingRodRecallFlag")
TNT1 A 0 A_SpawnItemEx("ThunderClawPegHelper")
TNT1 A 2 A_SpawnItemEx("KingRodReturn")
stop
}
}

Actor KingRodReturn : BasicProjectile
{
+SEEKERMISSILE
+NOINTERACTION
+DONTBLAST
+THRUACTORS
speed 60
damage (0)
states
{
Spawn:
KROD P 0
KROD P 0 A_RearrangePointers(AAPTR_Default,AAPTR_Default,AAPTR_Target)
KROD P 0 ACS_NamedExecuteWithResult("core_drawhookshot", ACS_NamedExecuteWithResult("core_gettarget"), 32, 8, DHS_MAXDIST + 1290)
KROD PPOO 1 A_SpawnItemEx("KingRodDamager")
SpawnLoop:
KROD RR 0 A_SeekerMissile(90,90,SMF_PRECISE)
KROD R 0 A_SpawnItemEx("KingRodDamager")
KROD R 1 A_JumpIfCloser(60,"Return")
KROD RR 0 A_SeekerMissile(90,90,SMF_PRECISE)
KROD R 0 A_SpawnItemEx("KingRodDamager")
KROD R 1 A_JumpIfCloser(60,"Return")

KROD QQ 0 A_SeekerMissile(90,90,SMF_PRECISE)
KROD Q 0 A_SpawnItemEx("KingRodDamager")
KROD Q 1 A_JumpIfCloser(60,"Return")
KROD QQ 0 A_SeekerMissile(90,90,SMF_PRECISE)
KROD Q 0 A_SpawnItemEx("KingRodDamager")
KROD Q 1 A_JumpIfCloser(60,"Return")

KROD Q 0 A_JumpIfInTargetInventory("IsDead",1,"Return")
loop
Return:
KROD Q 0 A_GiveToTarget("KingRodReturnedFlag",1)
stop
}
}

actor KingRodDamager : BasicProjectile
{
+DONTSPLASH
+DONTBLAST
+THRUGHOST
+DONTREFLECT
damagetype "KingRod"
Obituary "$OB_KINGROD"
radius 20
height 20
Damage (CallACS("vile_cbm_damage",8))
States
{
Spawn:
TNT1 A 2
stop
}
}

Actor KingRodFX : BasicGraphicEffect
{
+NOTIMEFREEZE
States
{
Spawn:
KROD N 0
KROD N 1
stop
}
}
Actor KingRodReturnFX : KingRodFX {}

actor KingRodProtect : PowerProtection
{
Powerup.Duration 3
DamageFactor "KingRod", 0.0
}

actor KingRodKnockback : Vile_KnockbackHelper
{
Mass -36
Meleerange 3
}