actor Hardman : TankArmorClass
{
Player.ScoreIcon "HARDMUGS"
player.startitem "BaseFlagPack", 1
player.startitem "TankArmor"
player.soundclass "hardmanc"
player.displayname "Hardman"
player.forwardmove 0.7, 0.7
player.sidemove 0.68, 0.68
player.jumpz 18
gravity 1.2
player.startitem "HardKnuckleBoss"
player.startitem "Base28Ammo", 28
player.startitem "Base56Ammo", 56
player.startitem "UltimateAttackItem2", 1
player.startitem "UltSoundWatcherSpawn2"
player.startitem "IsFromMM3"
player.startitem "IsHeavy"
States
{
Spawn:
HARM A 0
HARM B 1 A_JumpIf(z-floorz>0, "Jumping")
HARM A 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+2

See:
HARM BBBBBBCCCCCCDDDDDDEEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn

Jumping:
HARM I 1 A_JumpIf(z-floorz<=0, "Spawn")
wait

Missile:
HARM FFFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile")
Goto Spawn+1

JumpingMissile:
HARM PPPPP 1 A_JumpIf(z-floorz<=0, "Missile")
Goto Jumping

Animation1:
HARM F 1 A_JumpIf(z-floorz>0, "JumpingA1")
Animation1b:
HARM GGGGG 1 A_JumpIf(z-floorz>0, "JumpingA1b")
Animation1c:
HARM JJJJJJJJJJJJ 1 A_JumpIf(z-floorz>0, "JumpingA1c")

Animation2:
HARM KKKKK 1 A_JumpIf(z-floorz>0, "JumpingA2")
Animation2b:
HARM LLLLL 1 A_JumpIf(z-floorz>0, "JumpingA2b")
Animation2c:
HARM FFFFF 1 A_JumpIf(z-floorz>0, "JumpingA2c")
goto Spawn+1

JumpingA1:
HARM P 1 A_JumpIf(z-floorz<=0, "Animation1")
JumpingA1b:
HARM QQQQQ 1 A_JumpIf(z-floorz<=0, "Animation1b")
JumpingA1c:
HARM RRRRRRRRRRRR 1 A_JumpIf(z-floorz<=0, "Animation1c")

JumpingA2:
HARM SSSSS 1 A_JumpIf(z-floorz<=0, "Animation2")
JumpingA2b:
HARM TTTTT 1 A_JumpIf(z-floorz<=0, "Animation2b")
JumpingA2c:
HARM PPPPP 1 A_JumpIf(z-floorz<=0, "Animation2c")
goto Jumping

Animation3:
HARM N 1
loop

Animation4:
HARM OOOOOOOOOOOOOOOOOO 1 A_JumpIf(z-floorz>0, "Animation4b")
Animation4b:
HARM N 5
goto Spawn+1

Animation5:
HARM U 25
goto Spawn+1

Animation6:
HARM MV 5
HARM M 11
HARM V 5
goto Spawn+2

ClassTimeStop:
PLAY A 0 SetPlayerProperty(0,1,4)
//PLAY A 0 A_GiveInventory("TimeStoppedFlag",1)
PLAY A 0 ACS_Execute(528,0)
HARM AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
//PLAY A 0 A_TakeInventory("TimeStoppedFlag",999)
PLAY A 0 SetPlayerProperty(0,0,4)
Goto Pain+1
ClassPain:
//HARM H 0 A_TakeInventory("TimeStoppedFlag",999)
HARM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+2
ClassDeath:
HARM ] 20 ACS_ExecuteAlways(999,0,0)
HARM ] 0 A_PlayerScream
NOFX A 0 A_SpawnItemEx("FakeDeathFXMM3",0,0,32)
NOFX A 1 A_CheckPlayerDone
wait
ClassIceDeath:
HARM A 35
NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
CUTM H 0 A_JumpIfInTargetInventory("HardKnuckleWepM",1,2)
CUTM H 0 A_GiveToTarget("WeaponGetter")
CUTM H 0 A_GiveToTarget("HardKnuckleWepM")
goto ClassDeath
}
}

Actor HardKnuckleBoss : VCBaseWeapon
{
Weapon.AmmoUse 7
Weapon.AmmoGive 28

Weapon.AmmoType2 "Base56Ammo"
Weapon.AmmoUse2 56
Weapon.AmmoGive2 56
States
{
Ready:
HFIS A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,28)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
HFIS A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,28)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
HFIS A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,28)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
HFIS A 0 A_GiveInventory("Base28Ammo",1)
HFIS A 0 A_GiveInventory("Base56Ammo",1)
Loop

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
HFIS A 1 A_Lower
Loop

Select:
HFIS A 0
HFIS A 0 ACS_ExecuteAlways(991,0,763)
HFIS AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
HFIS A 1 A_Raise
Loop

UltimateAttack:
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,27)
HFIS A 0 ACS_NamedExecuteWithResult("VC_SetState",6)
HFIS A 0 A_TakeInventory("UltAttackFlag",9)
HFIS I 0 A_GiveInventory("CutterFlag",4)
NEDR A 0 A_GiveInventory("HardUltBuildCooldownGiver",1)
CUTA A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
CUTA A 0 A_PlaySoundEx("weapon/mirrorabsorb","Weapon")
HFIS A 0 SetPlayerProperty(0,1,0)
HFIS A 12
HFIS A 13 A_GiveInventory("HardUltBuildCooldownGiver",1)
UltimateAttack.HardBoxing:
HFIS A 0 A_TakeInventory("MediumShortUltimateAmmo",25)
HFIS A 0 A_GiveInventory("HardmanUlt1_CI",1) HFIS BCDE 1
HFIS A 0 A_TakeInventory("MediumShortUltimateAmmo",25)
HFIS A 0 A_GiveInventory("HardmanUlt2_CI",1) HFIS FGHI 1
HFIS I 0 A_TakeInventory("CutterFlag",1)
HFIS I 1 A_JumpIfInventory("CutterFlag",1,"UltimateAttack.HardBoxing")
HFIS I 0 A_TakeInventory("CutterFlag",999)
HFIS A 0 SetPlayerProperty(0,0,0)
HFIS JKLMNOP 3 A_TakeInventory("UltAttackFlag",9)
HFIS A 10
Goto Ready

Fire:
HFIS A 0 A_GiveInventory("HardmanFire1_CI")
HFIS BCDE 2
HFIS E 3
HFIS A 0 A_GiveInventory("HardmanFire2_CI")
HFIS FGHI 2
Fire.Waiting:
HFIS I 1 A_JumpIfInventory("CutterFlag",300,"Fire.Return")
HFIS I 0 A_GiveInventory("CutterFlag",1)
loop
Fire.Return:
HFIS JKLMNOP 2
HFIS A 2 A_GiveInventory("HardmanFireEnd_CI")
Goto Ready

Altfire:
RATU A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
HFIS A 0 A_CheckFloor("Altfire.DoubleFist")//anti desync rofl
HFIS A 1 A_JumpIf(callACS("core_CheckFooting")== 1 || (abs(z-floorz) < 30 && momz <= 0),"Altfire.DoubleFist")//A_CheckFloor("Altfire.DoubleFist")
Goto Altfire.QuakeStart
Altfire.DoubleFist:
HFIS A 0 A_GiveInventory("HardmanAltfire1_CI")
HFIS A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
HFIS QRST 2
HFIS U 14
HFIS JKLMNOP 1
HFIS A 2
Goto Ready


Altfire.QuakeStart:
HFIS VVV 1
HFIS A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
HFIS VVVVVWX 1 A_Stop
HFIS Y 1 A_ChangeVelocity(0,0,-20,CVF_REPLACE)
OK:
HFIS Y 0 A_PlaySoundEX("weapon/hardquake","Weapon")
HFIS Y 1 A_JumpIf(momz==0,"Shockland")
loop
Shockland:
HFIS A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
HFIS A 0 A_PlaySoundEX("weapon/hardquake","Weapon")
HFIS A 0 A_Quake(4,10,0,384)
TNT1 A 0 SetPlayerProperty(0,1,0)
TNT1 A 0 A_GiveInventory("HalfDamageProtection",1)
TNT1 A 0 A_ChangeVelocity(momx,momy,-30,CVF_REPLACE)
TNT1 A 0 A_SpawnItemEx("QuakeFX3")
TNT1 A 0 A_SpawnItemEx("QuakeFX2")
TNT1 A 0 A_SpawnItemEx("QuakeFX")
TNT1 AAAAAAAAAA 0 A_SpawnItemEx("HardQuakeDebris",random(32,256),0,0,0,0,random(5,12),random(0,360))
TNT1 AAAA 2 A_SpawnItemEx ("QuakeDamage")
HFIS A 0 A_TakeInventory("Base56Ammo",28)
TNT1 A 10
TNT1 A 0 A_TakeInventory("HalfDamageProtection",1)
TNT1 A 0 SetPlayerProperty(0,0,0)
HFIS NOP 2
Goto Ready
}
}

Actor HardmanFire1_CI : CustomInventory
{
States
{
Pickup:
HFIS A 0 A_PlaySoundEx("Weapon/MBuster","Weapon")
HFIS A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
//TNT1 A 0 A_SpawnItemEx("HardmanKnuckleFX",16,8,35)
HFIS A 0 A_FireCustomMissile("HardmanKnuckle2",0,1,8,0)
stop
}
}

Actor HardmanFire2_CI : CustomInventory
{
States
{
Pickup:
HFIS A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
HFIS A 0 A_PlaySoundEx("Weapon/MBuster","Weapon")
//TNT1 A 0 A_SpawnItemEx("HardmanKnuckleFX",16,-8,35)
HFIS A 0 A_FireCustomMissile("HardmanKnuckle",0,0,-8,0)
stop
}
}

Actor HardmanFireEnd_CI : CustomInventory
{
States
{
Pickup:
HFIS A 0 A_PlaySoundEx("weapon/adapterreturn","Weapon")
HFIS A 0 A_TakeInventory("CutterFlag",999999)
stop
}
}

Actor HardmanAltfire1_CI : CustomInventory
{
States
{
Pickup:
HFIS A 0 A_PlaySoundEx("weapon/dm1shot","Weapon")
DM1H D 0 A_PlaySoundEx("hardm2/ground","Auto")
HFIS A 0 A_FireCustomMissile("HardmanDoubleKnuckle",0,0,0,0)
HFIS A 0 A_FireCustomMissile("HardmanDoubleKnuckle2",0,0,0,0)
HFIS A 0 A_TakeInventory("Base56Ammo",28,1)
stop
}
}

Actor HardmanUlt1_CI : CustomInventory
{
States
{
Pickup:
HFIS A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
TNT1 A 0 A_FireCustomMissile("HardmanBoxingKnuckle",0,0,8,0)
DIVA P 0 A_PlaySoundEx("weapons/mm3/hardknucklelaunch","Weapon")
TNT1 A 0 A_SpawnItemEx("HardmanKnuckleFX3",16,8,35)
stop
}
}

Actor HardmanUlt2_CI : CustomInventory
{
States
{
Pickup:
HFIS A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_FireCustomMissile("HardmanBoxingKnuckle",0,0,-8,0)
DIVA P 0 A_PlaySoundEx("weapons/mm3/hardknucklelaunch","Weapon")
TNT1 A 0 A_SpawnItemEx("HardmanKnuckleFX3",16,-8,35)
stop
}
}

actor HardmanKnuckle
{
PROJECTILE
Radius 15
Height 8
Scale 3.5
Damage (20)
+DONTSPLASH
+NOTARGETSWITCH
+SKYEXPLODE
+DONTREFLECT
ReactionTime 17
//+FLOAT
DamageType "HardmanKnuckleInit"
Obituary "$OB_HARDMAN1"
Speed 45
FloatSpeed 16
States
{
Spawn:
HARB AA 0 A_GiveInventory("ProjectileCode",1)
Spawn_L:
HARB A 0 A_JumpIfInTargetInventory("CutterFlag",300,"Death2")
HARB AA 1 A_CountDown
HARB A 0 A_SpawnItemEx("HardmanKnuckleFX2",-6)
loop
Death:
HARB A 0 A_CustomMissile("ReturningHardmanKnuckle",0,0,0,0)
TNT1 A 0 A_SpawnItemEx("HardmanKnuckleFX",0)
stop
Death2:
TNT1 A 0
stop
}
}

actor HardmanKnuckle2 : HardmanKnuckle
{
States
{
Spawn:
HARB AA 0 A_GiveInventory("ProjectileCode",1)
Spawn_L:
HARB A 0 A_JumpIfInTargetInventory("CutterFlag",300,"Death2")
HARB AA 1 A_CountDown
HARB A 0 A_SpawnItemEx("HardmanKnuckleFX2",-6)
loop
Death:
HARB A 0 A_CustomMissile("ReturningHardmanKnuckle",0,0,0,0)
TNT1 A 0 A_SpawnItemEx("HardmanKnuckleFX",0)
stop
}
}

Actor HardmanKnuckleFX
{
PROJECTILE
Scale 2.5
Radius 8
Height 8
Damage (0)
+RIPPER
+THRUACTORS
+NOCLIP
+NOINTERACTION
+CLIENTSIDEONLY
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
MMFX BCDE 2
Stop
}
}

Actor HardmanKnuckleFX2 : HardmanKnuckleFX
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
MMFX CCCCCCCCCC 1 A_SetScale(ScaleX - 0.17, ScaleY - 0.17)
Stop
}
}

Actor HardmanKnuckleFX3 : HardmanKnuckleFX
{
renderstyle translucent
alpha 0.4
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
MMFX BCDE 1
Stop
}
}

actor ReturningHardmanKnuckle : HardmanKnuckle
{
Radius 0
Height 0
Speed 24
DamageType "HardmanKnuckleRet"
Damage 0
+RIPPER
+DONTSPLASH
+NOCLIP
+NOINTERACTION
States
{
Spawn:
HARB AA 0 A_GiveInventory("ProjectileCode",1)
HARB A 0 A_FaceTarget
HARB A 0 A_JumpIfCloser(60,"Death")
HARB AA 1 A_SpawnItemEx("HardKnuckleReturnDamager",0,0,0,2,0,0)
HARB A 0 A_SpawnItemEx("HardmanKnuckleFX2",-6)
HARB A 0 A_FaceTarget
HARB A 0 A_CustomMissile("ReturningHardmanKnuckle",0,0,0,0)
stop
Death2:
HARB A 0 A_CustomMissile("ReturningHardmanKnuckle",0,0,0,0)
TNT1 A 0 A_SpawnItemEx("HardmanKnuckleFX",0)
stop
Death:
HARB A 0 A_GiveToTarget("CutterFlag",150)
TNT1 A 0 //A_SpawnItemEx("HardmanKnuckleFX",0)
stop
}
}

actor HardKnuckleReturnDamager
{
PROJECTILE
DamageType "HardmanKnuckleDamager"
Obituary "$OB_HARDMAN2"
+RIPPER
-DONTBLAST
Damage (15)
Radius 16
Height 16
States
{
Spawn:
TNT1 A 2
stop
}
}

Actor HardmanKnuckleDamagerProtect : PowerProtection
{
	Powerup.Duration 45
	DamageFactor "HardmanKnuckleDamager", 0.0
}

Actor HardmanDoubleKnuckle : FastProjectile
{
damagetype "HardRocket"
PROJECTILE
Scale 4.5
Obituary "$OB_HARDMAN3"
Speed 35
Radius 17
Height 8
var int user_damage;
var int user_momz;
Damage (user_damage)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1) TNT1 A 1
TNT1 A 0 A_SetUserVar("user_damage",10)
TNT1 A 0 A_SetUserVar("user_momz",momz)
HARB A 0 A_ChangeVelocity(0,-1,0,3)
HARB A 1 A_SpawnItemEx("HardmanKnuckleFX2",-6)
HARB A 1 A_Stop
HARB A 0 A_SpawnItemEx("HardmanDoubleKnuckleSpawnFX",0)
TNT1 A 0 A_SetUserVar("user_damage",0)
TNT1 A 3
HARB B 7
HARB B 1 A_PlaySoundEx("hardm2/fly","Body")
HARB B 1 A_ChangeVelocity(cos(pitch)*25,0,user_momz,3)

Spawn_L:
HARB B 0 A_SpawnItemEx("HardmanKnuckleFX2",-6,-6)
HARB B 2 A_SpawnItemEx("HardmanKnuckleFX2",-6,6)
HARB B 0 A_SpawnItemEx("HardmanKnuckleFX2",-6,-6)
HARB B 2 A_SpawnItemEx("HardmanKnuckleFX2",-6,6)

HARB B 0 A_ScaleVelocity(1.08)
Goto Spawn_L
Death:
TNT1 A 0 A_Explode(45,128,0,0,128)
TNT1 A 0 A_Quake(6,10,0,320)
TNT1 A 0 A_PlaySoundEx("hardm2/boom","Body")
TNT1 A 0 A_SpawnItemEx("NapalmExplodeFX",0)
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
PS1X A 0 A_PlaySoundEx("weapon/mm9explode","Auto") 
PS1X ABCDEFGHIJ 1
stop
}
}

Actor HardmanDoubleKnuckleSpawnFX : HardmanKnuckleFX2
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
MMFX BBBBBB 1 A_SetScale(ScaleX + 0.23, ScaleY + 0.23)
MMFX CCCCC 1 A_SetScale(ScaleX - 0.32, ScaleY - 0.32)
Stop
}
}

Actor HardmanDoubleKnuckle2 : HardmanDoubleKnuckle
{
Damage (10)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1) TNT1 A 1
HARB A 0 A_ChangeVelocity(0,1,0,3)
HARB A 1 A_SpawnItemEx("HardmanKnuckleFX2",-6)
HARB A 1 A_Stop
Death:
TNT1 A 0
Stop
}
}

actor QuakeDamage
{
species "DustManType"
+THRUSPECIES
+MISSILE
-SOLID
-DONTBLAST
+NOGRAVITY
+RIPPER
+SKYEXPLODE
+NOINTERACTION
+DONTSPLASH
+THRUGHOST
+THRUACTORS
+DONTREFLECT
Damage (0)
DamageType "HardmanQuake"
Obituary "$OB_HARDMAN4"
States
{
Spawn:
TNT1 A 0
TNT1 A 2 A_Explode(7,256,0,0,256)
stop
}
}

Actor HardmanQuakeProtect : PowerProtection
{
	Powerup.Duration 75
	DamageFactor "HardmanQuake", 0.3
}

Actor HardmanQuakeProtect2 : Powerup
{
	Powerup.Duration 125
}

actor HardmanBoxingKnuckle : FastProjectile
{
PROJECTILE
Radius 12
Height 12
Scale 2.5
Damagetype "HardmanUlt"
Obituary "$OB_HARDMAN5"
Damage (0)
Speed 45
+SEEKERMISSILE
-EXTREMEDEATH
+SCREENSEEKER
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_Quake(2,3,0,240)
Spawn_L:
H3RC A 2 A_SeekerMissile(2, 5, SMF_LOOK, 50, 15)
H3RC A 0 A_GiveToTarget("HardUltBuildCooldownGiver")
H3RC A 0 A_SpawnItemEx("HardmanKnuckleFX2",-6)
loop
Death:
TNT1 A 0 A_Explode(20,128,0,0,128)//(15,128,0,0,128)
TNT1 A 0 A_Quake(8,20,0,420)
TNT1 A 0 A_PlaySoundEx("hardm2/boom","Body")
TNT1 A 0 A_PlaySoundEx("weapon/napalm","Auto")
TNT1 A 0 A_SpawnItemEx("NapalmExplodeFX",0)
TNT1 A 24 A_ChangeFlag("NOINTERACTION",1)
stop
}
}

actor HardUltBuildCooldownGiver : UltBuildCooldownGiver
{
	Powerup.Duration 24
}

actor HardQuakeDebris : GutsQuakeDebris
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_Jump(256,"S_1","S_2")

S_1:
PW4D A 70
stop

S_2:
PW4D E 70
stop
}
}