#
# file:: cmd_get.rb
# author:: Jon A. Lambert
# version:: 2.2.0
# date:: 08/29/2005
# Additional Contributor: Craig Smith
require 'gettext'
#
# This source code copyright (C) 2005 by Jon A. Lambert
# All rights reserved.
#
# Released under the terms of the TeensyMUD Public License
# See LICENSE file for additional information.
#
module Cmd
include GetText
bindtextdomain("cmd")
# gets all objects in the room into your inventory
def cmd_get(args)
from_keyword = _("from")
all_keyword = _("all")
case args
when nil, ""
sendto _("Get what?")
when /(.*)\s+#{from_keyword}\s+(.*)/i
what = $1
from = $2
fromobj = nil
objs = find_inv(from)
case objs.size
when 0
objs = get_object(location).find_objects(from)
case objs.size
when 0
sendto _("Unable to find %{item}." % {:item => from})
when 1
fromobj = objs[0]
else
sendto _("Which one?")
end
when 1
fromobj = objs[0]
else
sendto _("Which one?")
end
if fromobj
if fromobj.kind_of? Container
if what == all_keyword
if fromobj.contents.size < 1
sendto _("It is empty.")
return
end
fromobj.contents.each do |oid|
add_event(id,oid,:get)
end
else
objs = fromobj.find(what)
if objs.size > 0
objs.each do |o|
add_event(id, o.id, :get)
end
else
sendto _("You do not see that in the %{container}" % {:container => fromobj.name})
end
end
elsif fromobj.kind_of? BodyPart
items = fromobj.wearing
items << fromobj.wield if fromobj.wield
fromobj.worn.clear
fromobj.wield = nil
fromobj.tail.each do |tid|
part = get_object(tid)
items.concat(part.wearing)
items << part.wield if part.wield
part.worn.clear
part.wield = nil
end
items.each do |oid|
obj = get_object(oid)
obj.location = id
add_contents(oid)
msg = _("You get %{obj} from the %{part}." % {:obj => obj.shortname, :part => fromobj.name})
add_event(obj.id, id, :show, msg)
msg = Msg.new _("^p1 gets ^o1 from a %{part}." % {:part => fromobj.name})
msg.p1 = name
msg.o1 = obj.shortname
sendroom(msg)
end
else
sendto _("You can not do that.")
end
end
when all_keyword # Get everything
get_object(location).objects.each do |q|
add_event(id,q.id,:get)
end
else
objs = get_object(location).find_objects(args)
if objs.size > 0
objs.each do |obj|
add_event(id,obj.id,:get)
end
else
sendto _("Couldn't find %{args}" % {:args => args})
end
end
end
end