home *** CD-ROM | disk | FTP | other *** search
-
- {EXECUTE.PA2}
-
- {Execute User Command}
- { Main Procedure }
-
- PROCEDURE Execute_cmd(verb, noun, prep, object_word : words);
-
- BEGIN {execute}
- IF ((object_word = 'DOOR') OR
- (object_word = 'DOORS')) AND
- ((NOT Is_Noun(object_word)) OR { Allow user-defined door(s) }
- (NOT Is_Visible(Noun_Number(object_word)))) THEN
- BEGIN { No doors are affected by preposition unless metacommand }
- Normalize(verb); Normalize(noun);
- Normalize(prep); Normalize(object_word);
- WriteLn('To ', verb, ' the ', noun, ' ', prep, ' the ', object_word,
- ' suddenly seems rather useless,');
- WriteLn('so you decide not to after all.');
- END
- ELSE
- IF Is_Direction(verb)
- THEN Go(verb)
- ELSE IF (verb = 'LOOK')
- THEN Room[Current_room]^.has_seen := False
- ELSE IF ((verb = 'SCORE') OR ((verb = 'SHOW') AND (noun = 'SCORE')))
- THEN show_score
- ELSE IF (verb = 'INVENTORY')
- THEN Inventory
- ELSE IF (verb = 'HELP')
- THEN Help
- ELSE IF (verb = 'WAIT')
- THEN Do_Nothing
- ELSE IF (verb = 'SCRIPT')
- THEN Script
- ELSE IF (verb = 'UNSCRIPT')
- THEN UNScript
- ELSE IF (verb = 'YELL')
- THEN Scream
- ELSE IF (((verb = 'LIST') AND (noun = 'EXITS'))
- OR ((verb = 'SHOW') AND (noun = 'EXITS')) OR (verb = 'LIST_EXITS'))
- THEN List_Exits(Current_room)
- ELSE IF (verb = 'VERBOSE')
- THEN verbose := True
- ELSE IF (verb = 'BRIEF')
- THEN verbose := False
- ELSE IF (verb = 'QUIT')
- THEN Quit
- ELSE IF (verb = 'ATTACK')
- THEN Attack(noun, prep, object_word)
- ELSE IF (verb = 'FIRE')
- THEN Shoot(noun, prep, object_word)
- ELSE IF (verb = 'SAVE')
- THEN Save
- ELSE IF (verb = 'RESTORE')
- THEN Restore
- ELSE IF (verb = 'MAGIC_WORD')
- THEN MagicWord
-
- {the rest of the verbs *need* a noun - check for it now}
- ELSE IF (noun = '')
- THEN WriteLn(IO, 'You need to specify a noun!')
- ELSE IF (verb = 'GET')
- THEN
- IF noun = 'ALL'
- THEN Take_All
- ELSE Take(noun)
- ELSE IF (verb = 'WEAR')
- THEN
- IF noun = 'ALL'
- THEN Wear_All
- ELSE Wear(noun)
- ELSE IF (verb = 'DROP')
- THEN
- IF noun = 'ALL'
- THEN Drop_All
- ELSE Drop(noun)
- ELSE IF (verb = 'REMOVE')
- THEN
- IF noun = 'ALL'
- THEN Remove_All
- ELSE Drop(noun)
- ELSE IF (verb = 'PUT')
- THEN Put(noun, prep, object_word)
- ELSE IF (verb = 'THROW')
- THEN Throw(noun, prep, object_word)
- ELSE IF (verb = 'TELL')
- THEN TELL(noun, object_word)
- ELSE IF (verb = 'ASK')
- THEN ASK(noun, object_word)
- ELSE IF (verb = 'OPEN')
- THEN Open_Noun(noun, prep, object_word)
- ELSE IF (verb = 'CLOSE')
- THEN Close_Noun(noun)
- ELSE IF (verb = 'LOCK')
- THEN Lock(noun, prep, object_word)
- ELSE IF (verb = 'UNLOCK')
- THEN Unlock(noun, prep, object_word)
- ELSE IF (verb = 'DRINK')
- THEN Drink(noun)
- ELSE IF (verb = 'EAT')
- THEN Eat(noun)
- ELSE IF (verb = 'READ')
- THEN Read_Noun(noun)
- ELSE IF (verb = 'EXAMINE')
- THEN IF NOT LightIsHere {determine if need and have specific light}
- THEN
- IF (Room[Current_room]^.light = 1)
- THEN {player isn't carrying any light at all}
- WriteLn(IO, 'It is pitch black. You can examine nothing, not even your hands.')
- ELSE {player may be carrying a light but still can't see}
- WriteLn(IO, 'For some reason, you can''t see or examine anything here.')
- ELSE Describe(noun) {Show noun description only if it can be seen}
-
- {'specials'}
- ELSE IF (verb = 'TURN')
- THEN Turn(noun, prep, object_word)
- ELSE IF (verb = 'PUSH')
- THEN Push(noun, prep, object_word)
- ELSE IF (verb = 'PULL')
- THEN Pull(noun, prep, object_word)
- ELSE IF (verb = 'PLAY')
- THEN Play(noun)
- ELSE IF (verb = 'CHANGE_LOCATIONS')
- THEN Change_Locations(noun)
- ELSE IF (verb = 'LIGHT')
- THEN light(noun)
- ELSE IF (verb = 'EXTINGUISH')
- THEN Extinguish(noun)
- ELSE IF (Length(verb) > 0) THEN WriteLn(IO, 'Sorry, you can''t do that....');
- END; {execute}
-