actor Knightman : HighArmorClass
{
Player.ScoreIcon "KNIGMUGS"
player.startitem "BaseFlagPack", 1
player.forwardmove 0.75, 0.75
player.sidemove 0.73, 0.73
player.displayname "Knightman"
player.soundclass "knightmanc"
player.jumpz 12
player.viewheight 56
player.startitem "NormalArmor"
player.startitem "KnightCrushBoss"
//player.startitem "Base28Ammo",28
//player.startitem "BaseAltfireAmmo",112
player.startitem "UltimateAttackItem3"
player.startitem "UltSoundWatcherSpawn3"
player.startitem "IsFromMM6"
States
{
Animation2:
Spawn:
KNIM A 0
KNIM B 1 A_JumpIf(z-floorz>0,"Jumping")
KNIM A 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn+2

Jumping:
KNIM LLLSSS 1 A_JumpIf(z-floorz<=0,"Spawn")
loop

See:
KNIM BBBCCCDDDEEE 1 A_JumpIf(Z-Floorz>0,"Jumping")
Goto Spawn

Missile:
KNIM F 0 A_JumpIfInventory("KnightmanHoldA_P",1,"MissileH")
KNIM FGFI 1 A_JumpIf(z-floorz>0,"JumpingMissile")

MissileH:
Animation1:
KNIM K 1 A_JumpIf(z-floorz>0,"JumpingMissileH")
loop

JumpingMissile:
KNIM LLLM 1 A_JumpIf(z-floorz<=0,"Missile")

JumpingMissileH:
KNIM O 1 A_JumpIf(z-floorz<=0,"MissileH")
loop

Animation3:
KNIM J 0 A_JumpIf(z-floorz>0,"JumpingA3")
KNIM JJFFGGGGFF 1 A_JumpIf(z-floorz>0,"Jumping")
goto Spawn+1

JumpingA3:
KNIM NN 1 A_JumpIf(z-floorz<=0,"Animation3")
goto Jumping

Animation4:
KNIM R 1
loop

Animation5:
KNIM P 4
goto Spawn+1

Animation6:
KNIM Q 4
goto Spawn+1

Animation7:
KNIM CJ 6
KNIM F 4
KNIM G 6
KNIM F 20
goto Spawn+1

ClassTimeStop:
PLAY A 0 SetPlayerProperty(0,1,4)
//PLAY A 0 A_GiveInventory("TimeStoppedFlag",1)
PLAY A 0 ACS_Execute(528,0)
KNIM AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
//PLAY A 0 A_TakeInventory("TimeStoppedFlag",999)
PLAY A 0 SetPlayerProperty(0,0,4)
Goto pain+1
ClassPain:
//KNIM H 0 A_TakeInventory("TimeStoppedFlag",999)
KNIM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
KNIM H 0 A_JumpIfInventory("StopShield",1,"ClassPain.Shield")
KNIM H 0 A_JumpIfInventory("CutterFlag",1,"Animation1")
Goto Spawn+1
ClassPain.Shield:
KNIM RRRRRRRRRR 2 A_SpawnItem("PainFX",0,3)
goto Animation4
ClassDeath:
KNIM H 20 ACS_ExecuteAlways(999,0,0)
KNIM H 0 A_PlayerScream
NOFX A 0 A_SpawnItemEx("FakeDeathFX",0,0,32)
NOFX A 1 A_CheckPlayerDone
wait
ClassIceDeath:
KNIM A 35
NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
CUTM H 0 A_JumpIfInTargetInventory("KnightCrushWepM",1,2)
CUTM H 0 A_GiveToTarget("WeaponGetter")
CUTM H 0 A_GiveToTarget("KnightCrushWepM")
goto ClassDeath
}
}

actor KnightCrushBoss : VCBaseWeapon
{
weapon.ammotype "BaseAltfireAmmo"
Obituary "$OB_KNIGHTMAN1" //Yes, there are no obits on purpose
weapon.ammouse 1
const int KNIGHT_ALTANGLE = 32.727272727272727272727272727273;
States
{

Ready:
TNT1 A 0 A_TakeInventory("DrillFlag") //For altfire charge sound
KNB1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Ready.Ult")
KNB1 A 0 A_JumpIfInventory("BaseAltfireAmmo",56,"Ready.TF")
KNB1 A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) KNB1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
KNB1 A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) KNB1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
KNB1 A 0 A_GiveInventory("BaseAltfireAmmo",2)
goto Ready
Ready.TF:
KNB1 A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) KNB1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") KNB1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
KNB1 A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) KNB1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") KNB1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
KNB1 A 0 A_GiveInventory("BaseAltfireAmmo",2)
goto Ready
Ready.Ult:
KNB2 A 0 A_TakeInventory("DrillFlag") //For altfire charge sound
KNB2 A 0 A_TakeInventory("UltAttackFlag",1)
KNB2 A 0 A_JumpIfInventory("BaseAltfireAmmo",56,"Ready.UltTF")
KNB2 A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28))
KNB2 A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28))
KNB2 A 0 A_GiveInventory("BaseAltfireAmmo",2)
goto Ready
Ready.UltTF:
KNB2 A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) KNB2 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1.Ult")
KNB2 A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) KNB2 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1.Ult")
KNB2 A 0 A_GiveInventory("BaseAltfireAmmo",2)
goto Ready

User1:
KNB1 O 0 A_GiveInventory("StopShield",1)
KNB1 MNO 1
KNB1 M 0 ACS_NamedExecuteWithResult("VC_SetState",4)
User1.Hold:
KNB1 O 1 A_GiveInventory("KnightmanUser1_CI",1)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto User1.End
KNB1 OO 1 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1.Hold")
Goto User1.End
User1.End:
KNB1 M 0 ACS_NamedExecuteWithResult("VC_SetState",2)
KNB1 ONM 2 A_TakeInventory("StopShield",9)
KNB1 A 0 A_GiveInventory("KnightShieldHitbox_P",1)
KNB1 A 15
Goto Ready

User1.Ult:
KNB2 O 0 A_GiveInventory("StopShield",1)
KNB2 MNO 1
KNB2 M 0 ACS_NamedExecuteWithResult("VC_SetState",4)
User1.UltHold:
KNB2 O 1 A_GiveInventory("KnightmanUser1_CI",1)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto User1.UltEnd
KNB2 OO 1 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1.UltHold")
Goto User1.UltEnd
User1.UltEnd:
KNB2 M 0 ACS_NamedExecuteWithResult("VC_SetState",2)
KNB2 ONM 2 A_TakeInventory("StopShield",9)
KNB2 A 0 A_GiveInventory("KnightShieldHitbox_P",1)
KNB2 A 15
Goto Ready

UltimateAttack:
KNB1 M 0 ACS_NamedExecuteWithResult("VC_SetState",7)
KNB1 A 0 ACS_NamedExecuteWithResult("VC_UltimateText",53)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
TNT1 A 0 A_GiveInventory("InvProtection",1)
TNT1 A 0 A_GiveInventory("NoSpeed",1)
TNT1 A 0 A_SetGravity(0.0)
CUTA A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
TNT1 A 0 A_SpawnItemEx("MM6UltFXSpawner",0,0,28)
KNB1 AAAAAAAAAAAAAAAAAA 1 A_Stop
KNB1 A 0 A_PlaySoundEx("mm6/ult","Auto")
KNB1 A 0 A_SpawnItemEx("KnightUltColorWatcher")
KNBF AAAAAA 1 A_Stop
KNB1 AAAAAA 1 A_Stop
KNBF AAAAAA 1 A_Stop
KNB1 AAAAAA 1 A_Stop
TNT1 A 0 A_TakeInventory("NoSpeed",999)
TNT1 A 0 A_GiveInventory("GravityRestore")
TNT1 A 0 A_ChangeFlag("INVULNERABLE",0)
TNT1 A 0 A_TakeInventory("InvProtection",1)
TNT1 A 0 A_PlaySoundEx("knightman/ult","Weapon")
NC3H A 0 A_TakeInventory("UltAttackFlag",9)
TNT1 A 0 A_GiveInventory("BaseCustomFlag1",1)
KNB2 ZA 3 A_GiveInventory("WindUltCooldown")
TNT1 A 0 A_SpawnItemEx("KnightUltWatcher")
goto Ready.Ult

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
KNB1 A 1 A_Lower
Loop

Select:
TNT1 A 0 A_SpawnItemEx("KnightSkinWatcher")
TNT1 A 0 ACS_ExecuteAlways(991,0,823)
TNT1 A 0 A_GunFlash
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
KNB1 A 1 A_Raise
Loop

Flash:
TNT1 A 2
TNT1 A 0 A_GiveInventory("KnightShieldHitbox_P",1)
Flash.Loop:
TNT1 A 1 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 0 A_JumpIf(momz<0,"Flash.Falling")
loop
Flash.Falling:
TNT1 A 1 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 0 A_GiveInventory("KnightJumpHandler",1)
TNT1 A 0 A_GiveInventory("KnightJumpAmmo",1)
TNT1 A 0 A_JumpIf(z-floorz<=0, "Flash.Land")
loop
Flash.Land:
TNT1 A 2 A_SpawnItemEx("KnightLandDust")
TNT1 A 0 A_TakeInventory("KnightJumpAmmo",999)
goto Flash.Loop

Fire:
TNT1 A 0 A_TakeInventory("LeftClickFlag")
KNB1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Fire.Ult")
TNT1 A 0 A_Jumpifinventory("KnightPerfectFlag",1,"PerfectWindup")
KNB1 BDFH 1 A_GiveInventory("BaseAltfireAmmo",1)
FireReal:
KNB1 A 0 A_GiveInventory("StopShield")
KNB1 A 0 A_PlaySoundEx("knightman/shoot","Weapon")
KNB1 A 0 A_GiveInventory("KnightM1Handler")
KNB1 I 0 ACS_NamedExecuteWithResult("VC_SetState",1)
KNB1 IJ 1 A_GiveInventory("BaseAltfireAmmo",1)
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",8)
KNB1 KKKK 2 A_GiveInventory("KnightmanHoldA_P",1)
KNB1 K 0 A_Refire("Fire.MoreRange")
Goto Fire.Wait
PerfectWindup:
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",4)
KNB1 BDFH 1 A_GiveInventory("KnightPerfectFlag")
goto FireReal
Fire.MoreRange:
KNB1 K 0 A_GiveInventory("KnightmanHoldA_P",1)
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",1)
KNB1 K 1 A_GiveInventory("KnightmanHoldLimit",1)
KNB1 K 0 A_JumpIfInventory("KnightmanHoldLimit",0,"Fire.Wait")
KNB1 K 0 A_Refire("Fire.MoreRange")
Goto Fire.Wait
Fire.Wait:
KNB1 A 0 A_GiveInventory("KnightmanReturn_P",1)
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",1)
KNB1 K 1 A_GiveInventory("CutterFlag",1)
KNB1 K 0 A_JumpIfInventory("CutterFlag",175,"Fire.End")
loop
Fire.End:
TNT1 A 0 A_TakeInventory("LeftClickFlag")
KNB1 I 0 ACS_NamedExecuteWithResult("VC_SetState",3)
KNB1 A 0 A_TakeInventory("StopShield")
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",2)
KNB1 LL 1 A_TakeInventory("KnightmanHoldLimit",99)
KNB1 A 0 A_GiveInventory("KnightShieldHitbox_P",1)
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",8)
KNB1 EDCB 2 A_TakeInventory("CutterFlag",999)
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",4)
KNB1 A 4 A_TakeInventory("StopShield")
Goto Ready

Fire.Ult:
TNT1 A 0 A_Jumpifinventory("KnightPerfectFlag",1,"PerfectWindup.Ult")
KNB2 BDGH 1 A_GiveInventory("BaseAltfireAmmo",1)
FireReal.Ult:
KNB1 A 0 A_GiveInventory("StopShield")
KNB2 A 0 A_PlaySoundEx("knightman/shoot","Weapon")
KNB2 A 0 A_PlaySoundEx("weapon/solarblaze","Auto")
KNB1 A 0 A_GiveInventory("KnightM1Handler")
KNB1 I 0 ACS_NamedExecuteWithResult("VC_SetState",1)
KNB1 IJ 1 A_GiveInventory("BaseAltfireAmmo",1)
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",8)
KNB1 KKKK 2 A_GiveInventory("KnightmanHoldA_P",1)
KNB2 K 0 A_Refire("Fire.UltMoreRange")
Goto Fire.UltWait
PerfectWindup.Ult:
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",4)
KNB2 BDGH 1 A_GiveInventory("KnightPerfectFlag")
goto FireReal.Ult
Fire.UltMoreRange:
KNB1 K 0 A_GiveInventory("KnightmanHoldA_P",1)
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",1)
KNB1 K 1 A_GiveInventory("KnightmanHoldLimit",1)
KNB1 K 0 A_JumpIfInventory("KnightmanHoldLimit",0,"Fire.UltWait")
KNB1 K 0 A_Refire("Fire.UltMoreRange")
Goto Fire.UltWait
Fire.UltWait:
KNB1 A 0 A_GiveInventory("KnightmanReturn_P",1)
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",8)
KNB1 K 1 A_GiveInventory("CutterFlag",1)
KNB1 K 0 A_JumpIfInventory("CutterFlag",175,"Fire.UltEnd")
loop
Fire.UltEnd:
KNB1 I 0 ACS_NamedExecuteWithResult("VC_SetState",3)
KNB1 A 0 A_TakeInventory("StopShield")
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",2)
KNB1 LL 1 A_TakeInventory("KnightmanHoldLimit",99)
KNB1 A 0 A_GiveInventory("KnightShieldHitbox_P",1)
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",8)
KNB2 EDCB 2 A_TakeInventory("CutterFlag",175)
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",4)
TNT1 A 0 A_TakeInventory("KnightMomentum",99)
KNB2 A 4 A_TakeInventory("StopShield")
Goto Ready.Ult

Altfire:
RATU A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
KNB1 M 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"AltFire.Ult")
KNB1 P 1
TNT1 A 0 A_GiveInventory("LeftClickFlag")
Altfire.HoldA:
TNT1 A 0 A_GiveInventory("StopShield",1)
TNT1 A 0 A_GiveInventory("KnightmanAltS_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.End
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 Q 1 A_SpawnItemEx("KnightmanCrushSpin",80,0,68,0,0,0,KNIGHT_ALTANGLE*0)
KNB1 Q 0 A_Refire("Altfire.HoldB")
Goto Altfire.End
Altfire.HoldB:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.End
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 Q 1 A_SpawnItemEx("KnightmanCrushSpin",80,0,68,0,0,0,KNIGHT_ALTANGLE*1)
KNB1 Q 0 A_Refire("Altfire.HoldC")
Goto Altfire.End
Altfire.HoldC:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.End
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 R 1 A_SpawnItemEx("KnightmanCrushSpin",80,0,68,0,0,0,KNIGHT_ALTANGLE*2)
KNB1 R 0 A_Refire("Altfire.HoldD")
Goto Altfire.End
Altfire.HoldD:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.End
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 R 1 A_SpawnItemEx("KnightmanCrushSpin",80,0,68,0,0,0,KNIGHT_ALTANGLE*3)
KNB1 R 0 A_Refire("Altfire.HoldE")
Goto Altfire.End
Altfire.HoldE:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.End
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 S 1 A_SpawnItemEx("KnightmanCrushSpin",80,0,68,0,0,0,KNIGHT_ALTANGLE*4)
KNB1 S 0 A_Refire("Altfire.HoldF")
Goto Altfire.End
Altfire.HoldF:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.End
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 S 1 A_SpawnItemEx("KnightmanCrushSpin",80,0,68,0,0,0,KNIGHT_ALTANGLE*5)
KNB1 S 0 A_Refire("Altfire.HoldG")
Goto Altfire.End
Altfire.HoldG:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.End
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 T 1 A_SpawnItemEx("KnightmanCrushSpin",80,0,68,0,0,0,KNIGHT_ALTANGLE*6)
KNB1 T 0 A_Refire("Altfire.HoldH")
Goto Altfire.End
Altfire.HoldH:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.End
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 T 1 A_SpawnItemEx("KnightmanCrushSpin",80,0,68,0,0,0,KNIGHT_ALTANGLE*7)
KNB1 T 0 A_Refire("Altfire.HoldI")
Goto Altfire.End
Altfire.HoldI:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.End
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6)
KNB1 U 1 A_SpawnItemEx("KnightmanCrushSpin",80,0,68,0,0,0,KNIGHT_ALTANGLE*8)
KNB1 U 0 A_Refire("Altfire.HoldJ")
Goto Altfire.End
Altfire.HoldJ:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.End
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6)
KNB1 S 1 A_SpawnItemEx("KnightmanCrushSpin",80,0,68,0,0,0,KNIGHT_ALTANGLE*9)
KNB1 S 0 A_Refire("Altfire.HoldK")
Goto Altfire.End
Altfire.HoldK:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.End
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6)
KNB1 S 1 A_SpawnItemEx("KnightmanCrushSpin",80,0,68,0,0,0,KNIGHT_ALTANGLE*10)
KNB1 S 0 A_Refire("Altfire.HoldA")
Goto Altfire.End

Altfire.End:
KNB1 AAA 0 A_ClearRefire
TNT1 A 0 A_TakeInventory("LeftClickFlag")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_TakeInventory("KnightMomentum",99)
KNB1 EDCB 2 A_TakeInventory("StopShield",999)
TNT1 A 0 A_TakeInventory("KnightMomentum",99)
KNB1 A 10 A_GiveInventory("KnightShieldHitbox_P",1)
Goto Ready

AltFire.Ult:
KNB2 p 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB2 P 1
TNT1 A 0 A_GiveInventory("LeftClickFlag")
Altfire.UltHoldA:
TNT1 A 0 A_GiveInventory("KnightmanAltS_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.Ult.Followup
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 Q 1 A_SpawnItemEx("KnightmanCrushSpinUlt",80,0,68,0,0,0,KNIGHT_ALTANGLE*0)
KNB1 Q 0 A_Refire("Altfire.UltHoldB")
Goto Altfire.Ult.Followup
Altfire.UltHoldB:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.Ult.Followup
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 Q 1 A_SpawnItemEx("KnightmanCrushSpinUlt",80,0,68,0,0,0,KNIGHT_ALTANGLE*1)
KNB1 Q 0 A_Refire("Altfire.UltHoldC")
Goto Altfire.Ult.Followup
Altfire.UltHoldC:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.Ult.Followup
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 R 1 A_SpawnItemEx("KnightmanCrushSpinUlt",80,0,68,0,0,0,KNIGHT_ALTANGLE*2)
KNB1 R 0 A_Refire("Altfire.UltHoldD")
Goto Altfire.Ult.Followup
Altfire.UltHoldD:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.Ult.Followup
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 R 1 A_SpawnItemEx("KnightmanCrushSpinUlt",80,0,68,0,0,0,KNIGHT_ALTANGLE*3)
KNB1 R 0 A_Refire("Altfire.UltHoldE")
Goto Altfire.Ult.Followup
Altfire.UltHoldE:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.Ult.Followup
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 S 1 A_SpawnItemEx("KnightmanCrushSpinUlt",80,0,68,0,0,0,KNIGHT_ALTANGLE*4)
KNB1 S 0 A_Refire("Altfire.UltHoldF")
Goto Altfire.Ult.Followup
Altfire.UltHoldF:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.Ult.Followup
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 S 1 A_SpawnItemEx("KnightmanCrushSpinUlt",80,0,68,0,0,0,KNIGHT_ALTANGLE*5)
KNB1 S 0 A_Refire("Altfire.UltHoldG")
Goto Altfire.Ult.Followup
Altfire.UltHoldG:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.Ult.Followup
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 T 1 A_SpawnItemEx("KnightmanCrushSpinUlt",80,0,68,0,0,0,KNIGHT_ALTANGLE*6)
KNB1 T 0 A_Refire("Altfire.UltHoldH")
Goto Altfire.Ult.Followup
Altfire.UltHoldH:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.Ult.Followup
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
KNB1 T 1 A_SpawnItemEx("KnightmanCrushSpinUlt",80,0,68,0,0,0,KNIGHT_ALTANGLE*7)
KNB1 T 0 A_Refire("Altfire.UltHoldI")
Goto Altfire.Ult.Followup
Altfire.UltHoldI:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.Ult.Followup
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6)
KNB1 U 1 A_SpawnItemEx("KnightmanCrushSpinUlt",80,0,68,0,0,0,KNIGHT_ALTANGLE*8)
KNB1 U 0 A_Refire("Altfire.UltHoldJ")
Goto Altfire.Ult.Followup
Altfire.UltHoldJ:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.Ult.Followup
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6)
KNB1 S 1 A_SpawnItemEx("KnightmanCrushSpinUlt",80,0,68,0,0,0,KNIGHT_ALTANGLE*9)
KNB1 S 0 A_Refire("Altfire.UltHoldK")
Goto Altfire.Ult.Followup
Altfire.UltHoldK:
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
goto Altfire.Ult.Followup
TNT1 A 0 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6)
KNB1 S 1 A_SpawnItemEx("KnightmanCrushSpinUlt",80,0,68,0,0,0,KNIGHT_ALTANGLE*10)
KNB1 S 0 A_Refire("Altfire.UltHoldA")
Goto Altfire.Ult.Followup
Altfire.Ult.Followup:
TNT1 A 0 A_TakeInventory("LeftClickFlag")
KNB1 I 0 ACS_NamedExecuteWithResult("VC_SetState",1)
KNB2 GH 1 A_TakeInventory("KnightMomentum",99)
KNB2 A 0 A_PlaySoundEx("knightman/shoot","Weapon")
KNB2 A 0 A_PlaySoundEx("weapon/solarblaze","Auto")
KNB2 A 0 A_FireCustomMissile("KnightmanCrushUltAlt",0,0,-8,12)
KNB1 I 0 ACS_NamedExecuteWithResult("VC_SetState",1)
KNB1 IJ 1
KNB1 KKKKKKKKKK 2 A_GiveInventory("KnightmanHoldA_P",1)
Goto Fire.UltEnd //No extra range.
}
}

Actor KnightmanCrush
{
PROJECTILE
+BOUNCEONWALLS
+BOUNCEONCEILINGS
+BOUNCEONFLOORS
+NOTARGETSWITCH
+THRUGHOST
+SKYEXPLODE
+DONTREFLECT
BounceCount 9999
BounceFactor 1.0
WallBounceFactor 1.0
Radius 16
Height 16
Damage (21)
Scale 2.5
Speed 50
+RIPPER
Obituary "$OB_KNIGHTMAN1"
DamageType "KnightmanCrush"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
KCRB BBBB 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
KCRB B 0 A_ChangeFlag("THRUGHOST",0)
Spawn_L:
KCRB BBBBBBBB 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
KCRB B 0 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
KCRB B 1 A_JumpIfInventory("KnightmanReturn_P",1,"Death",2)
KCRB B 0 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
KCRB B 1 A_JumpIfInventory("KnightmanReturn_P",1,"Death",2)
Spawn_L2:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death2")
KCRB B 0 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
KCRB B 1 A_JumpIfInventory("KnightmanReturn_P",1,"Death",2)
loop
Death:
Return:
KCRB B 0 A_CustomMissile("KnightmanCrushReturn",0,0,0,0)
stop
Death2:
TNT1 A 0
Stop
}
}

actor KnightmanCrush2 : KnightmanCrush
{
Damage (25)
}

actor KnightmanCrush3 : KnightmanCrush
{
Damage (29)
}

actor KnightmanCrush4 : KnightmanCrush
{
Damage (33)
}

actor KnightmanCrush5 : KnightmanCrush
{
Damage (37)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
KCRB B 0 A_ChangeFlag("THRUGHOST",0)
Spawn_L:
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
KCRB B 0 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho")
KCRB B 1 A_JumpIfInventory("KnightmanReturn_P",1,"Death",2)
KCRB B 0 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho")
KCRB B 1 A_JumpIfInventory("KnightmanReturn_P",1,"Death",2)
Spawn_L2:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death2")
KCRB B 0 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho")
KCRB B 1 A_JumpIfInventory("KnightmanReturn_P",1,"Death",2)
loop
}
}

actor KnightmanCrush6 : KnightmanCrush5
{
damagetype "KnightPerfect"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho2")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho2")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho2")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho2")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
KCRB B 0 A_ChangeFlag("THRUGHOST",0)
Spawn_L:
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho2")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho2")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho2")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho2")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho2")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho2")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho2")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho2")
KCRB B 1 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
KCRB B 0 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho2")
KCRB B 1 A_JumpIfInventory("KnightmanReturn_P",1,"Death",2)
KCRB B 0 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho2")
KCRB B 1 A_JumpIfInventory("KnightmanReturn_P",1,"Death",2)
Spawn_L2:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death2")
KCRB B 0 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushEcho2")
KCRB B 1 A_JumpIfInventory("KnightmanReturn_P",1,"Death",2)
loop
}
}

Actor KnightmanCrushProtect : PowerProtection
{
	Powerup.Duration 17
	DamageFactor "KnightmanCrush", 0.0
	DamageFactor "KnightPerfect", 0.0
}

actor KnightmanCrushTrail : DuoPunch
{
+NOCLIP
+NOINTERACTION
radius 1
height 1
renderstyle translucent
alpha 0.3
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
KCRB A 0 A_JumpIfCloser(64, "Death")
KCRB A 1 A_CustomMissile("KnightmanCrushTrail", 0, 0, 0, 0)
stop
Death:
TNT1 A 0 
stop
}
}

actor KnightmanCrushUltTrail2 : KnightmanCrushTrail
{
alpha 1.0
States
{
Spawn:
KCRB C 4
KCRB CCC 1 A_FadeOut(0.33)
stop
}
}

actor KnightmanCrushReturn : KnightmanCrush
{
speed 40
radius 0
height 0
+THRUGHOST
-BOUNCEONWALLS
-BOUNCEONCEILINGS
-BOUNCEONFLOORS
+NOINTERACTION
+NOCLIP
states
{
Spawn:
KCRB B 0 //Blank frame so next frame is processed
KCRB B 0 A_GiveInventory("ProjectileCode",1)
KCRB B 0 A_SpawnItemEx("KnightmanCrushReturnSnd")
KCRB B 0 A_JumpIfInTargetInventory("KnightmanStop_P",1,"Death2")
TNT1 A 0 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
KCRB B 0 A_SpawnItemEx("KnightmanCrushDamagerReturn",0,0,0,2,0,0)
KCRB B 1 A_JumpIfCloser(48,"Death2")
TNT1 A 0 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
KCRB B 0 A_SpawnItemEx("KnightmanCrushDamagerReturn",0,0,0,2,0,0)
KCRB B 1 A_JumpIfCloser(48,"Death2")
TNT1 A 0 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
KCRB B 0 A_SpawnItemEx("KnightmanCrushDamagerReturn",0,0,0,2,0,0)
KCRB B 1 A_JumpIfCloser(48,"Death2")
TNT1 A 0 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
KCRB B 0 A_SpawnItemEx("KnightmanCrushDamagerReturn",0,0,0,2,0,0)
KCRB B 1 A_JumpIfCloser(48,"Death2")
KCRB B 0 A_CustomMissile("KnightmanCrushReturn",0,0,0,0)
stop
Death:
Death2:
Return:
TNT1 A 0 A_GiveToTarget("CutterFlag",175)
Stop
}
}

Actor KnightmanCrushUlt : KnightmanCrush
{
Radius 32
Height 32
Damage (0)
Obituary "$OB_KNIGHTMAN3"
DamageType "KnightFullJump"
-BOUNCEONWALLS
-BOUNCEONCEILINGS
-BOUNCEONFLOORS
+NOEXPLODEFLOOR
-RIPPER
mass 40
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
KCRB DDDD 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
KCRB D 0 A_ChangeFlag("THRUGHOST",0)
Spawn_L:
KCRB DDDDDDDD 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
KCRB D 0 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
KCRB D 1 A_JumpIfInventory("KnightmanReturn_P",1,"Check",2)
KCRB D 0 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
KCRB D 1 A_JumpIfInventory("KnightmanReturn_P",1,"Check",2)
Spawn_L2:
TNT1 A 0 A_GiveToTarget("WindUltCooldown",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death2")
KCRB D 0 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
KCRB D 1 A_JumpIfInventory("KnightmanReturn_P",1,"Check",2)
loop
Death:
TNT1 A 0 A_Explode(mass,64,0,0,64)
TNT1 A 0 A_SpawnItemEx("KnightmanCrushUltQuake")
Goto Return
Return:
KCRB D 0 A_CustomMissile("KnightmanCrushUltReturn",0,0,0,0)
Stop
Check:
KCRB D 0 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
KCRB D 1 A_JumpIf(z-floorz<=0, "Death")
goto Return
Death2:
TNT1 A 0
Stop
}
}

actor KnightmanCrushUlt2 : KnightmanCrushUlt
{
mass 44
}

actor KnightmanCrushUlt3 : KnightmanCrushUlt
{
mass 48
}

actor KnightmanCrushUlt4 : KnightmanCrushUlt
{
mass 52
}

Actor KnightmanCrushUlt5 : KnightmanCrushUlt
{
mass 56
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
KCRB D 0 A_ChangeFlag("THRUGHOST",0)
Spawn_L:
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
KCRB D 0 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho")
KCRB D 1 A_JumpIfInventory("KnightmanReturn_P",1,"Check",2)
KCRB D 0 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho")
KCRB D 1 A_JumpIfInventory("KnightmanReturn_P",1,"Check",2)
Spawn_L2:
TNT1 A 0 A_GiveToTarget("WindUltCooldown",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death2")
KCRB D 0 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho")
KCRB D 1 A_JumpIfInventory("KnightmanReturn_P",1,"Check",2)
loop
}
}

Actor KnightmanCrushUlt6 : KnightmanCrushUlt5
{
DamageType "KnightPerfectUlt"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho2")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho2")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho2")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho2")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
KCRB D 0 A_ChangeFlag("THRUGHOST",0)
Spawn_L:
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho2")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho2")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho2")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho2")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho2")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho2")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho2")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho2")
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
KCRB D 0 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho2")
KCRB D 1 A_JumpIfInventory("KnightmanReturn_P",1,"Check",2)
KCRB D 0 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho2")
KCRB D 1 A_JumpIfInventory("KnightmanReturn_P",1,"Check",2)
Spawn_L2:
TNT1 A 0 A_GiveToTarget("WindUltCooldown",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death2")
KCRB D 0 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("KnightManCrushUltEcho2")
KCRB D 1 A_JumpIfInventory("KnightmanReturn_P",1,"Check",2)
loop
}
}

actor KnightmanCrushUltTrail : KnightmanCrushTrail
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
KCRB C 0 A_JumpIfCloser(64, "Death")
KCRB C 1 A_CustomMissile("KnightmanCrushUltTrail", 0, 0, 0, 0)
stop
Death:
TNT1 A 0 
stop
}
}

actor KnightUltRocks : ThorSlamRocks
{
	BounceCount 2
	Gravity 0.9
	-NOCLIP
}

Actor KnightmanCrushUltQuake : BasicClientSide
{
scale 5.0
States
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("KnightUltRocks",random(0,8),0,random(-8,8),random(-8,8),0,random(-8,8),random(90,270))
TNT1 A 0 A_SpawnItemEx("DrillExplode",0,0,0,0,0,0,0,1)
TNT1 A 0 A_PlaySoundEx("misc/hugequake","Body")
TNT1 A 0 A_Quake(3,17,0,512)
KCRB EFG 1
TNT1 A 25
stop
}
}

actor KnightmanCrushUltReturn : KnightmanCrushUlt
{
speed 40
radius 0
height 0
Damage (0)
+THRUGHOST
-BOUNCEONWALLS
-BOUNCEONCEILINGS
-BOUNCEONFLOORS
+RIPPER
+NOINTERACTION
states
{
Spawn:
KCRB A 0 //Blank frame so next frame is processed
KCRB A 0 A_GiveInventory("ProjectileCode",1)
KCRB D 0 A_SpawnItemEx("KnightmanCrushReturnSnd")
KCRB D 0 A_JumpIfInTargetInventory("KnightmanStop_P",1,"Death2")
TNT1 A 0 A_GiveToTarget("WindUltCooldown",1)
KCRB D 0 A_Explode(12,32,0,0,32)
TNT1 A 0 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
KCRB D 1 A_JumpIfCloser(48,"Death2")
KCRB D 0 A_Explode(12,32,0,0,32)
TNT1 A 0 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
KCRB D 1 A_JumpIfCloser(48,"Death2")
KCRB D 0 A_Explode(12,32,0,0,32)
TNT1 A 0 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
KCRB D 1 A_JumpIfCloser(48,"Death2")
KCRB D 0 A_Explode(12,32,0,0,32)
TNT1 A 0 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
KCRB D 1 A_JumpIfCloser(48,"Death2")
KCRB D 0 A_CustomMissile("KnightmanCrushUltReturn",0,0,0,0)
stop
Death:
Death2:
Return:
TNT1 A 0 A_GiveToTarget("CutterFlag",175)
Stop
}
}

Actor KnightmanCrushReturnSnd : BasicClientSide
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_PlaySoundEx("knightman/return","Body")
TNT1 A 2
stop
}
}

Actor KnightmanCrushUltAlt : KnightmanCrushUlt
{
speed 60
-NOGRAVITY
-NOEXPLODEFLOOR
Gravity 1.2 //Just an experiment.
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
KCRB DDDD 1 A_SpawnItemEx("KnightmanCrushUltTrail2",0,0,0,0,0,0,0,1)
KCRB D 0 A_ChangeFlag("THRUGHOST",0)
Spawn_L:
TNT1 A 0 A_GiveToTarget("WindUltCooldown",1)
KCRB D 1 A_SpawnItemEx("KnightmanCrushUltTrail2",0,0,0,0,0,0,0,1)
Loop
Death:
TNT1 A 0 A_Explode(40,64,0,0,64)
TNT1 A 0 A_SpawnItemEx("KnightmanCrushUltQuake")
stop
}
}

actor KnightmanCrushDamager
{
PROJECTILE
+RIPPER
+DONTBLAST
+THRUGHOST
Damage (8)
damagetype "Knightman"
Obituary "$OB_KNIGHTMAN1"
radius 16
height 16
States
{
Spawn:
TNT1 A 2
stop
}
}

actor KnightmanCrushDamagerReturn : KnightmanCrushDamager
{
	Obituary "$OB_KNIGHTMAN1" //Reverse the 1st obit lmao
}

Actor KnightmanReturn_P : Powerup{Powerup.Duration 6}
Actor KnightmanHoldA_P : Powerup{Powerup.Duration 4}
Actor KnightmanStop_P : Powerup{Powerup.Duration 3}
Actor KnightmanHoldLimit : Inventory{Inventory.Amount 1 Inventory.MaxAmount 28}
Actor KnightMomentum : Inventory{Inventory.Amount 1 Inventory.MaxAmount 56}

actor KnightUltColorWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 A 4 A_GiveToTarget("TotalWhiteColor")
TNT1 A 6 A_GiveToTarget("KnightManColor")
TNT1 A 4 A_GiveToTarget("TotalWhiteColor")
TNT1 AAA 1 A_GiveToTarget("KnightManColor")
stop
}
}

actor KnightManColor : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+INVENTORY.AUTOACTIVATE
+COUNTITEM
+INVBAR
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("IsTheTerminator",1,"Nope")
TNT1 A 1 ACS_ExecuteAlways(991,0,823,0)
stop

Nope:
TNT1 A 0
stop
}
}

actor KnightUltColor1 : KnightManColor
{
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("IsTheTerminator",1,"Nope")
TNT1 A 1 ACS_ExecuteAlways(971,0,1823,0)
stop
}
}

actor KnightUltColor2 : KnightManColor
{
+INVBAR
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("IsTheTerminator",1,"Nope")
TNT1 A 1 ACS_ExecuteAlways(971,0,2823,0)
stop
}
}

Actor KnightmanAltS_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("knightman/spin","Weapon")
TNT1 A 0 A_GiveInventory("KnightmanAlt_CI",1)
Stop
}
}

Actor KnightmanAlt_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",1)
TNT1 A 0 A_JumpIfInventory("DrillFlag",1,"Nope")
TNT1 A 0 A_GiveInventory("KnightMomentum",1)
TNT1 A 0 A_JumpIfInventory("KnightMomentum",56,"Pickup2")
Stop

Pickup2:
TNT1 A 0 A_PlaySoundEx("weapon/knightready","Auto")
TNT1 A 0 A_GiveInventory("DrillFlag",1)
TNT1 A 0 A_GiveInventory("KnightPerfectFlag",1)
stop

Nope:
TNT1 A 0
stop
}
}

actor KnightmanCrushSpin
{
PROJECTILE
+NOTARGETSWITCH
+THRUGHOST
Radius 20
Height 20
Speed 0
Scale 2.5
Damage (0)
+RIPPER
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_SpawnItemEx("KnightmanCrushTrail",0,0,0,0,0,0,0,1)
KCRB B 1 A_SpawnItemEx("KnightmanCrushSpinDamager",0,0,-34,momx,momy,momz,0)
TNT1 A 1 A_SpawnItemEx("KnightmanCrushSpinDamager",0,0,-34,momx,momy,momz,0)
stop
}
}

actor KnightmanCrushSpinDamager
{
PROJECTILE
+RIPPER
+DONTBLAST
+THRUGHOST
Damage (0)
DamageType "KnightmanSpin"
Obituary "$OB_KNIGHTMAN2"
Radius 1
Height 1
mass 10
MeleeRange 48
States
{
Spawn:
TNT1 A 0
TNT1 A 2 A_Explode(mass,MeleeRange,0,0,MeleeRange)
stop
}
}

actor KnightmanCrushSpinUlt : KnightmanCrushSpin
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_GiveToTarget("WindUltCooldown",1)
TNT1 A 0 A_SpawnItemEx("KnightmanCrushUltTrail",0,0,0,0,0,0,0,1)
KCRB D 1 A_SpawnItemEx("KnightmanCrushSpinUltDamager",0,0,-34,momx,momy,momz,0)
TNT1 A 1 A_SpawnItemEx("KnightmanCrushSpinUltDamager",0,0,-34,momx,momy,momz,0)
stop
}
}

actor KnightmanCrushSpinUltDamager : KnightmanCrushSpinDamager
{
	DamageType "KnightmanSpinUlt"
	mass 35
	MeleeRange 105
}

Actor KnightmanSpinUltProtect : PowerProtection
{
	Powerup.Duration -2
	DamageFactor "KnightmanSpinUlt", 0.0
	DamageFactor "KnightmanSpin", 0.0
}

Actor KnightmanSpinProtect : PowerProtection
{
	Powerup.Duration 10
	DamageFactor "KnightmanSpin", 0.0
}

Actor KnightWallRushImmune : PowerProtection
{
	Powerup.Duration -1
	DamageFactor "KnightUltWallSlam", 0.0
}

actor KnightmanWallRush_CI : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("KnightWallRushImmune",1,"PickupNo")
TNT1 A 0 A_JumpIfInventory("NewWallSlam",1,"PickupNo")
TNT1 A 0 A_GiveInventory("NoNewWallSlam",1)
TNT1 A 0 A_GiveInventory("NewWallSlam",1)
TNT1 A 0 A_GiveInventory("WallSlamRealTimer",1)
TNT1 A 0 A_SpawnItemEX("KnightWallRushChecker")
stop
PickupNo:
TNT1 A 0
stop
}
}

actor KnightWallRushChecker : BaseWallRushChecker
{
DamageType "KnightUltWallSlam"
Obituary "$OB_KNIGHTMAN3"
states
{
DeathCheck:
TNT1 A 0 //A_JumpIfInventory("NewWallSlam",1,"Death",AAPTR_TRACER)
TNT1 A 0 A_SpawnItemEx("RaThorWallBonk")
TNT1 A 0 A_GiveInventory("WallSlamTimer",1)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ThorSlamRocks",random(-8,8),random(-8,8),random(-8,8),random(-8,8),random(-8,8),random(-8,8))
TNT1 A 0 A_Quake(4,10,0,256)
TNT1 A 0 A_PlaySoundEx("misc/quake","Body")
TNT1 A 0 A_PlaySoundEx("weapon/wallrush","Weapon")
TNT1 A 0 A_Warp(AAPTR_TRACER,0,0,CallACS("TracerHeightGet")/2,0,0)
TNT1 A 0 A_Explode(13,12,0,0,12)
TNT1 A 10
Death:
TNT1 A 2
stop
}
}

actor KnightShieldHitbox_P : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_SpawnItemEx("KnightShieldHitbox1",28,-7,8,0,0,0,0,1)
stop
}
}

actor KnightShieldHitbox1 : BasicShieldHitbox
{
damagefactor "FireTrap", 0.0
damagefactor "FirePillar", 0.0
damagefactor "Beam", 0.0
Meleerange 28
Accuracy 24
Mass 8
radius 6
height 48
renderstyle "translucent"
alpha 0.1
scale 0.1
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death2")
TNT1 A 0 A_JumpIfInTargetInventory("StopShield",1,"SpawnStop")
TNT1 A 0 A_JumpIfInTargetInventory("IsTheTerminator",1,"SpawnStop")
TNT1 A 1 A_Warp(2,Meleerange,Accuracy,Mass,0,24)
loop
Pain:
TNT1 A 0 
TNT1 A 0 A_SpawnItemEx("KnightShieldDeathFX")
TNT1 A 0 A_PlaySound("item/protoreflect")
goto Spawn
}
}

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 KnightmanUser1_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
TNT1 A 0 A_GiveInventory("KnightmanU1Slowdown",1)
TNT1 AAA 0 A_SpawnItemEx("KnightmanUser1Shield",33,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM)
TNT1 A 0 A_TakeInventory("StopShield",9)
Stop
}
}

Actor KnightmanU1Slowdown : PowerSpeed
{
	+POWERSPEED.NOTRAIL
	Speed 0.6
	Powerup.Duration 8
}

actor KnightmanUser1Shield
{
var int user_USER;
Height 64
Radius 32
Speed 0
health 1
-SOLID
+NOGRAVITY
+DONTDRAIN
+THRUSPECIES
+GHOST
painchance 256
bloodtype ""
renderstyle "none"
species "DumbKnightmanHitbox"
States
{
Spawn:
PLAY A 0
PLAY A 0 A_RearrangePointers(0,0,2)
PLAY A 0 A_ChangeFlag("SHOOTABLE",1)
PLAY A 0 A_ChangeFlag("DONTRIP",1)
PLAY A 1
PLAY A 1
stop
Death:
TNT1 A 0 A_SpawnItemEx("KnightShieldDeathFX",0,0,32)
TNT1 A 0 A_PlaySound("item/protoreflect")
TNT1 A 1 ACS_NamedExecuteWithResult("cbm_GiveIfPlayerHitMe",44)
stop
}
}

Actor KnightmanUser1Block_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Nope")
TNT1 A 0 A_GiveInventory("MediumUltimateAmmo",5)
Nope: TNT1 A 0
stop
}
}

actor KnightmanJumpHitbox1
{
PROJECTILE
Species "DumbKnightmanHitbox"
+THRUSPECIES
+THRUGHOST
Obituary "$OB_KNIGHTMAN4"
Radius 45
Height 45
Scale 2.5
DamageType "KnightmanJump"
renderstyle none
Damage (5)
States
{
Spawn:
TNT1 A 1
PLAY A 1
Stop
}
}

actor KnightmanJumpProtect : PowerProtection
{
Powerup.Duration 35
DamageFactor "KnightmanJump", 0.0
DamageFactor "KnightFullJump", 0.0
}

actor KnightmanJumpHitbox2 : KnightmanJumpHitbox1
{
damage (10)
}

actor KnightmanJumpHitbox3 : KnightmanJumpHitbox1
{
damage (15)
}

actor KnightmanJumpHitbox4 : KnightmanJumpHitbox1
{
damage (20)
}

actor KnightmanJumpHitbox5 : KnightmanJumpHitbox1
{
damage (25)
}

actor KnightmanJumpHitbox6 : KnightmanJumpHitbox1
{
damage (30)
}

actor KnightmanJumpHitbox7 : KnightmanJumpHitbox1
{
damage (35)
}

actor KnightmanJumpHitbox8 : KnightmanJumpHitbox1
{
damage (40)
}

actor KnightmanJumpHitbox9 : KnightmanJumpHitbox1
{
damage (45)
}

actor KnightmanJumpHitbox10 : KnightmanJumpHitbox1
{
DamageType "KnightFullJump"
damage (50)
}

actor KnightUltWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_TakeFromTarget("MediumUltimateAmmo",2)
TNT1 A 1 A_GiveToTarget("KnightUltColor1")
TNT1 A 1 A_GiveToTarget("KnightUltColor2")
TNT1 A 1 A_GiveToTarget("KnightUltColor1")
TNT1 A 1 A_GiveToTarget("KnightUltColor2")
TNT1 A 0 A_JumpIfInTargetInventory("IsTheTerminator",1,"Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_GiveToTarget("WindUltCooldown",1)
TNT1 A 0 A_JumpIfInTargetInventory("MediumUltimateAmmo",1,"Spawn")
Death:
TNT1 A 0 A_TakeFromTarget("BaseCustomFlag1",9)
TNT1 AAA 1 A_GiveToTarget("KnightManColor")
stop
}
}

actor KnightJumpHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_CheckFloor("Nope")
TNT1 A 0 A_JumpIfInventory("KnightJumpAmmo",54,"Pickup10")
TNT1 A 0 A_JumpIfInventory("KnightJumpAmmo",48,"Pickup9")
TNT1 A 0 A_JumpIfInventory("KnightJumpAmmo",42,"Pickup8")
TNT1 A 0 A_JumpIfInventory("KnightJumpAmmo",36,"Pickup7")
TNT1 A 0 A_JumpIfInventory("KnightJumpAmmo",30,"Pickup6")
TNT1 A 0 A_JumpIfInventory("KnightJumpAmmo",24,"Pickup5")
TNT1 A 0 A_JumpIfInventory("KnightJumpAmmo",18,"Pickup4")
TNT1 A 0 A_JumpIfInventory("KnightJumpAmmo",12,"Pickup3")
TNT1 A 0 A_JumpIfInventory("KnightJumpAmmo",6,"Pickup2")
TNT1 A 0 A_SpawnItemEx("KnightmanJumpHitbox1",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
Pickup2:
TNT1 A 0 A_SpawnItemEx("KnightmanJumpHitbox2",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
Pickup3:
TNT1 A 0 A_SpawnItemEx("KnightmanJumpHitbox3",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
Pickup4:
TNT1 A 0 A_SpawnItemEx("KnightmanJumpHitbox4",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
Pickup5:
TNT1 A 0 A_SpawnItemEx("KnightmanJumpHitbox5",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
Pickup6:
TNT1 A 0 A_SpawnItemEx("KnightmanJumpHitbox6",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
Pickup7:
TNT1 A 0 A_SpawnItemEx("KnightmanJumpHitbox7",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
Pickup8:
TNT1 A 0 A_SpawnItemEx("KnightmanJumpHitbox8",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
Pickup9:
TNT1 A 0 A_SpawnItemEx("KnightmanJumpHitbox9",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
Pickup10:
TNT1 A 0 A_SpawnItemEx("KnightmanJumpHitbox10",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
Nope:
TNT1 A 0
stop
}
}

actor KnightJumpAmmo : Ammo
{
	inventory.amount 1
	inventory.maxamount 54
	+INVENTORY.IGNORESKILL
}

actor KnightLandDust : BaseDecorativeActor
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_JumpIfInTargetInventory("KnightJumpAmmo",54,"Spawn2")
stop
Spawn2:
KNIL ABCD 2
stop
}
}

actor KnightSkinWatcher
{
Height 0
Radius 0
+NOINTERACTION
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 AAA 1 A_GiveToTarget("KnightSkinCheck")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
loop
Death:
TNT1 A 0
stop
}
}

actor KnightSkinCheck : SkinChecker
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(CallACS("GC_GetSkinNum")==256,"AltSkin1")
goto NormalSkin
}
}

actor KnightM1Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("KnightPerfectFlag",1,"Pickup6")
TNT1 A 0 A_JumpIfInventory("KnightMomentum",56,"Pickup5")
TNT1 A 0 A_JumpIfInventory("KnightMomentum",42,"Pickup4")
TNT1 A 0 A_JumpIfInventory("KnightMomentum",28,"Pickup3")
TNT1 A 0 A_JumpIfInventory("KnightMomentum",14,"Pickup2")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Pickup.Ult")
TNT1 A 0 A_FireCustomMissile("KnightmanCrush",0,0,-8,0)
goto End
Pickup.Ult:
TNT1 A 0 A_FireCustomMissile("KnightmanCrushUlt",0,0,-8,0)
goto End

Pickup2:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Pickup2.Ult")
TNT1 A 0 A_FireCustomMissile("KnightmanCrush2",0,0,-8,0)
goto End
Pickup2.Ult:
TNT1 A 0 A_FireCustomMissile("KnightmanCrushUlt2",0,0,-8,0)
goto End

Pickup3:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Pickup3.Ult")
TNT1 A 0 A_FireCustomMissile("KnightmanCrush3",0,0,-8,0)
goto End
Pickup3.Ult:
TNT1 A 0 A_FireCustomMissile("KnightmanCrushUlt3",0,0,-8,0)
goto End

Pickup4:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Pickup4.Ult")
TNT1 A 0 A_FireCustomMissile("KnightmanCrush4",0,0,-8,0)
goto End
Pickup4.Ult:
TNT1 A 0 A_FireCustomMissile("KnightmanCrushUlt4",0,0,-8,0)
goto End

Pickup5:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Pickup5.Ult")
TNT1 A 0 A_FireCustomMissile("KnightmanCrush5",0,0,-8,0)
goto End
Pickup5.Ult:
TNT1 A 0 A_FireCustomMissile("KnightmanCrushUlt5",0,0,-8,0)
goto End

Pickup6:
TNT1 A 0 A_PlaySoundEx("weapon/centaurarrow2","Auto")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Pickup6.Ult")
TNT1 A 0 A_FireCustomMissile("KnightmanCrush6",0,0,-8,0)
goto End
Pickup6.Ult:
TNT1 A 0 A_FireCustomMissile("KnightmanCrushUlt6",0,0,-8,0)
goto End

End:
TNT1 A 0 A_TakeInventory("KnightMomentum",99)
stop
}
}

actor KnightManCrushEcho : BasicClientSide
{
renderstyle add
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
KCRB BBBBBBBBB 1 A_FadeOut(0.1)
stop
}
}

actor KnightManCrushEcho2 : KnightManCrushEcho
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 AAAAA 0 A_SpawnItemEx("CrystalManShine",random(-40,40),random(-40,40),random(-40,40),0,0,0,0,0,32)
TNT1 A 1
KCRB BBBBBBBBB 1 A_FadeOut(0.1)
stop
}
}

actor KnightManCrushUltEcho : KnightManCrushEcho
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
KCRB DDDDDDDDD 1 A_FadeOut(0.1)
stop
}
}

actor KnightManCrushUltEcho2 : KnightManCrushUltEcho
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 AAAAA 0 A_SpawnItemEx("CrystalManShine",random(-80,80),random(-80,80),random(-80,80),0,0,0,0,0,32)
TNT1 A 1
KCRB DDDDDDDDD 1 A_FadeOut(0.1)
stop
}
}

actor KnightPerfectFlag : Powerup
{
Powerup.Duration 5
}