123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- /* GHERE-- IS GLOBAL ACTUALLY IN THIS ROOM? */
- /*COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142*/
- /* ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED */
- /* WRITTEN BY R. M. SUPNIK */
- #include "funcs.h"
- #include "vars.h"
- logical ghere_(obj, rm)
- integer obj;
- integer rm;
- {
- /* System generated locals */
- logical ret_val;
- ret_val = TRUE_;
- /* !ASSUME WINS. */
- switch (obj - star_1.strbit) {
- case 1: goto L1000;
- case 2: goto L1000;
- case 3: goto L1000;
- case 4: goto L1000;
- case 5: goto L1000;
- case 6: goto L1000;
- case 7: goto L1000;
- case 8: goto L1000;
- case 9: goto L1000;
- case 10: goto L1000;
- case 11: goto L1000;
- case 12: goto L2000;
- case 13: goto L3000;
- case 14: goto L4000;
- case 15: goto L5000;
- case 16: goto L5000;
- case 17: goto L5000;
- case 18: goto L6000;
- case 19: goto L7000;
- case 20: goto L8000;
- case 21: goto L9000;
- case 22: goto L9100;
- case 23: goto L8000;
- case 24: goto L10000;
- case 25: goto L11000;
- }
- bug_(60, obj);
- /* 1000-- STARS ARE ALWAYS HERE */
- L1000:
- return ret_val;
- /* 2000-- BIRD */
- L2000:
- ret_val = rm >= rindex_1.fore1 && rm < rindex_1.clear || rm ==
- rindex_1.mtree;
- return ret_val;
- /* 3000-- TREE */
- L3000:
- ret_val = rm >= rindex_1.fore1 && rm < rindex_1.clear && rm !=
- rindex_1.fore3;
- return ret_val;
- /* 4000-- NORTH WALL */
- L4000:
- ret_val = rm >= rindex_1.bkvw && rm <= rindex_1.bkbox || rm ==
- rindex_1.cpuzz;
- return ret_val;
- /* 5000-- EAST, SOUTH, WEST WALLS */
- L5000:
- ret_val = rm >= rindex_1.bkvw && rm < rindex_1.bkbox || rm ==
- rindex_1.cpuzz;
- return ret_val;
- /* 6000-- GLOBAL WATER */
- L6000:
- ret_val = (rooms_1.rflag[rm - 1] & RWATER + RFILL) != 0;
- return ret_val;
- /* 7000-- GLOBAL GUARDIANS */
- L7000:
- ret_val = rm >= rindex_1.mrc && rm <= rindex_1.mrd || rm >=
- rindex_1.mrce && rm <= rindex_1.mrdw || rm == rindex_1.inmir;
- return ret_val;
- /* 8000-- ROSE/CHANNEL */
- L8000:
- ret_val = rm >= rindex_1.mra && rm <= rindex_1.mrd || rm ==
- rindex_1.inmir;
- return ret_val;
- /* 9000-- MIRROR */
- /* 9100 PANEL */
- L9100:
- if (rm == rindex_1.fdoor) {
- return ret_val;
- }
- /* !PANEL AT FDOOR. */
- L9000:
- ret_val = rm >= rindex_1.mra && rm <= rindex_1.mrc || rm >=
- rindex_1.mrae && rm <= rindex_1.mrcw;
- return ret_val;
- /* 10000-- MASTER */
- L10000:
- ret_val = rm == rindex_1.fdoor || rm == rindex_1.ncorr || rm ==
- rindex_1.parap || rm == rindex_1.cell;
- return ret_val;
- /* 11000-- LADDER */
- L11000:
- ret_val = rm == rindex_1.cpuzz;
- return ret_val;
- } /* ghere_ */
- /* MRHERE-- IS MIRROR HERE? */
- /* DECLARATIONS */
- integer mrhere_(rm)
- integer rm;
- {
- /* System generated locals */
- integer ret_val, i__1;
- if (rm < rindex_1.mrae || rm > rindex_1.mrdw) {
- goto L100;
- }
- /* RM IS AN E-W ROOM, MIRROR MUST BE N-S (MDIR= 0 OR 180) */
- ret_val = 1;
- /* !ASSUME MIRROR 1 HERE. */
- if ((rm - rindex_1.mrae) % 2 == findex_1.mdir / 180) {
- ret_val = 2;
- }
- return ret_val;
- /* RM IS NORTH OR SOUTH OF MIRROR. IF MIRROR IS N-S OR NOT */
- /* WITHIN ONE ROOM OF RM, LOSE. */
- L100:
- ret_val = 0;
- if ((i__1 = findex_1.mloc - rm, abs(i__1)) != 1 || findex_1.mdir % 180 ==
- 0) {
- return ret_val;
- }
- /* RM IS WITHIN ONE OF MLOC, AND MDIR IS E-W */
- ret_val = 1;
- if (rm < findex_1.mloc && findex_1.mdir < 180 || rm > findex_1.mloc &&
- findex_1.mdir > 180) {
- ret_val = 2;
- }
- return ret_val;
- } /* mrhere_ */
|