actor Gravityman : VCBaseClass
{
Player.ScoreIcon "GRAVMUGS"
player.startitem "BaseFlagPack", 1
player.startitem "NormalArmor"
player.soundclass "gravitymanc"
Player.ViewHeight 63
projectilepassheight 77
player.displayname "Gravityman"
player.forwardmove 0.8, 0.8
player.sidemove 0.78, 0.78
player.jumpz 14
player.startitem "GravityHoldBoss"
player.startitem "Base112Ammo", 112
player.startitem "GravityUltCheck"
player.startitem "IsFromMM5"
States
{
Spawn:
GRAM A 0
GRAM B 1 A_JumpIf(z-floorz>0, "Jumping")
GRAM A 1 A_JumpIf(z-floorz>0, "Jumping")
GRAM A 0 A_JumpIfInventory("GravityFly",1,"Ceiling")
Goto Spawn+2
See:
GRAM B 0 A_JumpIfInventory("GravityFly",1,"CeilingSee")
GRAM BBBBCCCCDDDDEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+1
Jumping:
GRAM I 0 A_JumpIfInventory("GravityFly",1,"CeilingJump")
GRAM I 1 A_JumpIf(z-floorz<=0, "Spawn")
loop
Animation2:
Jumping2:
GRAM I 1 A_JumpIf(z-floorz<=0, "Spawn")
wait
Animation3:
CeilingJump:
GRAC I 1 A_JumpIfInventory("GravityLand",1,"Spawn")
GRAC I 0 A_CheckCeiling("CeilingLand")
loop
CeilingLand:
GRAC B 0 A_PlaySoundEx("mm4/land","Auto")
goto Ceiling
Missile:
GRAM F 0 A_JumpIfInventory("GravityFly",1,"CeilingFire")
GRAM FFFFFGGGG 1 A_JumpIf(z-floorz>0, "JumpMissile")
goto Spawn+1
JumpMissile:
GRAM F 0 A_JumpIfInventory("GravityFly",1,"CeilingFire")
GRAM JJJJJ 1 A_JumpIf(z-floorz<=0, "Missile")
GRAM F 0 A_JumpIfInventory("GravityFly",1,"CeilingFire")
GRAM JJJJ 1 A_JumpIf(z-floorz<=0, "Missile")
Goto Spawn+1

Animation1:
GRAM KLM 3 A_JumpIfInventory("GravityFly",1,"CeilingAnimation1")
GRAM M 2 A_JumpIfInventory("GravityFly",1,"CeilingAnimation1")
GRAM L 3 A_JumpIfInventory("GravityFly",1,"CeilingAnimation1")
Goto Spawn+1
CeilingAnimation1:
GRAC KLM  3
GRAM M 2
GRAM L 3
Goto Ceiling

Ceiling:
GRAC B 0 A_JumpIf(momz!=0,"CeilingJump")
GRAC B 1 A_JumpIf(momx>1||momy>1||momx<-1||momy<-1,"CeilingSee")
Ceiling2:
GRAC A 1 A_JumpIf(momx>1||momy>1||momx<-1||momy<-1,"CeilingSee")
GRAC B 0 A_JumpIf(momz!=0,"CeilingJump")
GRAC A 0 A_JumpIfInventory("GravityLand",1,"Spawn")
GRAC A 1 A_CheckCeiling("Ceiling2")
Goto CeilingJump
CeilingSee:
GRAC B 0 A_JumpIfInventory("GravityLand",1,"See")
GRAC BBBBCCCCDDDDEEEE 1 A_JumpIf(momz!=0,"CeilingJump")
GRAC B 0 A_JumpIf(momx>1||momy>1||momx<-1||momy<-1,"CeilingSee")
Goto Ceiling
CeilingFire:
GRAC FFFFFGGGG 1 A_JumpIf(momz!=0,"CeilingJFire")
Goto Ceiling
CeilingJFire:
GRAC JJJJJJJJJ 1 A_JumpIf(momz==0,"CeilingFire")
Goto Ceiling
ClassTimeStop:
PLAY A 0 SetPlayerProperty(0,1,4)
PLAY A 0 ACS_Execute(528,0)
GRAM AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
PLAY A 0 SetPlayerProperty(0,0,4)
Goto pain+1
ClassPain:
GRAM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
ClassDeath:
GRAM H 20 ACS_ExecuteAlways(999,0,0)
GRAM H 0 A_PlayerScream
NOFX A 0 A_SpawnItemEx("FakeDeathFX",0,0,32)
NOFX A 1 A_CheckPlayerDone
wait
ClassIceDeath:
GRAM A 35
NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
GRAM H 0 A_JumpIfInTargetInventory("GravityHoldWepM",1,2)
GRAM H 0 A_GiveToTarget("WeaponGetter")
GRAM H 0 A_GiveToTarget("GravityHoldWepM")
goto ClassDeath
}
}

actor GravityHoldBoss : VCBaseWeapon
{
Obituary "$OB_GRAVITYMAN2"
Weapon.AmmoType "Base112Ammo"
States
{
Ready:
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("GravityFly",1,"Ready.Reverse")
GRAB A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,56)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
GRAB A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",2,56)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
GRAB A 0 A_GiveInventory("Base112Ammo",1)
Goto Ready

Ready.Reverse:
GRAB D 1 A_WeaponReady
GRAB D 1 A_JumpIfInventory("GravityFly",1,"Ready.ReverseCheck")
GRAB D 1 A_JumpIfInventory("GravityFly",1,"Ready.ReverseCheck")
Goto Altfire.Flip
Ready.ReverseCheck:
GRAB D 1 A_JumpIfInventory("GravityFly2",1,"Ready.ReverseCheck2")
Goto Altfire.Flip
Ready.ReverseCheck2:
GRAB D 1 A_JumpIfInventory("Base112Ammo",1,"Ready.Reverse")
Goto Altfire.Flip

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
GRAB A 1 A_Lower
Loop
Select:
TNT1 A 0 A_GunFlash
TNT1 A 0 ACS_ExecuteAlways(991,0,800)
SelectX:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
GRAB A 1 A_Raise
Loop

Flash:
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 0 A_GiveInventory("GravityJumpCheck_P",1)
TNT1 A 1 A_GiveInventory("GravitymanCeilingCheck_P",1)
TNT1 A 0 A_GiveInventory("GravityJumpCheck_P",1)
TNT1 A 1 A_GiveInventory("GravitymanCeilingCheck2_P",1)
loop

Fire:
GRAB A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
GRAB A 0 A_GiveInventory("GravityM1Handler",1)
TNT1 A 0 A_JumpIfInventory("GravityFly",1,"Fire.Reverse")
GRAB B 1 offset(3,35)
GRAB B 1 offset(8,40) A_GiveInventory("Base112Ammo",1)
GRAB C 1 offset(13,45)
GRAB C 1 offset(18,50) A_GiveInventory("Base112Ammo",1)
GRAB C 1 offset(13,45)
GRAB C 1 offset(8,40) A_GiveInventory("Base112Ammo",1)
GRAB C 1 offset(3,35)
GRAB A 0 A_WeaponReady(14) 
GRAB AAAAAA 2 A_GiveInventory("Base112Ammo",1)
Goto Ready
Fire.Reverse:
GRAB E 1 offset(3,29)
GRAB E 1 offset(8,24)
GRAB F 1 offset(13,19)
GRAB F 1 offset(18,14)
GRAB F 1 offset(13,19)
GRAB F 1 offset(8,24)
GRAB F 1 offset(3,29)
GRAB D 12 A_WeaponReady(14) 
GRAB D 1 A_JumpIfInventory("GravityFly",1,"Ready.ReverseCheck")
Goto Altfire.Flip

Altfire:
RATU A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
GRAB A 0 A_JumpIfInventory("GravityFly",1,"Altfire.Flip")
GRAB A 0 A_SpawnItemEx("GravitymanCeilingChecker",0,0,8,0,0,720,0)
GRAB A 1 Offset(2,36) A_JumpIfInventory("GravityHoldActivate",1,"Altfire.FoundCeiling")
GRAB A 1 Offset(12,48) A_JumpIfInventory("GravityHoldActivate",1,"Altfire.FoundCeiling")
GRAB A 1 Offset(24,64) A_JumpIfInventory("GravityHoldActivate",1,"Altfire.FoundCeiling")
GRAB A 1 Offset(36,80) A_JumpIfInventory("GravityHoldActivate",1,"Altfire.FoundCeiling")
Goto Altfire.NoCeiling
Altfire.NoCeiling:
TNT1 A 0 A_TakeInventory("GravityHoldActivate",99)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
GRAB A 1 Offset(48,96)
GRAB A 1 Offset(60,112)
TNT1 A 0 ACS_ExecuteAlways(991,0,814)
TNT1 A 0 A_PlaySoundEx("weapon/gravityhold","Weapon")
TNT1 A 0 A_GiveInventory("GravityM2Handler")
TNT1 A 0 ACS_NamedExecuteAlways("VC_GravityUltDrop",0)
GRAH A 1 OffSet(14,22)
GRAH A 1 OffSet(42,2)
GRAH A 1 OffSet(70,-20)
GRAH B 1 Offset(72,-22)
GRAH B 1 Offset(71,-19)
GRAH B 1 Offset(74,-16)
GRAH B 1 Offset(72,-21)
GRAH B 1 Offset(71,-19)
GRAH B 1 Offset(74,-16)
GRAH B 1 Offset(72,-21)
GRAH B 6 Offset(70,-20)
TNT1 A 0 ACS_ExecuteAlways(991,0,800)
GRAH A 1 OffSet(42,2)
GRAH A 1 OffSet(14,22)
TNT1 A 5 A_WeaponReady(14)
GRAB A 1 Offset(60,112)
GRAB A 1 Offset(48,96)
GRAB A 1 Offset(36,80)
GRAB A 1 Offset(24,64)
GRAB A 1 Offset(12,48)
TNT1 A 0 ACS_ExecuteAlways(991,0,800)
GRAB A 1 A_WeaponReady(14)
Goto Ready
Altfire.FoundCeiling:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
TNT1 A 0 A_GiveInventory("GravityM2Handler")
TNT1 A 0 A_PlaySoundEx("gravityman/upwards","Auto")
TNT1 A 0 A_PlaySoundEx("gravityman/switch","Weapon")
TNT1 A 0 A_GiveInventory("GravityFlip")
TNT1 A 0 ACS_NamedExecuteAlways("VC_GravityUltDrop",0)
TNT1 A 0 A_GiveInventory("GravityFly",1)
TNT1 A 0 A_TakeInventory("GravityHoldActivate",99)
TNT1 A 0 A_GiveInventory("GravitySpeed",1)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldParticle",random(0,475),random(80,0),0,0,0,random(5,25),random(0,359))
TNT1 A 0 A_SetGravity(-0.8)
GRAB A 1 Offset(4, 29) A_SpawnItemEx("GravityRiseHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
GRAB A 1 Offset(5, 26) A_SpawnItemEx("GravityRiseHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
GRAB A 1 Offset(8, 24) A_SpawnItemEx("GravityRiseHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
GRAB A 1 Offset(14, 15) A_SpawnItemEx("GravityRiseHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
GRAB D 1 Offset(10, 24) A_SpawnItemEx("GravityRiseHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
GRAB D 1 Offset(5, 29) A_SpawnItemEx("GravityRiseHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
GRAB D 0 A_WeaponReady(14)
GRAB DDDDDDDD 1 A_SpawnItemEx("GravityRiseHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
Goto Ready

Altfire.Flip:
GRAB D 1 A_GiveInventory("GravityDownFlipCheck")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 ThrustThingZ(0,10,1,0)
TNT1 A 0 A_GiveInventory("GravityM2Handler")
TNT1 A 0 A_PlaySoundEx("gravityman/downwards","Auto")
TNT1 A 0 A_PlaySoundEx("hctiws\namytivarg","Weapon")
TNT1 A 0 A_GiveInventory("GravityFlip")
TNT1 A 0 ACS_NamedExecuteAlways("VC_GravityUltDrop",0)
TNT1 A 0 A_TakeInventory("GravityFly",9)
TNT1 A 0 A_TakeInventory("GravityFly2",9)
//TNT1 A 0 ThrustThingZ(0,10,1,0)
TNT1 A 0 A_TakeInventory("GravitySpeed",1)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldParticle",random(0,475),random(-80,0),0,0,0,random(-25,-5),random(0,359))
GRAB D 1 Offset(5, 29) A_SpawnItemEx("GravityDropHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
GRAB D 1 Offset(10, 24) A_SpawnItemEx("GravityDropHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
GRAB A 1 Offset(14, 15) A_SpawnItemEx("GravityDropHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
GRAB A 1 Offset(8, 24) A_SpawnItemEx("GravityDropHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
GRAB A 1 Offset(5, 26) A_SpawnItemEx("GravityDropHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
GRAB A 1 Offset(4, 29) A_SpawnItemEx("GravityDropHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
//GRAB A 4 A_WeaponReady(14)
GRAB A 1 A_WeaponReady(14)
GRAB A 0 A_SpawnItemEx("GravityDropHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
GRAB A 1 A_WeaponReady(14)
GRAB A 0 A_SpawnItemEx("GravityDropHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
GRAB A 1 A_WeaponReady(14)
GRAB A 0 A_SpawnItemEx("GravityDropHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
GRAB A 1 A_WeaponReady(14)
GRAB A 0 A_SpawnItemEx("GravityDropHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)

Altfire.FlipWait:
GRAB A 0 A_JumpIfInventory("CutterFlag",125,"Altfire.Land")
GRAB D 0 A_SpawnItemEx("GravityDropHitbox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
GRAB A 1 A_JumpIf(z-floorz==0,"Altfire.Land")
GRAB A 0 A_GiveInventory("CutterFlag",1)
loop
Altfire.Land:
GRAB A 0 A_GiveInventory("GravityLand",1)
GRAB A 0 A_TakeInventory("CutterFlag",999)
GRAB A 0 A_TakeInventory("GravityFly",999)
GRAB A 1 Offset(0,35)
GRAB A 3 Offset(0,41)
GRAB A 1 Offset(0,35)
GRAB A 2 A_WeaponReady(14)
Goto Ready

UltimateAttack:
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,42)
GRAH A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
TNT1 A 0 A_TakeInventory("GravityHoldActivate",99)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
TNT1 A 2 A_WeaponReady(14)
TNT1 A 0 ACS_ExecuteAlways(991,0,814)
TNT1 A 0 A_PlaySoundEx("weapon/gravityhold","Weapon")
TNT1 A 0 A_PlaySoundEx("gravityman/ult","Body")
GRAH A 0 A_GiveInventory("WindUltCooldown")
TNT1 A 0 A_GiveInventory("GravityUltHandler")
TNT1 A 0 A_Quake(5,29,0,1000)
GRAH A 1 OffSet(14,22)
GRAH A 1 OffSet(42,2)
GRAH A 1 OffSet(70,-20)
GRAH B 1 Offset(72,-22)
GRAH C 1 Offset(71,-19)
GRAH D 1 Offset(74,-16)
GRAH E 1 Offset(72,-21)
GRAH F 1 Offset(71,-19)
GRAH B 1 Offset(74,-16)
GRAH C 1 Offset(72,-21)
GRAH DEFBBB 1 Offset(70,-20)
TNT1 A 0 ACS_ExecuteAlways(991,0,800)
GRAH A 1 OffSet(42,2)
GRAH A 1 OffSet(14,22)
TNT1 A 5 A_WeaponReady(14)
GRAB A 1 Offset(60,112)
GRAB A 1 Offset(48,96)
GRAB A 1 Offset(36,80)
GRAB A 1 Offset(24,64)
GRAB A 1 Offset(12,48)
TNT1 A 0 ACS_ExecuteAlways(991,0,800)
GRAB A 1 A_WeaponReady(14)
GRAH A 0 A_TakeInventory("UltAttackFlag")
goto Ready
}
}

actor GravityJumpCheck_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",2)>0,"Pickup2")
stop
Pickup2:
TNT1 A 0 A_JumpIfInventory("GravityFly",1,"Pickup3")
stop
Pickup3:
TNT1 A 0 A_JumpIfInventory("GravityHitGroundFlag",1,"Jump")
stop
Jump:
TNT1 A 0 ThrustThingZ(0,-14*7,0,0)
stop
}
}

actor GravitymanCeilingCheck_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("GravityFly",1,"Pickup2")
Goto End
End:
TNT1 A 0 A_GiveInventory("GravityRestore",1)
DRIH A 0 ACS_Execute(191,0,APROP_JumpZ,14,1)
TNT1 A 0 A_TakeInventory("GravityFly",99)
TNT1 A 0 A_TakeInventory("GravityFly2",99)
stop
Pickup2:
GRAB B 0 A_SpawnItemEx("GravitymanCeilingCheckerLoop",0,0,8,0,0,720,0)
DRIH A 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
TNT1 A 0 A_JumpIf(z-ceilingz==0-56, "Landed")
TNT1 A 0 A_TakeInventory("GravityHitGroundFlag",9)
TNT1 A 0 ThrustThingZ(0,8,0,1)
Stop
Landed:
TNT1 A 0 A_GiveInventory("GravityHitGroundFlag",1)
stop
}
}
Actor GravitymanCeilingCheck2_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("GravitymanCeilingCheck_P",1)
TNT1 A 0 A_JumpIfInventory("GravityFly",1,"Pickup2")
stop
Pickup2:
TNT1 A 0 A_TakeInventory("Base112Ammo",1)
stop
}
}

actor GravitymanShot : FastProjectile
{
Obituary "$OB_GRAVITYMAN2"
PROJECTILE
+HITTRACER
+SKYEXPLODE
+NOTARGETSWITCH
DamageType "GravitymanBuster"
Speed 65
Damage (17)
Radius 10
Height 10
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
GRSH A 1
Goto Spawn+2
Death:
Crash:
XDeath:
TNT1 A 0 A_CheckFlag("INVULNERABLE","Failed",AAPTR_TRACER)
GRSH A 0 A_JumpIfInventory("CanBeGrabBustered", 1, "TeamCheck", AAPTR_TRACER)
stop
TeamCheck:
GRSH A 0 A_JumpIfInventory("LightTeamFlag", 1, "LightCheck", AAPTR_TARGET)
GRSH A 0 A_JumpIfInventory("WilyTeamFlag", 1, "WilyCheck", AAPTR_TARGET)
GRSH A 0 A_JumpIfInventory("CossackTeamFlag", 1, "CossackCheck", AAPTR_TARGET)
GRSH A 0 A_JumpIfInventory("KingTeamFlag", 1, "KingCheck", AAPTR_TARGET)
goto CritCheck
LightCheck:
GRSH A 0 A_JumpIfInventory("LightTeamFlag", 1, "Failed", AAPTR_TRACER)
GRSH A 1 A_JumpIf(true, "CritCheck")
wait
WilyCheck:
GRSH A 0 A_JumpIfInventory("WilyTeamFlag", 1, "Failed", AAPTR_TRACER)
GRSH A 1 A_JumpIf(true, "CritCheck")
wait
CossackCheck:
GRSH A 0 A_JumpIfInventory("CossackTeamFlag", 1, "Failed", AAPTR_TRACER)
GRSH A 1 A_JumpIf(true, "CritCheck")
wait
KingCheck:
GRSH A 0 A_JumpIfInventory("KingTeamFlag", 1, "Failed", AAPTR_TRACER)
GRSH A 1 A_JumpIf(true, "CritCheck")
wait
Failed:
TNT1 A 0
stop
CritCheck:
TNT1 A 0
TNT1 A 1 A_JumpIf(CallACS("VC_GetTracerZ-FloorZ") > 0, "Explode")
stop
Explode:
//TNT1 A 0 A_Log("Target is in the air!") //debug
TNT1 A 0 A_PlaySoundEx("classes/criticalhit","Body")
TNT1 AAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityDropFX",random(-32,32),random(-32,32),random(0,64),random(5,8),0,random(-6,6),random(0,359))
TNT1 A 2 A_Explode(3,20,0,0,20)
stop
}
}

actor GravitymanShot2 : GravitymanShot
{
DamageType "GravitymanBusterAir"
}

actor GravityLand : Powerup{Powerup.Duration 7}
actor GravityFly : VCOnce{}
actor GravityFly2 : Powerup{Powerup.Duration 4}
actor GravityHitGroundFlag : VCOnce{}
actor GravityHoldActivate : Powerup{Powerup.Duration 5}
actor GravityCritFlag : Powerup{Powerup.Duration 6}
actor GravityDropFlag : Powerup{Powerup.Duration 3}
actor GravityDropCancel : Powerup{Powerup.Duration 6}
actor GravityUltDebuff : VCOnce{}
actor GravitySkyFlag : VCOnce{}
actor GravityFlightFlag : Powerup{Powerup.Duration 700}
actor GravityFlip : Powerup{Powerup.Duration 4}

Actor GravitymanCeilingChecker
{
PROJECTILE
+NOTARGETSWITCH
+THRUACTORS
Damage (0)
Speed 0
+RIPPER
Obituary "$OB_GRAVITYMAN3MEME"
Radius 12
Height 12
Renderstyle None
States
{
Spawn:
PLAY AAAA 1
Stop
Death:
TNT1 A 0
TNT1 A 0 A_JumpIf(z-ceilingz==0-radius, "Ceiling")
Stop
Ceiling:
TNT1 A 0 A_GiveToTarget("GravityHoldActivate",1)
stop
}
}

Actor GravitymanCeilingCheckerLoop : GravitymanCeilingChecker
{
States
{
Spawn:
PLAY AAAA 1
Stop
Death:
TNT1 A 0
TNT1 A 0 A_JumpIf(z-ceilingz==0-radius, "Ceiling")
//TNT1 A 0 A_TakeFromTarget("GravityFly",9)
Stop
Ceiling:
TNT1 A 0 A_GiveToTarget("GravityFly2",1)
stop
}
}

actor GravityM1Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("GravityFly",1,"Pickup2")
TNT1 A 0 A_FireCustomMissile("GravitymanShot",0,0,8,28)
stop
Pickup2:
TNT1 A 0 A_FireCustomMissile("GravitymanShot2",0,0,8,0)
stop
}
}

actor GravityM2Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("GravityFly",1,"Pickup2")
TNT1 A 0 A_JumpIfInventory("GravityHoldActivate",1,"Pickup3")
TNT1 A 0 A_FireCustomMissile("GravityManHold",0,0,0,8)
TNT1 A 0 A_TakeInventory("Base112Ammo",56)
stop
Pickup2:
TNT1 A 0 A_TakeInventory("Base112Ammo",56)
TNT1 A 0 A_FireCustomMissile("GravityManHoldFall",0,0,0,0)
TNT1 A 0 ThrustThingZ(0,28,1,0)
stop
Pickup3:
TNT1 A 0 A_FireCustomMissile("GravityManHoldCeiling",0,0,0,8)
stop
}
}

actor GravityManHold
{
PROJECTILE
-SOLID
+NOGRAVITY
+DONTBLAST
+NOINTERACTION
+NOCLIP
+THRUACTORS
damage 0
radius 1
height 1
damagetype "GravityManHold"
Obituary "$OB_GRAVITYMAN5"
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("GravityManHoldFX")
TNT1 A 1 A_Explode(2, 500, 0, 0, 500)
TNT1 A 0 A_SpawnItemEx("GravityManHoldFX2")
TNT1 A 1 A_Explode(2, 500, 0, 0, 500)
TNT1 A 0 A_SpawnItemEx("GravityManHoldFX3")
TNT1 A 1 A_Explode(2, 500, 0, 0, 500)
stop
}
}

actor GravityManHoldCeiling : GravityManHold
{
Obituary "$OB_GRAVITYMAN3"
States
{
Spawn:
TNT1 A 0
TNT1 AAA 1 A_Explode(2, 500, 0, 0, 500)
stop
}
}

actor GravityManHoldFall : GravityManHold
{
Obituary "$OB_GRAVITYMAN4"
damagetype "GravityManHoldDown"
States
{
Spawn:
TNT1 A 0
TNT1 AAA 1 A_Explode(2, 500, 0, 0, 500)
stop
}
}

actor GravityManHoldFX
{
	+NOINTERACTION
	+NOGRAVITY
	+CLIENTSIDEONLY
	+FORCEXYBILLBOARD
	-SOLID
	scale 2.5
	height 1
	radius 1
	reactiontime 60
	var int user_angle;
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 0 A_SetUserVar("user_angle", random(0, 6))
		SpawnLoop:
		TNT1 A 0 A_SpawnItemEx("GravityManHoldParticle", 300, 0, 512, 0, 0, -60, user_angle, SXF_ABSOLUTEANGLE|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 6)
		TNT1 A 0 A_Countdown
		loop
		Death:
		TNT1 A 0
		stop
	}
}

actor GravityManHoldFX2 : GravityManHoldFX
{
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 0 A_SetUserVar("user_angle", random(0, 6))
		SpawnLoop:
		TNT1 A 0 A_SpawnItemEx("GravityManHoldParticle", 200, 0, 512, 0, 0, -60, user_angle, SXF_ABSOLUTEANGLE|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 6)
		TNT1 A 0 A_Countdown
		loop
		Death:
		TNT1 A 0
		stop
	}
}

actor GravityManHoldFX3 : GravityManHoldFX
{
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 0 A_SetUserVar("user_angle", random(0, 6))
		SpawnLoop:
		TNT1 A 0 A_SpawnItemEx("GravityManHoldParticle", 100, 0, 512, 0, 0, -60, user_angle, SXF_ABSOLUTEANGLE|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 6)
		TNT1 A 0 A_Countdown
		loop
		Death:
		TNT1 A 0
		stop
	}
}

actor GravityManHoldParticle
{
	+CLIENTSIDEONLY
	+NOINTERACTION
	-SOLID
	+NOGRAVITY
	+BRIGHT
	renderstyle translucent
	alpha 0.9
	height 0
	radius 0
	Scale 5.0
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode")
		GHOL A 6
		GHOL AAAA 1  A_FadeOut(0.2)
		stop
	}
}

actor GravityRiseHitbox : BasicExplosion
{
Obituary "$OB_GRAVITYMAN1"
damagetype "GravityDrop"
States
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAAAA 0 A_SpawnItemEx("GravityDropFX",random(24,32),0,random(0,64),0,0,random(-3,0),random(0,359),0,128)
TNT1 A 1 A_Explode(20,40,0,0,40)
stop
}
}

actor GravityDropHitbox : BasicExplosion
{
Obituary "$OB_GRAVITYMAN1"
damagetype "GravityDrop"
States
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAAAA 0 A_SpawnItemEx("GravityDropFX",random(24,32),0,random(0,64),0,0,random(0,3),random(0,359),0,128)
TNT1 A 1 A_Explode(35,40,0,0,40)
stop
}
}

actor GravityDropFX : GravityManHoldParticle
{
scale 2.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GHOL AAAAAAAAA 1 A_SetScale(scalex-0.18,2.0)
stop
}
}

actor GravityDownFlipCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_RadiusGive("GravityAltDamageCheck",500,RGF_PLAYERS,1)
stop
}
}

actor GravityAltDamageCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_CheckFloor("Pickup2")
stop

Pickup2:
TNT1 A 0 A_GiveInventory("GravityManHoldDownDamage",1)
stop
}
}

actor GravityManHoldDownDamage : PowerProtection
{
	powerup.duration 6
	DamageFactor "GravityManHoldDown", 2.0
}

actor GravityDropProtect : PowerProtection
{
	powerup.duration 35
	DamageFactor "GravityDrop", 0.0
}

actor GravityUltCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(975, 1)==1,"Pickup2")
TNT1 A 0 A_GiveInventory("UltimateAttackItem4",1)
TNT1 A 0 A_GiveInventory("UltSoundWatcherSpawn4",1)
stop

Pickup2:
TNT1 A 0 A_GiveInventory("UltimateAttackItem5",1)
TNT1 A 0 A_GiveInventory("UltSoundWatcherSpawn5",1)
stop
}
}

actor GravityUltHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_FireCustomMissile("GravityGForce",0,0,0,8)
TNT1 A 0 A_GiveInventory("GravityFlightCheck",1)
TNT1 A 0 A_SpawnItemEx("GravityUltWatcher")
stop
}
}

actor GravityUltHoldFX
{
	+NOINTERACTION
	+NOGRAVITY
	+CLIENTSIDEONLY
	+FORCEXYBILLBOARD
	-SOLID
	scale 2.5
	height 1
	radius 1
	reactiontime 60
	var int user_angle;
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 0 A_SetUserVar("user_angle", random(0, 6))
		SpawnLoop:
		TNT1 A 0 A_SpawnItemEx("GravityUltHoldParticle", 1000, 0, 800, 0, 0, random(-60,-10), user_angle, SXF_ABSOLUTEANGLE|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("GravityUltHoldParticle", 750, 0, 800, 0, 0, random(-60,-10), user_angle, SXF_ABSOLUTEANGLE|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("GravityUltHoldParticle", 500, 0, 800, 0, 0, random(-60,-10), user_angle, SXF_ABSOLUTEANGLE|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("GravityUltHoldParticle", 250, 0, 800, 0, 0, random(-60,-10), user_angle, SXF_ABSOLUTEANGLE|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SetUserVar("user_angle", user_angle + 6)
		TNT1 A 0 A_Countdown
		loop
		Death:
		TNT1 A 0
		stop
	}
}

actor GravityUltHoldParticle : GravityManHoldParticle
{
renderstyle add
scale 6.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GHOL A 15
GHOL AAAAAAAAAAAAAAA 1 A_ScaleVelocity(0.9)
GHOL A 0 A_ScaleVelocity(0.9)
GHOL A 1 A_SetScale(scalex-1.0,6.0)
GHOL A 0 A_ScaleVelocity(0.9)
GHOL A 1 A_SetScale(scalex-1.0,6.0)
GHOL A 0 A_ScaleVelocity(0.9)
GHOL A 1 A_SetScale(scalex-1.0,6.0)
GHOL A 0 A_ScaleVelocity(0.9)
GHOL A 1 A_SetScale(scalex-1.0,6.0)
GHOL A 0 A_ScaleVelocity(0.9)
GHOL A 1 A_SetScale(scalex-1.0,6.0)
stop
}
}

actor GravityGForce : GravityManHold
{
Obituary "$OB_GRAVITYMAN6"
damagetype "GravityUlt"
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("GravityUltHoldFX")
TNT1 A 1 A_Explode(15, 1000, 0, 0, 1000)
stop
}
}

actor GravityUltWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
reactiontime 100
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("GyroUltCooldown",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_TakeFromTarget("LongUltimateAmmo",5)
TNT1 A 7 A_TakeFromTarget("MediumLongUltimateAmmo",4)
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0 A_TakeFromTarget("MediumLongUltimateAmmo",999)
TNT1 A 0 A_TakeFromTarget("LongUltimateAmmo",999)
stop
}
}

actor GravityFloatWatcher
{
Height 0
Radius 0
+NOINTERACTION
+NOCLIP
PROJECTILE
reactiontime 700
scale 7.0
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
TNT1 A 0 A_TransferPointer(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TARGET, AAPTR_TARGET)
TNT1 A 5
loopit:
TNT1 A 0 A_GiveInventory("GravityFloat",1,AAPTR_TRACER)
TNT1 A 0 A_GiveInventory("GravitySkyCheck",1,AAPTR_TRACER)
TNT1 A 0 A_JumpIfInventory("GravitySkyFlag",1,"Kars",AAPTR_TRACER)
TNT1 A 0 A_JumpIfInventory("GravityDropFlag",1,"DropLoop",AAPTR_TRACER)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "Death")
TNT1 A 0 A_Countdown
TNT1 A 1 A_Warp(AAPTR_TRACER, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 AAAAAAAA 0 A_SpawnItemEx("GravityFloatFX",random(24,32),0,random(0,64),0,0,random(-3,0),random(0,359),0,128)
loop
DropLoop:
TNT1 A 0 A_SpawnItemEx("GravityDropDamager",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
TNT1 A 0 A_GiveInventory("GravityDrop",1,AAPTR_TRACER)
TNT1 AAAAAAAA 0 A_SpawnItemEx("GravityDropFX",random(24,32),0,random(0,64),0,0,random(0,3),random(0,359),0,128)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "Death")
TNT1 A 0 A_Countdown
TNT1 A 1 A_Warp(AAPTR_TRACER, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInventory("GravityDropCancel",1,"Land",AAPTR_TRACER)
loop
Land:
TNT1 A 0 A_Quake(4,10,0,256)
TNT1 A 0 A_PlaySoundEx("weapon/gutstacklehit","Auto")
TNT1 AAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravitySlamRocks",random(24,32),0,0,random(2,4),0,random(1,3),random(0,359))
goto loopit
Kars:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "Death")
TNT1 A 1 A_SpawnItemEx("GravitySkyDamager",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
loop
Death:
TNT1 A 0 A_TakeInventory("GravityUltDebuff",999,0,AAPTR_TRACER)
stop
}
}

actor GravitySlamRocks : ThorSlamRocks
{
translation "208:208=[224,252,160]:[224,252,160]", "46:46=[252,152,56]:[252,152,56]", "8:8=183:183"
}

actor GravityFloat : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ThrustThingZ(0,5,0,0)
stop
}
}

actor GravityDrop : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_CheckFloor("Pickup2")
TNT1 A 0 ThrustThingZ(0,100,1,0)
stop
Pickup2:
TNT1 A 0 A_GiveInventory("GravityDropCancel",1)
stop
}
}

actor GravityFloatFX : GravityManHoldParticle
{
renderstyle add
scale 2.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GHOL AAAAAAAAA 1 A_SetScale(scalex-0.18,2.0)
stop
}
}

actor GravityDropDamager
{
PROJECTILE
Height 0
Radius 0
Damage (0)
+NOCLIP
+NOINTERACTION
DamageType "GravityUltDrop"
Obituary "$OB_GRAVITYMAN6"
PROJECTILE
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Warp(AAPTR_TRACER,0,0,CallACS("TracerHeightGet")/2,0,0)
TNT1 A 1 A_Quake(2,128,0,128)
TNT1 A 0 A_Explode(4,128,0,0,128)
stop
}
}

actor GravityUltHit : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("NoPushFlag",1,"Nope")
TNT1 A 0 ThrustThingZ(0,100,0,0)
TNT1 A 0 A_SpawnItemEx("GravityFloatWatcher")
TNT1 A 0 A_GiveInventory("GravityUltDebuff")
stop

Nope:
TNT1 A 0
stop
}
}

actor GravitySkyCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(CallACS("SkyTextureCheck")&&(z+height>=ceilingZ),"Sky")
TNT1 A 0 A_TakeInventory("GravitySkyFlag",1)
stop
Sky:
TNT1 A 0 A_GiveInventory("GravitySkyFlag",1)
stop
}
}

actor GravitySkyDamager
{
PROJECTILE
Height 0
Radius 0
Damage (0)
+NOCLIP
+NOINTERACTION
DamageType "GravitySky"
Obituary "$OB_GRAVITYMAN6"
PROJECTILE
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Warp(AAPTR_TRACER,0,0,CallACS("TracerHeightGet")/2,0,0)
TNT1 A 0 A_Explode(1000,64,0,0,64)
stop
}
}

actor GravityTwinkle : BasicClientSide
{
translation "110:110=251:251"
States
{
Spawn:
TRTP ABCDEFGFHF 2
stop
}
}

actor GravityFlightCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("LightTeamFlag",1,"L")
TNT1 A 0 A_JumpIfInventory("WilyTeamFlag",1,"W")
TNT1 A 0 A_JumpIfInventory("CossackTeamFlag",1,"C")
TNT1 A 0 A_JumpIfInventory("KingTeamFlag",1,"K")
goto X

L:
TNT1 A 0 A_RadiusGive("GravityFlightItemL",1000,RGF_PLAYERS,1)
stop

W:
TNT1 A 0 A_RadiusGive("GravityFlightItemW",1000,RGF_PLAYERS,1)
stop

C:
TNT1 A 0 A_RadiusGive("GravityFlightItemC",1000,RGF_PLAYERS,1)
stop

K:
TNT1 A 0 A_RadiusGive("GravityFlightItemK",1000,RGF_PLAYERS,1)
stop
}
}

actor GravityFlightItemL : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("LightTeamFlag",1,"Next")
stop

Next:
TNT1 A 0 A_GiveInventory("GravityFlightFlag",1)
TNT1 A 0 A_SpawnItemEx("GravityFlightWatcher")
stop
}
}

actor GravityFlightItemW : GravityFlightItemL
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("WilyTeamFlag",1,"Next")
stop
}
}

actor GravityFlightItemC : GravityFlightItemL
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("CossackTeamFlag",1,"Next")
stop
}
}

actor GravityFlightItemK : GravityFlightItemL
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("KingTeamFlag",1,"Next")
stop
}
}

actor GravityFlightWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
reactiontime 700
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 A 1 A_GiveToTarget("FlightActivator",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 AA 0 A_SpawnItemEx("GravityFloatFX",random(24,32),0,random(0,64),0,0,random(-3,0),random(0,359),0,128)
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0 A_TakeInventory("GravityFlightFlag",999)
TNT1 AAA 1 A_GiveToTarget("FlightDisabler",1)
stop
}
}

actor GravitySpeed : PowerSpeed
{
	+POWERSPEED.NOTRAIL
	Powerup.Duration 999
	Speed  2.5
}