//Mobility recoded
actor Uranus : HighArmorClass
{
Player.ScoreIcon "URANMUGS"
player.startitem "BaseFlagPack", 1
player.displayname "Uranus"
player.soundclass "Uranusc"
player.startitem "DeepDiggerBoss"
player.startitem "UltimateAttackItem3"
player.startitem "UltSoundWatcherSpawn3"
player.startitem "Base56Ammo", 56
player.startitem "IsFromGB5"
player.viewheight 52
player.jumpz 10
States
{
Spawn:
URAN B 0
URAN B 1 A_JumpIf(z-floorz>0, "Jumping")
URAN A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Spawn2")
URAN A 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+2

Spawn2:
URAN L 0 A_JumpIf(momx>0.01||momy>0.01||momx<-0.01||momy<-0.01,"See2")
URAN L 1 A_JumpIf(z-floorz>0, "Jumping2")
URAN G 0 A_JumpIf(momx>0.01||momy>0.01||momx<-0.01||momy<-0.01,"See2")
URAN G 1 A_JumpIf(z-floorz>0, "Jumping2")
Goto Spawn2+2

See:
URAN B 0 A_JumpIfInventory("BaseCustomFlag1",1,"See2")
URAN BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+1

See2:
URAN LLLLLMMMMMNNNNNOOOOO 1 A_JumpIf(z-floorz>0, "Jumping2")
Goto Spawn2+2

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

Jumping2:
URAN R 1 A_JumpIf(z-floorz<=0, "Spawn2")
wait

Missile:
URAN FFFFFFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile")

Missile2:
URAN GGGG 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
Goto Spawn2+2

JumpingMissile:
URAN TTTTTTTT 1 A_JumpIf(z-floorz<=0, "Missile")

JumpingMissile2:
URAN RRRR 1 A_JumpIf(z-floorz<=0, "Missile2")
Goto Jumping2

Animation1:
Missile.Throw:
URAN IIII 1 A_JumpIf(z-floorz>0, "JumpingMissile.Throw")

Missile2.Throw:
URAN IIII 1 A_JumpIf(z-floorz>0, "JumpingMissile2.Throw")
Goto Spawn+2

JumpingMissile.Throw:
URAN VVVV 1 A_JumpIf(z-floorz<=0, "Missile.Throw")

JumpingMissile2.Throw:
URAN VVVV 1 A_JumpIf(z-floorz<=0, "Missile2.Throw")
goto Jumping

Animation2:
Missile.BullHorns:
URAN J 3

BullHornsLoop:
URAN K 1
TNT1 A 0 A_JumpIf(z-floorz<=0, "BulHornsLand")
loop

BulHornsLand:
URAN J 12
Goto Spawn+1

Animation3:
Missile.ThrowOpponent:
URAN SSSSSSSSSSSSSSSSS 1 A_JumpIf(z-floorz>0, "JumpingMissile.ThrowOpponent")

Missile2.ThrowOpponent:
URAN IIIIIIIIIIIII 1 A_JumpIf(z-floorz>0, "JumpingMissile2.ThrowOpponent")
Goto Spawn+1

JumpingMissile.ThrowOpponent:
URAN WWWWWWWWWWWWWWWWW 1 A_JumpIf(z-floorz<=0, "Missile.ThrowOpponent")

JumpingMissile2.ThrowOpponent:
URAN VVVVVVVVVVVVV 1 A_JumpIf(z-floorz<=0, "Missile2.ThrowOpponent")
goto Jumping

ClassPain:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"ClassPain2")
URAN HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
ClassPain2:
URAN PPPPPPPPPP 2 A_SpawnItem("PainFX",0,3)
Goto Spawn2+1

ClassDeath:
URAN H 0 A_JumpIfInventory("BaseCustomFlag1",1,"ClassDeath2")
URAN H 20 ACS_ExecuteAlways(999,0,0)
URAN H 0 A_PlayerScream
URAN H 0 A_SpawnItemEx("FakeDeathFXMMV", 0, 0, 32, 0, 0, 0, 0, 1)
NOFX A 1 A_CheckPlayerDone
wait
ClassDeath2:
URAN P 20 ACS_ExecuteAlways(999,0,0)
URAN P 0 A_PlayerScream
URAN P 0 A_SpawnItemEx("FakeDeathFX", 0, 0, 32)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
CUTM H 0 A_JumpIfInTargetInventory("DeepDiggerWepM",1,2)
CUTM H 0 A_GiveToTarget("WeaponGetter")
CUTM H 0 A_GiveToTarget("DeepDiggerWepM")
goto ClassDeath
}
}

Actor DeepDiggerBoss : VCBaseWeapon
{
-THRUACTORS
weapon.ammotype "BaseAltfireAmmo"
Obituary "$OB_URANUS1"
const int BULLHORN_IMPALED_PITCH = 275;
const int BULLHORN_IMPALED_DIST = 70;
const int DEEP_DESTROYER_X_OFFSET = 32;
States
{
Ready:
TNT1 A 0 A_JumpIfInventory("BullHornsCooldown",1,"Ready3")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Ready2")
URAH A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56))
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") 
URAH A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56))
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") 
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",1)
Goto Ready
Ready2:
URAH L 1 A_WeaponReady(WRF_NOSECONDARY)
wait
Ready3:
URAH A 1 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
URAH A 1 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",1)
TNT1 A 0 A_JumpIfInventory("BullHornsCooldown",1,"Ready3")
Goto Ready
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
URAH A 1 A_Lower
Loop
Select:
URAH A 0
URAH A 0 ACS_ExecuteAlways(991,0,5966)
URAH A 12 A_WeaponReady(14)
goto Ready
Fire:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"ThrowBlock")
URAH HH 1 A_JumpIfInventory("BaseCustomFlag1",1,"ThrowBlock")
TNT1 A 0 A_PlaySoundEx("weapon/deepdiggerdig", "weapon")
URAH IJL 2 A_GiveInventory("BaseCustomFlag1",1)
URAH L 15
Goto Ready2
ThrowBlock:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
TNT1 A 0 A_PlaySoundEx("weapon/deepdiggerthrow","Weapon")
TNT1 A 0 A_FireCustomMissile("DeepDiggerSD",0,0,12,12)
URAH MNFFFFFFFFGA 2 A_TakeInventory("BaseCustomFlag1",999)
Goto Ready
Altfire:
RATU A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_GiveInventory("BaseCustomFlag2")
TNT1 A 0 A_PlaySoundEx("weapon/superarmuse","Weapon")
TNT1 A 0 A_TakeInventory("SuplexID",999)
HAZH D 0 A_TakeInventory("UnSolid",1)
HAZH D 0 A_ChangeFlag("SOLID",0)
HAZH D 0 A_ChangeFlag("PICKUP",0)
TNT1 A 0 A_ChangeFlag("THRUACTORS",1)
TNT1 A 0 A_Stop
TNT1 A 0 A_GiveInventory("UranusIsLunging",1)
TNT1 A 0 A_Recoil(CallACS("VC_XYMob",-45))
TNT1 A 0 ThrustThingZ(0,35,0,1)
URAH R 0 A_GiveInventory("UranusM2AmmoTaker",1)
URAH R 1 A_SpawnItemEx("UranusGrabberCheck",8,0,-8,momx,momy,momz,0,8) TNT1 A 0 A_JumpIfInventory("SuplexID",1,"BullHornSuplex")
URAH R 1 A_SpawnItemEx("UranusGrabberCheck",8,0,-8,momx,momy,momz,0,8) TNT1 A 0 A_JumpIfInventory("SuplexID",1,"BullHornSuplex")
HAZH D 0 A_ChangeFlag("THRUACTORS",0)
DRIA A 0 A_SpawnItemEx("ReSolidifier")
TNT1 A 0 A_ChangeFlag("PICKUP",1)
URAH S 1 A_SpawnItemEx("BullHornHitBox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInventory("SuplexID",1,"BullHornSuplex")
URAH S 1 A_SpawnItemEx("BullHornHitBox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInventory("SuplexID",1,"BullHornSuplex")
URAH T 1 A_SpawnItemEx("BullHornHitBox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInventory("SuplexID",1,"BullHornSuplex")
URAH T 1 A_SpawnItemEx("BullHornHitBox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInventory("SuplexID",1,"BullHornSuplex")
BullHornLoop:
URAH T 1 A_SpawnItemEx("BullHornHitBox",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(z-floorz<=0, "BullLand")
loop
BullHornSuplex:
TNT1 A 0 A_GiveInventory("StunImmunity")
URAH A 0 A_GiveInventory("UranusGrabHandler",1)
URAH TSSS 1 A_Jumpif(CallACS("cbm_ZangiefGrab",BULLHORN_IMPALED_PITCH,angle*256/360,BULLHORN_IMPALED_DIST)==0,"SuplexEscape")
BullHornSuplexLoop:
TNT1 A 0 A_Jumpif(CallACS("cbm_ZangiefGrab",BULLHORN_IMPALED_PITCH,angle*256/360,BULLHORN_IMPALED_DIST)==0,"SuplexEscape")
URAH S 1 A_JumpIf(z-floorz<=0, "BullLandSuplex")
loop
BullLand:
TNT1 AA 0 A_PlaySoundEX("weapon/hardquake","Weapon")
TNT1 A 0 A_SpawnItemEx("UranusQuakeRadius")
TNT1 AAAAAAAAAA 0 A_SpawnItemEx("UranusQuakeDebris",random(32,160),0,0,0,0,random(5,20),random(0,360))
TNT1 A 0 A_Quake(2,25,0,200)
URAH SSS 1 Offset(0, 32)A_Stop
URAH S 1 Offset(0, 37)A_Stop
URAH S 1 Offset(0, 42)A_Stop
URAH S 1 Offset(0, 47)A_Stop
URAH SSS 1 Offset(0, 42)A_Stop
URAH SSS 1 Offset(0, 37)A_Stop
URAH SSSS 1 Offset(0, 32)A_Stop
URAH SSSRRRAA 1 A_Stop
Goto EndAlt
BullLandSuplex:
URAH S 0 A_GiveInventory("UranusLandHandler",1)
URAH S 1 Offset(0,32) A_Jumpif(CallACS("cbm_ZangiefGrab",BULLHORN_IMPALED_PITCH,angle*256/360,BULLHORN_IMPALED_DIST)==0,"SuplexEscape")
TNT1 A 0 A_GunFlash
URAH S 1 Offset(0, 42)A_Jumpif(CallACS("cbm_ZangiefGrab",BULLHORN_IMPALED_PITCH,angle*256/360,BULLHORN_IMPALED_DIST)==0,"SuplexEscape")
URAH S 1 Offset(0, 42)A_Jumpif(CallACS("cbm_ZangiefGrab",BULLHORN_IMPALED_PITCH,angle*256/360,BULLHORN_IMPALED_DIST)==0,"SuplexEscape")
URAH S 1 Offset(0, 32)A_Jumpif(CallACS("cbm_ZangiefGrab",BULLHORN_IMPALED_PITCH,angle*256/360,BULLHORN_IMPALED_DIST)==0,"SuplexEscape")
URAH HIJLLLLL 1 A_Jumpif(CallACS("cbm_ZangiefGrab",BULLHORN_IMPALED_PITCH,angle*256/360,BULLHORN_IMPALED_DIST)==0,"SuplexEscape")
TNT1 A 0 A_GiveInventory("UranusThrowHandler",1)
URAH MMNN 1 A_TakeInventory("UranusIsGrabbing",999)
URAH FFFFFFFFGA 2
URAH AA 1 A_JumpIfInventory("UranusThrowConfirm",1,"EndAlt")
SuplexEscape:
URAH A 1 A_GiveInventory("UranusThrowCancelHandler",1)
EndAlt:
URAH A 1 A_GiveInventory("UranusThrowEndHandler",1)
Goto Ready
UltimateAttack:
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,112)
TNT1 A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
TNT1 A 0 A_GiveInventory("PowerUltBuildCooldown",1)
TNT1 A 0 ThrustThingZ(0, 40, 0, 1)
URAH D 1 Offset(0, 32)
URAH D 1 Offset(0, 42)A_JumpIf(z-floorz<=0, "DeepDestroyerLand")
URAH D 1 Offset(0, 52)A_JumpIf(z-floorz<=0, "DeepDestroyerLand")
URAH D 1 Offset(0, 62)A_JumpIf(z-floorz<=0, "DeepDestroyerLand")
URAH D 1 Offset(0, 72)A_JumpIf(z-floorz<=0, "DeepDestroyerLand")
UltHold:
URAH D 1 Offset(0, 72)
TNT1 A 0 A_JumpIf(z-floorz<=0, "DeepDestroyerLand")
Goto UltHold
DeepDestroyerLand:
TNT1 A 0 A_PlaySoundEx("weapon/WilyPressCrush","Auto")
TNT1 A 0 A_Quake(4,70,0,600)
TNT1 A 0 A_SpawnItemEx("DeepDestroyerRegiveUlt")
TNT1 A 0 A_SpawnItemEx("FallingPillarsStart",100)
URAH D 1 Offset(0, 77)
URAH D 1 Offset(0, 52)
URAH D 1 Offset(0, 32) A_TakeInventory("UltAttackFlag",1)
Goto Ready
Flash:
TNT1 A 1 A_JumpIfInventory("CutterFlag",30,"End")
TNT1 A 0 A_Stop
TNT1 A 0 A_GiveInventory("CutterFlag",1)
loop
End:
TNT1 A 0 A_TakeInventory("CutterFlag",999)
stop
}
}

actor BullHornsCooldown : Ammo
{
	inventory.amount 1
	inventory.maxamount 105
	+INVENTORY.IGNORESKILL
}

actor BullHornsWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_TakeFromTarget("BullHornsCooldown",1)
TNT1 A 1 A_JumpIfInTargetInventory("BullHornsCooldown",1,"Spawn")
TNT1 A 1 A_JumpIfInTargetInventory("BullHornsCooldown",1,"Spawn")
Death:
TNT1 A 1
stop
}
}

actor DeepDestroyerRegiveUlt
{
PROJECTILE
+NOINTERACTION
+NOCLIP
-NOGRAVITY
Damage(0)
Height 1
Radius 1
Speed 0
States
{
Spawn: 
TNT1 A 70
TNT1 A 0 A_TakeFromTarget("PowerUltBuildCooldown",1)
stop
}
}

actor UranusIsLunging : VCOnce{}
actor UranusIsGrabbing : VCOnce{}
actor IsPerformingSuplex : VCOnceMore{}

actor RaThorHoldFlag : Inventory
{
inventory.amount 1
inventory.maxamount 70
}

actor UranusGrabberCheck
{
+MISSILE
+NOBLOCKMAP
+NOGRAVITY
+NOEXPLODEFLOOR
+DONTBLAST
+DONTREFLECT
+HITTRACER
+THRUGHOST
height 64
radius 64
scale 1.0
renderstyle none
states
{
Spawn:
TNT1 A 0
GUTS A 1
stop

Crash:
XDeath:
TNT1 A 0 A_ChangeFlag("THRUACTORS",1)
TNT1 A 0 A_CheckFlag("FLOORHUGGER","DeathK",8)
TNT1 A 0 A_CheckFlag("INVULNERABLE","DeathK",8)
TNT1 A 0 A_JumpIfInventory("NoPushFlag",1,"DeathK",8)
TNT1 A 0 A_JumpIfInventory("HSHSuctionFlag",1,"DeathK",8)
TNT1 A 0 A_JumpIfInTargetInventory("SuplexID",1,"DeathI")
TNT1 A 0 A_JumpIfInventory("IsPerformingSuplex",1,"DeathJ",8)
TERR A 1 A_JumpIf(ACS_NamedExecuteWithResult("cbm_istracerplayer")==1,"DeathCheck2")
stop

DeathCheck2:
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(975,1)==1,"DeathCheck3")
goto GiveSuplex

DeathCheck3:
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(143,ACS_ExecuteWithResult(147,0),1) == ACS_ExecuteWithResult(143,ACS_ExecuteWithResult(147,1),1),"DeathL")
goto GiveSuplex

GiveSuplex:
TNT1 A 0 A_ChangeFlag("THRUACTORS",1)
TNT1 A 0 A_CheckFlag("FLOORHUGGER","DeathK",8)
TNT1 A 0 A_JumpIfInTargetInventory("SuplexID",1,"DeathI")
TNT1 A 0 A_JumpIfInventory("IsPerformingSuplex",1,"DeathJ",8)
TNT1 A 0 A_GiveToTarget("IsPerformingSuplex",1)
TNT1 A 0 A_PlaySoundEx("weapon/uranusstab","Auto")
TNT1 A 0 A_GiveToTarget("UranusIsGrabbing",1)
TNT1 A 0 A_GiveToTarget("SuplexID",(ACS_ExecuteWithResult(147,1)-1000)+1)
TNT1 A 0 A_GiveToTarget("NoPushFlag",1)
TNT1 A 0 A_GiveInventory("UranusGrabProtector",1,8)
TNT1 A 0 A_GiveInventory("MovementFrozenGrab",1,8)
VENU A 1 A_GiveInventory("TempPitProtect_P",1,8)
Goto Carry

Carry:
TNT1 A 0 A_GiveInventory("TempPitProtect_P",1,8) TNT1 A 0 A_GiveInventory("MovementFrozenGrab",1,8)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") ICEM B 1 A_GiveInventory("TempPitProtect_P",1,8)
ICEM B 0 A_JumpIfInTargetInventory("UranusThrowConfirm",1,"StopCarry2") ICEM B 0 A_JumpIfInTargetInventory("UranusGrabCancel",1,"StopCarryTerrain")
ICEM B 1 A_JumpIfInTargetInventory("UranusIsGrabbing",1,1)
Goto StopCarry
TNT1 A 0 A_GiveInventory("TempPitProtect_P",1,8) TNT1 A 0 A_GiveInventory("MovementFrozenGrab",1,8)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") ICEM B 1 A_GiveInventory("TempPitProtect_P",1,8)
ICEM B 0 A_JumpIfInTargetInventory("UranusThrowConfirm",1,"StopCarry2") ICEM B 0 A_JumpIfInTargetInventory("UranusGrabCancel",1,"StopCarryTerrain")
ICEM B 1 A_JumpIfInTargetInventory("UranusIsGrabbing",1,1)
Goto StopCarry
TNT1 A 0 A_GiveInventory("TempPitProtect_P",1,8) TNT1 A 0 A_GiveInventory("MovementFrozenGrab",1,8)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") ICEM B 1 A_GiveInventory("TempPitProtect_P",1,8)
ICEM B 0 A_JumpIfInTargetInventory("UranusThrowConfirm",1,"StopCarry2") ICEM B 0 A_JumpIfInTargetInventory("UranusGrabCancel",1,"StopCarryTerrain")
ICEM B 1 A_JumpIfInTargetInventory("UranusIsGrabbing",1,"Carry")
Goto StopCarry

StopCarry:
TNT1 A 0 A_TakeInventory("UranusGrabProtector",1,0,8)
ICEM B 1 A_JumpIfInTargetInventory("UranusThrowConfirm",1,"StopCarry2")
ICEM B 1 A_JumpIfInTargetInventory("UranusThrowConfirm",1,"StopCarry2")
ICEM B 1 A_JumpIfInTargetInventory("UranusThrowConfirm",1,"StopCarry2")
ICEM B 1 A_JumpIfInTargetInventory("UranusThrowConfirm",1,"StopCarry2")
goto StopCarryTerrain

StopCarry2:
TNT1 A 0 A_TakeInventory("UranusGrabProtector",1,0,8)
TNT1 A 0 A_TakeFromTarget("IsPerformingSuplex",999)
HSHZ A 0 A_GiveInventory("UranusMovementReturnWatcherSpawn",1,8)
HSHZ A 1 A_GiveInventory("TempPitProtect_P",1,8)
stop

StopCarryTerrain:
TNT1 A 0 A_TakeInventory("UranusGrabProtector",1,0,8)
TNT1 A 0 A_TakeFromTarget("IsPerformingSuplex",999)
HSHZ A 0 A_GiveInventory("TempPitProtect_P",1,8)
GUTS AAA 1 A_GiveInventory("MovementReturnFailSafe",1,8)
stop

DeathI:
GEMI A 1 //A_LOG("FAILED, CAN'T GRAB SOMEONE BEING GRABBED!")
stop

DeathJ:
MERC A 1 //A_LOG("FAILED, CAN'T GRAB SOMEONE GRABBING!")
stop

DeathK:
MERC A 1 //A_LOG("FAILED, CAN'T GRAB SOMEONE DIGGING!")
stop

DeathL:
MERC A 1 //A_LOG("FAILED, CAN'T GRAB ALLIES!")
stop

Death:
TNT1 A 0 A_TakeInventory("UranusGrabProtector",1,8)
TOAM AAA 1 A_GiveInventory("MovementReturnFailSafe",1,8)
stop
}
}

actor ZangiefAngle : Inventory
{
inventory.amount 1
inventory.maxamount 255
}

actor UranusHoldFlag : Inventory
{
inventory.amount 1
inventory.maxamount 70
}

actor UranusSuplexReset : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("SuplexID",999)
TNT1 A 0 A_TakeInventory("ZangiefAngle",255)
TNT1 A 0 A_TakeInventory("RaThorHoldFlag",999)

TNT1 A 0 A_CheckFlag("SOLID","No")
HAZH D 0 A_ChangeFlag("THRUACTORS",0)
DRIA A 0 A_SpawnItemEx("ReSolidifier")
TNT1 A 0 A_ChangeFlag("PICKUP",1)
stop
No:
TNT1 A 0
stop
}
}

actor UranusAtomicThrow
{
Projectile
Scale 2.5
Height 6
Radius 6
Obituary "$OB_URANUS3"
damagetype "UranusThrow"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(7, 64, 0,  0, 64)
stop
}
}

actor UranusWallRush_CI : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("UranusWallRushImmune",1,"PickupNo")
TNT1 A 0 A_JumpIfInventory("NewWallSlam",1,"PickupNo")
TNT1 A 0 A_GiveInventory("NoNewWallSlam",1)
TNT1 A 0 A_GiveInventory("NewWallSlam",1)
TNT1 A 0 A_GiveInventory("WallSlamRealTimer",1)
TNT1 A 0 A_SpawnItemEX("UranusWallRushChecker")
stop
PickupNo:
TNT1 A 0
stop
}
}

actor UranusWallRushChecker : BaseWallRushChecker
{
DamageType "UranusSlam"
Obituary "$OB_URANUS2"
states
{
DeathCheck:
TNT1 A 0 //A_JumpIfInventory("NewWallSlam",1,"Death",AAPTR_TRACER)
TNT1 A 0 A_SpawnItemEx("RaThorWallBonk")
TNT1 A 0 A_GiveInventory("WallSlamTimer",1)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("UranusSlamRocks",random(-8,8),random(-8,8),random(-8,8),random(-8,8),random(-8,8),random(-8,8))
TNT1 A 0 A_Quake(2,18,0,256)
TNT1 A 0 A_PlaySoundEx("misc/quake","Body")
TNT1 A 0 A_PlaySoundEx("weapon/wallrush","Weapon")
TNT1 A 0 A_Warp(AAPTR_TRACER,0,0,CallACS("TracerHeightGet")/2,0,0)
TNT1 A 0 A_Explode(29,12,0,0,12)
TNT1 A 18 A_GiveInventory("MovementReturnFailSafe",1,AAPTR_TRACER)
Death:
TNT1 AA 1 A_GiveInventory("MovementReturnFailSafe",1,AAPTR_TRACER) 
stop
}
}

actor UranusSlamRocks : ThorSlamRocks
{
translation "208:208=211:211", "46:46=216:216", "8:8=183:183"
}

Actor UranusWallRushImmune : PowerProtection
{
	Powerup.Duration 53
	DamageFactor "UranusSlam", 0.0
}

actor BullTossFlinger
{
//+SERVERSIDEONLY
PROJECTILE
+NOINTERACTION
+NOCLIP
+DONTBLAST
damage 0
radius 1
height 1
speed 0
var int user_force;
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("CannotBeMoved",1,"Death")
TNT1 A 0 A_SetUserVar("user_force",-30)
Spawn2:
TNT1 A 0 A_TransferPointer(AAPTR_TARGET,AAPTR_DEFAULT,AAPTR_TARGET,AAPTR_TRACER) //target's target to self's tracer
TNT1 A 0 A_FaceTracer
TNT1 A 0 ThrustThing(angle*256/360,user_force,1,ACS_ExecuteWithResult(257,0))
stop
Death:
TNT1 A 0
stop
}
}

actor DeepDiggerSD
{
PROJECTILE
damagetype "Uranus"
Obituary "$OB_URANUS1"
Damage (30)
Radius 16
Height 16
Speed 45
scale 2.5
const int DIGGER_Y_OFFSET = 20;
const int DIGGER_SPEED = 20;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
URNS A 1
Goto Spawn+2
XDeath:
TNT1 A 0 A_PlaySoundEx("weapon/deepdiggerbreak", "auto")
TNT1 AAAAAAAA 0 A_SpawnItemEx("DeepDiggerDebrisFX",0,0,0,random(0,5),0,random(5,15),random(0,360),1)
TNT1 A 2
stop
Death:
TNT1 A 0 A_PlaySoundEx("weapon/deepdiggerbreak", "auto")
TNT1 A 0 A_SpawnItemEx("DeepDiggerDebris",0,DIGGER_Y_OFFSET,0,DIGGER_SPEED,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("DeepDiggerDebris",0,-DIGGER_Y_OFFSET,0,DIGGER_SPEED,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("DeepDiggerDebris",0,DIGGER_Y_OFFSET,0,DIGGER_SPEED,DIGGER_SPEED,0,0,1)
TNT1 A 0 A_SpawnItemEx("DeepDiggerDebris",0,-DIGGER_Y_OFFSET,0,DIGGER_SPEED,-DIGGER_SPEED,0,0,1)
TNT1 A 0 A_SpawnItemEx("DeepDiggerDebris",0,DIGGER_Y_OFFSET,0,-DIGGER_SPEED,DIGGER_SPEED,0,0,1)
TNT1 A 0 A_SpawnItemEx("DeepDiggerDebris",0,-DIGGER_Y_OFFSET,0,-DIGGER_SPEED,-DIGGER_SPEED,0,0,1)
TNT1 A 0 A_SpawnItemEx("DeepDiggerDebris",0,DIGGER_Y_OFFSET,0,-DIGGER_SPEED,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("DeepDiggerDebris",0,-DIGGER_Y_OFFSET,0,-DIGGER_SPEED,0,0,0,1)
TNT1 A 2
stop
}
}

actor DeepDiggerDebris
{
PROJECTILE
damagetype "UranusBit"
Obituary "$OB_URANUS1"
Damage (4)
Radius 16
Height 16
scale 2.5
States
{
Spawn:
URNS B 1
loop
Death:
XDeath:
TNT1 A 0
stop
}
}

actor DeepDiggerDebrisFX
{
-SOLID
+MISSILE
+THRUACTORS
+CLIENTSIDEONLY
+BOUNCEONWALLS
+BOUNCEONFLOORS
+BOUNCEONCEILINGS
+CANBOUNCEWATER
+THRUSPECIES
bouncecount 2
Species "UranusRock"
damage 0
Height 16
Radius 16
scale 2.5
Speed 25
States
{
Spawn:
URNS BZ 2
loop
Death:
XDeath:
TNT1 A 0
stop
}
}

actor BullHornHitBox
{
species "DustManType"
+THRUSPECIES
PROJECTILE
+DONTBLAST
+DONTREFLECT
-NOBLOCKMAP
damagetype "UranusAlt"
Obituary "$OB_URANUS4"
damage (30)
Radius 32
Height 64
Speed 0
scale 2.5
States
{
Spawn:
TNT1 A 1 
stop
Death:
XDeath:
TNT1 A 0
stop
}
}

actor UranusQuakeDebris : DeepDiggerDebrisFX {}

actor UranusQuakeRadius
{
PROJECTILE
+FLOORHUGGER
+NOINTERACTION
+NOCLIP
Damage(0)
Height 1
Radius 1
Speed 0
States
{
Spawn:
TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,18) TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,36)
TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,54) TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,72)
TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,90) TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,108)
TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,126) TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,144)
TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,162) TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,180)
TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,198) TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,216)
TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,234) TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,254)
TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,270) TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,288)
TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,306) TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,324)
TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,342) TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusRange",0,0,0,0,0,0,360)
stop
}
}

actor BullHornsQuakeRadiusRange
{
PROJECTILE
+FLOORHUGGER
+NOINTERACTION
+NOCLIP
Damage(0)
Height 1
Radius 1
Speed 0
States
{
Spawn:
TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusExplode",18) TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusExplode",36)
TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusExplode",54) TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusExplode",72)
TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusExplode",90) TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusExplode",108)
TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusExplode",126) TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusExplode",144)
TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusExplode",162) TNT1 A 0 A_SpawnItemEx("BullHornsQuakeRadiusExplode",180)
stop
}
}

actor BullHornsQuakeRadiusExplode
{
species "DustManType"
+THRUSPECIES
PROJECTILE
+DONTBLAST
+DONTREFLECT
-NOBLOCKMAP
damagetype "UranusQuake"
Obituary "$OB_URANUS5"
damage (1)
Radius 8
Height 16
Speed 0
scale 2.5
States
{
Spawn:
TNT1 A 1
stop
Death:
XDeath:
stop
}
}

actor BullHornsQuakeProtect : PowerProtection
{
	Powerup.Duration -1
	DamageFactor "UranusQuake", 0.0
}

Actor BullHornsProtect : PowerProtection
{
	Powerup.Duration -1
	DamageFactor "UranusAlt", 0.0
}

actor FallingPillarsStart
{
PROJECTILE
+FLOORHUGGER
+NOINTERACTION
+DONTBLAST
+RIPPER
Damage (0)
Height 1
Radius 1
const int OFS = 40;
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_TakeFromTarget("MediumUltimateAmmo",6)
TNT1 A 0 A_SpawnItemEx("FallingPillarsRow",OFS*0)
TNT1 A 0 A_SpawnItemEx("FallingPillarsRow",OFS*1)
TNT1 A 0 A_SpawnItemEx("FallingPillarsRow",OFS*2)
TNT1 A 0 A_SpawnItemEx("FallingPillarsRow",OFS*3)
TNT1 A 1
TNT1 A 0 A_JumpIfInTargetInventory("MediumUltimateAmmo",1,"Spawn")
stop
}
}

actor FallingPillarsRow
{
PROJECTILE
+NOINTERACTION
+DONTBLAST
+RIPPER
Damage (0)
Height 1
Radius 1
const int BLOCK_OFFSET = 40;
const int BLOCK_ASCEND = 70;
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("DeepDestroyerBegin",0,(BLOCK_OFFSET *  3),0,0,0,BLOCK_ASCEND,0)
TNT1 A 0 A_SpawnItemEx("DeepDestroyerBegin",0,(BLOCK_OFFSET *  2),0,0,0,BLOCK_ASCEND,0)
TNT1 A 0 A_SpawnItemEx("DeepDestroyerBegin",0,(BLOCK_OFFSET *  1),0,0,0,BLOCK_ASCEND,0)
TNT1 A 0 A_SpawnItemEx("DeepDestroyerBegin",0,(BLOCK_OFFSET *  0),0,0,0,BLOCK_ASCEND,0)
TNT1 A 0 A_SpawnItemEx("DeepDestroyerBegin",0,(BLOCK_OFFSET * -1),0,0,0,BLOCK_ASCEND,0)
TNT1 A 0 A_SpawnItemEx("DeepDestroyerBegin",0,(BLOCK_OFFSET * -2),0,0,0,BLOCK_ASCEND,0)
TNT1 A 0 A_SpawnItemEx("DeepDestroyerBegin",0,(BLOCK_OFFSET * -3),0,0,0,BLOCK_ASCEND,0)
stop
}
}

actor DeepDestroyerBegin
{
PROJECTILE
+SPECTRAL
+RIPPER
-DONTBLAST
+SKYEXPLODE
radius 2
height 8
States
{
Spawn:
TNT1 A 5
TNT1 A 0 A_SpawnItemEx("DeepDestroyer",0,0,0,0,0,-35)
stop
Death:
TNT1 A 0 A_SpawnItemEx("DeepDestroyer",0,0,-32,0,0,-35)
stop
}
}

actor DeepDestroyer
{
-NOGRAVITY
+RIPPER
+FORCEXYBILLBOARD 
+SKYEXPLODE
+SHOOTABLE
+INVULNERABLE
PROJECTILE
Radius 16
Height 16
scale 2.5
damagetype "UranusDeepDestroyer"
Obituary "$OB_URANUS6"
Damage (100)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
URNS C 1 
Goto Spawn+2
Death:
TNT1 A 0 A_Quake(2,2,0,200)
URNS C 2
stop
}
}
 
actor SuplexID : Inventory //ID of the player grabbed
{
inventory.amount 1
inventory.maxamount 64
}

actor ThrowOpponent : Inventory
{
inventory.amount 1
inventory.maxamount 2
}

actor UranusGrabHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ACS_NamedExecuteAlways("cbm_ZangiefStartGrab",0,CallACS("cbm_ZangiefCountInv",2)+999)
TNT1 A 0 A_GiveInventory("UranusIsLunging")
TNT1 A 0 A_GiveInventory("IsPerformingSuplex")
TNT1 A 0 A_TakeInventory("UranusIsLunging",999)
TNT1 A 0 A_GiveInventory("TempPitProtect_P")
TNT1 A 0 A_GiveInventory("BullHornsCooldown",105)
stop
}
}

actor UranusLandHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
TNT1 AA 0 A_PlaySoundEX("weapon/hardquake","Weapon")
TNT1 A 0 A_SpawnItemEx("UranusQuakeRadius")
TNT1 AAAAAAAAAA 0 A_SpawnItemEx("UranusQuakeDebris",random(32,160),0,0,0,0,random(5,20),random(0,360))
TNT1 A 0 A_Quake(2,25,0,200)
stop
}
}

actor UranusThrowHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/deepdiggerthrow","Weapon")
TNT1 A 0 A_TakeInventory("UranusIsGrabbing",999)
TNT1 A 0 A_TakeInventory("NoPushFlag",999)
TNT1 A 0 A_SpawnItemEx("UranusAtomicThrow",8,0,64)
TNT1 A 0 A_TakeInventory("UranusIsGrabbing",999)
TNT1 A 0 A_GiveInventory("BullHornsCooldown",105)
TNT1 A 0 A_SpawnItemEx("BullHornsWatcher")
stop
}
}

actor UranusThrowEndHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("UranusIsGrabbing",999)
TNT1 A 0 A_TakeInventory("NoPushFlag",999)
TNT1 A 0 A_TakeInventory("UranusIsLunging",999)
TNT1 A 0 A_GiveInventory("UranusSuplexReset",1)
TNT1 D 0 A_ChangeFlag("THRUACTORS",0)
TNT1 A 0 A_SpawnItemEx("ReSolidifier")
TNT1 A 0 A_ChangeFlag("PICKUP",1)
TNT1 A 0 A_TakeInventory("BaseCustomFlag2")
TNT1 A 0 A_TakeInventory("TempPitProtect_P")
stop
}
}

actor UranusThrowCancelHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("UranusGrabCancel",1)
stop
}
}

actor UranusGrabCancel : Powerup
{
Powerup.Duration 8
}

actor UranusThrowConfirm : Powerup
{
Powerup.Duration 70
}

Actor UranusMovementReturnWatcherSpawn : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("UranusMovementReturnWatcher")
stop
}
}

actor UranusMovementReturnWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
Renderstyle none
reactiontime 20
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0 A_TakeFromTarget("NoThirdFire")
TNT1 A 2 A_GiveToTarget("MovementReturnFailsafe",1)
stop
}
}

actor UranusAltCooldownGiver : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("BullHornsCooldown",1,"Nope")
TNT1 A 0 A_GiveInventory("BullHornsCooldown",70)
TNT1 A 0 A_SpawnItemEx("BullHornsWatcher2")
stop

Nope:
TNT1 A 0
stop
}
}

actor BullHornsWatcher2
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_TakeFromTarget("BullHornsCooldown",1)
TNT1 A 1 A_JumpIfInTargetInventory("BullHornsCooldown",1,"Spawn")
TNT1 A 1 A_JumpIfInTargetInventory("BullHornsCooldown",1,"Spawn")
Death:
TNT1 A 1
stop
}
}

actor UranusM2AmmoTaker : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",56)
stop
}
}

actor DeathRockCheck : NiceWallCheck
{
Radius 36
Height 36
decal WallBreak
states
{
Spawn:
PLAY A 1
stop
Crash:
XDeath:
TNT1 A 1
stop
Death:
TNT1 A 0 A_JumpIfInTargetInventory("CriticalDeath",1,"XDeath")
TNT1 A 0 A_GiveToTarget("CriticalDeath")
TNT1 A 0 A_SpawnItemEx("RaThorWallBonk")
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("BreakImpactDot",random(-40,40),random(-40,40),random(-40,40),random(-18,18),random(-18,18),random(-18,18))
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("WallDeathDust",random(0,40),0,random(0,48),frandom(0,2),0,frandom(-2,2),random(0,359),1)
TNT1 A 0 A_Quake(2,18,0,256)
TNT1 A 0 A_PlaySoundEx("weapon/dragonburst","Body")
TNT1 A 18 A_PlaySoundEx("weapon/thruwall","Weapon")
Stop
}
}

actor BreakImpactDot : BasicClientSide
{
+NOINTERACTION
reactiontime 70
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ThrustThingZ(0,5,1,1)
G1GC G 1 A_Countdown
TNT1 A 0 ThrustThingZ(0,5,1,1)
G1GC G 1 A_Countdown
TNT1 A 0 A_ChangeFlag("NOINTERACTION",0)
TNT1 A 0 A_Jump(32,"Death")
loop
Death:
GIGC AAAA 1 A_FadeOut(0.2)
stop
}
}


actor UranusGrabProtector : GrabProtectionBase
{
	DamageFactor "UranusThrow", 1.0
	DamageFactor "UranusAlt", 1.0
	DamageFactor "UranusQuake", 1.0
	DamageFactor "UranusSlam", 1.0
}