actor HyperStormH : BasisForHales
{
player.soundclass "BOSS701C"
player.forwardmove 0.54, 0.54
player.sidemove 0.53, 0.53
player.jumpz 14
player.viewheight 76 //"default is 41"
player.morphweapon "HyperStormHBossWeapon"
ProjectilePassHeight 240
//scale 3.80
// resistances against ripping attacks :
/*
damagefactor "LaserBuster", 0.5
damagefactor "RollingCutter", 0.5
damagefactor "IceSlasher", 0.5
damagefactor "ThunderBeam", 0.5
damagefactor "AtomicFire3", 0.5
damagefactor "MetalBlade", 0.5
damagefactor "ShadowBlade", 0.5
damagefactor "RingBoomerang", 0.5
damagefactor "WindStorm", 0.5
damagefactor "YamatoSpear", 0.5
damagefactor "MirrorBuster2", 0.5
damagefactor "KnightCrush", 0.5
damagefactor "Beat", 0.5*/
// end of resistances
States
{
Spawn:
GHSH A 0
GHSH B 1
GHSH A 0 A_JumpIfInventory("HSHRunFlag",1,"Runing")
GHSH A 1 A_JumpIf(z-floorz>0, "ItsMyAeroplane")
Goto Spawn+2
See:
GHSH A 0 A_JumpIfInventory("HSHRunFlag",1,"Runing")
GHSH BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "ItsMyAeroplane")
Goto Spawn
Missile:
GHSH A 0 A_JumpIfInventory("HSHRunFlag",1,"Runing")
GHSH F 10
GHSH G 9
goto Spawn
ItsMyAeroplane:
GHSH X 1 A_JumpIf(z-floorz <= 0, "Spawn")
wait
Runing:
GHSH BCDE 2
GHSH A 0 A_JumpIfInventory("HSHRunFlag",1,"Runing")
goto Spawn+1
Pain.TimeStopper:
Pain.RNCZaWarudo:
TNT1 A 0 SetPlayerProperty(0,1,4) TNT1 A 0 A_GiveInventory("DioFlashTimeHUD", 1) TNT1 A 0 A_SpawnItem("ZaWarudoHaleFix")
GHSH AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
GHSH A 1 SetPlayerProperty(0,0,4)
Goto Spawn

BossPain:
GHSH H 0 A_JumpIfInventory("GenesisUnitFakeHealth", 1, "ShieldPain")
GHSH H 0 A_PlaySound("misc/devilpain")
GHSH HHHHHHHHH 2 A_SpawnItem("EnemyHurtFX14NOSOUND",-13,50)
GHSH H 0 SetPlayerProperty(0,0,1)
Goto Spawn

ShieldPain:
GHSH H 0 A_PlaySound("misc/splash")
GHSH H 0 A_SpawnItem("EnemyHurtFX14NOSOUND",-13,50)
Goto Spawn

Death:
GHSH H 0 SetPlayerProperty(0, 0, 4) 
GHSH H 0 A_NoBlocking
GHSH H 0 A_Stop
GHSH H 0 A_GiveInventory("IsDead", 1)
GHSH H 1 A_GiveToTarget("KilledMe",1)
GHSH H 18
GHSH H 0 ACS_ExecuteAlways(400,0,437)
GHSH H 0 SetPlayerProperty(0, 0, 4)
GHSH H 0 A_PlayerScream
TNT1 A 0 A_SpawnItemEx("HyperStormHDeath", 0, 0, 35, 0, 0, 0)
PLAY Z 1 A_CheckPlayerDone
wait
}
}

actor HyperStormAmmo : Inventory
{
inventory.amount 1
inventory.maxamount 350
}

actor NoJumpHSH : Inventory
{
inventory.amount 1
inventory.maxamount 1
}


actor HyperStormHDeath
{
+NOGRAVITY
+DONTBLAST
+NOINTERACTION
+NOBLOCKMAP
reactiontime 30
scale 2.5
Translation "192:192=218:218", "198:198=76:76"

States
{
Spawn:
GHSH H 1
GHSH H 0 A_PlaySoundEx("misc/devildeath", "Voice")
GHSH H 0 A_SpawnItemEx("FakeDeathFX", random(-64,64), random(-64,64), random(32,128),0,0,0,random(0,360))
GHSH H 3
TNT1 A 0 A_CountDown
loop
Death:
TNT1 A 0
stop
}
}


actor HyperStormHMeteorJump : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
inventory.icon "SXISIC"
tag "-==Meteor Jump==-"
+INVENTORY.UNDROPPABLE
+COUNTITEM
+INVBAR
states
{
Spawn:
TNT1 A 0
loop
Use:
TNT1 A 0 A_JumpIfInventory("NoJumpHSH",1,"Icannot")
TNT1 A 0 A_JumpIfInventory("HyperStormHIsJumping",1,"IllCrushYou")
TNT1 A 0 A_JumpIfInventory("InBoat",1,2)
TNT1 A 0 A_JumpIfInventory("BossJumpChargeH",125,"Jump")
TNT1 A 0
fail
Jump:
TNT1 A 0 A_TakeInventory("BossJumpChargeH",125)
TNT1 A 0 A_GiveInventory("HyperStormHIsJumping",1)
TNT1 A 0 A_Recoil(-14)
TNT1 A 1 ThrustThingZ(0,160,0,0)
TNT1 A 0 A_PlaySoundEx("weapon/jetstart","Item")
TNT1 A 0 A_SpawnItemEx("HyperStormHMeteorAssist", 0, 0, 0, 0, 0, 0)
TNT1 A 0 A_SpawnItemEx("HyperStormHHeightAssist", 0, 0, 0, 0, 0, 0)
TNT1 A 1 A_TakeInventory("JumpCancler",1)
TNT1 A 0
fail
IllCrushYou:
TNT1 A 0 A_Stop
TNT1 A 0 A_GiveInventory("RemiliaRageEndNoMove", 1)
TNT1 A 0 A_SpawnItemEx("HyperStormHCrushingAssist", 0, 0, 0, 0, 0, 0)
fail
Icannot:
TNT1 A 0
fail
}
}

actor HyperStormHIsJumping : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor HyperStormHMeteorAssist
{
PROJECTILE
+NOINTERACTION
+DONTBLAST
+NOBLOCKMAP
states
{
Spawn:
TNT1 A 3
Weeee:
TNT1 A 1 A_GiveToTarget("HyperStormHCrushItem", 1)
TNT1 A 0 A_JumpIfInTargetInventory("HyperStormHStopCrushing", 1, "JobIsFinished")
TNT1 A 1 A_GiveToTarget("HyperStormHCrushItem", 1)
TNT1 A 0 A_JumpIfInTargetInventory("HyperStormHStopCrushing", 1, "JobIsFinished")
TNT1 A 1 A_GiveToTarget("HyperStormHCrushItem", 1)
TNT1 A 0 A_JumpIfInTargetInventory("HyperStormHStopCrushing", 1, "JobIsFinished")
TNT1 A 1 A_GiveToTarget("HyperStormHCrushItem", 1)
TNT1 A 0 A_JumpIfInTargetInventory("HyperStormHStopCrushing", 1, "JobIsFinished")
TNT1 A 1 A_GiveToTarget("HyperStormHCrushItem", 1)
TNT1 A 0 A_JumpIfInTargetInventory("HyperStormHStopCrushing", 1, "JobIsFinished")
TNT1 A 1 A_GiveToTarget("HyperStormHCrushItem", 1)
TNT1 A 0 A_JumpIfInTargetInventory("HyperStormHStopCrushing", 1, "JobIsFinished")
TNT1 A 1 A_GiveToTarget("HyperStormHCrushItemSound", 1)
loop
JobIsFinished:
TNT1 A 2
TNT1 A 0 A_GiveToTarget("RemiliaRageEndNoMove", 1)
TNT1 A 0 A_GiveToTarget("HyperStormHQuake", 1)
TNT1 A 0 A_TakeFromTarget("HyperStormHStopCrushing", 999)
TNT1 A 0 A_TakeFromTarget("HyperStormHIsJumping", 999)
TNT1 A 20
TNT1 A 0 A_GiveToTarget("RemiliaRageEndYesMove", 1)
stop
}
}

actor HyperStormHHeightAssist : HyperStormHMeteorAssist
{
states
{
Spawn:
TNT1 A 0
goto IsInAir
IsInAir:
TNT1 A 0
TNT1 A 1 A_GiveToTarget("HyperStormHFloorCheck", 1)
TNT1 A 0 A_JumpIfInTargetInventory("HyperStormHStopCrushing", 1, "JobIsFinished")
loop
JobIsFinished:
TNT1 A 0
stop
}
}

actor HyperStormHCrushingAssist : HyperStormHMeteorAssist
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Checkfloor("JobIsFinished")
TNT1 A 0 A_JumpIf(z-floorz<=0, "JobIsFinished")
goto IsInAir
IsInAir:
TNT1 A 0
TNT1 A 1 A_GiveToTarget("HyperStormHFallingGFX", 1)
TNT1 A 0 A_JumpIfInTargetInventory("HyperStormHStopCrushing", 1, "JobIsFinished")
loop
JobIsFinished:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("HyperStormHStopCrushing", 999)
stop
}
}

actor HyperStormHFloorCheck : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_Checkfloor("MeteorFinish")
TNT1 A 0 A_JumpIf(z-floorz<=0, "MeteorFinish")
//TNT1 A 0 A_JumpIf(momz<0, "MeteorFalling")
stop
//MeteorFalling:
//TNT1 A 0 A_GiveInventory("HyperStormHFallingGFX", 1)
//stop
MeteorFinish:
TNT1 A 0 A_GiveInventory("HyperStormHStopCrushing", 1)
stop
}
}

actor HyperStormHFallingGFX : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_Recoil(-1)
TNT1 A 0 ThrustThingZ(0, 12, 1, 1)
TNT1 A 0 A_SpawnItemEx("HyperStormHPowerWave1", 0, 0, -10, 0, 0, 3)
stop
}
}

actor HyperStormHPowerWave1
{
+NOINTERACTION
+DONTBLAST
+NOBLOCKMAP
scale 2.5
Renderstyle "translucent"
translation "69:69=218:218", "249:249=76:76"
alpha 1.0
states
{
Spawn:
GHSH L 4
SpawnNext:
TNT1 A 0 A_SpawnItemEx("HyperStormHPowerWave2", 0, 0, 0, 0, 0, 3)
stop
}
}

actor HyperStormHPowerWave2 : HyperStormHPowerWave1
{
scale 3.25
alpha 0.8
states
{
Spawn:
GHSH L 4
SpawnNext:
TNT1 A 0 A_SpawnItemEx("HyperStormHPowerWave3", 0, 0, 0, 0, 0, 3)
stop
}
}

actor HyperStormHPowerWave3 : HyperStormHPowerWave1
{
scale 4.0
alpha 0.6
states
{
Spawn:
GHSH L 4
SpawnNext:
TNT1 A 0 A_SpawnItemEx("HyperStormHPowerWave4", 0, 0, 0, 0, 0, 3)
stop
}
}

actor HyperStormHPowerWave4 : HyperStormHPowerWave1
{
scale 4.75
alpha 0.4
states
{
Spawn:
GHSH L 4
SpawnNext:
TNT1 A 0 A_SpawnItemEx("HyperStormHPowerWave5", 0, 0, 0, 0, 0, 3)
stop
}
}

actor HyperStormHPowerWave5 : HyperStormHPowerWave1
{
scale 5.5
alpha 0.2
states
{
Spawn:
GHSH L 4
SpawnNext:
TNT1 A 0 
stop
}
}

actor HyperStormHRockSlide1 : HyperStormHPowerWave1
{
states
{
Spawn:
GHSH Q 4
SpawnNext:
TNT1 A 0 A_SpawnItemEx("HyperStormHRockSlide2", 0, 0, 0, 0, 0, 5)
stop
}
}

actor HyperStormHRockSlide2 : HyperStormHPowerWave1
{
states
{
Spawn:
GHSH Q 4
SpawnNext:
TNT1 A 0 A_SpawnItemEx("HyperStormHRockSlide3", 0, 0, 0, 0, 0, 5)
stop
}
}

actor HyperStormHRockSlide3 : HyperStormHPowerWave1
{
states
{
Spawn:
GHSH Q 4
SpawnNext:
TNT1 A 0 A_SpawnItemEx("HyperStormHRockSlide4", 0, 0, 0, 0, 0, 5)
stop
}
}

actor HyperStormHRockSlide4 : HyperStormHPowerWave1
{
states
{
Spawn:
GHSH Q 4
SpawnNext:
TNT1 A 0 A_SpawnItemEx("HyperStormHRockSlide5", 0, 0, 0, 0, 0, 5)
stop
}
}

actor HyperStormHRockSlide5 : HyperStormHPowerWave1
{
states
{
Spawn:
GHSH Q 4
SpawnNext:
TNT1 A 0
stop
}
}

actor HyperStormHQuake : CustomInventory
{
states
{
Pickup:
TNT1 A 0
TNT1 A 0 ACS_ExecuteAlways(400, 0, 226)
TNT1 A 0 A_PlaySoundEx("misc/hugequake", "Body")
stop
}
}

actor HyperStormHStopCrushing : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor HyperStormHCrushItem : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_JumpIf(momz<=0, "CrushThem")
stop
CrushThem:
TNT1 A 0 A_SpawnItemEx("HyperStormHCrush", 0, 0, -25, 0, 0, 0)
stop
}
}

actor HyperStormHCrushItemSound : CustomInventory
{
states
{
Pickup:
POWB G 0 A_PlaySoundEX("weapon/jetfly","Voice")
stop
}
}


actor HyperStormHCrush
{
Obituary "$OB_HSHMETEORJUMP"
PROJECTILE
//+NOINTERACTION
+DONTBLAST
+NOBLOCKMAP
height 40
radius 110
damage (100)
damagetype "BossInstagib"
states
{
Spawn:
TNT1 A 0
stop
}
}