#
# file:: cmd_fill.rb
#
# This source code copyright (C) 2009 Craig Smith
# All rights reserved.
#
# Released under the terms of the TeensyMUD Public License
# See LICENSE file for additional information.
#
module Cmd
bindtextdomain("cmd")
# Fill from either a fountain with something in your inventory
def cmd_fill(args)
from_keyword = _("from")
case args
when nil, ""
sendto(_("Drink what?"))
when /^(.*)\s+#{from_keyword}\s+(.*)/i
what = $1
from = $2
fillobj = nil
fromobj = nil
objs = find_inv(what)
case objs.size
when 0
sendto(_("You are not carrying %{what}." % {:what => what}))
when 1
fillobj = objs[0]
# Found item to fill
if fillobj.is_a? Container
objs = get_object(location).find_objects(from)
case objs.size
when 0
sendto(_("Unable to find %{from}." % {:from => from}))
when 1
fromobj = objs[0]
if fromobj.has_val? :fountain
liq = get_object(fromobj.val["fountain"])
if liq
if not fillobj.can_hold? liq.id
sendto(_("You can not fill that with %{liq}." % {:liq => liq.name}))
return
end
if fillobj.contents.size > 0
if not fillobj.contents[0] == liq.id
sendto(_("You can not mix liquids."))
return
end
end
if liq.is_a? Liquid
sendto(_("You fill the %{what} with %{liq} from %{where}." % {:what => fillobj.name, :liq => liq.name, :where => fromobj.shortname}))
msg = Msg.new _("^p1 fills ^o1 with %{liq} from ^o2." % {:liq => liq.name})
msg.p1 = name
msg.o1 = fillobj.shortname
msg.o2 = fromobj.shortname
sendroom(msg)
fillobj.add_contents(liq.id) if fillobj.contents.size == 0
if fillobj.has_val? :max_amt
fillobj.liq_amt = fillobj.has_val? :max_amt
else
fillobj.liq_amt = Container.CONT_DEFAULT_MAX_AMT
end
else
sendto(_("It is empty."))
end
else
sendto(_("It is empty."))
end
else
sendto(_("You can not fill from that."))
end
else
sendto(_("Which one would you like to fill from?"))
end
else
sendto(_("You can not fill that."))
end
else
sendto(_("Fill which one?"))
end
else
sendto(_("Fill what FROM where?"))
end
end
end