actor HauntPumpkinWep_NormalBar : NormalBar{args 219, 61}
actor HauntPumpkinWep_ScriptBar : ScriptBar{}
actor HauntPumpkinWep : BaseMM8BDMWep
{
Weapon.AmmoUse 4
Weapon.AmmoGive 28
Weapon.SlotNumber 2
Inventory.Pickupmessage "$PU_HAUNTPUMPKIN"
Obituary "$OB_HAUNTPUMPKIN"
Tag "$TAG_HAUNTPUMPKIN"
weapon.ammotype "HauntPumpkinAmmo"
inventory.icon "HPMKICON"
States
{
SpawnLoop:
HPMK Z 1
loop
Ready:
HPMK A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_HAUNTPUMPKIN)
HPMK A 0 A_JumpIfInventory("HauntPumpkinCooldownFlag",1,"ReadyCooldown")
HPMK A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
ReadyCooldown:
HPMK A 1 A_WeaponReady(WRF_NOFIRE)
Goto Ready+1
Deselect:
HPMK A 0 
goto DeselectSwap
Select:
HPMK A 0 
goto SelectSwap
Fire:
HPMK A 0 A_JumpIfNoAmmo("NoAmmo")
HPMK A 0 A_PlaySoundEx("weapon/hauntpumpkin", "Weapon")
HPMK A 0 A_FireCustomMissile("HauntPumpkin",0,1,8,0)
HPMK A 0 A_GiveInventory("HauntPumpkinCooldownFlag",1)
HPMK A 0 A_SpawnItemEx("HauntPumpkinCooldowner")
HPMK BC 4
HPMK A 10
HPMK AAAAAAAAAA 1 A_WeaponReady(WRF_NOFIRE)
Goto Ready+1
NoAmmo:
HPMK A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}


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


actor HauntPumpkin : BasicProjectile
{
translation "199:199=61:61", "192:192=219:219"
PROJECTILE
+SEEKERMISSILE
+THRUGHOST
+LOOKALLAROUND
+HITTRACER
+NOTARGETSWITCH
Obituary "$OB_HAUNTPUMPKIN"
damagetype "HauntPumpkin"
Radius 16
Height 16
Health 50
scale 2.5
damage (CallACS("vile_cbm_damage",13))
speed 11
ReactionTime 145
States
{
Spawn:
HTPK B 0
HTPK A 0 A_SetArg(0, 105)
HTPK B 0 ThrustThingZ(0,2,0,1)
HTPK BBAA 1 A_ScaleVelocity(1.12)
HTPK BBBAAABBAABB 2 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256, 2)
//HTPK B 0 A_Stop
SpawnLook:
HTPK A 1 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256, 2)
HTPK A 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK A 0 A_Countdown
HTPK A 0 A_JumpIfTargetInLOS("SpawnChase", 0, JLOSF_PROJECTILE)
HTPK A 1 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256, 2)
HTPK A 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK A 0 A_Countdown
HTPK A 0 A_JumpIfTargetInLOS("SpawnChase", 0, JLOSF_PROJECTILE)
HTPK A 1 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256, 2)
HTPK A 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK A 0 A_Countdown
HTPK A 0 A_JumpIfTargetInLOS("SpawnChase", 0, JLOSF_PROJECTILE)
HTPK A 1 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256, 2)
HTPK B 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK B 0 A_Countdown
HTPK B 0 A_JumpIfTargetInLOS("SpawnChase", 0, JLOSF_PROJECTILE)
HTPK B 1 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256, 2)
HTPK B 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK B 0 A_Countdown
HTPK B 0 A_JumpIfTargetInLOS("SpawnChase", 0, JLOSF_PROJECTILE)
HTPK B 1 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256, 2)
HTPK B 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK B 0 A_Countdown
HTPK A 0 A_JumpIfTargetInLOS("SpawnChase", 0, JLOSF_PROJECTILE)
HTPK B 1 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256, 2)
HTPK B 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK B 0 A_Countdown
HTPK A 0 A_JumpIfTargetInLOS("SpawnChase", 0, JLOSF_PROJECTILE)
HTPK B 1 A_SeekerMissile(4, 10, SMF_LOOK|SMF_PRECISE, 256, 2)
HTPK B 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK B 0 A_Countdown
HTPK B 0 A_JumpIfTargetInLOS("SpawnChase", 0, JLOSF_PROJECTILE)
loop
SpawnChase:
HTPK A 1 A_SeekerMissile(4, 10, SMF_PRECISE)
HTPK B 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK B 0 A_CountDownArg(0)
HTPK A 1 A_SeekerMissile(4, 10, SMF_PRECISE)
HTPK B 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK B 0 A_CountDownArg(0)
HTPK A 1 A_SeekerMissile(4, 10, SMF_PRECISE)
HTPK B 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK B 0 A_CountDownArg(0)
HTPK A 1 A_SeekerMissile(4, 10, SMF_PRECISE)
HTPK B 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK B 0 A_CountDownArg(0)
HTPK B 1 A_SeekerMissile(4, 10, SMF_PRECISE)
HTPK B 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK B 0 A_CountDownArg(0)
HTPK B 1 A_SeekerMissile(4, 10, SMF_PRECISE)
HTPK B 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK B 0 A_CountDownArg(0)
HTPK B 1 A_SeekerMissile(4, 10, SMF_PRECISE)
HTPK B 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK B 0 A_CountDownArg(0)
HTPK B 1 A_SeekerMissile(4, 10, SMF_PRECISE)
HTPK B 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
HTPK B 0 A_CountDownArg(0)
loop
XDeath:
HTPK A 0 A_JumpIfInventory("CanBeGrabBustered", 1, "TeamCheck", AAPTR_TRACER)
goto Death
TeamCheck:
HTPK A 0 A_JumpIfInventory("LightTeamFlag", 1, "LightCheck", AAPTR_TARGET)
HTPK A 0 A_JumpIfInventory("WilyTeamFlag", 1, "WilyCheck", AAPTR_TARGET)
HTPK A 0 A_JumpIfInventory("CossackTeamFlag", 1, "CossackCheck", AAPTR_TARGET)
HTPK A 0 A_JumpIfInventory("KingTeamFlag", 1, "KingCheck", AAPTR_TARGET)
goto HealReturn
LightCheck:
HTPK A 0 A_JumpIfInventory("LightTeamFlag", 1, "Failed", AAPTR_TRACER)
HTPK A 1 A_JumpIf(true, "HealReturn")
wait
WilyCheck:
HTPK A 0 A_JumpIfInventory("WilyTeamFlag", 1, "Failed", AAPTR_TRACER)
HTPK A 1 A_JumpIf(true, "HealReturn")
wait
CossackCheck:
HTPK A 0 A_JumpIfInventory("CossackTeamFlag", 1, "Failed", AAPTR_TRACER)
HTPK A 1 A_JumpIf(true, "HealReturn")
wait
KingCheck:
HTPK A 0 A_JumpIfInventory("KingTeamFlag", 1, "Failed", AAPTR_TRACER)
HTPK A 1 A_JumpIf(true, "HealReturn")
wait
Failed:
TNT1 A 0
goto Death
HealReturn:
HBAL A 0 A_CustomMissile("HauntPumpkinHeal", 0, 0, frandom(0.0, 360.0), 0)
goto Death
Death:
TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
TNT1 A 1 A_PlaySoundEx("weapon/drillexplode", "Weapon")
TNT1 A 0 A_TakeFromTarget("HauntPumpkinCooldownFlag",1)
TNT1 A 0 A_SpawnItem("HauntPumpkinExplosion")
TNT1 A 0 A_SpawnItem("ExplosionEffect2")
stop
}
}

actor HauntPumpkinExplosion : BasicExplosion
{
PROJECTILE
+RIPPER
Obituary "$OB_HAUNTPUMPKIN"
damagetype "HauntPumpkin"
Radius 1
Height 1
scale 2.5
damage (0)
speed 0
States
{
Spawn:
TNT1 A 0
TNT1 A 7 A_Explode(CallACS("vile_cbm_damage",24),40,0,0,40)
stop
}
}

actor HauntPumpkinHeal : BasicProjectile
{
Translation "214:214=219:219"
    PROJECTILE
    +NOINTERACTION
    +NOCLIP
    +SEEKERMISSILE
    +BRIGHT
    reactiontime 6
    speed 35
    Damage (0)
    height 10
    radius 10
    Scale 2.5
    States 
    {
    Spawn:
        TNT1 A 0
        TNT1 A 0 ThrustThingZ(0, random(0, 35), random(0, 1), 0)
        HBAL A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
        HBAL B 6
    SpawnLoop:
        HBAL AAAA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
        HBAL A 2
        HBAL Z 0 A_JumpIfCloser(64, "Death")
        HBAL AAAA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
        HBAL A 2
        HBAL Z 0 A_JumpIfCloser(64, "Death")
        HBAL AAAA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
        HBAL A 2
        HBAL Z 0 A_JumpIfCloser(64, "Death")
        HBAL AAAA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
        HBAL B 2
        HBAL Z 0 A_JumpIfCloser(64, "Death")
        HBAL AAAA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
        HBAL B 2
        HBAL Z 0 A_JumpIfCloser(64, "Death")
        HBAL AAAA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
        HBAL B 2
        HBAL Z 0 A_Countdown
        HBAL Z 0 A_JumpIfCloser(64, "Death")
        loop
    Death:
        HBAL A 0 A_GiveToTarget("HauntPumpkinHealPickup", 1)
        stop
    }
}

actor HauntPumpkinHealPickup : CustomInventory
{
Translation "214:214=219:219"
	inventory.pickupmessage "$PU_SMALLHEALTH"
	//inventory.pickupsound "item/energyup"
	reactiontime 60
	Scale 2.0
	States
	{
	Spawn:
		HBAL AB 6 A_Countdown
		loop
	Pickup:
		HBAL A 0 A_PlaySoundEx("item/energyup", "voice")
		HBAL A 0 A_GiveInventory("Health", CallACS("vile_cbm_damage",6))
		stop
	Death:
		HBAL A 0 A_ChangeFlag("NOINTERACTION", true)
		HBAL A 10
		HBAL A 1 A_Fadeout
		wait
	}
}

actor HauntPumpkinCooldownFlag : Once {}

actor HauntPumpkinCooldowner : BasicCooldowner
{
reactiontime 128
States
{
Spawn:
TNT1 A 0
Spawn2:
TNT1 A 1 A_GiveInventory("HauntPumpkinCooldownerFunc",1)
loop
Death:
TNT1 A 0 A_TakeFromTarget("HauntPumpkinCooldownFlag",1)
stop
}
}

actor HauntPumpkinCooldownerFunc : BasicCooldownerFunc
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInTargetInventory("HauntPumpkinCooldownFlag",1,"PickupBasic")
goto PickupRemove
}
}
