Boat Bot v4.1a by Brozan (Syal)
Description from the author:
#Part of the attack routine is to call a Razor Dress routine named "bow". Create it if you want it. Will not break script if it does not exist
#Target Lock:
#0=default behavior (Let the script try to be intelligent)
#1=Area discord -- kill one thing at a time (Good for things that do not want to spread damage.
#2=Single target discord -- switch target after every round of skill usages (SPECIAL NOTE: Bosses will switch target type to this on purpose so you kill NPC spawns with bot and target disco boss)
@setvar targetLockType 2
#Summon Type Selector. Having Necromancy skill will still summon necro version. We will always use Summon Creature as 5th slot. Still requires 80 SS or Necro to trigger
#MAKE SURE you only select two here. Selecting more will break stuff.
#Valid Values are 0, 1, or 2 and it will summon that many of that type: Example setting fireElem to 2 will summon 2 fire elems. Setting earthEleme to 1 and waterElem to 1 will summon 1 earth elemental and 1 waterElem
@setvar fireElem 2
@setvar earthElem 0
@setvar airElem 0
@setvar waterElem 0
@setvar daemonSum 0
#Repair Priority Queue. Set these as 1/2/3. If you fail to put one for each of these it will break shit. Just leave it alone if you do not care
@setvar repairHullOrder 3
@setvar repairGunsOrder 1
@setvar repairSailsOrder 2
#Dynamic Boss Repair - Switches to hull priority on bosses. Set to 1 to turn on. Have to restart script to reset after bosses
@setvar dynamicBossRepair 1
#Set this to 1 if you do not want to select your own tillerman (useful for recall or if you switch boats a lot. Causes issues sometimes if it finds a friends dynamically)
@setvar dynamicTiller 0
#Set this to 1 if you want to throw self overboard if a ship repair kit is on the deck
@setvar triggerOverboard 0
#Set this to 1 to attempt to keep the bot from repairing within the combat repair window (only repairs 60-120s after boarding an NPC ship)
@setvar repairLockdown 0
#Set this to 1 to slow down repairs by 30s on bosses so you aren't always repairing
@setvar slowRepairsBosses 1
#Set this to 1 if you want to keep up buffs for Reactive Armour and Magic Reflect
@setvar buffRA 0
@setvar buffMR 0
#Set this to 1 to cast Mass Curse on first new enemy
@setvar massCurseToggle 1
#Set this to 1 if you want to simulate always being boarded on NPC ship for testing reasons
@setvar alwaysBoarded 0
#Set this to 0 if you want to keep my super awesome say commands (1 mutes the bot except important stuff like food or fighting party)
@setvar sayLess 0
#Set this to 1 if you want to be a super fucking awesome pirate
@setvar sayMore 0
#Set this to 1 if you want bot to defuse close by bombs and reembark
@setvar defuseBombs 1
#Set this to 1 to have bot reload right after embarking
@setvar reloadCannons 0
#Set this to 1 if you want to upgrade greater poison casts
@setvar upgradePoison 1
#Set this if you want to have bot recall on dock. Must have a book in pack named Home and first rune be the house to recall to if not magery. If magery make home the default rune
#IF YOU TURN THIS ON YOU MUST GO TO THE SECTION NAMED "WALK THIS WAY" AND SET UP DIRECTIONS INTO YOUR HOUSE FROM RECALL LOCATION
@setvar goHomeBotYouAreDrunk 1
#Set this to 1 if you want the bot to try to loot holds using RESTOCK-2 restock agent. Update the ship hue list below if you are using this.
@setvar stealTheBooty 1
#push your ship hues to this list for dynamic looting
createlist shipHues
clearlist shipHues
pushlist shipHues 2933
##################################################################################
##################################################################################
##################################################################################
############## ###################
############## No setup below here ###################
############## ###################
##################################################################################
##################################################################################
##################################################################################
clearsysmsg
clearignore
if 'sayMore' = 1
say "YO HO MATEY AWAY!" 33
wait 500
endif
#Timers. We used to do these on an if exists basis, but it fubard too much stuff if you leave client open forever
createtimer 'petAttack'
settimer 'petAttack' 0
createtimer 'discoTimer'
settimer 'discoTimer' 5000
createtimer 'repairBoat'
settimer 'repairBoat' 8000
createtimer "shroomy"
settimer "shroomy" 61000
createtimer 'buffDisco'
settimer 'buffDisco' 300000
createtimer 'buffProvo'
settimer 'buffProvo' 300000
createtimer 'buffPeace'
settimer 'buffPeace' 300000
createtimer 'buffBeg'
settimer 'buffBeg' 300000
createtimer 'bardLock'
settimer 'bardLock' 0
createtimer "aid time"
settimer "aid time" 8000
createtimer 'RepairHull'
settimer 'RepairHull' 0
createtimer 'buffTaste'
settimer 'buffTaste' 15000
createtimer 'newTargetCheck'
settimer 'newTargetCheck' 15000
createtimer 'spiritSpeakCheck'
settimer 'spiritSpeakCheck' 15000
createtimer 'foodCheck'
settimer 'foodCheck' 120000
createtimer 'crookCheck'
settimer 'crookCheck' 120000
createtimer 'crewHealing'
settimer 'crewHealing' 120000
createtimer 'onBoard'
settimer 'onBoard' 120000
createtimer 'painSpkeTimer'
settimer 'painSpkeTimer' 120000
createtimer 'poisonStrikeTimer'
settimer 'poisonStrikeTimer' 120000
createtimer 'vampTimer'
settimer 'vampTimer' 120000
createtimer 'dressTimer'
settimer 'dressTimer' 120000
createtimer 'provkeBossTimer'
settimer 'provkeBossTimer' 1500000
createtimer 'goHomeBotYouAreDrunkTimer'
settimer 'goHomeBotYouAreDrunkTimer' 100000
createtimer 'scriptRunning'
settimer 'scriptRunning' 100000
createtimer 'singSeaShanties'
settimer 'singSeaShanties' 70000
createtimer 'sanityEmbarkCheck'
settimer 'sanityEmbarkCheck' 0
createtimer "walkingTooMuch"
settimer "walkingTooMuch" 0
#Clear lastt t arget from last run - this can cause a weird bug
unsetvar 'lastserial'
#Create list of instrument types and dclick if found
removelist 'instrumentTypes'
createlist 'instrumentTypes'
pushlist 'instrumentTypes' 10245
pushlist 'instrumentTypes' 3762
pushlist 'instrumentTypes' 3740
pushlist 'instrumentTypes' 3742
pushlist 'instrumentTypes' 3763
#Create list of reagents
createlist regTypes
clearlist regTypes
@pushlist 'regTypes' 3963
@pushlist 'regTypes' 3962
@pushlist 'regTypes' 3973
@pushlist 'regTypes' 3972
@pushlist 'regTypes' 3980
@pushlist 'regTypes' 3981
@pushlist 'regTypes' 3976
@pushlist 'regTypes' 3974
#create list of food types since tray does not work any more
createlist foodTypes
clearlist foodTypes
@pushlist 'foodTypes' 28879
@pushlist 'foodTypes' 28888
@pushlist 'foodTypes' 28885
@pushlist 'foodTypes' 29774
@pushlist 'foodTypes' 28883
@pushlist 'foodTypes' 28880
@pushlist 'foodTypes' 29773
@pushlist 'foodTypes' 28881
#create list of tillermen
createlist tillerMenList
clearlist tillerMenList
@pushlist 'tillerMenList' 15952
@pushlist 'tillerMenList' 15955
@pushlist 'tillerMenList' 15950
@pushlist 'tillerMenList' 15947
unsetvar 'tillerDude'
if dynamicTiller = 0
overhead "Target Tillerman"
@setvar tillerDude
else
#try to find tillerman
foreach tillerMenVar in tillerMenList
if findtype tillerMenVar ground as found
overhead "Tillerman Set"
setvar 'tillerDude' 'found'
dclick 'tillerDude'
wait 500
endif
endfor
endif
#Hold IDs
createlist holdIDs
clearlist holdIDs
pushlist holdIDs 16019
pushlist holdIDs 16046
pushlist holdIDs 15973
pushlist holdIDs 16057
#NPC Ship Hues
createlist NPCshipHues
clearlist NPCshipHues
#druid
pushlist NPCshipHues 2845
#Vile
pushlist NPCshipHues 2841
#Ossurary
pushlist NPCshipHues 2840
#pirate
pushlist NPCshipHues 2269
#merchant
pushlist NPCshipHues 2766
#ghost
pushlist NPCshipHues 2955
#orc reaver
pushlist NPCshipHues 2141
#raider
pushlist NPCshipHues 2927
#tradesman
pushlist NPCshipHues 2347
#Lizardman
pushlist NPCshipHues 2363
#explorer
pushlist NPCshipHues 2845
#fisherman
pushlist NPCshipHues 2076
#daemon
pushlist NPCshipHues 2740
#submerged
pushlist NPCshipHues 2826
#Set up walking list for dymanic loot
createlist walking
clearlist walking
#list for dump stuff
createlist lootTypes
clearlist lootTypes
@pushlist 'lootTypes' 'muffins'
@pushlist 'lootTypes' 'gold coin'
@pushlist 'lootTypes' 'cooked fish'
@pushlist 'lootTypes' 'Crab SOUTH'
@pushlist 'lootTypes' 'Lobster SOUTH'
@pushlist 'lootTypes' 'raw fish steak%s%'
@pushlist 'lootTypes' 'Blood Moss'
@pushlist 'lootTypes' 'Black Pearl%s%'
@pushlist 'lootTypes' 'Ginseng'
@pushlist 'lootTypes' 'Garlic'
@pushlist 'lootTypes' 'Sulfurous Ash'
@pushlist 'lootTypes' "Spider's Silk"
@pushlist 'lootTypes' 'Nightshade'
@pushlist 'lootTypes' 'Mandrake Root%s%' //MR
@pushlist 'lootTypes' 'cut%s% of raw ribs'
@pushlist 'lootTypes' 'cut up leather'
@pushlist 'lootTypes' 'clean bandage%s%'
@pushlist 'lootTypes' 'arrow'
@pushlist 'lootTypes' 'crossbow bolt'
# ' for formatting reasons
createlist ItemTypes
clearlist ItemTypes
//martial manual
@pushlist 'ItemTypes' 22187
//Shields
@pushlist 'ItemTypes' 0x1b72 //BronzeShields
@pushlist 'ItemTypes' 0x1b73 //Buckler
@pushlist 'ItemTypes' 0x1b7b //MetalShield
@pushlist 'ItemTypes' 0x1b74 //MetalKiteShield
@pushlist 'ItemTypes' 0x1b79 //TearKiteShield
@pushlist 'ItemTypes' 0x1b7a //WoodenShield
@pushlist 'ItemTypes' 0x1b76 //HeaterShield
@pushlist 'ItemTypes' 0x1b77 //HeaterShield
//Platemail
@pushlist 'ItemTypes' 0x1408 //CloseHelmet
@pushlist 'ItemTypes' 0x1410 //PlatemailArms
@pushlist 'ItemTypes' 0x1417 //PlatemailArms
@pushlist 'ItemTypes' 0x1411 //PlatemailLegs
@pushlist 'ItemTypes' 0x1412 //PlateHelm
@pushlist 'ItemTypes' 0x1413 //PlateGorget
@pushlist 'ItemTypes' 0x1418 //PlatemailGloves
@pushlist 'ItemTypes' 0x1415 //PlateChest
@pushlist 'ItemTypes' 0x140a //Helmet
@pushlist 'ItemTypes' 0x140c //Bascinet
@pushlist 'ItemTypes' 0x140e //NorseHelm
//Chainmail
@pushlist 'ItemTypes' 0x13bb //ChainmailCoif
@pushlist 'ItemTypes' 0x13c3 //ChainmailLeggins
@pushlist 'ItemTypes' 0x13c4 //ChainmailChest
@pushlist 'ItemTypes' 0x13c0 //ChainmailHelm
//Ringmail
@pushlist 'ItemTypes' 0x13ef //RingmailArms
@pushlist 'ItemTypes' 0x13f2 //RingmailGloves
@pushlist 'ItemTypes' 0x13ed //RingmailChest
@pushlist 'ItemTypes' 0x13f1 //RingmailLeggins
@pushlist 'ItemTypes' 0x140b //RingmailHelm
//Studded
@pushlist 'ItemTypes' 0x1dba //Studdedcap
@pushlist 'ItemTypes' 0x13e1 //StuddedLeggings
@pushlist 'ItemTypes' 0x13db //StuddedTunic
@pushlist 'ItemTypes' 0x13d5 //StuddedGloves
@pushlist 'ItemTypes' 0x13d6 //StuddedGorget
@pushlist 'ItemTypes' 0x13dc //StuddedSleeves
//Leather
@pushlist 'ItemTypes' 0x13ce //LeatherGloves
@pushlist 'ItemTypes' 0x13cd //LeatherSleeves
@pushlist 'ItemTypes' 0x13d3 //LeatherChest
@pushlist 'ItemTypes' 0x13cb //LeatherPants
@pushlist 'ItemTypes' 0x13c7 //LeatherGorget
@pushlist 'ItemTypes' 0x1db9 //LeatherCap
@pushlist 'ItemTypes' 0x13c5 //LeatherArms
//FemaleArmor
@pushlist 'ItemTypes' 0x1c04 //FemalePlate
@pushlist 'ItemTypes' 0x1c09 //FemalePlateSkirt
@pushlist 'ItemTypes' 0x1c0c //FemaleStuddedBustier
@pushlist 'ItemTypes' 0x1c02 //FemaleStuddedArmor
@pushlist 'ItemTypes' 0x1c09 //FemaleRingmailSkirt
@pushlist 'ItemTypes' 0x1c00 //FemaleLeatherShorts
@pushlist 'ItemTypes' 0x1c09 //FemaleLeatherSkirt
@pushlist 'ItemTypes' 0x1c06 //FemaleLeatherArmor
@pushlist 'ItemTypes' 0x1c0b //FemaleLeatherBustier
@pushlist 'ItemTypes' 0x1c09 //FemaleBoneSkirt
//Fencing
@pushlist 'ItemTypes' 0xf62 //Spear
@pushlist 'ItemTypes' 0x1403 //ShortSpear
@pushlist 'ItemTypes' 0xe87 //Pitchfork
@pushlist 'ItemTypes' 0x1405 //Warfork
@pushlist 'ItemTypes' 0x1401 //Kryss
@pushlist 'ItemTypes' 0xf52 //Dagger
//Macing
@pushlist 'ItemTypes' 0x13b0 //Waraxe
@pushlist 'ItemTypes' 0xdf0 //BlackStaff
@pushlist 'ItemTypes' 0x1439 //WarHammer
@pushlist 'ItemTypes' 0x1407 //WarMace
@pushlist 'ItemTypes' 0xe89 //QuarterStaff
@pushlist 'ItemTypes' 0x143d //HammerPick
@pushlist 'ItemTypes' 0x13b4 //Club
@pushlist 'ItemTypes' 0xe81 //ShepherdsCrook
@pushlist 'ItemTypes' 0x13f8 //GnarledStaff
@pushlist 'ItemTypes' 0xf5c //Mace
@pushlist 'ItemTypes' 0x143b //Maul
//Swords
@pushlist 'ItemTypes' 0x13b9 //VikingSword
@pushlist 'ItemTypes' 0xf61 //Longsword
@pushlist 'ItemTypes' 0x1441 //Cutlass
@pushlist 'ItemTypes' 0x13b6 //Scimitar
@pushlist 'ItemTypes' 0xec4 //SkinningKnife
@pushlist 'ItemTypes' 0x13f6 //ButcherKnife
@pushlist 'ItemTypes' 0xf5e //Broadsword
@pushlist 'ItemTypes' 0x13ff //Katana
@pushlist 'ItemTypes' 0xec3 //Cleaver
//Axes
@pushlist 'ItemTypes' 0xf43 //Hatchet
@pushlist 'ItemTypes' 0xf45 //ExecutionersAxe
@pushlist 'ItemTypes' 0xf4d //Bardiche
@pushlist 'ItemTypes' 0xf4b //DoubleAxe
@pushlist 'ItemTypes' 0x143e //Halberd
@pushlist 'ItemTypes' 0x13fb //LargeBattleAxe
@pushlist 'ItemTypes' 0x1443 //TwoHandedAxe
@pushlist 'ItemTypes' 0xf47 //BattleAxe
@pushlist 'ItemTypes' 0xf49 //Axe
//Bows
@pushlist 'ItemTypes' 0x13fd //HeavyXbow
@pushlist 'ItemTypes' 0xf50 //Xbow
@pushlist 'ItemTypes' 0x13b2 //bow
//Instruments
@pushlist 'ItemTypes' 0xeb2 //Harp
@pushlist 'ItemTypes' 0xe9c //Drums
@pushlist 'ItemTypes' 0xeb3 //Lute
@pushlist 'ItemTypes' 0xe9e //Tambourine
@pushlist 'ItemTypes' 0x2805 //BambooFlute
//Other Helmets
@pushlist 'ItemTypes' 0x140f //NorseHelm
//BoneArmor
@pushlist 'ItemTypes' 0x1451 //BoneHelm
@pushlist 'ItemTypes' 0x1457 //BoneLegs
@pushlist 'ItemTypes' 0x1453 //BoneArms
@pushlist 'ItemTypes' 0x1455 //BoneGloves
//SlayerWands
@pushlist 'ItemTypes' 0xdf2 //SlayerWands
@pushlist 'ItemTypes' 0xdf3 //SlayerWands
@pushlist 'ItemTypes' 0xdf4 //SlayerWands
@pushlist 'ItemTypes' 0xdf5 //SlayerWands
//OtherSTuff, that wasnt in list...
@pushlist 'ItemTypes' 0xdf5 //SlayerWands
@pushlist 'ItemTypes' 0xefa //SpellBook
@pushlist 'ItemTypes' 0x141a //platemailleggings
@pushlist 'ItemTypes' 0x1b7a //woodenshield
@pushlist 'ItemTypes' 0x13e2 //studdedchets
@pushlist 'ItemTypes' 0x1b79 //woodenkiteshield
@pushlist 'ItemTypes' 0x26bd //harpoon
@pushlist 'ItemTypes' 0x1c05 //Femaleplatechest
@pushlist 'ItemTypes' 0x1c0d //studdedbrasier
@pushlist 'ItemTypes' 0x1c01 //leathershorts
@pushlist 'ItemTypes' 0x1b75 //metalkiteshield
@pushlist 'ItemTypes' 0x1c07 //Femaleleather
@pushlist 'ItemTypes' 0x1416 //platemailchest
@pushlist 'ItemTypes' 0x13dd //studdedgloves
@pushlist 'ItemTypes' 0x1454 //Bonechest
@pushlist 'ItemTypes' 0x13d2 //leatherleggings
@pushlist 'ItemTypes' 0x1409 //closehelm
@pushlist 'ItemTypes' 0x13d4 //studdedarms
#Loop through instruments and dclick one
if skill "Musicianship" > 50
foreach instrumentType in 'instrumentTypes'
dclicktype instrumentType
endfor
endif
#open necro book
if skill "Necromancy" > 50
dclicktype "8787"
waitforgump 3897999232
gumpresponse 2 3897999232
wait 250
gumpclose 3897999232
endif
#Set boarded state - 1=boarded NPC 0=on our ship
@setvar 'boardState' 0
#Set up tracking sate 1=tracking 0=not
@setvar 'trackState' 0
#set up var to check if we have enemies in range
@setvar 'closeEnemy' 0
#set up blue tracking option
@setvar 'blueSighted' 0
#Boss Tracker
@setvar 'bossFight' 0
#Target Lock
@setvar targetLock targetLockType
#discoLock
@setvar discoLock targetLockType
#provoke boss
@setvar 'provokeBoss' 0
#set bot at home flag
@setvar 'botAtHome' 0
#set where we are on wellerman
@setvar wellerManProgress 0
#Var to track if we found hold
@setvar stopWalking 0
#Set up hold tracker
@setvar holdToLoot 0
#Set up hold tracker for own boat
@setvar myShipHold 0
#Variable to track NPC Hold
@setvar npcHold 0
#set pets if they exist
if skill "Veterinary" > 50 and followers >= 1
overhead "Target pet 1"
setvar! pet1
overhead "Target pet 2"
setvar! pet2
overhead "Target pet 3"
setvar! pet3
endif
if skill "Healing" > 50
say '[ShipHotbars'
wait 500
endif
#do camping buff at least once regardless of buff status
#camping buff
if skill "Camping" > 50
#cut some kindling off our boat...seriously
if not findtype 3553 backpack
dclicktype 3922
waitfortarget 4500
target 'self'
wait 600
endif
if not findtype 3555 true
dclicktype 3553 backpack
wait 350
while insysmsg "You fail to ignite"
wait 3000
dclicktype "kindling" backpack
wait 350
endwhile
endif
wait 600
endif
if followers > 1
say "All guard me"
endif
while not dead
#Announce we are running
if timer "scriptRunning" > 15000
overhead "Bot is running"
settimer "scriptRunning" 0
endif
#Dynamic Tillerman Check
if dynamicTiller = 1
if not varexist 'tillerDude'
foreach tillerMenVar in tillerMenList
if findtype tillerMenVar ground as found
overhead "Tillerman Set"
setvar 'tillerDude' 'found'
dclick 'tillerDude'
wait 500
endif
endfor
endif
endif
#put in a pause so we dont spam
wait 100
if alwaysBoarded = 1
@setvar boardState 1
endif
#Be a real pirate
if wellerManProgress = 0 and sayMore = 1 and timer "singSeaShanties" > 20000 and boardState = 0
wait 500
say "There once was a ship that put to sea / The name of the ship was the Billy of Tea " 45
wait 500
say "/ The winds blew up, her bow dipped down / Oh blow, my bully boys, blow" 45
settimer 'singSeaShanties' 0
@setvar wellerManProgress 1
elseif wellerManProgress = 1 and sayMore = 1 and timer "singSeaShanties" > 20000 and boardState = 0
wait 500
say "Soon may the Wellerman come / To bring us sugar and tea and rum " 45
wait 500
say "/ One day, when the tonguing is done / Well take our leave and go" 45
settimer 'singSeaShanties' 0
@setvar wellerManProgress 2
elseif wellerManProgress = 2 and sayMore = 1 and timer "singSeaShanties" > 20000 and boardState = 0
wait 500
say "Shed not been two weeks from shore / When down on her a right whale bore " 45
wait 500
say "/ The captain called all hands and swore / Hed take that whale in tow" 45
settimer 'singSeaShanties' 0
@setvar wellerManProgress 3
elseif wellerManProgress = 3 and sayMore = 1 and timer "singSeaShanties" > 20000 and boardState = 0
wait 500
say "Soon may the Wellerman come / To bring us sugar and tea and rum / One day, when the tonguing is done / Well take our leave and go" 45
settimer 'singSeaShanties' 0
@setvar wellerManProgress 4
elseif wellerManProgress = 4 and sayMore = 1 and timer "singSeaShanties" > 20000 and boardState = 0
wait 500
say "Da-da-da-da-da / Da-da-da-da-da-da-da / Da-da-da-da-da-da-da-da-da-da-da" 45
settimer 'singSeaShanties' 0
@setvar wellerManProgress 0
endif
############### ###############
###############Start routines that keep us alive or set vars###############
############### ###############
#make sure a cursor does not exist from before
if targetexists
hotkey "Cancel Current Target"
wait 350
endif
#Check if we are on NPC ship
if insysmsg "You board the ship"
@setvar 'boardState' 1
settimer "onBoard" 0
@setvar stopWalking 0
if sayLess = 0
wait 500
say "***Lets Gooooo! (Lets Gooooo!) / If you want it you can get it let me know (let me know)**" 44
endif
endif
#disco routine if target lock is 1 or we are on a humanoid boat
if discoLock = 1 or targetLockType = 1
if skill "Discordance" > 50 and timer "bardLock" > 10000 and timer "discoTimer" > 5150 and closeEnemy = 1
overhead "Disco Target!" 33
skill "Discordance"
wft 500
target self
settimer "discoTimer" 0
settimer "bardLock" 4750
endif
endif
#hidden check
if hidden and boardState = 0
continue
endif
#dont let this guy die routine
if hp < 55
overhead 'Drinking heal!'
potion "heal"
wait 200
endif
#Chiv Poisoned
if skill "Chivalry" > 50 and poisoned
say "[cleansebyfire"
endif
#Magery Survival
if skill "Magery" > 50
#we cast arch here bc it probably hit whole crew
if poisoned 'self'
cast 'Arch Cure'
waitfortarget 1755
target 'self'
wait 666
endif
if diffhits > 18
cast "greater heal"
wft 3500
target self
wait 650
endif
#Eat a magic mushroom if we have
#25 less mana than full
if mana < 70 and timer "shroomy" >= 65000
dclicktype '29012'
overhead 'Mushroom Power!'
settimer "shroomy" 0
endif
endif
# Bandage Survival
if skill 'Healing' > 50
if insysmsg 'You begin applying the bandages'
settimer 'aid time' 0
endif
if diffhits > 10 and timer 'aid time' > 10250
hotkey 'bandage self'
settimer 'aid time' 0
endif
if insysmsg 'You begin applying the bandages'
settimer 'aid time' 0
endif
endif
#Goes through blue gates
if findtype 3948 'ground' 0 1 2 as 'bluegate'
dclick 'bluegate'
waitforgump 3899019871
gumpresponse 2
wait 500
say "[embark"
wait 500
say "[embarkfollowers"
wait 500
@setvar botAtHome 0
endif
#Pet Healing
if skill "Veterinary" > 50 and followers >= 1 and diffhits <= 10
if timer 'aid time' > 10250 and timer 'crewHealing' > 5050
dclicktype 3617
wft 2500
target pet1
wait 500
if insysmsg 'You begin applying the bandages'
settimer 'aid time' 4500
settimer 'crewHealing' 0
endif
endif
if timer 'aid time' > 10250 and timer 'crewHealing' > 5050
dclicktype 3617
wft 2500
target pet2
wait 500
if insysmsg 'You begin applying the bandages'
settimer 'aid time' 4500
settimer 'crewHealing' 0
endif
endif
if timer 'aid time' > 10250 and timer 'crewHealing' > 5050
dclicktype 3617
wft 2500
target pet3
wait 250
if insysmsg 'You begin applying the bandages'
settimer 'aid time' 4500
settimer 'crewHealing' 0
endif
endif
#We checked all - pause for spam
if timer 'crewHealing' > 5050 and skill 'Healing' <= 50
settimer 'crewHealing' 1000
endif
endif
#Crew Healing
if skill 'Healing' > 50 and diffhits <= 10
if timer 'aid time' > 10250 and timer 'crewHealing' > 5050
gumpresponse 20 1722920179
wait 250
if insysmsg 'You begin applying the bandages'
settimer 'aid time' 4500
settimer 'crewHealing' 0
endif
endif
if timer 'aid time' > 10250 and timer 'crewHealing' > 5050
gumpresponse 21 1722920179
wait 250
if insysmsg 'You begin applying the bandages'
settimer 'aid time' 4500
settimer 'crewHealing' 0
endif
endif
if timer 'aid time' > 10250 and timer 'crewHealing' > 5050
gumpresponse 22 1722920179
wait 250
if insysmsg 'You begin applying the bandages'
settimer 'aid time' 4500
settimer 'crewHealing' 0
endif
endif
if timer 'aid time' > 10250 and timer 'crewHealing' > 5050
gumpresponse 23 1722920179
wait 250
if insysmsg 'You begin applying the bandages'
settimer 'aid time' 4500
settimer 'crewHealing' 0
endif
endif
if timer 'aid time' > 10250 and timer 'crewHealing' > 5050
gumpresponse 24 1722920179
wait 250
if insysmsg 'You begin applying the bandages'
settimer 'aid time' 4500
settimer 'crewHealing' 0
endif
endif
if timer 'aid time' > 10250 and timer 'crewHealing' > 5050
gumpresponse 25 1722920179
wait 250
if insysmsg 'You begin applying the bandages'
settimer 'aid time' 4500
settimer 'crewHealing' 0
endif
endif
#We checked all - pause for spam
if timer 'crewHealing' > 5050
settimer 'crewHealing' 1000
endif
endif
############### ###############
############### Start buff routines ###############
############### ###############
#Throw self overboard if a ship repair kit is on the deck
if 'triggerOverboard' = 1
if findtype 25758 ground any any 8
say "So long fair world"
wait 500
say "[throwselfoverboard"
stop
endif
endif
#Tracking Routine - Turn it on if we have not yet
if skill 'Tracking' >= 20 and 'trackState' = 0
while not insysmsg "You will receive"
hotkey 'Tracking'
gumpresponse 6 4267467659
wait 500
endwhile
gumpclose 4267467659
@setvar 'trackState' 1
endif
#food buff routine
if timer 'foodCheck' > 60000 and not findbuff 'food satisfaction'
@setvar foundFood 0
foreach foodStuff in foodTypes
if findtype foodStuff as found
wait 600
dclick found
@setvar foundFood 1
endif
endfor
if foundFood = 0
wait 600
say "I appear to be out of food!"
wait 600
say "I appear to be out of food!"
wait 600
say "I appear to be out of food!"
endif
settimer 'foodCheck' 0
endif
#Follower Routine
if skill "Necromancy" > 80 or skill "Spirit Speak" > 80
if followers < 4 and mana > 50
#Lost a big pet, resummon
settimer "bardLock" 0
if skill "Necromancy" > 80
say "[VengefulSpirit"
wait 1000
endif
#check for pure summons they do not require as much logic
if 'fireElem' = 2
cast 'Fire Elemental'
elseif 'airElem' = 2
cast 'Air Elemental'
elseif 'daemonSum' = 2
cast 'Summon Daemon'
elseif 'earthElem' = 2
cast 'Earth Elemental'
elseif 'waterElem' = 2
cast 'Water Elemental'
endif
#Check for single summons
if 'fireElem' = 1
if skill "Necromancy" > 80
if not findtype 24 ground any any 12
overhead "Casting one lich"
say "a fire elemental release"
cast 'Fire Elemental'
endif
else
if not findtype 15 ground any any 12
overhead "Casting plain fire elem"
cast 'Fire Elemental'
endif
endif
endif
if 'airElem' = 1
if skill "Necromancy" > 80
if not findtype 306 ground any any 12
say "an air elemental release"
cast 'Air Elemental'
endif
else
if not findtype 13 ground any any 12
cast 'Air Elemental'
endif
endif
endif
if 'earthElem' = 1
if skill "Necromancy" > 80
if not findtype 158 ground any any 12
say "an earth elemental release"
cast 'Earth Elemental'
endif
else
if not findtype 14 ground any any 12
cast 'Earth Elemental'
endif
endif
endif
if 'waterElem' = 1
if skill "Necromancy" > 80
if not findtype 740 ground any any 12
say "a water elemental release"
cast 'Water Elemental'
endif
else
if not findtype 16 ground any any 12
cast 'Water Elemental'
endif
endif
endif
if 'waterElem' = 1
if skill "Necromancy" > 80
if not findtype 722 ground any any 12
say "a daemon release"
cast 'Summon Daemon'
endif
else
if not findtype 9 ground any any 12
cast 'Summon Daemon'
endif
endif
endif
wait 6000
say "All Guard Me"
#rebuff to get pet buffed
if mana > 15 and followers >= 4
cast 'Bless'
waitfortarget 2500
target 'self'
wait 750
endif
endif
endif
#Summon Creature Routine
if skill "Necromancy" > 80 or skill "Spirit Speak" > 80
if followers = 4 and mana > 30
settimer "bardLock" 0
if skill "Necromancy" > 80
say "[VengefulSpirit"
wait 1000
endif
cast 'Summ. Creature'
wait 5000
say "All Guard Me"
endif
endif
#camping buff
if skill "Camping" > 50 and not findbuff "Campfire Visit"
if not findtype 3553 backpack
say "Need more kindling"
wait 355
say "Need more kindling"
wait 355
say "Need more kindling"
wait 355
endif
if not findtype 3555 true
dclicktype 3553 backpack
wait 350
while insysmsg "You fail to ignite"
wait 3000
dclicktype "kindling" backpack
wait 350
endwhile
endif
wait 600
endif
#Bot sits and waits on a gate if it has recalled recently
if botAtHome = 1
continue
endif
#spirit speak only if on own boat and corpses present. Do not SS if we have necromancy as we have liches and this is wasted time
if skill "Spirit Speak" > 50 and timer "bardLock" > 10000 and timer "spiritSpeakCheck" > 30000 and 'boardState' = 0 and skill "Necromancy" < 50
if findtype 8198 ground any any 12 as found
overhead "spirit speak"
hotkey 'Spirit Speak'
settimer "spiritSpeakCheck" 0
settimer "bardLock" 8000
endif
endif
if skill "Discordance" > 50 and timer "bardLock" > 10000 and timer "buffDisco" > 300000
overhead "Disco Buff"
skill "Discordance"
wft 2500
targettype 3701
settimer "buffDisco" 0
settimer "bardLock" 0
endif
if skill "Begging" > 50 and timer "bardLock" > 10000 and timer "buffBeg" > 60000
overhead "Begging Buff"
skill "Begging"
settimer "buffBeg" 0
settimer "bardLock" 5000
endif
if skill "Provocation" > 50 and timer "bardLock" > 11000 and timer "buffProvo" > 300000
overhead "Provo Buff"
skill "Provocation"
wft 2500
targettype 3701
settimer "buffProvo" 0
settimer "bardLock" 0
endif
if skill "Peacemaking" >= 20 and timer "bardLock" > 10000 and timer "buffPeace" > 300000
overhead "Peace Buff"
skill "Peacemaking"
wft 2500
targettype 3701
settimer "buffPeace" 0
settimer "bardLock" 0
endif
#Arch Protection
if boardState = 0 and mana > 50 and skill "Magery" > 50 and timer "bardLock" > 10000 and not findbuff "Protection"
cast 'Arch Protection'
waitfortarget 2500
target 'self'
endif
#Bless
if boardState = 0 and mana > 50 and skill "Magery" > 50 and timer "bardLock" > 10000 and not findbuff "Strength"
overhead "Mage Buff"
cast 'Bless'
waitfortarget 2500
target 'self'
wait 750
cast 'Bless'
waitfortarget 2500
target 'self'
wait 750
cast 'Bless'
waitfortarget 2500
target 'self'
wait 750
endif
#I do not know why you would want to do this
if findtype 3976 ground
if triggerOverboard != 2
@setvar defuseBombs 0
say "[reload"
wait 15000
endif
endif
if mana > 50 and skill "Magery" > 50 and timer "bardLock" > 10000 and not findbuff "Reactive Armor" and buffRA = 1
cast 'Reactive Armor'
wait 750
endif
if mana > 50 and skill "Magery" > 50 and timer "bardLock" > 10000 and not findbuff "Magic Reflection" and buffMR = 1
cast 'Magic Reflection'
wait 750
endif
if skill "Taste Identification" > 50 and timer "bardLock" > 10000 and timer "buffTaste" > 60000
overhead "tasteidentification Buff"
skill "tasteid"
wft 2500
targettype 3701 backpack
settimer "buffTaste" 0
settimer "bardLock" 5000
endif
############### ###############
###############Start dynamic walking routine on NPC ###############
############### ###############
#Dynamic walk to hold
if stealTheBooty = 1 and boardState = 1 and bossFight = 0 and stopWalking = 0
#we are looting and we are on an NPC and we are not on a boss
overhead "Move to hold" 23
#ignore our own boat
clearignore
#ignore my own ships hold
foreach holdID in holdIDs
foreach shipHue in shipHues
if findtype holdID ground shipHue as found
ignore found
endif
endfor
endfor
#Clear walklist
clearlist walking
if findtype 16046 ground as foundHold
@setvar npcHold foundHold
pushlist walking "Right, running"
pushlist walking "Up, running"
elseif findtype 15973 ground as foundHold
@setvar npcHold foundHold
pushlist walking "Down, running"
pushlist walking "Right, running"
elseif findtype 16057 ground as foundHold
#south
@setvar npcHold foundHold
pushlist walking "Down, running"
pushlist walking "Left, running"
elseif findtype 16019 ground as foundHold
@setvar npcHold foundHold
pushlist walking "Up, running"
pushlist walking "Left, running"
endif
#druid
if hue npcHold = 2845
wait 600
say "druid BOAT!"
endif
#Vile
if hue npcHold = 2841
wait 600
say "vile BOAT!"
endif
#ossuary
if hue npcHold = 2840
wait 600
say "ossuary BOAT!"
endif
#pirate
if hue npcHold = 2269
wait 600
say "pirate BOAT!"
endif
#merchant
if hue npcHold = 2766
wait 600
say "merchant BOAT!"
endif
#ghost
if hue npcHold = 2955
wait 600
say "ghost BOAT!"
endif
#orc reaver
if hue npcHold = 2141
wait 600
say "reaver BOAT!"
endif
#raider
if hue npcHold = 2927
wait 600
say "raider BOAT!"
endif
#tradesman
if hue npcHold = 2347
wait 600
say "tradesman BOAT!"
endif
#Lizardman
if hue npcHold = 2363
wait 600
say "Lizardman BOAT!"
endif
#explorer
if hue npcHold = 2845
wait 600
say "explorer BOAT!"
endif
#fisherman
if hue npcHold = 2076
wait 600
say "fisherman BOAT!"
endif
#daemon
if hue npcHold = 2740
wait 600
say "daemon BOAT!"
endif
#submerged
if hue npcHold = 2826
wait 600
say "submerged BOAT!"
endif
#start actual walking
while stopWalking = 0
foreach walkDir in walking
#reset walk timer
settimer "walkingTooMuch" 0
while timer "walkingTooMuch" < 2500 and stopWalking = 0
#Roam the boat
walk walkDir
#are we by a hold?
foreach holdID in holdIDs
if findtype holdID ground any any 2 as found
@setvar stopWalking 1
@setvar holdToLoot found
endif
if findtype 5188 ground
dclicktype '5188'
say "[embark"
wait 600
say "[embarkfollowers"
wait 600
@setvar stopWalking 1
@setvar boardState 0
endif
endfor
endwhile
settimer "walkingTooMuch" 0
endfor
endwhile
if stopWalking = 1 and sayLess = 0
wait 500
say "Yarr we got the hold. Lets loot this sucker dry. Just kill tha crew now!" 33
endif
#End of dynamic loot routine
endif
############### ###############
############### Start routines that do not require target ###############
############### ###############
#Check if we are on NPC ship AGAIN
if insysmsg "You board the ship"
@setvar 'boardState' 1
settimer "onBoard" 0
@setvar stopWalking 0
if sayLess = 0
wait 500
say "***Lets Gooooo! (Lets Gooooo!) / If you want it you can get it let me know (let me know)**" 44
endif
endif
#Sanity Embark Check every 20s
if boardState = 0 and closeEnemy = 0
if timer "sanityEmbarkCheck" > 20000 and varexist 'tillerDude'
hotkey 'Cancel Current Target'
dclick tillerDude
wait 200
if insysmsg "were not found"
#try to find tillerman
foreach tillerMenVar in tillerMenList
if findtype tillerMenVar ground as found
overhead "Tillerman Set"
setvar 'tillerDude' 'found'
dclick 'tillerDude'
wait 500
endif
endfor
wait 400
say "[embark"
endif
gumpresponse 21 4216593270
wait 200
if insysmsg "do you wish to disembark"
#cancel current target, we are on a boat
hotkey 'Cancel Current Target'
else
gumpresponse 22 4216593270
wait 100
#we do this to make sure embark worked
say "[embark"
wait 500
say "[embarkfollowers"
endif
settimer 'sanityEmbarkCheck' 0
endif
endif
if timer "sanityEmbarkCheck" > 70000 and not varexist 'tillerDude'
wait 500
say "Why the hell have we not found a tillerman yet???"
endif
#Yell if we are not in fighting party
if insysmsg "You must be a part of your initial embarking"
say "Hey! I am not in the fighting party!!!" 23
wait 500
say "Hey! I am not in the fighting party!!!" 23
wait 500
say "Hey! I am not in the fighting party!!!" 23
wait 500
endif
#check for bombs nearby and defuses them
if defuseBombs = 1
if findtype '5188' ground -1 -1 2
dclicktype '5188'
say "[embark"
wait 600
say "[embarkfollowers"
wait 600
endif
if findtype '5188' ground
dclicktype '5188'
say "[embark"
wait 600
say "[embarkfollowers"
wait 600
endif
endif
#Check if we broke an instrument
if skill "Musicianship" > 50
if insysmsg "What instrument shall you play"
@setvar newInstrument 0
foreach instrumentType in 'instrumentTypes'
if findtype instrumentType as foundInstrument
dclick foundInstrument
@setvar newInstrument 1
endif
endfor
if newInstrument = 0
say "I am out of instruments!!!"
wait 500
say "I am out of instruments!!!"
wait 500
say "I am out of instruments!!!"
wait 500
endif
endif
endif
#meditation routine
if skill "Meditation" > 80 and mana < 30 and timer bardLock >= 10000
skill 'meditation'
settimer "bardLock" 0
endif
#Recall if you are docked
if goHomeBotYouAreDrunk = 1 and timer goHomeBotYouAreDrunkTimer > 15000 and botAtHome = 0 and boardState = 0
clearsysmsg
#Test boat condition
say "[shipmenu"
wait 250
if insysmsg "You must be closer"
#Embark and try again
say "[embark"
wait 500
say "[shipmenu"
wait 200
if insysmsg "You must be closer"
clearignore
unsetvar 'gfto'
while not dead and findtype 8901 'backpack' as 'runeBook'
getlabel 'runeBook' 'runeBookLabel'
if 'Home' in 'runeBookLabel'
setvar 'gtfo' 'runeBook'
overhead 'Set recall to rune book'
break
endif
@ignore 'runeBook'
endwhile
while not dead and findtype 7956 'backpack' as 'runeBook'
getlabel 'runeBook' 'runeBookLabel'
if 'Home' in 'runeBookLabel'
setvar 'gtfo' 'runeBook'
overhead 'Set recall to rune book'
break
endif
@ignore 'runeBook'
endwhile
if not varexist 'gtfo'
say 'You need a book or rune named Home on bot' 33
wait 500
say 'You need a book or rune named Home on bot' 33
wait 500
say 'You need a book or rune named Home on bot' 33
wait 500
elseif skill magery > 60
overhead 'Spell Cast'
cast 'recall'
wft 5000
target 'gtfo'
elseif findtype 8012 'backpack' as recallScrolls
if skill magery > 20
overhead 'Recall Scroll'
#We have magery but prefer scrolls
dclick 'recallScrolls'
wft 5000
target 'gtfo'
else
overhead 'Book use'
#We have loose recalls but recall with book
dclick 'gtfo'
wait 250
gumpresponse 2
endif
else
#Book use
overhead 'Book use'
dclick 'gtfo'
wait 250
gumpresponse 2
endif
#WALK THIS WAY
#Change the 3 numbers at the end of this to where you want to stop and ressupply. Change the walk direction to the direction you need to go
while not dead and not position 4006 904 5
walk 'North'
wait 150
endwhile
if findtype 'storage shelf' ground any any 2 as found
menu found 0
wft 2500
target self
menu found 1
endif
#Change the 3 numbers at the end of this to where you want to stop and wait on a gate. Change the walk direction to the direction you need to go
while not dead and not position 4006 909 0
walk 'South'
wait 150
endwhile
@setvar botAtHome 1
endif
endif
@settimer "goHomeBotYouAreDrunkTimer" 0
#Skip rest of this loop
continue
endif
#Necro Abilities
if skill "Necromancy" > 80
#painspike
if 'boardState' = 1 and timer "painSpkeTimer" > 35000
if findtype 8198 ground any any 10 as found
say '[painspike'
wft 500
target found
wait 350
settimer "painSpkeTimer" 0
endif
#Vamp
elseif 'boardState' = 0 and timer "vampTimer" > 35000
if findtype 8198 ground any any 10 as found
say '[vampiricembrace'
wft 500
target found
settimer "vampTimer" 0
wait 350
endif
endif
endif
#Repair Routine -
if 'closeEnemy' = 0 or bossFight = 1
if bossFight = 1
@setvar repairGunsOrder 3
@setvar repairSailsOrder 2
@setvar repairHullOrder 1
endif
if timer "RepairHull" > 34000
@setvar startRepairs 0
if repairLockdown = 0 or bossFight = 1
@setvar startRepairs 1
elseif timer "onBoard" > 62000 and timer "onBoard" <= 125000
@setvar startRepairs 1
endif
if startRepairs = 1
if repairHullOrder = 1
say '[RepairHull'
elseif repairGunsOrder = 1
say '[RepairGuns'
else
say '[RepairSails'
endif
wait 200
if insysmsg "guns do not need" or insysmsg 'hull does not need' or insysmsg 'sails do not need'
if repairHullOrder = 2
say '[RepairHull'
elseif repairSailsOrder = 2
say '[RepairSails'
else
say '[RepairGuns'
endif
endif
wait 200
if insysmsg "guns do not need" or insysmsg 'hull does not need' or insysmsg 'sails do not need'
if repairGunsOrder = 3
say '[RepairGuns'
elseif repairSailsOrder = 3
say '[RepairSails'
else
say '[RepairHull'
endif
endif
if bossFight = 1 and slowRepairsBosses = 1
settimer "RepairHull" 0
else
settimer "RepairHull" 30000
endif
endif
endif
endif
#Check if we started ar epair and sit around. Also if it's PvP related pouch
if insysmsg 'you cannot move!'
overhead 'Paralyzed!' 34
say [pouch
endif
while findbuff 'Paralyze'
if insysmsg 'you cannot move!'
overhead 'Paralyzed!' 34
say [pouch
endif
wait 100
endwhile
#Put on your clothes
if timer "dressTimer" > 10000
#Try to dress
dress "bow"
settimer "dressTimer" 0
if followers > 1
say "All guard me"
endif
if skill "Magery" > 50
foreach reg in 'regTypes'
if counttype reg < 3
wait 500
say "Hey! I am Low on regs!" 23
wait 500
say "Hey! I am Low on regs!" 23
wait 500
say "Hey! I am Low on regs!" 23
endif
endfor
endif
endif
endif
#Check if we are on NPC ship A THIRD TIME
if insysmsg "You board the ship"
@setvar 'boardState' 1
settimer "onBoard" 0
@setvar stopWalking 0
if sayLess = 0
wait 500
say "***Lets Gooooo! (Lets Gooooo!) / If you want it you can get it let me know (let me know)**" 44
endif
endif
############### ###############
############### Start target search / embark routine ###############
############### ###############
if timer "newTargetCheck" > 2500
#reset timer
settimer "newTargetCheck" 0
@setvar searchNew 1
if varexist 'lastserial'
if targetLock = 1
if noto 'lastserial' = invulnerable
#sysmsg "Testing target is alive"
endif
if insysmsg "not found"
#This status means target is dead
#overhead "Target is dead or out of range. Finding a new one"
else
#Our target appears to be alive still. Do not hunt for a new target
@setvar searchNew 0
endif
endif
endif
if searchNew = 1
#Set this to 1 before we search
@setvar closeEnemy 1
#Start cycline
hotkey 'Next Grey Humanoid Target'
wait 255
if insysmsg 'No one matching that'
hotkey 'Next Grey Monster Target'
wait 255
if insysmsg 'No one matching that'
#Start boss hunt
hotkey "Target random murderer"
wait 255
if insysmsg 'No one matching that'
#We have no target so set close enemy 0
@setvar 'closeEnemy' 0
else
#Found a boss so we want to pretend we are boarded
if sayLess = 0
wait 500
say "***BOSS THEME INTENSIFIES**" 44
endif
@setvar 'boardState' 1
@setvar 'targetLock' 0
@setvar 'discoLock' 0
@setvar 'bossFight' 1
@setvar 'provokeBoss' 1
endif
else
#Found a monster target type
#@setvar 'targetLock' 0
@setvar 'discoLock' 0
endif
else
#Found a humanoid target type
#@setvar 'targetLock' 0
@setvar 'discoLock' 1
endif
#Set up var for last enemy. If no enemy it is time to leave this boat
if closeEnemy = 1
@setvar! 'lastserial' lasttarget
#Embark Routine
elseif 'boardState' = 1
overhead "Done with this fight"
#Skinning Routine
if skill 'Forensic Evaluation' > 20
clearsysmsg
#Wait on skill usage CD
while timer "bardLock" < 10000
wait 100
endwhile
for 3
hotkey 'Forensics'
wait 500
target 'self'
wait 1500
if not insysmsg "You carve" and not insysmsg "anything nearby" and not insysmsg "must wait"
while not insysmsg "successful"
say "I am broken in a Captcha loop. Fix me"
wait 2500
endwhile
endif
endfor
endif
#Dynamic Looting Routine
if stealTheBooty = 1 and stopWalking = 1
if sayLess = 0
say "Crews Dead! I got the gold!" 33
endif
#Open NPC Hold
dclick holdToLoot
wait 250
#Call restock agent
restock 2
wait 250
target holdToLoot
#Wait on looting
while queued
wait 1000
endwhile
#Call restock agent again
restock 2
wait 250
target holdToLoot
#Wait on looting
while queued
wait 1000
endwhile
endif
#Start Embarking
hotkey 'Cancel Current Target'
dclick tillerDude
wait 350
if insysmsg "were not found"
say "[embark"
if findtype "tiller man" ground as found
overhead "Tillerman Set"
setvar 'tillerDude' 'found'
dclick 'tillerDude'
wait 500
endif
endif
gumpresponse 21 4216593270
wait 350
gumpresponse 22 4216593270
wait 350
dclick tillerDude
wait 350
gumpresponse 21 4216593270
wait 350
gumpresponse 22 4216593270
#we do this to make sure embark worked
say "[embark"
wait 500
say "[embarkfollowers"
wait 500
hotkey 'Cancel Current Target'
if reloadCannons = 1
wait 100
say "[reload"
wait 500
endif
settimer "walkingTooMuch" 0
#dump loot Dynamic Looting
if stealTheBooty = 1 and stopWalking = 1 and timer "walkingTooMuch" < 25000
#Find my ship hold and reset ignore since we ignored our own earlier
clearignore
clearlist walking
#set orientation
foreach shipHue in shipHues
if findtype 16046 ground shipHue as found
#overhead "North Facing Boat"
@setvar myShipHold found
pushlist walking "Right, running"
pushlist walking "Up, running"
pushlist walking "Right, running"
pushlist walking "Up, running"
elseif findtype 15973 ground shipHue as found
#overhead "East Facing Boat"
@setvar myShipHold found
pushlist walking "Down, running"
pushlist walking "Right, running"
pushlist walking "Down, running"
pushlist walking "Right, running"
elseif findtype 16057 ground shipHue as found
#overhead "South Facing Boat"
@setvar myShipHold found
pushlist walking "Down, running"
pushlist walking "Left, running"
pushlist walking "Down, running"
pushlist walking "Left, running"
elseif findtype 16019 ground shipHue as found
#overhead "West Facing Boat"
@setvar myShipHold found
pushlist walking "Up, running"
pushlist walking "Left, running"
pushlist walking "Up, running"
pushlist walking "Left, running"
endif
endfor
#start actual walking
overhead "Walking to own hold"
settimer "walkingTooMuch" 0
@setvar dumpDynamicLoot 0
while dumpDynamicLoot = 0
foreach walkDir in walking
while timer "walkingTooMuch" < 1250 and dumpDynamicLoot = 0
#Roam the boat
walk walkDir
#are we by a hold?
foreach holdID in holdIDs
if findtype 'holdID' ground any any 2 as found
@setvar dumpDynamicLoot 1
endif
endfor
endwhile
settimer "walkingTooMuch" 0
endfor
endwhile
#found hold, time to dump
#myShipHold
overhead "At ship hold dumping gold"
dclick myShipHold
wait 600
overhead "Before Dump"
#Search for a pouch in hold
if findtype 3705 myShipHold any any any as foundPack
foreach x in lootTypes
while findtype x backpack any any 1 as found
lift found 9999
drop foundPack -1 -1 0
@ignore myVariable
wait 600
endwhile
endfor
foreach x in ItemTypes
while findtype x backpack as found
@hotkey 'set last target'
@target found
@setvar myVariable lasttarget
wait 100
@getlabel 'myVariable' myLabel
if 'unidentified' in myLabel
sysmsg 'Dumping: ' 33
sysmsg myLabel 65
lift myVariable 1
drop foundPack -1 -1 0
else
sysmsg 'Skipping' 33
sysmsg myLabel 65
endif
ignore myVariable
wait 600
endwhile
endfor
endif
overhead "Dump Done"
if sayLess = 0
say "We have successfully hidden the treasure!" 33
endif
clearignore
#end dump dynamic loot routine
endif
#Reset Variables
@setvar 'boardState' 0
@setvar targetLock targetLockType
@setvar discoLock targetLockType
@setvar stopWalking 0
@setvar firstSighting 0
endif
#end enemy search routine
endif
endif
############### ###############
###############Start routines that require a target###############
############### ###############
if closeEnemy = 1
#attack routine - Always attack so pets go aggro at least if we are not a melee class
attack 'lastserial'
#Turn on war mode because why not
if not warmode
warmode on
endif
#Remove this if you read this far. It kills your own crew if you target my captain
if 'lastserial' = 0x15C5E or 'lastserial' = 0x348287 or 'lastserial' = 0x2E2E1 or 'lastserial' = 0x136133
while not dead
hotkey 'Next Friendly Humanoid Target'
wait 350
@setvar! 'lastserial' lasttarget
attack 'lastserial'
if skill "Discordance" > 50
skill "Discordance"
wft 2500
target 'lastserial'
endif
if skill 'Magery' > 80
overhead "FS!" 33
cast "Flamestrike"
wft 3500
target 'lastserial'
wait 700
endif
if skill "Poisoning" > 50
overhead "Poison Target!" 33
cast "Poison"
wft 1500
target 'lastserial'
wait 400
#try to poison strike
say "[poisonStrike"
wft 1500
target 'lastserial'
wait 300
endif
say "Well, fuck me! I love Brozan!"
endwhile
endif
#herding
if skill 'Herding' > 50 and timer "crookCheck" > 3000 and 'boardState' = 1
#Wait on skill usage CD
while timer "bardLock" < 10000
wait 100
endwhile
#use a crook
say "[FocusAggression"
wft 500
target 'lastserial'
settimer "crookCheck" 0
settimer "bardLock" 7000
endif
#Boss provoke or peace routine
if discoLock = 0 or targetLockType = 2
if skill "Peacemaking" > 50 and timer "provkeBossTimer" > 10500 and bossFight = 1 and provokeBoss = 1
while timer "bardLock" < 10000
wait 100
if diffhits >= 18
continue
endif
endwhile
overhead "Peacing Target!" 33
skill "Peacemaking"
wft 2500
target 'lastserial'
settimer "discoTimer" 0
settimer "bardLock" 5000
settimer "provkeBossTimer" 0
elseif skill "Provocation" > 50 and timer "provkeBossTimer" > 10500 and bossFight = 1 and provokeBoss = 1
while timer "bardLock" < 10000
wait 100
if diffhits >= 18
continue
endif
endwhile
overhead "Provocation Target!" 33
skill "Provocation"
wft 2500
target 'lastserial'
wft 2500
target self
settimer "discoTimer" 0
settimer "bardLock" 5000
settimer "provkeBossTimer" 0
endif
setvar provokeBoss 0
endif
#disco routine
if discoLock = 0 or targetLockType = 2
if skill "Discordance" > 50 and timer "discoTimer" > 5050
while timer "bardLock" < 10000
wait 100
if diffhits >= 18
continue
endif
endwhile
overhead "Disco Target!" 33
skill "Discordance"
wft 2500
target 'lastserial'
settimer "discoTimer" 0
settimer "bardLock" 5000
endif
endif
#poison routine
if skill "Poisoning" > 50 and mana >= 35 and diffhits <= 18
#overhead "Poison Target!" 33
cast "Poison"
wft 4500
target 'lastserial'
wait 400
while upgradePoison = 1 and insysmsg "upgraded to greater"
overhead "Got it"
cast "Poison"
wft 4500
target 'lastserial'
wait 400
endwhile
if 'boardState' = 1 and timer "poisonStrikeTimer" > 35000
#try to poison strike
say "[poisonStrike"
wft 500
target 'lastserial'
settimer "poisonStrikeTimer" 0
endif
if skill "Discordance" <= 50
#Bump timer so we jump to a new target
settimer newTargetCheck 5000
endif
endif
#Flamestrike
if skill 'Magery' > 80 and skill 'Archery' < 80 and diffhits <= 18 and 'boardState' = 1 and mana >= 61
wait 400
cast "Flamestrike"
wft 3500
target 'lastserial'
wait 400
if sayLess = 0
say "So anyway I started blastin" 33
endif
wait 300
endif
#Pet attack
if followers > 1 and timer "petAttack" > 2500
say "All kill"
wft 1500
target 'lastserial'
settimer "petAttack" 0
endif
#Check for humanoid type ships and set new target faster
if 'discoLock' = 1
#Bump timer so we jump to a new target
settimer newTargetCheck 5000
endif
#Mass Curse
if skill 'Magery' > 70 and skill 'Archery' < 80 and diffhits <= 18 and 'boardState' = 0 and mana >= 61 and massCurseToggle = 1 and firstSighting = 0
wait 400
cast 'Mass Curse'
wft 3500
target 'lastserial'
wait 400
if sayLess = 0
say "I curse ye to a watery grave!" 33
endif
wait 300
@setvar firstSighting 1
endif
#end target required routines
endif
endwhile To view full description:
https://discord.com/channels/290936867199909888/907657216025313331/950433861437915177