Map Decoder by arktik
Description: Decode every map in your backpack and optionally every map in your tomes.
1# Resource Map Decoder v1.0.1 by Arktik
2#
3# Set to 1 if you want to restock maps from tomes when backpack has no maps
4# Set to 0 if you do NOT want to restock maps from tomes when backpack has no maps
5@setvar! map_restock 1
6
7# If you want to restock spyglasses, add them to your shelf loadout
8# Set to 1 if you want to restock spyglasses from shelf when backpack has none
9# Set to 0 if you do NOT want to restock spyglasses from shelf when backpack has none
10@setvar! spyglass_restock 0
11
12@setvar! timeout 650
13@setvar! short_timeout 200
14
15@setvar! ore_gump 3367641484
16@setvar! skinning_gump 3473029237
17@setvar! lumber_gump 1332805401
18@setvar! treasure_gump 1520869851
19@setvar! fishing_gump 2589357942
20@clearignore
21
22if not listexists undecoded_map_list
23 createlist undecoded_map_list
24else
25 clearlist undecoded_map_list
26endif
27
28// Refill Spyglasses
29if spyglass_restock == 1
30 if not findtype "spyglass" backpack
31 if findtype "storage shelf" ground -1 -1 2 as shelf
32 menu shelf 1
33 wait short_timeout
34 endif
35
36 for 12
37 say "Need spyglass" 34
38 wait 5000
39 if findtype "spyglass" backpack
40 break
41 endif
42 endfor
43 endif
44endif
45
46if map_restock == 1
47 // Tome Gumps
48 if not listexists tome_gump_list
49 createlist tome_gump_list
50 else
51 clearlist tome_gump_list
52 endif
53 // treasure tome gump
54 pushlist tome_gump_list 1863945839
55 // lumber tome gump
56 pushlist tome_gump_list 3576069391
57 // ore tome gump
58 pushlist tome_gump_list 1667380559
59 // fishing tome gump
60 pushlist tome_gump_list 3448468591
61 // skinning tome gump
62 pushlist tome_gump_list 4027121519
63
64 foreach tome_gump in tome_gump_list
65 gumpclose tome_gump
66 endfor
67
68 // Tome Hues
69 if not listexists tome_hue_list
70 createlist tome_hue_list
71 else
72 clearlist tome_hue_list
73 endif
74 // Treasure
75 pushlist tome_hue_list 2990
76 // Lumber
77 pushlist tome_hue_list 2799
78 // Ore
79 pushlist tome_hue_list 2796
80 // Fishing
81 pushlist tome_hue_list 2722
82 // Skinning
83 pushlist tome_hue_list 2651
84
85 for 5
86 if poplist tome_hue_list front as tome_hue
87 if poplist tome_gump_list front as tome_gump
88 if findtype 29104 ground tome_hue any 2 as tome
89 dclick tome
90 wait timeout
91 gumpresponse 3 tome_gump
92 wait short_timeout
93 gumpresponse 10 tome_gump
94 wait short_timeout
95 gumpresponse 11 tome_gump
96 wait short_timeout
97 gumpresponse 12 tome_gump
98 wait short_timeout
99 gumpresponse 13 tome_gump
100 wait short_timeout
101 gumpresponse 14 tome_gump
102 wait short_timeout
103 gumpresponse 15 tome_gump
104 wait short_timeout
105 gumpresponse 16 tome_gump
106 wait short_timeout
107 gumpresponse 17 tome_gump
108 wait short_timeout
109 if tome_hue != 2990
110 gumpresponse 18 tome_gump
111 wait short_timeout
112 endif
113 gumpclose tome_gump
114 wait timeout
115 endif
116 endif
117 endif
118 endfor
119endif
120
121// Close map gumps
122gumpclose ore_gump
123gumpclose skinning_gump
124gumpclose lumber_gump
125gumpclose treasure_gump
126gumpclose fishing_gump
127
128
129@clearignore
130while findtype "map" backpack as resource_map
131 getlabel resource_map desc
132 overhead desc
133
134 if "[100.0%" in desc or "(100.0%" in desc
135 @ignore resource_map
136 else
137 // Find number of undecoded maps left
138 if findtypelist undecoded_map_list "map" backpack any
139 endif
140 for 200
141 if list undecoded_map_list = "index"
142 @setvar! num_undecoded_maps "index"
143 break
144 endif
145 endfor
146 if num_undecoded_maps == 0
147 elseif num_undecoded_maps == 1
148 overhead "{{num_undecoded_maps}} map to decode" 88
149 else
150 overhead "{{num_undecoded_maps}} maps to decode" 88
151 endif
152
153 // Check for spyglasses
154 if findtype "spyglass" backpack as glass
155 dclick glass
156 elseif spyglass_restock == 1
157 replay
158 else
159 for 12
160 say "Out of Spyglasses!" 34
161 wait 5000
162 endfor
163 endif
164 wft 1500
165 target resource_map
166
167 // Select gump for current map
168 @setvar! gumpIdToCheck 0
169 if "ore" in desc
170 @setvar! gumpIdToCheck ore_gump
171 elseif "skinning" in desc
172 @setvar! gumpIdToCheck skinning_gump
173 elseif "lumber" in desc
174 @setvar! gumpIdToCheck lumber_gump
175 elseif "treasure" in desc
176 @setvar! gumpIdToCheck treasure_gump
177 elseif "fishing" in desc
178 @setvar! gumpIdToCheck fishing_gump
179 else
180 overhead "Unknown gump!" 34
181 endif
182
183 waitforgump gumpIdToCheck 1000
184
185 // Decode the map
186 overhead "Updating..."
187 clearsysmsg
188 while gumpexists gumpIdToCheck
189 getlabel resource_map desc
190 if "[100.0%" in desc or "(100.0%" in desc
191 gumpclose gumpIdToCheck
192 @ignore resource_map
193 else
194 gumpresponse 4 gumpIdToCheck
195 wait timeout
196 endif
197 endwhile
198 endif
199
200 wait short_timeout
201endwhile
202
203// Restock all maps back into tomes
204@clearignore
205while findtype 29104 ground -1 -1 2 as tome
206 menu tome 0
207 wait short_timeout
208 @ignore tome
209endwhile