#
# file:: cmd_rlink.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")
# Links two room exits together
def cmd_rlink(args)
case args
when /(\d+)\s+(\d+)\s+(\S+)\s+(\S+)/ # Creates new exits and links them
room1 = get_object($1.to_i)
room2 = get_object($2.to_i)
ex_name1 = $3.downcase
ex_name2 = $4.downcase
if not room1.is_a? Room or not room2.is_a? Room
sendto _("Both arguments must be room numbers.")
else
# These are just for simplicity and speed
ex_name1 = "east" if ex_name1 == "e"
ex_name1 = "west" if ex_name1 == "w"
ex_name1 = "north" if ex_name1 == "n"
ex_name1 = "south" if ex_name1 == "s"
ex_name1 = "up" if ex_name1 == "u"
ex_name1 = "down" if ex_name1 == "d"
ex_name2 = "east" if ex_name2 == "e"
ex_name2 = "west" if ex_name2 == "w"
ex_name2 = "north" if ex_name2 == "n"
ex_name2 = "south" if ex_name2 == "s"
ex_name2 = "up" if ex_name2 == "u"
ex_name2 = "down" if ex_name2 == "d"
e1 = Exit.new(ex_name1, id, room1.id, room2.id)
room1.exits << e1.id
e2 = Exit.new(ex_name2, id, room2.id, room1.id)
room2.exits << e2.id
e1.linked_exit = e2.id
e2.linked_exit = e1.id
put_object(e1)
put_object(e2)
sendto _("Linked.")
end
when /(\d+)\s+(\d+)/ # Exits exists but are not linked yet...
room1 = get_object($1.to_i)
room2 = get_object($2.to_i)
if not room1.is_a? Room or not room2.is_a? Room
sendto _("Both arguments must be room numbers.")
else
firstexit = nil
room1.exits.each do |exid|
ex = get_object(exid)
firstexit = ex if ex.to_room == room2.id
end
if not firstexit
sendto _("Room %{num1} does not have an exit to Room %{num2}" % {:num1 => room1.id, :num2 => room2.id})
else
secondexit = nil
room2.exits.each do |exid|
ex = get_object(exid)
secondexit = ex if ex.to_room == room1.id
end
if not secondexit
sendto _("Room %{num1} does not have an exit to Room %{num2}" % {:num1 => room2.id, :num2 => room1.id})
else
firstexit.linked_exit = secondexit.id
secondexit.linked_exit = firstexit.id
secondexit.door_state = firstexit.door_state
secondexit.door_name = firstexit.door_name
secondexit.attributes = firstexit.attributes
secondexit.required_key = firstexit.required_key if firstexit.required_key
sendto _("Rooms successfully linked.")
end
end
end
else
sendto _("Usage: rlink room1# room2#. Ex: room 23 45")
end
end
end