| ! CompassWorks Beta | |
| ! Copyright 1999 by Jonathan Rosebaugh | |
| ! skiprosebaugh@email.com | |
| ! | |
| ! In one of my games, I had quite a few outdoor scenes. I decided to remove "the walls" for added | |
| ! realism. If you don't know what I'm talking about, you don't need this! | |
| ! | |
| ! You must define Constant WITHOUT_DIRECTIONS; | |
| ! BEFORE inclusion of the parser! | |
| ! | |
| ! Requires Adam Cadre's Flags.h | |
| ! In addition, you must edit the flag array in flags.h. The number of elements in the array | |
| ! must be at least 2. CompassWorks requires 10 flags. If anyone knows how to automatically do | |
| ! this, please let me know! | |
| ! | |
| ! You should call SetFlag(NORTH_WALL, 1) to indicate that there is a wall there, | |
| ! or SetFlag(NORTH_WALL, 0) to indicate that there isn't a wall there. | |
| ! In addition, you can call CompassOutside() or CompassInside() to set all the flags one way or | |
| ! the other. | |
| ! If you want to, you can edit the description of the Ceiling object to say something like | |
| ! "There's a pretty blue sky." Just be sure to set u_obj.description = NULL; when you don't | |
| ! need that description anymore. Of course, you can do the same with all the directions. | |
| ! | |
| ! If you have a credits verb, and you'd like to give credit to me for any help this file gave, | |
| ! just call CompassCredits(1); at the appropriate point. Change the 1 to a 0 if you don't want | |
| ! a newline printed at the end of the string. | |
| ! | |
| ! Redefine the below constants before inclusion to change the flags used: | |
| IFNDEF NORTH_WALL; | |
| Constant NORTH_WALL 0; | |
| ENDIF; | |
| IFNDEF SOUTH_WALL; | |
| Constant SOUTH_WALL 1; | |
| ENDIF; | |
| IFNDEF EAST_WALL; | |
| Constant EAST_WALL 3; | |
| ENDIF; | |
| IFNDEF WEST_WALL; | |
| Constant WEST_WALL 4; | |
| ENDIF; | |
| IFNDEF NE_WALL; | |
| Constant NE_WALL 5; | |
| ENDIF; | |
| IFNDEF NW_WALL; | |
| Constant NW_WALL 6; | |
| ENDIF; | |
| IFNDEF SE_WALL; | |
| Constant SE_WALL 7; | |
| ENDIF; | |
| IFNDEF SW_WALL; | |
| Constant SW_WALL 8; | |
| ENDIF; | |
| IFNDEF CEILING_WALL; | |
| Constant CEILING_WALL 9; | |
| ENDIF; | |
| IFNDEF FLOOR_WALL; | |
| Constant FLOOR_WALL 10; | |
| ENDIF; | |
| CompassDirection n_obj "north wall" Compass | |
| with name 'n//' 'north' 'wall', | |
| door_dir n_to, | |
| parse_name | |
| [ i; if (FlagOn(NORTH_WALL)) | |
| { | |
| while (NextWord()=='n//' or 'north' or 'wall') i++; | |
| return i; | |
| } | |
| while (NextWord()=='n//' or 'north') i++; | |
| return i; | |
| ], | |
| short_name [; | |
| if (FlagOn(NORTH_WALL)) rfalse; print "north"; rtrue;]; | |
| CompassDirection s_obj "south wall" Compass | |
| with name 's//' 'south' 'wall', door_dir s_to, | |
| parse_name | |
| [ i; if (FlagOn(SOUTH_WALL)) | |
| { | |
| while (NextWord()=='s//' or 'south' or 'wall') i++; | |
| return i; | |
| } | |
| while (NextWord()=='s//' or 'south') i++; | |
| return i; | |
| ], | |
| short_name [; | |
| if (FlagOn(SOUTH_WALL)) rfalse; print "south"; rtrue;]; | |
| CompassDirection e_obj "east wall" Compass | |
| with name 'e//' 'east' 'wall', door_dir e_to, | |
| parse_name | |
| [ i; if (FlagOn(EAST_WALL)) | |
| { | |
| while (NextWord()=='e//' or 'east' or 'wall') i++; | |
| return i; | |
| } | |
| while (NextWord()=='e//' or 'east') i++; | |
| return i; | |
| ], | |
| short_name [; | |
| if (FlagOn(EAST_WALL)) rfalse; print "east"; rtrue;]; | |
| CompassDirection w_obj "west wall" Compass | |
| with name 'w//' 'west' 'wall', door_dir w_to, | |
| parse_name | |
| [ i; if (FlagOn(WEST_WALL)) | |
| { | |
| while (NextWord()=='w//' or 'west' or 'wall') i++; | |
| return i; | |
| } | |
| while (NextWord()=='w//' or 'west') i++; | |
| return i; | |
| ], | |
| short_name [; | |
| if (FlagOn(WEST_WALL)) rfalse; print "west"; rtrue;]; | |
| CompassDirection ne_obj "northeast wall" Compass | |
| with name 'ne' 'northeast' 'wall', door_dir ne_to, | |
| parse_name | |
| [ i; if (FlagOn(NE_WALL)) | |
| { | |
| while (NextWord()=='ne' or 'northeast' or 'wall') i++; | |
| return i; | |
| } | |
| while (NextWord()=='ne' or 'northeast') i++; | |
| return i; | |
| ], | |
| short_name [; | |
| if (FlagOn(NE_WALL)) rfalse; print "northeast"; rtrue;]; | |
| CompassDirection nw_obj "northwest wall" Compass | |
| with name 'nw' 'northwest' 'wall', door_dir nw_to, | |
| parse_name | |
| [ i; if (FlagOn(NW_WALL)) | |
| { | |
| while (NextWord()=='nw' or 'northwest' or 'wall') i++; | |
| return i; | |
| } | |
| while (NextWord()=='nw' or 'northwest') i++; | |
| return i; | |
| ], | |
| short_name [; | |
| if (FlagOn(NW_WALL)) rfalse; print "northwest"; rtrue;]; | |
| CompassDirection se_obj "southeast wall" Compass | |
| with name 'se' 'southeast' 'wall', door_dir se_to, | |
| parse_name | |
| [ i; if (FlagOn(SE_WALL)) | |
| { | |
| while (NextWord()=='se' or 'southheast' or 'wall') i++; | |
| return i; | |
| } | |
| while (NextWord()=='se' or 'southeast') i++; | |
| return i; | |
| ], | |
| short_name [; | |
| if (FlagOn(SE_WALL)) rfalse; print "southeast"; rtrue;]; | |
| CompassDirection sw_obj "southwest wall" Compass | |
| with name 'sw' 'southwest' 'wall', door_dir sw_to, | |
| parse_name | |
| [ i; if (FlagOn(SW_WALL)) | |
| { | |
| while (NextWord()=='sw' or 'southwest' or 'wall') i++; | |
| return i; | |
| } | |
| while (NextWord()=='sw' or 'southwest') i++; | |
| return i; | |
| ], | |
| short_name [; | |
| if (FlagOn(SW_WALL)) rfalse; print "southwest"; rtrue;]; | |
| CompassDirection u_obj "ceiling" Compass | |
| with name 'u//' 'up' 'ceiling', door_dir u_to, | |
| parse_name | |
| [ i; if (FlagOn(CEILING_WALL)) | |
| { | |
| while (NextWord()=='u//' or 'up' or 'ceiling') i++; | |
| return i; | |
| } | |
| while (NextWord()=='u//' or 'up' or 'sky') i++; | |
| return i; | |
| ], | |
| short_name [; | |
| if (FlagOn(CEILING_WALL)) rfalse; print "sky"; rtrue;]; | |
| CompassDirection d_obj "floor" Compass | |
| with name 'd//' 'down' 'floor', door_dir d_to, | |
| parse_name | |
| [ i; if (FlagOn(FLOOR_WALL)) | |
| { | |
| while (NextWord()=='d//' or 'down' or 'floor') i++; | |
| return i; | |
| } | |
| while (NextWord()=='d//' or 'down' or 'ground') i++; | |
| return i; | |
| ], | |
| short_name [; | |
| if (FlagOn(FLOOR_WALL)) rfalse; print "ground"; rtrue;]; | |
| [ CompassOutside; | |
| SetFlag(NORTH_WALL,0); | |
| SetFlag(SOUTH_WALL,0); | |
| SetFlag(EAST_WALL,0); | |
| SetFlag(WEST_WALL,0); | |
| SetFlag(NE_WALL,0); | |
| SetFlag(NW_WALL,0); | |
| SetFlag(SW_WALL,0); | |
| SetFlag(SE_WALL,0); | |
| SetFlag(CEILING_WALL,0); | |
| SetFlag(FLOOR_WALL,0); | |
| ]; | |
| [ CompassInside; | |
| SetFlag(NORTH_WALL,1); | |
| SetFlag(SOUTH_WALL,1); | |
| SetFlag(EAST_WALL,1); | |
| SetFlag(WEST_WALL,1); | |
| SetFlag(NE_WALL,1); | |
| SetFlag(NW_WALL,1); | |
| SetFlag(SW_WALL,1); | |
| SetFlag(SE_WALL,1); | |
| SetFlag(CEILING_WALL,1); | |
| SetFlag(FLOOR_WALL,1); | |
| ]; | |
| [ CompassCredits arg; | |
| if (arg) "Compass.h was written by Jonathan Rosebaugh."; | |
| print "Compass.h was written by Jonathan Rosebaugh."; rtrue; | |
| ]; |
Xet Storage Details
- Size:
- 9.58 kB
- Xet hash:
- 0ed07416441e5f0d3206bf9358192ad0e9259b009c6a4cc09dd9b279bd1bfe76
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.