games-request@tekred.TEK.COM (09/05/87)
Submitted by: "J.D. McDonald " <mcdonald%uxe.cso.uiuc.edu@uxc.cso.uiuc.edu>
Comp.sources.games: Volume 2, Issue 48
Archive-name: world/Patch1
[Just save this file and pass it to 'patch'. -br]
[[Here is the first official bug fix for my game "World". It includes
all the real bugs that have been reported. It also fixes a few problems
some people have had compiling. There have been bugs reported when
compiling it on the IBM-PC with Turbo C; these, including the problem
with save files not working, probably have to do with the lf vs cr-lf
problem in MS-DOS files. I don't have Turbo C so those who do will
have to work it out themselves. The business with the EXTERN is for the
benefit of Turbo C.
The game bug fixes include:
Identifying your pants.
Automatic door unlocking.
Wearing your boots.
Taking the fish.
The rest are just improvements in the programming.
Doug McDonald]]
*** vtext.dat Thu Sep 3 18:58:12 1987
--- ../vtext.dat Thu Sep 3 17:01:02 1987
***************
*** 28,34 ****
0026 An adjective cannot modify "all".
0027 Something more is necessary after this verb.
0028 I don't understand that sentence.
! 0029 WORLD. C Version 1.00 Copyright 1987 J.D. McDonald GOOD LUCK!
0030 Don't you dare go back! After you volunteered to come here (and
0030 get out of latrine duty), you'd die of embarrassment if you
0030 turned back.
--- 28,34 ----
0026 An adjective cannot modify "all".
0027 Something more is necessary after this verb.
0028 I don't understand that sentence.
! 0029 WORLD. C Version 1.01 Copyright 1987 J.D. McDonald GOOD LUCK!
0030 Don't you dare go back! After you volunteered to come here (and
0030 get out of latrine duty), you'd die of embarrassment if you
0030 turned back.
***************
*** 130,136 ****
0103 If you need general help, answer yes to the prompt.
0103 If you answer no I will offer hints based on your
0103 present situation.
! 0104 You are on your own.
0105 Some messages (such as this one) may be too big for the screen.
0105 If so, you may proceed by typing the 'return' key. If you don't
0105 like this feature, it may be disabled by the NOMORE command and
--- 130,136 ----
0103 If you need general help, answer yes to the prompt.
0103 If you answer no I will offer hints based on your
0103 present situation.
! 0104 You don't have the key.
0105 Some messages (such as this one) may be too big for the screen.
0105 If so, you may proceed by typing the 'return' key. If you don't
0105 like this feature, it may be disabled by the NOMORE command and
*** arrays.h Thu Sep 3 18:26:04 1987
--- ../arrays.h Thu Sep 3 17:00:15 1987
***************
*** 1,7 ****
/* The arrays declared elsewhere are used starting with index 0;
those declared below starting with index 1 */
! int gtext[5];
! short locdat[LOCNUM+1], odistb[OBJMX2+1];
! short obnoun[OBJMAX+1], obadjv[OBJMAX+1], obw3[OBJMAX+1];
! short obw4[OBJMAX+1], obpprp[OBJMAX+1], obimpr[OBJMAX+1], obloc[MOVMAX+1];
--- 1,8 ----
/* The arrays declared elsewhere are used starting with index 0;
those declared below starting with index 1 */
! extern int gtext[5];
! extern short locdat[LOCNUM+1], odistb[OBJMX2+1];
! extern short obnoun[OBJMAX+1], obadjv[OBJMAX+1], obw3[OBJMAX+1];
! extern short obw4[OBJMAX+1], obpprp[OBJMAX+1], obimpr[OBJMAX+1]
! , obloc[MOVMAX+1];
*** variab.h Thu Sep 3 18:24:15 1987
--- ../variab.h Thu Sep 3 17:00:22 1987
***************
*** 1,16 ****
! int horflg, wirelc[6], punct, three[3] ,eolflg ,lptr ,dotflg ,clause;
! int zadjs[12], zobjs[12], ziadj, ziobj, zpdo, zpio, zactor, zadvrb;
! int zverb, znumb, zall, zbut;
! int wrdnum[30], wrdtyp[30], adverb, actor;
! int dobjs[30], iobj, doadjs[12], ioadj, prepdo, prepio;
! int numdo, butflg, allflg, turns, loc, oldloc, oldlc2, brfflg;
! int deadf, dirty, nonext ,spcloc;
! int fshlif, noshoe, daytim, martim ,marflg[9] ,oextim, rdietm;
! int rvtim, gvtim, eattim, easttm, filmtm, screef;
! int filmst, machst, fimage, dial1, dial2, dial1x, dial2x;
! int wwflag, kmax, xindnt, slflag, more, nomor, rmove, chgact;
! int eastsc, cactsc, diesc, bonus, jackpo, lpill, pbstat, decset;
! int raset, dcombi, chaset, chaser, guardl;
! char outst2[66];
! char inbuf[128];
--- 1,16 ----
! EXTERN int horflg, wirelc[6], punct, three[3] ,eolflg ,lptr ,dotflg ,clause;
! EXTERN int zadjs[12], zobjs[12], ziadj, ziobj, zpdo, zpio, zactor, zadvrb;
! EXTERN int zverb, znumb, zall, zbut;
! EXTERN int wrdnum[30], wrdtyp[30], adverb, actor;
! EXTERN int dobjs[30], iobj, doadjs[12], ioadj, prepdo, prepio;
! EXTERN int numdo, butflg, allflg, turns, loc, oldloc, oldlc2, brfflg;
! EXTERN int deadf, dirty, nonext ,spcloc;
! EXTERN int fshlif, noshoe, daytim, martim ,marflg[9] ,oextim, rdietm;
! EXTERN int rvtim, gvtim, eattim, easttm, filmtm, screef;
! EXTERN int filmst, machst, fimage, dial1, dial2, dial1x, dial2x;
! EXTERN int wwflag, kmax, xindnt, slflag, more, nomor, rmove, chgact;
! EXTERN int eastsc, cactsc, diesc, bonus, jackpo, lpill, pbstat, decset;
! EXTERN int raset, dcombi, chaset, chaser, guardl;
! EXTERN char outst2[66];
! EXTERN char inbuf[128];
*** world.c Thu Sep 3 18:23:11 1987
--- ../world.c Thu Sep 3 16:58:58 1987
***************
*** 1,3 ****
--- 1,4 ----
+ #define EXTERN
#include "parame.inc"
#include "variab.h"
***************
*** 241,247 ****
lab9990:
endsl();
lab9999:
! ;
}
/* end of main program */
--- 242,248 ----
lab9990:
endsl();
lab9999:
! return ;
}
/* end of main program */
*** demons.c Thu Sep 3 18:22:28 1987
--- ../demons.c Thu Sep 3 16:59:43 1987
***************
*** 1,3 ****
--- 1,5 ----
+ #define EXTERN extern
+
#include "parame.inc"
#include "variab.h"
#include "arrays.h"
*** motion.c Thu Sep 3 18:24:13 1987
--- ../motion.c Thu Sep 3 16:59:38 1987
***************
*** 1,3 ****
--- 1,5 ----
+ #define EXTERN extern
+
#include "parame.inc"
#include "variab.h"
#include "arrays.h"
*** helper.c Thu Sep 3 18:19:31 1987
--- ../helper.c Thu Sep 3 18:36:41 1987
***************
*** 1,3 ****
--- 1,5 ----
+ #define EXTERN extern
+
#include <stdio.h>
#include "parame.inc"
#include "variab.h"
***************
*** 33,38 ****
--- 35,44 ----
start += 1;
oldpos = -1;
q1text_dat = open(Q1TEXT, 0);
+ if(q1text_dat == -1) {
+ printf("Can't open text file q1text.dat.\n");
+ exit(0);
+ }
}
z = (long) ((unsigned long) rtext[point]);
filepos = z * 2 & ~1023l;
***************
*** 84,90 ****
}
if (wwflag == 0)
linout(outst2, kmax + 1);
! } while (z < rtext[point + 1]);
}
vlocat(i, h)
--- 90,96 ----
}
if (wwflag == 0)
linout(outst2, kmax + 1);
! } while (z < (long) ( (unsigned long) rtext[point + 1] ) );
}
vlocat(i, h)
***************
*** 578,589 ****
result = RPANT;
else
result = LPANT;
! } else if (wrdnum[0] == DROP)
if (((g1 == 1) || (g1 == 3)) && g2 != 1 && g2 != 3)
result = RPANT;
! if (((g2 == 1) || (g2 == 3)) && g1 != 1 && g1 != 3)
! result = LPANT;
! else
result = -1;
} else if (don == SHIRT) {
itsher(RSHIRT, &g1);
--- 584,595 ----
result = RPANT;
else
result = LPANT;
! } else if (wrdnum[0] == DROP) {
if (((g1 == 1) || (g1 == 3)) && g2 != 1 && g2 != 3)
result = RPANT;
! if (((g2 == 1) || (g2 == 3)) && g1 != 1 && g1 != 3)
! result = LPANT;
! } else
result = -1;
} else if (don == SHIRT) {
itsher(RSHIRT, &g1);
***************
*** 898,906 ****
--- 904,915 ----
return ((q * 327) > (j & 32767));
}
+ extern char *gets();
+
yesx(spk)
int spk;
{
+ char *eoferr;
char ans[90];
/* ask question, and wait for reply from him */
***************
*** 909,918 ****
more = 0;
while (1) {
linout("?", 2001);
! gets(ans);
more = 1;
if (strcmp(ans, "Y") == 0 || strcmp(ans, "YES") == 0
! || strcmp(ans, "y") == 0 || strcmp(ans, "yes") == 0)
return (1);
else if (strcmp(ans, "N") == 0 || strcmp(ans, "NO") == 0
|| strcmp(ans, "n") == 0 || strcmp(ans, "no") == 0)
--- 918,928 ----
more = 0;
while (1) {
linout("?", 2001);
! eoferr = gets(ans);
more = 1;
if (strcmp(ans, "Y") == 0 || strcmp(ans, "YES") == 0
! || strcmp(ans, "y") == 0 || strcmp(ans, "yes") == 0
! || eoferr == (char *) 0)
return (1);
else if (strcmp(ans, "N") == 0 || strcmp(ans, "NO") == 0
|| strcmp(ans, "n") == 0 || strcmp(ans, "no") == 0)
***************
*** 926,935 ****
{
/* write a prompt, then read a line from the terminal */
int i, lastpos;
linout(">", 7001);
! gets(inbuf);
eolflg = 0;
lastpos = strlen(inbuf);
lastpos = (lastpos > 78) ? 78 : lastpos;
--- 936,947 ----
{
/* write a prompt, then read a line from the terminal */
+ char *eoferr;
int i, lastpos;
linout(">", 7001);
! eoferr = gets(inbuf);
! if(eoferr == (char *) 0) exit(0);
eolflg = 0;
lastpos = strlen(inbuf);
lastpos = (lastpos > 78) ? 78 : lastpos;
*** parser.c Thu Sep 3 18:25:08 1987
--- ../parser.c Thu Sep 3 16:59:19 1987
***************
*** 1,3 ****
--- 1,5 ----
+ #define EXTERN extern
+
#include "parame.inc"
#include "variab.h"
#include "arrays.h"
*** verbs1.c Thu Sep 3 18:21:01 1987
--- ../verbs1.c Thu Sep 3 16:59:56 1987
***************
*** 1,3 ****
--- 1,5 ----
+ #define EXTERN extern
+
#include "parame.inc"
#include "variab.h"
#include "arrays.h"
***************
*** 780,792 ****
if (n == RDOOR || (n == MDOOR && loc == 41))
spk = 235;
else if (n == MDOOR || n == GDOOR) {
! if (wrdnum[0] == LOCK)
! obimpr[n] |= 4;
! else
! obimpr[n] = (obimpr[n] & ~4);
! /* ~4=177773 octal */
!
spk = 75;
} else
spk = 48;
} else
--- 782,796 ----
if (n == RDOOR || (n == MDOOR && loc == 41))
spk = 235;
else if (n == MDOOR || n == GDOOR) {
! if(obloc[CKEY] == 1000 || obloc[CKEY] == 3000) {
! if (wrdnum[0] == LOCK)
! obimpr[n] |= 4;
! else
! obimpr[n] = (obimpr[n] & ~4);
! /* ~4=177773 octal */
spk = 75;
+ } else
+ spk = 104;
} else
spk = 48;
} else
*** verbs2.c Thu Sep 3 18:25:50 1987
--- ../verbs2.c Thu Sep 3 17:00:13 1987
***************
*** 1,3 ****
--- 1,5 ----
+ #define EXTERN extern
+
#include "parame.inc"
#include "variab.h"
#include "arrays.h"
***************
*** 1062,1071 ****
spk = 188;
}
/* take fish (from sea) with net. */
!
! else if (z == CFISH && loc == 16 &&
! (prepio != WITH || xiobj != BNET))
! spk = 80;
/* prevent him from killing wish in watery bag */
else if (z == CFISH && obloc[z] ==
--- 1064,1080 ----
spk = 188;
}
/* take fish (from sea) with net. */
! else if (z == CFISH && loc == 16 && obimpr[CFISH]/4096 == 1) {
! if (prepio != WITH || xiobj != BNET)
! spk = 80;
! else if (obloc[BNET] != 1000)
! spk = 91;
! else {
! obloc[CFISH] = 2000 + BNET;
! spk = 81;
! obimpr[CFISH] -= 4088;
! }
! }
/* prevent him from killing wish in watery bag */
else if (z == CFISH && obloc[z] ==
***************
*** 1203,1216 ****
else
spk = 429;
}
- /* actual fish taking from sea occurs here */
-
- if (dobjs[i] == CFISH && loc == 16) {
- if (obloc[BNET] == 1000)
- obloc[CFISH] = 2000 + BNET;
- else
- spk = 91;
- }
/*
* special increment of descriptor pointer if obimpr has 4096
* set
--- 1212,1217 ----
***************
*** 1432,1438 ****
} else if (plce == 2) {
spk = 68;
if (plural)
! spk = 147;
} else if ((obpprp[d] & 64) != 64 && d != ZDEET)
spk = 85;
else if ((d == RPANT && obloc[LPANT] == 3000) ||
--- 1433,1439 ----
} else if (plce == 2) {
spk = 68;
if (plural)
! spk = 187;
} else if ((obpprp[d] & 64) != 64 && d != ZDEET)
spk = 85;
else if ((d == RPANT && obloc[LPANT] == 3000) ||