- ;=========================================
- ; Script Name: Uncle Dave's Tamer Plus
- ; Author: Uncle Dave
- ; Version: 4.2
- ; Client Tested with: 4.0.9b
- ; EUO version tested with: 1.42.00A3
- ; Shard OSI / FS: OSI Tested Only
- ; Revision Date: 3/24/2005
- ; Public Release: 6/10/2004
- ; Global Variables Used: None
- ; Purpose: Finds animals that will give
- ; you the best gains and tames the closest
- ; animal to your current location.
- ;=========================================
- ;
- ; The following table was generated from data gathered off the UO Stratics
- ; taming page. Analysing their results produces a success rate calculation
- ; based upon the character's Animal Taming skill only. Modifying the Animal
- ; Lore did not produce any noticable changes in the success rates.
- ;
- ; The formula determined for calculating success rate is R = (S - B) * 2 where
- ; R is the success rate, S is the character's taming skill, and B is the
- ; minumum skill required to tame minus 0.1 (this is the base skill
- ; requirement). Using basic algebra and solving for S provides a formula that
- ; can can be used calculate the skill required to achieve a specific success
- ; rate (S = R / 2 + B). This formula is used in the table below to determine
- ; which creatures will provide the best chances to recieve a gain while
- ; taming.
- ;
- ; Column descriptions:
- ;
- ; ANIMAL The name of the animal to tame
- ; REQ SKILL The minimum skill required to tame
- ; MIN GAIN The skill level that has a 10% success rate
- ; MAX GAIN The skill level that has an 90% success rate
- ; C/M Monster (Yes/No)
- ; TYPE EasyUO FindItem type for animal
- ;
- ; REQ MIN MAX
- ; ANIMAL SKILL GAIN GAIN C/M TYPE
- ; ----------------- ----- ----- ----- --- ----
- ; Dog -21.3 -17 23 N HG
- ; Gorilla -18.9 -14 26 N RD
- ; Jack Rabbit -18.9 -14 26 N NF
- ; Mongbat -18.9 -14 26 Y BE
- ; Rabbit -18.9 -14 26 N NF
- ; Skittering Hopper -12.9 -8 32 N GO
- ; Bird -6.9 -2 38 N WC
- ; Cat -0.9 4 44 N RF
- ; Chicken -0.9 4 44 N AG
- ; Mountain Goat -0.9 4 44 N KB
- ; Rat -0.9 4 44 N WG
- ; Sewer Rat -0.9 4 44 N WG
- ; Cow 11.1 16 56 N IG_NG
- ; Goat 11.1 16 56 N ZF
- ; Pig 11.1 16 56 N JF
- ; Sheep 11.1 16 56 N TF_PF
- ; Eagle 17.1 22 62 N TC
- ; Bullfrog 23.1 28 68 N BB
- ; Hind 23.1 28 68 N TG
- ; Slime 23.1 28 68 Y VE
- ; Timber Wolf 23.1 28 68 N PG
- ; Boar 29.1 34 74 N CO
- ; Desert Ostard 29.1 34 74 N CG
- ; Forest Ostard 29.1 34 74 N JG
- ; Giant Beetle 29.1 34 74 Y ZGB
- ; Giant Rat 29.1 34 74 N XF
- ; Horse 29.1 34 74 N SF_MG_SG_OF
- ; Pack Horse 29.1 34 74 N BO
- ; Pack Llama 29.1 34 74 N WN
- ; Rideable Llama 29.1 34 74 N EG
- ; War Horse 29.1 34 74 N QC
- ; Black Bear 35.1 40 80 N BG
- ; Llama 35.1 40 80 N EG
- ; Polar Bear 35.1 40 80 N VF
- ; Walrus 35.1 40 80 N DG
- ; Brown Bear 41.1 46 86 N ZI
- ; Cougar 41.1 46 86 N ZE
- ; Deathwatch Beetle 41.1 46 86 Y IH
- ; Alligator 47.1 52 92 N UF
- ; Scorpion 47.1 52 92 Y UE
- ; Grey Wolf 53.1 58 98 N VD
- ; Panther 53.1 58 98 N YF_DG
- ; Snow Leopard 53.1 58 98 N L_M_YF_DG
- ; Giant Spider 59.1 64 104 Y SD
- ; Great Hart 59.1 64 104 N AH
- ; Grizzly Bear 59.1 64 104 N WF
- ; Snake 59.1 64 104 N QE
- ; White Wolf 65.1 70 110 N GE_ZD_L_M_YF_DG
- ; Gaman 68.7 73 113 N OH
- ; Bull 71.1 76 116 N YG_XG
- ; Giant Ice Worm 71.1 76 116 N
- ; Hellcat (Small) 71.1 76 116 Y RF
- ; Mongbat (Strong) 71.1 76 116 Y
- ; Frost Spider 74.7 79 119 Y KD
- ; Frenzied Ostard 77.1 82 122 N KG
- ; Giant Toad 77.1 82 122 N CB
- ; Bake Kitsune 80.7 85 125 Y EH
- ; Lava Lizard 80.7 85 125 Y QF
- ; Dire Wolf 83.1 88 128 N LD
- ; Imp 83.1 88 128 Y W
- ; Ridgeback 83.1 88 128 N WJ
- ; Savage Ridgeback 83.1 88 128 N
- ; Drake 84.3 89 129 Y YE_XE
- ; Hell Hound 85.5 90 130 Y UB
- ; Hellcat (Large) 89.1 94 134 Y NC
- ; Dragon 93.9 98 138 Y CD_DF
- ; Fire Beetle 93.9 98 138 Y JJ
- ; Rune Beetle 93.9 98 138 Y CH
- ; Swamp Dragon 93.9 98 138 Y MHB
- ; Ki-Rin 95.1 100 140 Y SH
- ; Nightmare 95.1 100 140 Y TJ
- ; Unicorn 95.1 100 140 Y SC
- ; White Wyrm 96.3 101 141 Y TE
- ; Hiryu 98.7 103 143 Y HH
- ; Lesser Hiryu 98.7 103 143 Y HH
- ; Fire Steed 106 110 150 Y YJ
- ;
- ; TAMING MESSAGES
- ; It's too far away.
- ; You can't see that.
- ; You can't tame that!
- ; That animal looks tame already.
- ; That creature cannot be tamed.
- ; Someone else is already taming that creature.
- ; You have too many followers to tame that creature.
- ; You have no chance of taming this creature.
- ; You seem to anger the beast.
- ; *You start to tame the creature.*
- ; You fail to tame the creature.
- ; You are too far away to continue taming.
- ; You do not have a clear path to the animal you are taming, and must cease your attempt.
- ; The animal is too angry to continue taming.
- ; The animal has been distracted, and you cannot continue taming.
- ; It seems to accept you as master.
- ; <petname> appears to have decided that it is better off without a master!
- ;
- initevents
- gosub InitMenu
- gosub InitAnimalTaming
- gosub InitPickupRegs
- loop:
- gosub Dispatch
- goto loop
- sub InitMenu
- menu clear
- menu window title Uncle Dave's Tamer Plus 4.2
- menu window size 320 300
- menu window color $E0E0E0
- menu font bgcolor $E0E0E0
- menu font name MS Sans Serif
- menu font size 8
- menu font style b
- menu text lblmovement 10 5 Features
- menu font style n
- menu check autotame 10 20 130 15 #false Auto Tame Creatures
- menu check pickupregs 10 35 130 15 #false Pickup Reagents
- menu font style b
- menu text lblrelease 10 55 Release Option
- menu font style n
- menu check releasecontext 10 70 130 15 #false Context Menu
- menu check releaserename 10 85 130 15 #false Rename & Release
- menu check relrenonly 10 100 130 15 #false Rename & Release only
- menu check releasekill 10 115 130 15 #false Mage/Necro Kill
- menu font style b
- menu text lblmisc 10 130 Character Movement
- menu font style n
- menu check dontmove 10 144 130 15 #false Don't Move Character
- menu check returnstart 10 160 130 15 #false Return To Start
- menu font style b
- menu text lblstatistics 150 5 Statistics
- menu font style n
- menu text lbltameskill 150 20 Animal Taming:
- menu text lblloreskill 150 35 Animal Lore:
- menu text lbltameid 150 50 Animal Id:
- menu text lbltamecount 150 65 Attempts:
- menu font align right
- menu text tameskill 310 20 0/0
- menu text loreskill 310 35 0/0
- menu text tameid 310 50 N/A
- menu text tamecount 310 65 0
- menu font align left
- menu button manualtame 150 90 80 25 Manual Tame
- menu button resetstart 150 115 80 25 Reset Start
- menu button ignorecurrent 230 90 80 25 Ignore Current
- menu button resetignore 230 115 80 25 Reset Ignore
- menu button setregcont 150 140 160 25 Set Reagent Container
- menu shape bgstatus 0 175 320 17 3 7 1 $999999 7 $E0E0E0
- menu font color $666666
- menu text lblstatus 5 177 Status:
- menu text status 40 177 Initializing
- gosub MenuUpdateStats
- menu show
- menu HideEUO
- set #menubutton N/A
- return
- sub InitAnimalTaming
- event macro 8 2 ; open status
- wait 1s
- set %statusposx #contposx
- set %statusposy #contposy
- set %charstartx #charposx
- set %charstarty #charposy
- set %charstartz #charposz
- set %tameskill -1
- set %tameigtimer 0
- set %tamecount 0
- set %tameid N/A
- return
- sub InitPickupRegs
- set %reagents KUF_JUF_MZF_JZF_KZF_WZF_RZF_SZF
- event macro 8 7 ; open backpack
- wait 1s
- return
- sub Dispatch
- menu set status Idle
- gosub ScriptIdletime
- gosub TamingCheckSkill
- set %finditems N/A
- menu get autotame
- if #menures = #true
- {
- gosub TamingIgnore reset
- set %finditems %tameable
- }
- menu get pickupregs
- if #menures = #true
- {
- if %finditems = N/A
- set %finditems %reagents
- else
- set %finditems %finditems , _ , %reagents
- }
- gosub FindClosestItem %finditems
- if %finddist = N/A
- {
- menu get returnstart
- if #menures = #true
- {
- gosub PathfindWait %charstartx %charstarty %charstartz
- if %moveres = error
- menu set returnstart #false
- }
- }
- if %finddist <> N/A
- {
- if %findtype in %tameable
- gosub Taming %findid
- if %findtype in %reagents
- gosub PickupRegs %findid
- }
- return
- sub ScriptIdletime
- if #menubutton = manualtame 2
- set #menubutton N/A
- gosub TamingManual
- if #menubutton = resetignore 2
- set #menubutton N/A
- ignoreitem reset
- if #menubutton = resetstart 4
- set #menubutton N/A
- set %charstartx #charposx
- set %charstarty #charposy
- set %charstartz #charposz
- if #menubutton = setregcont 2
- set #menubutton N/A
- gosub SetReagentContainer
- gosub MenuUpdateStats
- gosub PickupRegsNearby
- return
- sub MenuUpdateStats
- chooseskill anim
- str right #skill 1
- set %_skilldec #strres
- set %_skill #skill / 10
- set %_skillcap #skillcap / 10
- menu set tameskill %_skill , #dot , %_skilldec , / , %_skillcap
- chooseskill anil
- str right #skill 1
- set %_skilldec #strres
- set %_skill #skill / 10
- set %_skillcap #skillcap / 10
- menu set loreskill %_skill , #dot , %_skilldec , / , %_skillcap
- menu set tameid %tameid
- menu set tamecount %tamecount
- return
- sub Taming
- if #followers >= #maxfol
- {
- display ok You have too many followers
- menu set autotame #false
- return
- }
- finditem %1 G_16
- if #findkind = -1
- return
- set %tameid #findid
- set %tametype #findtype
- set %tamedist #finddist
- if %tameid <> #ltargetid
- event exmsg %tameid 3 30 Pick me!
- set %tamecount 0
- gosub MenuUpdateStats
- gosub TameAnimal
- set %tameid N/A
- return
- sub TamingManual
- if %tameid <> N/A
- {
- event sysmessage You are already taming something.
- return
- }
- menu set status Waiting For Target
- gosub GetTargetId
- gosub Taming #ltargetid
- return
- sub TamingCheckSkill
- menu get autotame
- if #menures = #false
- return
- chooseskill anim
- if %tameskill = #skill
- return
- set %tameskill #skill
- ; ---------------------------------------------------
- ; this chart was auto-generated using TamingChart.xls
- ; ---------------------------------------------------
- ; wyspa
- if %tameskill >= 0 && %tameskill < 720
- set %tameable GE_ZD_L_M_YF_DG
- ;bulle
- if %tameskill >= 720 && %tameskill < 960
- set %tameable YG_XG
- ;unikorn
- if %tameskill >= 960 && %tameskill < 1200
- set %tameable SC
- gosub TamingIgnore gain
- return
- sub TamingIgnore
- if %1 = perm
- {
- ignoreitem %2
- return
- }
- if %1 = temp
- {
- ignoreitem %2 1
- set %tameigtimer #systime + 60000
- return
- }
- if %1 = reset && #systime > %tameigtimer
- {
- ignoreitem reset 1
- return
- }
- if %1 = skill
- {
- ignoreitem %2 2
- return
- }
- if %1 = gain
- {
- ignoreitem reset 2
- return
- }
- return
- sub TameAnimal
- menu set status Starting To Tame
- TamingLoop:
- finditem %tameid G_16
- if #findkind = -1
- {
- return
- }
- if #finddist > 2
- {
- menu set status Too Far Away
- gosub PathfindWait #findx #findy #findz
- if %moveres = error
- {
- gosub TamingIgnore temp %tameid
- return
- }
- if #menubutton = ignorecurrent
- {
- set #menubutton N/A
- gosub TamingIgnore perm %tameid
- return
- }
- gosub ScriptIdletime
- goto TamingLoop
- }
- set %tamecount %tamecount + 1
- set %tamejournal #jindex + 1
- set %tamefollow #followers
- set #ltargetid %tameid
- set #ltargetkind 1
- event macro 13 35 ; animal taming
- target 2s
- event macro 22 0 ; last target
- gosub TamingMonitor
- if #result = success
- {
- gosub TamingRelease
- gosub TamingIgnore perm %tameid
- return
- }
- if #result = retry
- {
- gosub ScriptIdletime
- goto TamingLoop
- }
- if #result = retrylater
- {
- gosub TamingIgnore temp %tameid
- return
- }
- if #result = ignore
- {
- gosub TamingIgnore perm %tameid
- return
- }
- if #result = cancel
- {
- menu set autotame #false
- return
- }
- if #result = skill
- {
- gosub TamingIgnore skill %tameid
- return
- }
- gosub ScriptIdletime
- goto TamingLoop
- return
- sub TamingMonitor
- set %movetimer 0
- set %tametimer #systime + 15000
- TamingMonitorLoop:
- if #jindex >= %tamejournal
- {
- scanjournal %tamejournal
- set %tamejournal %tamejournal + 1
- if start_to_tame in #journal
- menu set status Taming Animal
- if seems_to_accept in #journal
- return success
- if anger_the_beast in #journal
- return retry
- if fail_to_tame in #journal
- return retry
- if too_far in #journal
- return retry
- if clear_path in #journal
- return retry
- if too_many_followers in #journal
- return cancel
- if can't_see_that in #journal
- return retrylater
- if too_angry in #journal
- return retrylater
- if distracted in #journal
- return retrylater
- if someone_else in #journal
- return retrylater
- if tame_already in #journal
- return ignore
- if cannot_be_tamed in #journal
- return ignore
- if can't_tame_that in #journal
- return ignore
- if no_chance in #journal
- return skill
- }
- if #followers > %tamefollow
- return success
- if #menubutton = ignorecurrent
- return ignore
- if #systime > %tametimer
- return retry
- finditem %tameid G_16
- if #findkind = -1
- return retry
- if #finddist > 3 && #systime > %movetimer
- {
- menu get dontmove
- if #menures = #false
- event pathfind #findx #findy #findz
- set %movetimer #systime + 1500
- }
- gosub ScriptIdletime
- goto TamingMonitorLoop
- return
- sub TamingRelease
- menu get releasecontext
- if #menures = #false
- {
- menu get releaserename
- if #menures = #false
- {
- event macro 1 0 All Follow Me
- return
- }
- }
- menu set status Releasing Animal
- set %attempt 0
- set %adjust #false
- set %tamefollow #followers
- event macro 1 0 All Stay
- wait 10
- gosub GetAnimalDisplacement
- TamingReleaseLoop:
- ;if #contid = #charid
- ;{
- ; event macro 8 2
- ; wait 10
- ; contpos %statusposx %statusposy
- ; wait 10
- ;}
- ;if #contid = %tameid
- ;{
- gosub TamingRename
- wait 2s
- event macro 1 0 JewJew Release
- wait 3s
- ;}
- if #contname = generic_gump
- {
- ;if #contsize = 118_186
- ;{
- ; set %xx #contposx + 50
- ; set %yy #contposy + 165
- ; click %xx %yy F
- ; wait 1s
- ;}
- if #contsize = 270_120
- {
- set %xx #contposx + 30
- set %yy #contposy + 90
- click %xx %yy
- wait 1s
- }
- ;else
- ;{
- ; set %xx #contposx + 50
- ; set %yy #contposy + 10
- ; click %xx %yy R
- ; wait 15
- ;}
- }
- if #followers < %tamefollow
- {
- menu get releasekill
- if #followers < 1
- {
- menu get releasekill
- if #menures = #true
- gosub TamingKill
- return
- }
- ; else
- ; {
- ; goto TamingReleaseLoop
- ; }
- set %attempt ( %attempt % 5 ) + 1
- finditem %tameid
- if #findkind = -1
- return
- if %attempt > 1 && #finddist > 3
- {
- event macro 1 0 All Stay
- event pathfind #findx #findy #findz
- wait 2s
- set %attempt 0
- goto TamingReleaseLoop
- }
- if #finddist = 0
- set %adjust #true
- if #finddist = 1
- {
- set %deltax #findx - #charposx
- set %deltay #findy - #charposy
- if %deltay < 0 && %deltax = 0
- set %adjust #true
- if %deltay < 0 && %deltax < 0
- set %adjust #true
- if %deltay = 0 && %deltax < 0
- set %adjust #true
- }
- if %adjust = #true
- {
- if %attempt = 1
- {
- event macro 5 7 ; walk west
- event macro 5 7 ; walk west
- wait 1s
- }
- if %attempt = 2
- {
- event macro 5 2 ; walk north east
- event macro 5 2 ; walk north east
- event macro 5 2 ; walk north east
- wait 1s
- }
- if %attempt = 3
- {
- event macro 5 6 ; walk south west
- event macro 5 6 ; walk south west
- event macro 5 6 ; walk south west
- wait 1s
- }
- if %attempt = 4
- {
- event macro 5 1 ; walk north
- event macro 5 1 ; walk north
- event macro 5 1 ; walk north
- wait 1s
- }
- if %attempt = 5
- {
- event macro 5 4 ; walk south east
- event macro 5 4 ; walk south east
- event macro 5 4 ; walk south east
- event macro 5 4 ; walk south east
- wait 1s
- }
- set %adjust #false
- goto TamingReleaseLoop
- }
- finditem %tameid
- if #findkind = -1
- return
- gosub GetScreenXY #findx #findy #findz 0 %screenydisp
- menu get releasecontext
- if #menures = #true
- {
- click %screenx %screeny F
- wait 1s
- goto TamingReleaseLoop
- }
- menu get releaserename
- if #menures = #true
- {
- ;click %screenx %screeny L
- ;wait 1s
- ;click %screenx %screeny P
- ;wait 1s
- ;goto TamingReleaseLoop
- }
- event macro 1 0 All Follow Me
- return
- sub TamingRename
- exevent RenamePet #LTARGETID JewJew
- wait 1s
- return
- sub TamingRenameZZZ
- menu set status Ranaming Animal
- contpos 5 30
- wait 5
- set %screenx #contposx + 130
- set %screeny #contposy + 20
- click %screenx %screeny
- for %i 1 5
- {
- key RIGHT
- }
- for %i 1 20
- {
- key BACK
- }
- msg JewJew$
- wait 1s
- click %screenx %screeny r
- wait 2s
- return
- sub TamingKill
- menu set status Killing Animal
- TamingKillLoop:
- finditem %tameid
- if #findkind = -1
- return
- if #mana < 50
- {
- chooseskill medi
- if #skill > 500
- {
- event macro 13 46 ; meditation
- wait 11s
- goto TamingKillLoop
- }
- else
- {
- event sysmessage You must have at least 50 skill Meditation to use this option.
- menu set releasekill #false
- return
- }
- }
- set #ltargetid %tameid
- set #ltargetkind 1
- chooseskill eval
- if #skill >= 800
- event macro 15 54 ; flame strike
- else
- {
- chooseskill necr
- if #skill >= 800
- event macro 15 109 ; pain strike
- else
- {
- event sysmessage You must have at least 80 skill in Necromancy or Evaluating Intelligence to use this option.
- menu set releasekill #false
- return
- }
- }
- target 6s
- event macro 22 0 ; last target
- wait 2s
- goto TamingKillLoop
- return
- ; clickScreenXYZ by ScriptFellow modded by Roadkill
- ; Mods by UncleDave
- sub GetScreenXY
- set %1 ( %1 - #charposx ) * 22 ; world x-coordinate
- set %2 ( #charposy - %2 ) * 22 ; world y-coordinate
- set %3 ( %3 - #charposz ) * 4 ; world z-coordinate
- if %0 < 4 || %4 = N/A
- set %4 0 ; x displacement, added to screen coordinate
- if %0 < 5 || %5 = N/A
- set %5 35 ; y displacement, added to screen coordinate
- set %screenx #clileft + #clixres / 2 + %1 + %2 + %4
- set %screeny #clitop + #cliyres / 2 + %1 - %2 - %3 + %5
- set %offscreen #true
- if %screenx > #clileft &&
- + %screeny > #clitop &&
- + %screenx < ( #clileft + #clixres ) &&
- + %screeny < ( #clitop + #cliyres )
- {
- set %offscreen #false
- ;click %screenx %screeny F
- }
- return
- ; GetYDisplacementForAnimType by Roadkill
- ; Mods by UncleDave
- sub GetAnimalDisplacement
- set %screenydisp -32
- if %tametype in GE_ZD_L_M_TF__IG_NG__ZF_PF_EG_CO_TG_PG_VD
- set %screenydisp -25
- if %tametype in AH
- set %screenydisp -45
- if %tametype in DG_AG_WC_RF_WG_TC
- set %screenydisp -15
- return
- sub SetReagentContainer
- if %tameid <> N/A
- {
- event sysmessage You must wait until you are finished taming.
- return
- }
- event sysmessage Target the container to drop reagents.
- gosub GetTargetId
- set %regcont #ltargetid
- return
- sub PickupRegs
- finditem %1 G_16
- if #findkind = -1
- return
- menu set status Picking Up Reagents
- set %regsid #findid
- set %regsdist #finddist
- if %regsdist > 2
- {
- gosub PathfindWait #findx #findy #findz
- if %moveres = error
- {
- ignoreitem %regsid
- return
- }
- }
- gosub GetContainerPos %regcont
- if #result = #false
- {
- event sysmessage Unable to find reagent container.
- menu set pickupregs #false
- return
- }
- set %js #jindex
- event drag %regsid
- wait 10
- if #contname = stack_gump
- key ENTER
- set %je #jindex
- for %ji %js %je
- {
- scanjournal %ji
- if can_not_pick in #journal 2
- ignoreitem %regsid
- return
- }
- click %contdropx %contdropy
- wait 10
- return
- sub PickupRegsNearby
- menu get pickupregs
- if #menures = #false
- return
- finditem %reagents G_2
- if #findkind <> -1
- gosub PickupRegs #findid
- return
- sub FindClosestItem
- finditem %1 G_16
- set %findid #findid
- set %findtype #findtype
- set %finddist #finddist
- if #findcnt > 1
- {
- for %i 1 #findcnt
- {
- finditem %1 %i G_16
- if #findkind <> -1 && #finddist < %finddist
- {
- set %findid #findid
- set %findtype #findtype
- set %finddist #finddist
- }
- }
- }
- return
- sub GetTargetId
- set #ltargetid N/A
- set #targcurs 1
- GetTargetIdLoop:
- if #targcurs = 1
- goto GetTargetIdLoop
- return
- sub PathfindWait
- set %moveres unknown
- menu get dontmove
- if #menures = #true
- return
- if #charposx = %1 && #charposy = %2
- {
- set %moveres success
- return
- }
- set %js #jindex
- event pathfind %1 %2 %3
- wait 10
- set %je #jindex
- for %ji %js %je
- {
- scanjournal %ji
- if pathfinding in #journal
- {
- set %movex #charposx
- set %movey #charposy
- set %movetimer #systime + 500
- PathfindWaitLoop:
- if #systime < %movetimer
- goto PathfindWaitLoop
- if %movex = %1 && %movey = %2
- {
- set %moveres success
- return
- }
- if %movex = #charposx && %movey = #charposy
- {
- set %moveres stopped
- return
- }
- set %movex #charposx
- set %movey #charposy
- set %movetimer #systime + 500
- goto PathfindWaitLoop
- }
- if can't_get_there in #journal
- {
- set %moveres error
- return
- }
- }
- return
- sub GetContainerPos
- finditem %1 C
- if #findkind = -1
- return #false
- if #findtype = ZJF 5 ; backpack
- set %contposx #findx + 22
- set %contposy #findy + 16
- set %contdropx #findx + 22
- set %contdropy #findy + 12
- return #true
- if #findtype = CKF 5 ; bag
- set %contposx #findx + 22
- set %contposy #findy + 15
- set %contdropx #findx + 21
- set %contdropy #findy + 10
- return #true
- if #findtype = LKF 5 ; pouch
- set %contposx #findx + 22
- set %contposy #findy + 13
- set %contdropx #findx + 25
- set %contdropy #findy + 7
- return #true
- return #false