actor ForestWhipWep_NormalBar : NormalBar{args 105, 112}
actor ForestWhipWep : BaseMM8BDMWep
{
Weapon.AmmoUse 3
Weapon.AmmoGive 28
Weapon.SlotNumber 4
Obituary "$OB_FORESTWHIP"
Inventory.Pickupmessage "$PU_FORESTWHIP" 
Tag "$TAG_FORESTWHIP"
weapon.ammotype "ForestWhipAmmo"
inventory.icon "FWHPICON"
States
{
SpawnLoop:
FWPI I -1
loop
Ready:
FWPW A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_FORESTWHIP) 
FWPW A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
FWPW A 0
goto DeselectSwap
Select:
FWPW A 0
goto SelectSwap
Fire:
FWPW B 0 A_JumpIfNoAmmo("NoAmmo")
FWPW B 0 A_TakeInventory("ForestWhipAmmo",3,TIF_NOTAKEINFINITE)
FWPW B 0 A_PlayWeaponSound("weapon/forestwhip")
FWPW B 0 A_GiveInventory("WeaponCharge", 1)

FWPW B 0 A_SpawnItemEx("W_ForestWhipDamager1",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
FWPW C 0 A_SpawnItemEx("W_ForestWhipVineStart",0, 0, 0, 20, 0, 0, 0, SXF_NOCHECKPOSITION,0)
FWPW BBB 1 A_SpawnItemEx("W_ForestWhipFX1",28*cos(pitch), 8, 28*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)

FWPW C 0 A_SpawnItemEx("W_ForestWhipDamager2",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
FWPW CCC 1 A_SpawnItemEx("W_ForestWhipFX2",28*cos(pitch), 8, 28*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)

FWPW C 0 A_SpawnItemEx("W_ForestWhipDamager2",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
FWPW CCC 1 A_SpawnItemEx("W_ForestWhipFX3",28*cos(pitch), 8, 28*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)

FWPW C 0 A_SpawnItemEx("W_ForestWhipDamager2",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
FWPW CCC 1 A_SpawnItemEx("W_ForestWhipFX4",28*cos(pitch), 8, 28*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)

FWPW C 0 A_SpawnItemEx("W_ForestWhipDamager2",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
FWPW CCC 1 A_SpawnItemEx("W_ForestWhipFX5",28*cos(pitch), 8, 28*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)

FWPW B 0 A_SpawnItemEx("W_ForestWhipDamager1",56*cos(pitch), 8, 56*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)
FWPW BBB 1 A_SpawnItemEx("W_ForestWhipFX6",28*cos(pitch), 8, 28*sin(-pitch)+32, momx+1, momy, momz, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERPITCH | SXF_NOCHECKPOSITION,0)

FWPW B 3
FWPW A 12
Goto Ready+1
NoAmmo:
FWPW A 1 ACS_NamedExecute("core_noammo",0)
Goto Ready+1
}
}

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

actor W_ForestWhipFX1 : BasicGraphicEffect
{
    +NOINTERACTION +NOGRAVITY +CLIENTSIDEONLY -SOLID
    scale 2.5
    height 0
    radius 0
    States
    {
    SpawnFrame:
        FWPR A 0
        FWPR A 1
        stop
    }
}

actor W_ForestWhipFX2 : W_ForestWhipFX1 { States { SpawnFrame:
        FWPR B 0
        FWPR B 1
stop }}
actor W_ForestWhipFX3 : W_ForestWhipFX1 { States { SpawnFrame:
        FWPR C 0
        FWPR C 1
stop }}
actor W_ForestWhipFX4 : W_ForestWhipFX1 { States { SpawnFrame:
        FWPR D 0
        FWPR D 1
stop }}
actor W_ForestWhipFX5 : W_ForestWhipFX1 { States { SpawnFrame:
        FWPR E 0
        FWPR E 1
stop }}
actor W_ForestWhipFX6 : W_ForestWhipFX1 { States { SpawnFrame:
        FWPR F 0
        FWPR F 1
stop }}

actor W_ForestWhipDamager1 : BasicFastProjectile
{
    PROJECTILE
    damagetype "ForestWhip"
    Obituary "$OB_FORESTWHIP"
    +SKYEXPLODE
    +EXPLODEONWATER
    RenderStyle None
    Damage (CallACS("vile_cbm_damage",9))
    Radius 8
    Height 8
    speed 1
    scale 2.5
    states
    {
    Spawn:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 A_SpawnItemEx("ThunderClawPegHelper")
        TNT1 A 0
        stop
    }
}

actor W_ForestWhipDamager2 : W_ForestWhipDamager1
{
    Radius 48
    Height 36
}

Actor W_ForestWhipVineStart : BasicProjectile
{
  Radius 8
  Height 8
  Speed 12
  Damage 0
  +THRUACTORS
  +NOEXPLODEFLOOR gravity 500.0
  +STEPMISSILE
  Maxstepheight 48
  damagetype "ForestWhip"
  Obituary "$OB_FORESTWHIP"
  reactiontime 5
  Projectile
  States
  {
  Spawn: 
	TNT1 A 0
	TNT1 I 2
    TNT1 J 2 A_Countdown
	TNT1 B 0 A_PlayWeaponSound("weapon/forestwhipsprout")
	TNT1 A 0 A_SpawnItemEx("W_ForestWhipVine",0,0,-(z-floorz),0,0,0,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
    Loop
  Death:  
    TNT1 A 6
    Stop
  }
}


Actor W_ForestWhipVine : BasicProjectile
{
Scale 2.5
PROJECTILE
+RIPPER
damage (0)
-MISSILE
  damagetype "ForestWhip"
  Obituary "$OB_FORESTWHIP"
reactiontime 1
States
{
Spawn:
TNT1 A 0
FWPR I 0 A_ChangeFlag("MISSILE",1)
FWPR I 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
FWPR I 0 A_ChangeFlag("FLOORHUGGER",1)
FWPR GHIJ 2
Flame2:
FWPR KLMNOPQROPRQNMLK 2 A_Explode(CallACS("vile_cbm_damage",7),24,0,0,24)
FWPR I 0 A_CountDown
loop
Death:
FWPR JIHG 2 
stop
}
}
