actor SaxtonBossWeapon : MegaBuster
{
tag "Hale's Own Fist"
Weapon.AmmoUse 0
Weapon.AmmoGive 0
Weapon.SlotNumber 2
Obituary "$OB_SAXTONFIST"
+INVENTORY.UNDROPPABLE
weapon.ammotype "BossJumpCharge"
weapon.ammotype2 "BossRageCharge"
+WEAPON.AMMO_OPTIONAL
Scale 2.0
States
{
Spawn:
TNT1 A 0
stop
Ready:
SXH1 A 0 ACS_NamedExecuteAlways("GiveExecution",0)
SXH1 A 0 A_GunFlash
SXH1 A 0 A_JumpIfInventory("PowerHalfDamage", 1, "RageColorsReady")
SXH1 A 0 ACS_ExecuteAlways(991,0,500)
SXH1 A 1 A_WeaponReady
Goto Ready+2
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
SXH1 A 1 A_Lower
loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
SXH1 A 1 A_Raise
Loop
Fire:
TNT1 A 1 Offset(311, 147)
//SAXP A 1 Offset(284, 136)
SAXP A 1 Offset(227, 116)
//SAXP A 1 Offset(161, 91)
SAXP A 0 A_PlaySoundEx("weapon/napalm","Weapon")
SAXP B 0 A_FireCustomMissile("SaxtonFistSAXTON",0,1,0,0)
SAXP A 1 Offset(161, 91)
SAXP A 0 A_Quake(2,14,0,8,"none")
SAXP B 1 Offset(103, 98)
SAXP B 1 Offset(89, 120)
SAXP B 1 Offset(76, 143)
SAXP B 1 Offset(69, 168)
SAXP B 1 Offset(63, 198)
TNT1 A 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
TNT1 A 35
SAXP CD 3 //38 frames
Goto Ready+2


AltFire:
SXH1 B 0 A_JumpIfInventory("BossRageCharge",500,"Rage")
SXH1 B 0 A_JumpIfInventory("SaxtonSlamCooldown",1,"NoAmmo")
SXH1 B 0 A_GiveInventory("NoJumpCancel",1)
SXH1 B 0 A_Stop
SXH1 B 0 A_PlaySoundEx("misc/darkleap", "Body", 0)
SXH1 BBBBBBBBBBBBBBBBBBBB 0 A_SpawnItemEx("ProtoDust", 0, 0, 0,random(5,15),0,1,random(0,359))
SXH1 B 0 ThrustThingZ(0,48,0,1)
SXH1 B 0 A_Recoil(-36)
AirSaxton:
SXH1 A 0 ACS_NamedExecute("StateChange",0,3) //CustomState 1
SXH1 B 1 OffSet(-10,20)
SXH1 B 0 A_JumpIf(z-floorz==0,"SaxtonSlam")
Loop
SaxtonSlam:
SXH1 E 0 A_Stop
SXH1 E 0 A_PlaySoundEx("misc/hugequake","Weapon")
SXH1 E 0 A_Quake(5,10,0,300,0)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,0)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,12)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,24)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,36)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,48)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,60)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,72)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,84)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,96)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,108)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,120)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,132)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,144)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,156)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,168)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,180)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,192)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,204)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,216)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,228)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,240)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,252)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,264)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,276)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,288)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,300)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,312)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,324)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,336)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,348)
TNT1 A 0 A_SpawnItemEx("SaxtonSlam",0,0,0,30,0,0,360)
SAXP B 1 Offset(227, 116)
SAXP B 1 Offset(103, 98)
SAXP B 1 Offset(89, 120)
SAXP B 1 Offset(76, 143)
SAXP B 1 Offset(69, 168)
SAXP B 1 Offset(63, 198)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
SXH1 A 3 Offset(-11,122)
SXH1 A 3 Offset(-7,96)
SXH1 A 3 Offset(-4,74)
SXH1 A 3 Offset(-2,56)
SXH1 A 3 Offset(-1,42)
SXH1 A 12 A_WeaponReady(14)
SXH1 A 0 A_GunFlash
SXH1 B 0 A_TakeInventory("NoJumpCancel",1)
SXH1 A 0 A_GiveInventory("SaxtonSlamCooldown",175)
Goto Ready+2

Rage:
SXH1 A 0 A_PlaySoundEx("Saxton/Rage","Item")
SXH1 A 0 A_TakeInventory("BossRageCharge",500)
SXH1 A 0 SetPlayerProperty(0,1,0)
SXH1 A 0 ACS_NamedExecute("StateChange",0,4) //CustomState 2
SXH1 B 10
SXH1 E 0 A_Quake(15,25,0,300,0)
PIRO C 0// ACS_ExecuteAlways(991,0,516)
PIRO B 0 A_SpawnItemEx("SaxtonHaleRageAssist", 0, 0, 0, 0, 0, 0)
PIRO B 0 A_SpawnItemEx("SaxtonHaleRageAssistScreen", 0, 0, 0, 0, 0, 0)
SXH1 C 0 A_GiveInventory("HaleSuperArmor",1)
SXH1 CCCCCCCCCC 1 ACS_Execute(247,0,-10,256)
SXH1 B 10
SXH1 A 5
SXH1 A 0 SetPlayerProperty(0,0,0)
goto Ready+2
NoAmmo:
SXH1 A 1 ACS_Execute(979,0)
SXH1 A 0 A_Refire
goto Ready+2
RageColorsReady:
SXH1 A 0// ACS_ExecuteAlways(991,0,516)
SXH1 A 1 A_WeaponReady
Goto Ready+2
Flash:
TNT1 A 1 A_TakeInventory("SaxtonSlamCooldown",1)
loop
}
}

actor SaxtonSlamCooldown : inventory
{
inventory.amount 1
inventory.maxamount 175
}

actor SaxtonSlam
{
translation "198:198=149:149", "192:192=215:215"
PROJECTILE
+FLOORHUGGER
+STEPMISSILE
+NOEXPLODEFLOOR
+THRUACTORS
+DONTSPLASH
+DONTBLAST
-NOGRAVITY
gravity 500.0
maxstepheight 64
reactiontime 6
radius 4
height 4
speed 15
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_ChangeFlag("FLOORHUGGER",0)
//TNT1 A 0 A_SpawnItemEx("DrillExplode",random(0,32),0,16,random(0,2),0,0,random(0,359),1)
TNT1 A 0 A_SpawnItemEx("SaxtonSlamFX",random(0,32),0,0,random(0,2),0,random(15,20),random(0,359),1)
TNT1 A 0 A_SpawnItemEx("SaxtonSlamExplosion",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("SaxtonSlamExplosion2",0,0,28,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
TNT1 A 0 A_JumpIf(z-floorz>32,"Death")
TNT1 A 2 A_CountDown
//TNT1 A 0 A_SpawnItemEx("DrillExplode",random(0,32),0,16,random(0,2),0,0,random(0,359),1)
TNT1 A 0 A_SpawnItemEx("SaxtonSlamFX",random(0,32),0,0,random(0,2),0,random(15,20),random(0,359),1)
TNT1 A 0 A_SpawnItemEx("SaxtonSlamExplosion")
TNT1 A 0 A_SpawnItemEx("SaxtonSlamExplosion2",0,0,28)
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
TNT1 A 2 A_CountDown
TNT1 A 0 A_JumpIf(z-floorz>32,"Death")
loop
Death:
TNT1 A 2
stop
}
}

actor SaxtonSlamExplosion : BasicExplosion
{
translation "198:198=149:149", "192:192=215:215"
obituary "$OB_SAXTONSLAM"
damagetype "SaxtonSlam"
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("DrillExplode",0,0,16,0,0,0,0,1)
TNT1 A 2 A_Explode(70,56,0,0,56)
stop
}
}


actor SaxtonSlamExplosion2 : SaxtonSlamExplosion
{
States
{
Spawn:
TNT1 A 0
TNT1 A 2 A_Explode(70,56,0,0,56)
stop
}
}

actor SaxtonSlamFX
{
translation "198:198=219:219", "192:192=215:215"
+MISSILE
-NOGRAVITY
+THRUACTORS
+CLIENTSIDEONLY
+DOOMBOUNCE
wallbouncefactor 0.1
bouncefactor 0.5
bouncecount 2
damage 0
radius 6
height 6
scale 2.5
states
{
Spawn:
TNT1 A 0
TNT1 A 0 ThrustThingZ(0,4,0,1)
TNT1 A 0 A_SetArg(0,random(0,2.0))
TNT1 A 0 A_SetScale(scalex - args[0],scaley - args[0])
URAH YZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZ 1
stop
}
}


actor SaxtonSlamProtect : PowerProtection
{
Powerup.Duration 35
DamageFactor "SaxtonSlam", 0.0
}

actor SaxtonHaleRageAssist
{
+MISSILE
+NOCLIP
+NOINTERACTION
+DONTBLAST
reactiontime 1155
renderstyle "translucent"
alpha 0.75
scale 2.5
States
{
Spawn:
TNT1 A 0
PowerCircles:
TNT1 A 0 A_CountDown
SX11 A 1 A_Warp(AAPTR_TARGET, 8, 0, -8, 180, WARPF_COPYINTERPOLATION|WARPF_NOCHECKPOSITION )
TNT1 A 0 A_CountDown
SX11 A 1 A_Warp(AAPTR_TARGET, 8, 0, -8, 180, WARPF_COPYINTERPOLATION|WARPF_NOCHECKPOSITION )
TNT1 A 0 A_CountDown
SX11 A 1 A_Warp(AAPTR_TARGET, 8, 0, -8, 180, WARPF_COPYINTERPOLATION|WARPF_NOCHECKPOSITION )
TNT1 A 0 A_CountDown
SX11 B 1 A_Warp(AAPTR_TARGET, 8, 0, -8, 180, WARPF_COPYINTERPOLATION|WARPF_NOCHECKPOSITION )
TNT1 A 0 A_CountDown
SX11 B 1 A_Warp(AAPTR_TARGET, 8, 0, -8, 180, WARPF_COPYINTERPOLATION|WARPF_NOCHECKPOSITION )
TNT1 A 0 A_CountDown
SX11 B 1 A_Warp(AAPTR_TARGET, 8, 0, -8, 180, WARPF_COPYINTERPOLATION|WARPF_NOCHECKPOSITION )
goto Spawn
Death:
PowerFinished:
TNT1 A 4
TNT1 A 0 A_GiveToTarget("SaxtonHaleNormalArmor", 1)
TNT1 A 0 A_TakeFromTarget("PowerHalfDamage", 999)
stop
}
}

actor SaxtonHaleRageAssistScreen : SaxtonHaleRageAssist
{
states
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAAAAAAAAAAA 1 A_CountDown
TNT1 A 0 A_TakeFromTarget("PowerHalfDamage", 999)
TNT1 A 0 A_GiveToTarget("HaleSuperArmor2", 1)
TNT1 AAAAAAAAAAAAAAAAAA 1 A_CountDown
TNT1 A 0 A_TakeFromTarget("PowerHalfDamage", 999)
TNT1 A 0 A_GiveToTarget("HaleSuperArmor", 1)
loop
}
}



actor SaxtonHaleCircleItem : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("SaxtonHaleCircle", 0, 0, 0, 0, 0, 0)
stop
}
}

actor SaxtonHaleCircle
{
+NOCLIP
+NOINTERACTION
+DONTBLAST
Renderstyle "Translucent"
Alpha 0.8
scale 1.6
States
{
Spawn:
TNT1 A 0
SXP1 ZZZZZZZZ 1 ThrustThingZ(0,22,0,0)
SXP1 ZZZZZZZZ 3 A_FadeOut(0.1)
stop
}
}


actor SaxtonHaleNormalArmor : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ACS_ExecuteAlways(991,0,500)
stop
}
}

actor SaxtonFist
{
translation "192:192=210:210", "198:198=218:218"
PROJECTILE
damagetype "BossInstagib"
Obituary "$OB_SAXTONFIST"
+DONTBLAST
reactiontime 1
damage (60)
Radius 20
Height 20
speed 85
scale 2.5
States
{
Spawn:
F_PR B 0
F_PR B 2 A_CountDown
wait
Death:
F_PR B 0 A_Explode(60,20,0,0,20)
goto XDeath
XDeath:
F_PR B 0 A_Stop
F_PR B 2
F_PR A 2
F_PR BC 2
stop
}
}

actor SaxtonFistSAXTON
{
translation "192:192=210:210", "198:198=218:218"
PROJECTILE
damagetype "BossInstagib"
Obituary "$OB_SAXTONFIST"
+DONTBLAST
reactiontime 1
damage (125)
Radius 20
Height 20
speed 85
scale 2.5
States
{
Spawn:
F_PR B 0
F_PR B 2 A_CountDown
wait
Death:
F_PR B 0 A_Explode(70,20,0,0,20)
goto XDeath
XDeath:
F_PR B 0 A_Stop
F_PR B 2
F_PR A 2
F_PR BC 2
stop
}
}


actor SaxtonFistHitbox : SaxtonFist
{
-NOINTERACTION
-RIPPER
damage (30)
states
{
Spawn:
TNT1 A 2
stop
}
}

