Skip to content

Instantly share code, notes, and snippets.

@warmist
Last active December 14, 2015 12:59
Show Gist options
  • Save warmist/5090571 to your computer and use it in GitHub Desktop.
Save warmist/5090571 to your computer and use it in GitHub Desktop.
Adv mode teleportation cheat in travel map.
-- adv mode waypoint system.
local args={...}
function printHelp()
print("An adventure mode travel map teleporation system.")
print(" -s <name> - save current position as <name> waypoint")
print(" -g <name> - goto waypoint <name>")
print(" -dg <name> - goto waypoint <name>")
print(" -d <name> - delete waypoint")
print(" -l (or no arguments) - list waypoint names")
listWaypoints()
end
function listWaypoints()
local wps=dfhack.persistent.get_all('!WP!/',true)
if wps~= nil then
print("Waypoints:")
for k,v in ipairs(wps) do
print(k,string.sub(v.key,6),v.ints[1],v.ints[2])
end
end
end
function delayedPort(x,y)
print("Delay port engaged!")
function port(state)
if state==SC_MAP_UNLOADED then
print("Delayed port activated.")
local party=df.global.world.world_data.travel[0]
party.pos.x=x
party.pos.y=y
dfhack.onStateChange.travel=nil
elseif state==SC_WORLD_UNLOADED then
print("Delayed port canceled!")
dfhack.onStateChange.travel=nil
end
end
dfhack.onStateChange.travel=port
end
if (dfhack.gui.getCurFocus()~="dungeonmode/Travel") and args[1]~="-dg" then
qerror("Invalid viewscreen. This only works in adv. mode travel screen")
end
local name
if args[2] and args[2]~="" then
name="!WP!/"..args[2]
end
local party=df.global.world.world_data.travel[0]
if (not party or not party.flags[0]) and args[1]~="-dg" then
qerror("not traveling")
end
if #args==0 then
printHelp()
return
elseif args[1]=="-s" then
dfhack.persistent.save({key=name,ints={party.pos.x,party.pos.y}})
elseif args[1]=="-dg" then
local e=dfhack.persistent.get(name)
if e then
delayedPort(e.ints[1],e.ints[2])
end
elseif args[1]=="-g" then
local e=dfhack.persistent.get(name)
if e then
party.pos.x=e.ints[1]
party.pos.y=e.ints[2]
end
elseif args[1]=="-d" then
dfhack.persistent.delete(name)
elseif args[1]=="-l" then
listWaypoints()
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment