Skip to content

Instantly share code, notes, and snippets.

@AmandaCameron
Last active August 29, 2015 14:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AmandaCameron/b38e660cb25313f11c86 to your computer and use it in GitHub Desktop.
Save AmandaCameron/b38e660cb25313f11c86 to your computer and use it in GitHub Desktop.
local PenMode = {}
function PenMode:activate()
self.prompt = "Title:"
self.letter = game.spawn_object("testing:letter")
self.letter.title = "Letter from " .. self.player.name
self.letter.data:set("from", self.player.name)
self.letter.data:set("title", "")
self.letter.data:set("body", "")
self.state = 1
end
function PenMode:deactivate()
self.player.inventory:add(self.letter)
end
function PenMode:input(input)
if self.state == 1 then
self.player:send("Enter the body, typing '\\q' to exit.")
self.letter.data:set("title", input)
self.state = 2
self.prompt = "Body:"
elseif self.state == 2 then
if input == "\\q" then
self.player:send("Letter written.")
self.player:release(self)
return
end
self.letter.data:set("body", self.letter.data:get("body") .. "{nl}" .. input)
else
error("Invalid State: " .. self.state)
end
end
object.commands:add("write", function(player, arg)
PenMode.player = player
player:hijack(PenMode)
return true
end)
game.timers:add(8 * 60, function()
local exits = {}
for _, e in pairs(mobile.room.exits) do
if not e.locked and not e.closed then
if not e.tags:contains("no-wander") and not e.room.tags:contains("no-wander") then
exits[#exits + 1] = e
end
end
end
local r = exits[math.floor(math.random(1, #exits))].room
mobile.room = r;
end, true)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment