zork/dso1.c

182 lines
3.5 KiB
C

/* PRINCR- PRINT CONTENTS OF 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"
void princr_(full, rm)
logical full;
integer rm;
{
/* System generated locals */
integer i__1, i__2;
/* Local variables */
integer i, j, k;
j = 329;
/* !ASSUME SUPERBRIEF FORMAT. */
i__1 = objcts_1.olnt;
for (i = 1; i <= i__1; ++i) {
/* !LOOP ON OBJECTS */
if (! qhere_(i, rm) || (objcts_1.oflag1[i - 1] & VISIBT +
NDSCBT) != VISIBT || i == advs_1.avehic[
play_1.winner - 1]) {
goto L500;
}
if (! (full) && (findex_1.superf || findex_1.brieff && (
rooms_1.rflag[play_1.here - 1] & RSEEN) != 0)) {
goto L200;
}
/* DO LONG DESCRIPTION OF OBJECT. */
k = objcts_1.odesco[i - 1];
/* !GET UNTOUCHED. */
if (k == 0 || (objcts_1.oflag2[i - 1] & TCHBT) != 0) {
k = objcts_1.odesc1[i - 1];
}
rspeak_(k);
/* !DESCRIBE. */
goto L500;
/* DO SHORT DESCRIPTION OF OBJECT. */
L200:
rspsub_(j, objcts_1.odesc2[i - 1]);
/* !YOU CAN SEE IT. */
j = 502;
L500:
;
}
/* NOW LOOP TO PRINT CONTENTS OF OBJECTS IN ROOM. */
i__1 = objcts_1.olnt;
for (i = 1; i <= i__1; ++i) {
/* !LOOP ON OBJECTS. */
if (! qhere_(i, rm) || (objcts_1.oflag1[i - 1] & VISIBT +
NDSCBT) != VISIBT) {
goto L1000;
}
if ((objcts_1.oflag2[i - 1] & ACTRBT) != 0) {
i__2 = oactor_(i);
invent_(i__2);
}
if ((objcts_1.oflag1[i - 1] & TRANBT) == 0 && (
objcts_1.oflag2[i - 1] & OPENBT) == 0 || qempty_(i))
{
goto L1000;
}
/* OBJECT IS NOT EMPTY AND IS OPEN OR TRANSPARENT. */
j = 573;
if (i != oindex_1.tcase) {
goto L600;
}
/* !TROPHY CASE? */
j = 574;
if ((findex_1.brieff || findex_1.superf) && ! (full)) {
goto L1000;
}
L600:
princo_(i, j);
/* !PRINT CONTENTS. */
L1000:
;
}
} /* princr_ */
/* INVENT- PRINT CONTENTS OF ADVENTURER */
/* DECLARATIONS */
void invent_(adv)
integer adv;
{
/* System generated locals */
integer i__1;
/* Local variables */
integer i, j;
i = 575;
/* !FIRST LINE. */
if (adv != aindex_1.player) {
i = 576;
}
/* !IF NOT ME. */
i__1 = objcts_1.olnt;
for (j = 1; j <= i__1; ++j) {
/* !LOOP */
if (objcts_1.oadv[j - 1] != adv || (objcts_1.oflag1[j - 1] &
VISIBT) == 0) {
goto L10;
}
rspsub_(i, objcts_1.odesc2[advs_1.aobj[adv - 1] - 1]);
i = 0;
rspsub_(502, objcts_1.odesc2[j - 1]);
L10:
;
}
if (i == 0) {
goto L25;
}
/* !ANY OBJECTS? */
if (adv == aindex_1.player) {
rspeak_(578);
}
/* !NO, TELL HIM. */
return;
L25:
i__1 = objcts_1.olnt;
for (j = 1; j <= i__1; ++j) {
/* !LOOP. */
if (objcts_1.oadv[j - 1] != adv || (objcts_1.oflag1[j - 1] &
VISIBT) == 0 || (objcts_1.oflag1[j - 1] &
TRANBT) == 0 && (objcts_1.oflag2[j - 1] &
OPENBT) == 0) {
goto L100;
}
if (! qempty_(j)) {
princo_(j, 573);
}
/* !IF NOT EMPTY, LIST. */
L100:
;
}
} /* invent_ */
/* PRINCO- PRINT CONTENTS OF OBJECT */
/* DECLARATIONS */
void princo_(obj, desc)
integer obj;
integer desc;
{
/* System generated locals */
integer i__1;
/* Local variables */
integer i;
rspsub_(desc, objcts_1.odesc2[obj - 1]);
/* !PRINT HEADER. */
i__1 = objcts_1.olnt;
for (i = 1; i <= i__1; ++i) {
/* !LOOP THRU. */
if (objcts_1.ocan[i - 1] == obj) {
rspsub_(502, objcts_1.odesc2[i - 1]);
}
/* L100: */
}
} /* princo_ */