actor KnightCrushBoss : BaseMM8BDMWep_CBM
{
tag "$TAGC_6D"
dropitem "KnightCrushWepCDropped"
Weapon.AmmoUse 0
Weapon.AmmoGive 28
Obituary "$OB_KNIGHTCRUSH"
weapon.ammotype "TisButAScratchAmmo"
States
{
Spawn:
C_06 D 1
loop
Ready:
KNIA A 1 ACS_ExecuteAlways(998,0,DYE_KNIGHTMAN)
KNIA A 0 A_TakeInventory("StopShield",9)
KNIA A 0 A_GunFlash
Goto Ready1
Ready1:
KNIA A 0 A_JumpIfInventory("TisButAScratchAmmo",28,"Ready2")
KNIA A 3 A_WeaponReady(8)
KNIA A 0 A_GiveInventory("TisButAScratchAmmo",1)
loop
Ready2:
KNIA A 3 A_WeaponReady
KNIA A 0 A_GiveInventory("TisButAScratchAmmo",1)
loop
Deselect:
KNIA A 0 A_GiveInventory("StopShield",1)
KNIA AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
KNIA A 1 A_Lower
goto Deselect+1
Select:
KNIA AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
KNIA A 1 A_Raise
Loop
Fire:
KNIA B 0 A_PlaySoundEx("weapon/KnightShot","Weapon")
KNIA B 0 A_GiveInventory("StopShield",1)
KNIA B 3 A_GiveInventory("KnightmanFlag",1)
KNIA C 0 A_TakeInventory("KnightDouble",1)
KNIA C 3 A_GiveInventory("KnightmanMain_CI",1)
KNIA D 6
Goto Check

Check:
KNIA D 0 A_JumpIfInventory("KnightDouble",1,"Return")
KNIA D 1 A_GiveInventory("KnightFlag",1)
KNIA D 0 A_JumpIfInventory("KnightFlag",35,"Return")
loop

Return:
KNIA D 2 A_TakeInventory("KnightmanFlag",999)
KNIA C 2
KNIA B 4 A_TakeInventory("KnightFlag",999)
Goto Ready+1

AltFire:
KNIA A 0 A_JumpIfInventory("TisButAScratchAmmo",28,"ShieldCharge")
goto Ready+1
//KNIA H 4 //A_ChangeVelocity(Cos(pitch)*79,-14,-sin(pitch)*48,1)//A_SetAngle(45)
ShieldCharge:
KNIA G 0 A_GiveInventory("VivifyDelay7",1)
KNIA G 0 A_Refire(1)
KNIA G 0 A_TakeInventory("TisButAScratchAmmo",99,1)
KNIA G 2 SetPlayerProperty(0,1,0)
KNIA G 0 A_PlaySoundEx("weapon/chargekick","Weapon")
KNIA G 0 A_GiveInventory("StopShield",1)
KNIA G 0 A_GiveInventory("InvulnerableOn_Pickup",1)
KNIA H 1 A_ChangeVelocity(Cos(pitch)*6,0,-sin(pitch)*3,1)//A_Recoil(-6)
KNIA H 0 A_FireCustomMissile("KnightRush")
KNIA H 0 A_GiveInventory("Repulsion",1)
KNIA H 1 A_ChangeVelocity(Cos(pitch)*6,0,-sin(pitch)*3,1)
KNIA H 0 A_FireCustomMissile("KnightRush")
KNIA H 0 A_GiveInventory("Repulsion",1)
KNIA H 1 A_ChangeVelocity(Cos(pitch)*6,0,-sin(pitch)*3,1)
KNIA H 0 A_FireCustomMissile("KnightRush")
KNIA H 0 A_GiveInventory("Repulsion",1)
KNIA H 1 A_ChangeVelocity(Cos(pitch)*6,0,-sin(pitch)*3,1)
KNIA H 0 A_FireCustomMissile("KnightRush")
KNIA H 0 A_GiveInventory("Repulsion",1)
KNIA G 1 SetPlayerProperty(0,0,0)
KNIA G 0 A_GiveInventory("InvulnerableOff_Pickup",1)
KNIA G 0 A_TakeInventory("StopShield",9)
KNIA G 3 A_GunFlash
Goto Ready1

Flash:
TNT1 A 1 A_GiveInventory("KnightShieldHitbox_P",1)
stop
}
}

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


actor KnightmanFlag : OnceC{}


actor KnightM_CrusherCheck_P : CustomInventory
{
States
{
Pickup:
//TNT1 A 0 A_SpawnItemEx("KnightM_CrusherPrang",0,0,-12,0,0,0,0,32)
//TNT1 A 0 A_SpawnItemEx("KnightM_CrusherPrang",sqrt(momx*momx+momy*momy)*0.5,0,momz*0.5-12,0,0,0,0,32+8)
TNT1 A 0 A_SpawnItemEx("KnightM_CrusherPrang",0,0,0,momx,momy,momz,0,32+8)
stop
}
}

actor KnightM_Crusher
{
Translation "198:198=75:75"
PROJECTILE
damagetype "KnightM_Mace"
Obituary "$OB_KNIGHTCRUSH"
+RIPPER
+NOTARGETSWITCH
+SKYEXPLODE
//+DONTSPLASH
+THRUGHOST
+FORCEXYBILLBOARD
+BOUNCEONFLOORS
+BOUNCEONWALLS
+BOUNCEONCEILINGS
+ALLOWBOUNCEONACTORS
+CANBOUNCEWATER
BounceFactor 1.0
WallBounceFactor 1.0
damage (0)
Radius 8
Height 8
speed 40
scale 2.5
States
{
Spawn:
KNIA I 0
KNIA II 1 A_GiveInventory("KnightM_CrusherCheck_P")
KNIA I 0 A_ChangeFlag("THRUGHOST",0)
KNIA IIIIIIII 1 A_GiveInventory("KnightM_CrusherCheck_P")
KNIA I 0 A_TakeFromTarget("KnightFlag",999)
KNIA IIIIIIII 1 A_GiveInventory("KnightM_CrusherCheck_P")
KNIA I 0 A_SpawnItemEx("KnightM_CrusherReturn",0,0,0,0,0,0,0,1)
stop
Death:
KNIA I 0 A_GiveToTarget("KnightDouble",1)
KNIA I 0 A_TakeFromTarget("KnightFlag",999)
stop
}
}

actor KnightM_CrusherB : KnightM_Crusher{translation "198:198=74:74"}
actor KnightM_CrusherR : KnightM_Crusher{translation "198:198=41:41"}
actor KnightM_CrusherO : KnightM_Crusher{translation "198:198=128:128"}
actor KnightM_CrusherP : KnightM_Crusher{translation "198:198=232:232"}

actor KnightReturnerSound : BasicHelper
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_PlaySoundEx("weapon/KnightReturn","Weapon")
stop
}
}

actor KnightM_CrusherReturn : KnightM_Crusher
{
+NOINTERACTION
+SEEKERMISSILE
ReactionTime 87//about 10 seconds
States
{
Spawn:
KNIA I 0
KNIA I 0 A_RearrangePointers(0,0,2)
KNIA I 0 A_FaceTarget
goto Spawn2
Spawn2:
KNIA I 0 A_TakeFromTarget("KnightFlag",99)
KNIA I 0 A_JumpIfCloser(46,"Death")
KNIA I 0 A_SpawnItemEx("KnightReturnerSound")
KNIA II 0 A_SeekerMissile(90,90,SMF_PRECISE)
KNIA I 1 A_GiveInventory("KnightM_CrusherCheck_P")
KNIA I 0 A_JumpIfCloser(46,"Death")
KNIA I 1 A_GiveInventory("KnightM_CrusherCheck_P")
KNIA I 0 A_JumpIfCloser(46,"Death")
KNIA I 1 A_GiveInventory("KnightM_CrusherCheck_P")
KNIA I 0 A_JumpIfCloser(46,"Death")
KNIA I 1 A_GiveInventory("KnightM_CrusherCheck_P")
KNIA I 0 A_JumpIfCloser(46,"Death")

KNIA I 0 A_CountDown
KNIA I 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
loop
}
}

actor KnightM_CrusherPrang
{
PROJECTILE
damagetype "KnightM_Mace"
Obituary "$OB_KNIGHTCRUSH"
+RIPPER
+THRUGHOST
+DONTBLAST
+DONTSPLASH
Renderstyle None
damage (80)//110
radius 12
height 12//24
Scale 1.0
States
{
Spawn:
TNT1 A 2
stop
/*
Death:
TNT1 A 0 A_Explode(80,24,0,0,24)
stop
*/
}
}

actor KnightShieldHitbox_P : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_SpawnItemEx("KnightShieldHitbox1",28,-7,8,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightShieldHitbox2",28,1,8,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightShieldHitbox3",28,9,8,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightShieldHitbox4",28,17,8,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightShieldHitbox5",28,25,8,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightShieldHitbox6",20,25,8,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightShieldHitbox7",12,25,8,0,0,0,0,1)
stop
}
}

actor KnightShieldHitbox1 : BasicShieldHitbox
{
Meleerange 28
Accuracy -7
Mass 8
states
{
Pain:
TNT1 A 0 
TNT1 A 0 A_SpawnItemEx("KnightShieldDeathFX")
TNT1 A 0 A_PlaySound("item/protoreflect")
goto Spawn
}
}
actor KnightShieldHitbox2 : KnightShieldHitbox1
{
Accuracy 1
}
actor KnightShieldHitbox3 : KnightShieldHitbox1
{
Accuracy 9
}
actor KnightShieldHitbox4 : KnightShieldHitbox1
{
Accuracy 17
}
actor KnightShieldHitbox5 : KnightShieldHitbox1
{
Accuracy 25
}
actor KnightShieldHitbox6 : KnightShieldHitbox5
{
Meleerange 20
}
actor KnightShieldHitbox7 : KnightShieldHitbox5
{
Meleerange 12
}

actor KnightShieldDeathFX : BasicClientSide
{
+BRIGHT
alpha 0.9
renderstyle add
states
{
Spawn:
KNIA L 0 A_SetScale(scaleX + 0.1, 2.5) 
KNIA L 1 A_FadeOut(0.05)
loop
}
}

actor KnightRush : BasicExplosion
{
Damagetype "KnightM_Push"
Obituary "$OB_KNIGHTRUSH"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(50,120,0,0,16)
stop
}
}


actor KnightmanMain_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("KnightM_Crusher",0,0,-8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("KnightM_CrusherB",0,0,-8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("KnightM_CrusherR",0,0,-8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("KnightM_CrusherO",0,0,-8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("KnightM_CrusherP",0,0,-8,0)
goto Done
}
}


