//	Mainfire centered
//	Wall clings merged: fast RoF, Armor and ability to altfire out of wall are enabled
//	Mobility recoded
actor Blademan : SemiWeakArmorClass
{
Player.ScoreIcon "BLADMUGS"
player.startitem "BaseFlagPack", 1
player.displayname "Blademan"
player.soundclass "Blademanc"
player.startitem "TripleBladeBoss"
player.startitem "UltimateAttackItem2"
player.startitem "UltSoundWatcherSpawn2"
player.startitem "Base56Ammo", 56
player.startitem "BaseAltfireAmmo", 112
player.startitem "IsFromMM10"
player.viewheight 52
player.forwardmove 0.85,0.85
player.sidemove 0.83,0.83
player.jumpz 14
States
{
Spawn:
BLDM B 0
BLDM B 1 A_JumpIf(z-floorz>0,"Jumping")
BLDM A 0
BLDM A 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn+2

See:
BLDM BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn+1

Jumping:
BLD2 C 1 A_JumpIf(z-floorz<=0,"BladeLand")
wait

BladeLand:
BLD2 AAA 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn+2

Animation1:
Missile:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Missile.WallClinged")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile.CeilingClinged")
BLDM FFF 1 A_JumpIf(z-floorz>0,"JumpingMissile")
Animation2:
Missile2:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Missile2.WallClinged")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile2.CeilingClinged")
BLD2 BBB 1 A_JumpIf(z-floorz>0,"JumpingMissile2")
Animation3:
Missile3:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Missile3.WallClinged")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile3.CeilingClinged")
BLDM GGG 1 A_JumpIf(z-floorz>0,"JumpingMissile3")
Goto Spawn+2

JumpingMissile:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Missile.WallClinged")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile.CeilingClinged")
BLD2 DDDD 1 A_JumpIf(z-floorz<=0,"Missile")
JumpingMissile2:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Missile2.WallClinged")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile2.CeilingClinged")
BLD2 EEE 1 A_JumpIf(z-floorz<=0,"Missile2")
JumpingMissile3:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Missile.WallClinged")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile.CeilingClinged")
BLD2 FFF 1 A_JumpIf(z-floorz<=0,"Missile3")
Goto Jumping

Missile.WallClinged:
BLD2 NNN 1
Missile2.WallClinged:
BLD2 OOO 1
Missile3.WallClinged:
BLD2 OOO 1
Goto WallClinged

Missile.CeilingClinged:
BLD2 HHH 1
Missile2.CeilingClinged:
BLD2 III 1
Missile3.CeilingClinged:
BLD2 III 1
Goto CeilingClinged

Animation4:
BladeDash:
BLD2 RRR 1
Goto Spawn+2

Animation5:
WallClinged:
BLD2 MMM 1 A_JumpIfInventory("BladeManClingGetOff",1,"Spawn")
wait

Animation6:
CeilingClinged:
BLD2 GGG 1 A_JumpIfInventory("BladeManClingGetOff",1,"Spawn")
wait

ClassPain:
BLDM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1

ClassDeath:
BLDM H 20 ACS_ExecuteAlways(999,0,0)
BLDM H 0 A_PlayerScream
PLY1 H 0 A_SpawnItemEx("FakeDeathFXMM9", 0, 0, 32)
NOFX A 1 A_CheckPlayerDone
wait

WeaponGetM:
BLDM H 0 A_JumpIfInTargetInventory("TripleBladeWepM",1,2)
BLDM H 0 A_GiveToTarget("WeaponGetter")
BLDM H 0 A_GiveToTarget("TripleBladeWepM")
goto ClassDeath
}
}

Actor TripleBladeBoss : VCBaseWeapon
{
weapon.ammotype "Base56Ammo"
weapon.ammotype2 "BaseAltfireAmmo"
Obituary "$OB_BLADEMAN1"
States
{
Ready:
BLDH A 1 A_GiveInventory("BladeManReadyPickUp",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3) == 3,"User1")//A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_BladeUser1Check")==3,"User1")
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
BLDH A 1 A_GiveInventory("BladeManReadyPickUp",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3) == 3,"User1")//A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_BladeUser1Check")==3,"User1")
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
TNT1 A 0 A_GiveInventory("Base56Ammo",1)
TNT1 A 0 A_JumpIfInventory("NoPushFlag",1,"Ready")
TNT1 A 0 A_JumpIfInventory("VCOnce",1,"Ready")
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",1)
loop

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
BLDH A 1 A_Lower
Loop
Select:
TNT1 A 0 ACS_ExecuteAlways(991,0,1900)
TNT1 A 0 A_SpawnItemEx("JumpKeyWatcher") //In actors/BasicActorsVC.txt -Fr3ak
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
BLDH A 1 A_Raise
Loop

Fire:
TNT1 A 0 A_GiveInventory("BladeManMainPickUp")
TNT1 A 0 A_CheckFloor("Fire.Swing1")
Goto Fire.Swing2
Fire.Swing1:
BLDH BC 1 ACS_NamedExecuteWithResult("VC_SetState",1)
BLDH C 1 OffSet(-43,30)ACS_NamedExecuteWithResult("VC_SetState",2)
BLDH D 1 OffSet(1,33)ACS_NamedExecuteWithResult("VC_SetState",2)
BLDH D 1 OffSet(-48,33)ACS_NamedExecuteWithResult("VC_SetState",3)
BLDH E 1 OffSet(1,31)ACS_NamedExecuteWithResult("VC_SetState",3)
BLDH E 1 OffSet(-43,43)ACS_NamedExecuteWithResult("VC_SetState",3)
BLDH E 1 OffSet(-102,53)ACS_NamedExecuteWithResult("VC_SetState",3)
TNT1 A 0 A_JumpIfInventory("VCOnce",1,"Slash.Finish")
TNT1 A 4
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Slash.Finish")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Slash.Finish")
TNT1 A 4
Goto Slash.Finish
Fire.Swing2:
BLDH FF 1 Offset(12,42)ACS_NamedExecuteWithResult("VC_SetState",1)
BLDH G 1 Offset(26,37)ACS_NamedExecuteWithResult("VC_SetState",2)
BLDH G 1 Offset(-3,41)ACS_NamedExecuteWithResult("VC_SetState",2)
BLDH HH 1 Offset(-12,54)ACS_NamedExecuteWithResult("VC_SetState",3)
BLDH HH 1 Offset(-3,104)ACS_NamedExecuteWithResult("VC_SetState",3)
TNT1 A 0 A_JumpIfInventory("VCOnce",1,"Slash.Finish")
TNT1 A 4
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Slash.Finish")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Slash.Finish")
TNT1 A 4
Goto Slash.Finish

Altfire:
TNT1 A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
TNT1 A 0 A_GunFlash("NoFlash") 
TNT1 A 0 A_GiveInventory("BladeManAltfireStartPickUp",1)
BLDH A 1 Offset(4,36)A_GiveInventory("BladeManAltfireDashPickUp",1)
TNT1 A 0 A_JumpIfInventory("BladeManHitSurface",1,"Altfire.WallCling") TNT1 A 0 A_CheckCeiling("Altfire.CeilingCling")
BLDH A 1 Offset(8,40)A_GiveInventory("BladeManAltfireDashPickUp",1)
TNT1 A 0 A_JumpIfInventory("BladeManHitSurface",1,"Altfire.WallCling") TNT1 A 0 A_CheckCeiling("Altfire.CeilingCling")
BLDH A 1 Offset(12,44)A_GiveInventory("BladeManAltfireDashPickUp",1)
TNT1 A 0 A_JumpIfInventory("BladeManHitSurface",1,"Altfire.WallCling") TNT1 A 0 A_CheckCeiling("Altfire.CeilingCling")
BLDH A 1 Offset(16,48)A_GiveInventory("BladeManAltfireDashPickUp",1)
TNT1 A 0 A_JumpIfInventory("BladeManHitSurface",1,"Altfire.WallCling") TNT1 A 0 A_CheckCeiling("Altfire.CeilingCling")
BLDH A 1 Offset(20,52)A_GiveInventory("BladeManAltfireDashPickUp",1)
TNT1 A 0 A_JumpIfInventory("BladeManHitSurface",1,"Altfire.WallCling") TNT1 A 0 A_CheckCeiling("Altfire.CeilingCling")
Altfire.Waiting:
BLDH A 1 Offset(24,56)A_GiveInventory("BladeManAltfireDashPickUp2",1)
TNT1 A 0 A_JumpIfInventory("BladeManHitSurface",1,"Altfire.WallCling") TNT1 A 0 A_CheckCeiling("Altfire.CeilingCling")
TNT1 A 0 A_JumpIf(z-floorz==0,"Altfire.Landed")
loop
Altfire.Landed:
BLDH A 1 OffSet(8,112) A_SpawnItemEx("ReSolidifier")
BLDH A 1 OffSet(6,92)
BLDH A 1 OffSet(4,72)
BLDH A 1 OffSet(2,52)
BLDH A 18 A_WeaponReady(WRF_NOFIRE)
Goto Ready
Altfire.WallCling:
TNT1 A 0 A_GiveInventory("BladeManThirdfireClingPickUp",1)//("BladeManAltfireClingPickUp",1)
TNT1 A 0 A_GiveInventory("BaseCustomFlag1",1)
TNT1 A 0 A_GunFlash
Goto WallCling.Finish
Altfire.CeilingCling:
TNT1 A 0 A_GiveInventory("BladeManThirdfireClingPickUp",1)//("BladeManAltfireClingPickUp",1)
TNT1 A 0 A_GiveInventory("BaseCustomFlag2",1)
TNT1 A 0 A_GunFlash
Goto CeilingCling.Finish


TFFireCheck:
BLDH A 0 A_JumpIfHealthLower(30,2)
BLDH A 0 A_JumpIfInventory("Base56Ammo",6,"Fire.Swing1TF")
goto Ready
BLDH A 0 A_JumpIfInventory("Base56Ammo",8,"Fire.Swing1TF")
goto Ready

Fire.Swing1TF:
TNT1 A 0 A_GiveInventory("TopKickHud",1)
TNT1 A 0 A_GiveInventory("BladeManMainPickUp")
TNT1 A 1 A_Jump(256,"Fire.Swing1")
wait

User1:
TNT1 A 0 A_JumpIfInventory("VCOnce",1,"TFFireCheck")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
TNT1 A 0 A_PlaySoundEx("weapon/slashclaw","Weapon")
BLDH FF 1 Offset(12,42)ACS_NamedExecuteWithResult("VC_SetState",1)
BLDH G 1 Offset(26,37)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_FireCustomMissile("BladeCling2",0,0)
TNT1 A 0 A_JumpIfInventory("BladeManHitSurface",1,"User1.Wall") TNT1 A 0 A_JumpIfInventory("BladeManHitSurface2",1,"User1.Ceiling")
BLDH G 1 Offset(-3,41)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_FireCustomMissile("BladeCling2",0,0)
TNT1 A 0 A_JumpIfInventory("BladeManHitSurface",1,"User1.Wall") TNT1 A 0 A_JumpIfInventory("BladeManHitSurface2",1,"User1.Ceiling")
BLDH H 1 Offset(-12,54)ACS_NamedExecuteWithResult("VC_SetState",3) TNT1 A 0 A_FireCustomMissile("BladeCling2",0,0)
TNT1 A 0 A_JumpIfInventory("BladeManHitSurface",1,"User1.Wall") TNT1 A 0 A_JumpIfInventory("BladeManHitSurface2",1,"User1.Ceiling")
BLDH H 1 Offset(-12,54)ACS_NamedExecuteWithResult("VC_SetState",3) TNT1 A 0 A_FireCustomMissile("BladeCling2",0,0)
TNT1 A 0 A_JumpIfInventory("BladeManHitSurface",1,"User1.Wall") TNT1 A 0 A_JumpIfInventory("BladeManHitSurface2",1,"User1.Ceiling")
BLDH H 1 Offset(-3,104)ACS_NamedExecuteWithResult("VC_SetState",3) TNT1 A 0 A_FireCustomMissile("BladeCling2",0,0)
TNT1 A 0 A_JumpIfInventory("BladeManHitSurface",1,"User1.Wall") TNT1 A 0 A_JumpIfInventory("BladeManHitSurface2",1,"User1.Ceiling")
BLDH H 1 Offset(-3,104)ACS_NamedExecuteWithResult("VC_SetState",3) TNT1 A 0 A_FireCustomMissile("BladeCling2",0,0)
TNT1 A 0 A_JumpIfInventory("BladeManHitSurface",1,"User1.Wall") TNT1 A 0 A_JumpIfInventory("BladeManHitSurface2",1,"User1.Ceiling")
TNT1 A 8
Goto Slash.Finish
User1.Wall:
TNT1 A 0 A_GiveInventory("BladeManThirdfireClingPickUp",1)
TNT1 A 0 A_GiveInventory("BaseCustomFlag1",1)
TNT1 A 0 A_GunFlash
Goto WallCling.Finish
User1.Ceiling:
TNT1 A 0 A_GiveInventory("BladeManThirdfireClingPickUp",1)
TNT1 A 0 A_GiveInventory("BaseCustomFlag2",1)
TNT1 A 0 A_GunFlash
Goto CeilingCling.Finish

Slash.Finish:
BLDH A 1 OffSet(8,112)
BLDH A 1 OffSet(6,92)
BLDH A 1 OffSet(4,72)
BLDH A 1 OffSet(2,52)
Goto Ready
WallCling.Finish:
BLDH A 1 Offset(24,56)ACS_NamedExecuteWithResult("VC_SetState",5)
BLDH A 1 Offset(16,48)ACS_NamedExecuteWithResult("VC_SetState",5)
BLDH A 1 Offset(8,40)ACS_NamedExecuteWithResult("VC_SetState",5)
BLDH AAAAAA 1 Offset(1,32)ACS_NamedExecuteWithResult("VC_SetState",5)
Goto Ready
CeilingCling.Finish:
BLDH A 1 Offset(24,56)ACS_NamedExecuteWithResult("VC_SetState",6)
BLDH A 1 Offset(16,48)ACS_NamedExecuteWithResult("VC_SetState",6)
BLDH A 1 Offset(8,40)ACS_NamedExecuteWithResult("VC_SetState",6)
BLDH AAAAAA 1 Offset(1,32)ACS_NamedExecuteWithResult("VC_SetState",6)
Goto Ready

UltimateAttack:
TNT1 A 0 A_GiveInventory("BladeManUltimatePickUp",1)
BLDH BC 1 ACS_NamedExecuteWithResult("VC_SetState",1)
BLDH C 1 OffSet(-43,30)ACS_NamedExecuteWithResult("VC_SetState",2)
BLDH D 1 OffSet(1,33)ACS_NamedExecuteWithResult("VC_SetState",2)
BLDH D 1 OffSet(-48,33)ACS_NamedExecuteWithResult("VC_SetState",3)
BLDH E 1 OffSet(1,31)ACS_NamedExecuteWithResult("VC_SetState",3)
BLDH E 1 OffSet(-43,43)ACS_NamedExecuteWithResult("VC_SetState",3)
BLDH E 1 OffSet(-102,53)ACS_NamedExecuteWithResult("VC_SetState",3)
TNT1 A 8
Goto Slash.Finish

Flash:
TNT1 A 1 A_Stop TNT1 A 0 A_JumpIfInventory("WallStickCancel",1,"Flash.Finish")
TNT1 A 1 A_Stop TNT1 A 0 A_JumpIfInventory("WallStickCancel",1,"Flash.Finish")
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,"Flash")
Flash.Finish:
TNT1 A 0 A_GiveInventory("BladeManClingGetOff",1)
NoFlash:
TNT1 A 0 A_GiveInventory("BladeManResetPickUp",1)
stop
}
}

Actor BladeManReadyPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("VCOnce",1,"Pickup.Stabbed")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Pickup.Stabbed")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Pickup.Stabbed")
Goto Pickup.Normal

Pickup.Normal:
TNT1 A 0 A_JumpIfHealthLower(30,"Pickup.Normal.Low")
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,6)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,14))
stop
Pickup.Normal.Low:
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,8)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,14))
stop

Pickup.Wall:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
TNT1 A 0 A_JumpIfHealthLower(30,"Pickup.Wall.Low")
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,6)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,14))
stop
Pickup.Wall.Low:
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,8)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,14))
stop

Pickup.Ceiling:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6)
TNT1 A 0 A_JumpIfHealthLower(30,"Pickup.Ceiling.Low")
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,6)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,14))
stop
Pickup.Ceiling.Low:
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,8)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,14))
stop

Pickup.Stabbed:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Pickup.Stabbed.Wall")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Pickup.Stabbed.Ceiling")
TNT1 A 0 A_JumpIfHealthLower(30,"Pickup.Stabbed.Low")
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,6)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,14))
stop
Pickup.Stabbed.Low:
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,8)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,14))
stop

Pickup.Stabbed.Wall:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
TNT1 A 0 A_JumpIfHealthLower(30,"Pickup.Stabbed.Wall.Low")
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,6)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,14))
stop
Pickup.Stabbed.Wall.Low:
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,8)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,14))
stop

Pickup.Stabbed.Ceiling:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6)
TNT1 A 0 A_JumpIfHealthLower(30,"Pickup.Stabbed.Ceiling.Low")
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,6)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,14))
stop
Pickup.Stabbed.Ceiling.Low:
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,8)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,14))
stop
}
}

actor BladeManMainPickUp : CustomInventory
{
const float OFS = 5.625;
states
{
Pickup:
TNT1 A 0 A_JumpIfHealthLower(30,"Pickup2")
TNT1 A 0 A_JumpIfInventory("VCOnce",1,"Pickup2")
TNT1 A 0 A_TakeInventory("Base56Ammo",6)
TNT1 A 0 A_PlaySoundEx("weapon/bladeshoot","Weapon")
TNT1 A 0 A_FireCustomMissile("TripleBladeRM",0,0,0,0,0,0)
TNT1 A 0 A_CheckFloor("Pickup.Ground")
TNT1 A 0 A_JumpIfInventory("TopKickHud",1,"Pickup.Ground")//the thirdfire
Pickup.Air:
TNT1 A 0 A_JumpIf(pitch > 270 && pitch < 270+10, "Pickup.Air.Top")
TNT1 A 0 A_JumpIf(pitch > 90-10 && pitch < 90, "Pickup.Air.Bottom")
Goto Pickup.Air.Center
Pickup.Air.Top:
TNT1 A 0 A_FireCustomMissile("TripleBladeRRM",180,0,0,0,0,OFS)
TNT1 A 0 A_FireCustomMissile("TripleBladeRM",0,0,0,0,0,-OFS)
stop
Pickup.Air.Center:
TNT1 A 0 A_FireCustomMissile("TripleBladeRM",0,0,0,0,0,OFS)
TNT1 A 0 A_FireCustomMissile("TripleBladeRM",0,0,0,0,0,-OFS)
stop
Pickup.Air.Bottom:
TNT1 A 0 A_FireCustomMissile("TripleBladeRM",0,0,0,0,0,OFS)
TNT1 A 0 A_FireCustomMissile("TripleBladeRRM",180,0,0,0,0,-OFS)
stop

Pickup.Ground:
TNT1 A 0 A_FireCustomMissile("TripleBladeRM",OFS,0,0,0,0,0)
TNT1 A 0 A_FireCustomMissile("TripleBladeRM",-OFS,0,0,0,0,0)
stop

Pickup2:
TNT1 A 0 A_TakeInventory("Base56Ammo",8)
TNT1 A 0 A_PlaySoundEx("weapon/QuintupleBladeMan","Weapon")
TNT1 A 0 A_FireCustomMissile("TripleBladeRM2",0,0,0,0,0,0)
TNT1 A 0 A_CheckFloor("Pickup2.Ground")
TNT1 A 0 A_JumpIfInventory("TopKickHud",1,"Pickup2.Ground")
Pickup2.Air:
TNT1 A 0 A_JumpIf(pitch > 270 && pitch < 270+10, "Pickup2.Air.Top")
TNT1 A 0 A_JumpIf(pitch > 90-10 && pitch < 90, "Pickup2.Air.Bottom")
Goto Pickup2.Air.Center
Pickup2.Air.Top:
TNT1 A 0 A_FireCustomMissile("TripleBladeRRM2",180,0,0,0,0,OFS*2)
TNT1 A 0 A_FireCustomMissile("TripleBladeRRM2",180,0,0,0,0,OFS)
TNT1 A 0 A_FireCustomMissile("TripleBladeRM2",0,0,0,0,0,-OFS)
TNT1 A 0 A_FireCustomMissile("TripleBladeRM2",0,0,0,0,0,-OFS*2)
stop
Pickup2.Air.Center:
TNT1 A 0 A_FireCustomMissile("TripleBladeRM2",0,0,0,0,0,OFS*2)
TNT1 A 0 A_FireCustomMissile("TripleBladeRM2",0,0,0,0,0,OFS)
TNT1 A 0 A_FireCustomMissile("TripleBladeRM2",0,0,0,0,0,-OFS)
TNT1 A 0 A_FireCustomMissile("TripleBladeRM2",0,0,0,0,0,-OFS*2)
stop
Pickup2.Air.Bottom:
TNT1 A 0 A_FireCustomMissile("TripleBladeRM2",0,0,0,0,0,OFS*2)
TNT1 A 0 A_FireCustomMissile("TripleBladeRM2",0,0,0,0,0,OFS)
TNT1 A 0 A_FireCustomMissile("TripleBladeRRM2",0,0,0,0,0,-OFS)
TNT1 A 0 A_FireCustomMissile("TripleBladeRRM2",180,0,0,0,0,-OFS*2)
stop

Pickup2.Ground:
TNT1 A 0 A_FireCustomMissile("TripleBladeRM2",OFS*2,0,0,0,0,0)
TNT1 A 0 A_FireCustomMissile("TripleBladeRM2",OFS,0,0,0,0,0)
TNT1 A 0 A_FireCustomMissile("TripleBladeRM2",-OFS,0,0,0,0,0)
TNT1 A 0 A_FireCustomMissile("TripleBladeRM2",-OFS*2,0,0,0,0,0)
stop
}
}

actor TripleBladeRM
{
PROJECTILE
+RIPPER
+DONTBLAST
damagetype "Blademan"
Obituary "$OB_BLADEMAN1"
Damage (3)
Speed 35
Radius 16
Height 8
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_JumpIf(momz>=30, "90Degrees")
TNT1 A 0 A_JumpIf(momz>=22.5, "67P5Degrees")
TNT1 A 0 A_JumpIf(momz>=15, "45Degrees")
TNT1 A 0 A_JumpIf(momz>=7.5, "22P5Degrees")
TNT1 A 0 A_JumpIf(momz<7.5 && momz>-7.5, "0Degrees")
TNT1 A 0 A_JumpIf(momz<=-29, "N90Degrees")
TNT1 A 0 A_JumpIf(momz<=-7.5, "N22P5Degrees")
TNT1 A 0 A_JumpIf(momz<=-22.5, "N67P5Degrees")
TNT1 A 0 A_JumpIf(momz<=-15, "N45Degrees")
TBL1 E 1
wait
90Degrees: TBL1 A 1
wait
67P5Degrees: TBL1 B 1
wait
45Degrees: TBL1 C 1
wait
22P5Degrees: TBL1 D 1
wait
0Degrees: TBL1 E 1
wait
N22P5Degrees: TBL1 F 1
wait
N45Degrees: TBL1 G 1
wait
N67P5Degrees: TBL1 H 1
wait
N90Degrees: TBL1 I 1
wait
}
}
actor TripleBladeRM2 : TripleBladeRM {Obituary "$OB_BLADEMAN2"}

actor TripleBladeRRM : TripleBladeRM
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_SetAngle(angle+180)
TNT1 A 0 A_JumpIf(momz>0, "90Degrees")
TNT1 A 0 A_JumpIf(momz<0, "N90Degrees")
TBL1 I 1
wait
}
}
actor TripleBladeRRM2 : TripleBladeRRM {Obituary "$OB_BLADEMAN2"}

Actor BladeManAltfireStartPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_Stop
TNT1 A 0 A_ChangeFlag("SOLID",False)
TNT1 A 0 A_TakeInventory("UnSolid",1)
TNT1 A 0 A_TakeInventory("Base56Ammo",14)
TNT1 A 0 A_PlaySoundEx("weapon/BladeManDash","Weapon")
TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob",cos(pitch)*50),0,-sin(pitch)*35,CVF_RELATIVE|CVF_REPLACE)
stop
}
}

Actor BladeManAltfireDashPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
TNT1 A 0 A_SpawnItemEx("BladeDash")
TNT1 A 0 A_SpawnItemEx("BladeCling",0,0,40,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

Actor BladeManAltfireDashPickUp2 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
TNT1 A 0 A_SpawnItemEx("BladeDash3",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BladeCling",0,0,40,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

Actor BladeManAltfireClingPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SetGravity(0.0)
TNT1 A 0 A_GiveInventory("NoSpeed",1)
TNT1 A 0 A_SpawnItemEx("ReSolidifier")
TNT1 A 0 A_GiveInventory("NoPushFlag",1)
TNT1 A 0 A_PlaySoundEx("weapon/BladeManCling","Body")
stop
}
}

actor BladeDash
{
PROJECTILE
+DONTBLAST
+THRUSPECIES
+NOEXPLODEFLOOR
+HITTRACER
+DONTREFLECT
damagetype "BladeDash"
Obituary "$OB_BLADEMAN3"
species "DustManType"
damage (10)
radius 48
height 48
scale 2.5
States
{
Spawn:
TNT1 A 1
stop
XDeath:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
TNT1 A 0 A_JumpIfInventory("CanBeGrabBustered",1,1,AAPTR_TRACER)
Goto Failed
TNT1 A 0 A_JumpIfInventory("LightTeamFlag",1,"LightCheck",AAPTR_TARGET)
TNT1 A 0 A_JumpIfInventory("WilyTeamFlag",1,"WilyCheck",AAPTR_TARGET)
TNT1 A 0 A_JumpIfInventory("CossackTeamFlag",1,"CossackCheck",AAPTR_TARGET)
TNT1 A 0 A_JumpIfInventory("KingTeamFlag",1,"KingCheck",AAPTR_TARGET)
Goto HealReturn
LightCheck:
TNT1 A 0 A_JumpIfInventory("LightTeamFlag",1,"Failed",AAPTR_TRACER)
TNT1 A 1 A_JumpIf(true,"HealReturn")
wait
WilyCheck:
TNT1 A 0 A_JumpIfInventory("WilyTeamFlag",1,"Failed",AAPTR_TRACER)
TNT1 A 1 A_JumpIf(true,"HealReturn")
wait
CossackCheck:
TNT1 A 0 A_JumpIfInventory("CossackTeamFlag",1,"Failed",AAPTR_TRACER)
TNT1 A 1 A_JumpIf(true,"HealReturn")
wait
KingCheck:
TNT1 A 0 A_JumpIfInventory("KingTeamFlag",1,"Failed",AAPTR_TRACER)
TNT1 A 1 A_JumpIf(true,"HealReturn")
wait
HealReturn:
TNT1 A 0 A_JumpIfInventory("BladeDashHit",1,"Failed",AAPTR_TRACER)
TNT1 A 2 A_GiveInventory("BladeDashHit",1,AAPTR_TRACER)
BSXL ABCDEF 2 A_SpawnItemEx("BladeDash2")
stop
Failed:
Death:
TNT1 A 0
stop
}
}

actor BladeDash2 : BladeDash
{
-HITTRACER
Damagetype "BladeDash2"
damage (2)
radius 64
height 64
States
{
Spawn:
TNT1 A 0
TNT1 A 1
Death:
XDeath:
stop
}
}

actor BladeDash3 : BladeDash2
{
Damagetype "BladeDash3"
damage (15)
radius 48
height 48
}

Actor BladeDashHit : Powerup
{
	Powerup.Duration 6
}

Actor BladeDashProtect : PowerProtection
{
	Powerup.Duration 20
	DamageFactor "BladeDash", 0.0
	DamageFactor "BladeDash3", 0.0
}

actor WallDashSlash : Powerup
{
Powerup.Duration 5
}

actor BladeCling : BladeDash
{
+THRUACTORS
speed 7
radius 32
height 32
damage (0)
States
{
Spawn:
TNT1 A 0
TNT1 AA 1 
stop
Crash:
Death:
TNT1 A 0 A_JumpIfInTargetInventory("BladeManHitSurface",1,"XDeath")
TNT1 A 0 A_CheckFloor("XDeath")
TNT1 A 0 A_CheckCeiling("XDeath")
TNT1 A 0 A_GiveToTarget("BladeManHitSurfaceChecker",1)
stop
XDeath:
TNT1 A 0
stop
}
}

actor BladeCling2 : BladeCling
{
States
{
Crash:
Death:
TNT1 A 0 A_JumpIfInTargetInventory("BladeManHitSurface",1,"XDeath")
TNT1 A 0 A_CheckFloor("XDeath")
TNT1 A 0 A_CheckCeiling("HitCeiling")
TNT1 A 0 A_GiveToTarget("BladeManHitSurface",1)
stop
HitCeiling:
TNT1 A 0 A_GiveToTarget("BladeManHitSurface2",1)
Goto XDeath
}
}

Actor BladeManThirdfireClingPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SetGravity(0.0)
TNT1 A 0 A_GiveInventory("VCOnce",1)
TNT1 A 0 A_GiveInventory("NoSpeed",1)
TNT1 A 0 A_GiveInventory("HalfDamageProtection",1)
TNT1 A 0 A_GiveInventory("NoPushFlag",1)
TNT1 A 0 A_PlaySoundEx("weapon/BladeManCling","Body")
stop
}
}

Actor BladeManUltimatePickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("UltAttackFlag",1)
TNT1 A 0 A_TakeInventory("MediumShortUltimateAmmo",200)
TNT1 A 0 A_GiveInventory("WindUltCooldown",1)
TNT1 A 0 A_PlaySoundEx("misc/sharktorpedo","Voice")
TNT1 A 0 A_PlaySoundEx("weapon/bladeshoot","Weapon")
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,93)
TNT1 A 0 A_SpawnItemEx("BerserkMerserkerRM",64,0,0,15,0,15)
TNT1 A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
stop
}
}

actor BerserkMerserkerRM
{
PROJECTILE
-NOINTERACTION
+NOCLIP
+RIPPER
+SKYEXPLODE
+NOEXPLODEFLOOR
+USEBOUNCESTATE
+BOUNCEONCEILINGS
+DONTREFLECT
damagetype "BlademanUlt"
Obituary "$OB_BLADEMAN4"
Radius 4
Height 8
Scale 2.5
const int DMG = 200;
const int RNG = 48;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 2
TNT1 A 0 A_ChangeFlag("NOCLIP",False)
Goto Spawn2+2
Spawn2:
TNT1 A 0 A_PlaySound("weapon/merserker","Body")
TNT1 A 0 A_ChangeVelocity(15,0,15,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_GiveToTarget("WindUltCooldown")
MERS A 1 A_Explode(DMG,RNG,0,0,RNG) TNT1 A 0 A_ScaleVelocity(0.9)
MERS A 1 A_Explode(DMG,RNG,0,0,RNG) TNT1 A 0 A_ScaleVelocity(0.9)
MERS B 1 A_Explode(DMG,RNG,0,0,RNG) TNT1 A 0 A_ScaleVelocity(0.9)
MERS B 1 A_Explode(DMG,RNG,0,0,RNG) TNT1 A 0 A_ScaleVelocity(0.9)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",4,1)
Goto Spawn2+2
Bounce.Ceiling:
TNT1 A 0 A_Stop
TNT1 A 0 A_TakeInventory("CutterFlag",9)
TNT1 A 0 A_ChangeVelocity(0,0,-15,CVF_RELATIVE|CVF_REPLACE)
DropDown:
TNT1 A 0 A_GiveToTarget("WindUltCooldown")
MERS C 1 A_Explode(DMG,RNG,0,0,RNG) TNT1 A 0 A_CheckFloor("Spawn2")
MERS C 1 A_Explode(DMG,RNG,0,0,RNG) TNT1 A 0 A_CheckFloor("Spawn2")
MERS D 1 A_Explode(DMG,RNG,0,0,RNG) TNT1 A 0 A_CheckFloor("Spawn2")
MERS D 1 A_Explode(DMG,RNG,0,0,RNG) TNT1 A 0 A_CheckFloor("Spawn2")
loop
Death:
TNT1 A 0 A_SpawnItemEx("ExplosionEffect2")
TNT1 A 0 A_PlaySound("weapon/napalm")
TNT1 A 35 A_ChangeFlag("NOINTERACTION",True)
stop
}
}

Actor BladeManResetPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("VCOnce",1)
TNT1 A 0 A_TakeInventory("NoSpeed",999)
TNT1 A 0 A_GiveInventory("GravityRestore")
TNT1 A 0 A_TakeInventory("BaseCustomFlag1",1)
TNT1 A 0 A_TakeInventory("BaseCustomFlag2",1)
TNT1 A 0 A_TakeInventory("NoPushFlag",1)
TNT1 A 0 A_TakeInventory("HalfDamageProtection")
stop
}
}

actor BladeManHitSurface : Powerup
{
Powerup.Duration 5
}
actor BladeManHitSurface2 : BladeManHitSurface {}
actor BladeManClingGetOff : BladeManHitSurface {}


actor BladeManHitSurfaceChecker : CustomInventory
{
States
{
	Pickup:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"Pickup2")
	stop
	Pickup2:
	TNT1 A 0 A_GiveInventory("BladeManHitSurface")
	stop
	
}
}