Ultimate Summoner Hotkey Choose Your Summons by Jaseowns
# Ultimate Summoner Hotkey Choose your summons by Jaseowns
# UO Outlands
# This is part of the mage bot, but you can have it
# as its own hotkey
###############
### Choose your summons
######
@setvar! breakSpellCastAndResummonIfLessThanXFollowers 4
@setvar! renamePets 1
# Earth: 0, 1, 2
@setvar! castSummonEarthElementalCount 0
@setvar! castSummonMummyCount 1
# Fire: 0, 1, 2
@setvar! castSummonFireElementalCount 0
@setvar! castSummonLichCount 0
# Demon: 0, 1, 2
@setvar! castSummonDemonCount 0
@setvar! castSummonThrallCount 0
# Air: 0, 1, 2
@setvar! castSummonAirCount 0
@setvar! castSummonFiendCount 0
# Water: 0, 1, 2
@setvar! castSummonWaterCount 0
@setvar! castSummonRagWitchCount 0
# Creature: 0, 1, 2, 3, 4, 5
@setvar! castSummonCreatureCount 0
# Energy Vortex: 0, 1
@setvar! castEnergyVortexCount 0
@setvar! castJackalSpiritCount 1
# Blade Spirit: 0, 1
@setvar! castBladeSpiritCount 0
@setvar! castSkeletalHuskCount 1
#### Pet Names, unique to you
if not listexists petNameList
createlist petNameList
endif
if list petNameList = 0 and renamePets = 1
pushlist petNameList "jaseneccy"
pushlist petNameList "jaseyoutube"
pushlist petNameList "jaseytfollow"
pushlist petNameList "jaseytfollower"
pushlist petNameList "jasesubscribed"
pushlist petNameList "jaseoutlands"
pushlist petNameList "uorazorscripts"
pushlist petNameList "jaseyoutuber"
pushlist petNameList "jasefunez"
pushlist petNameList "jasetwitch"
pushlist petNameList "jasesubscribe"
pushlist petNameList "jasefueoz"
endif
if renamePets = 0
clearlist petNameList
endif
if castSummonFireElementalCount > 0 and castSummonLichCount > 0
overhead "I am not going to do that. Update lich/fire to one or the other." 34
sysmsg "I am not going to do that. Update lich/fire to one or the other." 34
wait 2000
replay
elseif castSummonEarthElementalCount > 0 and castSummonMummyCount > 0
overhead "I am not going to do that. Update earth/mummy to one or the other." 34
sysmsg "I am not going to do that. Update earth/mummy to one or the other." 34
wait 2000
replay
elseif castSummonDemonCount > 0 and castSummonThrallCount > 0
overhead "I am not going to do that. Update demon/thrall to one or the other." 34
sysmsg "I am not going to do that. Update demon/thrall to one or the other." 34
wait 2000
replay
elseif castSummonAirCount > 0 and castSummonFiendCount > 0
overhead "I am not going to do that. Update air/fiend to one or the other." 34
sysmsg "I am not going to do that. Update air/fiend to one or the other." 34
wait 2000
replay
elseif castSummonWaterCount > 0 and castSummonRagWitchCount > 0
overhead "I am not going to do that. Update water/witch to one or the other." 34
sysmsg "I am not going to do that. Update water/witch to one or the other." 34
wait 2000
replay
endif
if not gumpexists 622436516 and skill "Necromancy" >= 50
say '[NecromancyHotbar'
wait 500
endif
if not varexist myMainTankPet
@setvar! myMainTankPet 0
endif
if not varexist fireOne
@setvar! fireOne 0
endif
if not varexist fireTwo
@setvar! fireTwo 0
endif
if not varexist earthOne
@setvar! earthOne 0
endif
if not varexist earthTwo
@setvar! earthTwo 0
endif
if not varexist demonOne
@setvar! demonOne 0
endif
if not varexist demonTwo
@setvar! demonTwo 0
endif
if not varexist airOne
@setvar! airOne 0
endif
if not varexist airTwo
@setvar! airTwo 0
endif
if not varexist waterOne
@setvar! waterOne 0
endif
if not varexist waterTwo
@setvar! waterTwo 0
endif
if not varexist evOne
@setvar! evOne 0
endif
if not varexist bsOne
@setvar! bsOne 0
endif
removelist summonList
createlist summonList
if followers = 0
@setvar! followCount 0
elseif followers = 1
@setvar! followCount 1
elseif followers = 2
@setvar! followCount 2
elseif followers = 3
@setvar! followCount 3
elseif followers = 4
@setvar! followCount 4
elseif followers = 5
@setvar! followCount 5
endif
if castSummonEarthElementalCount > 0 or castSummonMummyCount > 0
if dead earthOne or not find earthOne ground -1 -1 18
if followers < 4
pushlist summonList "Earth Elemental"
@setvar! earthOne 1
endif
endif
if castSummonEarthElementalCount > 1 or castSummonMummyCount > 1
if dead earthTwo or not find earthTwo ground -1 -1 18
if followers < 4
pushlist summonList "Earth Elemental"
@setvar! earthTwo 1
endif
endif
endif
endif
if castSummonFireElementalCount > 0 or castSummonLichCount > 0
if dead fireOne or not find fireOne ground -1 -1 18
if followers < 4
pushlist summonList "Fire Elemental"
@setvar! fireOne 1
endif
endif
if castSummonFireElementalCount > 1 or castSummonLichCount > 1
if dead fireTwo or not find fireTwo ground -1 -1 18
if followers < 4
pushlist summonList "Fire Elemental"
@setvar! fireTwo 1
endif
endif
endif
endif
if castSummonDemonCount > 0 or castSummonThrallCount > 0
if dead demonOne or not find demonOne ground -1 -1 18
if followers < 4
pushlist summonList "Summon Daemon"
@setvar! demonOne 1
endif
endif
if castSummonDemonCount > 1 or castSummonThrallCount > 1
if dead demonTwo or not find demonTwo ground -1 -1 18
if followers < 4
pushlist summonList "Summon Daemon"
@setvar! demonTwo 1
endif
endif
endif
endif
if castSummonAirCount > 0 or castSummonFiendCount > 0
if dead airOne or not find airOne ground -1 -1 18
if followers < 4
pushlist summonList "Air Elemental"
@setvar! airOne 1
endif
endif
if castSummonAirCount > 1 or castSummonFiendCount > 1
if dead airTwo or not find airTwo ground -1 -1 18
if followers < 4
pushlist summonList "Air Elemental"
@setvar! airTwo 1
endif
endif
endif
endif
if castSummonWaterCount > 0 or castSummonRagWitchCount > 0
if dead waterOne or not find waterOne ground -1 -1 18
if followers < 4
pushlist summonList "Water Elemental"
@setvar! waterOne 1
endif
endif
if castSummonWaterCount > 1 or castSummonRagWitchCount > 1
if dead waterTwo or not find waterTwo ground -1 -1 18
if followers < 4
pushlist summonList "Water Elemental"
@setvar! waterTwo 1
endif
endif
endif
endif
if castEnergyVortexCount > 0 or castJackalSpiritCount > 0
if dead evOne or not find evOne ground -1 -1 18
if followers < 5
pushlist summonList "Energy Vortex"
@setvar! evOne 1
endif
endif
endif
if castBladeSpiritCount > 0 or castSkeletalHuskCount > 0
if dead bsOne or not find bsOne ground -1 -1 18
if followers < 5
pushlist summonList "Blade Spirits"
@setvar! bsOne 1
endif
endif
endif
if followers < 5
if castSummonCreatureCount = 1
pushlist summonList "Summ. Creature"
elseif castSummonCreatureCount = 2
pushlist summonList "Summ. Creature"
pushlist summonList "Summ. Creature"
elseif castSummonCreatureCount = 3
pushlist summonList "Summ. Creature"
pushlist summonList "Summ. Creature"
pushlist summonList "Summ. Creature"
elseif castSummonCreatureCount = 4
pushlist summonList "Summ. Creature"
pushlist summonList "Summ. Creature"
pushlist summonList "Summ. Creature"
pushlist summonList "Summ. Creature"
elseif castSummonCreatureCount = 5
pushlist summonList "Summ. Creature"
pushlist summonList "Summ. Creature"
pushlist summonList "Summ. Creature"
pushlist summonList "Summ. Creature"
pushlist summonList "Summ. Creature"
endif
while targetexists
hotkey 'Cancel Current Target'
endwhile
endif
##############
##### Items from the main loop.. just make sure they exist
if not varexist cdPreventOverheadSpam
@setvar! cdPreventOverheadSpam 2000
endif
if not varexist cdMushroom
@setvar! cdMushroom 60000
endif
if not varexist cdMushroom
@setvar! cdMushroom 60000
endif
if not varexist cdVengefulSpirit
@setvar! cdVengefulSpirit 31000
endif
if not varexist cdWither
@setvar! cdWither 31000
endif
if not timerexists vengefulSpiritTimer
settimer vengefulSpiritTimer cdVengefulSpirit
endif
if not timerexists witherTimer
settimer witherTimer cdWither
endif
if not timerexists magicMushroomTimer
settimer magicMushroomTimer cdMushroom
endif
if not timerexists preventOverheadSpamTimer
settimer preventOverheadSpamTimer cdPreventOverheadSpam
endif
if not varexist hpCheckToTriggerGreaterHealSpell
@setvar! hpCheckToTriggerGreaterHealSpell 35
endif
foreach summon in summonList
if followers < 5
overhead "Casting Summon: {{summon}}" 88
while mana < 50
if timer magicMushroomTimer >= cdMushroom and findtype "mushroom" backpack as mushy
overhead "Eating shrooms" 66
dclick mushy
@setvar! jase_shrooms mushy
wait 200
if insysmsg "You consume a magic mushroom and restore some mana."
settimer magicMushroomTimer 0
elseif insysmsg "before you may consume another magic mushroom" or insysmsg "been in combat with another"
settimer magicMushroomTimer 30000
endif
endif
if diffhits >= hpCheckToTriggerGreaterHealSpell
replay
endif
if timer preventOverheadSpamTimer >= cdPreventOverheadSpam
overhead "waiting for mana" 88
settimer preventOverheadSpamTimer 0
endif
if not findbuff "Actively Meditating"
useskill "meditation"
endif
wait 200
endwhile
@setvar! needVengefulSpirit 0
if summon = "Earth Elemental" and castSummonMummyCount > 0
@setvar! needVengefulSpirit 1
elseif summon = "Fire Elemental" and castSummonLichCount > 0
@setvar! needVengefulSpirit 1
elseif summon = "Summon Daemon" and castSummonThrallCount > 0
@setvar! needVengefulSpirit 1
elseif summon = "Air Elemental" and castSummonFiendCount > 0
@setvar! needVengefulSpirit 1
elseif summon = "Water Elemental" and castSummonRagWitchCount > 0
@setvar! needVengefulSpirit 1
elseif summon = "Summ. Creature" and skill "Necromancy" >= 50
@setvar! needVengefulSpirit 1
elseif summon = "Energy Vortex" and castJackalSpiritCount > 0
@setvar! needVengefulSpirit 1
elseif summon = "Blade Spirits" and castSkeletalHuskCount > 0
@setvar! needVengefulSpirit 1
elseif timer vengefulSpiritTimer <= cdVengefulSpirit and skill "Necromancy" >= 50
if timer preventOverheadSpamTimer >= cdPreventOverheadSpam
overhead "Waiting for spirit to go away" 88
settimer preventOverheadSpamTimer 0
endif
replay
endif
if needVengefulSpirit = 1
if timer vengefulSpiritTimer >= cdVengefulSpirit and skill "Necromancy" >= 50
yell "[VengefulSpirit"
settimer vengefulSpiritTimer 0
wait 500
endif
elseif timer vengefulSpiritTimer <= cdVengefulSpirit and skill "Necromancy" >= 50
if timer preventOverheadSpamTimer >= cdPreventOverheadSpam
overhead "Waiting for spirit to go away" 88
settimer preventOverheadSpamTimer 0
endif
replay
endif
if followers = 0
@setvar! followCount 0
elseif followers = 1
@setvar! followCount 1
elseif followers = 2
@setvar! followCount 2
elseif followers = 3
@setvar! followCount 3
elseif followers = 4
@setvar! followCount 4
elseif followers = 5
@setvar! followCount 5
endif
while followers = followCount
if followers = 5
break
endif
cast summon
wft 500
if targetexists
hotkey "Target Self"
wait 200
endif
if timer witherTimer >= cdWither and skill "Necromancy" >= 95
yell "[Wither"
settimer witherTimer 0
endif
if diffhits >= hpCheckToTriggerGreaterHealSpell
overhead "Need a heal!"
hotkey '> Interrupt'
break
endif
endwhile
wait 200
@setvar! myFreshlySummonedPet 0
// 158 - an ancient mummy
// 14 - an earth elemental
if summon = "Earth Elemental" and findtype 158|14 ground -1 -1 2 as myPet
@setvar! myFreshlySummonedPet myPet
if earthOne = 1
@setvar! earthOne myPet
elseif earthTwo = 1
@setvar! earthTwo myPet
endif
// 24 - a lich
// 15 - a fire elemental
elseif summon = "Fire Elemental" and findtype 24|15 ground -1 -1 2 as myPet
@setvar! myFreshlySummonedPet myPet
if fireOne = 1
@setvar! fireOne myPet
elseif fireTwo = 1
@setvar! fireTwo myPet
endif
// 9 - a deamon
// 722 - a vampire thrall
elseif summon = "Summon Daemon" and findtype 9|722 ground -1 -1 2 as myPet
@setvar! myFreshlySummonedPet myPet
if demonOne = 1
@setvar! demonOne myPet
elseif demonTwo = 1
@setvar! demonTwo myPet
endif
// 16 - water elemental
// 740 - a rage witch
elseif summon = "Water Elemental" and findtype 16|740 ground -1 -1 2 as myPet
@setvar! myFreshlySummonedPet myPet
if waterOne = 1
@setvar! waterOne myPet
elseif waterTwo = 1
@setvar! waterTwo myPet
endif
// 13 - air elemental
// 306 - a skeletal fiend
elseif summon = "Air Elemental" and findtype 13|306 ground -1 -1 2 as myPet
@setvar! myFreshlySummonedPet myPet
if airOne = 1
@setvar! airOne myPet
elseif airTwo = 1
@setvar! airTwo myPet
endif
elseif summon = "Summ. Creature"
// TODO: gather all summon creature types
// 13 - an energy vortex
// 391 - a jackal spirit
elseif summon = "Energy Vortex" and findtype 13|391 ground -1 -1 2 as myPet
@setvar! myFreshlySummonedPet myPet
if evOne = 1
@setvar! evOne myPet
endif
// 574 - a blade spirit
// 309 - a skeletal husk
elseif summon = "Blade Spirits" and findtype 574|309 ground -1 -1 2 as myPet
@setvar! myFreshlySummonedPet myPet
if bsOne = 1
@setvar! bsOne myPet
endif
endif
if summon = "Summ. Creature"
overhead "Creature summoned!" 88
elseif myFreshlySummonedPet = 0
overhead "Not found" 88
else
if noto myFreshlySummonedPet = "friend" and list petNameList > 0
overhead "Renaming..." 77
foreach petName in petNameList
overhead "Rename to {{petName}}..." 66 myFreshlySummonedPet
rename myFreshlySummonedPet petName
wait 200
if insysmsg "That name is unacceptable."
overhead "Unable to name pet: {{petName}}" 34
sysmsg "Unable to name pet: {{petName}}" 34
endif
break
endfor
poplist petNameList "front"
endif
overhead "New Pet: {{summon}}" 88 myFreshlySummonedPet
if summon = "Energy Vortex" or summon = "Blade Spirits"
// do nothing
else
// guard
menu myFreshlySummonedPet 3
endif
@ignore myFreshlySummonedPet
endif
wait 500
else
break
endif
endfor
if dead myMainTankPet
if not dead earthOne
@setvar! myMainTankPet earthOne
elseif not dead earthTwo
@setvar! myMainTankPet earthTwo
elseif not dead waterOne
@setvar! myMainTankPet waterOne
elseif not dead waterTwo
@setvar! myMainTankPet waterTwo
elseif not dead demonOne
@setvar! myMainTankPet demonOne
elseif not dead demonTwo
@setvar! myMainTankPet demonTwo
elseif not dead fireOne
@setvar! myMainTankPet fireOne
elseif not dead fireTwo
@setvar! myMainTankPet fireTwo
elseif not dead airOne
@setvar! myMainTankPet airOne
elseif not dead airTwo
@setvar! myMainTankPet airTwo
endif
endif
if dead myMainTankPet
overhead "Cannot find main tank pet" 34
else
overhead "My main tank pet" 88 myMainTankPet
endif