Add "to" to prepositions
[mudsync.git] / mudsync / command.scm
index b09873a06f416f8133c6dde8eea37dd8e37f3fdd..23e21dac8f85fc75645cc18620e0613dba0818d9 100644 (file)
@@ -1,3 +1,21 @@
+;;; Mudsync --- Live hackable MUD
+;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
+;;;
+;;; This file is part of Mudsync.
+;;;
+;;; Mudsync is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or
+;;; (at your option) any later version.
+;;;
+;;; Mudsync is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;;; General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with Mudsync.  If not, see <http://www.gnu.org/licenses/>.
+
 (define-module (mudsync command)
   #:use-module (mudsync parser)
   #:use-module (8sync systems actors)
 (define-module (mudsync command)
   #:use-module (mudsync parser)
   #:use-module (8sync systems actors)
@@ -15,6 +33,7 @@
 
             direct-command
             indir-command
 
             direct-command
             indir-command
+            indir-as-direct-command
             loose-direct-command
             loose-indir-command
             empty-command
             loose-direct-command
             loose-indir-command
             empty-command
                 action
                 %high-priority))
 
                 action
                 %high-priority))
 
+(define* (indir-as-direct-command verbs action #:optional prepositions)
+  (make-command verbs
+                cmatch-indir-obj
+                (lambda* (goes-by #:key direct-obj indir-obj preposition)
+                  (if prepositions
+                      (and
+                       (member  direct-obj goes-by)
+                       (member preposition prepositions))
+                      (member direct-obj goes-by)))
+                action
+                %high-priority))
+
 (define* (loose-indir-command verbs action #:optional prepositions)
   (make-command verbs
                 cmatch-indir-obj
 (define* (loose-indir-command verbs action #:optional prepositions)
   (make-command verbs
                 cmatch-indir-obj