Esempio n. 1
0
def cmdLook(ch, cmd, args):
    """
    Look at something, in something or the current room.
    """

    argL = utils.splitArgs(args)

    room = ch.getPlace()

    if argL == []:
	_lookAround(ch)

	event = Event(EVN_LOOK, ch)
	event.target = None
	room.handleEvent(event)

	return 1

    if argL[0] == "in":
	if len(argL) < 2:
	    ch.writeToSelf("Look in what?\r\n")
	else:
	    obj = ch.findCarriedObject(argL[1])
	    if not obj:
		obj = ch.findObject(argL[1])
	    if obj:
		descr = obj.getDescriptionForLookIn()
		if not descr:
		    ch.writeToSelf("You can't look inside that.\r\n")
		else:
		    ch.writeToSelf(descr+"\r\n")
		    ch.writeToOthers(ch.getName()+" looks in "
			    +obj.getName()+".\r\n")
	    else:
		ch.writeToSelf("You don't see that here.\r\n")

    else:
	if argL[0] == "at":
	    i = 1
	    if len(argL) < 2:
		ch.writeToSelf("Look at what?\r\n")
		return 1
	else:
	    i = 0

	found = 0

	# character
	if argL[i][-2:] == "'s":
	    name = argL[i][:-2]
	else:
	    name = argL[i]

	target = ch.findVictim(name)
	if target:
	    _lookAtCharacter(ch, target, argL[i+1:])
	    found = 1

	# room description
	if not found:
	    descr = room.getDescriptionForLookAt(argL[i])
	    if descr:
		ch.writeToSelf(descr+"\r\n")
		found = 1

	# worn objects
	if not found:
	    r = ch.findDescriptionForWornObject(argL[i])
	    if r:
		target, descr = r
		ch.writeToSelf(descr+"\r\n")
		found = 1

	# carried objects
	if not found:
	    r = ch.findDescriptionForCarriedObject(argL[i])
	    if r:
		target, descr = r
		ch.writeToSelf(descr+"\r\n")
		found = 1

	# objects in room
	if not found:
	    r = room.findDescriptionForContainedObject(argL[i])
	    if r:
		target, descr = r
		ch.writeToSelf(descr+"\r\n")
		found = 1

	if not found:
	    # worn objects
	    target = ch.findWornObject(argL[i])
	    # carried objects
	    if not target:
		target = ch.findCarriedObject(argL[i])
	    # room objects
	    if not target:
		target = ch.findObject(argL[i])
	    if target:
		ch.writeToSelf("You don't see anything special about it.\r\n")
		found = 1

	if found:
	    event = Event(EVN_LOOK, ch)
	    event.target = target
	    room.handleEvent(event)
	else:
	    ch.writeToSelf("You don't see that here.\r\n")


    return 1