diff options
| author | Jeff Armstrong <jeff@approximatrix.com> | 2013-05-29 09:16:47 -0400 |
|---|---|---|
| committer | Jeff Armstrong <jeff@approximatrix.com> | 2013-05-29 09:16:47 -0400 |
| commit | bc9c79c6abcc3bb53a09147f2d66f7f36dbca28c (patch) | |
| tree | 31d739939b23f3fc287112a23f9e7861703c1315 /lib/custom.py | |
| download | robotadventure-bc9c79c6abcc3bb53a09147f2d66f7f36dbca28c.tar.gz robotadventure-bc9c79c6abcc3bb53a09147f2d66f7f36dbca28c.zip | |
Diffstat (limited to 'lib/custom.py')
| -rw-r--r-- | lib/custom.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/lib/custom.py b/lib/custom.py new file mode 100644 index 0000000..6787d9a --- /dev/null +++ b/lib/custom.py @@ -0,0 +1,85 @@ +# Murder in the Park - A Robotic Mystery +# Copyright (C) 2008 Jeffrey Armstrong (a.k.a. PrintStar) +# http://jeff.rainbow-100.com/ +# +# This program 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. +# +# This program 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 this program. If not, see <http://www.gnu.org/licenses/>. +# +# A full version of the license terms is available in LICENSE. + +import gamedb + +NPC_VERBS = ['ask', +'question', +'talk', +'tell', +'say', +'speak', +'show', +'hand', +'give'] + +DIRECTIONS = ['north','n', + 'west','w', + 'south','s', + 'east','e'] + +def isDirection(word): + try: + DIRECTIONS.index(word) + return True + except ValueError: + return False + +def handleVerbOnly(db,verb): + return None + +def parseAction(db,action): + if not action: + return + actions = action.split(';') + for each in actions: + each = each.strip() + components = each.split() + + if each.startswith('unblock'): + db.unblock(components[1]) + + elif each.startswith('increment'): + db.increment(components[1]) + + elif each.startswith('remove'): + db.remove(components[1]) + + elif each.startswith('create'): + db.to_inv(components[1]) + + elif each.startswith('state'): + try: + db.setState(components[1],int(components[2])) + except ValueError: + continue + + +def handle(db,verb,obj1=None,obj2=None): + + verb = db.checkVerb(verb) + + if not obj1 and not obj2: + return handleVerbOnly(db,verb) + + result = db.getResult(obj1,obj2,verb) + action = db.getAction(obj1,obj2,verb) + parseAction(db,action) + return result + |
