def setUp(self): self.room = Room("Just outside a dark cave.", "") self.actor = TargettableObject("a decapitated knight", set(['shiny', 'dead']), self.room) self.roomtarget = TargettableObject("a killer rabbit", set(['bunny', 'fluffy', "rabbit", 'murderous', "killer"]), self.room) self.invtarget = NamedObject("a surprised-looking decapitated head", "Boris", set(["head", "dead"]), self.actor.inventory) self.otherroom = Room("Just inside a dark cave.", "") self.exit = TargettableExitObject(self.room, self.otherroom, "the mouth of a cave", set(["cave", "mouth"])) self.room.add(self.actor) self.room.add(self.roomtarget) self.room.add(self.invtarget) self.room.add(self.exit) self.setup_for_object(self.actor) self.info = MockInfo(self.actor)
def __init__(self, room): super(MUDObject, self).__init__(room) self.room = room self.delegates = set() self.inventory = Room("A dummy inventory.", "This is a dummy " "inventory, to make the checking code a little " "bit simpler.")
def __init__(self, sdesc, name, adjs, room): if NamedObject.exists(name): raise NamealreadyUsedError() super(NamedObject, self).__init__(sdesc, adjs, room) self.inventory = Room("%s's inventory" % name, "You should not be here.") NamedObject._name_registry[name.lower()] = self self.name = name self.adjs = adjs | set([name.lower()])
grailmud (in the file named LICENSE); if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ import os from durus.file_storage import FileStorage from durus.connection import Connection from grailmud.rooms import Room from grailmud.objects import MUDObject, NamedObject from grailmud.npcs.chatty import ChattyDelegate from grailmud.ticks import Ticker startroom = Room('An unremarkable moor.', 'This moor is extremely bare. Overly so, perhaps. There ' 'is a definite air of blandness about its grey horizon ' 'and overcast sky. The ground is anonymous and blank; ' 'grey dust litters the floor, and that is about all which ' 'can be said about it. Even the air seems to be steeped in' ' mediocrity - a lukewarm temperature, with no discernable' ' exciting scents.') eliza = NamedObject('a bespectacled old lady', 'Eliza', set(['old', 'lady', 'woman']), startroom) eliza.addDelegate(ChattyDelegate(eliza)) startroom.add(eliza) if os.access("mudlib.durus", os.F_OK): os.remove("mudlib.durus") try: connection = Connection(FileStorage("mudlib.durus"))
def test_adding(): r = Room('A blank room', 'Nothing to see here, move along.') obj = MUDObject(None) r.add(obj) assert obj in r.contents
class TestEventSending(SetupHelper): def setUp(self): self.room = Room("Just outside a dark cave.", "") self.actor = TargettableObject("a decapitated knight", set(['shiny', 'dead']), self.room) self.roomtarget = TargettableObject("a killer rabbit", set(['bunny', 'fluffy', "rabbit", 'murderous', "killer"]), self.room) self.invtarget = NamedObject("a surprised-looking decapitated head", "Boris", set(["head", "dead"]), self.actor.inventory) self.otherroom = Room("Just inside a dark cave.", "") self.exit = TargettableExitObject(self.room, self.otherroom, "the mouth of a cave", set(["cave", "mouth"])) self.room.add(self.actor) self.room.add(self.roomtarget) self.room.add(self.invtarget) self.room.add(self.exit) self.setup_for_object(self.actor) self.info = MockInfo(self.actor) def tearDown(self): self.room.remove_from_instances() self.actor.remove_from_instances() self.roomtarget.remove_from_instances() self.invtarget.remove_from_instances() NamedObject._name_registry.clear() self.exit.remove_from_instances() def test_look_at_room_TargettableObject(self): lookAt(self.actor, self.roomtarget) assert self.actor.delegate.received == [LookAtEvent(self.roomtarget)] def test_look_at_inventory_TargettableObject(self): lookAt(self.actor, self.invtarget) assert self.actor.delegate.received == [LookAtEvent(self.invtarget)] def test_look_at_nowhere(self): lookAt(self.actor, MUDObject(None)) assert self.actor.delegate.received == [UnfoundObjectEvent()] def test_look_at_room(self): lookRoom(self.actor) assert self.actor.delegate.received == [LookRoomEvent(self.room)] def test_look_at_exit(self): lookAt(self.actor, self.exit) assert self.actor.delegate.received == [LookRoomEvent(self.otherroom)] def test_look_at_parsing_no_at(self): lookDistributor(self.actor, 'boris', self.info) print self.actor.delegate.received assert self.actor.delegate.received == [LookAtEvent(self.invtarget)] def test_look_at_parsing(self): lookDistributor(self.actor, "at killer rabbit", self.info) print self.actor.delegate.received assert self.actor.delegate.received == [LookAtEvent(self.roomtarget)] def test_look_at_parsing_failure(self): lookDistributor(self.actor, "at foobar", self.info) assert self.actor.delegate.received == [UnfoundObjectEvent()] def test_look_parsing(self): lookDistributor(self.actor, "", self.info) print self.actor.delegate.received assert self.actor.delegate.received == [LookRoomEvent(self.room)]