actor GravityHoldBoss : BaseMM8BDMWep_CBM 
{
tag "$TAGC_5A"
dropitem "GravitySphereWepCDropped"
Weapon.AmmoUse 0
Weapon.AmmoGive 280
Obituary "$OB_GRAVITYBALL_OLD"
weapon.ammotype "SurpriseGravityAmmo"
weapon.ammotype2 "ScrewGravityAmmo"

States
{
Spawn:
C_05 A 1
loop
Ready:
5A_H A 0 ACS_ExecuteAlways(998,0,DYE_GRAVITYMAN)
5A_H A 0 A_GunFlash("Flash",1)
goto Ready1

Ready1a:
5A_H A 0 A_JumpIfInventory("SurpriseGravityAmmo",70,"Ready2a")
5A_H A 1 A_WeaponReady(8)
Ready1:
5A_H A 0 A_JumpIfInventory("CeilingFlag",1,"ReadyUp1a")
5A_H A 0 A_JumpIfInventory("SurpriseGravityAmmo",70,"Ready2")
5A_H A 1 A_WeaponReady(8)
5A_H A 0 A_GiveInventory("SurpriseGravityAmmo_RC",1)
5A_H A 0 A_GiveInventory("ScrewGravityAmmo_RC",1)
loop
Ready2a:
5A_H A 1 A_WeaponReady
Ready2:
5A_H A 0 A_JumpIfInventory("CeilingFlag",1,"ReadyUp2a")
5A_H A 1 A_WeaponReady
5A_H A 0 A_GiveInventory("SurpriseGravityAmmo_RC",1)
5A_H A 0 A_GiveInventory("ScrewGravityAmmo_RC",1)
loop

ReadyUp1a:
5A_H D 0 A_JumpIfInventory("SurpriseGravityAmmo",70,"ReadyUp2a")
5A_H D 1 A_WeaponReady(8)
ReadyUp1:
5A_H D 0 A_JumpIfInventory("GroundFlag",1,"Ready1a")
5A_H D 0 A_JumpIfInventory("SurpriseGravityAmmo",70,"ReadyUp2")
5A_H D 1 A_WeaponReady(8)
5A_H D 0 A_GiveInventory("SurpriseGravityAmmo_RC",1)
loop
ReadyUp2a:
5A_H D 1 A_WeaponReady
ReadyUp2:
5A_H D 0 A_JumpIfInventory("GroundFlag",1,"Ready2a")
5A_H D 1 A_WeaponReady
5A_H D 0 A_GiveInventory("SurpriseGravityAmmo_RC",1)
loop


Deselect:
5A_H AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
5A_H A 1 A_Lower
Loop
Select:
5A_H AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
5A_H A 1 A_Raise
Loop
Fire:
//TNT1 A 0 //A_JumpIfInventory("IsBot",1,"BotFire")
5A_H A 0 A_JumpIfInventory("CeilingFlag",1,"Fire2")
goto Fire1
Fire1:
5A_H A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
5A_H A 0 A_GiveInventory("GravitymanMain_CI",1)
5A_H BCBAA 3 A_GiveInventory("ScrewGravityAmmoFire_P",1)
goto Ready1
Fire2:
5A_H D 0 A_PlaySoundEx("weapon/mbuster","Weapon")
5A_H D 0 A_GiveInventory("GravitymanMain2_CI",1)
5A_H EFEDD 3 A_GiveInventory("ScrewGravityAmmoFire_P",1)
goto ReadyUp1





Altfire:
5A_H A 0 A_JumpIfInventory("CeilingFlag",1,"AltfireH2.a")
5A_H A 0 A_JumpIfInventory("GroundFlag",1,"AltfireH1.a")
Goto Ready1


AltfireH1:
5A_H A 1 A_GiveInventory("GravityChargeFlag_RC",1)
goto AltfireH1.a+1
AltfireH1.a:
5A_H A 0 A_JumpIfInventory("CeilingFlag",1,"AltfireH2")
5A_H A 0 A_JumpIfInventory("GravityChargeFlag",56,"AltfireH1.b")
5A_H A 0 A_GiveInventory("VivifyDelay8",1)
5A_H A 1 A_GiveInventory("GravityChargeFlag_RC",1)
5A_H A 0 A_Refire("AltfireH1.a")
goto Altfire1Quick
AltfireH1.b:
5A_H B 0 A_TakeInventory("VivifyDelay8",99)
goto AltfireH1.c+1
AltfireH1.c:
5A_H B 0 A_JumpIfInventory("CeilingFlag",1,"AltfireH2.b")
5A_H B 1 A_GiveInventory("ScrewGravityAmmo_RC",1)
5A_H B 0 A_Refire("AltfireH1.c")
goto Altfire1

AltfireH2:
5A_H D 1 A_GiveInventory("GravityChargeFlag_RC",1)
goto AltfireH2.a+1
AltfireH2.a:
5A_H D 0 A_JumpIfInventory("GroundFlag",1,"AltfireH1")
5A_H D 0 A_JumpIfInventory("GravityChargeFlag",56,"AltfireH2.b")
5A_H D 0 A_GiveInventory("VivifyDelay8",1)
5A_H D 1 A_GiveInventory("GravityChargeFlag_RC",1)
5A_H D 0 A_Refire("AltfireH2.a")
goto Altfire2Quick
AltfireH2.b:
5A_H E 0 A_TakeInventory("VivifyDelay8",99)
goto AltfireH2.c+1
AltfireH2.c:
5A_H E 0 A_JumpIfInventory("GroundFlag",1,"AltfireH1.b")
5A_H E 1 A_GiveInventory("ScrewGravityAmmo_RC",1)
5A_H E 0 A_Refire("AltfireH2.c")
goto Altfire2

Altfire1Quick:
5A_H G 0 A_GiveInventory("GravityChargeResync_P",1)
5A_H G 0 A_GiveInventory("VivifyDelay8",1)
5A_H G 0 A_Refire(1)

5A_H G 0 A_PlaySoundEx("wep_L/GravityHold","Weapon")
5A_H G 0 A_GiveInventory("GravitymanAlt1_CI",1)
5A_H G 1 ACS_ExecuteAlways(998,0,DYE_GRAVITYMANFLIP,5)
5A_H G 1 Offset(-20,6)
5A_H G 1 Offset(-47,-21)
5A_H H 2 Offset(-47,-21)
5A_H H 3 Offset(-47,-21)ACS_ExecuteAlways(998,0,DYE_GRAVITYMAN,1)
5A_H G 3 Offset(-47,-21)ACS_ExecuteAlways(998,0,DYE_GRAVITYMAN,1)
5A_H G 3 Offset(-20,6)
5A_H G 7 A_WeaponReady(14)
5A_H A 0 ACS_ExecuteAlways(998,0,DYE_GRAVITYMAN,1)
goto Ready1

Altfire2Quick:
5A_H I 0 A_GiveInventory("GravityChargeResync_P",1)
5A_H I 0 A_GiveInventory("VivifyDelay8",1)
5A_H I 0 A_Refire(1)

5A_H I 0 A_PlaySoundEx("wep_L/GravityHoldUp","Weapon")
5A_H I 0 A_GiveInventory("GravitymanAlt2_CI",1)
5A_H I 1 ACS_ExecuteAlways(998,0,DYE_GRAVITYMANFLIP,5)
5A_H I 1 Offset(20,58)
5A_H I 1 Offset(47,85)
5A_H J 2 Offset(47,85)
5A_H J 3 Offset(47,85)ACS_ExecuteAlways(998,0,DYE_GRAVITYMAN,1)
5A_H I 3 Offset(47,85)ACS_ExecuteAlways(998,0,DYE_GRAVITYMAN,1)
5A_H I 3 Offset(20,58)
5A_H I 7 A_WeaponReady(14)
5A_H D 0 ACS_ExecuteAlways(998,0,DYE_GRAVITYMAN,1)
goto ReadyUp1

Altfire1:
5A_H G 0 A_GiveInventory("GravityChargeResync_P",1)
5A_H G 0 A_GiveInventory("VivifyDelay8",1)
5A_H G 0 A_Refire(1)

5A_H G 0 A_PlaySoundEx("weapon/gravitysphere","Weapon")
5A_H G 1 A_GiveInventory("GravitymanAlt3_CI",1)
5A_H G 1 Offset(-20,6)
5A_H G 1 Offset(-47,-21)
5A_H H 2 Offset(-47,-21)
5A_H H 3 Offset(-47,-21)
5A_H G 3 Offset(-47,-21)
5A_H G 3 Offset(-20,6)
5A_H G 3 A_WeaponReady(14)
goto Ready1

Altfire2:
5A_H I 0 A_GiveInventory("GravityChargeResync_P",1)
5A_H I 0 A_GiveInventory("VivifyDelay8",1)
5A_H I 0 A_Refire(1)

5A_H I 0 A_PlaySoundEx("weapon/gravitysphere","Weapon")
5A_H I 1 A_GiveInventory("GravitymanAlt3_CI",1)
5A_H I 1 Offset(20,58)
5A_H I 1 Offset(47,85)
5A_H J 2 Offset(47,85)
5A_H J 3 Offset(47,85)
5A_H I 3 Offset(47,85)
5A_H I 3 Offset(20,58)
5A_H I 3 A_WeaponReady(14)
goto ReadyUp1



/*
Altfire:
5A_H A 0 A_JumpIfInventory("CeilingFlag",1,"Altfire2Quick")
//5A_H A 0 A_JumpIfInventory("GroundFlag",1,"Altfire1Quick")
Goto Altfire1Quick

Altfire1Quick:
5A_H G 0 A_GiveInventory("VivifyDelay8",1)
5A_H G 0 A_Refire(1)

5A_H G 0 A_PlaySoundEx("wep_L/GravityHold","Weapon")
5A_H G 0 A_GiveInventory("GravitymanAlt1_CI",1)
5A_H G 1 ACS_ExecuteAlways(998,0,DYE_GRAVITYMANFLIP,5)
5A_H G 1 Offset(-20,6)
5A_H G 1 Offset(-47,-21)
5A_H H 2 Offset(-47,-21)
5A_H H 3 Offset(-47,-21)ACS_ExecuteAlways(998,0,DYE_GRAVITYMAN,1)
5A_H G 3 Offset(-47,-21)ACS_ExecuteAlways(998,0,DYE_GRAVITYMAN,1)
5A_H G 3 Offset(-20,6)
5A_H G 3 A_WeaponReady(14)
5A_H A 0 ACS_ExecuteAlways(998,0,DYE_GRAVITYMAN,1)

goto Ready1

Altfire2Quick:
5A_H I 0 A_GiveInventory("VivifyDelay8",1)
5A_H I 0 A_Refire(1)

5A_H I 0 A_PlaySoundEx("wep_L/GravityHoldUp","Weapon")
5A_H I 0 A_GiveInventory("GravitymanAlt2_CI",1)
5A_H I 1 ACS_ExecuteAlways(998,0,DYE_GRAVITYMANFLIP,5)
5A_H I 1 Offset(20,58)
5A_H I 1 Offset(47,85)
5A_H J 2 Offset(47,85)
5A_H J 3 Offset(47,85)ACS_ExecuteAlways(998,0,DYE_GRAVITYMAN,1)
5A_H I 3 Offset(47,85)ACS_ExecuteAlways(998,0,DYE_GRAVITYMAN,1)
5A_H I 3 Offset(20,58)
5A_H I 3 A_WeaponReady(14)
5A_H D 0 ACS_ExecuteAlways(998,0,DYE_GRAVITYMAN,1)
goto ReadyUp1
*/
Flash:
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 0 A_JumpIfInventory("GravitySwitch",1,"Flash.SwitchUp")
TNT1 A 1
loop
Flash.SwitchUp:
TNT1 A 0 A_GiveInventory("GravityFlashSwitchUp_P",1)
TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_JumpZ,-15,1)
TNT1 A 0 A_GunFlash("Flash.Up")
goto Flash.Up
Flash.Up:
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 0 A_JumpIfInventory("GravitySwitch",1,"Flash.SwitchDown")
TNT1 A 1 A_GiveInventory("ReverseGravityThrust",1)
TNT1 A 0 A_JumpIfInventory("ScrewGravityAmmo",1,"Flash.Up")
goto Flash.SwitchDown
Flash.SwitchDown:
TNT1 A 0 A_GiveInventory("GravityFlashSwitchDown_P",1)
TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_JumpZ,15,1)
TNT1 A 0 A_GunFlash("Flash.Land")
goto Flash.Land

Flash.Land:
TNT1 A 0 A_JumpIf(z-floorz==0,"Flash.LandEnd")
TNT1 A 0 A_JumpIf(momz==0,"Flash.LandZ")
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 1
TNT1 A 0 A_JumpIfInventory("GravitySwitch",1,"Flash.SwitchUp")
loop
Flash.LandZ:
TNT1 A 1
TNT1 A 0 A_JumpIfInventory("GravitySwitch",1,"Flash.SwitchUp")
TNT1 A 0 A_JumpIf(z-floorz==0,"Flash.LandEnd")
TNT1 A 0 A_JumpIf(momz==0,"Flash.LandEnd")
goto Flash.Land+3

Flash.LandEnd:
TNT1 A 0 A_TakeInventory("GravitySwitchX",99)
TNT1 A 0 A_JumpIfInventory("GravitySwitch",1,"Flash.SwitchUp")
TNT1 A 0 A_TakeInventory("GravitySwitch",99)
goto Flash

BotFire:
TNT1 A 0 A_JumpIfInventory("CeilingFlag",1,"AltCheck")
TNT1 A 0 A_JumpIfInventory("ScrewGravityAmmo",280,"AltCheck")
TNT1 A 0 A_JumpIfInventory("ScrewGravityAmmo",140,"NormalFire")
FleeFire:
TNT1 A 0 A_GiveInventory("BotRetreatFlag",1)
5A_H A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
5A_H A 0 A_FireCustomMissile("GravityShot",0,0,8,0)
5A_H BCBAA 3

5A_H A 0 A_GiveInventory("ScrewGravityAmmo",20)
TNT1 A 0 A_TakeInventory("BotRetreatFlag",999)
goto Ready1
NormalFire:
TNT1 A 0
goto Fire+1
AltCheck:
TNT1 A 0 A_JumpIfCloser(750,"Altfire2Quick")
TNT1 A 0 //A_JumpIfInventory("CeilingFlag",1,2)
TNT1 A 0 A_Jump(64,"AltCheckFlip")
TNT1 A 0
goto Fire+1
AltCheckFlip:
TNT1 A 0 A_GiveInventory("GravitySwitch",1)
goto Ready1
}
}


actor ScrewGravityAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 280
+INVENTORY.IGNORESKILL
}

actor SurpriseGravityAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 280
+INVENTORY.IGNORESKILL
}

actor GravityChargeFlag : Inventory
{
inventory.amount 1
inventory.maxamount 56
}

actor GravitySwitch : OnceC{}
actor GravitySwitchX : OnceC{}
actor CeilingFlag : OnceC{}
actor GroundFlag : OnceC{}

actor OnCeilingFlag : OnceC{}

actor ReverseJumped : PowerUp
{
powerup.duration 7
}

actor PowerGravityCeilingSpeed : PowerSpeed
{
Speed 2.0
powerup.duration 5
+POWERSPEED.NOTRAIL
}

actor GravitySwitchItem : BasicClassItem
{
inventory.icon "GravIcon"
inventory.pickupmessage "Power up! Screw Gravity!"
Tag "Gravity Switch Toggle"
states
{
Spawn:
5A_H Z 1
loop
Use:
TNT1 A 0 //A_JumpIfInventory("GravitySwitchX",1,"No")
TNT1 A 0 A_JumpIfInventory("CeilingFlag",1,"Yes")
TNT1 A 0 A_JumpIfInventory("ScrewGravityAmmo",70,"Yes")
fail
Yes:
TNT1 A 0 A_GiveInventory("GravitySwitch",1)
fail
}
}

actor GravityFlashSwitchUp_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/upsidedown","Body")
TNT1 A 0 A_SetGravity(-0.8)
TNT1 A 0 A_GiveInventory("CeilingFlag",1)
TNT1 A 0 A_TakeInventory("GravitySwitch",99)
TNT1 A 0 A_TakeInventory("GroundFlag",99)
TNT1 A 0 A_TakeInventory("JumpCancler",9)
TNT1 A 0 A_TakeInventory("VivifyDelay5",99)
stop
}
}

actor GravityFlashSwitchDown_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/upsidedown","Body")
TNT1 A 0 A_GiveInventory("EnvironmentGravity",1)//A_SetGravity(0.8)
TNT1 A 0 A_GiveInventory("GroundFlag",1)
TNT1 A 0 A_GiveInventory("VivifyDelay5",1)
TNT1 A 0 A_GiveInventory("GravitySwitchX",1)
TNT1 A 0 A_GiveInventory("ScrewGravityAmmoResync_P",1)
TNT1 A 0 A_TakeInventory("GravitySwitch",99)
TNT1 A 0 A_TakeInventory("OnCeilingFlag",99)
TNT1 A 0 A_TakeInventory("CeilingFlag",99)
TNT1 A 0 A_TakeInventory("JumpCancler",9)
stop
}
}


actor SurpriseGravityAmmo_RC : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,"PickupR")
TNT1 A 0 A_GiveInventory("SurpriseGravityAmmo",1)
stop
PickupR:
TNT1 A 0 A_GiveInventory("SurpriseGravityAmmo",2)
stop
}
}

actor ScrewGravityAmmo_RC : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("CeilingFlag",1,"No")
TNT1 A 0 A_JumpIfInventory("GravitySwitchX",1,"No")
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,"PickupR")
TNT1 A 0 A_GiveInventory("ScrewGravityAmmo",1)
stop
PickupR:
TNT1 A 0 A_GiveInventory("ScrewGravityAmmo",2)
stop
No:
TNT1 A 0
stop
}
}
actor ScrewGravityAmmoFire_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("CeilingFlag",1,"No")
TNT1 A 0 A_JumpIfInventory("GravitySwitchX",1,"No")
TNT1 A 0 A_GiveInventory("ScrewGravityAmmo",1)
goto No
No:
TNT1 A 0 A_GiveInventory("SurpriseGravityAmmo",1)
stop
}
}

actor ScrewGravityAmmoResync_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("ScrewGravityAmmo",5)
TNT1 A 0 A_TakeInventory("ScrewGravityAmmo",18,1)
TNT1 A 0 A_TakeInventory("ScrewGravityAmmo",7)
stop
}
}

actor GravityChargeResync_P : CustomInventory //?
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("GravityChargeFlag",56)
TNT1 A 0 A_TakeInventory("GravityChargeFlag",99)
stop
}
}

actor GravityChargeFlag_RC : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,"PickupR")
TNT1 A 0 A_GiveInventory("GravityChargeFlag",1)
stop
PickupR:
TNT1 A 0 A_GiveInventory("GravityChargeFlag",2)
stop
}
}

actor ReverseGravityThrust : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("GroundFlag",1,4)//3
TNT1 A 0 A_SetGravity(-0.8)
//TNT1 A 0 ThrustThingZ(0,momz*4+4/*4*/,0,0/*1*/)
TNT1 A 0 A_ChangeVelocity(0,0,0.8)
TNT1 A 0 A_GiveInventory("CeilingCheck",1)
TNT1 A 0 A_TakeInventory("ScrewGravityAmmo",1,1)
stop
}
}

actor CeilingCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0
//TNT1 A 0 A_TakeInventory("JumpCancler",1)
TNT1 A 0 A_JumpIfInventory("GroundFlag", 1, "SpeedDown")
TNT1 A 0 A_JumpIf(z-ceilingz==0-56, "Contact")
goto SpeedDown
Contact:
TNT1 A 0 A_JumpIf(z-floorz<=0, "SpeedDown")
TNT1 A 0 //A_JumpIfInventory("OnCeilingFlag", 1, "SpeedUp")
TNT1 A 0 //A_PlaySoundEx("weapon/land","Voice")
TNT1 A 0 A_GiveInventory("OnCeilingFlag",1)
SpeedUp:
TNT1 A 0 A_GiveInventory("PowerGravityCeilingSpeed",1)
stop
SpeedDown:
TNT1 A 0 A_TakeInventory("OnCeilingFlag",99)
TNT1 A 0 A_TakeInventory("PowerGravityCeilingSpeed",99)
stop
}
}

actor ReverseJump : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("ReverseJumped",1,"NoJump")
TNT1 A 0 A_JumpIfInventory("OnCeilingFlag",1,"Jump")
stop
Jump:
TNT1 A 0 //ThrustThingZ(0,70,1,0)
//TNT1 A 0 ThrustThingZ(0,75,1,0)
//TNT1 A 0 A_Print("A jump!")
TNT1 A 0 A_ChangeVelocity(0,0,-16.0)
TNT1 A 0 A_GiveInventory("ReverseJumped",1)
TNT1 A 0 A_GiveInventory("JumpCancler",1)
TNT1 A 0 A_TakeInventory("OnCeilingFlag",99)
TNT1 A 0
stop
NoJump:
TNT1 A 0
stop
}
}


actor GravityShot
{
Translation "198:198=41:41"
PROJECTILE
damagetype "GravityM_Shot"
Obituary "$OB_GRAVITYBUSTER"
+FORCEXYBILLBOARD
+BRIGHT
Damage (140)
radius 8
height 8
Speed 50
scale 2.5
States
{
Spawn:
TNT1 A 1
5A_H P 1
wait
Death:
5A_H P 1
stop
}
}

actor GravityShotB : GravityShot{translation "198:198=74:74"}
actor GravityShotR : GravityShot{translation "198:198=41:41"}
actor GravityShotO : GravityShot{translation "198:198=128:128"}
actor GravityShotP : GravityShot{translation "198:198=232:232"}

actor GravityShotUp : GravityShot {Obituary "$OB_GRAVITYBUSTERUP"}
actor GravityShotUpB : GravityShotB {Obituary "$OB_GRAVITYBUSTERUP"}
actor GravityShotUpR : GravityShotR {Obituary "$OB_GRAVITYBUSTERUP"}
actor GravityShotUpO : GravityShotO {Obituary "$OB_GRAVITYBUSTERUP"}
actor GravityShotUpP : GravityShotP {Obituary "$OB_GRAVITYBUSTERUP"}

actor PainGravitySmackDown_P2 : CustomInventory
{
States
{
Spawn:
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,"No")
TNT1 A 0 A_SpawnItemEx("PainGravitySmackDown_H")
stop
No:
TNT1 A 0
stop
}
}

actor PainGravitySmackDown_H : BasicHelper
{
ReactionTime 16
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_GiveToTarget("FlightDisable",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"SuperDeath")
TNT1 A 0 A_CountDown
loop
Death:
TNT1 A 1 A_GiveToTarget("FlightEnable",1)
stop
SuperDeath:
TNT1 A 1
stop
}
}


actor GravityManHold1 : BasicExplosion
{
Translation "192:192=4:4", "198:198=41:41"
damagetype "GravityM_Down"
Obituary "$OB_GRAVITYHOLD_D"
RenderStyle None
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Explode(40,490,0,0,490)//98
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX2",random(392,490),0,random(245,490),0,0,-40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX2",random(294,392),0,random(245,490),0,0,-40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX2",random(196,294),0,random(245,490),0,0,-40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX2",random(98,196),0,random(245,490),0,0,-40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX2",random(0,98),0,random(245,490),0,0,-40,random(0,359),129)
TNT1 A 1
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX2",random(392,490),0,random(0,245),0,0,-40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX2",random(294,392),0,random(0,245),0,0,-40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX2",random(196,294),0,random(0,245),0,0,-40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX2",random(98,196),0,random(0,245),0,0,-40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX2",random(0,98),0,random(0,245),0,0,-40,random(0,359),129)
TNT1 A 1
stop
}
}

actor GravityManHold1B : GravityManHold1{translation "192:192=205:205", "198:198=74:74"}
actor GravityManHold1R : GravityManHold1{translation "192:192=171:171", "198:198=41:41"}
actor GravityManHold1O : GravityManHold1{translation "192:192=104:104", "198:198=128:128"}
actor GravityManHold1P : GravityManHold1{translation "192:192=229:229", "198:198=232:232"}

actor GravityManHold2 : BasicExplosion
{
Translation "192:192=4:4", "198:198=41:41"
damagetype "GravityM_Up"
Obituary "$OB_GRAVITYHOLD_U"
RenderStyle None
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Explode(40,490,0,0,490)//98
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX3",random(392,490),0,random(-245,-490),0,0,40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX3",random(294,392),0,random(-245,-490),0,0,40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX3",random(196,294),0,random(-245,-490),0,0,40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX3",random(98,196),0,random(-245,-490),0,0,40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX3",random(0,98),0,random(-245,-490),0,0,40,random(0,359),129)
TNT1 A 1
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX3",random(392,490),0,random(0,-245),0,0,40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX3",random(294,392),0,random(0,-245),0,0,40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX3",random(196,294),0,random(0,-245),0,0,40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX3",random(98,196),0,random(0,-245),0,0,40,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX3",random(0,98),0,random(0,-245),0,0,40,random(0,359),129)
TNT1 A 1
stop
}
}

actor GravityManHold2B : GravityManHold2{translation "192:192=205:205", "198:198=74:74"}
actor GravityManHold2R : GravityManHold2{translation "192:192=171:171", "198:198=41:41"}
actor GravityManHold2O : GravityManHold2{translation "192:192=104:104", "198:198=128:128"}
actor GravityManHold2P : GravityManHold2{translation "192:192=229:229", "198:198=232:232"}

actor GravityManHoldFX
{
-SOLID
+MISSILE
+DONTBLAST
+THRUACTORS
+CLIENTSIDEONLY
+DONTSPLASH
+BRIGHT
Damage (0)
radius 2
height 2
scale 2.5
States
{
Spawn:
5A_H Q 12
stop
}
}

actor GravityManHoldFX2 : GravityManHoldFX
{
+NOGRAVITY
States
{
Spawn:
5A_H QQQQQQQQQQQQ 1 A_SetScale(scaleX-0.15,scaleY+0.05)
stop
}
}
actor GravityManHoldFX3 : GravityManHoldFX2
{
+NOINTERACTION
}

actor GravityWellSpawner : FastProjectile
{
Translation "192:192=4:4", "198:198=41:41"
+DONTBLAST
+DONTREFLECT
+THRUACTORS
+THRUGHOST
+SKYEXPLODE
+EXPLODEONWATER
RenderStyle None
reactiontime 5
damage (0)
radius 8
height 8
speed 1000
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_CountDown
loop
Death:
TNT1 A 0 A_JumpIfCloser(1280,2)
TNT1 A 0 A_SetArg(3,Args[3]+1)
TNT1 A 0 A_JumpIfCloser(1024,2)
TNT1 A 0 A_SetArg(3,Args[3]+1)
TNT1 A 0 A_JumpIfCloser(768,2)
TNT1 A 0 A_SetArg(3,Args[3]+1)
TNT1 A 0 A_JumpIfCloser(512,2)
TNT1 A 0 A_SetArg(3,Args[3]+1)
TNT1 A 0 A_JumpIfCloser(256,2)
TNT1 A 0 A_SetArg(3,Args[3]+1)
TNT1 A 0 A_JumpIf(z-floorz<0-z+ceilingz, "Floor")
Ceiling:
TNT1 A 1 A_SpawnItemEx("GravityWellDown",0,0,0,0,0,0,Args[3],1+4)
stop
Floor:
TNT1 A 1 A_SpawnItemEx("GravityWellUp",0,0,0,0,0,0,Args[3],1+4)
stop
}
}

actor GravityWellSpawnerB : GravityWellSpawner{translation "192:192=205:205", "198:198=74:74"}
actor GravityWellSpawnerR : GravityWellSpawner{translation "192:192=171:171", "198:198=41:41"}
actor GravityWellSpawnerO : GravityWellSpawner{translation "192:192=104:104", "198:198=128:128"}
actor GravityWellSpawnerP : GravityWellSpawner{translation "192:192=229:229", "198:198=232:232"}


actor GravityWellDown_Boom : GravityManHold1
{
Obituary "$OB_GRAVITYBALL_D"
States
{
Spawn:
TNT1 A 0
TNT1 A 2 A_Explode(120,294,0,0,294)
stop
}
}

actor GravityWellUp_Boom : GravityManHold2
{
Obituary "$OB_GRAVITYBALL_U"
States
{
Spawn:
TNT1 A 0
TNT1 A 2 A_Explode(120,294,0,0,294)
stop
}
}

actor GravityWellDown
{
DeathSound "wep_L/GravityHold"

+MISSILE
+NOGRAVITY
+DONTBLAST
+DONTREFLECT
+THRUACTORS
+THRUGHOST
+CEILINGHUGGER
RenderStyle None
Mass 1
Damage (0)
radius 8
height 8
Scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetArg(3,Angle*8+24)
GRAM W 0 A_SpawnItemEx("GravityWellDownFX",0,0,-10,0,0,0,0,1+32768)
Goto Spawn2
Spawn2:
"####" "#" 0 A_SpawnItemEx("GravityManHoldFX3",random(196,294),0,random(0,122*mass),0,0,-10*mass,random(0,359),129)
"####" "#" 0 A_SpawnItemEx("GravityManHoldFX3",random(98,196),0,random(0,122*mass),0,0,-10*mass,random(0,359),129)
"####" "#" 0 A_SpawnItemEx("GravityManHoldFX3",random(0,98),0,random(0,122*mass),0,0,-10*mass,random(0,359),129)
"####" "#" 1 A_CountDownArg(3)
loop
Death:
TNT1 A 0 A_SpawnItemEx("GravityWellDown_Boom",0,0,-28,0,0,0,0,1)
goto DeathHoldFX
DeathHoldFX:
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX3",random(196,294),0,random(-32*mass,64*mass),0,0,-30*mass,random(0,359),129)//random(0,245),0,0,-40
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX3",random(98,196),0,random(-32*mass,64*mass),0,0,-30*mass,random(0,359),129)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GravityManHoldFX3",random(0,98),0,random(-32*mass,64*mass),0,0,-30*mass,random(0,359),129)
stop
}
}

actor GravityWellUp : GravityWellDown
{
DeathSound "wep_L/GravityHoldUp"
-CEILINGHUGGER
+FLOORHUGGER
Mass -1
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetArg(3,Angle*8+24)
GRAM K 0 A_SpawnItemEx("GravityWellUpFX",0,0,10,0,0,0,0,1+32768)
Goto Spawn2
Death:
TNT1 A 0 A_SpawnItemEx("GravityWellUp_Boom",0,0,28,0,0,0,0,1)
goto DeathHoldFX
}
}

actor GravityWellDownFX : BasicClientSide
{
+BRIGHT
States
{
Spawn:
XH0L G 0
XH0L G 0 A_SetArg(3,Args[3]/8)
Spawn2:
XH0L G 0 A_PlaySoundEx("wep_L/GSphereTravel","Weapon")
XH0L GGHHIIJJ 1 A_Weave(0,-2,0,1.25)
XH0L G 0 A_CountDownArg(3)
loop
Death:
//XH0L G 0 A_StopSound(1)
XH0L GHIJ 1 A_SetScale(scaleX-0.2,scaleY-0.4)
stop
}
}

actor GravityWellUpFX : GravityWellDownFX
{
States
{
Spawn:
XH0L K 0
XH0L K 0 A_SetArg(3,Args[3]/8)
Spawn2:
XH0L K 0 A_PlaySound("wep_L/GSphereTravel",1)
XH0L KKLLMMNN 1 A_Weave(0,2,0,-1.25)
XH0L K 0 A_CountDownArg(3)
loop
Death:
//XH0L K 0 A_StopSound(1)
XH0L KLMN 1 A_SetScale(scaleX-0.2,scaleY-0.4)
stop
}
}

actor GravitymanMain_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("GravityShot",0,0,-8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("GravityShotB",0,0,-8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("GravityShotR",0,0,-8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("GravityShotO",0,0,-8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("GravityShotP",0,0,-8,0)
goto Done
}
}


actor GravitymanMain2_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("GravityShotUp",0,0,8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("GravityShotUpB",0,0,8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("GravityShotUpR",0,0,8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("GravityShotUpO",0,0,8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("GravityShotUpP",0,0,8,0)
goto Done
}
}

actor GravitymanAlt1_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("GravityManHold1",0,0,0,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("GravityManHold1B",0,0,0,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("GravityManHold1R",0,0,0,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("GravityManHold1O",0,0,0,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("GravityManHold1P",0,0,0,0)
goto Done
Done:
TNT1 A 0 A_TakeInventory("SurpriseGravityAmmo",70,1)
stop
}
}

actor GravitymanAlt2_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("GravityManHold2",0,0,0,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("GravityManHold2B",0,0,0,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("GravityManHold2R",0,0,0,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("GravityManHold2O",0,0,0,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("GravityManHold2P",0,0,0,0)
goto Done
Done:
TNT1 A 0 A_TakeInventory("SurpriseGravityAmmo",70,1)
stop
}
}

actor GravitymanAlt3_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("GravityWellSpawner",0,0,0,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("GravityWellSpawnerB",0,0,0,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("GravityWellSpawnerR",0,0,0,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("GravityWellSpawnerO",0,0,0,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("GravityWellSpawnerP",0,0,0,0)
goto Done
Done:
TNT1 A 0 A_TakeInventory("SurpriseGravityAmmo",70,1)
stop
}
}
