def_occupant.lua

Sat, 27 Mar 2010 17:43:08 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Sat, 27 Mar 2010 17:43:08 +0000
changeset 0
cc66ad6b0d75
permissions
-rw-r--r--

Initial commit (importing from old SVN repo which got lost)


occupant =
{ 
	_properties = {},
	_default =	function (self, e)
				PSay(e.room, e.nick, " ", "<not-implemented/>");
			end,
	sit	=	function (self, e)
				self:_action("sits down");
			end,
	reload = 	function (self, e)
				local success, message = pcall(dofile, "bot.lua");
				if not success then self:_tell(string.format("Error reloading: %s", message)); end
			end,
	refresh = 	function (self, e)
				classes = nil;
				dofile("bot.lua");
			end,
	who = 	function (self, e)
				local p = {};
				for nick, t in pairs(self.room.people) do
					table.insert(p, nick.." ("..(t.jid or "Unknown JID")..")\n");
				end
				self:_tell("People in "..self.room._properties.name..":\n"..table.concat(p, ","));
			end,
	allwho =	function (self, e)
				local p = {};
				for jid, t in pairs(people) do
					table.insert(p, t.nick.." ("..jid..") in "..t.room._properties.name.."\n");
				end
				PSay(e.room, e.nick, " ", "People in MOO:\n"..table.concat(p, ","));
			end,
	_say = 	function (self, text, who)
				BroadcastMessage(self.room.people, self.nick , text, who);
			end,
	_action =	function (self, text, who)
				return self:_say("/me "..text, who);
			end,
	_tell = 	function (self, text)
				SendMessage(self.jid, self.occjid, text or "", "groupchat");
			end,
	i = 		function (self, e)
				local contents = {};
				local contents2 = {};
				contents = self._contents["in"]:getallobjects();
				for o, exists in pairs(contents) do
					table.insert(contents2, o._properties.longname or o._properties.name or "Something");
				end
				self:_tell("You are carrying: "..table.concat(contents2,", "));
			end,
	jump = function (self, e) self:_action("jumps"); end
};


function occupant:_processCommand(line)
	person = self;
	
	if line:match("^%..*$") then BroadcastMessage(person.room.people, person.nick, line:match("^%.%s?(.*)$")); return nil; end
	if line:match("^,.*$") then person:_action(line:match("^,%s?(.*)$")); return nil; end
	action, object = commands:_parse(self, line); -- line:match("^(%a+)%s(%a+)$");
	if commands:_handle(self, action, object) == false then person:_tell(string.format("Sorry, I don't know how you can '%s'",line)); end
end

occupant._findobject = classes.default._findobject;
occupant._get = classes.default._get;
occupant._unlink = classes.default._unlink;

function occupant:_sendto(roomname)
	MoveToRoom(self, roomname);
end

mercurial