//Movement recoded
actor Mercury : SemiWeakArmorClass
{
Player.ScoreIcon "MERCMUGS"
player.startitem "BaseFlagPack", 1
player.displayname "Mercury"
player.soundclass "Mercuryc"
player.startitem "GrabBusterBoss"
player.startitem "UltimateAttackItem3"
player.startitem "UltSoundWatcherSpawn3"
player.startitem "Base56Ammo", 56
player.startitem "BaseAltfireAmmo", 112
player.startitem "IsFromGB5"
player.viewheight 48
player.jumpz 10
States
{
Spawn:
MERC B 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC B 1 A_JumpIf(z-floorz>0,"Jumping")
MERC A 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC A 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn+2

See:
MERC B 1 A_JumpIf(z-floorz>0,"Jumping") MERC B 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC B 1 A_JumpIf(z-floorz>0,"Jumping") MERC B 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC B 1 A_JumpIf(z-floorz>0,"Jumping") MERC B 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC B 1 A_JumpIf(z-floorz>0,"Jumping") MERC B 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC B 1 A_JumpIf(z-floorz>0,"Jumping") MERC B 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC C 1 A_JumpIf(z-floorz>0,"Jumping") MERC C 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC C 1 A_JumpIf(z-floorz>0,"Jumping") MERC C 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC C 1 A_JumpIf(z-floorz>0,"Jumping") MERC C 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC C 1 A_JumpIf(z-floorz>0,"Jumping") MERC C 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC C 1 A_JumpIf(z-floorz>0,"Jumping") MERC C 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC D 1 A_JumpIf(z-floorz>0,"Jumping") MERC D 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC D 1 A_JumpIf(z-floorz>0,"Jumping") MERC D 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC D 1 A_JumpIf(z-floorz>0,"Jumping") MERC D 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC D 1 A_JumpIf(z-floorz>0,"Jumping") MERC D 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC D 1 A_JumpIf(z-floorz>0,"Jumping") MERC D 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC E 1 A_JumpIf(z-floorz>0,"Jumping") MERC E 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC E 1 A_JumpIf(z-floorz>0,"Jumping") MERC E 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC E 1 A_JumpIf(z-floorz>0,"Jumping") MERC E 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC E 1 A_JumpIf(z-floorz>0,"Jumping") MERC E 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC E 1 A_JumpIf(z-floorz>0,"Jumping") MERC E 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
Goto Spawn+1

Jumping:
MERC I 0 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC I 1 A_JumpIf(z-floorz<=0,"Spawn")
loop

Missile:
MERC F 1 A_JumpIf(z-floorz>0,"JumpingMissile") MERC F 0 A_JumpIfInventory("GlobFormFlag",1,"GlobFormStart")
MERC F 1 A_JumpIf(z-floorz>0,"JumpingMissile") MERC F 0 A_JumpIfInventory("GlobFormFlag",1,"GlobFormStart")
MERC F 1 A_JumpIf(z-floorz>0,"JumpingMissile") MERC F 0 A_JumpIfInventory("GlobFormFlag",1,"GlobFormStart")
MERC F 1 A_JumpIf(z-floorz>0,"JumpingMissile") MERC F 0 A_JumpIfInventory("GlobFormFlag",1,"GlobFormStart")
MERC F 1 A_JumpIf(z-floorz>0,"JumpingMissile") MERC F 0 A_JumpIfInventory("GlobFormFlag",1,"GlobFormStart")
Missile2:
MERC GGGGG 1 A_JumpIf(z-floorz>0,"JumpingMissile2")
Goto Spawn+2

JumpingMissile:
MERC J 1 A_JumpIf(z-floorz<=0,"Missile") MERC J 0 A_JumpIfInventory("GlobFormFlag",1,"GlobFormStart")
MERC J 1 A_JumpIf(z-floorz<=0,"Missile") MERC J 0 A_JumpIfInventory("GlobFormFlag",1,"GlobFormStart")
MERC J 1 A_JumpIf(z-floorz<=0,"Missile") MERC J 0 A_JumpIfInventory("GlobFormFlag",1,"GlobFormStart")
MERC J 1 A_JumpIf(z-floorz<=0,"Missile") MERC J 0 A_JumpIfInventory("GlobFormFlag",1,"GlobFormStart")
MERC J 1 A_JumpIf(z-floorz<=0,"Missile") MERC J 0 A_JumpIfInventory("GlobFormFlag",1,"GlobFormStart")
JumpingMissile2:
MERC JJJJJ 1 A_JumpIf(z-floorz<=0,"Missile2")
Goto Jumping

GlobFormStart:
MERC NNNOOOPPPQQQ 1
GlobFormA1:
MERC RRR 1 A_JumpIfInventory("MercuryGlobCount",3,"GlobFormB1")
MERC R 1 A_JumpIfInventory("GlobFormFlag",1,"GlobFormA2")
Goto GlobFormEnd
GlobFormA2:
MERC SSS 1 A_JumpIfInventory("MercuryGlobCount",3,"GlobFormB2")
MERC S 1 A_JumpIfInventory("GlobFormFlag",1,"GlobFormA3")
Goto GlobFormEnd
GlobFormA3:
MERC TTT 1 A_JumpIfInventory("MercuryGlobCount",3,"GlobFormB3")
MERC T 1 A_JumpIfInventory("GlobFormFlag",1,"GlobFormA4")
Goto GlobFormEnd
GlobFormA4:
MERC SSS 1 A_JumpIfInventory("MercuryGlobCount",3,"GlobFormB4")
MERC S 1 A_JumpIfInventory("GlobFormFlag",1,"GlobFormA1")
Goto GlobFormEnd

GlobFormB1:
MERC UUU 1
MERC U 1 A_JumpIfInventory("MercuryGlobCount",3,"GlobFormB2")
Goto GlobFormA2
GlobFormB2:
MERC VVV 1
MERC V 1 A_JumpIfInventory("MercuryGlobCount",3,"GlobFormB3")
Goto GlobFormA3
GlobFormB3:
MERC WWW 1
MERC W 1 A_JumpIfInventory("MercuryGlobCount",3,"GlobFormB4")
Goto GlobFormA4
GlobFormB4:
MERC VVV 1
MERC V 1 A_JumpIfInventory("MercuryGlobCount",3,"GlobFormB1")
Goto GlobFormA1

GlobFormEnd:
MERC QQQPPPOOONNN 1
Goto Spawn+2

GlobFormShift:
MERC NNNOOOPPPQQQPPPOOONNN 1 A_TakeInventory("GlobFormFlagUlt",1)
Goto Spawn+2

ClassPain:
MERC H 0 A_JumpIfInventory("BasicArmor",1,"Splat0")
MERC H 0 A_SpawnItem("PainFX",0,3) MERC HH 1 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC H 0 A_SpawnItem("PainFX",0,3) MERC HH 1 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC H 0 A_SpawnItem("PainFX",0,3) MERC HH 1 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC H 0 A_SpawnItem("PainFX",0,3) MERC HH 1 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC H 0 A_SpawnItem("PainFX",0,3) MERC HH 1 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC H 0 A_SpawnItem("PainFX",0,3) MERC HH 1 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC H 0 A_SpawnItem("PainFX",0,3) MERC HH 1 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC H 0 A_SpawnItem("PainFX",0,3) MERC HH 1 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC H 0 A_SpawnItem("PainFX",0,3) MERC HH 1 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
MERC H 0 A_SpawnItem("PainFX",0,3) MERC HH 1 A_JumpIfInventory("GlobFormFlagUlt",1,"GlobFormShift")
Goto Spawn+1

Splat0: TNT1 A 1 A_Jump(256,"Splat1","Splat2","Splat3") wait
Splat1: TNT1 A 0 A_SpawnItemEx("LiquidMercuryGlob",0,0,0,Random(5,25),0,Random(5,10),Random(0,359),1)
Splat2: TNT1 A 0 A_SpawnItemEx("LiquidMercuryGlob",0,0,0,Random(5,25),0,Random(5,10),Random(0,359),1)
Splat3: TNT1 A 0 A_SpawnItemEx("LiquidMercuryGlob",0,0,0,Random(5,25),0,Random(5,10),Random(0,359),1)
Goto ClassPain+1

ClassDeath:
MERC H 20 ACS_ExecuteAlways(999,0,0)
MERC H 0 A_PlayerScream
MERC H 0 A_SpawnItemEx("FakeDeathFXMMV",0,0,32,0,0,0,0,1)
NOFX A 1 A_CheckPlayerDone
wait

WeaponGetM:
CUTM H 0 A_JumpIfInTargetInventory("GrabBusterWepM",1,2)
CUTM H 0 A_GiveToTarget("WeaponGetter")
CUTM H 0 A_GiveToTarget("GrabBusterWepM")
Goto ClassDeath
}
}

Actor GrabBusterBoss : VCBaseWeapon
{
weapon.ammotype "Base56Ammo"
weapon.ammotype2 "BaseAltfireAmmo"
Obituary "$OB_MERCURY1"
States
{
Ready:
MRCH A 0 A_JumpIfInventory("BasicArmor",1,"Ready2")
MRCH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) MRCH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
MRCH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) MRCH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
MRCH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) MRCH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
MRCH A 0 A_GiveInventory("Base56Ammo",1) MRCH A 0 A_GiveInventory("BaseAltfireAmmo",1)
loop
Ready2:
TNT1 A 0 A_JumpIfInventory("BasicArmor",1,1)
Goto UltEnd
MRCH M 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28))
MRCH M 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28))
MRCH M 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28))
MRCH M 0 A_GiveInventory("Base56Ammo",1) MRCH M 0 A_GiveInventory("BaseAltfireAmmo",1)
loop

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
MRCH A 1 A_Lower
Loop
Select:
TNT1 A 0 ACS_ExecuteAlways(971,0,5961)
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
MRCH A 1 A_Raise
Loop

Fire:
MRCH B 0 A_JumpIfInventory("BasicArmor",1,"Fire2")
MRCH B 2 A_GiveInventory("MercuryMainPickUp",1)
MRCH CCCBA 2
Goto Ready
Fire2:
MRCH N 2 A_GiveInventory("MercuryMainPickUp",1)
MRCH OOONM 2
Goto Ready2

Altfire:
MRCH D 0 A_JumpIfInventory("NoAltfire",1,"Ready")
MRCH D 0 A_CheckFloor(1)
Goto Ready
MRCH D 0 A_Stop
MRCH D 0 SetPlayerProperty(0,1,0)
MRCH D 0 A_ChangeFlag("PICKUP",False)
MRCH D 0 A_ChangeFlag("THRUACTORS",True)
MRCH D 0 A_GiveInventory("CannotBeMoved")
MRCH D 0 A_GiveInventory("InvProtection",1)
MRCH D 0 A_ChangeFlag("INVULNERABLE",True)
MRCH D 0 A_PlaySoundEx("weapon/mercurymelt","Weapon")
TNT1 A 0 A_GiveInventory("GlobFormFlag",1)
MRCH D 0 A_JumpIfInventory("BasicArmor",1,"Altfire2")
MRCH DDEEFF 1
Goto LiquifyFormShrink
Altfire2:
MRCH PPQQRR 1
LiquifyFormShrink:
MRCH G 1 ACS_NamedExecute("VC_ViewHeight",0,44) TNT1 A 0 A_SpawnItemEx("MercuryGlobDamager2")
MRCH H 1 ACS_NamedExecute("VC_ViewHeight",0,40) TNT1 A 0 A_SpawnItemEx("MercuryGlobDamager2")
MRCH I 1 ACS_NamedExecute("VC_ViewHeight",0,36) TNT1 A 0 A_SpawnItemEx("MercuryGlobDamager2")
MRCH J 1 ACS_NamedExecute("VC_ViewHeight",0,32) TNT1 A 0 A_SpawnItemEx("MercuryGlobDamager2")
MRCH K 1 ACS_NamedExecute("VC_ViewHeight",0,28) TNT1 A 0 A_SpawnItemEx("MercuryGlobDamager2")
MRCH L 1 ACS_NamedExecute("VC_ViewHeight",0,24) TNT1 A 0 A_SpawnItemEx("MercuryGlobDamager2")
MRCH L 0 A_SpawnItemEx("LiquifyFormWatcher")
LiquifiedForm:
TNT1 A 1 A_SpawnItemEx("MercuryGlobDamager2")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"ThrowGlob")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"ThrowGlob")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",2)>0,"ThrowGlob")

TNT1 A 0 A_GiveInventory("GlobDashChecker")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==3,"MoveAround")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==11,"MoveAround")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==9,"MoveAround")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==13,"MoveAround")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==5,"MoveAround")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==21,"MoveAround")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==17,"MoveAround")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==19,"MoveAround")

TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,"LiquifiedForm")
Goto LiquifyFormGrow
ThrowGlob:
TNT1 A 0 A_PlaySoundEx("weapon/mercuryslime","Weapon")
TNT1 A 0 A_SpawnItemEx("MercuryGlob",16,0,2,cos(pitch)*25,0,-sin(pitch)*25,0,SXF_TRANSFERTRANSLATION|SXF_TRANSFERPITCH)
TNT1 A 0 A_GiveInventory("MercuryGlobCount",1)
TNT1 AAAAAAAAAAAAAA 1 A_SpawnItemEx("MercuryGlobDamager2")
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,"ThrowGlob")
Goto Reconverge
//GlobDashForward: TNT1 A 0 Goto MoveAround
MoveAround:
TNT1 A 0 SetPlayerProperty(0,0,0)
TNT1 A 0 A_TakeInventory("CannotBeMoved")
TNT1 A 0 ACS_NamedExecuteAlways("Mercury_Glob_Speed",0,0)
MoveAroundHold:
TNT1 A 0 A_PlaySoundEx("weapon/MMVShot","Weapon")
TNT1 A 0 A_SpawnItemEx("MercuryGlob",0,0,0,0,0,0,0,1)
TNT1 A 0 A_GiveInventory("MercuryGlobCount",1)
TNT1 AAAAAAAAAAAAAA 1 A_SpawnItemEx("MercuryGlobDamager2")
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,"MoveAroundHold")
Reconverge:
TNT1 A 0 SetPlayerProperty(0,1,0)
TNT1 A 0 A_GiveInventory("CannotBeMoved")
TNT1 A 0 A_GiveInventory("BaseCustomFlag1",1)
TNT1 A 0 ACS_NamedExecuteAlways("Mercury_Glob_Speed",0,1)
ReconvergeHold:
TNT1 A 0 A_SpawnItemEx("MercuryGlobDamager2")
TNT1 A 1 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",140,"LiquifyFormGrow")
TNT1 A 0 A_JumpIfInventory("MercuryGlobCount",1,"ReconvergeHold")
LiquifyFormGrow:
MRCH L 0 A_TakeInventory("CutterFlag",140)
MRCH L 0 A_TakeInventory("BaseCustomFlag1")
MRCH L 0 A_PlaySoundEx("weapon/PirateBubble","Body")
MRCH L 0 A_PlaySoundEx("weapon/mercurymelt","Weapon")
TNT1 A 0 A_TakeInventory("GlobFormFlag",1)
MRCH L 1 ACS_NamedExecute("VC_ViewHeight",0,28) TNT1 A 0 A_SpawnItemEx("MercuryGlobDamager2") TNT1 A 0 A_TakeInventory("GlobFormFlag",1)
MRCH K 1 ACS_NamedExecute("VC_ViewHeight",0,32) TNT1 A 0 A_SpawnItemEx("MercuryGlobDamager2") TNT1 A 0 A_TakeInventory("GlobFormFlag",1)
MRCH J 1 ACS_NamedExecute("VC_ViewHeight",0,36) TNT1 A 0 A_SpawnItemEx("MercuryGlobDamager2")
MRCH I 1 ACS_NamedExecute("VC_ViewHeight",0,40) TNT1 A 0 A_SpawnItemEx("MercuryGlobDamager2")
MRCH H 1 ACS_NamedExecute("VC_ViewHeight",0,44) TNT1 A 0 A_SpawnItemEx("MercuryGlobDamager2")
MRCH G 1 ACS_NamedExecute("VC_ViewHeight",0,48) TNT1 A 0 A_SpawnItemEx("MercuryGlobDamager2")
MRCH G 0 A_JumpIfInventory("BasicArmor",1,"AltfireFinish2")
MRCH FFEEDD 1
Goto AltfireEnd
AltfireFinish2:
MRCH RRQQPP 1
AltfireEnd:
MRCH D 0 SetPlayerProperty(0,0,0)
MRCH D 0 A_ChangeFlag("PICKUP",True)
MRCH D 0 A_SpawnItemEx("ReSolidifier")
MRCH D 0 A_ChangeFlag("THRUACTORS",False)
MRCH D 0 A_TakeInventory("CannotBeMoved")
MRCH D 0 A_TakeInventory("InvProtection")
MRCH D 0 A_ChangeFlag("INVULNERABLE",False)
Goto Ready

UltimateAttack:
MRCH D 0 A_Stop
MRCH D 0 SetPlayerProperty(0,1,0)
MRCH D 0 A_ChangeFlag("PICKUP",False)
MRCH D 0 A_GiveInventory("CannotBeMoved")
MRCH D 0 A_GiveInventory("InvProtection")
MRCH D 0 A_TakeInventory("UltAttackFlag",1)
MRCH D 0 A_GiveInventory("InvProtection",1)
MRCH D 0 A_ChangeFlag("INVULNERABLE",True)
MRCH D 0 A_PlaySoundEx("weapon/mercuryult","Auto")
MRCH D 0 A_GiveInventory("PowerUltBuildCooldown",1)
MRCH D 0 ACS_NamedExecuteAlways("VC_UltimateText",0,106)
MRCH D 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
TNT1 A 0 A_GiveInventory("GlobFormFlagUlt",1)
MRCH D 1 A_TakeInventory("MediumUltimateAmmo",25)
MRCH D 1 A_TakeInventory("MediumUltimateAmmo",25)
MRCH E 1 A_TakeInventory("MediumUltimateAmmo",25)
MRCH E 1 A_TakeInventory("MediumUltimateAmmo",25)
MRCH F 1 A_TakeInventory("MediumUltimateAmmo",25)
MRCH F 1 A_TakeInventory("MediumUltimateAmmo",25)
MRCH G 1 ACS_NamedExecute("VC_ViewHeight",0,44) MRCH G 0 A_TakeInventory("MediumUltimateAmmo",25)
MRCH H 1 ACS_NamedExecute("VC_ViewHeight",0,40) MRCH H 0 A_TakeInventory("MediumUltimateAmmo",25)
MRCH I 1 ACS_NamedExecute("VC_ViewHeight",0,36) MRCH I 0 A_TakeInventory("MediumUltimateAmmo",25)
MRCH J 1 ACS_NamedExecute("VC_ViewHeight",0,32) MRCH J 0 A_TakeInventory("MediumUltimateAmmo",25)
MRCH K 1 ACS_NamedExecute("VC_ViewHeight",0,28) MRCH K 0 A_TakeInventory("MediumUltimateAmmo",25)
MRCH L 1 ACS_NamedExecute("VC_ViewHeight",0,24) MRCH L 0 A_TakeInventory("MediumUltimateAmmo",25)
MRCH L 0 ACS_ExecuteAlways(971,0,10861)
MRCH L 0 A_PlaySoundEx("weapon/mercuryult","Auto")
MRCH L 1 ACS_NamedExecute("VC_ViewHeight",0,28) MRCH L 0 A_GiveInventory("LiquidMercuryBarFill",25)
MRCH K 1 ACS_NamedExecute("VC_ViewHeight",0,32) MRCH K 0 A_GiveInventory("LiquidMercuryBarFill",25)
MRCH J 1 ACS_NamedExecute("VC_ViewHeight",0,36) MRCH J 0 A_GiveInventory("LiquidMercuryBarFill",25)
MRCH I 1 ACS_NamedExecute("VC_ViewHeight",0,40) MRCH I 0 A_GiveInventory("LiquidMercuryBarFill",25)
MRCH H 1 ACS_NamedExecute("VC_ViewHeight",0,44) MRCH H 0 A_GiveInventory("LiquidMercuryBarFill",25)
MRCH G 1 ACS_NamedExecute("VC_ViewHeight",0,48) MRCH G 0 A_GiveInventory("LiquidMercuryBarFill",25)
MRCH R 1 A_GiveInventory("LiquidMercuryBarFill",25)
MRCH R 1 A_GiveInventory("LiquidMercuryBarFill",25)
MRCH Q 1 A_GiveInventory("LiquidMercuryBarFill",25)
MRCH Q 1 A_GiveInventory("LiquidMercuryBarFill",25)
MRCH P 1 A_GiveInventory("LiquidMercuryBarFill",25)
MRCH P 1 A_GiveInventory("LiquidMercuryBarFill",25)
MRCH D 0 SetPlayerProperty(0,0,0)
MRCH P 0 A_ChangeFlag("PICKUP",True)
MRCH P 0 A_SpawnItemEx("MercuryUltWatcher")
MRCH P 0 A_TakeInventory("InvProtection",1)
MRCH P 0 A_ChangeFlag("INVULNERABLE",False)
MRCH P 0 A_GiveInventory("LiquidMercuryHealth")
MRCH P 0 A_TakeInventory("LiquidMercuryBarFill",300)
TNT1 A 0 A_TakeInventory("GlobFormFlagUlt",1)
Goto Ready
UltEnd:
MRCH P 0 A_Stop
MRCH P 0 SetPlayerProperty(0,1,0)
MRCH P 0 A_ChangeFlag("PICKUP",False)
MRCH P 0 A_GiveInventory("CannotBeMoved")
MRCH P 0 A_GiveInventory("InvProtection",1)
MRCH P 0 A_ChangeFlag("INVULNERABLE",True)
MRCH P 0 A_PlaySoundEx("weapon/mercuryult","Auto")
TNT1 A 0 A_GiveInventory("GlobFormFlagUlt",1)
MRCH PPQQRR 1
MRCH G 1 ACS_NamedExecute("VC_ViewHeight",0,44)
MRCH H 1 ACS_NamedExecute("VC_ViewHeight",0,40)
MRCH I 1 ACS_NamedExecute("VC_ViewHeight",0,36)
MRCH J 1 ACS_NamedExecute("VC_ViewHeight",0,32)
MRCH K 1 ACS_NamedExecute("VC_ViewHeight",0,28)
MRCH L 1 ACS_NamedExecute("VC_ViewHeight",0,24)
MRCH L 0 A_PlaySoundEx("weapon/mercuryult","Auto")
MRCH L 0 ACS_ExecuteAlways(971,0,5961)
MRCH L 1 ACS_NamedExecute("VC_ViewHeight",0,28)
MRCH K 1 ACS_NamedExecute("VC_ViewHeight",0,32)
MRCH J 1 ACS_NamedExecute("VC_ViewHeight",0,36)
MRCH I 1 ACS_NamedExecute("VC_ViewHeight",0,40)
MRCH H 1 ACS_NamedExecute("VC_ViewHeight",0,44)
MRCH G 1 ACS_NamedExecute("VC_ViewHeight",0,48)
MRCH FFEEDD 1
MRCH D 0 SetPlayerProperty(0,0,0)
MRCH D 0 A_ChangeFlag("PICKUP",True)
MRCH D 0 A_TakeInventory("CannotBeMoved")
MRCH D 0 A_TakeInventory("InvProtection")
MRCH D 0 A_ChangeFlag("INVULNERABLE",False)
Goto Ready
}
}

actor MercuryMainPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("Base56Ammo",4)
TNT1 A 0 A_JumpIfInventory("BasicArmor",1,"PickUp3")
TNT1 A 0 A_JumpIfHealthLower(92,"PickUp2")
TNT1 A 0 A_PlaySound("weapon/grabbuster","Weapon",1.0)
TNT1 A 0 A_FireCustomMissile("GrabBusterSD2",0,0,8,8)
stop
Pickup2:
TNT1 A 0 A_PlaySound("weapon/MercuryGrabBuster","Weapon",0.4)
TNT1 A 0 A_FireCustomMissile("GrabBusterSD",0,0,8,8)
stop
PickUp3:
TNT1 A 0 A_PlaySound("weapon/grabbuster","Weapon",1.0)
TNT1 A 0 A_PlaySound("weapon/MercuryGrabBuster","Body",0.4)
TNT1 A 0 A_FireCustomMissile("GrabBusterSD3",0,0,8,8)
stop
}
}

actor GrabBusterSD
{
PROJECTILE
+FORCEXYBILLBOARD
+HITTRACER
+BRIGHT
Obituary "$OB_MERCURY1"
Damagetype "Mercury"
Damage (14)
Speed 50
height 16
radius 16
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
Spawn2:
MRCR WXYZ 1
loop
XDeath:
MRCR W 0 A_JumpIfInventory("CanBeGrabBustered",1,1,AAPTR_TRACER)
Goto Failed
MRCR W 0 A_JumpIfInventory("LightTeamFlag",1,"LightCheck",AAPTR_TARGET)
MRCR W 0 A_JumpIfInventory("WilyTeamFlag",1,"WilyCheck",AAPTR_TARGET)
MRCR W 0 A_JumpIfInventory("CossackTeamFlag",1,"CossackCheck",AAPTR_TARGET)
MRCR W 0 A_JumpIfInventory("KingTeamFlag",1,"KingCheck",AAPTR_TARGET)
Goto HealReturn
LightCheck:
MRCR W 0 A_JumpIfInventory("LightTeamFlag",1,"Failed",AAPTR_TRACER)
MRCR W 1 A_JumpIf(true,"HealReturn")
wait
WilyCheck:
MRCR W 0 A_JumpIfInventory("WilyTeamFlag",1,"Failed",AAPTR_TRACER)
MRCR W 1 A_JumpIf(true,"HealReturn")
wait
CossackCheck:
MRCR W 0 A_JumpIfInventory("CossackTeamFlag",1,"Failed",AAPTR_TRACER)
MRCR W 1 A_JumpIf(true,"HealReturn")
wait
KingCheck:
MRCR W 0 A_JumpIfInventory("KingTeamFlag",1,"Failed",AAPTR_TRACER)
MRCR W 1 A_JumpIf(true,"HealReturn")
wait
HealReturn:
TNT1 A 0 A_CustomMissile("GrabBusterHealSD",0,0,frandom(0.0,360.0),0)
Failed:
Death:
TNT1 A 0
stop
}
}

actor GrabBusterHealSD
{
PROJECTILE
+BRIGHT
+NOCLIP
+NOINTERACTION
+SEEKERMISSILE
speed 20
Damage (0)
height 10
radius 10
Scale 2.5
reactiontime 105
const int RTRN_RDUS = 64;
States 
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GRBU U 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
MRCR WWYYWW 1 A_SpawnItemEx("GrabBusterHealSDTrail")
Spawn2:
MRCR VVVV 0 A_SeekerMissile(90,90,SMF_PRECISE) MRCR W 1 A_SpawnItemEx("GrabBusterHealSDTrail") MRCR V 0 A_JumpIfCloser(RTRN_RDUS,"Death")
MRCR VVVV 0 A_SeekerMissile(90,90,SMF_PRECISE) MRCR W 1 A_SpawnItemEx("GrabBusterHealSDTrail") MRCR V 0 A_JumpIfCloser(RTRN_RDUS,"Death")
MRCR VVVV 0 A_SeekerMissile(90,90,SMF_PRECISE) MRCR Y 1 A_SpawnItemEx("GrabBusterHealSDTrail") MRCR V 0 A_JumpIfCloser(RTRN_RDUS,"Death")
MRCR VVVV 0 A_SeekerMissile(90,90,SMF_PRECISE) MRCR Y 1 A_SpawnItemEx("GrabBusterHealSDTrail") MRCR V 0 A_JumpIfCloser(RTRN_RDUS,"Death")
MRCR U 0 A_Countdown
loop
Death:
TNT1 A 0 A_GiveToTarget("GrabBusterHealPickupSD",1)
stop
}
}

actor GrabBusterHealPickupSD : CustomInventory
{
inventory.pickupmessage "$PU_SMALLHEALTH"
reactiontime 60
Scale 2.0
States
{
Spawn:
MRCR V 6 A_Countdown
loop
Pickup:
GRBU I 0 A_PlaySoundEx("gb3/heal", "voice")
GRBU I 0 A_GiveInventory("Health", 8)
stop
Death:
GRBU I 0 A_ChangeFlag("NOINTERACTION", true)
MRCR U 10
MRCR U 1 A_Fadeout
wait
}
}

actor GrabBusterHealSDTrail : BasicClientSide
{
States
{
Spawn:
TNT1 A 2
MRCR WYWY 2
stop
}
}

actor GrabBusterSD2 : GrabBusterSD
{
Damagetype "MercuryUltSteal"
Damage (16)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
Spawn2:
GRBU CDED 1 A_SpawnItemEx("GrabBusterFX",0,frandom(-6,6),frandom(-6,6),0,0,0,0,1)
loop
XDeath:
TNT1 A 0 
stop
}
}

actor StolenUltAmmo
{
PROJECTILE
-NOGRAVITY
+THRUACTORS
Gravity 1.0
Damage(0)
Height 8
Radius 8
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SPawn2:
SMET AZ 1
loop
}
}

actor GrabBusterSD3 : GrabBusterSD
{
Damagetype "MercuryUltSteal2"
Obituary "$OB_MERCURY3"
Damage (16)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
Spawn2:
GRBU CDED 1 A_SpawnItemEx("GrabBusterFX",0,frandom(-6,6),frandom(-6,6),0,0,0,0,1)
loop
XDeath:
MRCR A 0 A_JumpIfInventory("CanBeGrabBustered",1,1,AAPTR_TRACER)
Goto Failed
MRCR A 0 A_JumpIfInventory("LightTeamFlag",1,"LightCheck",AAPTR_TARGET)
MRCR A 0 A_JumpIfInventory("WilyTeamFlag",1,"WilyCheck",AAPTR_TARGET)
MRCR A 0 A_JumpIfInventory("CossackTeamFlag",1,"CossackCheck",AAPTR_TARGET)
MRCR A 0 A_JumpIfInventory("KingTeamFlag",1,"KingCheck",AAPTR_TARGET)
Goto HealReturn
LightCheck:
MRCR A 0 A_JumpIfInventory("LightTeamFlag",1,"Failed",AAPTR_TRACER)
MRCR A 1 A_JumpIf(true,"HealReturn")
wait
WilyCheck:
MRCR A 0 A_JumpIfInventory("WilyTeamFlag",1,"Failed",AAPTR_TRACER)
MRCR A 1 A_JumpIf(true,"HealReturn")
wait
CossackCheck:
MRCR A 0 A_JumpIfInventory("CossackTeamFlag",1,"Failed",AAPTR_TRACER)
MRCR A 1 A_JumpIf(true,"HealReturn")
wait
KingCheck:
MRCR A 0 A_JumpIfInventory("KingTeamFlag",1,"Failed",AAPTR_TRACER)
MRCR A 1 A_JumpIf(true,"HealReturn")
wait
HealReturn:
TNT1 A 0 A_CustomMissile("SiphonedUltAmmo",0,0,frandom(0.0,360.0),0)
Failed:
Death:
TNT1 A 0
stop
}
}

actor SiphonedUltAmmo : GrabBusterHealSD
{
Translation "198:198=104:104", "192:192=110:110"
ReactionTime 210
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SMET A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
SMET AAAAAA 1 A_SpawnItemEx("SiphonedUltTrail")
Spawn2:
SMET AAAA 0 A_SeekerMissile(90,90,SMF_PRECISE) SMET A 1 A_SpawnItemEx("SiphonedUltTrail") TNT1 A 0 A_JumpIfCloser(64,"Death")
SMET A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1)==0,"Nope") SMET A 0 A_JumpIfInTargetInventory("MercuryUltCancel",1,"Nope")
SMET A 0 A_Countdown
loop
Death:
SMET A 0 A_JumpIfInTargetInventory("MercuryUltCancel",1,1)
SMET A 0 A_GiveToTarget("LiquidMercuryPickup", 1)
Nope:
SMET A 0
stop
}
}

actor SiphonedUltTrail
{
Translation "198:198=104:104", "192:192=110:110"
PROJECTILE
+NOINTERACTION
+NOCLIP
Damage(0)
Height 1
Radius 1
Speed 0
scale 2.5
States
{
Spawn:
SMET A 1 A_FadeOut
wait
}
}

actor LiquidMercuryPickup : CustomInventory
{
reactiontime 60
Scale 2.0
States
{
Spawn:
MRCR V 6 A_Countdown
loop
Pickup:
MRCR V 0 A_JumpIfInventory("MercuryUltCancel",1,"Nope")
MRCR V 0 A_PlaySoundEx("gb3/heal", "voice")
MRCR V 0 A_GiveInventory("LiquidMercuryHealthRecover")
stop
Death:
MRCR U 0 A_ChangeFlag("NOINTERACTION",True)
MRCR U 10
MRCR U 1 A_Fadeout
wait
Nope:
MRCR V 0
stop
}
}

actor LiquidMercuryHealthRecover : BasicArmorBonus
{
  armor.saveamount 8
  armor.savepercent 99
  armor.maxsaveamount 100
  +COUNTITEM
  +INVENTORY.ALWAYSPICKUP
}

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

actor MercuryGlob
{
PROJECTILE
-NOGRAVITY
-SKYEXPLODE
+HEXENBOUNCE
+DONTREFLECT
+CANBOUNCEWATER
+USEBOUNCESTATE
Obituary "$OB_MERCURY2"
damagetype "Mercury"
BounceFactor 0.90
damage (22)
Radius 16
Height 16
speed 35
scale 2.5
+THRUSPECIES
species "MercuryGlob"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn2:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC U 1 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC U 1 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC U 1 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC V 1 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC V 1 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC V 1 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC W 1 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC W 1 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC W 1 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC V 1 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC V 1 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC V 1 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath")
loop
Bounce.Floor:
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",3,1)
Goto Spawn2
Death:
MERC U 0 A_Stop
MERC U 1 A_SpawnItemEx("MercuryGlobDamager") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC U 1 A_SpawnItemEx("MercuryGlobDamager") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC U 1 A_SpawnItemEx("MercuryGlobDamager") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC V 1 A_SpawnItemEx("MercuryGlobDamager") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC V 1 A_SpawnItemEx("MercuryGlobDamager") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC V 1 A_SpawnItemEx("MercuryGlobDamager") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC W 1 A_SpawnItemEx("MercuryGlobDamager") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC W 1 A_SpawnItemEx("MercuryGlobDamager") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC W 1 A_SpawnItemEx("MercuryGlobDamager") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC V 1 A_SpawnItemEx("MercuryGlobDamager") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC V 1 A_SpawnItemEx("MercuryGlobDamager") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
MERC V 1 A_SpawnItemEx("MercuryGlobDamager") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"XDeath") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Nope")
loop
XDeath:
TNT1 A 0 A_SpawnItemEx("ReturningMercuryGlob",0,0,0,0,0,0,0,1)
Nope:
TNT1 A 0
stop
}
}

actor ReturningMercuryGlob : MercuryGlob
{
+MISSILE
+NOCLIP
+NOGRAVITY
+DONTBLAST
+NOINTERACTION
+SEEKERMISSILE
Speed 20
const int RTRN_RDUS = 16;
reactiontime 40
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
MERC U 0 A_RearrangePointers(0,0,2)
loopit:
MERC UUUU 0 A_SeekerMissile(90,90,SMF_PRECISE,256) MERC U 0 A_FaceTarget MERC U 1 A_SpawnItemEx("MercuryGlobDamager") MERC U 0 A_JumpIfCloser(RTRN_RDUS,"End")
MERC U 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
MERC UUUU 0 A_SeekerMissile(90,90,SMF_PRECISE,256) MERC U 0 A_FaceTarget MERC U 1 A_SpawnItemEx("MercuryGlobDamager") MERC U 0 A_JumpIfCloser(RTRN_RDUS,"End")
MERC U 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
MERC UUUU 0 A_SeekerMissile(90,90,SMF_PRECISE,256) MERC U 0 A_FaceTarget MERC U 1 A_SpawnItemEx("MercuryGlobDamager") MERC U 0 A_JumpIfCloser(RTRN_RDUS,"End")
MERC U 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
MERC VVVV 0 A_SeekerMissile(90,90,SMF_PRECISE,256) MERC V 0 A_FaceTarget MERC V 1 A_SpawnItemEx("MercuryGlobDamager") MERC V 0 A_JumpIfCloser(RTRN_RDUS,"End")
MERC V 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
MERC VVVV 0 A_SeekerMissile(90,90,SMF_PRECISE,256) MERC V 0 A_FaceTarget MERC V 1 A_SpawnItemEx("MercuryGlobDamager") MERC V 0 A_JumpIfCloser(RTRN_RDUS,"End")
MERC V 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
MERC VVVV 0 A_SeekerMissile(90,90,SMF_PRECISE,256) MERC V 0 A_FaceTarget MERC V 1 A_SpawnItemEx("MercuryGlobDamager") MERC V 0 A_JumpIfCloser(RTRN_RDUS,"End")
MERC V 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
MERC WWWW 0 A_SeekerMissile(90,90,SMF_PRECISE,256) MERC W 0 A_FaceTarget MERC W 1 A_SpawnItemEx("MercuryGlobDamager") MERC W 0 A_JumpIfCloser(RTRN_RDUS,"End")
MERC W 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
MERC WWWW 0 A_SeekerMissile(90,90,SMF_PRECISE,256) MERC W 0 A_FaceTarget MERC W 1 A_SpawnItemEx("MercuryGlobDamager") MERC W 0 A_JumpIfCloser(RTRN_RDUS,"End")
MERC W 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
MERC WWWW 0 A_SeekerMissile(90,90,SMF_PRECISE,256) MERC W 0 A_FaceTarget MERC W 1 A_SpawnItemEx("MercuryGlobDamager") MERC W 0 A_JumpIfCloser(RTRN_RDUS,"End")
MERC W 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
MERC VVVV 0 A_SeekerMissile(90,90,SMF_PRECISE,256) MERC V 0 A_FaceTarget MERC V 1 A_SpawnItemEx("MercuryGlobDamager") MERC V 0 A_JumpIfCloser(RTRN_RDUS,"End")
MERC V 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
MERC VVVV 0 A_SeekerMissile(90,90,SMF_PRECISE,256) MERC V 0 A_FaceTarget MERC V 1 A_SpawnItemEx("MercuryGlobDamager") MERC V 0 A_JumpIfCloser(RTRN_RDUS,"End")
MERC V 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
MERC VVVV 0 A_SeekerMissile(90,90,SMF_PRECISE,256) MERC V 0 A_FaceTarget MERC V 1 A_SpawnItemEx("MercuryGlobDamager") MERC V 0 A_JumpIfCloser(RTRN_RDUS,"End")
MERC V 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
MERC V 0 A_Countdown
loop
End:
TNT1 A 1 A_TakeFromTarget("MercuryGlobCount",1)
Death:
TNT1 A 1
stop
}
}

actor MercuryGlobDamager
{
PROJECTILE
-NOBLOCKMAP
+DONTBLAST
+DONTREFLECT
species "MercuryGlob"
Obituary "$OB_MERCURY2"
DamageType "MercuryStationaryGlob"
damage (1)
Radius 64
Height 32
scale 2.5
States
{
Spawn:
TNT1 AA 0
TNT1 A 1
stop
}
}

Actor MercuryGlobProtect : PowerProtection
{
Powerup.Duration 4
DamageFactor "MercuryStationaryGlob", 0.0
}

actor MercuryGlobDamager2 : MercuryGlobDamager
{
DamageType "MercuryGlobForm"
damage (3)
States
{
Spawn:
TNT1 AA 0
TNT1 A 1
stop
}
}

Actor MercuryGlobFormProtect : PowerProtection
{
Powerup.Duration 6
DamageFactor "MercuryGlobForm", 0.0
}

actor MercuryUltWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 AA 0
TNT1 A 2 A_GiveToTarget("Health",1)
TNT1 A 0 A_JumpIfInTargetInventory("IsTheTerminator",1,"Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("BasicArmor",1,"Spawn")
TNT1 A 0 A_TakeFromTarget("PowerUltBuildCooldown",1)
TNT1 A 0 A_GiveToTarget("MercuryUltCancel")
Death:
TNT1 A 1
stop
}
}

actor LiquidMercuryGlob
{
PROJECTILE
-NOGRAVITY
-SKYEXPLODE
+HEXENBOUNCE
+DONTREFLECT
+CANBOUNCEWATER
+USEBOUNCESTATE
Obituary "$OB_MERCURY2"
damagetype "Mercury"
BounceFactor 0.90
damage(5)
Radius 16
Height 16
speed 30
scale 2.5
+THRUSPECIES
species "MercuryGlob"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn2:
MERC UVWV 3
loop
Bounce.Floor:
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",3,1)
Goto Spawn2
Death:
TNT1 A 0
stop
}
}

actor LiquidMercuryHealth : BasicArmorPickup
{
  armor.saveamount 100
  armor.savepercent 99
}

actor MercuryGlobCount : Inventory
{
inventory.amount 1
inventory.maxamount 6
}

actor LiquidMercuryBarFill : Inventory
{
inventory.amount 1
inventory.maxamount 300
}

actor MercuryUltCancel : Powerup 
{
powerup.duration 35
}

actor GlobFormFlag : VCOnce {}
actor GlobFormFlagUlt : VCOnce {}

actor GlobDashChecker : BaseMovement
{
states
{
itTimeGo:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==3,"GlobDashForward")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==11,"GlobDashForwardRight")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==9,"GlobDashRight")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==13,"GlobDashBackardsRight")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==5,"GlobDashBackwards")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==21,"GlobDashBackwardsLeft")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==17,"GlobDashLeft")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",1)==19,"GlobDashFowardLeft")
stop
GlobDashForward: TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob",50),0,0,CVF_RELATIVE|CVF_REPLACE) Goto MoveAround
GlobDashForwardRight: TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob",50),CallACS("VC_XYMob",-50),0,CVF_RELATIVE|CVF_REPLACE) Goto MoveAround
GlobDashRight: TNT1 A 0 A_ChangeVelocity(0,CallACS("VC_XYMob",-50),0,CVF_RELATIVE|CVF_REPLACE) Goto MoveAround
GlobDashBackardsRight: TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob",-50),CallACS("VC_XYMob",-50),0,CVF_RELATIVE|CVF_REPLACE) Goto MoveAround
GlobDashBackwards: TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob",-50),0,0,CVF_RELATIVE|CVF_REPLACE) Goto MoveAround
GlobDashBackwardsLeft: TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob",-50),CallACS("VC_XYMob",50),0,CVF_RELATIVE|CVF_REPLACE) Goto MoveAround
GlobDashLeft: TNT1 A 0 A_ChangeVelocity(0,CallACS("VC_XYMob",50),0,CVF_RELATIVE|CVF_REPLACE) Goto MoveAround
GlobDashFowardLeft: TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob",50),CallACS("VC_XYMob",50),0,CVF_RELATIVE|CVF_REPLACE) Goto MoveAround

MoveAround:
TNT1 A 0
stop
}
}