-
Notifications
You must be signed in to change notification settings - Fork 4
/
questport.lua
35 lines (35 loc) · 1.13 KB
/
questport.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
--Sends you to the location of your quest log cursor.
--Don't try to travel normally while in forbidden travel areas (mountains, lairs) and you can questport out.
local gui=require 'gui'
local qp=df.global.gview.view.child
local qmap=dfhack.gui.getCurViewscreen()
local qarm=df.global.world.armies.all
if df.viewscreen_adventure_logst:is_instance(qmap) then
local qx=qmap.cursor_x*48
local qy=qmap.cursor_y*48
local rx=qmap.player_region_x*48
local ry=qmap.player_region_y*48
df.global.ui_advmode.unk_1=qx
df.global.ui_advmode.unk_2=qy
if df.global.ui_advmode.menu==0 then
gui.simulateInput(qp.child,'LEAVESCREEN')
df.global.ui_advmode.menu=26
df.global.ui_advmode.travel_not_moved=true
gui.simulateInput(qp,'CURSOR_DOWN')
dfhack.timeout(15,'frames',function()
gui.simulateInput(qp,'A_TRAVEL_LOG') end)
elseif df.global.ui_advmode.menu==26 then
for k,v in ipairs(qarm) do
if v.flags[0] then
local my_arm=df.global.world.armies.all[k].pos
if (rx~=qx or ry~=qy) then do
my_arm.x=qx
my_arm.y=qy
qmap.player_region_x=qmap.cursor_x
qmap.player_region_y=qmap.cursor_y
end
end
end
end
end
end