actor CrescentKickWep_NormalBar : NormalBar{args 4, 103}
actor CrescentKickWep : BaseMM8BDMWep
{
Weapon.AmmoUse 4
Weapon.AmmoGive 28
Weapon.SlotNumber 4
Obituary "$OB_CRESCENTKICK"
Inventory.Pickupmessage "$PU_CRESCENTKICK" 
Tag "$TAG_CRESCENTKICK"
weapon.ammotype "CrescentKickAmmo"
inventory.icon "CKCKICON"
Scale 2.0
States
{
SpawnLoop: 
CKCK Z 1
loop
Ready: 
CKCK A 0
CKCK A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_CRESCENTKICK) 
CKCK A 1 A_WeaponReady
Goto Ready+2
ReadyC: Goto Ready+2
Deselect: 
CKCK A 0
goto DeselectSwap
Select: 
CKCK A 0
goto SelectSwap
Fire:
CKCK A 0 A_JumpIfNoAmmo("NoAmmo") 
CKCK B 0 A_TakeInventory("CrescentKickAmmo",4,TIF_NOTAKEINFINITE)
CKCK B 0 A_PlaySoundEx("weapon/chargekick","Weapon")
CKCK B 0 SetPlayerProperty(0,1,0)
CKCK B 0 A_ChangeVelocity(cos(pitch)*35,0,sin(pitch)*-4,CVF_RELATIVE)
CKCK BCCCC 1
KickHold:
CKCK C 0 A_JumpIfInventory("WeaponCharge",8,"KickCancel")
CKCK C 0 A_GiveInventory("WeaponCharge",1)
CKCK C 1 
CKCK C 1 A_Refire("KickHold")
KickCancel:
CKCK C 0 A_TakeInventory("WeaponCharge",9)
CKCK C 0 A_ScaleVelocity(0.05)
CKCK C 0 A_PlaySoundEx("weapon/chargekick","Weapon")
CKCK C 0 A_SpawnItemEx("CresentKick_W",cos(pitch)*45,0,32+sin(-pitch)*24,cos(pitch)*15,0,sin(-pitch)*15,0)
CKCK C 1 A_GiveInventory("CrescentKick_P",0)
CKCK C 0 SetPlayerProperty(0,0,0)
TNT1 A 0 SetPlayerProperty(0,0,4)
CKCK DEFG 2
CKCK HIJ 1
TNT1 A 3 Offset(30,100)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Checkfloor("KickEnd")
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Checkfloor("KickEnd")
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Checkfloor("KickEnd")
//wait
KickEnd:
CKCK A 1 Offset(20,70)
CKCK A 1 Offset(17,60)
CKCK A 1 Offset(12,45)
CKCK A 2 Offset(8,38)
CKCK A 2 Offset(2,34)
CKCK A 4 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
goto Ready+2
NoAmmo: 
CKCK A 1 ACS_NamedExecute("core_noammo",0)
Goto Ready+2
}
}

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

actor CresentKick_W : BasicProjectile
{
var int user_PierceRipper;
+HEXENBOUNCE
PROJECTILE
scale 3.0
height 5
radius 5
speed 0
damage (0)
translation "210:255=103:103"
damagetype "CrescentKick_W"
Obituary "$OB_CRESCENTKICK"
+RIPPER
+NOGRAVITY
+NOTARGETSWITCH
states
{
Spawn:
TNT1 A 1
CKIC D 1 A_Explode(CallACS("vile_cbm_damage",45),78,0,0,78)
CKIC D 2 A_Warp(AAPTR_TARGET,45,3,55)
CKIC D 0 A_Explode(CallACS("vile_cbm_damage",45),78,0,0,78)
CKIC E 2 A_Warp(AAPTR_TARGET,30,3,40)
CKIC D 0 A_Explode(CallACS("vile_cbm_damage",45),78,0,0,78)
CKIC E 2 A_Warp(AAPTR_TARGET,25,3,35)
CKIC D 0 A_Explode(CallACS("vile_cbm_damage",45),78,0,0,78)
CKIC F 2 A_Warp(AAPTR_TARGET,-15,3,25)
CKIC D 0 A_Explode(CallACS("vile_cbm_damage",45),78,0,0,78)
CKIC F 2 A_Warp(AAPTR_TARGET,-25,3,15)
CKIC D 0 A_Explode(CallACS("vile_cbm_damage",45),78,0,0,78)
CKIC D 1 A_Warp(AAPTR_TARGET,-30,3,-5)
CKIC D 0 A_Explode(CallACS("vile_cbm_damage",45),78,0,0,78)
CKIC D 1 A_Warp(AAPTR_TARGET,-45,3,-25)
CKIC D 0 A_Explode(CallACS("vile_cbm_damage",45),78,0,0,78)
stop
}
}

actor CrescentKick_P : CustomInventory
{
inventory.amount 1
inventory.maxamount 0
scale 2.0
States
{
Pickup:
TNT1 A 0
TNT1 A 0 ThrustThingZ(0,20,0,0)
TNT1 A 0 A_Checkfloor("Ground")
TNT1 A 0 A_JumpIf(floorz==z, "Ground")
TNT1 A 0
goto Ground
Ground:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("vile_saxtoncheck")==1,"GroundSH")
TNT1 A 0 A_Recoil(18)
stop
GroundSH:
TNT1 A 0 A_Recoil(12)
stop
No:
TNT1 A 0 
fail
}
}

actor CrescentKickThrust_P : CustomInventory
{
states
{
Pickup:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("vile_saxtoncheck")==1,"Saxton")
CKCK B 0 A_ChangeVelocity(cos(pitch)*35,0,sin(pitch)*-4,CVF_RELATIVE)
stop
Saxton:
CKCK B 0 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch)*-4,CVF_RELATIVE)
stop
}
}

actor CrescentKickKnockback_P : CustomInventory
{
states
{
Pickup:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("vile_saxtoncheck")==1,"Saxton")
"----" H 0 ACS_NamedExecuteWithResult("vile_knockback", 40, 12, true, AAPTR_TARGET)
stop
Saxton:
"----" H 0 ACS_NamedExecuteWithResult("vile_knockback", 20, 6, true, AAPTR_TARGET)
stop
}
}