Initial commit

This commit is contained in:
Jamie Bainbridge 2021-04-04 15:15:18 +10:00
commit 01f7ee57e9
72 changed files with 21656 additions and 0 deletions

BIN
A1.BAS Normal file

Binary file not shown.

1817
A1.BAS.txt Normal file

File diff suppressed because it is too large Load Diff

2
A1.MAK Normal file
View File

@ -0,0 +1,2 @@
A1.BAS
MODJNK.BAS

BIN
A2.BAS Normal file

Binary file not shown.

2159
A2.BAS.txt Normal file

File diff suppressed because it is too large Load Diff

3
A2.MAK Normal file
View File

@ -0,0 +1,3 @@
A2.BAS
A3.BAS
MODJNK.BAS

BIN
A3.BAS Normal file

Binary file not shown.

2018
A3.BAS.txt Normal file

File diff suppressed because it is too large Load Diff

BIN
A4.BAS Normal file

Binary file not shown.

1569
A4.BAS.txt Normal file

File diff suppressed because it is too large Load Diff

3
A4.MAK Normal file
View File

@ -0,0 +1,3 @@
A4.BAS
A5.BAS
MODJNK.BAS

BIN
A5.BAS Normal file

Binary file not shown.

2039
A5.BAS.txt Normal file

File diff suppressed because it is too large Load Diff

BIN
A6.BAS Normal file

Binary file not shown.

1612
A6.BAS.txt Normal file

File diff suppressed because it is too large Load Diff

3
A6.MAK Normal file
View File

@ -0,0 +1,3 @@
A6.BAS
A7.BAS
MODJNK.BAS

BIN
A7.BAS Normal file

Binary file not shown.

1985
A7.BAS.txt Normal file

File diff suppressed because it is too large Load Diff

BIN
A8.BAS Normal file

Binary file not shown.

1486
A8.BAS.txt Normal file

File diff suppressed because it is too large Load Diff

2
A8.MAK Normal file
View File

@ -0,0 +1,2 @@
A8.BAS
MODJNK.BAS

841
ALPCLIB.C Normal file
View File

@ -0,0 +1,841 @@
/*
Copyright (c) 1995 Jeffrey R. Olson
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#include <stdio.h>
#include <float.h>
#include <ctype.h>
#include <math.h>
#include <stdlib.h>
/* #include <string.h> */
#define getrandom( min, max ) ((rand() % (int)((max) - (min) + 1)) + (min) )
#define cint( x ) ( floor(x+.5) )
#define pi 3.14159
#define true -1
#define false 0
#define hor 205
#define ver 186
#define cen 206
#define ul 201
#define um 203
#define ur 187
#define ml 204
#define mrt 185
#define ll 200
#define lm 202
#define lr 188
#define lockeddoor 43
#define secretdoor 228
/*
struct com_block {
int nnear, ncre[16][51], incastle, dots;
int vpage, mainx,mainy, localx,localy, terrain,terrf,terrb;
int currsym,currf,currb, ncastle, looksym;
};
*/
extern void fortran getsym(int near *, int near *, int near *, int near *, int near *, int near *);
extern void fortran putsym(int near *, int near *, int near *, int near *, int near *, int near *);
void near addaroom(int x, int y, int dx, int dy);
void near drawtunnel(int x, int y, int dx, int dy);
void far lair(int *xr, int *xl, int *yb, int *yt, int *xs, int *ys);
int far walldist(int x, int y, int dx, int dy, int max, int incastle);
void far finddot(int *x, int *y, int incastle);
int far rolldice(int size, int nroll, int nuse);
int far confuse(int r, int i);
int far roomit(int xr, int xl, int yb, int yt);
void far cmainmap(int irnd, int jrnd);
void far cdetailedmap(int t, int t1, int t2, int t3, int t4);
void far box(int x1, int x2, int y1, int y2, int nl, int fc, int pag);
void far creatsort(int nnear, int *tentgrab, int far ncre[16][51]);
int far csameroom(int x1, int y1, int x2, int y2, int localx, int localy, int nnear, int far ncre[16][51]);
int far badmovecreat(int newx, int newy, int nnear, int cre, int far ncre[16][51]);
void far clearright(int pag);
void far ccls(int pag);
int far cgetsym(int x, int y, int pag);
int far sgn(int num);
int far isqrt(unsigned int num);
void far cputsym(int sym, int x, int y, int fc, int bc, int pag);
void far crandomize (float seed);
int far croll(int max);
int far crd(int x, int y);
int far crdsimp(int x, int y);
int far cfinddxdy(int x, int y, int n);
int nested,maxnested, xstair,ystair;
/*
main() {
}
*/
void near addaroom(int x, int y, int dx, int dy) /*----------------------*/
{
int i,j, xr,xl,yb,yt, x1,y1,dx1,dy1, dir,sym;
int putroom=true;
cputsym(219,x,y,9,0,2);
cputsym(219,x-dx,y-dy,9,0,2);
xr = getrandom(x,x+2);
xl = getrandom(x-2,x);
yb = getrandom(y,y+2);
yt = getrandom(y-2,y);
if(dx==1) xr++;
else if(dx==-1) xl--;
if(dy==1) yb++;
else if(dy==-1) yt--;
for(i=xl-1;i<=xr+1;i++) {
for(j=yt-1;j<=yb+1;j++) {
sym = cgetsym(i, j ,2); sym %= 256;
if(sym!=219) putroom=false;
}
}
if(putroom) {
for(i=xl;i<=xr;i++) { for(j=yt;j<=yb;j++) cputsym(250,i,j,8,0,2); }
for(i=1;i<=10;i++) {
dir=getrandom(1,4);
x1=getrandom(xl,xr); y1=getrandom(yt,yb); dx1=0; dy1=0;
switch(dir) {
case 1: x1=xl; dx1=-1; break;
case 2: y1=yt; dy1=-1; break;
case 3: x1=xr; dx1=1; break;
case 4: y1=yb; dy1=1; break;
}
drawtunnel(x1,y1,dx1,dy1);
}
}
cputsym(250,x,y,8,0,2);
cputsym(250,x-dx,y-dy,8,0,2);
}
void near drawtunnel(int x, int y, int dx, int dy) /*-------------------*/
{
int maxlen,max, i;
int num;
int dx1,dy1, dx2,dy2, dx3,dy3;
nested++;
maxlen = (dy==0) ? getrandom(3,getrandom(3,14)) : getrandom(3,getrandom(3,8));
max=walldist(x,y,dx,dy,maxlen,1)-1;
if (maxlen>max) maxlen=max;
if(maxlen<3) { nested--; return; }
for(i=0;i<maxlen;i++) {
cputsym(250,x,y,8,0,2);
x += dx; y += dy;
}
x -= dx; y -= dy;
if(nested>4) addaroom(x,y,dx,dy);
if(nested<30) {
dx1 = -dy; dy1 = -dx; dx2 = dy; dy2 = dx;
dx3 = dx; dy3 = dy;
drawtunnel(x,y,dx1,dy1);
drawtunnel(x,y,dx2,dy2);
drawtunnel(x,y,dx3,dy3);
}
if((maxnested<nested) && (croll(2)==2)) {
maxnested=nested; xstair=x; ystair=y;
}
nested--;
return;
}
void far lair(int *xr, int *xl, int *yb, int *yt, int *xs, int *ys)
{
int xm,xw, ym,yw, i,j;
int x,y, dx,dy;
nested=0;
maxnested=0;
xm = getrandom(21,32); xw = getrandom(6,10);
ym = getrandom(10,13); yw = getrandom(4,6);
*xl = xm - xw/2; *xr = *xl + xw;
*yt = ym - yw/2; *yb = *yt + yw;
for(i=2;i<52;i++) { for(j=2;j<22;j++) cputsym(219,i,j,9,0,2); }
for(i=*xl; i<=*xr; i++) {
for(j=*yt; j<=*yb; j++) cputsym(250,i,j,8,0,2);
}
box(1,52,1,22,1,4,2);
for(i=0;i<10;i++) {
x=getrandom(*xl+1,*xr-1); y=getrandom(*yt+1,*yb-1);
dx=0; dy=0;
switch(croll(4)) {
case 1: x=*xl-1; dx=-1; break;
case 2: x=*xr+1; dx=1; break;
case 3: y=*yt-1; dy=-1; break;
case 4: y=*yb+1; dy=1; break;
}
drawtunnel(x,y,dx,dy);
}
cputsym(240,xstair,ystair,13,0,2);
*xs = xstair; *ys = ystair;
return;
}
int far walldist(int x, int y, int dx, int dy, int max, int incastle) /*---*/
{
int dist, k, sym,sym1,sym2;
dist=max;
k=0;
while(k<max) {
k++;
x += dx; y += dy;
if(incastle==1) {
sym = cgetsym(x, y ,2); sym %= 256;
sym1 = cgetsym(x+dy, y+dx ,2); sym1 %= 256;
sym2 = cgetsym(x-dy, y-dx ,2); sym2 %= 256;
if((sym!=219) || (sym1!=219) || (sym2!=219)) {
if(croll(40)!=1) { dist=k-1; k=max+1; }
}
}
else {
sym = cgetsym(x+dx*k, y+dy*k ,2); sym %= 256;
switch (sym) {
case 32: case 240: case 250: break;
default: dist=k; k=max+1; break;
}
}
}
return dist;
}
void far finddot(int *x, int *y, int incastle) /*----------------------*/
{
int dot=false;
int sym,fc,bc;
while (dot==0) {
*x=getrandom(2,51); *y=getrandom(2,21);
sym = cgetsym(*x,*y,2); sym %= 256;
if(incastle) { if(sym==250) dot=true; }
else if(sym==250 || sym==249 || sym==32 || sym==247 || sym==126)
dot=true;
}
}
int far rolldice(int size, int nroll, int nuse) /*----------------------*/
{
int dice[50];
int i,j, temp;
nroll = (nroll>50) ? 50 : nroll;
nuse = (nuse>nroll) ? nroll : nuse;
for(i=0;i<nroll;i++) dice[i]=getrandom(1,size);
if(nroll!=nuse) {
for(i=0;i<nuse;i++) {
for(j=i+1;j<nroll;j++) {
if(dice[i] < dice[j]) {
temp=dice[i]; dice[i]=dice[j]; dice[j]=temp;
}
}
}
}
temp=0; for(i=0;i<nuse;i++) temp += dice[i];
return temp;
}
int far confuse(int r, int i) /*----------------------*/
{
int dir = -1;
int z;
switch(r) {
case 1071: dir=7; break;
case 1072: dir=0; break;
case 1073: dir=1; break;
case 1075: dir=6; break;
case 1077: dir=2; break;
case 1079: dir=5; break;
case 1080: dir=4; break;
case 1081: dir=3; break;
}
z=getrandom(1,100);
switch(i) {
case 1:
if(z<68) {
dir += getrandom(-2,2);
dir = (dir<0) ? dir+8 : dir;
dir = (dir>7) ? dir-8 : dir;
}
else if(z<95) dir = r;
else dir=46;
break;
case 2:
if(z<72) {
dir += getrandom(-1,1);
dir = (dir<0) ? dir+8 : dir;
dir = (dir>7) ? dir-8 : dir;
}
else if(z<99) dir = r;
else dir=46;
break;
default:
if(z<68) dir = getrandom(0,7);
else if(z<95) dir = r;
else dir=46;
break;
}
switch(dir) {
case 0: z=1072; break;
case 1: z=1073; break;
case 2: z=1077; break;
case 3: z=1081; break;
case 4: z=1080; break;
case 5: z=1079; break;
case 6: z=1075; break;
case 7: z=1071; break;
default: z=dir; break;
}
return z;
}
int far roomit(int xr, int xl, int yb, int yt) /*----------------------*/
{
int sym;
int i,j;
int dots=0;
sym = cgetsym(xr,yb,2);
sym %= 256;
switch(sym) {
case ll: case hor: sym=lm; break;
case ul: case um: case ml: sym=cen; break;
case lr: case lm: case mrt: case cen:
case lockeddoor: case secretdoor: break;
case ur: case ver: sym=mrt; break;
default: sym=lr; break;
}
cputsym(sym,xr,yb,9,0,2);
/* cputsym(sym,xr,yb,9,0,2); debug */
sym = cgetsym(xr,yt,2); sym %= 256;
switch(sym) {
case ver: case lr: sym=mrt; break;
case ml: case ll: case lm: sym=cen; break;
case um: case ur: case mrt: case cen:
case lockeddoor: case secretdoor: break;
case ul: case hor: sym=um; break;
default: sym=ur; break;
}
cputsym(sym,xr,yt,9,0,2);
/* cputsym(sym,xr,yt,9,0,1); debug */
sym = cgetsym(xl,yb,2); sym %= 256;
switch(sym) {
case ul: case ver: sym=ml; break;
case um: case ur: case mrt: sym=cen; break;
case ml: case ll: case lm: case cen:
case lockeddoor: case secretdoor: break;
case lr: case hor: sym=lm; break;
default: sym=ll; break;
}
cputsym(sym,xl,yb,9,0,2);
/* cputsym(sym,xl,yb,9,0,1); debug */
sym = cgetsym(xl,yt,2); sym %= 256;
switch(sym) {
case ll: case ver: sym=ml; break;
case lm: case lr: case mrt: sym=cen; break;
case ml: case ul: case um: case cen:
case lockeddoor: case secretdoor: break;
case ur: case hor: sym=um; break;
default: sym=ul; break;
}
cputsym(sym,xl,yt,9,0,2);
/* cputsym(sym,xl,yt,9,0,1); debug */
for(i=xl+1;i<xr;i++) {
sym = cgetsym(i,yt,2); sym %= 256;
switch(sym) {
case ll: case lm: case lr: sym=lm; break;
case cen: case lockeddoor: case secretdoor: break;
default: sym=hor; break;
}
cputsym(sym,i,yt,9,0,2);
/* cputsym(sym,i,yt,9,0,1); debug */
sym = cgetsym(i,yb,2); sym %= 256;
switch(sym) {
case ul: case um: case ur: sym=um; break;
case cen: case lockeddoor: case secretdoor: break;
default: sym=hor; break;
}
cputsym(sym,i,yb,9,0,2);
/* cputsym(sym,i,yb,9,0,1); debug */
for(j=yt+1;j<yb;j++) { cputsym(250,i,j,8,0,2); dots++; }
}
for(i=yt+1;i<yb;i++) {
sym = cgetsym(xr,i,2); sym %= 256;
switch(sym) {
case ll: case ml: case ul: sym=ml; break;
case cen: case lockeddoor: case secretdoor: break;
default: sym=ver; break;
}
cputsym(sym,xr,i,9,0,2);
/* cputsym(sym,xr,i,9,0,1); debug */
sym = cgetsym(xl,i,2); sym %= 256;
switch(sym) {
case lr: case mrt: case ur: sym=mrt; break;
case cen: case lockeddoor: case secretdoor: break;
default: sym=ver; break;
}
cputsym(sym,xl,i,9,0,2);
/* cputsym(sym,xl,i,9,0,1); debug */
}
return dots;
}
void far cmainmap(int irnd, int jrnd) /*----------------------*/
{
int i,j;
int z,z1, sym, a,b,c;
float x,y,result,csx,csy;
box(1,52,1,22,1,4,0);
for(i=2;i<=17;i++) {
y = (i-2)*.025;
for(j=2;j<=51;j++) {
x = (j-25)*.02;
result = getrandom(4,7) / (.033 + x*x+ 5*(y-.1)*(y-.1));
result = result + getrandom(4,7) / (.05 + (x-.5)*(x-.5) + 2*y*y);
z = floor(result) - getrandom(16,50);
if(getrandom(1,100)<z) {
sym = (getrandom(1,1000)<7*z) ? 15 : 42;
cputsym(sym, j+jrnd*(53 - 2*j), i+irnd*(23 - 2*i), 2+8*(getrandom(1,2)==1), 0, 0);
}
}
}
a=getrandom(1,40), b=getrandom(1,20), c=getrandom(1,300);
for(i=14;i<=21;i++) {
y = (i*33 - 420 + a);
csy = cos(y/200);
for(j=2;j<=51;j++) {
x = (j*10 - 230 + b);
csx = cos(x/200);
z = 100*(csx*csx+csy*csy) + x*y/(3500 + c);
z1 = z + croll(10)-croll(10);
if(z<58)
cputsym(247, j+jrnd*(53 - 2*j), i+irnd*(23 - 2*i), 1+8*(getrandom(1,2)==1), 0, 0);
else if(z1<78)
cputsym(177, j+jrnd*(53 - 2*j), i+irnd*(23 - 2*i), 6, 0, 0);
else if(z1<100)
cputsym(176, j+jrnd*(53 - 2*j), i+irnd*(23 - 2*i), 6, 0, 0);
}
}
}
void far cdetailedmap(int t, int t1, int t2, int t3, int t4) /*----------*/
{
int x,y, zx,zy, terr;
int xx,yy;
int z, sym, clr, clradd, bc;
box(1,52,1,22,1,4,1); box(1,52,1,22,1,4,2);
for(x=2;x<=51;x++) {
zx = 7*(abs(x-26) - 12);
for(y=2;y<=21;y++) {
zy = 14*(abs(y-11) - 3);
xx = getrandom(1,100), yy = getrandom(1,100);
terr=t;
if(yy<zy) terr = (y>12) ? t4 : t2;
if(xx<zx) terr = (x>25) ? t3 : t1;
z = getrandom(1,100);
clradd = getrandom(0,1) * 8;
switch (terr) {
case 15: case 94: /* deep forest */
if(z>70) sym=250;
else if(z>40) sym = 249;
else if(z>11) sym = 42;
else sym = 15;
clr = 2+clradd;
break;
case 42: case 127: /* light forest */
if(z>70) sym=32;
else if(z>40) sym = 250;
else if(z>15) sym = 249;
else if(z>5) sym = 42;
else sym = 15;
clr = 2+clradd;
break;
case 176: case 30: /* marsh */
clr = 6;
if(z>24) sym=32;
else if(z>10) sym = 176;
else if(z>6) { sym = 247; clr = 1; }
else if(z>2) { sym = 42;
if(getrandom(1,3)!=1) clr=2; }
else { sym = 15;
if(getrandom(1,3)!=1) clr=2; }
break;
case 177: /* swamp */
clr = 6;
if(z>44) sym=32;
else if(z>17) sym = 176;
else if(z>6) { sym = 247; clr = 1; }
else if(z>2) { sym = 42;
if(getrandom(1,2)!=1) clr=2; }
else { sym = 15;
if(getrandom(1,2)!=1) clr=2; }
break;
case 247:
if(z<90) sym=247;
else sym=126;
clr = (getrandom(1,6)==1) ? 3 : 1;
break;
default:
clr = 6;
if(z>40) sym=32;
else if(z>20) sym = 250;
else if(z>2) sym = 249;
else if(z==2){ sym = 42; clr=2 + clradd; }
else { sym = 15; clr=2 + clradd; }
break;
}
cputsym(sym,x,y,clr,0,2);
}
}
}
void far box(int lc, int rc, int tc, int bc, int nl, int fc, int pag)
{
int a,b,c,d,e,f;
int i;
switch (nl) {
case 1: a=196, b=179, c=218, d=191, e=217, f=192; break;
default: a=205, b=186, c=201, d=187, e=188, f=200; break;
}
for(i=lc+1;i<rc;i++) {
cputsym(a,i,bc,fc,0,pag); cputsym(a,i,tc,fc,0,pag);
}
for(i=tc+1;i<bc;i++) {
cputsym(b,rc,i,fc,0,pag); cputsym(b,lc,i,fc,0,pag);
}
cputsym(c,lc,tc,fc,0,pag); cputsym(d,rc,tc,fc,0,pag);
cputsym(e,rc,bc,fc,0,pag); cputsym(f,lc,bc,fc,0,pag);
return;
}
void far creatsort(int nnear, int *tentgrab, int far ncre[16][51]) /*-----*/
{
int i, j, offset, limit, switchit, switched, tempo;
int cnt[51];
int scratch[51];
int temp[16][51];
if (nnear >50) nnear=50;
for(i=1;i<=nnear;i++) {
if (true) { /* ncre[11][i] */
scratch[i] = abs(ncre[4][i]) + abs(ncre[5][i]);
if(ncre[6][i] < 0) scratch[i] = -scratch[i];
}
else scratch[i] = 100+i;
cnt[i] = i;
}
offset = floor(nnear/2.);
switched = false;
while(offset>0) {
limit = nnear - offset;
do {
switchit = false;
for(i=1;i<=limit;i++) {
if(scratch[cnt[i]] > scratch[cnt[i+offset]]) {
tempo = cnt[i];
cnt[i] = cnt[i+offset];
cnt[i+offset] = tempo;
switchit = true;
switched = true;
}
}
limit = switchit - offset;
} while(switchit);
offset = floor(offset/2.);
}
if(switched) {
for(i=1;i<=nnear;i++) {
for(j=1;j<=15;j++) { temp[j][i] = ncre[j][i]; }
}
for(i=1;i<=nnear;i++) {
for(j=1;j<=15;j++) { ncre[j][cnt[i]] = temp[j][i]; }
}
if(*tentgrab>0){ i=*tentgrab; *tentgrab=cnt[i]; }
}
}
int far csameroom(int x1, int y1, int x2, int y2, int localx, int localy, int nnear, int far ncre[16][51])
{
int same = true;
int ddx = x2-x1;
int ddy = y2-y1;
int dxtemp = ddx - sgn(ddx);
int dytemp = ddy - sgn(ddy);
int x = dxtemp - sgn(dxtemp);
int y = dytemp - sgn(dytemp);
int rrr = crdsimp(x, y);
int xstart, ystart;
float dx = 0;
float dy = 0;
int attr, sym, fc, cr, i, j;
if(rrr>0) { dx = ((float)x) / rrr; dy = ((float)y) / rrr; }
xstart = x1 + sgn(ddx); ystart = y1 + sgn(ddy);
for(i=0; i<=rrr; i++) {
y = cint( ystart + dy*i ); x = cint( xstart + dx*i );
if ( (x != x1+ddx) || (y != y1+ddy) ) {
attr = cgetsym(x, y, 2);
sym = attr % 256; attr -= sym; attr >>= 8; fc = attr % 16;
if (fc == 9) same = false;
else {
if (isalpha(sym)) {
cr = 0;
for (j=1;j<=nnear;j++) {
if ((ncre[4][j] == (x-localx)) && (ncre[5][j] == (y-localy)))
cr = j;
}
if ( (cr>0) && (floor(ncre[8][cr] / 1000) == 9) )
same = false;
}
}
}
}
return same;
}
int far badmovecreat(int newx, int newy, int nnear, int cre, int far ncre[16][51])
{
int bad = 0;
int count = 1;
while( (bad==0) && (count<=nnear) ) {
if( (ncre[4][count] == newx) && (ncre[5][count] == newy) ) {
if(count != cre){ bad = count; return bad; }
}
count++;
}
return bad;
}
void far clearright(int pag) /*----------------------*/
{
int vidseg = 0xb800 + pag * 0x100;
_asm {
mov es,vidseg
mov dx,106
mov al,32
mov ah,7
c_right:
mov di,dx
mov cx,27
cld
rep stosw
add dx,160
cmp dx,3660
jl c_right
}
}
void far ccls(int pag) /*----------------------*/
{
int vidseg = 0xb800 + pag * 0x100;
_asm {
mov es,vidseg
mov di,0
mov al,32
mov ah,7
mov cx,2000
cld
rep stosw
}
}
int far sgn(int num) /*----------------------*/
{
_asm {
mov cx,num
cmp cx,0
jl SHORT nega
cmp cx,0
je SHORT zro
mov cx,1
jmp SHORT lvsgn
nega:
mov cx,-1
jmp SHORT lvsgn
zro:
mov cx,0
lvsgn:
mov ax,cx
}
}
int far isqrt(unsigned int num) /*----------------------*/
{
_asm {
mov cx,num
mov bx,cx
mov ax,1
jmp SHORT zero_check
isqrt_1:
sub cx,ax
add ax,2
zero_check:
or cx,cx
jge isqrt_1
sar ax,1
mov cx,ax
imul cx
sub ax,cx
inc ax
cmp ax,bx
jbe isqrt_exit
dec cx
isqrt_exit:
mov ax,cx
}
}
int far cgetsym (int x, int y, int pag) /*----------------------*/
{
int attr;
if (pag==2) {
int sym,fc,bc;
getsym(&sym,&x,&y,&fc,&bc,&pag);
attr = fc+bc*16; attr <<= 8; attr+=sym;
}
else {
int row = --y;
int col = --x;
int place = row*80+col;
int vidseg = 0xb800 + pag * 0x100;
_asm {
mov es,vidseg
mov dx,place
mov di,dx
shl di,1
push dx
mov dx,03dah
cli
mov bx,es:[di]
mov attr,bx
sti
pop dx
}
}
return attr;
}
void far cputsym (int sym, int x, int y, int fc, int bc, int pag) /*------*/
{
if (pag==2) { putsym(&sym,&x,&y,&fc,&bc,&pag); }
else {
int row = --y, col = --x;
int place = row*80+col;
int vidseg = 0xb800 + pag * 0x100;
int attr = fc+bc*16; attr <<= 8; attr+=sym;
_asm {
mov es,vidseg
mov dx,place
mov di,dx;
shl di,1
push dx
mov dx,03dah
cli
mov bx,attr
mov es:[di],bx
sti
pop dx
}
}
}
void far crandomize (float seed) /*----------------------*/
{
unsigned int iseed;
for( ; seed>3276; seed /= 2) ;
iseed = floor(seed*10);
srand(iseed);
}
int far croll(int max) /*----------------------*/
{
int result;
result = (max>1) ? getrandom(1,max) : 1;
return result;
}
int far crd(int x, int y) /*----------------------*/
{
float result = y*y + x*x;
int ires;
unsigned int ures;
if (result<65536) { ures=cint(result); ires=isqrt(ures); }
else { ires = cint(sqrt(result)); }
return ires;
}
int far crdsimp(int x, int y) /*-------------------*/
{
int ires;
int xx=abs(x), yy=abs(y);
if (xx>yy) { yy >>= 2; ires = xx+yy; }
else { xx >>= 2; ires = xx+yy; }
return ires;
}
int far cfinddxdy(int x, int y, int n) /*----------------------*/
{
int p = 30*(n+.2);
int mult = 3*p;
int rx, ry;
int dx, dy, res;
if( mult<100 ) mult = 100;
rx = getrandom( 1,10*mult ); ry = getrandom( 1,10*mult );
dx = -sgn(x); if ( abs(x)==1 && croll(4)==1) dx = 0;
dy = -sgn(y); if ( abs(y)==1 && croll(4)==1) dy = 0;
switch( dx ) {
case -1: case 1:
if( rx<p ) dx = -dx;
else if( rx<p*10 ) dx = 0;
break;
default:
if( rx<mult*3 ) dx = -1;
else if( rx<mult*6 ) dx = 1;
break;
}
switch( dy ) {
case -1: case 1:
if( ry<p ) dy = -dy;
else if( ry<p*10 ) dy = 0;
break;
default:
if( ry<mult*3 ) dy = -1;
else if( ry<mult*6 ) dy = 1;
break;
}
res=10*(++dx) + (++dy);
return res;
}

BIN
ALPHA.CAS Normal file

Binary file not shown.

502
ALPHA.CAS.txt Normal file
View File

@ -0,0 +1,502 @@
' Copyright (c) 1995 Jeffrey R. Olson
'
' Permission is hereby granted, free of charge, to any person obtaining a copy
' of this software and associated documentation files (the "Software"), to deal
' in the Software without restriction, including without limitation the rights
' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all
' copies or substantial portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
' SOFTWARE.
DEFINT A-Z
CLS
OPEN "alphaman.4" FOR BINARY AS #1
location = 13: PUT #1, 1, location 'pos of first castle's data (6*2 bytes+1)
RESTORE elvcas
READ numrooms: PUT #1, location, numrooms
FOR j = 1 TO numrooms
READ a, b, c, d
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d
NEXT j
READ numremove: PUT #1, , numremove
FOR j = 1 TO numremove
READ a, b, c
PUT #1, , a: PUT #1, , b: PUT #1, , c
NEXT j
READ numdoors: PUT #1, , numdoors
FOR j = 1 TO numdoors
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numlocked: PUT #1, , numlocked
FOR j = 1 TO numlocked
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numsecret: PUT #1, , numsecret
FOR j = 1 TO numsecret
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numitems: PUT #1, , numitems
FOR j = 1 TO numitems
READ a, b, c, d, e
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d: PUT #1, , e
NEXT j
READ numtraps: PUT #1, , numtraps
FOR j = 1 TO numtraps
READ a, b, c, d
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d
NEXT j
location = LOC(1) + 1: PUT #1, 3, location
elvcas: '++++++++++++++++++++++++++++++++++++++++++++
'numrooms
DATA 48
DATA 31,29,9,3, 48,31,14,12, 24,22,20,14, 22,5,11,9
DATA 13,5,6,3, 18,13,6,3, 25,18,6,3, 29,25,6,3
DATA 10,5,9,6, 16,10,9,6, 21,16,9,6, 29,21,9,6
DATA 38,31,7,3, 42,38,7,3, 44,42,7,3, 48,44,9,3
DATA 36,31,12,7, 40,36,12,7, 44,40,12,7, 48,44,12,9
DATA 8,5,14,11, 12,8,14,11, 15,12,14,11, 19,15,14,11, 22,19,14,11
DATA 9,5,17,14, 12,9,17,14, 16,12,17,14, 19,16,17,14, 22,19,17,14
DATA 8,5,20,17, 11,8,20,17, 15,11,20,17, 18,15,20,17, 22,18,20,17
DATA 26,24,18,14, 30,26,16,14, 36,30,16,14, 41,36,16,14
DATA 32,26,18,16, 32,24,20,18, 34,32,20,16, 41,34,18,16, 41,34,20,18
DATA 43,41,20,14, 48,43,16,14, 48,43,18,16, 48,43,20,18
'numremove
DATA 2
DATA 205,33,16, 186,44,4
'numdoors
DATA 4
DATA 30,9, 22,10, 23,14, 31,13
'numlocked
DATA 0
'numsecret
DATA 42
DATA 11,6, 10,7, 18,4, 17,6, 16,8, 21,7, 29,4, 28,6
DATA 33,7, 37,7, 39,7, 42,5, 44,8, 47,12
DATA 12,13, 19,13, 7,14, 10,14, 14,14, 18,14, 21,14
DATA 9,15, 16,15, 17,17, 21,17, 11,18, 15,18, 8,19, 6,11
DATA 24,19, 26,15, 26,17, 30,15, 31,18, 34,19, 36,15
DATA 41,15, 40,18, 43,19, 44,16, 47,18, 44,11
'numitems
DATA 0
'numtraps
DATA 0
RESTORE muncas
READ numrooms: PUT #1, location, numrooms
FOR j = 1 TO numrooms
READ a, b, c, d
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d
NEXT j
READ numremove: PUT #1, , numremove
FOR j = 1 TO numremove
READ a, b, c
PUT #1, , a: PUT #1, , b: PUT #1, , c
NEXT j
READ numdoors: PUT #1, , numdoors
FOR j = 1 TO numdoors
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numlocked: PUT #1, , numlocked
FOR j = 1 TO numlocked
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numsecret: PUT #1, , numsecret
FOR j = 1 TO numsecret
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numitems: PUT #1, , numitems
FOR j = 1 TO numitems
READ a, b, c, d, e
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d: PUT #1, , e
NEXT j
READ numtraps: PUT #1, , numtraps
FOR j = 1 TO numtraps
READ a, b, c, d
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d
NEXT j
location = LOC(1) + 1: PUT #1, 5, location
muncas: '++++++++++++++++++++++++++++++++++++++++++++
'numrooms
DATA 30
DATA 10,5,7,3, 16,10,7,3, 18,16,9,3, 23,18,6,3, 23,18,9,6
DATA 16,7,9,7, 7,5,13,7, 16,7,13,9, 22,16,13,9, 30,23,9,3
DATA 35,30,6,3, 35,30,9,6, 37,35,9,3, 43,37,7,3, 48,43,7,3
DATA 46,37,9,7, 48,46,13,7, 46,37,13,9, 37,31,13,9, 48,44,18,13
DATA 44,35,18,13, 35,31,18,13, 48,31,20,18, 31,29,20,14, 29,24,20,14
DATA 24,22,20,14, 22,5,20,18, 9,5,18,13, 18,9,18,13, 22,18,18,13
'numremove
DATA 4
DATA 186,7,8, 186,46,8, 186,22,19, 186,31,19
'numdoors
DATA 9
DATA 16,4, 37,4, 17,9, 26,9, 36,9, 16,11, 22,11, 31,11, 37,11
'numlocked
DATA 5
DATA 6,13, 47,13, 22,15, 7,18, 46,18
'numsecret
DATA 12
DATA 10,5, 14,7, 23,4, 30,4, 43,5, 39,7
DATA 23,8, 30,8, 20,13, 33,13, 42,13, 29,15
'numitems ' sym,x,y,fc,iop
DATA 5
DATA 7,13,15,15,4
DATA 22,19,16,5,11, 22,42,17,5,11
DATA 254,39,14,6,12, 254,21,17,6,12
'numtraps
DATA 2
DATA 19,25,15,8, 19,15,15,8
RESTORE gilcas
READ numrooms: PUT #1, location, numrooms
FOR j = 1 TO numrooms
READ a, b, c, d
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d
NEXT j
READ numremove: PUT #1, , numremove
FOR j = 1 TO numremove
READ a, b, c
PUT #1, , a: PUT #1, , b: PUT #1, , c
NEXT j
READ numdoors: PUT #1, , numdoors
FOR j = 1 TO numdoors
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numlocked: PUT #1, , numlocked
FOR j = 1 TO numlocked
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numsecret: PUT #1, , numsecret
FOR j = 1 TO numsecret
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numitems: PUT #1, , numitems
FOR j = 1 TO numitems
READ a, b, c, d, e
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d: PUT #1, , e
NEXT j
READ numtraps: PUT #1, , numtraps
FOR j = 1 TO numtraps
READ a, b, c, d
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d
NEXT j
location = LOC(1) + 1: PUT #1, 7, location
gilcas: '++++++++++++++++++++++++++++++++++++++++++++
'numrooms
DATA 28
DATA 15,10,9,5, 20,15,8,3, 27,20,7,3, 32,27,7,3, 24,22,9,7
DATA 22,18,12,10, 20,17,14,12, 17,11,16,12, 17,11,20,16, 11,5,18,13
DATA 27,25,16,14, 28,25,18,16, 25,19,20,16, 28,25,20,18, 31,28,20,15
DATA 35,31,14,12, 35,33,16,14, 41,35,17,13, 41,35,20,17, 48,41,15,12
DATA 48,41,20,15, 35,31,11,9, 38,35,11,7, 40,38,10,7
DATA 46,40,10,6, 48,46,8,6, 48,40,6,3, 40,35,7,3
'numremove
DATA 5
DATA 205,19,12, 186,25,17, 186,28,19, 205,34,14, 186,38,9
'numdoors
DATA 3
DATA 31,13, 35,15, 41,14
'numlocked
DATA 13
DATA 20,5, 27,5, 23,7, 23,9, 22,11, 17,13, 11,15, 26,14, 26,16
DATA 31,10, 35,10, 37,7, 40,8
'numsecret
DATA 7
DATA 15,6, 11,17, 28,17, 41,16, 41,18, 46,7, 47,6
'numitems
DATA 12
DATA 11, 26,19, 14,1
DATA 135,30,16, 14,10
DATA 5, 37,19, 4,-1
DATA 236,39,18, 12,-1
DATA 22, 46,18, 5,11
DATA 254,43,17, 6,12
DATA 8, 12,6, 7,13
DATA 9, 11,7, 3,14
DATA 24, 14,8, 1,15
DATA 12, 47,7, 14,1
DATA 11, 15,19, 14,1
DATA 35, 47,14, 6,8
'numtraps
DATA 5
DATA 247,45,13,1, 247,46,13,1, 247,47,13,1, 247,45,14,1, 247,46,14,1
RESTORE trucas
READ numrooms: PUT #1, location, numrooms
FOR j = 1 TO numrooms
READ a, b, c, d
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d
NEXT j
READ numremove: PUT #1, , numremove
FOR j = 1 TO numremove
READ a, b, c
PUT #1, , a: PUT #1, , b: PUT #1, , c
NEXT j
READ numdoors: PUT #1, , numdoors
FOR j = 1 TO numdoors
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numlocked: PUT #1, , numlocked
FOR j = 1 TO numlocked
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numsecret: PUT #1, , numsecret
FOR j = 1 TO numsecret
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numitems: PUT #1, , numitems
FOR j = 1 TO numitems
READ a, b, c, d, e
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d: PUT #1, , e
NEXT j
READ numtraps: PUT #1, , numtraps
FOR j = 1 TO numtraps
READ a, b, c, d
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d
NEXT j
location = LOC(1) + 1: PUT #1, 9, location
trucas: '++++++++++++++++++++++++++++++++++++++++++++
'numrooms
DATA 39
DATA 22,5,7,3, 15,12,4,3, 15,12,7,6, 31,22,7,3, 48,31,7,3, 41,38,4,3, 41,38,7,6
DATA 24,15,9,7, 29,24,9,7, 31,29,9,7, 12,5,15,7, 15,12,11,7, 34,31,13,7
DATA 41,34,11,7, 48,41,13,7, 18,15,11,9, 22,18,13,9, 15,12,15,11
DATA 18,15,13,11, 41,34,13,11, 21,15,18,13, 23,21,16,13, 25,23,15,13
DATA 28,25,15,13, 30,28,15,13, 33,30,16,13, 42,33,16,13, 48,42,20,13
DATA 15,5,20,15, 30,23,20,15, 23,21,18,16, 32,30,18,16, 34,32,18,16
DATA 41,34,18,16, 23,15,20,18, 25,23,20,19, 30,28,20,19, 36,30,20,18
DATA 42,36,20,18
'numremove
DATA 16
DATA 186,12,8, 186,31,8, 186,18,10, 205,17,13, 186,15,14, 205,38,13
DATA 186,23,14, 186,30,14, 205,38,16, 186,23,17, 186,30,17
DATA 205,27,7, 205,27,9, 205,27,13, 205,27,15, 205,33,18
'numdoors
DATA 0
'numlocked
DATA 10
DATA 22,5, 31,5, 26,8, 27,8, 38,11, 26,14, 27,14, 21,17, 32,17, 34,17
'numsecret
DATA 12
DATA 23,7, 46,7, 20,9, 15,10, 32,13, 24,15, 29,15, 22,18, 38,18
DATA 41,17, 15,19, 42,19
'numitems
DATA 18
DATA 22,32,8,5,11, 254,33,8,6,12
DATA 8,7,4,7,13, 8,7,6,7,13, 8,46,4,7,13, 8,46,6,7,13
DATA 9,10,4,3,14, 9,10,6,3,14, 9,43,4,3,14, 9,43,6,3,14
DATA 24,17,4,1,15, 24,17,6,1,15, 24,20,4,1,15, 24,20,6,1,15
DATA 24,33,4,1,15, 24,33,6,1,15, 24,36,4,1,15, 24,36,6,1,15
'numtraps
DATA 18
DATA 19,19,8,-1, 19,21,8,-1, 19,32,11,-1, 19,33,11,-1, 10,17,10,12
DATA 10,46,8,12, 19,23,14,-1, 19,30,14,-1, 10,33,18,12, 19,19,19,-1
DATA 10,21,19,4, 19,40,19,-1
DATA 204,24,8,9, 205,25,8,9, 205,28,8,9, 185,29,8,9
DATA 204,25,14,9, 185,28,14,9
RESTORE twocas
READ numrooms: PUT #1, location, numrooms
FOR j = 1 TO numrooms
READ a, b, c, d
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d
NEXT j
READ numremove: PUT #1, , numremove
FOR j = 1 TO numremove
READ a, b, c
PUT #1, , a: PUT #1, , b: PUT #1, , c
NEXT j
READ numdoors: PUT #1, , numdoors
FOR j = 1 TO numdoors
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numlocked: PUT #1, , numlocked
FOR j = 1 TO numlocked
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numsecret: PUT #1, , numsecret
FOR j = 1 TO numsecret
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numitems: PUT #1, , numitems
FOR j = 1 TO numitems
READ a, b, c, d, e
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d: PUT #1, , e
NEXT j
READ numtraps: PUT #1, , numtraps
FOR j = 1 TO numtraps
READ a, b, c, d
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d
NEXT j
location = LOC(1) + 1: PUT #1, 11, location
twocas: '++++++++++++++++++++++++++++++++++++++++++++
'numrooms
DATA 82
DATA 12,5,5,3, 14,12,5,3, 18,16,5,3, 20,18,5,3, 27,20,5,3, 29,27,5,3, 35,29,5,3, 40,35,5,3, 48,42,5,3
DATA 16,14,7,3, 42,40,7,3
DATA 10,7,7,5, 14,10,7,5, 20,16,7,5, 22,20,7,5, 24,22,7,5, 26,24,7,5
DATA 32,26,7,5, 36,32,7,5, 40,38,7,5, 48,42,7,5
DATA 7,5,10,5, 38,36,10,5
DATA 10,7,10,7, 10,9,10,9, 14,12,9,7, 18,14,9,7, 24,18,9,7, 30,24,9,7
DATA 32,30,9,7, 34,32,9,7, 36,34,9,7, 41,38,9,7, 43,41,9,7, 46,43,9,7
DATA 12,10,11,7, 48,46,16,7
DATA 15,12,11,9, 36,31,11,9, 44,40,11,9
DATA 17,15,12,9, 22,17,15,9, 20,19,13,11, 40,38,13,9, 46,44,16,9
DATA 10,5,12,10, 38,36,13,10
DATA 33,31,13,11, 36,34,13,11, 12,10,14,11, 42,40,14,11, 44,42,16,11
DATA 10,5,14,12, 17,12,14,12
DATA 26,22,15,13, 32,28,15,13, 38,32,15,13, 40,38,16,13, 28,26,16,13
DATA 17,5,20,14, 42,40,16,14
DATA 24,22,17,15, 31,28,17,15, 33,31,17,15, 36,33,17,15
DATA 22,20,18,15, 26,24,18,15, 38,36,18,15
DATA 28,26,18,16, 41,38,18,16, 46,41,18,16, 48,46,20,16
DATA 34,28,20,17, 31,30,20,19, 34,33,20,19, 24,22,20,17, 36,34,20,17
DATA 22,17,20,18, 28,24,20,18, 39,36,20,18, 46,39,20,18
DATA 13,9,18,16
'numremove
DATA 32
DATA 186,16,4, 186,40,4, 205,23,5, 205,28,5, 186,7,6, 205,11,7, 205,17,7
DATA 205,21,7, 205,25,7, 205,33,7, 205,39,7, 205,44,7, 186,36,8
DATA 205,8,10, 186,15,10, 205,32,11, 205,35,11
DATA 186,38,11, 205,41,11, 186,26,14, 186,28,14
DATA 186,40,15, 186,42,15, 186,22,16, 186,24,16, 186,36,16, 205,32,17
DATA 186,38,17, 205,27,18, 186,22,19, 186,36,19, 186,46,19
'numdoors
DATA 0
'numlocked
DATA 16
DATA 31,5, 46,5, 22,6, 38,6, 15,7, 30,8, 34,8, 23,9, 40,12, 17,13, 35,13
DATA 21,15, 27,16, 45,16, 47,16, 39,19
'numsecret
DATA 31
DATA 14,4, 18,4, 6,5, 11,5, 37,5
DATA 20,6, 32,6, 29,7, 47,7, 7,8, 14,8, 25,9, 33,9, 42,9
DATA 45,9, 12,10, 37,10, 17,11, 7,12, 39,13, 44,13, 7,14, 11,14, 23,15
DATA 31,16, 29,17, 11,18, 34,18, 40,18, 24,19, 28,19
'numitems
DATA 2
DATA 254,10,17,6,12, 254,12,17,6,12
'numtraps
DATA 4
DATA 19,9,15,8, 19,13,15,8, 19,9,19,8, 19,13,19,8
RESTORE gricas
READ numrooms: PUT #1, location, numrooms
FOR j = 1 TO numrooms
READ a, b, c, d
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d
NEXT j
READ numremove: PUT #1, , numremove
FOR j = 1 TO numremove
READ a, b, c
PUT #1, , a: PUT #1, , b: PUT #1, , c
NEXT j
READ numdoors: PUT #1, , numdoors
FOR j = 1 TO numdoors
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numlocked: PUT #1, , numlocked
FOR j = 1 TO numlocked
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numsecret: PUT #1, , numsecret
FOR j = 1 TO numsecret
READ a, b
PUT #1, , a: PUT #1, , b
NEXT j
READ numitems: PUT #1, , numitems
FOR j = 1 TO numitems
READ a, b, c, d, e
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d: PUT #1, , e
NEXT j
READ numtraps: PUT #1, , numtraps
FOR j = 1 TO numtraps
READ a, b, c, d
PUT #1, , a: PUT #1, , b: PUT #1, , c: PUT #1, , d
NEXT j
gricas: '++++++++++++++++++++++++++++++++++++++++++++
'numrooms
DATA 91
DATA 24,5,6,3, 28,24,7,3, 31,28,5,3, 31,28,7,5, 15,5,8,6, 20,15,10,6
DATA 22,20,8,6, 24,22,9,6, 31,24,9,7, 22,20,14,8, 20,15,12,10, 15,5,14,8
DATA 15,5,16,14, 20,15,16,12, 22,20,16,14, 24,22,16,13, 31,24,15,13
DATA 24,5,19,16, 28,24,19,15, 31,28,19,17, 31,28,17,15
DATA 33,31,5,3, 36,33,5,3, 38,36,5,3, 41,38,5,3, 43,41,5,3, 46,43,5,3, 48,46,5,3
DATA 33,31,7,5, 36,33,7,5, 38,36,7,5, 41,38,7,5, 43,41,7,5, 46,43,7,5, 48,46,7,5
DATA 33,31,9,7, 36,33,9,7, 38,36,9,7, 41,38,9,7, 43,41,9,7, 46,43,9,7, 48,46,9,7
DATA 33,31,11,9, 36,33,11,9, 38,36,11,9, 41,38,11,9, 43,41,11,9, 46,43,11,9, 48,46,11,9
DATA 33,31,13,11, 36,33,13,11, 38,36,13,11, 41,38,13,11, 43,41,13,11, 46,43,13,11, 48,46,13,11
DATA 33,31,15,13, 36,33,15,13, 38,36,15,13, 41,38,15,13, 43,41,15,13, 46,43,15,13, 48,46,15,13
DATA 33,31,17,15, 36,33,17,15, 38,36,17,15, 41,38,17,15, 43,41,17,15, 46,43,17,15, 48,46,17,15
DATA 33,31,19,17, 36,33,19,17, 38,36,19,17, 41,38,19,17, 43,41,19,17, 46,43,19,17, 48,46,19,17
DATA 6,5,4,3, 9,8,4,3, 12,11,4,3, 15,14,4,3, 18,17,4,3, 21,20,4,3, 24,23,4,3
DATA 6,5,19,18, 9,8,19,18, 12,11,19,18, 15,14,19,18, 18,17,19,18, 21,20,19,18, 24,23,19,18
'numremove
DATA 5
DATA 186,22,7, 186,24,8, 186,20,11, 186,22,15, 186,24,14
'numdoors
DATA 0
'numlocked
DATA 5
DATA 28,4, 6,6, 15,11, 6,16, 28,18
'numsecret
DATA 67
DATA 31,4, 43,4, 46,4, 24,5, 32,5, 35,5, 37,5, 40,5, 45,5, 47,5
DATA 31,6, 33,6, 36,6, 38,6, 43,6, 39,7, 42,7, 47,7
DATA 31,8, 33,8, 36,8, 41,8, 46,8, 20,9, 23,9, 34,9, 47,9
DATA 33,10, 36,10, 38,10, 41,10, 43,10, 46,10, 35,11, 40,11, 42,11, 44,11
DATA 33,12, 38,12, 46,12, 20,13, 42,13, 47,13
DATA 31,14, 33,14, 36,14, 38,14, 46,14, 32,15, 40,15, 47,15
DATA 31,16, 33,16, 38,16, 46,16, 24,17, 34,17, 37,17, 40,17, 42,17, 45,17
DATA 47,17, 31,18, 33,18, 41,18, 43,18, 15,7
'numitems
DATA 0
'numtraps
DATA 39
DATA 19,21,10,-1, 19,21,12,-1, 19,20,11,-1, 19,18,11,-1, 19,16,11,-1
DATA 19,9,7,8, 19,10,7,8, 19,11,7,8, 19,9,15,8, 19,10,15,8, 19,11,15,8
DATA 19,11,12,-1, 19,11,9,-1, 19,11,11,-1, 19,11,10,-1
DATA 19,12,12,-1, 19,12,9,-1, 19,12,11,-1, 19,12,10,-1
DATA 19,13,12,1, 19,13,9,1, 19,13,11,1, 19,13,10,1
DATA 10,14,12,4, 10,14,9,4, 10,14,11,12, 10,14,10,12
DATA 19,7,4,-1, 19,10,4,-1, 19,13,4,-1, 19,16,4,-1, 19,19,4,-1, 19,22,4,-1
DATA 19,7,17,-1, 19,10,17,-1, 19,13,17,-1, 19,16,17,-1, 19,19,17,-1, 19,22,17,-1

190
ALPHA.CRE Normal file
View File

@ -0,0 +1,190 @@
"Wolverine", 10013,0,1077,16384,1, 22,101, 0,0, 0,0, 0,0, 0,0
"Housecat", 10018,48,7104,512,3, 121,101, 24,101, 24,101, 0,0, 0,0
"Centipede", 10017,256,6099,2048,2, 120,301, 0,0, 0,0, 0,0, 0,0
"Snail", 10012,4,3115,2,3, 101,801, 0,0, 0,0, 0,0, 0,0
"Warthog", 10027,64,6119,0,4, 300,1301, 0,0, 0,0, 0,0, 0,0
"Owl", 20019,512,6111,4,5, 121,101, 23,101, 23,101, 0,0, 0,0
"Daffodil", 29,64,14100,6152,3, 117,1807, 0,0, 0,0, 0,0, 0,0
"Asparagus", 10037,1032,2097,6208,6, 118,202, 0,0, 0,0, 0,0, 0,0
"Dung Beetle", 10037,2,6100,1024,6, 115,1701, 0,0, 0,0, 0,0, 0,0
"Fire Ant", 10016,128,12097,32,2, 117,1001, 0,0, 0,0, 0,0, 0,0
"Woodpecker", 20013,1024,12087,0,6, 218,101, 0,0, 0,0, 0,0, 0,0
"Gas Spore", 10019,520,6103,2048,5, 20,103, 20,103, 20,103, 0,0, 0,0
"Dragonfly", 10027,1028,10100,2,9, 219,1101, 0,0, 0,0, 0,0, 0,0
"Skunk", 10036,0,8115,1,8, 315,2303, 0,0, 0,0, 0,0, 0,0
"Chameleon", 10035,256,99,0,13, 118,101, 0,0, 0,0, 0,0, 0,0
"Boa", 10035,1038,2098,0,14, 219,1201, 0,0, 0,0, 0,0, 0,0
"Porcupine", 10025,4096,5112,64,10, 20,102, 20,102, 20,102, 0,0, 0,0
"Lotus", 10028,512,5076,-26624,14, 16,1805, 23,1805, 0,0, 0,0, 0,0
"Crunchberry Beast", 10047,64,6067,2176,25, 615,1401, 0,0, 0,0, 0,0,0,0
"Viper", 10036,4,4118,32,16, 218,401, 0,0, 0,0, 0,0, 0,0
"Venetian", 10056,64,11086,4097,21, 419,2201, 0,0, 0,0, 0,0, 0,0
"Flying Fish", 20054,34,3102,64,60, 315,202, 0,0, 0,0, 0,0, 0,0
"Rosebush", 57,12289,12114,6144,50, 112,2006, 0,0, 0,0, 0,0, 0,0
"Zapweed", 10048,517,1122,16,50, 216,901, 0,0, 0,0, 0,0, 0,0
"Mantis", 10061,66,2109,0,100, 102,803, 102,803, 0,0, 0,0, 0,0
"Japanese Beetle", 10034,4,10106,512,40, 714,1401, 0,0, 0,0, 0,0, 0,0
"Mr. Potato Head", 10085,0,6112,0,70, 216,101, 118,101, 0,0, 0,0, 0,0
"Sunflower", 10055,1152,14115,2,110, 115,706, 115,706, 115,706, 0,0, 0,0
"Ragweed", 10038,64,2114,3072,20, 17,1802, 0,0, 0,0, 0,0, 0,0
"Killer Bee", 20026,0,14122,4,20, 213,501, 0,0, 0,0, 0,0, 0,0
"Python", 10104,288,1080,8,250, 212,1201, 214,1201, 216,1201, 0,0, 0,0
"Vulture", 10075,528,6086,32,150, 603,1303, 603,1303, 0,0, 0,0, 0,0
"Huge Cockroach", 10040,1,6082,0,250, 412,201, 0,0, 0,0, 0,0, 0,0
"Sandman", 10010,0,8090,0,60, 116,2701, 0,0, 0,0, 0,0, 0,0
"Pryor", 10087,256,8082,18,250, 313,601, 0,0, 0,0, 0,0, 0,0
"Spitting Cobra", 10043,8,2083,512,200, 411,402, 0,0, 0,0, 0,0, 0,0
"Goat", 10059,0,7103,0,100, 13,1401, 0,0, 0,0, 0,0, 0,0
"Ice Wolf", 10093,288,3087,16,350, 312,1102, 0,0, 0,0, 0,0, 0,0
"Rot Fungus", 10089,4099,2070,4100,250, 213,1601, 0,0, 0,0, 0,0, 0,0
"Pokey", 10105,0,4080,32,300, 414,101, 0,0, 0,0, 0,0, 0,0
"Gumby", 10125,0,2071,32,450, 404,802, 0,0, 0,0, 0,0, 0,0
"Tapeworm", 10025,2304,7119,17408,50, 116,2601, 0,0, 0,0, 0,0, 0,0
"Slug", 10078,515,10083,-32768,280, 413,603, 0,0, 0,0, 0,0, 0,0
"Cheetah", 93,-32616,14099,0,400, 411,706, 0,0, 0,0, 0,0, 0,0
"Tortoise", 10090,16424,2116,64,300, 110,101, 10,101, 10,101, 0,0, 0,0
"Venus Flytrap", 114,1028,2086,8,250, 206,2006, 208,1201, 210,1201, 212,1201, 0,0
"the Blob", 10109,1,3066,4128,300, 510,601, 0,0, 0,0, 0,0, 0,0
"Grizzly Bear", 10145,16,6071,2,470, 208,101, 111,101, 111,101, 0,0, 0,0
"Bush", 10186,0,1066,512,500, 506,1301, 506,1301, 0,0, 0,0, 0,0
"Quayle", 10159,1916,14081,0,200, 101,101, 0,0, 0,0, 0,0, 0,0
"Rhinocerous", 10141,1034,7082,16,600, 712,2501, 0,0, 0,0, 0,0, 0,0
"Giant Tarantula", 10118,2048,8084,4,550, 911,301, 0,0, 0,0, 0,0, 0,0
"Phoenix", 10071,16,12080,32,800, 608,1001, 0,0, 0,0, 0,0, 0,0
"Scorpion", 10101,66,12083,8,750, 808,401, 0,0, 0,0, 0,0, 0,0
"Mastodon", 10225,16416,13077,0,1200, 308,1901, 308,1901, 0,0, 0,0, 0,0
"Berserk Robot", 10127,17960,11082,2052,1000, 612,902, 0,0, 0,0, 0,0, 0,0
"Black Widow", 10104,8,8098,4,900, 1012,501, 0,0, 0,0, 0,0, 0,0
"Sabretooth Tiger", 20176,24,14084,0,1000, 508,101, 107,101, 107,101, 0,0, 0,0
"Mosquito", 10115,528,5077,1,500, 1005,1302, 1005,1302, 0,0, 0,0, 0,0
"Anklyosaurus", 10150,16640,1065,8,900, 607,101, 0,0, 0,0, 0,0, 0,0
"Triceratops", 10214,17416,1084,2,1300, 605,2501, 0,0, 0,0, 0,0, 0,0
"Polar Worm", 10256,2080,1087,16,1200, 808,1102, 0,0, 0,0, 0,0, 0,0
"Tyrannosaurus", 10303,32,2084,1024,1500, 1210,101, 0,0, 0,0, 0,0, 0,0
"King Kong", 10406,0,6075,128,2200, 707,1901, 707,1901, 0,0, 0,0, 0,0
"Rodan", 10353,-32768,1082,64,3500, 1008,101, 209,101, 209,101, 0,0, 0,0
"Godzilla", 10451,520,4071,4,6000, 1507,204, 0,0, 0,0, 0,0, 0,0
"Slime", 10017,32,13115,4112,3, 119,1601, 0,0, 0,0, 0,0, 0,0
"Ooze", 10018,17,5111,4128,4, 119,1001, 0,0, 0,0, 0,0, 0,0
"Vampire Bat", 10028,0,8118,64,5, 215,2101, 0,0, 0,0, 0,0, 0,0
"Repair Droid", 10033,1536,11114,2052,15, 119,901, 0,0, 0,0, 0,0, 0,0
"Maggot", 10036,256,14109,1024,10, 116,601, 0,0, 0,0, 0,0, 0,0
"Giant Rat", 10039,8,8114,1040,10, 117,101, 0,0, 0,0, 0,0, 0,0
"Purple Mold", 10039,1,5109,4104,15, 616,2301, 0,0, 0,0, 0,0, 0,0
"Ghoul", 10088,40,8103,0,60, 213,101, 0,0, 0,0, 0,0, 0,0
"Defense Droid", 10062,1544,11100,2052,100, 313,202, 0,0, 0,0, 0,0, 0,0
"Gray Mold", 10099,3,8109,-26608,150, 105,1804, 0,0, 0,0, 0,0, 0,0
"Phantom", 10078,16896,8112,0,100, 214,1101, 0,0, 0,0, 0,0, 0,0
"Wolf Spider", 20078,1024,8119,512,190, 515,501, 0,0, 0,0, 0,0, 0,0
"Enzyme Fungus", 20039,8707,13070,-28656,200, 215,601, 215,601, 0,0, 0,0, 0,0
"Volte", 10064,16389,11118,2050,300, 513,901, 0,0, 0,0, 0,0, 0,0
"Brown Recluse", 10094,256,6114,8,300, 809,401, 0,0, 0,0, 0,0, 0,0
"Security Droid", 10070,1570,11115,2052,450, 510,703, 0,0, 0,0, 0,0, 0,0
"Brain Beast", 10057,512,14066,2,450, 505,1305, 0,0, 0,0, 0,0, 0,0
"War Droid", 20150,3626,11119,2052,3000, 310,705, 312,203, 314,901, 0,0, 0,0
"Tree Frog", 10018,2,10102,0,2, 120,301, 0,0, 0,0, 0,0, 0,0
"Stranglevine", 10024,1024,10115,0,5, 107,1201, 0,0, 0,0, 0,0, 0,0
"Poison Ivy", 23,16,105,20480,8, 609,401, 0,0, 0,0, 0,0, 0,0
"Toadstool", 10059,1024,5116,6145,12, 113,2302, 0,0, 0,0, 0,0, 0,0
"Termite", 10018,0,7116,1040,5, 25,1401, 0,0, 0,0, 0,0, 0,0
"Mushroom", 10029,512,7109,6178,20, 413,2102, 0,0, 0,0, 0,0, 0,0
"Panther", 30057,4,8080,8,60, 217,901, 21,901, 21,901, 0,0, 0,0
"Moose", 10148,0,6077,0,160, 113,1901, 113,1901, 114,1901, 114,1901, 0,0
"Jaguar", 30115,8,5106,4,250, 211,201, 211,201, 0,0, 0,0, 0,0
"Deadly Nightshade", 10058,1536,8110,-32704,100, 211,401, 211,401, 211,401, 211,401, 0,0
"Algore", 10056,512,65,-32764,50, 0,0, 0,0, 0,0, 0,0, 0,0
"Death Fern", 10074,16,70,-32768,350, 412,1002, 0,0, 0,0, 0,0, 0,0
"Bigfoot", 10135,256,6070,512,250, 210,1901, 213,1901, 0,0, 0,0, 0,0
"Komodo Dragon", 10152,32,1075,0,600, 611,101, 0,0, 0,0, 0,0, 0,0
"Willow", 10066,1152,10087,-30720,300, 113,1202, 113,1202, 113,1202, 210,1201, 210,1201
"Raptor", 20084,32,2082,0,400, 308,101, 111,101, 111,101, 0,0, 0,0
"Giant Sloth", 20156,0,6083,16,600, 611,1101, 0,0, 0,0, 0,0, 0,0
"Toad", 10028,96,1116,16,8, 215,201, 0,0, 0,0, 0,0, 0,0
"Leech", 10016,2,108,1024,4, 113,2101, 0,0, 0,0, 0,0, 0,0
"Slime Mold", 10029,3,4109,5120,5, 118,601, 0,0, 0,0, 0,0, 0,0
"Giant Crab", 10031,12,12067,512,10, 118,901, 0,0, 0,0, 0,0, 0,0
"Alligator", 10054,1024,2065,64,35, 315,101, 0,0, 0,0, 0,0, 0,0
"Lungfish", 10066,4,1108,2,40, 317,701, 0,0, 0,0, 0,0, 0,0
"Bombadier Beetle", 10044,6,4098,8,80, 417,1601, 0,0, 0,0, 0,0, 0,0
"Tick", 10028,0,116,-32768,50, 409,1301, 409,1301, 0,0, 0,0, 0,0
"Giant Puffball", 9,0,80,256,5, 0,0, 0,0, 0,0, 0,0, 0,0
"Dartweed", 35,64,12100,40,100, 312,506, 312,506, 0,0, 0,0, 0,0
"Hippopotamus", 10135,8,1072,16,200, 412,101, 0,0, 0,0, 0,0, 0,0
"Giant Worm", 10026,0,7087,0,15, 110,101, 0,0, 0,0, 0,0, 0,0
"Crocodile", 10103,32,2067,512,400, 207,803, 204,803, 201,803, 0,0, 0,0
"Water Moccasin", 10065,1024,6109,0,400, 710,401, 0,0, 0,0, 0,0, 0,0
"Snapping Turtle", 10096,16416,8083,80,300, 509,101, 0,0, 0,0, 0,0, 0,0
"Pteradactyl", 10094,520,2080,0,600, 613,202, 0,0, 0,0, 0,0, 0,0
"Bog Horror", 165,818,66,1024,1400, 201,1201, 204,1201, 207,1201, 210,1201, 213,1201
"Prairie Chicken", 10017,1,4099,16,2, 17,101, 0,0, 0,0, 0,0, 0,0
"Lizard", 10026,80,3108,4,4, 118,1001, 0,0, 0,0, 0,0, 0,0
"Antelope", 20037,80,6065,0,10, 114,1901, 0,0, 0,0, 0,0, 0,0
"Moth", 10048,512,12109,2,16, 602,1302, 0,0, 0,0, 0,0, 0,0
"Gazelle", 20057,64,14103,0,50, 10,704, 10,704, 0,0, 0,0, 0,0
"Stink Bug", 10065,2,4115,512,30, 816,2301, 0,0, 0,0, 0,0, 0,0
"Armadillo", 10067,16384,7065,1024,40, 15,101, 16,101, 16,101, 0,0, 0,0
"Blue Jay", 20044,4,1106,0,130, 102,803, 102,802, 102,801, 0,0, 0,0
"Laughing Hyena", 10046,0,13104,128,25, 213,1501, 0,0, 0,0, 0,0, 0,0
"Fox", 10057,256,6102,512,50, 111,1401, 0,0, 0,0, 0,0, 0,0
"Giant Wasp", 20063,8,14119,80,100, 512,501, 0,0, 0,0, 0,0, 0,0
"Locust", 20037,0,10108,1663,10, 7,101, 0,0, 0,0, 0,0, 0,0
"Coral Snake", 10055,16,12099,0,350, 808,401, 0,0, 0,0, 0,0, 0,0
"Bunny Rabbit", 10048,0,15098,1024,30, 113,101, 0,0, 0,0, 0,0, 0,0
"Voracious Shrew", 10028,0,6115,0,30, 715,101, 0,0, 0,0, 0,0, 0,0
"Cactus", 84,12424,10099,6176,450, 113,110, 111,108, 109,106, 107,104, 105,102
"Giraffe", 10167,0,14071,0,400, 307,1901, 307,1901, 0,0, 0,0, 0,0
"Kelp", 10028,32,2107,0,4, 117,1201, 0,0, 0,0, 0,0, 0,0
"Sardine", 20012,2,7115,16388,2, 18,101, 0,0, 0,0, 0,0, 0,0
"Electric Eel", 30029,4,11101,0,8, 116,902, 0,0, 0,0, 0,0, 0,0
"Seagull", 20038,256,15115,512,4, 112,1702, 0,0, 0,0, 0,0, 0,0
"Lobster", 20023,64,4076,16,9, 118,101, 118,101, 0,0, 0,0, 0,0
"Lamprey", 20016,0,5108,0,12, 408,1301, 0,0, 0,0, 0,0, 0,0
"Barracuda", 30036,2,3098,0,16, 216,101, 0,0, 0,0, 0,0, 0,0
"Sunfish", 20037,64,14083,1024,20, 116,704, 116,702, 0,0, 0,0, 0,0
"Urchin", 10034,8192,5117,4096,25, 20,102, 20,102, 20,102, 20,102, 20,102
"Jellyfish", 20049,2050,3106,-26616,50, 120,502, 119,402, 118,501, 117,401, 116,401
"Squid", 20057,32,5115,1,20, 116,2201, 116,1201, 116,1201, 0,0, 0,0
"Fire Coral", 11,1,102,6208,23, 210,1002, 205,1001, 0,0, 0,0, 0,0
"Trilobite", 20052,4,6116,512,70, 313,201, 0,0, 0,0, 0,0, 0,0
"Red Snapper", 20045,0,12115,0,70, 512,101, 0,0, 0,0, 0,0, 0,0
"Nauteloid", 20077,16384,4110,0,150, 205,802, 0,0, 0,0, 0,0, 0,0
"Sting Ray", 30075,1024,3114,0,200, 615,501, 0,0, 0,0, 0,0, 0,0
"Octopus", 20064,2,2079,0,160, 217,1201, 217,1201, 114,1201, 114,1201, 114,1201
"Moray Eel", 20095,0,10069,0,200, 307,101, 0,0, 0,0, 0,0, 0,0
"Narwal", 20104,32,8078,0,250, 413,2501, 0,0, 0,0, 0,0, 0,0
"Hammerhead Shark", 30103,512,7083,0,400, 512,101, 0,0, 0,0, 0,0, 0,0
"Killer Whale", 20227,32,15087,0,600, 610,101, 0,0, 0,0, 0,0, 0,0
"Great White Shark", 30156,512,15083,0,900, 604,101, 0,0, 0,0, 0,0, 0,0
"Plesiosaurus", 20255,8,7080,0,1300, 707,101, 0,0, 0,0, 0,0, 0,0
"Big Hairy Spider", 10047,0,4083,0,3, 115,401, 0,0, 0,0, 0,0, 0,0
"Gilligan", 10183,0,7103,0,500, 1,1401, 0,0, 0,0, 0,0, 0,0
"the Skipper", 10188,0,7083,0,400, 110,2601, 0,0, 0,0, 0,0, 0,0
"the Professor", 10126,0,7080,0,300, 110,2601, 0,0, 0,0, 0,0, 0,0
"Ginger", 10087,0,7071,0,150, 109,2601, 0,0, 0,0, 0,0, 0,0
"Mary Ann", 10073,0,7077,0,150, 109,2601, 0,0, 0,0, 0,0, 0,0
"Mr. Howell", 10106,0,7072,256,200, 110,2601, 0,0, 0,0, 0,0, 0,0
"Mrs. Howell", 10068,0,7104,2304,100, 110,2601, 0,0, 0,0, 0,0, 0,0
"Herman", 10203,0,7072,-32768,500, 411,2601, 411,2601, 0,0, 0,0, 0,0
"Lily", 10107,0,7076,0,300, 310,2101, 310,2101, 0,0, 0,0, 0,0
"Grandpa", 10153,0,7071,4096,400, 115,2602, 0,0, 0,0, 0,0, 0,0
"Eddie", 10105,0,7069,0,200, 410,101, 0,0, 0,0, 0,0, 0,0
"Marilyn", 10107,0,7077,2048,200, 201,1501, 0,0, 0,0, 0,0, 0,0
"Spot", 10181,0,7083,256,400, 510,1001, 0,0, 0,0, 0,0, 0,0
"Igor", 10056,0,7073,0,200, 1208,1301, 0,0, 0,0, 0,0, 0,0
"Uncle Fester", 10106,0,7070,0,300, 112,2601, 0,0, 0,0, 0,0, 0,0
"Elvis", 10067,0,7069,-32512,100, 110,2601, 0,0, 0,0, 0,0, 0,0
"Elvis", 10207,0,7069,-32512,100, 110,2601, 0,0, 0,0, 0,0, 0,0
"Buzz Aldrin", 10165,56,15066,4096,600, 807,2601, 0,0, 0,0, 0,0, 0,0
"Zola Bud", 20098,0,7090,0,200, 410,1901, 0,0, 0,0, 0,0, 0,0
"Mary Decker", 20088,0,7077,0,200, 410,1901, 0,0, 0,0, 0,0, 0,0
"Gary Hart", 10128,0,7071,256,300, 107,1501, 107,1501, 107,1501, 107,1501, 110,1501
"Saddam Hussein", 10070,2048,6072,512,400, 1025,2608, 0,0, 0,0, 0,0, 0,0
"Chicago Cub", 10108,0,1067,0,150, 110,2601, 0,0, 0,0, 0,0, 0,0
"Donald Trump", 10208,768,7068,0,1000, 2510,1303, 0,0, 0,0, 0,0, 0,0
"Ivana", 10159,0,7073,2176,700, 808,1302, 0,0, 0,0, 0,0, 0,0
"Marla", 10109,0,7077,128,500, 1008,1302, 0,0, 0,0, 0,0, 0,0
"the Grinch", 10254,0,12071,4096,5000, 304,2105, 306,2105, 308,2103, 310,2103, 312,2101
"Max", 10157,0,4068,0,2000, 802,101, 0,0, 0,0, 0,0, 0,0
'10000*move+10*HD+AC+, spec.def, 1000*clr+sym , susceptibility, exp
'100*str+2hitbase, 100*attack type+range, ..., ..., ..., ...

42
ALPHA.DB2 Normal file
View File

@ -0,0 +1,42 @@
CASE 200 'debug - test
SCREEN , , 3: COLOR 11, 1: ccls 3: LOCATE 1, 1
FOR ijk = 1 TO ngoody
IF ABS(goody(ijk, 1)) = 9 THEN
PRINT "Item name: "; gdy(ijk); " should be ";
SELECT CASE goody(ijk, 3)
CASE 1: PRINT "Skipper's Hat";
CASE 2: PRINT "Serum. Item is ";
IF goody(ijk, 5) = 0 THEN PRINT "not ";
PRINT "distilled.";
CASE 3: PRINT "Map";
CASE 4: PRINT "Blue Suede Shoes";
CASE 5: PRINT "SpaceSuit";
CASE 6: PRINT "Roast Beast";
CASE 7: PRINT "Bamboo Raft. Item is ";
IF goody(ijk, 5) = 0 THEN PRINT "not ";
PRINT "sped up. It has"; goody(ijk, 4); " uses left.";
CASE 8: PRINT "Mets Hat";
CASE ELSE: PRINT "TYPE UNKNOWN! Number:"; goody(ijk, 3);
END SELECT
END IF
PRINT
NEXT ijk
didstuff = false: PauseForKey: SCREEN , , vpage
CASE 201 ' debug, give S.hat,serum,map,shoes,suit,rbeast,braft,M.hat
ijk = 0: dropped = 1
WHILE ngoody < 20 AND ijk < 8
ijk = ijk + 1: ngoody = ngoody + 1
SELECT CASE ijk
CASE 1: gdy(ngoody) = "SKIP'S HAT"
CASE 2: gdy(ngoody) = "SERUM"
CASE 3: gdy(ngoody) = "MAP"
CASE 4: gdy(ngoody) = "SHOES": dropped = 2 'bsshoes
CASE 5: gdy(ngoody) = "SUIT": dropped = 10 'suit
CASE 6: gdy(ngoody) = "ROASTBEAST"
CASE 7: gdy(ngoody) = "RAFT": dropped = 15 'bamboo raft
CASE 8: gdy(ngoody) = "METS HAT"
END SELECT
DetermineSpecial dropped, ijk 'actually, dropped=mass
WEND
didstuff = false

8
ALPHA.DB3 Normal file
View File

@ -0,0 +1,8 @@
CASE 255 'create gas
FOR ix = localx - 1 TO localx + 1
FOR iy = localy - 1 TO localy + 1
GetSym nsym, ix, iy, nfc, nbc, 1
IF nsym = 250 THEN PutSym gas, ix, iy, 8, 0, -1
NEXT iy, ix
didstuff = false

79
ALPHA.DBG Normal file
View File

@ -0,0 +1,79 @@
' CASE 199 'test KillItem
' l1 = "Test": PauseForKey: s = VAL(st1)
' KillItem s: MessPause 11, 0
' CASE 202: Lightning
CASE 222
FOR i = 1 TO 52: FOR j = 1 TO 22
attr = pag2(i, j): sym = attr MOD 256: attr = attr \ 256
fc = attr MOD 16: bc = attr \ 16: PutSym sym, i, j, fc, bc, 3
NEXT j, i
SCREEN , , 3: PauseForKey: SCREEN , , vpage: didstuff = false
CASE 230
SCREEN , , 3: COLOR 11, 1: ccls 3: LOCATE 1, 1
PRINT "ndropped -- "; ndropped
FOR i = 1 TO ndropped
PRINT i; drgdy(i), drgoody(i, 1), drgoody(i, 13); drgoody(i, 14)
NEXT i
PauseForKey
ccls 3: LOCATE 1, 1: PRINT "ngoody ---- "; ngoody;
FOR i = 1 TO ngoody
PRINT : PRINT i; gdy(i), : FOR j = 1 TO 11: PRINT goody(i, j); : NEXT j
NEXT i: PauseForKey: ccls 3: LOCATE 1, 1
PRINT "suits ------- "; radsuit; heatsuit; reflecsuit; wetsuit; camosuit; pinsuit; bulletsuit; spacesuit
PRINT "flaslght etc "; flashlight; gasmask; mask; boots; ffgen; sunglasses
PRINT "vehicle ----- "; vehicle
PRINT "spore ------- "; spore
PRINT "skinac ------ "; skinac
PRINT "berac ------- "; berac
PRINT "fastfight -- "; fastfight
PRINT "difficulty -- "; difficulty
PRINT "Elvis,Grnchlev"; elvislevel; grinchlevel
PRINT "Other2hitC, Other2hitR"; other2hitc; other2hitr
didstuff = false: PauseForKey: COLOR 7, 0: SCREEN , , vpage
CASE 231
SCREEN , , 3: COLOR 11, 1: ccls 3: LOCATE 1, 1
PRINT "Name"; TAB(16); "sameroom, xdel,ydel, hits,hitmax,"; TAB(62); "regen, move, ac";
FOR i = 1 TO nnear: LOCATE (i MOD 23) + 1, 1
IF i = 23 THEN PauseForKey: CLS
PRINT CreatNam(ncre(i, 1), i); TAB(22); SameRoom(ncre(i, 4), ncre(i, 5)); bl; bl;
PRINT ncre(i, 4); ncre(i, 5); bl; bl; ncre(i, 2); ncre(i, 3); bl; bl; TAB(50);
IF ncre(i, 11) AND 1 THEN PRINT "awake ";
IF ncre(i, 11) AND 2 THEN PRINT "blind ";
IF ncre(i, 11) AND 4 THEN PRINT "confused ";
IF ncre(i, 11) AND 8 THEN PRINT "sick ";
IF ncre(i, 11) AND 16 THEN PRINT "burping ";
IF ncre(i, 11) AND 32 THEN PRINT "sneezing ";
defens = ncre(i, 10): regen = 0
IF defens AND 256 THEN regen = 1
IF defens AND 2048 THEN regen = regen + 3
PRINT TAB(65); regen; ncre(i, 6); ncre(i, 9)
NEXT
didstuff = false: PauseForKey: COLOR 7, 0: SCREEN , , vpage
CASE 232
FOR i = 2 TO 51
FOR j = 2 TO 21
IF SameRoom((i - localx), (j - localy)) THEN
GetSym sym, i, j, fc, bc, 1
PutSym sym, i, j, fc, 1, 1
END IF
NEXT j
NEXT i
PauseForKey
FOR i = 2 TO 51
FOR j = 2 TO 21
GetSym sym, i, j, fc, bc, 1
PutSym sym, i, j, fc, 0, 1
NEXT j
NEXT i
didstuff = false
CASE 233
SCREEN , , 3: COLOR 11, 1: ccls 3: LOCATE 1, 1
FOR i = 1 TO nmonolith
monozone(i, 3) = 0
PRINT monozone(i, 1); monozone(i, 2); monozone(i, 3)
NEXT
didstuff = false: PauseForKey: COLOR 7, 0: SCREEN , , vpage
' CASE 234: lx = localx: ly = localy: crtyp = algore
' MakeCreature lx, ly, false, false
' CASE 235: nnear = 0

2
ALPHA.DC2 Normal file
View File

@ -0,0 +1,2 @@
OPTION BASE 1

175
ALPHA.DEC Normal file
View File

@ -0,0 +1,175 @@
' Copyright (c) 1995 Jeffrey R. Olson
'
' Permission is hereby granted, free of charge, to any person obtaining a copy
' of this software and associated documentation files (the "Software"), to deal
' in the Software without restriction, including without limitation the rights
' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all
' copies or substantial portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
' SOFTWARE.
DEFINT A-Z
DIM wep(26, 6), sh(9, 2), arm(12, 2)
DIM symb(10, 3)
DIM gdy(21) AS STRING, goody(21, 12)
DIM bakpak(10) AS STRING, backpack(10, 12)
DIM saf(10) AS STRING, safe(10, 12)
DIM drgdy(30) AS STRING, drgoody(30, 16)
DIM ncre(0 TO 50, 0 TO 15), scratch(50), localgoody(30, 3)
DIM goodythere(2 TO 51, 2 TO 21), goodycastle(0 TO 6, -10 TO 10)
DIM knownb(0 TO 40), berry$(0 TO 40), berord(0 TO 40)
DIM ssd(95, 9), ssdtyp(95), ssdknown(95)
DIM lsd(40, 4), lsdtyp(40), lsdknown(40)
DIM radzone(10, 3), savcrn(30, 2), monozone(10, 3)
DIM xstairs(-10 TO 10), ystairs(-10 TO 10), pag2(1 TO 52, 1 TO 22)
DIM lsave(1 TO 3, 0 TO 10) AS STRING * 54
COMMON SHARED nnear, ncre(), incastle, dots, finishedcastles
COMMON SHARED vpage, mainx, mainy, localx, localy, terrain, terrf, terrb
COMMON SHARED currsym, currf, currb, ncastle, looksym
COMMON SHARED str, stradd, dex, dexadd, con, rr, mr, intl, hitmax, hits
COMMON SHARED hunger, fatigue!, expr&, lvl
COMMON SHARED shield, armor, pmut, mmut
COMMON SHARED lwall, rwall, twall, bwall, lwscr, rwscr, bwscr, twscr
COMMON SHARED ssdknown(), lsdknown()
COMMON SHARED goody(), ngoody, knownb()
COMMON SHARED goodythere(), localgoody(), goodycastle()
COMMON SHARED backpack(), npack, drgoody(), ndropped
COMMON SHARED safe(), nsafe
COMMON SHARED wep(), sh(), arm(), ssd(), lsd(), symb(), berord()
COMMON SHARED radzone(), ssdtyp(), lsdtyp()
COMMON SHARED ac, str2hit, strdam, dex2hit, other2hitc, other2hitr, otherdam
COMMON SHARED tohitbase, fatig!, lpoint
COMMON SHARED radsuit, heatsuit, reflecsuit, flashlight, gasmask, sunglasses
COMMON SHARED wetsuit, mask, boots, ffgen, sunscreen, camosuit, pinsuit
COMMON SHARED uvhelmet, neutronsuit
COMMON SHARED forcefield, shock, touch, mheal, pmutturns, mmutturns, looking
COMMON SHARED teleporting, inwater, waterturns, inpit, inweb, zippy, wpturns
COMMON SHARED seed!, rdisp, fatadd!, didstuff, pooped, messturn, tentgrab
COMMON SHARED castle, castlelevel, bldg, nruins, starting
COMMON SHARED xstairs(), ystairs(), crtyp, savecorn, savcrn()
COMMON SHARED xenter, yenter, xenterscr, yenterscr, enterdir, bitit
COMMON SHARED berstr, berdex, bercon, berrr, bermr, berintl, berac, skinac
COMMON SHARED berpmut, bermmut, berconfuse, berdet, berblind, berhic
COMMON SHARED berscience, berscare, berrambo, berfresh
COMMON SHARED berklutz, klutzdex, berregen, beryum, berff
COMMON SHARED berhpmut, berhmmut
COMMON SHARED strtox, dextox, contox, hittox
COMMON SHARED weather, wind, gt!, rside, roachdef, radint, attractx, attracty
COMMON SHARED agin, keysave1, keysave2, keysave3, scratch()
COMMON SHARED dark, confu, grabbed, vehicle, asleep, invisible, sick, udder
COMMON SHARED moon, stopfastmove, wimpsym, wimpcolr, flare
COMMON SHARED mirror, coffee, tapenum, elvislevel, grinchlevel, grinchzone
COMMON SHARED serum!, bsshoes, spacesuit, bergreen, map, tapeworm, didmusk
COMMON SHARED turbo!, bulletsuit, brandy, inglue, inbog, insand, hail, tent
COMMON SHARED monozone(), xmono, ymono, mononum, notoxin, metshat, answer
COMMON SHARED grinchstole AS LONG, mindweb, sousa, repulse, ripehrs, spore
COMMON SHARED difficulty, fastfight, pag2()
COMMON SHARED l1 AS STRING * 54, l2 AS STRING * 54, l3 AS STRING * 54
COMMON SHARED lsave() AS STRING * 54
COMMON SHARED st1 AS STRING
COMMON SHARED name$, pmutn$, mmutn$, berry$(), s$, t$, ber$, wimpname$
COMMON SHARED bakpak() AS STRING, saf() AS STRING
COMMON SHARED drgdy() AS STRING, gdy() AS STRING
CONST blk = 0, blu = 1, grn = 2, cyn = 3, red = 4, mag = 5, brn = 6, wht = 7
CONST wallcolr = 9, pit = 10, trap = 19, secretdoor = 228, lockeddoor = 43
CONST gas = 64, monosym = 227, nmonolith = 10, chasm = 31
CONST pi = 3.141593, true = -1, false = 0, bl = " "
CONST plains = 32, woods = 42, forest = 15, marsh = 176, swamp = 177, water = 247
CONST ul = 201, um = 203, ur = 187, ml = 204, cen = 206, mrt = 185, ll = 200, lm = 202, lr = 188, hor = 205, ver = 186
CONST hardplay = 0, moderateplay = 2, easyplay = 5
CONST versiondate = 91094
CONST nberry = 35
CONST nphysmut = 17, nmentmut = 13
CONST nwep = 14, nrwep = 12
CONST nsh = 9, narm = 12
CONST nssd = 38, ngrenade = 14, ntechwep = 37, nstrash = 18
CONST nlsd = 25, nltrash = 13
CONST ncreat = 66
CONST crecas = 18
CONST crefor = 17
CONST creswa = 17
CONST crepla = 17
CONST creh2o = 23
CONST creextra = crecas + crefor + creswa + crepla + creh2o
CONST wimp = 1, centi = wimp + 2
CONST snail = centi + 1, daff = snail + 3
CONST aspa = daff + 1, dung = aspa + 1, ant = dung + 1, gspore = ant + 2
CONST dfly = gspore + 1
CONST lotus = dfly + 5, cb = lotus + 1, fish = cb + 3
CONST rose = fish + 1, zap = rose + 1, mant = zap + 1
CONST japb = mant + 1, mph = japb + 1
CONST sunf = mph + 1, rweed = sunf + 1, bee = rweed + 1
CONST roach = bee + 3, pryor = roach + 2, goat = pryor + 2
CONST icew = goat + 1, rotf = icew + 1
CONST pokey = rotf + 1, gumby = pokey + 1, tworm = gumby + 1
CONST slug = tworm + 1, venus = slug + 3, blob = venus + 1
CONST bush = blob + 2, quayle = bush + 1
CONST tara = quayle + 2, phoe = tara + 1, scor = phoe + 1
CONST robot = scor + 2, bwid = robot + 1, mosq = bwid + 2
CONST kong = mosq + 5, rodan = kong + 1, godz = rodan + 1
CONST slime = ncreat + 1
CONST ooze = slime + 1, rdro = ooze + 2, magg = rdro + 1
CONST rat = magg + 1, pmold = rat + 1, ddro = pmold + 2
CONST gmold = ddro + 1, wspid = gmold + 2, efung = wspid + 1
CONST volte = efung + 1, brecl = volte + 1
CONST sdro = brecl + 1, brain = sdro + 1
CONST wdro = brain + 1
'10000*move+10*HD+AC+, spec.def, 1000*clr+sym , susceptibility, exp
'100*str+2hitbase, 100*attack type+range, ..., ..., ..., ...
CONST tfrog = ncreat + crecas + 1
CONST svine = tfrog + 1, pivy = svine + 1, stool = pivy + 1
CONST term = stool + 1, mush = term + 1, nshade = mush + 4
CONST algore = nshade + 1, fern = algore + 1
CONST bfoot = fern + 1, wil = bfoot + 2, raptor = wil + 1
CONST leec = ncreat + crecas + crefor + 2
CONST mold = leec + 1, gcrab = mold + 1, bbeet = gcrab + 3
CONST tick = bbeet + 1, puff = tick + 1
CONST dweed = puff + 1, gworm = dweed + 2, bogh = gworm + 5
CONST chick = ncreat + crecas + crefor + creswa + 1
CONST moth = chick + 3, stink = moth + 2, hyena = stink + 3, fox = hyena + 1
CONST gwasp = fox + 1, locust = gwasp + 1, bunny = locust + 2
CONST cact = bunny + 2
CONST kelp = ncreat + crecas + crefor + creswa + crepla + 1
CONST sard = kelp + 1, sgull = sard + 2, lobstr = sgull + 1
CONST urchin = lobstr + 4, jelly = urchin + 1, squid = jelly + 1
CONST rsnap = squid + 3, octopus = rsnap + 3
CONST webspid = ncreat + creextra + 1
CONST gill = webspid + 1
CONST skip = gill + 1, prof = skip + 1, ging = prof + 1, mary = ging + 1
CONST mrhow = mary + 1, mrshow = mrhow + 1
CONST herm = mrshow + 1, lily = herm + 1, gramp = lily + 1, eddie = gramp + 1
CONST mara = eddie + 1, spot = mara + 1, igor = spot + 1, fester = igor + 1
CONST elvimp = fester + 1, elvis = elvimp + 1
CONST buzz = elvis + 1, zola = buzz + 1, mdeck = zola + 1, ghart = mdeck + 1
CONST saddam = ghart + 1, cubs = saddam + 1
CONST trump = cubs + 1, ivana = trump + 1, marla = ivana + 1
CONST grinch = marla + 1, gdog = grinch + 1

BIN
ALPHA.GDY Normal file

Binary file not shown.

347
ALPHA.GDY.txt Normal file
View File

@ -0,0 +1,347 @@
' Copyright (c) 1995 Jeffrey R. Olson
'
' Permission is hereby granted, free of charge, to any person obtaining a copy
' of this software and associated documentation files (the "Software"), to deal
' in the Software without restriction, including without limitation the rights
' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all
' copies or substantial portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
' SOFTWARE.
' $INCLUDE: 'alpha.dec'
CLS
PRINT USING "nssd:## ngrenade:## techwep:## nstrash:##"; nssd; ngrenade; ntechwep - ngrenade; nstrash
PRINT USING "nlsd:## nltrash:##"; nlsd; nltrash
wepnames:
DATA 4,58,6, 1,64,4, 5,58,9, 38,58,8
DATA 4,64,4, 15,58,11, 12,63,5, 83,57,10
DATA 47,62,7, 19,52,15, 40,54,14, 89,57,12
DATA 181,40,18, 182,1,14
'range
DATA 174,61,8, 18,62,4, 181,1,12, 23,62,5
DATA 171,59,7, 302,55,13, 64,59,9, 30,62,5
DATA 181,13,13, 268,35,16, 268,51,14, 181,26,14
shnames:
DATA 419,46,14, 151,27,14, 151,1,14, 415,54,14
DATA 182,15,11, 181,58,11, 151,15,12, 415,42,12, 173,67,2
armnames:
DATA 312,1 ,18, 236,1 ,18, 228,50,18
DATA 183,1 ,9 , 236,19,18, 184,1 ,13
DATA 183,19,16, 183,10,9 , 183,43,8
DATA 182,53,16, 183,51,15, 183,35,8
technames:
DATA 184,14,9, 184,24,8, 184,32,8, 184,40,6
DATA 184,46,13, 184,59,9, 185,1,17, 185,18,9
DATA 185,27,22, 185,49,16, 200,1,18, 146,1,17
DATA 205,39,21, 224,42,22, 225,39,21, 119,36,17
DATA 235,35,20, 236,37,19, 241,31,7, 255,24,13
DATA 255,37,6, 255,43,8, 287,40,9, 285,48,12
DATA 287,49,17, 311,1,16, 317,49,16, 191,52,13
DATA 146,50,12, 290,26,18, 110,43,17, 119,17,19
DATA 125,51,13, 142,1,16, 131,49,15, 136,1,18
DATA 276,59,9, 365,1,14
' grenades
DATA 131,9,21, 186,28,16, 186,44,18, 187,1,17
DATA 187,18,11, 206,27,14, 228,23,15, 250,18,12
DATA 314,29,12, 317,1,22, 159,51,17, 420,57,12
DATA 119,53,14, 395,56,13
DATA 187,29,9, 187,42,10, 187,52,9, 187,61,7
DATA 188,1,12, 186,62,6, 188,13,12, 188,25,18
DATA 188,43,9, 188,52,16, 189,1,11, 228,38,12
DATA 173,56,11, 241,38,10, 250,30,11, 262,29,19
DATA 132,50,17, 310,43,8, 310,51,7, 131,30,19
DATA 99,59,8, 204,38,11, 151,53,13
DATA 189,12,22, 189,34,18, 189,59,7, 190,1,13
DATA 190,14,21, 190,35,13, 190,48,6, 190,54,11
DATA 204,49,11, 206,1,12, 218,1,17, 250,41,7
DATA 310,58,11, 315,56,12, 159,43,8, 138,53,11
DATA 216,45,9, 146,18,14
'lsd
DATA 191,1,14, 191,15,12, 191,27,15, 191,42,10
DATA 237,1,20, 192,1,14, 192,15,7, 191,65,4
DATA 192,22,14, 218,48,17, 232,41,7, 235,1,9
DATA 237,59,10, 241,1,15, 243,1,5, 243,6,11
DATA 293,47,20, 309,46,15, 310,29,14, 314,53,16
DATA 120,16,19, 141,39,9, 141,48,10, 382,64,4
DATA 362,43,12
DATA 192,36,17, 192,53,7, 193,1,18, 193,19,5
DATA 192,60,9, 193,24,12, 206,13,14, 218,18,14
DATA 218,32,16, 54,16,11, 232,48,10, 387,52,17
DATA 168,51,10
syms:
DATA 22,5,0, 254,6,0, 24,1,0, 8,7,0
DATA 9,3,0, 5,4,0, 12,14,0, 157,11,0
DATA 4,1,0, 135,14,0
'fatig, uses, dice,dam, 2hitbonus,range
wep:
DATA 2, -1, 1,4, -2,1
DATA 6, -1, 1,5, -2,1
DATA 10, -1, 1,6, -1,1
DATA 7, -1, 1,7, -1,1
DATA 12, -1, 1,8, 0,1
DATA 8, -1, 1,9, 0,1
DATA 15, -1, 1,10, 1,1
DATA 15, -1, 1,11, 1,1
DATA 20, -1, 1,12, 1,1
DATA 2, -1, 2,5, 2,1
DATA 7, -1, 2,6, 2,1
DATA 12, -1, 2,7, 2,1
DATA 2, -1, 3,5, 3,1
DATA 2, -1, 3,6, 3,1
'Range
DATA 1, 20, 1,3, -3,10
DATA 1, 16, 1,4, -2,9
DATA 3, 10, 1,5, 0,5
DATA 1, 14, 1,6, -1,8
DATA 3, 9, 1,7, 0,8
DATA 2, 9, 1,8, -1,7
DATA 2, 8, 1,9, 0,5
DATA 4, 6, 1,10, 1,6
DATA 1, 10, 2,4, 2,10
DATA 2, 8, 2,6, 2,9
DATA 1, 8, 3,4, 3,11
DATA 2, 6, 3,6, 3,9
sh: DATA 8,5, 4,4, 20,5, 10,4, 20,4, 10,3, 10,3, 5,2, 0,0
arm: DATA 25,10, 15,8, 60,9, 100,8, 40,7, 25,7, 35,6, 60,5
DATA 40,4, 20,3, 15,2, 0,0
'fatig, hits2kill
'typ (energy-mass), fatig,uses,complex, recharge
ssd: DATA 92, 1,-1,20, 0
DATA 1, 3,-1,25, 0
DATA 2, 6,-1,10, 0
DATA 98, 2,5,6, -1
DATA 96, 3,1,30, 0
DATA 90, 1,1,18, -1
DATA 99, 5,8,7, -1
DATA 94, 2,12,16, -1
DATA 1, 0,30,25, 0
DATA 2, 0,10,25, 0
DATA 97, 10,-1,10, 0
DATA 96, 9,25,10, -1
DATA 99, 10,70,5, -1
DATA 99, 2,1,2, 0
DATA 99, 6,1,3, 0
DATA 1, 2,10,45, 0
DATA 1, 1,25,8, 0
DATA 1, 1,8,12, 0
DATA 1, 0,-1,40, 0
DATA 14, 15,10,17, 0
DATA 3, 2,-1,19, 0
DATA 0, 3,1,28, 0
DATA 99, 3,6,9, -1
DATA 97, 3,50,18, -1
DATA 1, 4,10,25, 0
DATA 33, 10,3,5, 0
DATA 1, 5,20,30, 0
DATA 96, 20,4,1, -1
DATA 97, 9,20,8, -1
DATA 1, 1,20,20, 0
DATA 95, 13,5,4, -1
DATA 0, 3,12,40, 0
DATA 98, 8,20,10, -1
DATA 95, 3,12,20, -1
DATA 95, 4,8,15, -1
DATA 0, 4,8,20, 0
DATA 95, 10,15,12, -1
DATA 99, 5,50,8, -1
'Tech Wep
'typ(energy-mass), fatg,use,cmplx, dic,dam,2hitbon,rnge,damtyp, recharg
DATA 11, 1,1,12, 7,7,6,1,1, 0
DATA 14, 1,1,10, 8,8,12,1,15, 0
DATA 11, 1,1,12, 9,9,6,1,10, 0
DATA 13, 1,1,7, 2,30,10,1,8, 0
DATA 13, 1,1,10, 2,15,6,1,5, 0
DATA 15, 1,1,6, 15,15,8,1,7, 0
DATA 15, 1,1,7, 12,12,10,1,2, 0
DATA 1, 1,1,18, 4,10,6,1,6, 0
DATA 13, 1,1,13, 1,4,12,2,27, 0
DATA 25, 1,1,8, 15,30,20,1,15, 0
DATA 48, 1,1,9, 5,5,12,2,9, 0
DATA 12, 1,1,11, 1,6,8,2,12, 0
DATA 44, 1,1,5, 15,15,10,2,2, 0
DATA 13, 1,1,10, 1,4,10,2,22, 0
DATA 55, 5,20,7, 3,9,3,1,10, -1
DATA 13, 1,60,15, 1,8,2,7,1, 0
DATA 98, 3,20,5, 4,8,6,1,9, -1
DATA 33, 10,8,15, 8,7,9,3,1, 0
DATA 99, 5,10,4, 7,7,6,8,7, -1
DATA 99, 3,10,3, 8,8,7,6,10, -1
DATA 57, 15,6,4, 8,8,6,6,2, -1
DATA 97, 11,5,3, 6,20,3,2,15, -1
DATA 74, 5,24,10, 2,4,5,1,1, -1
DATA 13, 20,4,9, 9,9,4,80,1, 0
DATA 1, 2,16,16, 3,3,8,1,3, 0
DATA 55, 15,8,8, 8,9,6,5,10, -1
DATA 99, 2,18,12, 5,8,7,1,7, -1
DATA 99, 12,12,6, 7,8,8,6,11, -1
DATA 1, 1,10,13, 4,8,6,2,4, 0
DATA 1, 1,20,18, 3,3,6,2,6, 0
DATA 1, 5,20,20, 1,4,4,2,28, 0
DATA 73, 20,18,8, 9,6,5,1,1, -1
DATA 99, 5,30,4, 2,6,4,6,10, -1
DATA 1, 3,10,25, 1,1,5,4,12, 0
DATA 99, 4,12,12, 1,6,15,9,27, -1
DATA 1, 1,20,18, 1,1,5,1,29, 0
DATA 1, 1,15,18, 1,1,8,1,18, 0
'typ(energy-mass), fatg,uses,cmplx, dic,dam,2hitbon,rnge,damtyp, rechrg
'S Junk
'typ(energy-mass), fatig,uses,complex, recharge
DATA 1, 1,-1,25, 0
DATA 1, 1,-1,25, 0
DATA 4, 3,-1,10, 0
DATA 1, 1,-1,25, 0
DATA 99, 3,1,2, 0
DATA 97, 5,40,9, -1
DATA 2, 1,-1,22, 0
DATA 93, 8,15,15, -1
DATA 3, 2,-1,15, 0
DATA 1, 1,-1,20, 0
DATA 22, 2,12,10, -1
DATA 1, 1,-1,20, 0
DATA 1, 1,1,25, 0
DATA 62, 15,1,7, 0
DATA 1, 3,1,17, 0
DATA 9, 1,-1,30, 0
DATA 95, 12,20,9, -1
DATA 82, 2,15,15, -1
'typ(energy-mass), fatig,uses,complex, recharge
lsd: DATA 2, 20,-1,10, 0
DATA 1, 40,-1,20, 0
DATA 3, 3,-1,15, 0
DATA 93, 400,10,2, -1
DATA 96, 100,4,1, -1
DATA 94, 100,25,8, -1
DATA 2, 30,-1,17, 0
DATA 1, 300,-1,14, 0
DATA 99, 10,10,5, -1
DATA 91, 200,6,8, -1
DATA 32, 60,10,6, -1
DATA 92, 250,14,8, -1
DATA 1, 20,-1,18, 0
DATA 97, 50,10,4, -1
DATA 1, 80,-1,18, 0
DATA 1, 30,-1,25, 0
DATA 93, 25,8,15, -1
DATA 1, 10,-1,30, 0
DATA 1, 5,-1,20, 0
DATA 2, 20,-1,15, 0
DATA 96, 25,8,5, -1
DATA 96, 50,15,5, -1
DATA 81, 80,25,20, -1
DATA 1, 12,-1,18, 0
DATA 1, 50,-1,10, 0
'L Junk
'typ(energy-mass),fatig,uses,complex, recharge
DATA 1, 300,-1,10, 0
DATA 1, 80,-1,20, 0
DATA 92, 100,4,4, -1
DATA 63, 100,12,5, -1
DATA 93, 200,1,3, -1
DATA 94, 50,10,5, -1
DATA 93, 100,20,5, -1
DATA 2, 20,-1,18, 0
DATA 93, 200,3,2, -1
DATA 0, 250,-1,19, 0
DATA 1, 60,-1,10, 0
DATA 92, 150,3,5, -1
DATA 93, 40,10,4, -1
OPEN "alphaman.3" FOR BINARY AS #1
RESTORE wepnames
FOR i = 1 TO nwep + nrwep + nsh + narm
FOR j = 1 TO 3: READ sss: PUT #1, , sss: NEXT j
NEXT i
RESTORE technames
FOR i = 1 TO nssd + ntechwep + nstrash + nlsd + nltrash
FOR j = 1 TO 3: READ sss: PUT #1, , sss: NEXT j
NEXT i
RESTORE syms
FOR i = 1 TO 10
FOR j = 1 TO 3
READ sss: PUT #1, , sss
NEXT j
NEXT i
RESTORE wep
FOR i = 1 TO nwep + nrwep
FOR j = 1 TO 6
READ sss: PUT #1, , sss
NEXT j
NEXT i
RESTORE sh
FOR i = 1 TO nsh
FOR j = 1 TO 2: READ sss: PUT #1, , sss: NEXT j
NEXT i
RESTORE arm
FOR i = 1 TO narm
FOR j = 1 TO 2: READ sss: PUT #1, , sss: NEXT j
NEXT i
RESTORE ssd
FOR i = 1 TO nssd
FOR j = 1 TO 5
READ sss: PUT #1, , sss: IF i = nssd THEN PRINT sss;
NEXT j
NEXT i
PRINT
FOR i = 1 TO ntechwep
FOR j = 1 TO 10
READ sss: PUT #1, , sss: IF i = ntechwep THEN PRINT sss;
NEXT j
NEXT i
PRINT
FOR i = 1 TO nstrash
FOR j = 1 TO 5
READ sss: PUT #1, , sss: IF i = nstrash THEN PRINT sss;
NEXT j
NEXT i
PRINT
RESTORE lsd
FOR i = 1 TO nlsd + nltrash
FOR j = 1 TO 5
READ sss: PUT #1, , sss: IF i = nlsd + nltrash THEN PRINT sss;
NEXT j
NEXT i
PRINT
GET #1, 6 * (nwep + nrwep + nsh + narm + nssd + ntechwep + nstrash + nlsd + nltrash) - 5, i
GET #1, , j: GET #1, , k
PRINT i; j; k;
CLOSE #1
END

264
ALPHAMAN.FAQ.txt Normal file
View File

@ -0,0 +1,264 @@
AlphaMan FAQ updated: August 1995
Most recent version: 1.1
Please direct all questions and suggestions to Jeff Olson:
Jeffrey Olson
214 E. Sherwin Dr.
Urbana, IL 61801 USA
76473.225@compuserve.com.
RELEASE INFORMATION ------------------------------------------------------
February 1995 AlphaMan 1.0 released. Shareware by Jeff Olson.
March 1995 AlphaMan 1.01 released.
Improvements: Made food somewhat more plentiful. Added a "fast fight"
mode to bypass spacebar presses during combat. Added an Easy and a
Moderately Easy level of difficulty to assist beginners. Fixed an
annoying quirk of superglue traps.
April 1995 AlphaMan 1.02 released.
Improvements: Fixed bug that could crash game when character's hunger
went from "Very Hungry" to "Famished". Made Invisibility, Quills and
Heightened Endurance somewhat more powerful to balance them out.
May 1995 AlphaMan 1.03 released.
Improvements: Fixed saved filename convention to properly handle odd
characters such as ? and + in character's name.
June 1995 AlphaMan 1.1 released.
Improvements: Game now remembers recent castle and lair levels, so
remapping is no longer necessary. For example, most dropped items will
still be there when character returns to a place already visited.
Now separate "Halls of the Dead" for the different difficulty level.
Now an experience bonus at the end of the game for each "subquest"
successfully completed, an additional bonus if the game was won, and a
further bonus if it was won in a short amount of time.
The Main Map key (F5) now shows regions where you've visited (useful for
looking for Monoliths).
Several new devices have been added.
** There is a known bug with version 1.1: if you teleport out of a castle
and then re-enter it without first entering a different castle, peculiar
things may happen when you go up/down stairs. This is related to the
castle level saving. It should never crash your computer, however.
WHAT IS ALPHAMAN? --------------------------------------------------------
AlphaMan (Copyright (c) 1995 Jeffrey R. Olson) is an adventure game set
on Earth in the future, following a nuclear disaster. You will take the role
of a mutated human who is struggling to save the planet from annihilation.
You will be pitted against hideously mutated plants and animals, traps and
snares of all sorts, and several varied adversaries whom you will have to
defeat in order to complete your mission. At your disposal are a broad
variety of technological relics and mutated substances which you will acquire
along the way, as well as your own powers and guile. AlphaMan has occasional
humorous twists, and uses colorful text-based graphics in the spirit of Rogue
or NetHack. Requires 640K, color. AlphaMan is loosely based on Gamma World
by James Ward of TSR Hobbies.
WHERE CAN ALPHAMAN BE FOUND? ---------------------------------------------
The current release of AlphaMan (currently 1.1) can be found via FTP at
ftp.win.tue.nl in /pub/games/alphaman.
The most recent major update (currently 1.1) can likely be found at
ftp.dungeon.com in /pub/msdos/games/Misc,
ftp.indirect.com in /pub/software/games,
ftp.inf.tu-dresden.de in /.4.1/vol4/ms-dos/games/roleplay,
ftp.funet.fi in /pub/msdos/games/rpg.
WHAT DO THE CHARACTER STATS MEAN? ----------------------------------------
Your character will have six basic personal attributes: Strength
(physical power), Dexterity (agility and quickness), Constitution (fortitude
and health), Radiation Resistance (susceptibility to radiation), Mental
Resistance (susceptibility to mental attacks) and Intelligence (learning
ability). These characteristics generally are in the range 3-18 (higher is
"better"), but some mutations, devices, etc. can raise or lower these. Your
characteristics may increase with time as you gain experience as well.
There is no limit to how high your stats can go. I have had characters
finish the game with a Strength of 38, a Dexterity of 36, and no stat below
18. I've also finished the game (and won) with a Dexterity of -1.
Your character also has Hit Points. These reveal to how much damage you
can sustain before dying. You lose hit points as you are damaged by attacks
from creatures, falling into pits, etc. You heal hit points back over time,
and some devices and substances will heal you faster. In addition, you will
gain more hit points as you become a more experienced adventurer.
HOW DO THE MUTATIONS WORK? -----------------------------------------------
A character has a physical and a mental mutation. The following is a
list of all mutations currently implemented, and a brief overview of their
usefulness. A more detailed description is given in the spoiler file
alphaman.spl
Physical mutations:
Electrical Generation: usable every few rounds, this attack causes
electrical damage to any creature touching you during the round used.
The damage done is significant, but not all creatures need to touch you
to hurt you!
Heightened Dexterity: this mutation raises your dexterity to 19-23,
subject to reduction by encumbrance in the usual way.
Heightened Strength: this mutation raises your strength to 19-23,
subject to reduction by fatigue in the usual way.
Heightened Vision: allows you to see long distances, to see invisible
creatures, to search more effectively, and to hit more often in combat.
Tough Exoskeleton: lowers your armor class, making you harder to hit in
combat and reducing your damage sustained. It encumbers you slightly.
Sonic Attack: usable every 12 rounds, this does burning damage to
all nearby creatures not protected from heat.
Blood Structure Change: raises your constitution to 19-23, making you
more robust and giving you more hit points and poison resistance.
Reflective Skin: raises your radiation resistance to 19-23, and makes you
more resistant to lasers and heat. You take only 1/2 damage from laser
attacks, and 2/3 damage from heat attacks.
Laser Generation: usable every 13 rounds, this attack does laser damage
to a selected target if it successfully hits. It does substantial damage.
Heightened Endurance: you tire much less easily and regain lost hit points
more rapidly, and you can sustain a much longer duration underwater. You
cas also carry twice the weight before becoming encumbered.
Foul Musk: usable every 14 rounds, you cause nearby creatures to
get sick and flee for a variable duration of time.
Acidic Saliva: usable every 8 rounds, this attack causes acid damage to a
selected target if you successfully hit. It is easier to hit at close
range. This does appreciable damage.
Poison Claws: you cause poison damage to a selected target if a successful
hit is scored. You can inject poison every 5 rounds.
Heightened Speed: usable about every 30 rounds, you can double your speed
for 10-20 rounds, allowing you extra attacks or movement. This mutation
may be too powerful in its present form!
Radiation Generation: usable every 15 rounds, you can generate a beam of
radiation capable of damaging creatures in line with a selected target.
Quills: these provide protection by causing damage to any creature touching
you. You can also shoot them at an opponent every few rounds.
Tenticles: you can entwine a selected target and cause constriction damage
every round. While constricting, you are able to do other things. If you
move, you will release your tenticles.
Mental mutations:
Military Genius: you are a natural soldier, hitting more often and
doing more damage than normal mutants.
Scientific Genius: your intelligence is raised to 19-23, and you can
construct new tech devices with parts and energy salvaged by dismanteling
old ones. You can only make devices which you have seen before and figured
out, and often must try several times before you figure out how to make the
desired device.
Heightened Willpower: your mental resistance is raised to 19-23, and you
are able to temporarily raise all your stats and your hit points.
Mental Blast: usable every 12 rounds, you can attempt to overload the
mental synapses of a selected opponent to do damage. This attack does
substantial damage, but some of the more dangerous critters (for example,
most of the molds and funguses) resist mental attacks.
Teleportation: you can mentally transport yourself short or long distances.
You must be rested to teleport, and it can only be used infrequently.
Mental Healing: you can heal yourself at a rate of 3 hit points / round.
You must sit motionless to do this, however, and it is tiring. It is
nice to be able to enter unfamiliar situations with maximum hits, though.
Force Field: while activated, you take reduced damage (typically
2/3 normal) from all attacks. It is tiring to use, however.
Molecular Disruption: usable every 12 rounds, this mental assault can
totally destroy creatures or other objects at which it is targeted.
Useful for going through walls.
Life Leech: you can steal hit points from nearby monsters and add
them to your own. This is usable every 4 rounds.
Invisibility: you can mentally bend light rays around you, which makes you
difficult to see and less susceptible to lasers. Lasts about 12 rounds.
You are also less susceptible to blindness attacks.
Cryogenics: you can mentally freeze an opponent, doing progressively
more damage as the opponent freezes. It is usable every 3 rounds.
Damage increases exponentially, doing 1d6, 2d6, 4d6, 8d6 etc. on
progressive "hits", so it is extremely useful against powerful opponents.
Hypnosis: you can put opponents to sleep by a sheer force of will. This
ability is usable every 3 rounds.
Psychokinesis: you are able to disrupt matter to create grenade-like
explosions. This ability is tiring, and can only be used every 15 rounds.
WHAT USE ARE TECH DEVICES? -----------------------------------------------
As a character progress, (s)he will accumulate technological relics which
can be extremely useful. AlphaMan includes over 125 different devices,
including tech weapons like the Laser Pistol, Flamethrower, etc., various
grenades, vehicles like the Hovercraft or Golf Cart, protective suits like
the Radiation Suit or the Bulletproof Vest, and a myriad of miscellaneous
gadgets.
Many devices one can find are truly useless, such as the Toaster or
Leafblower. Some have more subtle uses. A Microwave Oven, for example,
can prematurely ripen berries (see below). A Home Movie Projector will
put critters to sleep. Some devices can be dangerous to use, like the
Porta-Potty or the Kevorkian Machine. Some devices are of obvious use, such
as the Medkit, which will restore lost hit points and remove the detrimental
effects of poison. One particularly useful device is the Microcomputer (or
the Computer Workstation) which can be used to reveal a variety of
information about weapons, berries, devices, creatures, etc.
A section describing the usefulness of each tech device is included in the
spoiler file alphaman.spl
WHAT USE ARE BERRIES? ----------------------------------------------------
Mutated berries provide a variety of effects, and can be eaten or thrown
depending on the type of berry. AlphaMan includes over 30 different types of
berries which do things like turn you invisible if eaten, heal lost hit
points, explode, etc. What a particular berry will do is generally not known
until that particular type of berry has been eaten (or a Chemical Analyzer
has been used on it), so some dangerous eating experimentation must generally
be done. Some berries, if thrown at other creatures, will reveal their
nature that way (you may, for example, toughen the skin of the creature or
turn it invisible).
You can occasionally find nectar or extract as well (or make it from a
berry using a Still); these are more potent versions of berries. The
usefulness of each berry is described in the spoiler file alphaman.spl.
WHICH WEAPONS/ARMOR ARE BEST? --------------------------------------------
See the spoiler file alphaman.spl for the complete details of the base damage
and to hit bonus for each weapon, armor and shield. The following is a list,
in increasing order of quality, of all weapons, armor and shields.
Dagger Shuriken Heavy Fur Small Wooden
Club Dart Cured Hides Large Wooden
Pitchfork Throwing Axe Ringmail Small Metal
Hand Axe Arrow Chainmail Large Metal
Mace Javelin Fiberglass Small Titanium
Short Sword Wab Boomerang Plastic Large Titanium
Flail Lawn Dart Titanium Chainmail Small Duralloy
Long Sword Spear Platemail Large Duralloy
Halberd Titanium Dart Titanium Platemail
Titanium Dagger Titanium Javelin Duralloy Chainmail
Titanium Sword Duralloy Arrow Duralloy Platemail
Titanium Axe Duralloy Spear
Duralloy Pitchfork
Duralloy Sword
ELVIS, GILLIGAN, ETC -----------------------------------------------------
Your overall mission is to save the world from the Grinch and his nerve
toxin. You must complete a series of missions in order to accomplish this
goal. You will usually need to visit 5 different castles in order to
properly equip yourself. Note that you DO NOT need to visit these castles
in any particular order, despite the suggestions of the Tape Recorders you'll
find along the way.
You'll need the following items:
1. A map from the Munsters in order to locate the Grinch's hidden castle.
2. Buzz Aldrin's Space Suit to protect yourself from the radiation which
protects the Grinch's castle.
3. Elvis' Blue Suede Shoes so you can cross the bottomless chasm that
surrounds the Grinch's castle.
4. Donald Trump's Presidential ID card to get through the locked door into
the castle.
5. Gilligan's Keptibora serum to protect yourself from the nerve toxin which
permeates the Grinch's castle.
Each castle has its own traps and tricks. See the spoiler file for more
information about the castles.
WHY ELVIS, GILLIGAN, ETC? ------------------------------------------------
AlphaMan has a deliberate lighthearted feel to it. The bizarre and
peculiar cast of special characters was chosen, in part, to poke fun at
the more banal aspects of Americana. Elvis is a (living?) icon, a national
treasure. No one in my generation could have missed the appeal of Gilligan
and the castaways, or the Munsters, save for those few with progressive,
left-wing, hand-wringing parents who forbade the watching of TV. And who
hasn't asked him/herself the question "Whatever became of Buzz Aldrin, second
man on the moon"?
WHAT NEXT? ---------------------------------------------------------------
I am working on a SuperVGA game in the same genre as AlphaMan, but which
will have a more serious and long-term mission. I hope to have it available
within 6-9 months, and will send the shareware version to everyone who has
registered AlphaMan.

797
ALPHAMAN.SPL.txt Normal file
View File

@ -0,0 +1,797 @@
AlphaMan Spoilers - updated: August 1995
Most recent version: 1.1
Please direct all questions and suggestions to Jeff Olson:
Jeffrey Olson
214 E. Sherwin Dr.
Urbana, IL 61801 USA
76473.225@compuserve.com.
This file contains details about the game AlphaMan, a Rogue-like game set
in post-holocaust Earth. AlphaMan is available from:
ftp.win.tue.nl in the directory /pub/games/alphaman
The FAQ file, alphaman.faq, is also available there, and provides more basic
information than this file (which is intended for experienced players).
____________________________________________________________________________
Contents:
1. Detailed descriptions of the various Mental and Physical Mutations
2. Weapons, Armor and Shield ratings
3. Detailed berry descriptions
4. Detailed tech device descriptions
5. Overview of creatures
6. Details about the 6 castles which one must visit to complete the quest.
____________________________________________________________________________
1. MUTATIONS
All characters have 1 Physical and 1 Mental Mutation.
A. Physical Mutations
1. Acidic Saliva
This mutation can be used every 8 rounds. You can spit a caustic
substance at a distance, although you hit more easily and do slightly
more damage at close range. You do 4 dice damage, where the dice
size is given by 3 + (your level - distance between you & target)/2
2. Blood Structure Change
Your Constitution is raised to somewhere between 19 and 23. You
consequently have more hit points, and you take much-reduced damage
from poison (half what a character without Blood Structure Change
would take, even with the same Constitution). You also are less
likely to suffer lingering stat losses from poison, and recover from
sickness attacks (like the skunk) three times faster.
3. Electrical Generation
You can generate electrical currents on your skin which will damage
any creature touching you during the round used (touching means the
creature scores a successful hit on you with a contact-attack like
a bite, but not no-touch attacks like radiation or mental attacks.
The damage done to each creature is 2 dice of size (4 + your level).
This is extremely useful against swarms like Killer Bees, Locusts.
4. Foul Musk
You can generate a cloud of stinking gas that causes creatures to
flee from you. You will occasionally make creatures sick, causing
them to barf (during which time they are mostly defenseless from
attack). This is effective as a defense, particularly when you get
surrounded by beasties.
5. Heightened Dexterity
Your Dexterity is raised to somewhere in the range of 19-23. Your
Armor Class is much improved, and you can hit significantly easier
with range weapons (even range tech weapons).
6. Heightened Endurance
You have more hit points than most characters, can carry more than
twice the weight with the same encumberance, you grow hungry less
quickly, and can endure time underwater much longer.
7. Heightened Speed
You can temporarily double your speed, allowing you more attacks and
enabling you to outrun many creatures if you're in a bind. A very
useful mutation, especially if coupled with an attack-type mental
mutation such as Life Leech or Cryogenics.
8. Heightened Strength
Your Strength is raised to somewhere in the range of 19-23. You
consequently do more damage and hit more often with contact weapons.
You can also carry more stuff, and have an easier time getting out
of spiderwebs, breaking down doors, etc.
9. Heightened Vision
You can see more clearly and in a broader EM spectrum, giving you
minor bonuses to hit with weapons, allowing you to see further in
darkness, and allowing you to look over long ranges to see, for
example, whether there are any goodies in nearby regions of the map.
You can also see radiation zones and avoid them. With this mutation,
one can usually skip the Munsters' Castle, since spotting the hidden
castle of the Grinch is relatively straightforward.
10. Laser Generation
Every 10 rounds you can fire a laser beam. This beam can strike a
single target at a fairly long range, hitting often and doing 3 dice
damage, with dice size given by 5 + (your level)/3
11. Poison Claws
These do very irregular damage, occasionally only doing 1-4 points,
but capable of doing up to 10-40 when you are at 10th level.
Although their range is short, they have several advantages. If you
miss, they are immediately available for use again. They occasionally
make the creature hit nauseous (barf). It is also useful to have a
readily-available non-kinetic attack form for those creatures which
take only 1/3 damage from kinetic attacks (like Zapweed, Rot Fungus,
Slugs).
12. Quills
Quills provide protection from creatures which must touch you to do
damage, inflicting 1 die damage of size (3 + (your level/3)). You
may also shoot them at a single creature for 3 dice damage of size
(2 + (your level)/2, but you will then be unprotected until they
regrow (in 8 rounds).
13. Radiation Generation
You can shoot a beam of radiation every 15 turns that is capable of
causing damage to any creature in its path. The damage done is 2
dice of size (3 + (your level)/2).
14. Reflective Skin
Your Radiation Resistance is raised to somewhere in the range of
19-23. The damage you receive from laser attacks is halved, while
you only receive 2/3 damage from heat attacks.
15. Sonic Attack
You are able to generate an ultrasonic blast that does heat damage to
all creatures standing next to you. The damage done is 1 die of size
(5 + (your level)*1.5)
16. Tenticles
You can entwine a creature (which makes it harder for them to hit
you, and impossible for them to run away) and cause constriction
damage to them every round. The damage done is 1 die of size
(3 + (your level)/2), and you are able to do other things (like use
your weapon or tech devices) while constricting. If you move, the
tenticles release.
17. Tough Exoskeleton
Your Armor Class is always at least as good as if you were wearing
Titanium Chainmail, and you sustain only 80 percent normal damage
from kinetic attacks. You are slightly encumbered by this
exoskeleton, but no more so than if you were wearing the equivalent
armor.
B. Mental Mutations
1. Cryogenics
This attack mutation is particularly effective against powerful
creatures. It does exponential damage, first 1 die, then 2 dice,
then 4, 8, 16 etc on progressive "hits". The dice size is given by
(5 + (your level)/2).
2. Force Field
While this mutation is being used, you sustain reduced damage (in
general, about 2/3 normal) from all attacks. This can be tiring
to use, and if you become too fatigued, it will turn itself off.
3. Heightened Willpower
Your Mental Resistance is raised to somewhere in the range of 19-23,
and you are able to periodically raise all of your stats and your
hit points for a brief period. Note that you will never die when
your hit points are reduced back to normal.
4. Hypnosis
You can use this mutation to put creatures to sleep. This is usable
fairly often, and can be a real asset when fighting several creatures
at once, or when you want to flee.
5. Invisibility
You can make yourself invisible, making creatures wander at random and
enabling you to get off "free" attacks. This is also useful when you
need to retreat. In addition, since this mutation is the ability to
bend light rays around you, you are less susceptible to blindness
attacks (you typically recover in one third the time).
6. Life Leech
A powerful mutation, you are able to leech hit points from creatures
standing next to you and add them to your own. The number of points
damage done (and subsequently added to your total) is 2 dice where
the dice size is given by (2 + (your level)/2).
7. Mental Blast
This mutation allows you to psionically blast a selected creature
every 10 rounds up to 7 squares away. The damage done is 2 dice
of size given by (your Mental Resistance + your level)/2.
8. Mental Healing
This mutation allows you to heal yourself rapidly. When used, you
select how many rounds you will sit motionless (and prone to attack),
during which time you will heal back 3 hit points per round. This
mutation is best used after battles, so that you are always at full
hit points when venturing into uncharted territory.
9. Military Genius
You recieve a +2 to hit and +4 damage with all weapons you use.
This includes contact and thrown weapons, and tech weapons as well.
10. Molecular Disruption
You can disintegrate matter, destroying a creature or other object
at which it is targeted. This is useful for going through walls,
and will kill a creature if a random roll of dice size
(25 + the creature's hit points/2) is less than a random roll of
dice size (15 + your mental resistance + your level).
11. Psychokinesis
You can create a grenade-like explosion that does kinetic damage to
all creatures in its blast radius. The damage done is 2 dice of size
(2 + (your mental resistance)/6 + (your level)/3 ).
12. Scientific Genius
Your Intelligence is raised to somewhere in the range of 19-23, and
you are able to build new tech devices from parts and energy salvaged
from old devices. You are potentially able to build any device which
you are familiar with (those listed when you press F3) and for which
you have enough parts. Often, you must try several times in order
to be able to build the device you would like.
13. Teleportation
You are able to transport yourself over either long distances (useful
as a speedy mode of transportation and as a means of escape) or short
distances (useful when you want to get to another part of a castle
level or lair). Teleporting blind is dangerous, and if you end up
inside a solid object, you may be killed. It is occasionally an
effective attack to teleport into a creature if you are at full hit
points, but not one generally recommended. Note that short range
teleporting isn't 100% accurate, so if you try to teleport next to a
castle wall, you may end up inside the wall, which tends to be
unhealthy.
____________________________________________________________________________
2. WEAPONS, ARMOR and SHIELDS
A. Contact Weapons
Name Base Damage To Hit Bonus* Weight (kg)
Dagger 1-4 -2 .2
Club 1-5 -2 .6
Pitchfork 1-6 -1 1.0
Hand Axe 1-7 -1 .7
Mace 1-8 0 1.2
Short Sword 1-9 0 .8
Flail 1-10 +1 1.5
Long Sword 1-11 +1 1.5
Halberd** 1-12 +1 2.0
Titanium Dagger 2-10 +2 .2
Titanium Sword 2-12 +2 .7
Titanium Axe** 2-14 +2 1.2
Duralloy Pitchfork 3-15 +3 .2
Duralloy Sword 3-18 +3 .2
* The To Hit bonus is in addition to whatever other bonuses you have.
** Technically, this weapon should require 2 hands, but doesn't.
A. Range Weapons
Name Base Damage To Hit Bonus* Range Weight (kg)
Shuriken 1-3 -3 10 .1
Dart 1-4 -2 9 .1
Throwing Axe 1-5 0 5 .3
Arrow 1-6 -1 8 .1
Javelin 1-7 0 8 .3
War Boomerang 1-8 -1 7 .2
Lawn Dart 1-9 0 5 .2
Spear 1-10 +1 6 .4
Titanium Dart 2-8 +2 10 .1
Titanium Javelin 2-12 +2 9 .2
Duralloy Arrow 3-12 +3 11 .1
Duralloy Spear 3-18 +3 9 .2
* As above
B. Armor
Name Base Armor Class Max hits sustainable* Weight (kg)
No Armor 10 - -
Heavy Fur 9 2 1.5
Cured Hides 8 3 2.0
Ringmail 7 4 4.0
Chainmail 6 5 6.0
Fiberglass 5 6 3.5
Plastic 4 7 2.5
Titanium Chainmail 3 7 4.0
Platemail 2 8 10.0
Titanium Platemail 1 9 6.0
Duralloy Chainmail 0 8 1.0
Duralloy Platemail -1 10 1.5
* This is the maximum number of "damaging" hits a particular kind of
armor can sustain in its pristine condition.
C. Shields
Name Reduction to Armor Class Max hits sustainable* Weight (kg)
Small Wooden -1 2 .5
Large Wooden -1 1/2 3 1.0
Small Metal -2 3 1.0
Large Metal -2 1/2 4 2.0
Small Titanium -3 4 1.0
Large Titanium -3 1/2 5 2.0
Small Duralloy -4 4 .2
Large Duralloy -4 1/2 5 .3
* As above
____________________________________________________________________________
3. BERRIES
Berries are named at random each game, so it is a waste of time to write
down the names during one game for the sake of using them in the next. The
random names were intended to sound like Dr. Seuss names.
A. Treatise on Berry Colors (available from a Computer Workstation)
The color of a berry reveals its degree of ripeness. The six colors
a berry can have are red, orange, yellow, green, blue, and purple,
in increasing order of ripeness. Berries which are more ripe are
more potent, and will have effects which last longer. For example,
purple exploding berries do much more damage than orange ones, and
forcefields created by blue berries last longer than those created
by red ones. In addition, if a berry can have either a good or bad
effect, the ripe berries are more likely to cause the good effects.
Thus, a blue berry that alters speed tends to speed you up, while a
red one is likely to slow you down. Berries that alter your stats
are particularly important examples of this, wherein red and purple
ones change your stats permanantly, purple usually raising, and red
usually lowering; the effect of the orange-blue ones is temporary.
Berries will ripen with time; using X(amine) can be illuminating.
B. Berry descriptions
Exploding berries are effective grenades with a blast radius of 1 square.
Radiating berries are effective grenades with a blast radius of 1 square.
Hunger-satisfying berries provide significant nourishment, and can make
critters burp if thrown at them.
Refresh berries make you well-rested and help keep you rested.
Poison berries can be thrown to do poison damage if they hit a critter.
Curing berries will restore some hit points, and some reduced by poison.
Extra-curing berries are like normal curing berries, only more potent.
Expertise-altering berries add or subtract experience points depending on
their color.
Strength-altering berries raise or lower strength, depending on color.
Dexterity-altering berries raise or lower dexterity, depending on color.
Constitution-altering berries raise or lower CON, depending on color.
Radiation Resistance-altering berries modify RR, depending on color.
Mental Resistance-altering berries modify MR, depending on color.
Intelligence-altering berries modify intelligence, depending on color.
Speed-altering berries will make you fast or slow, depending on color.
These work on creatures, too, if thrown.
Berries that toughen skin will permanantly lower your armor class.
These work on creatures, too, if thrown.
Intoxicating berries will confuse you if eaten, or a critter if thrown.
Cleverness berries make you better at figuring out and using tech devices.
Berries which add body parts are generally useless except for nourishment.
Purple ones will cause you to grow a cumbersome udder.
Mutation-affecting berries quench or heighten a mutation, depending on
their color. Heightened mutations are much more powerful.
Detection berries help you see invisible things, and will map a lair
or castle level if you are indoors.
Blindness berries will blind you temporarily if eaten.
These work on creatures, too, if thrown.
Tact-reducing berries make you burp, sneeze, etc. if eaten.
These work on creatures, too, if thrown.
Mind-clouding berries make you forget things but will confuse creatures
if thrown at them.
Fright-inducing berries will frighten critters away temporarily.
Detoxifying berries will remove the lingering adverse effects of poisons.
Rambifying berries give you a Rambo complex, making you strong but dumb.
These work on creatures, too, if thrown.
Invisibility berries will make you temporarily invisible.
These work on creatures, too, if thrown.
Teleport berries randomly teleport you over a long distance, and work on
critters too.
Relax berries will put you or a creature to sleep.
Klutz berries will make you extremely clumsy, but work on critters too.
Regeneration berries, cause you to regain lost hit points much faster.
Berries which "smell nice" give you an odor that attracts creatures.
Force Field berries will protect you so you sustain reduced damage.
Acid berries are effective weapons if thrown.
____________________________________________________________________________
4. TECH DEVICES
The following is a list of all the tech items currently implemented in
AlphaMan. These are the specifics one can learn by using a Microcomputer.
A. Small Tech Gadgets:
Alza-seltzer relieves sickness, and can get rid of tapeworms
An Answering Machine will occasionally receive useful messages
ArmorAll will restore armor to pristine condition, and may even improve it
A Backpack can hold up to 10 reasonably-sized items
A Bionic Cranium Implant can raise your Mental Resistance & Intelligence
A Bionic Muscle Implant can raise your Strength and Dexterity
A Bionic Spleen Implant can raise your Constitution & Radiation Resistance
A Boise Souvenir Ashtray is useless
Brandy will boost your strength temporarily, but may make you sleepy
A Breathalyzer will reveal your blood alcohol content (mostly useless)
Cap'n Crunch gives you a sugar high and speeds you up temporarily
A Cheese Grater is useless
Chemical Analyzers reveal the potential effects of unknown berries
A Chia Pet is useless
Coffee will boost your constitution temporarily, and can keep you awake
Duct Tape can incapitate creatures, and repair damaged armor and suits
Flares will illuminate the outdoors when dark, but cause damage indoors
A Force Field Generator will help protect you from attacks
A Fountain Pen is useless
A Gas Mask will protect completely from poison gas
A Geiger Counter reveals nearby radiation zones outdoors, or traps indoors
A Grenade Launcher can fire grenades and berries accurately at long range
A Hammock will put you to sleep immediately
A Hand Massager will reduce fatigue
An ID Card will unlock most locked doors, and can deactivate some robots
A Kalediscope is useless
A Knife Sharpener can sharpen blade weapons so they are more effective
A Lava Lamp will help illuminate during darkness
A Medkit will restore some lost hit points and poison damage
A Microcomputer can reveal a variety of useful information
A MindWeb Generator will protect you from mental attacks
A Mirror can be used to reflect laser attacks
A Motion Sensor will reveal the location of invisible creatures
A Mr. Misty provides nourishment, and also is an effective freeze grenade
A Pencil Sharpener can sharpen pointy weapons so they are more effective
The flash from a Pocket Instamatic can blind creatures that see it
Power Packs recharge devices which require energy
A Radar Detector is useless
A Radar Gun will reveal how fast a creature can move (mostly useless)
ServoBoots greatly reduce the effects of encumberance
A Slinky is useless
A Sony Watchman can map levels in some of the special castles
Sunglasses protect against blindness & give added influence over robots
Sunscreen provides some protection against laser attacks
Tape Recorders reveal a variety of information about your mission
A Tip O'Neill mask will frighten creatures away when worn
A Toaster is useless
Toilet Paper is an effective weapon against Dung Beetles and Seagulls
A Tricorder will map castles and lairs, and can reveal creature specifics
A Turbocharger will speed up any vehicle
Tylenol can restore lost hit points
A UV Helmet helps greatly when searching for hidden things
A Veg-O-Matic can injure nearby creatures, especially edible ones
A VisiScope allows you to see long distances
A Voodoo Doll will kill all nearby creatures of a specific type
A Wrist Watch will tell you how much time remains to complete your mission
A Cannister Grenade inflicts modest shrapnel damage (kinetic damage type).
A Disintegration Grenade is lethal to almost everything.
A Fission Grenade inflicts substantial radiation damage.
A Flash Grenade can blind everything in a large area.
A Fusion Grenade inflicts tremendous damage in a large area.
A Gas Grenade inflicts poison damage and leaves poisonous gas.
A Glue Grenade will imobilize anything in its sizable blast area.
An Incendiary Grenade inflicts moderate heat damage.
A Lightning Grenade inflicts modest electrical damage in a large area.
A Neutrino Grenade inflicts moderate damage.
A Photon Grenade inflicts tremendous laser-type damage.
A Psychosis Grenade inflicts variable mental-type damage.
A Stun Grenade paralyzes and inflicts minor damage in a large area.
A Vial of Acid inflicts modest damage.
A Blaster can fire many shots at a time, inflicting modest heat damage.
A Blowtorch does moderate heat damage.
A Can of Mace does modest poison damage and makes the target flee.
A Chainsaw inflicts horrible wounds.
A Flamethrower does substantial heat damage in line with the target.
A Freeze Gun does substantial cold damage in line with the target.
A Fusion Rifle does substantial radiation damage.
A Laser Pistol does substantial laser damage.
A Light Sabre inflicts moderate laser-type damage.
A Missile Launcher does substantial damage in a large blast area.
Mr. Clean is especially effective against slimes, molds, etc.
A Pepper Shaker can be a grenade, and makes targets sneeze.
A Phaser can stun (putting enemy to sleep) or kill (doing heat damage).
Raid is particularly effective against insects.
A Salt Shaker can be a grenade, but is only useful on Slugs-like things.
A Shock Rod does modest electrical damage.
A Shotgun does substantial kinetic damage.
Silly String will immobilize a target.
A Squirt Gun does minimal damage except against Fire Ants, Phoenixes, etc.
A Staple Gun does minimal kinetic damage.
A Stun Gun will paralyze a target.
A Tickle Feather Gun (from the UnderDog show) inflicts tremendous damage.
A Weedeater is effective against plants.
B. Large Tech Devices:
A Bulletproof Suit lowers your AC and reduces damage from kinetic attacks
A Cabinet is useless
A Camoflage Suit makes you somewhat harder to detect
A Cigarette Machine is useless
A Cloaking Device renders you temporarily invisible
A Computer Workstation can reveal a plethota of useful information
A Cyclotron just might win you the Nobel Prize in physics
A Dialysis Machine will cure you and remove poison effects, tapeworms, etc
A Displacer allows you to teleport over short distances
A Golf Cart provides transportation at a faster pace than walking
A Home Movie Projector will put creatures to sleep
A Hovercraft provides very fast transportation over any terrain
A Jackhammer can blast through walls, and is an effective weapon
A Jetpack gives rapid movement for short periods of time
A Kayak can be used to move through water
A Kevorkian Machine is useless
A Laser Printer is useless
A Leafblower is useless
A Liposuction Device will remove an udder
A Microwave Oven can prematurely ripen berries, and makes food tastier
A Neutron Suit irradiates nearby critters each turn but hurts you somewhat
A Pinstripe Suit gives added influence over robots when an ID card is used
A Pogo Stick provides an alternative form of transportation
A Porta-Potty is useless
A Prosthetic Leg is useless
A Radiation Suit will reduce the damage caused by radiation
A Reflective Suit will reduce the damage caused by lasers
A Repulsion Generator will prevent creatures from moving next to you.
Creatures already next to you can continue to attack
A Rubber Raft can be used to move through water
A Safe will protect up to 10 items, and can be left outside of castles
A Sousaphone can make critters stand still, run away, become confused, etc
A Still will distill berries to nectar, and nectar to extract
A Tent will allow you to sleep in relative safety outdoors at night
A Thermal Suit will reduce the damage caused by heat and cold
A TK-5 AntiTank Gun is an extremely effective long-range weapon
A Transmogrifier will polymorph creatures, and can change berry types
A Wetsuit allows water movement, and will reduce acid and shock damage
A Wide Screen TV can map levels in some of the special castles
_________________________________________________________________________
5. CREATURES
This is a brief overview of the creatures found in AlphaMan.
Name Hit dice Attack type* Damage Resist** Susceptible***
-------- --------- ----------- ------ --------- -----------
A. Creatures found anywhere -----------------------------------------
Wimpy critter 1 Bite 1-3
Housecat 1 Bite/Claws 2-9 h,c m
Centipede 1 Poison I 1-4 1,s
Snail 1 Mental Blast 2-6 e a
Warthog 2 Life Leech 1-3 l
Owl 1 Bite/Claws 2-9 m e
Daffodil 2 Spores 1-5 l,b,s r
Asparagus 3 Radiation 1-5 p,r,b,s l
Dung Beetle 3 Poop Out 0 a p
Fire Ant 1 Heat 1-5 g c
Woodpecker 1 Bite 2-12 p
Gas Spore 1 Darts 2-6 m,r,s
Gas Spores cause explosion damage when they are killed.
Dragonfly 2 Cold 2-14 p,e a
Skunk 3 Nausea 0 k
Chameleon 3 Bite 1-6 i,1
Boa 3 Constrict 2-6 p,r,e,a
Porcupine 2 Quills 2-6 q4 l
Lotus 2 Confusion 0 m,b,s s
Crunchberry Beast 4 Eat Berries 0 l,s
Viper 3 Poison II 1-4 e c
Venetian 5 Blind 0 l,b k
Flying Fish 5 Radiation 3-15 c,a l
Rosebush 5 Attraction 0 k,q14,s,b
Zapweed 4 Electricity 2-16 m,e,k h
Mantis 6 Mental Blast 4-12 l,a
Japanese Beetle 3 Steal Tech 0 e m
Mr. Potato Head 8 hp Bite 2-12
Mr. Potato Head takes only 1 hp damage from any attack.
Sunflower 5 Laser 3-12 g,p a
Ragweed 3 Sneeze 0 l,s p
Killer Bee 2 Poison III 2-4 e
Python 10 Constriction 6-18 c,1 r
Vulture 7 Life Leech 2-12 h,m c
Huge Cockroach 4 Radiation 4-20 k
Cockroaches, after being exposed to an particular attack type,
become resistant to it.
Sandman 1 Cause Slumber 0
Pryor 8 Acid 3-18 1 a,h
The Pryor can burst into flames, causing substantial heat damage
Spitting Cobra 4 Poison II 2-8 r m
Goat 5 Eat Items 0
Ice Wolf 9 Cold 3-21 c,1 h
Rot Fungus 8 Damage Armor 0 k,a,q4,b e
Pokey 10 Bite 4-24 c
Gumby 12 Mental Blast 8-32 c
Tapeworm 2 Special 0 4 p
Tapeworms lead to increased hunger if they hit
Slug 7 Acid 4-24 k,a,m s
Cheetah 9 Laser 4-16 r,h,g
Tortoise 9 Bite 3-9 r,c l
Venus Flytrap 11 Attract,Constrict 6-18 e,p r
the Blob 10 Acid 5-30 k,b c
Grizzly Bear 14 Bite/Claws 4-24 h a
Bush 18 Life Leech 2-10 m
Quayle 15 Bite 1-6 e,r,h,c,l,1,m,p
The Quayle only appears if the Bush has been defeated
Rhinocerous 14 Gore 7-42 a,r,p h
Giant Tarantula 11 Poison I 9-36 3 e
Phoenix 7 Heat 6-30 h c
When defeated, the Phoenix may rise from its ashes
Scorpion 10 Poison II 4-16 a,l r
Mastodon 22 Trample 6-42 c
Berserk Robot apprx 15 Electricity apprx 4-32 r,c,m,p,s e
Black Widow 10 Poison III 5-20 r e
Sabretooth Tiger 17 Bite/Claws 7-42 r,h
Mosquito 11 Life Leech 2-20 h,m k
Anklyosaurus 15 Bite 6-36 1 r
Triceratops 21 Gore 6-36 r,p a
Polar Worm 25 Cold 8-56 c,3 h
Tyrannosaurus 30 Bite 12-72 c p
King Kong 40 Trample 14-84 t
Rodan 35 Bite 14-84 l
Godzilla 45 Radiation 15-75 r,m e
B. Creatures found in Castles --------------------------------------
Slime 1 Damage Armor 0 c,b h
Ooze 1 Heat 1-5 k,h,b c
Vampire Bat 2 Energy Drain 0 l
Repair Droid apprx 3 Electricity apprx 2-12 m,p,s e
Maggot 3 Acid 1-6 1 p
Maggots may become Flies, which regenerate faster and do more damage
Giant Rat 3 Bite 1-6 r h,p
Purple Mold 3 Nausea 0 k,b r
Ghoul 8 Bite 2-12 r,c
Defense Droid apprx 6 Radiation apprx 2-10 r,m,p,s e
Gray Mold 9 Spores variable k,a,s,b h,s
Gray Mold spores interfere with your healing, and do more damage the
more there are in your system.
Phantom 7 Cold 2-14 m
Wolf Spider 7 Poison III 3-10 p m
Enzyme Fungus 3 Acid 4-24 k,a,m,q10,b h,s
Volte 6 Electricity 5-40 k,e,s a
Brown Recluse 9 Poison II 4-16 1 r
Security Droid apprx 10 Laser apprx 5-18 a,c,m,p,s e
Brain Beast 5 Life Leech 1-5 m a
Brain Beasts can attack through walls.
War Droid 15 Various 9-51 a,r,c,m,p,3,s e
C. Creatures found in Forest --------------------------------------
Tree Frog 1 Poison I 1-4 a
Stranglevine 2 Constriction 1-3 p
Poison Ivy 2 Poison II 3-12 h,d,i
Toadstool 5 Nausea 0 p,s,b k
Termite 1 Eat Items 0 h,p
Termites eat anything they step on
Mushroom 2 Energy Drain 0 m,s,b a,c
Panther 5 Electricity 4-24 e r
Moose 14 Trample 4-24
Jaguar 11 Radiation 4-20 r e
Deadly Nightshade 5 Poison II 4-16 m,p l,s
Algore 5 -none- m,i e,s
Trees and bushes grow profusely around an Algore
Death Fern 7 Heat 4-20 h,i s
Bigfoot 13 Trample 4-24 1 m
Komodo Dragon 15 Bite 6-36 c
Willow 6 Constrict 7-21 g,p,s s
Raptor 8 Bite/Claws 5-30 c
Giant Sloth 15 Cold 6 6-42 h
D. Creatures found in Swamp --------------------------------------
Toad 2 Radiation 2-10 c,l h
Leech 1 Energy Drain 0 a,i p
Slime Mold 2 Acid 1-6 k,a,b p
Giant Crab 3 Electricity 1-8 e,r m
Alligator 5 Bite 3-18 p l
Lungfish 6 Laser 3-12 e a
Bombadier Beetle 4 Damage Armor 0 a,e r
Tick 2 Life Leech 2-8 i s
Giant Puffball 1 hp -none- i
Puffballs explode if touched
Dartweed 3 Poison III 3-12 l r,c
Hippopotamus 13 Bite 4-24 r h
Giant Worm 2 Bite 1-6
Giant Worms split into parts if hit by weaponry
Crocodile 10 Mental Blast 12-36 c m
Water Moccasin 6 Poison II 4-14 p
Snapping Turtle 9 Bite 5-30 c h,l
Pteradactyl 9 Radiation 6-30 r,m
Bog Horror 16 Constrict 3-30 a,h,c,1,m,i p
E. Creatures found in Plains --------------------------------------
Prairie Chicken 1 Bite 1-3 k h
Lizard 2 Heat 1-5 h,l e
Antelope 3 Trample 1-6 h,l
Moth 4 Life Leech 1-6 m a
Gazelle 5 Laser 2-6 l
Stink Bug 6 Nausea 0 a m
Armadillo 6 Bite/Claws 3-9 p
Blue Jay 4 Mental Blast 6-18 e
Laughing Hyena 4 Tickle 2-8 t
Fox 5 Eat Food 0 1 m
Giant Wasp 6 Poison III 3-10 r h,l
Locust 3 Bite 1-3 k,a,e,r,h,c,l,m,p
Coral Snake 5 Poison II 4-16 h
Bunny Rabbit 4 Bite 1-6 p
Bunnies reproduce.
Voracious Shrew 2 Bite 7-42
Cactus 8 Darts 5-30 r,g,q14,s,b c
Giraffe 16 Trample 6-42
F. Creatures found in Water --------------------------------------
Kelp 2 Constrict 1-3 c
Sardine 1 Bite 1-3 a e
Electric Eel 2 Electricity 1-8 e
Seagull 3 Poop Out 0 1 m
Lobster 2 Claws 2-12 l h
Lamprey 1 Life Leech 1-4
Barracuda 3 Bite 2-12 a
Sunfish 3 Laser 2-8 l p
Urchin 3 Darts 5-15 q10,b
Jellyfish 4 Poison II,III 3-12 a,3,s,b r,s
Squid 5 Blind,Constrict 2-6 c k
Fire Coral 1 Heat 4-20 k,s,b l
Trilobite 5 Radiation 3-15 e m
Red Snapper 4 Bite 5-30
Nauteloid 7 Mental Blast 4-12
Sting Ray 7 Poison III 3-12 p
Octopus 6 Constrict 7-21 a
Moray Eel 9 Bite 3-18
Narwal 10 Gore 4-24 c
Hammerhead Shark 10 Bite 5-30 m
Killer Whale 22 Bite 6-36 c
Great White Shark 15 Bite 6-36 m
Plesiosaurus 25 Bite 7-42 r
* Attack types:
Radiation damage is multiplied by 10 / (your radiation resistance)
Poison damage is multiplied by 10 / (your constitution)
Poison I simply does damage
Poison II has a chance to reduce your strength
Poison III has a chance to reduce your constitution and hit points
Mental Blast, Life Leech damage is multiplied by 10 / (your mental resistance)
Constrict attacks, once they hit, do damage every round thereafter
Energy Drain attacks can quench mutations or drain experience points
Some damage amounts are approximate; for example, a Cactus has 5 separate
dart attacks for 1-6 each, with differing ranges, so it will only do the
maximum of 5-30 at close range. Mental Blast damage amounts can vary widely
from those given. Damage Armor and Steal/Eat attacks may do some damage if
they don't successfully damage armor / steal an item.
** resistances:
a: resist acid
b: resist blindness
c: resist cold
e: resist electricity
g: grow from heat or laser attacks
h: resist heat
i: invisible
k: take 1/3 damage from kinetic attacks
l: resist lasers
m: resist mental attacks
p: resist poison
r: resist radiation
s: resist sneezing/burping
1: regenerate 1 hit point/round
3: regenerate 3 hit points/round
4: regenerate 4 hit points/round
q4: quills or shock if touched for 1-4 points damage
q10: quills or shock if touched for 1-10 points damage
q14: quills or shock if touched for 2-14 points damage
*** susceptibilities
a: double damage from acid
b: double damage from blindness
c: double damage from cold
e: double damage from electricity
h: double damage from heat
k: double damage from kinetic
l: double damage from lasers
m: double damage from mental attacks
p: double damage from poison
r: double damage from radiation
s: sluggish (only move every other round)
_________________________________________________________________________
6. CASTLES
Your overall mission is to save the world from the Grinch and his nerve
toxin. You must complete a series of missions in order to accomplish this
goal. You do not need to visit these castles in any particular order,
despite the suggestions of the Tape Recorders you'll find along the way.
You will usually need to visit 5 different castles in order to properly equip
yourself. Specifically, you'll need the following items:
1. A map from the Munsters in order to locate the Grinch's hidden castle.
All the Munsters are dangerous foes, Grampa in particular. You need to
use the teleport trap somewhere in the room with Grampa to get to the
sealed room containing the map (as well as another teleport trap). To
render Grampa harmless, find the Green Gregre berry on Level -6 of the
castle, the level before you get to the Munsters level. This berry will
turn you green for a short period of time, and all the Munsters will
mistake you for Herman and consequently ignore you.
Note: a character with Heightened Vision shouldn't have to visit this
castle at all. Also, a JackHammer or Molecular Disruption makes the
Gregre Berry unnecessary.
2. Buzz Aldrin's Space Suit to protect yourself from the radiation which
protects the Grinch's castle. Buzz is protected by a variety of losers,
the most dangerous of which are the 9 Chicago Cubs. If you are wearing
the Mets Hat which you can find in a secret room soon after entering
Buzz's level, the Cubs are much less harmful. Buzz is on the deepest
level in his castle.
3. Elvis' Blue Suede Shoes so you can cross the bottomless chasm that
surrounds the Grinch's castle. Elvis is a good guy like you, but you
have to get rid of all the Elvis Impersonators on his castle level with
him before he'll give you the goods. You can tell the difference between
the real and fake Elvii be noting that when you wake them up and they
sing the line of an Elvis song, only Elvis gets the words right. If you
wake the real Elvis before finishing off the Impersonators (ie, he
doesn't immediately give you the stuff), run away from him and he'll fall
back asleep fairly soon. Elvis's special level may be on the top-most
or the bottom-most level; only a Tricorder can tell you ahead of time
where he is.
4. Donald Trump's Presidential ID card to get through the locked door into
the castle. Donald, Marla and Ivana all have nasty Life Leech attacks.
If possible, try to have a MindWeb Generator or some Mental Resistance-
enhancing berries available. Donald is easier to deal with if you can
find and defeat Ivana first (Donald tends to doze off like Elvis, by the
way) and get her blonde wig (which will raise your Mental Resistance and
lower your Intelligence by 15 while wearing it). Donald is on the
highest level of his castle.
5. Gilligan's Keptibora serum to protect yourself from the nerve toxin which
permeates the Grinch's castle. Getting to this castle can be tricky, and
if you find a WetSuit, Kayak, Rubber Raft, Hovercraft, Jetpack or
Transporter Monolith, try to proceed directly to this castle, which is
always located in the middle of a body of water. Gilligan is very
dangerous to your belongings. You should try to find and defeat the
Skipper to retrieve his hat, which you'll hit Gilligan with. Before
going after Gilligan, it is wise to drop all your belongings since
Gilligan has a knack for breaking things. If you used a Transporter
Monolith to get to this castle, be sure to grab the Bamboo Raft for
return transportation. Save the Keptibora Serum until you are ready to
go to the Grinch's castle, since it only lasts for a single day. Gilligan
is on the highest level of his castle.
The Grinch's castle can be very dangerous if you're unprepared. The
Grinch's special level is either on the top-most or bottom-most level;
unless you have a Tricorder, you'll have a 50-50 chance of going the wrong
way. Tech items won't work on the Grinch's special level, so begin collecting
useful berries on your way there. Since the Grinch is surrounded by nasty
guardians, berries like Invisibility, Fright-Inducing, Speed-Enhancing are
especially useful. You may want to save a Detox berry, too. Don't try to
defeat the Grinch in out-and-out combat; with his dying gasp he'll trigger
the release of the nerve toxin, sending doom upon the remains of the Earth.
Instead, go to the castle level furthest from the Grinch, (ie, the top-most
floor if he is on the bottom-most floor) where you can find a can of Roast
Beast. Tossing this at the Grinch will cause his heart to grow 3 sizes, and
he'll destroy the toxin.

30
ALPMAN11.TXT Normal file
View File

@ -0,0 +1,30 @@
alpman11.zip: AlphaMan version 1.1 for MS-DOS, by Jeff Olson. A roleplaying
game set in post-holocaust Earth. You play a mutated human who must use a
variety of technological relics and mutated berries to save the world from
the Grinch's evil schemes. Occasional humorous twists. Game uses colorful
text-based graphics in the spirit of NetHack. Requires 640K, color.
Version 1.01 added a "fast fight" mode that speeds up combat, added 2 easier
modes of play for beginners, and made food more plentiful.
Version 1.02 fixed a bug that caused unpredictable effects when one went
from "very hungry" to "famished", and improved the effects of the mutations
Invisibility, Quills and Heightened Endurance, to make them more powerful.
Version 1.03 fixed saved filename convention so the game no longer dies when
trying to save games with character names that include odd characters
like ? and +.
Version 1.1 allows the game to remember recent castle and lair levels, so
remapping is no longer necessary. For example, most dropped items will
still be there when you return to a place already visited.
Entering 'alphaman somename' will now generate a new character if the saved
file somename.alf doesn't exist.
There are now separate "Halls of the Dead" for the different difficulty
levels, and experience bonuses at the end of the game for each "subquest"
successfully completed.
The Main Map key (F5) now shows regions where you've visited (useful for
looking for Monoliths).
A few new devices - Flash Grenade, UV Helmet, Geiger Counter, Neutron Suit,
Radar Detector.

7
BACKUP.BAT Normal file
View File

@ -0,0 +1,7 @@
copy *.* recent.bak
cd recent.bak
del *.obj
del *.exe
del *.alf
del *.sav

155
BRESNHAM.C Normal file
View File

@ -0,0 +1,155 @@
/*
** Public Domain mode 13h Bresenham line/circle algorithms
** By Brian Dessent
**
** Written for Borland, modified for others by Bob Stout
*/
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <conio.h>
#include <time.h> /* for randomize */
#ifndef __TURBOC__
#define random(num) (int)(((rand())*(long)(num))/(((long)RAND_MAX)+1))
#define randomize() srand((unsigned)time(NULL)|1)
#else
#endif
#ifndef MK_FP
#define MK_FP(seg,offset) \
((void far *)(((unsigned long)(seg)<<16) | (unsigned)(offset)))
#endif
#define SCREEN_WIDTH 320
#define SCREEN_HEIGTH 200
#define MAX_X (SCREEN_WIDTH-1)
#define MAX_Y (SCREEN_HEIGTH-1)
/* prototypes */
void setmode(int mode);
void plotdot(int x, int y, char c);
void bresenham_line(int x, int y, int x2, int y2, char c);
void bresenham_circle(int xc, int yc, int r, char c);
void main(void);
/* code begins */
/* uses BIOS to set video mode */
void setmode(int mode)
{
union REGS r;
r.x.ax = mode;
int86(0x10, &r, &r);
}
/* plots a dot at (x, y) with color c */
void plotdot(int x, int y, char c)
{
register char far *addr;
if(x < 0 || x > MAX_X || y < 0 || y > MAX_Y)
return;
addr = MK_FP(0xa000, (SCREEN_WIDTH * y) + x);
*addr = c;
}
/* draws a line from (x, y) to (x2, y2) in color c */
void bresenham_line(int x, int y, int x2, int y2, char c)
{
int i, steep = 0, sx, sy, dx, dy, e;
dx = abs(x2 - x);
sx = ((x2 - x) > 0) ? 1 : -1;
dy = abs(y2 - y);
sy = ((y2 - y) > 0) ? 1 : -1;
if(dy > dx)
{
steep = 1;
x ^= y; /* swap x and y */
y ^= x;
x ^= y;
dx ^= dy; /* swap dx and dy */
dy ^= dx;
dx ^= dy;
sx ^= sy; /* swap sx and sy */
sy ^= sx;
sx ^= sy;
}
e = 2 * dy - dx;
for(i = 0;i < dx;i++)
{
if(steep)
plotdot(y, x, c);
else plotdot(x, y, c);
while(e >= 0)
{
y += sy;
e -= 2 * dx;
}
x += sx;
e += 2 * dy;
}
plotdot(x2, y2, c);
}
/* draws a circle at (xc, yc) with radius r in color c
**
** note: the scaling factor of (SCREEN_WIDTH / SCREEN_HEIGTH) is used when
** updating d. This makes round circles. If you want ellipses, you can
** modify that ratio.
*/
void bresenham_circle(int xc, int yc, int r, char c)
{
int x = 0, y = r, d = 2 * (1 - r);
while(y > 0)
{
plotdot(xc + x, yc + y, c);
plotdot(xc + x, yc - y, c);
plotdot(xc - x, yc + y, c);
plotdot(xc - x, yc - y, c);
if(d + y > 0)
{
y -= 1;
d -= (2 * y * SCREEN_WIDTH / SCREEN_HEIGTH) - 1;
}
if(x > d)
{
x += 1;
d += (2 * x) + 1;
}
}
}
/* draws random lines and circles until a key is pressed in mode 13h */
/* (draws in colors 0 - 63 only) */
void main(void)
{
int i=0;
randomize();
setmode(0x13);
while(!kbhit())
{
bresenham_line(random(SCREEN_WIDTH), random(SCREEN_HEIGTH),
random(SCREEN_WIDTH), random(SCREEN_HEIGTH), i = ++i % 64);
bresenham_circle(random(SCREEN_WIDTH), random(SCREEN_HEIGTH),
random(50), i = ++i % 64);
}
getch();
setmode(0x03); /* set to color text mode, clearing screen */
}

24
COMALPHA.BAT Normal file
View File

@ -0,0 +1,24 @@
del a1.obj
bc a1 /o /s;
del a2.obj
bc a2 /o /s;
del a3.obj
bc a3 /o /s;
del a4.obj
bc a4 /o /s;
del a5.obj
bc a5 /o /s;
del a6.obj
bc a6 /o /s;
del a7.obj
bc a7 /o /s;
del a8.obj
bc a8 /o /s;
\qc25\bin\qlink /CP:1 /f /packc /noe /ex /st:10000 a1+a2+a3+a4+a5+a6+a7+a8+alpclib;
pause
del alphaman.exe
del alpman11.zip
rename a1.exe alphaman.exe
pkzip alpman11 alphaman.exe alphaman.1 alphaman.2 alphaman.3 alphaman.4 alphaman.5 alphaman.6 readme.txt fixes.txt
call d2 a*.exe
call d2 a*.zip

1
COMCLIB.BAT Normal file
View File

@ -0,0 +1 @@
\qc25\bin\qcl /c /Ox /AM /FPi /W3 alpclib.c

BIN
CREALTER.BAS Normal file

Binary file not shown.

85
CREALTER.BAS.txt Normal file
View File

@ -0,0 +1,85 @@
' Copyright (c) 1995 Jeffrey R. Olson
'
' Permission is hereby granted, free of charge, to any person obtaining a copy
' of this software and associated documentation files (the "Software"), to deal
' in the Software without restriction, including without limitation the rights
' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all
' copies or substantial portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
' SOFTWARE.
DECLARE SUB randum ()
DECLARE SUB modcreat (c$, cn$)
DEFINT A-Z
DIM SHARED att(5), btt(5), typ(5), str(5), tohit(5), rng(5)
DIM SHARED hd, mov, ac, sym, fc, defense, expr, creat$
OPEN "alpha.cre" FOR INPUT AS #1
OPEN "alphaman.2" FOR RANDOM AS #2 LEN = 50
OPEN "crelist" FOR OUTPUT AS #3
FIELD #2, 20 AS nam$, 2 AS a$, 2 AS b$, 2 AS c$, 2 AS d$, 2 AS e$, 2 AS a1$, 2 AS b1$, 2 AS a2$, 2 AS b2$, 2 AS a3$, 2 AS b3$, 2 AS a4$, 2 AS b4$, 2 AS a5$, 2 AS b5$
numcre = 0: CLS
crecount = 1
WHILE NOT EOF(1)
INPUT #1, creat$
PRINT #3, creat$; : crecount = crecount + 1
IF crecount = 5 THEN
crecount = 1: PRINT #3,
ELSE
PRINT #3, TAB(20 * (crecount - 1));
END IF
IF LEFT$(LTRIM$(creat$), 1) = CHR$(39) THEN GOTO fin
CALL modcreat(creat$, creatnew$)
LSET nam$ = creatnew$
numcre = numcre + 1: PRINT creat$; " ";
INPUT #1, a, defense, c, susc, expr
IF defense AND susc AND (1 + 2 + 4 + 8 + 16 + 32 + 64 + 512 + 1024) THEN
COLOR 12: PRINT "error?": COLOR 7
END IF
LSET a$ = MKI$(a): LSET b$ = MKI$(defense): LSET c$ = MKI$(c)
LSET d$ = MKI$(susc): LSET e$ = MKI$(expr)
FOR i = 1 TO 5: INPUT #1, att(i), btt(i): NEXT i
LSET a1$ = MKI$(att(1)): LSET b1$ = MKI$(btt(1))
LSET a2$ = MKI$(att(2)): LSET b2$ = MKI$(btt(2))
LSET a3$ = MKI$(att(3)): LSET b3$ = MKI$(btt(3))
LSET a4$ = MKI$(att(4)): LSET b4$ = MKI$(btt(4))
LSET a5$ = MKI$(att(5)): LSET b5$ = MKI$(btt(5))
PUT #2, numcre
hd = INT(a / 10) MOD 1000: mov = INT(a / 10000)
ac = a MOD 10
sym = c MOD 1000: fc = INT(c / 1000)
IF fc = 0 THEN bc = 1 ELSE bc = 0
FOR i = 1 TO 5
tohit(i) = att(i) MOD 100: str(i) = INT(att(i) / 100)
rng(i) = btt(i) MOD 100: typ(i) = INT(btt(i) / 100)
NEXT i
WEND
CLOSE
fin:
END
SUB modcreat (c$, cn$)
cn$ = SPACE$(20)
FOR k = 1 TO LEN(c$)
aa = ASC(MID$(c$, k, 1)): aa = aa XOR k * 6
MID$(cn$, k, 1) = CHR$(aa MOD 256)
NEXT
MID$(cn$, LEN(c$) + 1, 1) = CHR$(242)
FOR k = LEN(c$) + 2 TO 20
MID$(cn$, k, 1) = CHR$(INT(RND * 256))
NEXT
END SUB

47
CRELIST Normal file
View File

@ -0,0 +1,47 @@
Wolverine Housecat Centipede Snail
Warthog Owl Daffodil Asparagus
Dung Beetle Fire Ant Woodpecker Gas Spore
Dragonfly Skunk Chameleon Boa
Porcupine Lotus Crunchberry Beast Viper
Venetian Flying Fish Rosebush Zapweed
Mantis Japanese Beetle Mr. Potato Head Sunflower
Ragweed Killer Bee Python Vulture
Huge Cockroach Sandman Pryor Spitting Cobra
Goat Ice Wolf Rot Fungus Pokey
Gumby Tapeworm Slug Cheetah
Tortoise Venus Flytrap the Blob Grizzly Bear
Bush Quayle Rhinocerous Giant Tarantula
Phoenix Scorpion Mastodon Berserk Robot
Black Widow Sabretooth Tiger Mosquito Anklyosaurus
Triceratops Polar Worm Tyrannosaurus King Kong
Rodan Godzilla Slime Ooze
Vampire Bat Repair Droid Maggot Giant Rat
Purple Mold Ghoul Defense Droid Gray Mold
Phantom Wolf Spider Enzyme Fungus Volte
Brown Recluse Security Droid Brain Beast War Droid
Tree Frog Stranglevine Poison Ivy Toadstool
Termite Mushroom Panther Moose
Jaguar Deadly Nightshade Algore Death Fern
Bigfoot Komodo Dragon Willow Raptor
Giant Sloth Toad Leech Slime Mold
Giant Crab Alligator Lungfish Bombadier Beetle
Tick Giant Puffball Dartweed Hippopotamus
Giant Worm Crocodile Water Moccasin Snapping Turtle
Pteradactyl Bog Horror Prairie Chicken Lizard
Antelope Moth Gazelle Stink Bug
Armadillo Blue Jay Laughing Hyena Fox
Giant Wasp Locust Coral Snake Bunny Rabbit
Voracious Shrew Cactus Giraffe Kelp
Sardine Electric Eel Seagull Lobster
Lamprey Barracuda Sunfish Urchin
Jellyfish Squid Fire Coral Trilobite
Red Snapper Nauteloid Sting Ray Octopus
Moray Eel Narwal Hammerhead Shark Killer Whale
Great White Shark Plesiosaurus Big Hairy Spider Gilligan
the Skipper the Professor Ginger Mary Ann
Mr. Howell Mrs. Howell Herman Lily
Grandpa Eddie Marilyn Spot
Igor Uncle Fester Elvis Elvis
Buzz Aldrin Zola Bud Mary Decker Gary Hart
Saddam Hussein Chicago Cub Donald Trump Ivana
Marla the Grinch Max '10000*move+10*HD+AC+

BIN
CRETEST.BAS Normal file

Binary file not shown.

120
CRETEST.BAS.txt Normal file
View File

@ -0,0 +1,120 @@
' Copyright (c) 1995 Jeffrey R. Olson
'
' Permission is hereby granted, free of charge, to any person obtaining a copy
' of this software and associated documentation files (the "Software"), to deal
' in the Software without restriction, including without limitation the rights
' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all
' copies or substantial portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
' SOFTWARE.
DECLARE SUB randum ()
DECLARE SUB printcre (n%)
DECLARE SUB modcreat (c$, cn$)
DEFINT A-Z
DIM SHARED att(5), btt(5), typ(5), str(5), tohit(5), rng(5), atk$(27)
DIM SHARED atkcnt(27), defcnt(15), movcnt(4)
DIM SHARED hd, mov, ac, sym, fc, bc, defense, expr, creat$
DATA Kinetic, Radiation, Poison 1, Poison 2, Poison 3, Acid, Laser
DATA Mental Blast, Electricity, Heat, Cold, Tentical, Life Leech
DATA Steal, Tickle,"Damage Armor","Poop Out",Spore,Trample,Aroma,Drain
DATA Sickening,Hmm,Help,Gore,Special,Snooze
FOR i = 1 TO 27: READ atk$(i): NEXT
CLS
CALL randum
COLOR 9
CLS
END
SUB printcre (numcre)
CLS
COLOR 15: LOCATE 5, 5: PRINT creat$; SPACE$(4);
COLOR fc, bc: PRINT " "; CHR$(sym); " ";
COLOR 14, 0: PRINT USING " Exp : ####"; expr;
COLOR 15: PRINT USING " Level :###"; INT((numcre + 1) / 4)
COLOR 9: LOCATE 7, 5
PRINT USING "Hit dice : ### Movement rate : ## AC :##"; hd, mov, ac
COLOR 3: row = 9
FOR i = 1 TO 5
IF att(i) <> 0 THEN
LOCATE row, 5: PRINT USING "& attack, Strength : ##"; atk$(typ(i)), str(i)
LOCATE row + 1, 5: PRINT USING "Range : ## To Hit : ##"; rng(i), tohit(i)
row = row + 3
END IF
NEXT i
COLOR 13: LOCATE 9, 55: PRINT "Resistances"
COLOR 5: row = 10
FOR i = 0 TO 13: j = 2 ^ i
IF (defense AND j) THEN
defcnt(i) = defcnt(i) + 1
LOCATE row, 55: row = row + 1
SELECT CASE i
CASE 0: PRINT "1/3 from Kinetic"
CASE 1: PRINT "Acid"
CASE 2: PRINT "Electricity"
CASE 3: PRINT "Radiation"
CASE 4: PRINT "Heat"
CASE 5: PRINT "Cold"
CASE 6: PRINT "Lasers"
CASE 7: PRINT "Grow from heat/laser"
CASE 8: PRINT "Regenerate 1/turn"
CASE 9: PRINT "Mental Attacks"
CASE 10: PRINT "Poison"
CASE 11: PRINT "Regenerate 3/turn"
CASE 12: PRINT "Quills/shock for 1-4"
CASE 13: PRINT "Quills/shock for 1-10"
CASE ELSE: PRINT "oops"
END SELECT
END IF
NEXT
END SUB
SUB randum
DIM cs AS STRING * 20
OPEN "alphaman.2" FOR RANDOM AS #2 LEN = 50
FIELD #2, 20 AS nam$, 2 AS a$, 2 AS b$, 2 AS c$, 2 AS d$, 2 AS e$, 2 AS a1$, 2 AS b1$, 2 AS a2$, 2 AS b2$, 2 AS a3$, 2 AS b3$, 2 AS a4$, 2 AS b4$, 2 AS a5$, 2 AS b5$
ziz: LOCATE 25, 1: INPUT ; "Enter creature number (-1 to end) : ", num
IF num = 0 THEN numcre = numcre + 1 ELSE IF num < 0 THEN EXIT SUB ELSE numcre = num
GET #2, numcre: cs = nam$: creat$ = SPACE$(20)
k = 1: stopit = 0
DO
aa = ASC(MID$(cs, k, 1))
IF aa = 242 THEN stopit = -1 ELSE aa = aa XOR k * 6: MID$(creat$, k, 1) = CHR$(aa MOD 256)
k = k + 1
LOOP UNTIL stopit
ax = CVI(a$): defense = CVI(b$): c = CVI(c$): dum = CVI(d$): expr = CVI(e$)
att(1) = CVI(a1$): btt(1) = CVI(b1$)
att(2) = CVI(a2$): btt(2) = CVI(b2$)
att(3) = CVI(a3$): btt(3) = CVI(b3$)
att(4) = CVI(a4$): btt(4) = CVI(b4$)
att(5) = CVI(a5$): btt(5) = CVI(b5$)
hd = INT(ax / 10) MOD 1000: mov = INT(ax / 10000)
ac = ax MOD 10
IF (defense AND 16384) THEN ac = ac - 10
sym = c MOD 1000: fc = INT(c / 1000)
IF fc = 0 THEN bc = 1 ELSE bc = 0
FOR i = 1 TO 5
tohit(i) = att(i) MOD 100: str(i) = INT(att(i) / 100)
rng(i) = btt(i) MOD 100: typ(i) = INT(btt(i) / 100)
NEXT i
atkcnt(typ(1)) = atkcnt(typ(1)) + 1
movcnt(mov) = movcnt(mov) + 1
CALL printcre(numcre)
GOTO ziz
END SUB

BIN
CREVIEW.BAS Normal file

Binary file not shown.

418
CREVIEW.BAS.txt Normal file
View File

@ -0,0 +1,418 @@
' Copyright (c) 1995 Jeffrey R. Olson
'
' Permission is hereby granted, free of charge, to any person obtaining a copy
' of this software and associated documentation files (the "Software"), to deal
' in the Software without restriction, including without limitation the rights
' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all
' copies or substantial portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
' SOFTWARE.
DECLARE FUNCTION lev% (n%)
DECLARE FUNCTION exper! (n%)
DEFINT A-Z
' $INCLUDE: 'alpha.dec'
DIM att(0 TO 5), btt(0 TO 5), typ(0 TO 5), str(0 TO 5)
DIM tohit(0 TO 5), rng(0 TO 5), atk$(1 TO 27), sus$(0 TO 15)
DIM shortsus$(0 TO 15)
DIM atkcnt(0 TO 27), defcnt(0 TO 15), movcnt(0 TO 7), susccnt(0 TO 15)
DIM letters(1 TO 26, 0 TO 1)
DATA Kinetic, Radiation, Poison 1, Poison 2, Poison 3, Acid, Laser
DATA Mental Blast, Electricity, Heat, Cold, Tentical, Life Leech
DATA Steal, Tickle, "Damage Armor", "Poop Out", Spore, Trample, Aroma, Drain
DATA Blinding, Sickening, Help, Gore, Special, Snooze
FOR i = 1 TO 27: READ atk$(i): NEXT
DATA Kinetic, Acid, Electricity, Radiation, Heat, Cold, Lasers, Tickling
DATA "Always Asleep", "Mental Attacks", Poison, "Resist Sneeze"
DATA "Resist Blind", "-not used-", "ac+10", "Sluggish"
FOR i = 0 TO 15: READ sus$(i): NEXT
DATA k, a, e, r, h, c, l, t, z, m, p, "", "", "", "", "S"
FOR i = 0 TO 15: READ shortsus$(i): NEXT
OPEN "alpha.cre" FOR INPUT AS #1
OPEN "creature.txt" FOR OUTPUT AS #2
numcre = 0
'FOR l = 1 TO 10
WHILE NOT EOF(1)
CLS
INPUT #1, creat$
IF LEFT$(LTRIM$(creat$), 1) = CHR$(39) THEN GOTO fin
numcre = numcre + 1
INPUT #1, a, defense, c, susc, expr
FOR i = 1 TO 5: INPUT #1, att(i), btt(i): NEXT i
hd = (a \ 10) MOD 1000: mov = a \ 10000
ac = a MOD 10
IF (defense AND 16384) THEN ac = ac - 10
IF (susc AND 16384) THEN ac = ac + 10
IF (defense AND -32768) THEN mov = mov + 4
sym = c MOD 1000: fc = c \ 1000
IF fc = 0 THEN bc = 1 ELSE bc = 0
IF sym < 97 THEN casepos = 0 ELSE casepos = 1
letpos = sym - 64 - 32 * casepos
IF fc < 15 THEN bitpos = 2 ^ fc ELSE bitpos = -2 ^ fc
IF letters(letpos, casepos) AND bitpos THEN
LOCATE 22, 1: COLOR 13: PRINT "*** Critter symbol/color combo already used! ***";
ELSE
letters(letpos, casepos) = letters(letpos, casepos) OR bitpos
END IF
FOR i = 1 TO 5
tohit(i) = att(i) MOD 100: str(i) = att(i) \ 100
rng(i) = btt(i) MOD 100: typ(i) = btt(i) \ 100
NEXT i
atkcnt(typ(1)) = atkcnt(typ(1)) + 1
movcnt(mov) = movcnt(mov) + 1
COLOR 15: LOCATE 5, 5: PRINT creat$; SPACE$(4);
COLOR fc, bc: PRINT " "; CHR$(sym); " ";
COLOR 14, 0: PRINT USING " Exp :#### (####.##)"; expr; exper(numcre);
COLOR 15: PRINT USING " Level :###"; lev(numcre)
COLOR 9: LOCATE 7, 5
PRINT USING "Hit dice :### Movement rate :## AC :##"; hd; mov; ac
COLOR 3: row = 9
PRINT #2, creat$; TAB(19); hd; TAB(27);
FOR i = 1 TO 5
IF att(i) <> 0 THEN
IF i = 1 THEN PRINT #2, atk$(typ(i)); str(i);
LOCATE row, 5: PRINT USING "& attack, Strength :##"; atk$(typ(i)); str(i)
LOCATE row + 1, 5: PRINT USING "Range :## To Hit :##"; rng(i); tohit(i)
row = row + 3
END IF
NEXT i
PRINT #2, TAB(47);
COLOR 13: LOCATE 9, 53: PRINT "Resistances"
COLOR 5: row = 10
FOR i = 0 TO 13
IF (defense AND 2 ^ i) THEN
defcnt(i) = defcnt(i) + 1
LOCATE row, 53: row = row + 1
SELECT CASE i
CASE 0: PRINT "1/3 from Kinetic": PRINT #2, "k ";
CASE 1: PRINT "Acid": PRINT #2, "a ";
CASE 2: PRINT "Electricity": PRINT #2, "e ";
CASE 3: PRINT "Radiation": PRINT #2, "r ";
CASE 4: PRINT "Heat": PRINT #2, "h ";
CASE 5: PRINT "Cold": PRINT #2, "c ";
CASE 6: PRINT "Lasers": PRINT #2, "l ";
CASE 7: PRINT "Grow from heat/laser": PRINT #2, "g ";
CASE 8: PRINT "Regenerate 1/turn": PRINT #2, "1 ";
CASE 11: PRINT "Regenerate 3/turn": PRINT #2, "3 ";
CASE 9: PRINT "Mental Attacks": PRINT #2, "m ";
CASE 10: PRINT "Poison": PRINT #2, "p ";
CASE 12: PRINT "Quills/shock for 1-4": PRINT #2, "q4 ";
CASE 13: PRINT "Quills/shock for 1-10": PRINT #2, "q10 ";
END SELECT
END IF
NEXT
IF susc AND 2 ^ 11 THEN
defcnt(i) = defcnt(i) + 1: LOCATE row, 53: row = row + 1
PRINT "Sneeze/Burp": PRINT #2, "s ";
END IF
IF susc AND 2 ^ 12 THEN
defcnt(i) = defcnt(i) + 1: LOCATE row, 53: row = row + 1
PRINT "Blindness": PRINT #2, "d ";
END IF
PRINT #2, TAB(68);
row = row + 1: COLOR 12: LOCATE row, 53: PRINT "Susceptibilities";
COLOR 4: row = row + 1
FOR i = 0 TO 15
IF (susc AND 2 ^ i) AND (i < 11 OR i > 13) THEN
susccnt(i) = susccnt(i) + 1
IF row <= 25 THEN LOCATE row, 53: row = row + 1
PRINT sus$(i)
PRINT #2, shortsus$(i);
END IF
NEXT
PRINT #2,
LOCATE 23, 10
SELECT CASE numcre
CASE ncreat: PRINT "This is the last regular critter";
CASE ncreat + crecas: PRINT "This is the last castle critter";
CASE ncreat + crecas + crefor: PRINT "This is the last forest critter";
CASE ncreat + crecas + crefor + creswa: PRINT "This is the last swamp critter";
CASE ncreat + crecas + crefor + creswa + crepla: PRINT "This is the last plains critter";
CASE ncreat + crecas + crefor + creswa + crepla + creh2o: PRINT "This is the last water critter";
END SELECT
LOCATE 24, 10
SELECT CASE numcre
CASE wimp: PRINT "Wimpy";
CASE centi: PRINT "Centipede";
CASE snail: PRINT "Snail";
CASE daff: PRINT "daffodil";
CASE aspa: PRINT "asparagus";
CASE ant: PRINT "fire ant";
CASE gspore: PRINT "gas spore";
CASE dfly: PRINT "dragonfly";
CASE lotus: PRINT "lotus";
CASE cb: PRINT "crunchberry beast";
CASE dung: PRINT "dung beetle";
CASE fish: PRINT "flying fish";
CASE rose: PRINT "rosebush";
CASE japb: PRINT "japanese beetle";
CASE mant: PRINT "mantis";
CASE zap: PRINT "zapweed";
CASE mph: PRINT "Mr. potato head";
CASE sunf: PRINT "sunflower";
CASE rweed: PRINT "ragweed";
CASE bee: PRINT "killer bee";
CASE roach: PRINT "roach";
CASE pryor: PRINT "richard pryor";
CASE rotf: PRINT "rotfungus";
CASE pokey: PRINT "pokey";
CASE gumby: PRINT "gumby";
CASE tworm: PRINT "tapeworm";
CASE slug: PRINT "slug";
CASE goat: PRINT "goat";
CASE venus: PRINT "venus flytrap";
CASE blob: PRINT "the blob";
CASE bush: PRINT "Bush";
CASE quayle: PRINT "Quayle";
CASE tara: PRINT "tarantula";
CASE mosq: PRINT "mosquito";
CASE phoe: PRINT "phoenix";
CASE scor: PRINT "scorpion";
CASE robot: PRINT "robot";
CASE bwid: PRINT "black widow";
CASE wdro: PRINT "war droid";
CASE kong: PRINT "king kong";
CASE rodan: PRINT "rodan";
CASE godz: PRINT "godzilla";
CASE slime: PRINT "slime";
CASE ooze: PRINT "ooze";
CASE rdro: PRINT "repair droid";
CASE magg: PRINT "maggot";
CASE pmold: PRINT "purple mold";
CASE rat: PRINT "rat";
CASE ddro: PRINT "defense droid";
CASE efung: PRINT "enzyme fungus";
CASE brecl: PRINT "brown recluse";
CASE wspid: PRINT "wolf spider";
CASE gmold: PRINT "gray mold";
CASE sdro: PRINT "security droid";
CASE brain: PRINT "brain beast";
CASE tfrog: PRINT "tree frog";
CASE svine: PRINT "stranglevine";
CASE pivy: PRINT "poison ivy";
CASE stool: PRINT "toadstool";
CASE term: PRINT "termite";
CASE mush: PRINT "mushroom";
CASE puff: PRINT "giant puffball";
CASE nshade: PRINT "nightshade";
CASE algore: PRINT "algore";
CASE fern: PRINT "deathfern";
CASE bfoot: PRINT "bigfoot";
CASE wil: PRINT "willow";
CASE raptor: PRINT "raptor";
CASE leec: PRINT "leech";
CASE mold: PRINT "slime mold";
CASE gcrab: PRINT "giant crab";
CASE bbeet: PRINT "bombadier beetle";
CASE tick: PRINT "tick";
CASE dweed: PRINT "dartweed";
CASE gworm: PRINT "giant worm";
CASE bogh: PRINT "bog horror";
CASE chick: PRINT "chicken";
CASE moth: PRINT "moth";
CASE stink: PRINT "stinkbug";
CASE hyena: PRINT "hyena";
CASE fox: PRINT "fox";
CASE gwasp: PRINT "giant wasp";
CASE locust: PRINT "locust";
CASE bunny: PRINT "bunny";
CASE cact: PRINT "cactus";
CASE kelp: PRINT "kelp";
CASE sard: PRINT "sardine";
CASE sgull: PRINT "seagull";
CASE lobstr: PRINT "lobster";
CASE urchin: PRINT "urchin";
CASE squid: PRINT "squid";
CASE rsnap: PRINT "red snapper";
CASE octopus: PRINT "octopus";
CASE jelly: PRINT "jellyfish";
CASE webspid: PRINT "big hairy spider";
CASE gill: PRINT "gilligan";
CASE skip: PRINT "skipper";
CASE prof: PRINT "professor";
CASE ging: PRINT "ginger";
CASE mary: PRINT "mary ann";
CASE mrhow: PRINT "mr howell";
CASE mrshow: PRINT "mrs howell";
CASE herm: PRINT "herman";
CASE lily: PRINT "lily";
CASE gramp: PRINT "grandpa";
CASE eddie: PRINT "eddie";
CASE mara: PRINT "maralyn";
CASE spot: PRINT "spot";
CASE igor: PRINT "igor";
CASE elvimp: PRINT "elvis impersonator";
CASE elvis: PRINT "elvis";
CASE buzz: PRINT "buzz aldrin";
CASE zola: PRINT "zola bud";
CASE mdeck: PRINT "mary decker";
CASE ghart: PRINT "gary hart";
CASE cubs: PRINT "chicago cub";
CASE saddam: PRINT "saddam";
CASE unk1: PRINT "unk1";
CASE unk2: PRINT "unk2";
CASE unk3: PRINT "unk3";
CASE trump: PRINT "trump";
CASE ivana: PRINT "ivana";
CASE marla: PRINT "marla";
CASE grinch: PRINT "grinch";
CASE gdog: PRINT "grinch's dog";
END SELECT
pse: a$ = INKEY$
IF a$ = "" THEN GOTO pse ELSE IF a$ = "e" THEN GOTO fin
WEND
'NEXT
fin: CLS
COLOR 15: LOCATE 1, 64: PRINT USING "& creatures"; LTRIM$(STR$(numcre))
COLOR 11: LOCATE 1, 1: PRINT "Move Rate"
LOCATE 9, 1: PRINT "Defenses"
LOCATE 1, 23: PRINT "Attacks :"
LOCATE 3, 62: PRINT "Susceptibilities";
COLOR 5
FOR i = 0 TO 5: LOCATE 2 + i, 4: PRINT movcnt(i): NEXT
COLOR 2
FOR i = 0 TO 13: LOCATE 10 + i, 1: PRINT LTRIM$(STR$(defcnt(i))): NEXT
COLOR 4
FOR i = 1 TO 25: LOCATE i, 32
IF i = 24 THEN i = 25 ELSE IF i = 25 THEN i = 26
PRINT atkcnt(i); TAB(36); atk$(i);
IF i = 25 THEN i = 24 ELSE IF i = 26 THEN i = 25
NEXT
FOR i = 0 TO 15: LOCATE i + 4, 61
PRINT susccnt(i); TAB(65); sus$(i)
NEXT
COLOR 2
LOCATE 10, 5: PRINT "1/3 from Kinetic"
LOCATE 11, 5: PRINT "Acid"
LOCATE 12, 5: PRINT "Electricity"
LOCATE 13, 5: PRINT "Radiation"
LOCATE 14, 5: PRINT "Heat"
LOCATE 15, 5: PRINT "Cold"
LOCATE 16, 5: PRINT "Lasers"
LOCATE 17, 5: PRINT "Grow from heat/laser"
LOCATE 18, 5: PRINT "Regenerate 1/turn"
LOCATE 19, 5: PRINT "Mental Attacks"
LOCATE 20, 5: PRINT "Poison"
LOCATE 21, 5: PRINT "Regenerate 3/turn"
LOCATE 22, 5: PRINT "Quills/shock for 1-4"
LOCATE 23, 5: PRINT "Quills/shock for 1-10"
COLOR 9
pse2: a$ = INKEY$
IF a$ = "" THEN GOTO pse2
CLS
FOR i = 1 TO 26
FOR j = 0 TO 15
LOCATE j + 1, i * 3 - 2: COLOR j, 0
IF letters(i, 0) AND 2 ^ j THEN
IF j = 0 THEN COLOR , 1
PRINT CHR$(i + 64);
ELSE
PRINT ":"
END IF
NEXT
NEXT
FOR i = 1 TO 26
FOR j = 0 TO 15
LOCATE j + 1, i * 3 - 1: COLOR j, 0
IF letters(i, 1) AND 2 ^ j THEN
IF j = 0 THEN COLOR , 1
PRINT CHR$(i + 96);
ELSE
PRINT ":"
END IF
NEXT
NEXT
END
FUNCTION exper! (n)
SHARED hd, ac, mov, defense, susc, fc, rng(), str(), typ(), tohit()
DIM sumstr AS SINGLE, sss AS SINGLE
acmult! = (15 - ac) / 8
IF mov > 0 THEN movmult! = 2! - 1! / mov ELSE movmult! = .5
numdef = 0
FOR i = 0 TO 13
IF (defense AND 2 ^ i) THEN numdef = numdef + 1
NEXT i
IF (defense AND 1) THEN numdef = numdef + 2
IF (defense AND 128) THEN numdef = numdef + 1
IF (defense AND 2048) THEN numdef = numdef + 1
IF (defense AND 8192) THEN numdef = numdef + 1
defmult! = (4 + numdef) / 4
IF fc = 0 THEN defmult! = defmult! * 1.5
numsus = 0
FOR i = 0 TO 10
IF (susc AND 2 ^ i) THEN numsus = numsus + 1
NEXT i
IF (susc AND 1) THEN numsus = numsus + 2
IF (susc AND 512) THEN numsus = numsus + 1
IF (susc AND -32768) THEN numsus = numsus + 2
susmult! = 4 / (4 + numsus)
sumstr = 0
FOR i = 1 TO 5
IF rng(i) > 0 THEN
SELECT CASE typ(i)
CASE 17, 20, 21, 24: sss = 2
CASE 13, 16, 22, 23: sss = str(i) / 3 + 2
CASE 14, 26, 27: sss = 5
CASE ELSE: sss = 2 * str(i) + 1
END SELECT
sss = sss * (2 - 2! / (1 + rng(i)))
SELECT CASE typ(i)
CASE 8, 13: sm! = (4 + tohit(i)) / 4!
CASE 16, 22, 23, 27: sm! = (22 - tohit(i)) / 6!
CASE 20, 12: sm! = (22 - tohit(i)) / 6!
CASE ELSE
SELECT CASE tohit(i)
CASE IS > 18: sm! = 1
CASE ELSE: sm! = (25 - tohit(i)) / 8!
END SELECT
END SELECT
sumstr = sumstr + sss * sm!
END IF
NEXT i
sumstr = sumstr * .75
ii = CSRLIN: jj = POS(0): LOCATE 1, 1
PRINT USING "acmult:#.## movmult:#.## defmult:#.## susmult:#.## sumstr:##.##"; acmult!; movmult!; defmult!; susmult!; sumstr
LOCATE ii, jj
exper! = hd * acmult! * movmult! * defmult! * susmult! * sumstr
END FUNCTION
FUNCTION lev (n)
SELECT CASE n
CASE 1 TO ncreat
lll = INT(n / 3.49)
CASE 1 TO ncreat + crecas
lll = (n - ncreat - 1)
CASE 1 TO ncreat + crecas + crefor
lll = (n - ncreat - crecas)
CASE 1 TO ncreat + crecas + crefor + creswa
lll = (n - ncreat - crecas - crefor)
CASE 1 TO ncreat + crecas + crefor + creswa + crepla
lll = (n - ncreat - crecas - crefor - creswa)
CASE 1 TO ncreat + crecas + crefor + creswa + crepla + creh2o
lll = (n - ncreat - crecas - crefor - creswa - crepla - 2) / 1.5
END SELECT
IF lll < 1 THEN lll = 1
lev = lll
END FUNCTION

1
DO.BAT Normal file
View File

@ -0,0 +1 @@
bc %1 /o /s;

6
EXECOPY.BAT Normal file
View File

@ -0,0 +1,6 @@
copy alphaman.exe a:
copy alphaman.? a:
copy alphaman.faq a:
copy alphaman.spl a:
copy readme.txt a:
copy fixes.txt a:

67
FIXES.TXT Normal file
View File

@ -0,0 +1,67 @@
Fixes made to AlphaMan:
Please send bug reports to
Jeffrey Olson
214 E. Sherwin Dr.
Urbana, IL 61801
76473.225@compuserve.com
____________________________________________________________________
Version 1.1:
Game now remembers recent castle and lair levels, so remapping is no longer
necessary. For example, most dropped items will still be there when
character returns to a place already visited. Thanks to Tim Jordan for
lighting a fire under me to finally get this done.
Entering 'alphaman somename' from the DOS prompt will now generate a new
character if the saved file 'somename.alf' doesn't exist. Thanks to
Matthias Kring for the suggestion.
Now separate "Halls of the Dead" for the different difficulty level.
Now an experience bonus at the end of the game for each "subquest"
successfully completed, an additional bonus if the game was won, and a
further bonus if it was won in a short amount of time. Thanks to Tim
Jordan for the idea.
The Main Map key (F5) now shows regions where you've visited (useful for
looking for Monoliths). Another Tim Jordan idea.
A few new items - Flash Grenade, UV Helmet, Geiger Counter, Neutron Suit,
Radar Detector.
____________________________________________________________________
Version 1.03:
Fixed saved filename convention so the game no longer dies when trying to
save games with character names that include odd characters like ?, /.
Thanks to Tony Chang for pointing out the problem.
____________________________________________________________________
Version 1.02:
Fixed a serious bug that could crash the game when you went from "very
hungry" to "famished". Thanks to Carl Waldbieser for finding it.
Modified the effects of a few mutations to make them more equally strong:
Invisibility lasts somewhat longer.
A character with Invisibility recovers from blindness 3x faster, since
invisibility is described as "ability to bend light rays around you".
Quills, when shot, hit more often and do more damage.
A character with Heightened Endurance recovers from sickness 3x faster.
Thanks to Gerry Kevin Wilson for many useful mutation suggestions.
____________________________________________________________________
Version 1.01:
Fixed a bug that would very occasionally give a nonsense message when
character gained a level.
There is now significantly more food found randomly. Thanks to Chris
DiRubio and others for the suggestion.
Fixed superglue trap - before, when stuck in trap, there would be extra,
annoying messages about falling blobs of glue.
If your Tough Exoskeleton is quenched (by eating a berry, or a Vampire Bat,
for example), your AC now goes to the proper value of 10 instead of 15.
Added Easy and Moderately Easy levels of difficulty. Thanks to Dan Hayes
for the suggestion.
Added a Fast Fight mode that allows you to bypass most of the spacebar
presses during combat. Not recommended for beginners who would miss some
potentially useful information in the messages. Thanks to Dan Hayes for
the suggestion.
Made the Dung Beetle less nasty and annoying to a character who has passed
out from exhaustion (no more 10 or 15 attacks in a row).

100
ITEMLIST Normal file
View File

@ -0,0 +1,100 @@
_Berries________
Explode
Radiate
Provide Sustenance
Refresh
Poison
Cure
Cure Gobs
Add/subtract experience
Change Str, Dex, Con, RR, MR, Intl
Speed up/Slow down
Lower AC
Intoxicate
Increase Tech Ability
Grow body part
Quench mutation
Heightened Awareness
Blind
Belch, etc
Forgetfulness
Scare
Detoxify
Rambify
Make Invisible
Teleport
Put to sleep
Clumsy-causing
Regenerate
Cause Attraction odor
Create force fields
_Small_Tech_Devices________
Flashlight Canister Grenade Boise Ashtray
Backpack Neutrino " Sunglasses
Gas Mask Incendiary " Toaster
Medkit Psychosis " Cheese Grater
Tape Recorder Gas " Bionic Spleen
Power Pack Photon " Sony Watchman
Chemical Analyzer Fission " Slinky
VisiScope Vial of Acid Veg-O-Matic
Tylenol Stun Grenade Kalediscope
Tip O'Neill Mask Disintegration " Fountain Pen
ServoBoots Lightning " Pocket Instamatic
Salt Shaker Glue " Hammock
Force Field Generator Fusion " Voodoo Doll
Bionic Brain Implant Turbocharger
Bionic Muscle Implant Chia Pet
Skillet Cutting Torch Wristwatch
Toilet Paper Staple Gun
Sunscreen Shock Rod
ID Card Shotgun
Box of Flares Laser Pistol
Mirror Phaser
Mr. Misty Fusion Rifle
Tricorder Tickle Feather Gun
Hand Massager Weedeater
Thermos of Coffee Missile Launcher
Grenade Launcher Can of Raid
Bottle of Brandy Flamethrower
Microcomputer Light Sabre
Tent Freeze Gun
Box of Alka-seltzer Can of Mace
MindWeb Generator Can of Mr. Clean
Box of Cap'n Crunch Squirt Gun
Motion Sensor Chainsaw
Pepper Shaker Blaster
Knife Sharpener Can of Silly String
Bottle of ArmorAll Stun Gun
_Large_Tech_Items________
Radiation Suit Cigarette Machine
Thermal Suit Cabinet
Reflective Suit Liposuction Device
Hovercraft Still
Computer Workstation Cyclotron
Microwave oven Laser Printer
Wetsuit Wide Screen TV
Safe Prosthetic Leg
Transmogrifier Dialysis Machine
TK-5 AntiTank Gun Porta Potty
Jetpack Sousaphone
Golf Cart Kevorkian Machine
Pogo Stick
Cloaking Device
Kayak
Rubber Raft
Home Movie Projector
Camoflage Suit
Pinstripe Suit
Bulletproof Suit
Repulsion Field Generator
_Special_Items________
Skipper's Hat
Borabora Serum
Map
Blue Suede Shoes
Space Suit
Roast Beast
Bamboo Raft

BIN
ITEMS.BAS Normal file

Binary file not shown.

576
ITEMS.BAS.txt Normal file
View File

@ -0,0 +1,576 @@
' Copyright (c) 1995 Jeffrey R. Olson
'
' Permission is hereby granted, free of charge, to any person obtaining a copy
' of this software and associated documentation files (the "Software"), to deal
' in the Software without restriction, including without limitation the rights
' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all
' copies or substantial portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
' SOFTWARE.
DECLARE FUNCTION kolr$ (i%)
DECLARE SUB addlsd (k%)
DECLARE FUNCTION berryeff$ (num%)
DECLARE FUNCTION creatnam$ (typ%)
DECLARE SUB addssd (k%)
DECLARE FUNCTION jnk$ (num%, strt%, leng%)
DECLARE SUB init ()
DECLARE FUNCTION ssdnm$ (i%)
DECLARE FUNCTION lsdnm$ (i%)
DECLARE SUB addspecial (i%)
DECLARE SUB addberry (i%)
DECLARE SUB changeitems ()
DECLARE SUB loadit ()
DECLARE SUB saveit ()
DEFINT A-Z
' $INCLUDE: 'alpha.dec'
DIM SHARED sss(50, 20, 2), filin$
RANDOMIZE TIMER
COLOR 10, 1: CLS : LOCATE 3, 10: INPUT "Enter filename (.alf assumed) :", filin$
filin$ = filin$ + ".alf"
init
loadit
changeitems
saveit
CLS
END
SUB addberry (i)
IF ngoody >= 20 THEN EXIT SUB ELSE ngoody = ngoody + 1
goody(ngoody, 1) = 6 'type (berry)
goody(ngoody, 2) = 1 'fatigue
goody(ngoody, 3) = i 'type
goody(ngoody, 4) = INT(RND * 6) + 1 'color
goody(ngoody, 5) = 0 'berry
goody(ngoody, 6) = INT(RND * 3) 'age
goody(ngoody, 7) = 0
goody(ngoody, 8) = 0
goody(ngoody, 9) = 0
goody(ngoody, 10) = 0
goody(ngoody, 11) = 0
gdy(ngoody) = kolr$(goody(ngoody, 4)) + berry$(i) + bl + jnk$(-2, 37, 5)
knownb(i) = true
LOCATE 23, 1: FOR j = 1 TO 11: PRINT goody(ngoody, j); : NEXT j
END SUB
SUB addlsd (k)
IF ngoody >= 20 THEN EXIT SUB ELSE ngoody = ngoody + 1
IF k = 8 THEN 'safe
bad = false
FOR i = 1 TO ngoody
IF (ABS(goody(i, 1)) = 8) AND (goody(i, 11) = 8) THEN bad = true
NEXT
IF bad THEN k = nlsd + INT(RND * nltrash + 1) 'trash
END IF
FOR j = 1 TO 12: goody(ngoody, j) = 0: NEXT
goody(ngoody, 1) = 8
FOR j = 1 TO 3: goody(ngoody, j + 1) = lsd(k, j): NEXT j
LOCATE 22, 1: FOR j = 1 TO 11: PRINT goody(ngoody, j); : NEXT j
num = goody(ngoody, 3)
IF num > 0 THEN goody(ngoody, 3) = num - INT(RND * RND * num) ELSE goody(ngoody, 3) = -1
lsdknown(k) = true: goody(ngoody, 10) = true
goody(ngoody, 11) = k: gdy(ngoody) = lsdnm$(k)
IF (goody(ngoody, 1) = 8) AND (goody(ngoody, 11) = 8) AND (nsafe > 0) THEN goody(ngoody, 1) = -8
LOCATE 23, 1: FOR j = 1 TO 11: PRINT goody(ngoody, j); : NEXT j
END SUB
SUB addspecial (i)
IF ngoody >= 20 THEN EXIT SUB ELSE ngoody = ngoody + 1
goody(ngoody, 1) = 9 'type (special)
goody(ngoody, 2) = 1 'fatigue
goody(ngoody, 3) = i 'type
SELECT CASE i
CASE 1: gdy(ngoody) = "Skipper's Hat"
CASE 2: gdy(ngoody) = "Keptibora Serum"
CASE 3: gdy(ngoody) = "Map"
CASE 4: gdy(ngoody) = "Pair of Blue Suede Shoes"
CASE 5: gdy(ngoody) = "Space Suit"
CASE 6: gdy(ngoody) = "Can of Roast Beast"
CASE 7: gdy(ngoody) = "Bamboo Raft"
CASE 8: gdy(ngoody) = "Mets Hat"
CASE 9: gdy(ngoody) = "Ivana Wig"
END SELECT
END SUB
SUB addssd (kk)
k = ABS(kk)
IF ngoody >= 20 THEN EXIT SUB ELSE ngoody = ngoody + 1
IF k = 2 THEN 'backpack
bad = false
FOR i = 1 TO ngoody
IF (ABS(goody(i, 1)) = 7) AND (goody(i, 11) = 2) THEN bad = true
NEXT
FOR i = 1 TO nsafe
IF safe(i, 1) = 7 AND safe(i, 11) = 2 THEN bad = true
NEXT
IF bad THEN k = nssd + ntechwep + INT(RND * nstrash + 1) 'trash
END IF
FOR j = 1 TO 12: goody(ngoody, j) = 0: NEXT
goody(ngoody, 1) = 7
FOR i = 1 TO 8: goody(ngoody, i + 1) = ssd(k, i): NEXT i
num = goody(ngoody, 3)
IF num > 0 THEN goody(ngoody, 3) = num - INT(RND * RND * num) ELSE goody(ngoody, 3) = -1
ssdknown(k) = true: goody(ngoody, 10) = true
goody(ngoody, 11) = k
gdy(ngoody) = ssdnm$(k)
SELECT CASE k
CASE 19 'ID
goody(ngoody, 5) = INT(RND * 3 + 1)
IF kk < 0 THEN goody(ngoody, 5) = 4
CASE nssd + ntechwep + 13 'voodoo
typ = INT(RND * ncreat + creextra + 1): goody(ngoody, 5) = typ
IF ssdknown(k) THEN gdy(ngoody) = creatnam$(typ) + bl + gdy(ngoody)
IF LEFT$(UCASE$(gdy(ngoody)), 3) = "THE" THEN
gdy(ngoody) = RIGHT$(gdy(ngoody), LEN(gdy(ngoody)) - 4)
END IF
CASE ELSE
END SELECT
IF (goody(ngoody, 1) = 7) AND (goody(ngoody, 11) = 2) AND (npack > 0) THEN goody(ngoody, 1) = -7
LOCATE 24, 1: FOR j = 1 TO 11: PRINT goody(ngoody, j); : NEXT j
END SUB
FUNCTION berryeff$ (num)
SELECT CASE num
CASE 0: a$ = "turn you green"
CASE 1: a$ = "exploding"
CASE 2: a$ = "radiation"
CASE 3: a$ = "satisfy hunger"
CASE 4: a$ = "refresh"
CASE 5: a$ = "poison"
CASE 6: a$ = "cure light"
CASE 7: a$ = "cure critical"
CASE 8: a$ = "change experience"
CASE 9: a$ = "change strength"
CASE 10: a$ = "change dexterity"
CASE 11: a$ = "change constitution"
CASE 12: a$ = "change rad. resistance"
CASE 13: a$ = "change ment. resistance"
CASE 14: a$ = "change intelligence"
CASE 15: a$ = "speed up/slow down"
CASE 16: a$ = "toughen skin"
CASE 17: a$ = "intoxicate"
CASE 18: a$ = "increased brain talent"
CASE 19: a$ = "grow body part"
CASE 20: a$ = "quench/heighten mut."
CASE 21: a$ = "enhanced detection"
CASE 22: a$ = "blind"
CASE 23: a$ = "burp-inducing"
CASE 24: a$ = "forgetfulness"
CASE 25: a$ = "frighten"
CASE 26: a$ = "detoxify"
CASE 27: a$ = "rambo"
CASE 28: a$ = "invisibility"
CASE 29: a$ = "teleport"
CASE 30: a$ = "sleep inducing"
CASE 31: a$ = "klutz inducing"
CASE 32: a$ = "regeneration"
CASE 33: a$ = "attraction odor"
CASE 34: a$ = "force field"
CASE 35: a$ = "acid"
END SELECT
berryeff$ = a$
END FUNCTION
SUB changeitems
COLOR 13, 1: CLS : LOCATE 10, 10
n3 = nberry \ 3 + 1: COLOR 12, 1: CLS
FOR i = 0 TO nberry
LOCATE (i MOD n3) + 1, 1 + 27 * (i \ n3)
PRINT RTRIM$(LTRIM$(STR$(i + 1))); ".";
PRINT berryeff$(i)
NEXT
addber: IF ngoody = 20 THEN EXIT SUB
LOCATE 21, 1: PRINT USING "You may add ## new items, maximum"; 20 - ngoody
LOCATE 20, 1: PRINT SPACE$(79); : LOCATE 20, 1
INPUT ; "Add which berry (press Enter to add none): ", num
IF num >= 1 AND num <= nberry + 1 THEN
addberry num - 1: IF ngoody < 20 GOTO addber
END IF
n3 = (nssd + ntechwep + nstrash) \ 4 + 1: COLOR 14, 1: CLS
FOR i = 1 TO nssd + ntechwep + nstrash
LOCATE ((i - 1) MOD n3) + 1, 1 + 20 * ((i - 1) \ n3)
PRINT RTRIM$(LTRIM$(STR$(i))); ".";
PRINT LEFT$(ssdnm$(i), 15);
NEXT
addssd: IF ngoody = 20 THEN EXIT SUB
LOCATE 25, 1: PRINT SPACE$(78); : LOCATE 25, 1
INPUT ; "Add which small device? (press Enter to add none): ", num
IF num >= 1 AND num <= nssd + ntechwep + nstrash THEN
addssd num: IF ngoody < 20 GOTO addssd
END IF
n3 = (nlsd + nltrash) \ 3 + 1: COLOR 11, 1: CLS
FOR i = 1 TO nlsd + nltrash
LOCATE ((i - 1) MOD n3) + 1, 1 + 27 * ((i - 1) \ n3)
PRINT RTRIM$(LTRIM$(STR$(i))); ".";
PRINT lsdnm$(i)
NEXT
addlsd: IF ngoody = 20 THEN EXIT SUB
LOCATE 22, 1: PRINT SPACE$(78); : LOCATE 22, 1
INPUT ; "Add which large device? (press Enter to add none): ", num
IF num > 0 AND num <= nlsd + nltrash THEN
addlsd num: IF ngoody < 20 GOTO addlsd
END IF
COLOR 15, 1: CLS
LOCATE 10, 10: INPUT "Add items to prepare to win game? ", yn$
IF UCASE$(LEFT$(yn$, 1)) = "Y" THEN
FOR i = 2 TO 6: addspecial i: NEXT i
addssd -19
END IF
END SUB
FUNCTION creatnam$ (typ)
IF typ < 1 THEN typ = 1
IF typ = wimp AND wimpname$ <> "" THEN
d$ = wimpname$
ELSE
OPEN "alphaman.2" FOR RANDOM AS #3 LEN = 50
FIELD #3, 20 AS nm$, 30 AS dud$
GET #3, typ: c$ = RTRIM$(LTRIM$(nm$)): d$ = SPACE$(20): CLOSE #3
k = 1: stopit = false
DO
aa = ASC(MID$(c$, k, 1))
IF aa = 242 THEN
stopit = true
ELSE
aa = aa XOR k * 6: MID$(d$, k, 1) = CHR$(aa MOD 256)
END IF
k = k + 1
LOOP UNTIL stopit OR (k = 21)
END IF
creatnam$ = RTRIM$(LTRIM$(d$))
END FUNCTION
SUB init
CLOSE #2: OPEN "alphaman.3" FOR BINARY AS #2
nstuff = nwep + nrwep + nsh + narm
nstuff = nstuff + nssd + ntechwep + nstrash + nlsd + nltrash
GET #2, 6 * nstuff - 1, i
FOR i = 1 TO 10: FOR j = 1 TO 3: GET #2, , symb(i, j): NEXT j, i
FOR i = 1 TO nwep + nrwep: FOR j = 1 TO 6: GET #2, , wep(i, j): NEXT j, i
FOR i = 1 TO nsh: GET #2, , sh(i, 1): GET #2, , sh(i, 2): NEXT i
FOR i = 1 TO narm: GET #2, , arm(i, 1): GET #2, , arm(i, 2): NEXT i
FOR i = 1 TO nssd
GET #2, , ssdtyp(i): FOR j = 1 TO 3: GET #2, , ssd(i, j): NEXT j
GET #2, , ssd(i, 9)
NEXT i
FOR i = nssd + 1 TO nssd + ntechwep
GET #2, , ssdtyp(i): FOR j = 1 TO 9: GET #2, , ssd(i, j): NEXT j
NEXT i
FOR i = nssd + ntechwep + 1 TO nssd + ntechwep + nstrash
GET #2, , ssdtyp(i): FOR j = 1 TO 3: GET #2, , ssd(i, j): NEXT j
GET #2, , ssd(i, 9)
NEXT i
FOR i = 1 TO nlsd + nltrash
GET #2, , lsdtyp(i): FOR j = 1 TO 4: GET #2, , lsd(i, j): NEXT j
NEXT i
END SUB
FUNCTION jnk$ (num, strt, leng)
IF num < -2 THEN num = -2 ELSE IF num > 420 THEN num = 420
num = num + 2
bbbb$ = SPACE$(68)
OPEN "alphaman.1" FOR BINARY AS #3: GET #3, num * 68 + 1, bbbb$: CLOSE #3
IF leng > 69 - strt THEN leng = 69 - strt
junk$ = MID$(bbbb$, strt, leng)
num = num - 2
FOR i = 1 TO leng
MID$(junk$, i, 1) = CHR$(ASC(MID$(junk$, i, 1)) XOR (ABS(17 * num + 31 * (i + strt - 1)) MOD 256))
NEXT i
jnk$ = junk$
END FUNCTION
FUNCTION kolr$ (i)
SELECT CASE i
CASE 1: b = 1: c = 4
CASE 2: b = 5: c = 7
CASE 3: b = 12: c = 7
CASE 4: b = 19: c = 6
CASE 5: b = 25: c = 5
CASE ELSE: b = 30: c = 7
END SELECT
kolr$ = jnk$(-2, b, c)
END FUNCTION
SUB loadit '=======================================================
CLOSE #1
OPEN filin$ FOR APPEND AS #1: CLOSE #1
OPEN filin$ FOR INPUT AS #1
IF EOF(1) THEN 'doesn't exist
CLOSE #1: KILL filin$: PRINT "Doesn't exist"
END
END IF
CLOSE #1
OPEN filin$ FOR BINARY AS #1
GET #1, , vdate&
IF vdate& <> versiondate THEN
LOCATE 14, 20: PRINT "Incorrect version"; : END
END IF
GET #1, , lll: name$ = SPACE$(lll): GET #1, , name$
PRINT ".";
GET #1, , ngoody: GET #1, , npack: GET #1, , ndropped: GET #1, , nsafe
FOR i = 1 TO ngoody
GET #1, , lll: gdy(i) = SPACE$(lll): GET #1, , gdy(i)
NEXT i
PRINT ".";
FOR i = 1 TO npack
GET #1, , lll: bakpak(i) = SPACE$(lll): GET #1, , bakpak(i)
NEXT i
FOR i = 1 TO ndropped
GET #1, , lll: drgdy(i) = SPACE$(lll): GET #1, , drgdy(i)
NEXT i
FOR i = 1 TO nsafe
GET #1, , lll: saf(i) = SPACE$(lll): GET #1, , saf(i)
NEXT i
FOR i = 0 TO 40: berry$(i) = SPACE$(6): GET #1, , berry$(i): NEXT i
FOR i = 1 TO ngoody
FOR j = 1 TO 12: GET #1, , goody(i, j): NEXT j
NEXT i
FOR i = 1 TO npack
FOR j = 1 TO 12: GET #1, , backpack(i, j): NEXT j
NEXT i
FOR i = 1 TO ndropped
FOR j = 1 TO 16: GET #1, , drgoody(i, j): NEXT j
NEXT i
FOR i = 1 TO nsafe
FOR j = 1 TO 12: GET #1, , safe(i, j): NEXT j
NEXT i
PRINT ".";
GET #1, , nnear
FOR i = 1 TO nnear
FOR j = 1 TO 15: GET #1, , ncre(i, j): NEXT j
NEXT i
FOR i = 0 TO 40: GET #1, , berord(i): GET #1, , knownb(i): NEXT i
PRINT ".";
FOR i = 2 TO 51: FOR j = 2 TO 21: GET #1, , goodythere(i, j): NEXT j, i
PRINT ".";
FOR i = 0 TO 6: FOR j = -10 TO 10: GET #1, , goodycastle(i, j): NEXT j, i
FOR i = 1 TO 20: FOR j = 1 TO 3: GET #1, , localgoody(i, j): NEXT j, i
FOR i = 1 TO 10: FOR j = 1 TO 3: GET #1, , radzone(i, j): NEXT j, i
FOR i = 1 TO 80: GET #1, , ssdknown(i): NEXT i
FOR i = 1 TO 40: GET #1, , lsdknown(i): NEXT i
FOR i = -10 TO 10: GET #1, , xstairs(i): NEXT i
FOR i = -10 TO 10: GET #1, , ystairs(i): NEXT i
FOR i = 1 TO 10: FOR j = 1 TO 3: GET #1, , monozone(i, j): NEXT j, i
PRINT ".";
GET #1, , str: GET #1, , stradd: GET #1, , dex: GET #1, , dexadd
GET #1, , con: GET #1, , rr: GET #1, , mr: GET #1, , intl
GET #1, , hitmax: GET #1, , hits: GET #1, , hunger: GET #1, , fatigue!
GET #1, , expr&: GET #1, , lvl: GET #1, , pmut: GET #1, , mmut
GET #1, , radsuit: GET #1, , heatsuit: GET #1, , reflecsuit
GET #1, , flashlight: GET #1, , gasmask: GET #1, , sunglasses
GET #1, , wetsuit: GET #1, , mask: GET #1, , boots
GET #1, , pmutturns: GET #1, , mmutturns: GET #1, , inwater
GET #1, , waterturns: GET #1, , inpit: GET #1, , zippy
GET #1, , wpturns: GET #1, , seed!: GET #1, , vpage
GET #1, , mainx: GET #1, , mainy: GET #1, , localx
GET #1, , localy: GET #1, , terrain: GET #1, , terrf
GET #1, , terrb: GET #1, , currsym: GET #1, , currf
GET #1, , currb: GET #1, , ncastle: GET #1, , nruins
GET #1, , castle: GET #1, , castlelevel: GET #1, , incastle
GET #1, , dum
GET #1, , lwall: GET #1, , rwall: GET #1, , twall: GET #1, , bwall
GET #1, , lwscr: GET #1, , rwscr: GET #1, , twscr
GET #1, , bwscr: GET #1, , dots: GET #1, , xenter
GET #1, , yenter: GET #1, , xenterscr: GET #1, , yenterscr
GET #1, , enterdir: GET #1, , bitit: GET #1, , berstr
PRINT ".";
GET #1, , berdex: GET #1, , bercon: GET #1, , berrr
GET #1, , bermr: GET #1, , berintl
GET #1, , berac: GET #1, , berpmut: GET #1, , bermmut
GET #1, , berconfuse: GET #1, , berdet: GET #1, , berblind
GET #1, , berhic: GET #1, , brandy: GET #1, , berscare
GET #1, , strtox: GET #1, , dextox: GET #1, , contox
GET #1, , berrambo: GET #1, , weather: GET #1, , wind
GET #1, , gt!: GET #1, , rside: GET #1, , roachdef
GET #1, , radint: GET #1, , armor: GET #1, , shield
GET #1, , dark: GET #1, , grabbed: GET #1, , vehicle: GET #1, , confu
GET #1, , hittox: GET #1, , asleep: GET #1, , sunscreen
GET #1, , invisible: GET #1, , udder: GET #1, , flare
GET #1, , coffee: GET #1, , tapenum: GET #1, , berfresh
GET #1, , elvislevel: GET #1, , grinchlevel: GET #1, , grinchzone
GET #1, , serum!: GET #1, , map: GET #1, , bsshoes
GET #1, , spacesuit: GET #1, , bergreen: GET #1, , berklutz
GET #1, , klutzdex: GET #1, , berregen: GET #1, , beryum
GET #1, , camosuit: GET #1, , pinsuit: GET #1, , notoxin
GET #1, , other2hitc: GET #1, , other2hitr: GET #1, , otherdam
GET #1, , tapeworm: GET #1, , turbo!: GET #1, , bulletsuit
GET #1, , xmono: GET #1, , ymono: GET #1, , mononum
GET #1, , inweb: GET #1, , ffgen: GET #1, , inglue
GET #1, , inbog: GET #1, , insand: GET #1, , hail
GET #1, , tent: GET #1, , berff: GET #1, , berhpmut: GET #1, , berhmmut
GET #1, , tentgrab: GET #1, , metshat: GET #1, , grinchstole
GET #1, , mindweb: GET #1, , repulse: GET #1, , ripehrs
GET #1, , spore: GET #1, , answer: GET #1, , skinac
GET #1, , starting: GET #1, , difficulty: GET #1, , finishedcastles
GET #1, , uvhelmet: GET #1, , neutronsuit
FOR i = 1 TO 4: GET #1, , dum: NEXT
PRINT ".";
n$ = bl
GET #1, , l: ber$ = SPACE$(l): FOR j = 1 TO l: GET #1, , n$: MID$(ber$, j, 1) = n$: NEXT j
FOR i = 2 TO 51: FOR j = 2 TO 21
GET #1, , sss(i - 1, j - 1, 1)
NEXT j, i
FOR i = 2 TO 51: FOR j = 2 TO 21
GET #1, , sss(i - 1, j - 1, 2)
NEXT j, i
CLOSE #1
END SUB
FUNCTION lsdnm$ (i)
place = 6 * (nwep + nrwep + nsh + narm + nssd + ntechwep + nstrash + i) - 5
GET #2, place, a: GET #2, , b: GET #2, , c
lsdnm$ = jnk$(a, b, c)
END FUNCTION
SUB saveit '==============================================================
CLOSE #1
OPEN filin$ FOR BINARY AS #1
vdate& = versiondate: PUT #1, , vdate&
lll = LEN(name$): PUT #1, , lll: PUT #1, , name$
PUT #1, , ngoody: PUT #1, , npack: PUT #1, , ndropped: PUT #1, , nsafe
FOR i = 1 TO ngoody
lll = LEN(gdy(i)): PUT #1, , lll: PUT #1, , gdy(i)
NEXT i
FOR i = 1 TO npack
lll = LEN(bakpak(i)): PUT #1, , lll: PUT #1, , bakpak(i)
NEXT i
FOR i = 1 TO ndropped
lll = LEN(drgdy(i)): PUT #1, , lll: PUT #1, , drgdy(i)
NEXT i
FOR i = 1 TO nsafe
lll = LEN(saf(i)): PUT #1, , lll: PUT #1, , saf(i)
NEXT i
FOR i = 0 TO nberry: PUT #1, , berry$(i): NEXT i
FOR i = 1 + nberry TO 40: PUT #1, , berry$(nberry): NEXT i
FOR i = 1 TO ngoody
IF goody(i, 1) = 9 AND goody(i, 3) = 9 THEN goody(i, 4) = 3
FOR j = 1 TO 12: PUT #1, , goody(i, j): NEXT j
NEXT i
FOR i = 1 TO npack
FOR j = 1 TO 12: PUT #1, , backpack(i, j): NEXT j
NEXT i
FOR i = 1 TO ndropped
FOR j = 1 TO 16: PUT #1, , drgoody(i, j): NEXT j
NEXT i
FOR i = 1 TO nsafe
FOR j = 1 TO 12: PUT #1, , safe(i, j): NEXT j
NEXT i
PUT #1, , nnear
FOR i = 1 TO nnear: FOR j = 1 TO 15: PUT #1, , ncre(i, j): NEXT j, i
FOR i = 0 TO 40: PUT #1, , berord(i): PUT #1, , knownb(i): NEXT i
FOR i = 2 TO 51: FOR j = 2 TO 21: PUT #1, , goodythere(i, j): NEXT j, i
FOR i = 0 TO 6: FOR j = -10 TO 10: PUT #1, , goodycastle(i, j): NEXT j, i
FOR i = 1 TO 20: FOR j = 1 TO 3: PUT #1, , localgoody(i, j): NEXT j, i
FOR i = 1 TO 10: FOR j = 1 TO 3: PUT #1, , radzone(i, j): NEXT j, i
FOR i = 1 TO 80: PUT #1, , ssdknown(i): NEXT i
FOR i = 1 TO 40: PUT #1, , lsdknown(i): NEXT i
FOR i = -10 TO 10: PUT #1, , xstairs(i): NEXT i
FOR i = -10 TO 10: PUT #1, , ystairs(i): NEXT i
FOR i = 1 TO 10: FOR j = 1 TO 3: PUT #1, , monozone(i, j): NEXT j, i
PUT #1, , str: PUT #1, , stradd: PUT #1, , dex: PUT #1, , dexadd
PUT #1, , con: PUT #1, , rr: PUT #1, , mr: PUT #1, , intl
PUT #1, , hitmax: PUT #1, , hits: PUT #1, , hunger: PUT #1, , fatigue!
PUT #1, , expr&: PUT #1, , lvl: PUT #1, , pmut: PUT #1, , mmut
PUT #1, , radsuit: PUT #1, , heatsuit: PUT #1, , reflecsuit
PUT #1, , flashlight: PUT #1, , gasmask: PUT #1, , sunglasses
PUT #1, , wetsuit: PUT #1, , mask: PUT #1, , boots
PUT #1, , pmutturns: PUT #1, , mmutturns: PUT #1, , inwater
PUT #1, , waterturns: PUT #1, , inpit: PUT #1, , zippy
PUT #1, , wpturns: PUT #1, , seed!: PUT #1, , vpage
PUT #1, , mainx: PUT #1, , mainy: PUT #1, , localx
PUT #1, , localy: PUT #1, , terrain: PUT #1, , terrf
PUT #1, , terrb: PUT #1, , currsym: PUT #1, , currf
PUT #1, , currb: PUT #1, , ncastle: PUT #1, , nruins
PUT #1, , castle: PUT #1, , castlelevel: PUT #1, , incastle
PUT #1, , dum
PUT #1, , lwall: PUT #1, , rwall: PUT #1, , twall: PUT #1, , bwall
PUT #1, , lwscr: PUT #1, , rwscr: PUT #1, , twscr
PUT #1, , bwscr: PUT #1, , dots: PUT #1, , xenter
PUT #1, , yenter: PUT #1, , xenterscr: PUT #1, , yenterscr
PUT #1, , enterdir: PUT #1, , bitit: PUT #1, , berstr
PUT #1, , berdex: PUT #1, , bercon: PUT #1, , berrr
PUT #1, , bermr: PUT #1, , berintl
PUT #1, , berac: PUT #1, , berpmut: PUT #1, , bermmut
PUT #1, , berconfuse: PUT #1, , berdet: PUT #1, , berblind
PUT #1, , berhic: PUT #1, , brandy: PUT #1, , berscare
PUT #1, , strtox: PUT #1, , dextox: PUT #1, , contox
PUT #1, , berrambo: PUT #1, , weather: PUT #1, , wind
PUT #1, , gt!: PUT #1, , rside: PUT #1, , roachdef
PUT #1, , radint: PUT #1, , armor: PUT #1, , shield
PUT #1, , dark: PUT #1, , grabbed: PUT #1, , vehicle: PUT #1, , confu
PUT #1, , hittox: PUT #1, , asleep: PUT #1, , sunscreen
PUT #1, , invisible: PUT #1, , udder: PUT #1, , flare
PUT #1, , coffee: PUT #1, , tapenum: PUT #1, , berfresh
PUT #1, , elvislevel: PUT #1, , grinchlevel: PUT #1, , grinchzone
PUT #1, , serum!: PUT #1, , map: PUT #1, , bsshoes
PUT #1, , spacesuit: PUT #1, , bergreen: PUT #1, , berklutz
PUT #1, , klutzdex: PUT #1, , berregen: PUT #1, , beryum
PUT #1, , camosuit: PUT #1, , pinsuit: PUT #1, , notoxin
PUT #1, , other2hitc: PUT #1, , other2hitr: PUT #1, , otherdam
PUT #1, , tapeworm: PUT #1, , turbo!: PUT #1, , bulletsuit
PUT #1, , xmono: PUT #1, , ymono: PUT #1, , mononum
PUT #1, , inweb: PUT #1, , ffgen: PUT #1, , inglue
PUT #1, , inbog: PUT #1, , insand: PUT #1, , hail
PUT #1, , tent: PUT #1, , berff: PUT #1, , berhpmut: PUT #1, , berhmmut
PUT #1, , tentgrab: PUT #1, , metshat: PUT #1, , grinchstole
PUT #1, , mindweb: PUT #1, , repulse: PUT #1, , ripehrs
PUT #1, , spore: PUT #1, , answer: PUT #1, , skinac
PUT #1, , starting: PUT #1, , difficulty: PUT #1, , finishedcastles
PUT #1, , uvhelmet: PUT #1, , neutronsuit
FOR i = 1 TO 4: PUT #1, , dum: NEXT
lll = LEN(ber$): PUT #1, , lll: PUT #1, , ber$
FOR i = 2 TO 51: FOR j = 2 TO 21
PUT #1, , sss(i - 1, j - 1, 1)
NEXT j, i
FOR i = 2 TO 51: FOR j = 2 TO 21
PUT #1, , sss(i - 1, j - 1, 2)
NEXT j, i
CLOSE #1
END SUB
FUNCTION ssdnm$ (i)
place = 6 * (nwep + nrwep + nsh + narm + i) - 5
GET #2, place, a: GET #2, , b: GET #2, , c
ssdnm$ = jnk$(a, b, c)
END FUNCTION

BIN
ITEMS.EXE Normal file

Binary file not shown.

20
LICENSE Normal file
View File

@ -0,0 +1,20 @@
Copyright (c) 1995 Jeffrey R. Olson
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

4
LNK.BAT Normal file
View File

@ -0,0 +1,4 @@
\qc25\bin\qlink /CP:1 /f /packc /noe /ex /st:10000 a1+a2+a3+a4+a5+a6+a7+a8+alpclib;
del alphaman.exe
rename a1.exe alphaman.exe
dir a*.exe

BIN
MAZ.BAS Normal file

Binary file not shown.

265
MAZ.BAS.txt Normal file
View File

@ -0,0 +1,265 @@
' Copyright (c) 1995 Jeffrey R. Olson
'
' Permission is hereby granted, free of charge, to any person obtaining a copy
' of this software and associated documentation files (the "Software"), to deal
' in the Software without restriction, including without limitation the rights
' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all
' copies or substantial portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
' SOFTWARE.
DECLARE SUB SetLengths ()
DECLARE SUB fillin ()
DECLARE SUB pause ()
DECLARE SUB putx (x%, y%)
DECLARE SUB maz ()
DECLARE SUB drawwall ()
DECLARE FUNCTION Roll% (x%)
CONST false = 0, true = NOT false
CONST Xaxis = 400, Yaxis = 400
CONST CellsWide = 24, CellsTall = 9
CONST maxcycles = 2, tpx = .4, tpy = .4
DIM SHARED WallsToDraw AS INTEGER, MostX%, MostY%, CycleMostX%, CycleMostY%
DIM SHARED walls(CellsWide, CellsTall) AS INTEGER
DIM SHARED xwid AS INTEGER, ywid AS INTEGER
DIM SHARED scrn(52, 22) AS INTEGER
CLS : RANDOMIZE TIMER: t1! = TIMER
FOR k% = 1 TO 1
xwid = 0
WHILE ywid * xwid < 8
xwid = Roll(4) + 2
ywid = 1 + Roll(2)
WEND
ii% = 9 + Roll(6) - xwid / 2
jj% = 3 + Roll(3) - ywid / 2
ERASE walls
COLOR 8
FOR i% = 3 TO CellsWide * 2 + 1
FOR j% = 3 TO CellsTall * 2 + 1
'LOCATE j%, i%: PRINT CHR$(250);
scrn(i%, j%) = 250
NEXT j%
NEXT i%
COLOR 9
FOR c% = 0 TO CellsWide
walls(c%, 0) = 1
putx 2 * c% + 2, 2
IF c% < CellsWide THEN putx 2 * c% + 3, 2
walls(c%, CellsTall) = 1
putx 2 * c% + 2, 2 * CellsTall + 2
IF c% < CellsWide THEN putx 2 * c% + 3, 2 * CellsTall + 2
NEXT
FOR c% = 0 TO CellsTall
walls(0, c%) = 1:
putx 2, 2 * c% + 2
IF c% < CellsTall THEN putx 2, 2 * c% + 3
walls(CellsWide, c%) = 1
putx 2 * CellsWide + 2, 2 * c% + 2
IF c% < CellsTall THEN putx 2 * CellsWide + 2, 2 * c% + 3
NEXT
FOR x% = 4 TO CellsWide * 2 STEP 2
FOR y% = 4 TO CellsTall * 2 STEP 2
'LOCATE y%, x%: PRINT CHR$(219);
scrn(x%, y%) = 219
NEXT y%
NEXT x%
FOR i% = ii% TO ii% + xwid: FOR j% = jj% TO jj% + ywid: walls(i%, j%) = 1: NEXT j%, i%
FOR x% = 2 * ii% + 2 TO 2 * (ii% + xwid) + 2
FOR y% = 2 * jj% + 2 TO 2 * (jj% + ywid) + 2
'LOCATE y%, x%: PRINT CHR$(219);
scrn(x%, y%) = 219
NEXT y%
NEXT x%
COLOR 8
FOR x% = 2 * ii% + 3 TO 2 * (ii% + xwid) + 1
FOR y% = 2 * jj% + 3 TO 2 * (jj% + ywid) + 1
'LOCATE y%, x%: PRINT CHR$(250);
scrn(x%, y%) = 250
NEXT y%
NEXT x%
COLOR 9: maz: COLOR 8
SELECT CASE Roll(4)
CASE 1: x% = ii%: y% = jj% + Roll(ywid)
'LOCATE 2 * y% + 1, 2 * x% + 2: PRINT CHR$(250)
scrn(2 * x% + 2, 2 * y% + 1) = 250
CASE 2: x% = ii% + xwid: y% = jj% + Roll(ywid)
'LOCATE 2 * y% + 1, 2 * x% + 2: PRINT CHR$(250)
scrn(2 * x% + 2, 2 * y% + 1) = 250
CASE 3: x% = ii% + Roll(xwid): y% = jj%
'LOCATE 2 * y% + 2, 2 * x% + 1: PRINT CHR$(250)
scrn(2 * x% + 1, 2 * y% + 2) = 250
CASE 4: x% = ii% + Roll(xwid): y% = jj% + ywid
'LOCATE 2 * y% + 2, 2 * x% + 1: PRINT CHR$(250)
scrn(2 * x% + 1, 2 * y% + 2) = 250
END SELECT
FOR i% = 1 TO 51: FOR j% = 1 TO 21
LOCATE j%, i%: PRINT CHR$(scrn(i%, j%));
NEXT j%, i%
t1! = TIMER
FOR zz% = 1 TO 30: SetLengths: NEXT
NEXT k%
'LOCATE 22, 2: PRINT USING "Time to generate one maze:#.###"; (TIMER - t1!) / 30
LOCATE 22, 2: PRINT USING "Time to do one path-search:#.###"; (TIMER - t1!) / 30
END
SUB drawwall
FOR Which% = 1 TO 0 STEP -1
Direc% = Roll(4)
InitMostX% = MostX%: InitMostY% = MostY%
WHILE (walls(MostX%, MostY%) = Which%)
SELECT CASE Direc%
CASE 1: MostX% = MostX% - 1
CASE 2: MostY% = MostY% + 1
CASE 3: MostX% = MostX% + 1
CASE 4: MostY% = MostY% - 1
END SELECT
IF ((MostX% < 0) OR (MostX% > CellsWide) OR (MostY% < 0) OR (MostY% > CellsTall)) THEN
IF Direc% = 4 THEN Direc% = 1 ELSE Direc% = Direc% + 1
MostX% = InitMostX%
MostY% = InitMostY%
END IF
WEND
NEXT
SELECT CASE Direc%
CASE IS = 1: LastDirec% = 3
CASE IS = 2: LastDirec% = 4
CASE IS = 3: LastDirec% = 1
CASE IS = 4: LastDirec% = 2
END SELECT
LastX% = MostX%: LastY% = MostY%
DeadEndReached% = false
DO
Cycles% = 0
KeepLooking% = true
DO
Cycles% = Cycles% + 1
NewX% = LastX%
NewY% = LastY%
Direc% = LastDirec%
IF Direc% = 1 OR Direc% = 3 THEN tp! = tpx ELSE tp! = tpy
IF RND < tp! THEN Turn% = (Roll(3) - 2) ELSE Turn% = 0
Direc% = Direc% + Turn%
IF Direc% > 4 THEN Direc% = 1
IF Direc% < 1 THEN Direc% = 4
SELECT CASE Direc%
CASE IS = 1: NewX% = LastX% - 1 'up
CASE IS = 2: NewY% = LastY% + 1 'right
CASE IS = 3: NewX% = LastX% + 1 'down
CASE IS = 4: NewY% = LastY% - 1 'left
END SELECT
IF Cycles% < maxcycles THEN
IF ((NewX% >= CellsWide) OR (NewX% <= 0) OR (NewY% >= CellsTall) OR (NewY% <= 0)) THEN
KeepLooking% = true
ELSE
IF walls(NewX%, NewY%) = 0 THEN KeepLooking% = false
END IF
ELSE
KeepLooking% = false
END IF
LOOP WHILE (KeepLooking%)
IF Cycles% < maxcycles THEN
putx LastX% + NewX% + 2, LastY% + NewY% + 2': pause
walls(NewX%, NewY%) = 1
WallsToDraw = WallsToDraw - 1
LastX% = NewX%: LastY% = NewY%
LastDirec% = Direc%
DeadEndReached% = false
ELSE
DeadEndReached% = true
END IF
LOOP WHILE (DeadEndReached% = false)
END SUB
SUB maz
WallsToDraw = (CellsTall - 1) * (CellsWide - 1) - ((xwid - 1) * (ywid - 1) + 2 * (xwid + ywid))
PartWallsToDraw% = WallsToDraw * .3
WHILE (WallsToDraw > PartWallsToDraw%)
DO
MostX% = Roll(CellsWide): MostY% = Roll(CellsTall)
LOOP WHILE (walls(MostX%, MostY%) = 1)
drawwall
WEND
CyclicMostX% = 1: CyclicMostY% = 1
WHILE (WallsToDraw > 0)
DO
CyclicMostY% = CyclicMostY% + 1
IF CyclicMostY% = CellsTall THEN
CyclicMostY% = 1
CyclicMostX% = CyclicMostX% + 1
IF CyclicMostX% = CellsWide THEN CyclicMostX% = 1
END IF
LOOP WHILE (walls(CyclicMostX%, CyclicMostY%) = 1)
MostX% = CyclicMostX%: MostY% = CyclicMostY%
drawwall
WEND
END SUB
SUB pause
WHILE INKEY$ = "": WEND
END SUB
SUB putx (x%, y%)
'LOCATE y%, x%: PRINT CHR$(219);
scrn(x%, y%) = 219
END SUB
FUNCTION Roll% (x%)
Roll = INT(RND * x%) + 1
END FUNCTION
DEFINT A-Z
SUB SetLengths
DIM dis(52, 22)
FOR i = 1 TO 52: FOR j = 1 TO 22: dis(i, j) = 100: NEXT j, i
ready = false
WHILE NOT ready
xstart = Roll(51): ystart = Roll(21)
IF scrn(xstart, ystart) = 250 THEN ready = true
WEND
dis(xstart, ystart) = 0
FOR dist = 1 TO 20
xbeg = xstart - dist: IF xbeg < 1 THEN xbeg = 1
xend = xstart + dist: IF xend > 51 THEN xend = 51
FOR x = xbeg TO xend
ybeg = ystart - dist: IF ybeg < 1 THEN ybeg = 1
yend = ystart + dist: IF yend > 21 THEN yend = 21
FOR y = ybeg TO yend
FOR dx = -1 TO 1: FOR dy = -1 TO 1
IF (dis(x, y) = 100) AND (scrn(x, y) = 250) THEN
IF dis(x + dx, y + dy) = dist - 1 THEN
dis(x, y) = dist
LOCATE y, x: PRINT CHR$(dis(x, y) + 48);
EXIT FOR
END IF
END IF
NEXT dy, dx
NEXT y
NEXT x
NEXT dist
' FOR i% = 1 TO 51: FOR j% = 1 TO 21
' IF scrn(i%, j%) = 250 THEN LOCATE j%, i%: PRINT CHR$(dis(i%, j%) + 48);
' NEXT j%, i%
END SUB

BIN
MAZ.EXE Normal file

Binary file not shown.

2
MAZCOM.BAT Normal file
View File

@ -0,0 +1,2 @@
bc maz /o /s;
\qc25\bin\qlink /CP:1 /f /packc /noe /ex maz;

BIN
MODAM6.BAS Normal file

Binary file not shown.

328
MODAM6.BAS.txt Normal file
View File

@ -0,0 +1,328 @@
' Copyright (c) 1995 Jeffrey R. Olson
'
' Permission is hereby granted, free of charge, to any person obtaining a copy
' of this software and associated documentation files (the "Software"), to deal
' in the Software without restriction, including without limitation the rights
' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all
' copies or substantial portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
' SOFTWARE.
DECLARE SUB modam6 ()
CALL modam6
END
SUB modam6
CONST max = 294
DIM j(1 TO max) AS STRING * 74
j(1) = "A Lava Lamp will help illuminate during darkness"
j(2) = "A Backpack can hold up to 10 reasonably-sized items"
j(3) = "A Gas Mask will protect completely from poison gas"
j(4) = "A Medkit will restore some lost hit points and poison damage"
j(5) = "Tape Recorders reveal a variety of information about your mission"
j(6) = "Power Packs recharge devices which require energy"
j(7) = "Chemical Analyzers reveal the potential effects of unknown berries"
j(8) = "A VisiScope allows you to see long distances"
j(9) = "Tylenol can restore lost hit points"
j(10) = "A Tip O'Neill mask will frighten creatures away when worn"
j(11) = "ServoBoots greatly reduce the effects of encumberance"
j(12) = "An Answering Machine will occasionally receive messages"
j(13) = "A Force Field Generator will help protect you from attacks"
j(14) = "A Bionic Cranium Implant can raise your Mental Resistance & Intelligence"
j(15) = "A Bionic Muscle Implant can raise your Strength and Dexterity"
j(16) = "Duct Tape can incapitate creatures, and repair damaged armor and suits"
j(17) = "Toilet Paper is an effective weapon against Dung Beetles and Seagulls"
j(18) = "Sunscreen provides some protection against laser attacks"
j(19) = "An ID Card will unlock most locked doors, and can deactivate some robots"
j(20) = "Flares will illuminate the outdoors when dark, but cause damage indoors"
j(21) = "A Mirror can be used to reflect laser attacks"
j(22) = "A Mr. Misty provides nourishment, and also is an effective freeze grenade"
j(23) = "A Tricorder will map castles and lairs, and can reveal creature specifics"
j(24) = "A Hand Massager will reduce fatigue"
j(25) = "Coffee will boost your constitution temporarily, and can keep you awake"
j(26) = "A Grenade Launcher can fire grenades and berries accurately at long range"
j(27) = "Brandy will boost your strength temporarily, but may make you sleepy"
j(28) = "A Microcomputer can reveal a variety of useful information"
j(29) = "A Breathalyzer will reveal your blood alcohol content"
j(30) = "Alza-seltzer relieves sickness, and can get rid of tapeworms"
j(31) = "A MindWeb Generator will protect you from mental attacks"
j(32) = "Cap'n Crunch gives you a sugar high and speeds you up temporarily"
j(33) = "A Motion Sensor will reveal the location of invisible creatures"
j(34) = "A Pencil Sharpener can sharpen pointy weapons so they are more effective"
j(35) = "A Knife Sharpener can sharpen blade weapons so they are more effective"
j(36) = "ArmorAll will restore armor to pristine condition, and may even improve it"
j(37) = "A UV Helmet helps greatly when searching for hidden things"
j(38) = "A Geiger Counter reveals nearby radiation zones outdoors, or traps indoors"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76
j(39) = "A Cannister Grenade inflicts modest shrapnel damage (kinetic damage type)."
j(40) = "A Neutrino Grenade inflicts moderate damage."
j(41) = "An Incendiary Grenade inflicts moderate heat damage."
j(42) = "A Psychosis Grenade inflicts variable mental-type damage."
j(43) = "A Gas Grenade inflicts poison damage and leaves poisonous gas."
j(44) = "A Photon Grenade inflicts tremendous laser-type damage."
j(45) = "A Fission Grenade inflicts substantial radiation damage."
j(46) = "A Vial of Acid inflicts modest damage."
j(47) = "A Stun Grenade paralyzes and inflicts minor damage in a large area."
j(48) = "A Disintegration Grenade is lethal to almost everything."
j(49) = "A Lightning Grenade inflicts modest electrical damage in a large area."
j(50) = "A Glue Grenade will imobilize anything in its sizable blast area."
j(51) = "A Fusion Grenade inflicts tremendous damage in a large area."
j(52) = "A Flash Grenade can blind everything in a large area."
j(53) = "A Blowtorch does moderate heat damage."
j(54) = "A Staple Gun does minimal kinetic damage."
j(55) = "A Shock Rod does modest electrical damage."
j(56) = "A Shotgun does substantial kinetic damage."
j(57) = "A Laser Pistol does substantial laser damage."
j(58) = "A Phaser can stun (putting enemy to sleep) or kill (doing heat damage)."
j(59) = "A Fusion Rifle does substantial radiation damage."
j(60) = "A Tickle Feather Gun (from the UnderDog show) inflicts tremendous damage."
j(61) = "A Weedeater is effective against plants."
j(62) = "A Missile Launcher does substantial damage in a large blast area."
j(63) = "Raid is particularly effective against insects."
j(64) = "A Flamethrower does substantial heat damage in line with the target."
j(65) = "A Light Sabre inflicts moderate laser-type damage."
j(66) = "A Freeze Gun does substantial cold damage in line with the target."
j(67) = "A Can of Mace does modest poison damage and makes the target flee."
j(68) = "Mr. Clean is especially effective against slimes, molds, etc."
j(69) = "A Squirt Gun does minimal damage except against Fire Ants, Phoenixes, etc."
j(70) = "A Chainsaw inflicts horrible wounds."
j(71) = "A Blaster can fire many shots at a time, inflicting modest heat damage."
j(72) = "Silly String will immobilize a target."
j(73) = "A Stun Gun will paralyze a target."
j(74) = "A Salt Shaker can be a grenade, but is only useful on Slugs-like things."
j(75) = "A Pepper Shaker can be a grenade, and makes targets sneeze."
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76
j(76) = "A Boise Souvenir Ashtray is useless"
j(77) = "Sunglasses protect against blindness & give added influence over robots"
j(78) = "A Toaster is useless"
j(79) = "A Cheese Grater is useless"
j(80) = "A Bionic Spleen Implant can raise your Constitution & Radiation Resistance"
j(81) = "A Sony Watchman can map levels in some of the special castles"
j(82) = "A Slinky is useless"
j(83) = "A Veg-O-Matic can injure nearby creatures, especially edible ones"
j(84) = "A Kalediscope is useless"
j(85) = "A Fountain Pen is useless"
j(86) = "The flash from a Pocket Instamatic can blind creatures that see it"
j(87) = "A Hammock will put you to sleep immediately"
j(88) = "A Voodoo Doll will kill all nearby creatures of a specific type"
j(89) = "A Turbocharger will speed up any vehical"
j(90) = "A Chia Pet is useless"
j(91) = "A Wrist Watch will tell you how much time remains to complete your mission"
j(92) = "A Radar Gun will reveal how fast a creature can move"
j(93) = "A Radar Detector is useless"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76
j(94) = "A Radiation Suit will reduce the damage caused by radiation"
j(95) = "A Thermal Suit will reduce the damage caused by heat and cold"
j(96) = "A Reflective Suit will reduce the damage caused by lasers"
j(97) = "A Hovercraft provides very fast transportation over any terrain"
j(98) = "A Computer Workstation can reveal a plethota of useful information"
j(99) = "A Microwave Oven can prematurely ripen berries, and makes food tastier"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(100) = "A Wetsuit allows water movement, and will reduce acid and shock damage"
j(101) = "A Safe will protect up to 10 items, and can be left outside of castles"
j(102) = "A Transmogrifier will polymorph creatures, and can change berry types"
j(103) = "A TK-5 AntiTank Gun is an extremely effective long-range weapon"
j(104) = "A Jetpack gives rapid movement for short periods of time"
j(105) = "A Golf Cart provides transportation at a faster pace than walking"
j(106) = "A Pogo Stick provides an alternative form of transportation"
j(107) = "A Cloaking Device renders you temporarily invisible"
j(108) = "A Kayak can be used to move through water"
j(109) = "A Rubber Raft can be used to move through water"
j(110) = "A Home Movie Projector will put creatures to sleep"
j(111) = "A Camoflage Suit makes you somewhat harder to detect"
j(112) = "A Pinstripe Suit gives added influence over robots when an ID card is used"
j(113) = "A Bulletproof Suit lowers your AC and reduces damage from kinetic attacks"
j(114) = "A Repulsion Generator will prevent creatures from moving next to you"
j(115) = "A Displacer allows you to teleport over short distances"
j(116) = "A Jackhammer can blast through walls, and is an effective weapon"
j(117) = "A Tent will allow you to sleep in relative safety outdoors at night"
j(118) = "A Neutron Suit irradiates nearby critters each turn but hurts you somewhat"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76
j(119) = "A Cigarette Machine is useless"
j(120) = "A Cabinet is useless"
j(121) = "A Liposuction Device will remove an udder"
j(122) = "A Still will distill berries to nectar, and nectar to extract"
j(123) = "A Cyclotron just might win you the Nobel Prize in physics"
j(124) = "A Laser Printer is useless"
j(125) = "A Wide Screen TV can map levels in some of the special castles"
j(126) = "A Prosthetic Leg is useless"
j(127) = "A Dialysis Machine will cure you and remove poison effects, tapeworms, etc"
j(128) = "A Porta-Potty is useless"
j(129) = "A Sousaphone can make critters stand still, run away, become confused, etc"
j(130) = "A Kevorkian Machine is useless"
j(131) = "A Leafblower is useless"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76
j(150) = "The color of a berry reveals its degree of ripeness. The six colors"
j(151) = "a berry can have are red, orange, yellow, green, blue, and purple,"
j(152) = "in increasing order of ripeness. Berries which are more ripe are"
j(153) = "more potent, and will have effects which last longer. For example,"
j(154) = "purple exploding berries do much more damage than orange ones, and"
j(155) = "forcefields created by blue berries last longer than those created"
j(156) = "by red ones. In addition, if a berry can have either a good or bad"
j(157) = "effect, the ripe berries are more likely to cause the good effects."
j(158) = "Thus, a blue berry that alters speed tends to speed you up, while a"
j(159) = "red one is likely to slow you down. Berries that alter your stats"
j(160) = "are particularly important examples of this, wherein red and purple"
j(161) = "ones change your stats permanantly, purple usually raising, and red"
j(162) = "usually lowering; the effect of the orange-blue ones is temporary."
j(163) = "Berries will ripen with time; using X(amine) can be illuminating."
j(164) = "This is the Grinch, a crazed psychotic intent upon destroying the"
j(165) = "world. He has obtained a deadly toxin capable of eradicating all"
j(166) = "life and intends to release it at noon on September 8th, just a week"
j(167) = "away. He lives in a castle hidden within a radiation zone. Your"
j(168) = "mission, should you choose to accept it, is to stop the Grinch and"
j(169) = "destroy his nerve toxin. This tape will self-destruct in 5 seconds."
j(170) = "Here is the first castle you should infiltrate, the secret hideout"
j(171) = "of Elvis, thought by some to be dead for many years. He is an agent"
j(172) = "like you who holds for you a secret device you'll need to cross the"
j(173) = "bottomless chasm. Be wary of counterspies, "
j(174) = "This is the second stronghold you must visit, 1313 Mockingbird Lane."
j(175) = "You must retrieve a map showing the location of the Grinch's castle."
j(176) = "The map is known to be guarded by Grampa, a dangerous enemy who will"
j(177) = "require special measures to neutralize. Good luck, "
j(178) = "Here is the third castle you should visit, the castaways' fortress."
j(179) = "Here the impervious Gilligan holds an anti-viral serum you will need"
j(180) = "to ward off the effects of the Grinch's nerve toxin. It isn't known"
j(181) = "what forces, if any, Gilligan is susceptible to. Consult the lore of"
j(182) = "the computer if you can. This tape will self-destruct in 5 seconds."
j(183) = "This is the fourth castle you should visit, the Trump Castle. Held"
j(184) = "within, in the posession of the Trump King, is the only surviving"
j(185) = "Presidential ID Card, which you will need to gain access to the"
j(186) = "Grinch's stronghold. This tape will self-destruct in 5 seconds."
j(187) = "Here is the final castle you should attempt to infiltrate, the"
j(188) = "castle of Those Who Came In Second. The cult leader, Buzz Aldrin,"
j(189) = "has a space suit necessary to ward off the powerful radiation which"
j(190) = "protects the Grinch. This tape will self-destruct in 5 seconds."
j(191) = "This is the Grinch's stronghold, hidden in a radiation zone and"
j(192) = "protected by nerve toxin. It's locked and encircled by a bottomless"
j(193) = "chasm. The Grinch is tremendously powerful and psychotic. He may"
j(194) = "have a weakness, however. Be careful, "
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76
j(195) = " Congratulations! You have successfully completed AlphaMan!"
j(196) = "Now would be an excellent time to register this software. By doing this,"
j(197) = "you will help support the ShareWare concept which allows users to try out"
j(198) = "software before paying for it. You will also help to support the author"
j(199) = "financially, allowing him to continue to create new products."
j(200) = "Anyone sending $15 or more will receive the most recent version, and will"
j(201) = "receive notification of updates (which will include lots of new features)."
j(202) = "Updates will cost just $4 to cover shipping and handling, but will be free"
j(203) = "if serious bugs are found. You will also receive answers to any questions."
j(204) = "Send check, disk type and version number (shown on opening screen) to:"
j(205) = "Jeffrey R. Olson, 214 E. Sherwin Dr., Urbana, IL 61801"
j(206) = "Please send any suggestions, comments or bugs to the above address, even"
j(207) = "if you don't intend to register your copy. The author will consider all"
j(208) = "ideas for incorporation into the game, will credit you if an idea is used,"
j(209) = "and guarantees a response if you include a self-addresed stamped envelope."
j(210) = " Please distribute this game widely."
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76
j(211) = "Weapons, armor and shields are of varying effectiveness depending on the"
j(212) = "type and condition of the item. Specifics such as the base damage done,"
j(213) = "base armor class provided, etc, of specific items can be obtained using a"
j(214) = "computer. Using 'X'(amine) will reveal the condition an item:"
j(215) = " Weapons may have bonuses to hit and/or to damage; for example, a +1 to"
j(216) = "hit dagger will hit more often than a normal dagger, and a -1 damage flail"
j(217) = "will do less damage than a normal flail."
j(218) = " Armor and shields can sustain a varying number of 'damaging' attacks"
j(219) = "before they are destroyed, and may have modifiers to the defense that they"
j(220) = "provide; for example, a +1 shield protects better, while -1 armor protects"
j(221) = "worse than average for that specific type of shield or armor."
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76
j(222) = "Jeffrey Olson is a member of the Association of Shareware Professionals"
j(223) = "(ASP). ASP wants to make sure that the shareware principle works for you."
j(224) = "If you are unable to resolve a shareware-related problem with an ASP"
j(225) = "member by contacting the member directly, ASP may be able to help. The"
j(226) = "ASP Ombudsman can help you resolve a dispute or problem with an ASP member"
j(227) = "but does not provide technical support for members' products. Please write"
j(228) = "to the ASP Ombudsman at 545 Grover Road, Muskegon, MI 49442-9427 USA"
j(229) = "FAX 616-788-2765 or send a CompuServe message via CompuServe Mail to:"
j(230) = "ASP Ombudsman 70007,3536."
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76
j(231) = "Exploding berries are effective grenades with a blast radius of 1 square."
j(232) = "Radiating berries are effective grenades with a blast radius of 1 square."
j(233) = "These berries provide significant nourishment, and can make critters burp."
j(234) = "Refresh berries make you well-rested and temporarily help keep you rested."
j(235) = "Poison berries can be thrown to do poison damage if they hit a critter."
j(236) = "Curing berries will restore some hit points, and some reduced by poison."
j(237) = "These berries are like normal curing berries, only more potent."
j(238) = "These berries will add or subtract experience points depending on color."
j(239) = "Strength-altering berries raise or lower strength, depending on color."
j(240) = "Dexterity-altering berries raise or lower dexterity, depending on color."
j(241) = "Constitution-altering berries raise or lower CON, depending on color."
j(242) = "Radiation Resistance-altering berries modify RR, depending on color."
j(243) = "Mental Resistance-altering berries modify MR, depending on color."
j(244) = "Intelligence-altering berries modify intelligence, depending on color."
j(245) = "Speed-altering berries will make you fast or slow, depending on color."
j(246) = "Berries that toughen skin will permanantly lower your armor class."
j(247) = "Intoxicating berries will confuse you if eaten, or a critter if thrown."
j(248) = "Cleverness berries make you better at figuring out and using tech devices."
j(249) = "Berries which add body parts are generally useless except for nourishment."
j(250) = "These berries quench or heighten a mutation, depending on color."
j(251) = "These berries help you see invisible things, and will map a castle level."
j(252) = "These berries will blind you if eaten, but work on critters if thrown."
j(253) = "These berries make you burp or sneeze, but work on critters if thrown."
j(254) = "These berries make you forget things but will confuse creatures if thrown."
j(255) = "These berries will frighten critters away temporarily."
j(256) = "Detoxifying berries will remove the lingering adverse effects of poisons."
j(257) = "These berries give you a Rambo complex, making you strong but dumb."
j(258) = "These berries will make you temporarily invisible."
j(259) = "Teleport berries randomly teleport you, and work on critters too."
j(260) = "Relax berries will put you or a creature to sleep."
j(261) = "Klutz berries will make you extremely clumsy, but work on critters too."
j(262) = "While regenerating, you regain lost hit points much faster."
j(263) = "These berries give you an odor that attracts creatures."
j(264) = "While protected by a forcefield, you'll sustain reduced damage."
j(265) = "These berries are effective weapons if thrown."
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76
j(280) = "You are an agent who must use all available means to save the world from"
j(281) = "disaster. These means include arms and armor, technological items you can"
j(282) = "find and figure out, mutated berries which bestow special powers and your"
j(283) = "own mutations. You can learn your mission by using a Tape Recorder which"
j(284) = "can be found nearby at the start of the game. See the file README.TXT for"
j(285) = "additional information regarding AlphaMan. Press '?' at any time to see"
j(286) = "a list of commands or for context-sensitive help."
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76
j(287) = "You can 'u'se most items in the game. If you use a weapon, shield or armor"
j(288) = "it will be in use until it is destroyed or you 'U'nuse it (that is, it's"
j(289) = "not necessary to use one repeatedly). You can also use most tech devices"
j(290) = "after you've figured them out (some will stay in use until Unused, such as"
j(291) = "a Radiation Suit or Lava Lamp), although you throw grenades. You must eat"
j(292) = "Spam, Beef-a-Roni, and most berries. You also use many mutations, such as"
j(293) = "Laser Generation or Hypnosis. Some mutations, however, such as Heightened"
j(294) = "Dexterity or Military Genius, are constantly in use."
OPEN "alphaman.6" FOR BINARY AS #1: CLS
OPEN "items.txt" FOR OUTPUT AS #2
FOR i = 1 TO max
PRINT #2, RTRIM$(j(i))
FOR k = 1 TO 74
MID$(j(i), k, 1) = CHR$(ASC(MID$(j(i), k, 1)) XOR (ABS(i * 17 + k * 31) MOD 256))
NEXT k
PUT #1, , j(i): LOCATE 1, 1: PRINT i;
NEXT i
CLOSE
END SUB

BIN
MODJNK.BAS Normal file

Binary file not shown.

503
MODJNK.BAS.txt Normal file
View File

@ -0,0 +1,503 @@
' Copyright (c) 1995 Jeffrey R. Olson
'
' Permission is hereby granted, free of charge, to any person obtaining a copy
' of this software and associated documentation files (the "Software"), to deal
' in the Software without restriction, including without limitation the rights
' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all
' copies or substantial portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
' SOFTWARE.
DECLARE SUB modify ()
modify
END
SUB modify
DIM j(-2 TO 420) AS STRING * 68
j(-2) = "red orange yellow green blue purple berry object devicelarge pit"
j(-1) = "mental resistanceintelligencehas no effect toughens your skin grew!"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
'-------------------------------------------------------------------------
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(0) = "strengthdexterityconstitutionradiation resistanceI Dream of Jeannie"
j(1) = "You've found a can of Beef-a-RoniSpamMain MapGenerating terrainClub"
j(2) = "You return to normal speedYou feel sober againcan of cans of some a "
j(3) = "Strike any key ...You have been killed by alphaman.scr Shieldsmall "
j(4) = "Strength :Dexterity :Constitution :Radiation Resistance :DaggerMace"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(5) = "Mental Resistance :Intelligence :hits out ofArmor Class :Pitchfork"
j(6) = "Hunger :Encumberance :Fatigue :Experience :Level :experienceextract"
j(7) = "Drop what (Esc to exit) ?You have to 'U'nuse your armor first nectar"
j(8) = "Eat what (Esc to exit) ?Yuck! Not even my uncle could eat that! *"
j(9) = "Hey, isn't such bad stuff!Mmm. Tasty stuff!Good eatin'You feel ill"
'-------------------------------------------------------------------------
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(10) = "Theexplodes in your face!eating an exploding berryradiation Your : "
j(11) = "blasts you with radiation!makes you feel sickmuch betterkilled by "
j(12) = "tastes greatrefreshes youeating a poison berrylethaltoxicBoom!Flail"
j(13) = "makes you more skillfullowersraiseslessdrunkclever returns to normal"
j(14) = "speeds you upslows down You are now level another inch on your nose"
j(15) = "another buttocklobes on your pancreashornsYou grow turnedShort Sword"
j(16) = "a big eyebrow across your foreheada fairly cumbersome uddergiggle"
j(17) = "quenches your a weak heart blinds you!burphiccupcoughaaaChoooyawn"
j(18) = "Figure out what (Esc to exit) ?You wield or throw your Super!Dart"
j(19) = "Spam is a pink canned meat that tastes great glazedTitanium Dagger"
j(20) = "Beef-a-Roni is a macaroni meal in a canYou wear your for protection"
j(21) = "s come in handy for deflecting attacksYou can't quite figure it out"
j(22) = "Most berries are eaten for their interesting effectsI can't do that."
j(23) = "You've already identified your BloatedVery FullHungryFamishedArrow"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(24) = "You've figured it out. It's a You make some progress on itSorry "
j(25) = "Starvingof starvationNonVery LightModerateVery HeavyOverloadedhail"
j(26) = "Dead TiredWell RestedPoopedExhaustedG. Gordan LiddyJohn Mitchell+-=+"
j(27) = "Welcome to AlphaMan, the New BeginningCreated by Jeffrey OlsonFound "
j(28) = " Assisted by Peter Jessop Enter your character's name : Please wait"
j(29) = "Tricky DickSpiro AgnewJeb McGruderJohn EhrlichmanBob HaldermanBolt"
j(30) = "You've killed You deserve a pat on the back!Groovy!Bitchin' !Spear"
j(31) = "Hip hip hurray!Gee that's swell!Good for you!I say, smashing job!"
j(32) = "Like, totally gnarly!The Quayle appearsNow you're in for it!explode"
j(33) = "The Gas Spore explodes!an exploding Gas SporeOuch! Those darts hurt."
j(34) = "Your went up!You are now level went down!turning wimpy bathesEnd ?"
j(35) = "Strike space bar to continue ...Known small tech devices :Duh..."
j(36) = "Known berries :Known large tech devices :And even more! against+-=++"
j(37) = "Main mapRadiation ZoneCastlesLocal MapInside Castle in radiation"
j(38) = "nuked shriveled ate away fried destroyed zapped froze offHand Axe"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(39) = "sucked away tickled off lopped off his nose!an ear!an eye!an arm!"
j(40) = "He looks like french fries now!Something bad happenedTitanium Sword"
j(41) = "BumCivDinEroFezGooHumJamKroLinMarNefPorQuaRawShuTinVorWamXerYumZiz"
j(42) = "alybumcasdumflegleganhamjumlasloomaynupnooporraysumtarvexwogyamzay"
j(43) = "Use arrow keys to indicate targetInvalid keystrokeBeyond rangeregion"
j(44) = "Hit Enter when ready or Esc to exit Beyond the edge of the world+-=+"
j(45) = "Thick ForestLight WoodsPlainsMarshSwampLakeCastleNoneInside Ruins"
j(46) = "That's terribly, terribly wrong. Try again.Gads! It got all tangled"
j(47) = "You already see that regionYour vision isn't quite that good.Halberd"
j(48) = "You are in a valley in the post-holocaust ruins ofYou're outside now"
j(49) = "Central New York. Mutants rule the world.This looks like the end..."
j(50) = "Bad creatureGood for you!You hitYou missedRead my lips :plummeting"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(51) = "You couldn't hit the broad side of a barn!It went off! Ouch!injured"
j(52) = "You could probably still hit Ctrl-Alt-Del entwined youOof! You fell!"
j(53) = " bit you bit and clawed you hit you with darts You're indoors!"
j(54) = " irradiated youPorta-Potty poisoned you hit you with a jet of acid"
j(55) = " hit you with a laser assaulted your brain shocked you burnt you"
j(56) = " froze you constricted you leeched some of your hits stole missed"
j(57) = " tickled you mercilesslyYou can't carry anything else of damage+-=++"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(58) = "You made it out of the water!Your beef jerky is a complete loss.+-=+"
j(59) = "Local TerrainYou'll go off the edge of the world!You are drowning!"
j(60) = "You shouldn't have gotten in over your head!Stairs upStairs downHole"
j(61) = "has killed to AC,Herman Munster is green tooYou diced your hand!+-=+"
j(62) = "S(hort) or L(ong) range (Esc to exit)?(long range can be risky)+-=++"
j(63) = "Local RegionOuch! You ended up inside a tree!teleporting into a tree"
j(64) = "You don't feel so good yourself.Throw what (Esc to exit) ?Lawn Dart"
j(65) = "UnUse what (Esc to exit) ?You're not currently using thatradiate+-=+"
j(66) = "No longer using your No longer wearing your That doesn't make sense"
j(67) = "You weren't using your force fieldYour force field is now offacidify"
j(68) = "You're already using thatOne usually eats thatNow using your Kaboom!"
j(69) = "You're already wearing armorNow wearing your You have to waitblasted"
j(70) = " more turnsYou are constantly using that mutationYour attack made"
j(71) = "Your sonic blast has injured Your laser missed grow!giving up.ALF"
j(72) = "You have to pick a living being to attackYour laser has injured you!"
j(73) = "Your mental blastThe explosionYour mental attack has no effect is "
j(74) = "It will take turns to totally heal.Your force field is already ona "
j(75) = "How many turns will you sit motionless ?Your force field is now on "
j(76) = "Your molecular disruption has killed Your life leech has injured "
j(77) = "You haven't figured that out yetNothing happensYour cryogenicsBravo!"
j(78) = "you feel betterextra-strength tylenolOne must throw grenadesMr. Ed"
j(79) = "Great shot!It seems uninjuredSmoking is bad for youa cheese grater"
j(80) = "You're now wearing your sunglassesYou need breadQuit now? point1. "
j(81) = "You scraped your knuckle!All you get is a rerun of Continuing game"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(82) = "You pass out you're so tiredThere's already something thereOutasite!"
j(83) = "Your forcefield blocked% of the damageYour shock injuredLong Sword"
j(84) = "Ruins level Castle level Grinch's PadYou can't get out of the water!"
j(85) = " gobbles the You'll need to take that off first splatters into jam"
j(86) = "Too bad you're fresh out of toastIt seems unaffectedYow! That smarts"
j(87) = "You broke it!Hall of the DeadHe bursts into flames! makes you scarey"
j(88) = "What a foul smell!You're wearing sunglasses!You're wearing a mask!"
j(89) = "What did the Skipper do with his hat?The Flying Nun pit!Titanium Axe"
j(90) = "You fell in a pit!falling in a pitAn arrow hit you!an arrowa dart2. "
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(91) = "A dart hit you!Acid fell on you!acidFire engulfed you!firea laser up"
j(92) = "A laser beam hit you!A shock zapped you!electricityYou got radiated!"
j(93) = "Done LoadingYour armor is destroyeddamagedshieldNot yet implemented"
j(94) = "Your tenticles injuredYour tenticles killeda Mets hatdorky-looking"
j(95) = "Now you're in deep doodoo!You were warned to abandon all hope!Sticky!"
j(96) = "m (ental) usep (hysical) useMcHale's NavyThe Beverly Hillbillies+-=+"
j(97) = "Lorena and Tonya's Weapon and Armor Emporiumcorrodedimmobilized+-=++"
j(98) = "Clinton Health Care FacilityWhere you won't get what you need, but"
j(99) = "you don't have to pay for it until April 15Would you like Stun Gun"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
'-------------------------------------------------------------------------
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(100) = "Electrical GenerationThat dude was HOT!Awesomely played!The best!"
j(101) = "Heightened DexterityThe greatest!An outstanding job!You entwined "
j(102) = "Heightened StrengthYour quills injuredYou're coverage has expired!"
j(103) = "Heightened VisionWhich would you like:Vitamins (raise your HitMax)"
j(104) = "Tough ExoskeletonRNA Injections (temporarily heighten a mutation)"
j(105) = "Sonic AttackBionics (raise stats) Subdermal Implants (lower your AC)"
j(106) = "Blood Structure ChangeDialysis (restore poison damage)Family Affair-"
j(107) = "Reflective Skin Laser Surgery (temporarily give enhanced vision)"
j(108) = "Laser GenerationHormones (temporarily bestow regeneration)assailed"
j(109) = "Heightened EnduranceTransduction Implants (create a forcefield)+-=+"
j(110) = "Foul MuskYou're now protected by a MindWebMindWeb Generatorhis hat!"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(111) = "Acidic SalivaYour MindWeb dissipatesYou sped up You slowed down "
j(112) = "Poison ClawsA Treatise on Berry Colors hit you with homemade acid"
j(113) = "Heightened Speed zapped you with a homemade batteryYou healed +-=++"
j(114) = "Radiation GenerationYou were shielded from by your MindWebvery hurt"
j(115) = "Quills burnt you with homemade flashpowderYou toughened up How dull!"
j(116) = "TenticlesYou confused You blinded his hair tonic made you sneeze"
j(117) = "Light Generation broke your Keptibora SerumYou may fire up to shots"
j(118) = "Four Arms-------Press Esc to quit firingOoh, sugar high!Donald Trump"
j(119) = "Poison Gas------Box of Cap'n CrunchRoll of Duct TapeFusion Grenades"
j(120) = "Military GeniusRepulsion GeneratorHow the Grinch Stole Christmas"
j(121) = "Scientific GeniusYour repulsion field is now activepermanantly +-=+"
j(122) = "Heightened WillpowerSurrounded by a repulsion fieldEbony and Ivory"
j(123) = "Mental BlastYou fixed it with your duct tape!Tie a Yellow Ribbon"
j(124) = "TeleportationYour repulsion field prevents you from movingBlindness"
j(125) = "Mental HealingMacho ManSeasons in the Suna GiloolyMotion Sensor+-=+"
j(126) = "Force FieldDon't Worry Be HappyWould you like a club on the knee?"
j(127) = "Molecular DisruptionOuch ouch ouch!Song Sung BlueMacArthur Park+-=+"
j(128) = "Life LeechTech Device SpecificsPlease select an item to learn about:"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(129) = "InvisibilityOne Tin SoldierDo The HustleThat's a pale That's a deep"
j(130) = "CryogenicsYour flashbulbNothing invisible detectedBurping/Sneezing"
j(131) = "HypnosisFragmentation GrenadeCan of Silly StringKnife Sharpener+-=+"
j(132) = "PsychokinesisYou're a bit sharp on the high notesBottle of Seltzer"
j(133) = "Heightened Luck-What a nice little tune!What a confusing song!+-=++"
j(134) = "Redirection-----A sublime and haunting melodySharpen what?Kablam!"
j(135) = "Mental Control--Duralloy is difficult to sharpenArmorAll what?+-=++"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(136) = "Bottle of ArmorAllThe Puffball explodes!an exploding puffballhealthy"
j(137) = "You feel oddYou're sweatingYou feel lightheadedYour heart is racing"
j(138) = "Hit points : 1 You need & experience to reach levelWrist Watch+-=+"
j(139) = "The nerve toxin has already been releasedYou made Keptibora Essence"
j(140) = "The nerve toxin has already been destroyed1313 Mockingbird Lane+-=++"
j(141) = "until the nerve toxin will be releasedDisplacerJackhammerRange : ?"
j(142) = "Pencil SharpenerYour blood alcohol content is .%You feel good as new"
j(143) = "That is able to move square per turn squares per turn Hurrah!"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(144) = "It looks like some sort of weaponvehiclekitchen appliancedetector"
j(145) = "farm implementcommunicatorgrenadeprotective deviceelectronic device"
j(146) = "Answering MachineRadar DetectorHologram GeneratorBreathalyzerblind +"
j(147) = "That's not a pointed weaponYou can moveYou feel like an idiot+-=+-=+"
j(148) = "Ahh, sharp enough to pick your teeth withYour Medkit revived you!"
j(149) = "That's not a blade weaponOh no, you ruined it!You destroyed your "
j(150) = "Ahh, sharp enough to shave withSay, that really improves it!+-=+-=++"
j(151) = "Large TitaniumLarge WoodenSmall Duralloy pounded youPepper Shaker"
j(152) = "Your acid missed you detoxifies you Your poison missedhas injured"
j(153) = "Zoom!Your radiation beam missedIndicate trap to removeThat's silly"
j(154) = "You removed it!It went off!You fell in!You were unsuccessfulAhhhhh"
j(155) = "small shiny devicelarge tech deviceYour constitution went updownUgh"
j(156) = "Strike ? for help when game beginsYou've discovered mesons!refresh"
j(157) = "You lost 10 lbs from your thighs!Yipes! Poison gas!poison gasGregre"
j(158) = " destroyed damaged your armor and shieldIt tastes even better hot!"
j(159) = "???????????????????You throw your Far out!Chia petLightning Grenade"
j(160) = "It should have lovely green fur in 3-7 daysstuck in a webMonolith"
j(161) = "The Phoenix rises from its ashes!You're caught in a web!Lightning!"
j(162) = "being struck by lightningYou're back outsideYou hear music : burped!"
j(163) = "Weapons, in increasing qualitybizarreYou stepped in superglue!+-=+-="
j(164) = "Armor and shields, in decreasing qualitystuck in glue whiffed+-=+-=+"
j(165) = "You have no messagesYou have a message from your motherBuzz Aldrin"
j(166) = "She asks why you never call herHe says you should wear the Mets Hat"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(167) = "He reminds you to bring the Presidential ID Cardemit light is ruined"
j(168) = "He says to save the Gregre berry until you need itLeafblower+-=+-=++"
j(169) = "He says you have to go through him to get GilliganYour claws+-=+-=++"
j(170) = "He needs you to defeat the impersonatorsDo you want to play again? "
j(171) = "You got betterGuh, do we get to win dis time?Distill what?Javelin"
j(172) = "You've destroyed both items!teleporting into a wallsolid ground+-=++"
j(173) = "You feel light on your feetSomeone tampered with these!Light SabreNo"
j(174) = "You feel great!You shrink back down to sizeYou can see againShuriken"
j(175) = "Your extract is destroyed!Microwave what?Analyze what?ContainsWooden"
j(176) = "shoulder pork and hambeef and a roninorganicsan ultrahard alloy+-=++"
j(177) = " something to FoodContact weaponsRange weaponsArmorShieldBerries+-=+"
j(178) = "Small tech devicesLargeCreaturesLoreSelect type :Welcome to IBMSleep"
j(179) = "Spam usually makes you 2 catagories less hungry,damage,to hit,range"
j(180) = "while Beef-a-Roni generally makes you fullbase AC hits sustainable"
j(181) = "Throwing AxeTitanium DartDuralloy SpearDuralloy PitchforkSmall Metal"
j(182) = "Duralloy SwordLarge MetalInside Lair Whooosh!! Cured Hide Armor"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(183) = "PlatemailChainmailFiberglass ArmorNo ArmorRingmailHeavy Fur Armor"
j(184) = "Plastic ArmorLava lamp BackpackGas MaskMedkitTape RecorderPowerpack"
j(185) = "Chemical AnalyzerVisiScopeExtra-Strength TylenolTip O'Neill Mask+-=+"
j(186) = "alpha.str Cannister GrenadeNeutrino GrenadeIncendiary GrenadePhaser"
j(187) = "Psychosis GrenadeGas GrenadeBlowtorch Staple GunShock RodShotgun"
j(188) = "Laser PistolFusion RifleTickle Feather GunWeedeaterMissile Launcher"
j(189) = "Can of RaidBoise Souvenir AshtrayPair of SunglassesBroken Toaster"
j(190) = "Cheese GraterBionic Spleen ImplantSony WatchManSlinkyVeg-O-Matic+-=+"
j(191) = "Radiation SuitThermal SuitReflective SuitHovercraftMicrocomputerSafe"
j(192) = "Microwave OvenWetsuitTransmogrifierCigarette MachineCabinetCyclotron"
j(193) = "Liposuction DeviceStillLaserprinterYou are described the following :"
j(194) = "KineticRadiationPoisonAcidLaserMental BlastElectricalHeatColdSteal"
j(195) = "Lasers Life LeechTickleattack,Resistances1/3 from KineticRegenerate"
j(196) = "ElectricityGrow from heat/laser/turnMental AttacksDamage ArmorSpore"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(197) = "Quills/shock for 1-4ConstrictionElvis would get the words right+-=++"
j(198) = "The Grinch's castle is surrounded by poison gas.Gilligan's Island"
j(199) = "The Grinch has a soft spot for Roast BeastI Love LucyExiting Save"
j(200) = "Pair of Servoboots already exists.Enter new filename :Bad filename :"
j(201) = "AlphaMan Release 1.1 by Jeffrey R. Olson Saving Game ..."
j(202) = "Electronic mail address: 76473.225@compuserve.com Done Saving!. &"
j(203) = "See usenet newsgroup rec.games.roguelike.misc Loading Game ..."
j(204) = " doesn't exist.( .ALF will be added )Salt ShakerKalediscopecure gobs"
j(205) = "was uninjured by your shockGreen AcresForce Field GeneratorRambify"
j(206) = "Fountain PenWide Screen TVPhoton Grenadeprotected yousatisfy hunger"
j(207) = " has been destroyedpoisonWeaponsadd expertisemodify STRalter DEX+-=+"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(208) = "change CONmodify RRaffect MRalter INTalter speedtoughen skinfrighten"
j(209) = "intoxicateadd tech abilityadd body partsinfluence mutationsdetoxify"
j(210) = "increase awarenesscause blindnessreduce tactcloud the mindZ (sleep)"
j(211) = "F1 display stats F2 display items F3 display known stuff s (earch) "
j(212) = "F5 display main map F6 display detailed map F7 show symbols The +-=+"
j(213) = "F9 creditsF10 SneakyKey? helpEsc clear text. restu (se) something"
j(214) = "< go down stairs > go up stairs a (gain)d (rop) itemQ (uit) game a "
j(215) = "e (at) food or berryf (igure) outr (emove) trapt (hrow) something10"
j(216) = "S (ave) gameU (nuse) somethingÍÍ» WallsC>Radar Gun d## damage"
j(217) = "Experience :######You teleported +-=+-=+-=+-Range :##alphaman.dat"
j(218) = "Pocket InstamaticProsthetic LegDialysis MachineTK-5 Antitank Gun+-=+"
j(219) = "Gadzooks! Radiation!Now you're pooped!Your finger was on the lens."
j(220) = "Heavens to Betsy, what pretty colors!The lens cap was on.good as new"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(221) = "Egads, you got ink all over yourself!The foreground is out of focus."
j(222) = "The film jammed.You've still got your own legs.It's emptyExhausting"
j(223) = "None of your software is compatibleEnergize what?You've fried the "
j(224) = "That needs no powerYou've energized your Bionic Cranium Implant+-=++"
j(225) = "You can't energize while using an itemBionic Muscle ImplantTrample"
j(226) = "You feel like six million buckslousytrampled you hit you with spores"
j(227) = "Wow, groovy!for points of damageOh gross! The last guy was sick."
j(228) = "You regain your sensesFission GrenadeFlamethrowerTitanium Platemail"
j(229) = "Select item to place in backpack :Your backpack is fullpoor driving"
j(230) = "Select item to remove from backpack :That's too large for your pack"
j(231) = "Ouch! You drive like you're from Boston won't fit through the door"
j(232) = "Now you're sick too!Indicate direction :JetpackSousaphoneWater+-=++"
j(233) = "You play a few bars from ConvoyRhinestone CowboyBoogie Wonderland"
j(234) = "Shake Your Groove ThingYou look so cool!You have to Unuse that first"
j(235) = "Golf Carta Rick Astley songSkilletRoll of Toilet PaperOoh, Greasy!"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(236) = "Duralloy ChainmailTitanium ChainmailBottle of Sunscreen smells nice"
j(237) = "Computer Workstationmade you fall asleep make invisiblePogo Stick"
j(238) = "The scales fall from your eyesYou hit the berrybushYou've killed "
j(239) = "The berrybush zapped youYou feel drainedAttraction OdorEnergy Drain"
j(240) = "AnywhereYou are being constricted.You can't run away from this."
j(241) = "Cloaking DeviceYou teleported!ID CardFreeze GunIt's too dark to see"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(242) = "drunk drivingYou removed your udder!more robustYour is destroyed"
j(243) = "KayakRubber RaftThose spikes hurt!F4 view character status Tickling"
j(244) = "ScrollLock fast playYou no longer feel cleverYou are currently :"
j(245) = "stuck in a pitspeedyslowed downconcentratingsunscreenedstrongweak"
j(246) = "agileclumsyrobustinfirmmore resistant to radiationlessmoribundTrump "
j(247) = "strong-willedweaksmartdumbdrunkkeen-eyedblindan eggheadfrightening"
j(248) = "big 'n dumbinvisiblefeeling poorlyudderedbeing constrictedYou barf!"
j(249) = "weakened by poisonFast Play is onblinded youmade you sickbarfing"
j(250) = "BlindingSickeningVial of AcidCan of MaceHammockYou drift off ......"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(251) = "You lie awake thinking aboutthe day's eventshow noisy it is outside"
j(252) = "how badly you need a showerZzzzzhow tired you areMornin' sunshine!"
j(253) = "Your back hurtsYou had a nightmareYou wake upYou fall asleep gadget"
j(254) = "You're feeling drowsyIt'll be getting dark soonYou need to eatrest"
j(255) = "You are rudely awakenedBox of FlaresMirrorMr MistyIck! Nosehairs!"
j(256) = "The sky lights upThe entire room blazes momentarily stung yousuit of"
j(257) = "You reflected the laser back on. It looks hurt.Examine what?ghost"
j(258) = "The Maggot became a Fly!Oooh, low salt Spam!Zoikes! Expired 11/78"
j(259) = "Press I to examine an item,S an object on the screen has unlimited "
j(260) = "It looks very complicatedUse f to try to figure it outdeep waterbog"
j(261) = " has no uses leftIt's an ordinary That's stairwayyouan empty square"
j(262) = "X (amine) something use leftBottle of Mr. Clean Civilian"
j(263) = "ScientificMilitaryPresidentialMy my, aren't we Mr. Bigshot?Sluggish"
j(264) = "He says you'd better deal with Ivana firstP (revious) message+-=+-=+"
j(265) = "Not even your Medkit could save you!corrodes your face!an Ivana wig+"
j(266) = "eating an acid berryWay to go!Now you're cookin'!AntiToxin Serum+-=+"
j(267) = "Another one bites the dust!Hit Points :&-& Creature is : fleeing "
j(268) = "burping sneezing rubblelocked doorTitanium JavelinDuralloy Arrow+-=+"
j(269) = "Your grenadeThat item needs no energyThat item cannot be recharged++"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(270) = "Hit Points :& Movement Rate :& Armor Class :&armor was damaged!"
j(271) = "Elvis is on the The Grinch is on the highest castle levelshorted out"
j(272) = "lowest castle levelW (impy) critter setupshield was damaged!+-=+-=++"
j(273) = "Enter saved filename: (or hit Enter for a new character)blast radius"
j(274) = "was drained of energy!was partially drained of energy!a Neutron Suit"
j(275) = "armor was degraded!shield was degraded! was destroyed!+-=+-=+-=+-=++"
j(276) = "A Treatise on Arms and Armor-=ð Release 1.1, June 1995 ð=-UV Helmet+"
j(277) = "Copyright (c) 1995 Jeffrey OlsonA ShareWare GameYou feel groggy+-=="
j(278) = "Splendid display of derring-do!You must be rested to teleport-=+-=++"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(279) = "F (ast fight) switchFast fight mode is Enter difficulty level:=+-=++"
j(280) = "0. Normal game difficulty1. Somewhat easy game2. Easy game=+-==+-=++"
j(281) = "Fast fighting mode is now onFast fighting mode is now off"
j(282) = "+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=++"
j(283) = "+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=++"
j(284) = "+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=++"
j(285) = "away harmlesslyOne normally eats or throws thatMassage UnitrelaxIck!"
j(286) = "Readings are somewhat unusual, CaptainAh, you can face the world now"
j(287) = "Oh, that feels nice on your aching neckTricorderThermos o' Coffee"
j(288) = "Ow! You got a headache from drinking it too fastovereatingrefreshed"
j(289) = "That coffee's keeping you awakeTo run from DOS type ALPHAMAN map+-=+"
j(290) = "It's not yet your bedtimeBox of AlkaseltzerUnusual Great scott!Gore"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(291) = "Select item to transmogrifyIt only works on organic matterwide awake"
j(292) = "You made a small dead rodentIt turned into a Here's your great uncle"
j(293) = "Here we are at the beachThis is us at StuckeysHome Movie Projector"
j(294) = "It can sustain more hitsthe Skipper's HatK-p-i-o- S-r-ma Space Suit"
j(295) = "You've defeated the Elvis ImpersonatorSee Spot dieturned you green!"
j(296) = "a pair of Blue Suede ShoesYou've injected yourself with the touching"
j(297) = "You're protected from the nerve toxin for 1 dayturn you green2 days"
j(298) = "The map shows you the location of the Grinch's stronghold gored you "
j(299) = "You feel like dancinYou look like a real dorkYou tried to hit em but"
j(300) = "coconuts fell on your headyou got stuck in gluehe stole your glasses"
j(301) = "You just can't bring yourself to attack herit went between his legs"
j(302) = "A sign at the door says GracelandNeil got luckyThe TajWar Boomerang"
j(303) = "This castle appears to be stories tallS.S. Minnow story tall+-=+-=++"
j(304) = "make you klutzyYou are no longer klutzymake you regenerateThis ruins"
j(305) = "You no longer smell niceYou no longer regenerateregenerating+-=+-=++"
j(306) = "tastyYour mirror is almost destroyedYou feel ridiculous fell asleep"
j(307) = "Launch what ? -& strength -& hitmaxYou're already wearing a suit+-=+"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(308) = "You're already wearing footwear won't fit down the holetapewormed"
j(309) = "smells niceInside LairYou're in a dark tunnelCamouflage Suit+-=+-=++"
j(310) = "You caught it as it returnedPinstripe SuitChainsawBlasterVoodoo Doll"
j(311) = "Grenade LauncherSave file (y/n/Esc) ?crawled down your throatFlipper"
j(312) = "Duralloy Platemailslowed by poisondevitalized by poisonAlways asleep"
j(313) = "You're too sick to eatSusceptibilitiesFire how many shots (1-6)?+-=+"
j(314) = "Set to stun (s) or kill (k)?Stun GrenadeÛÛÛÛ WallsBulletproof Suit"
j(315) = "Your shield is damagedYou're already using a lava lamp Turbocharger"
j(316) = "You bit the head off the Turbocharge what?Awesome wheels, dude!+-=++"
j(317) = "Disintigration Grenadewarm all overconfusedtipsyBottle of Brandy+-=+"
j(318) = "This is GrandpaYou vanish like a dream in the cold morning light "
j(319) = "Lair entrancePrinting ...AlphaMan Command SummaryDevice Components"
j(320) = "Strike P to print out a detailed summary, or space bar to continue"
j(321) = "Would you like an overview? is resistant to your life leech+-=+-=+-="
j(322) = "You should eat food when you are very hungry.Zoikes! Nerve toxin!!!"
j(323) = "You must eat berries to find out what they do.Find your own devices!"
j(324) = "Welcome to the Jim Jones Juice Jamboree!IBM PS497 DX2 Supercomputer"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(325) = "Today we have the following purple nectars:dangerously bloated+-=+-="
j(326) = "You freeloader! Go get your own nectar!stepping in a gopher hole"
j(327) = "Some tech items can be eaten, too.Which would you like to try?+-=+-="
j(328) = "You can throw any item, but not all do significantskin color+-=+-=++"
j(329) = "damage (weapons, grenades, heavy devices). Berries canAccess Denied!"
j(330) = "have interesting effects if they hit creatures. ate some of your "
j(331) = "Examining a screen square will identify creatures anddelicious meal:"
j(332) = "objects and will locate traps. Examining tech devices, ate your +-=+"
j(333) = "armor, or shields will reveal their condition.JanuaryFebruaryOctober"
j(334) = "You can Unuse any item or mutation you are currently MarchJuneAugust"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(335) = "using (denoted by an asterisk in item list). You mustSeptemberApril"
j(336) = "Unuse armor and suits before using different ones.falling in a chasm"
j(337) = "You must figure out a tech item before it can be used.OctoberMayJuly"
j(338) = "It will often take several or many tries to figure outNovemberfull"
j(339) = "complex objects. Note: it's possible to break devices.Decemberhalf"
j(340) = "Welcome to the Mark VI Transporter UnitA burst of explosive gas moon"
j(341) = "Strike a key to be transported to the location of your choicegibbous"
j(342) = "You triggered explosive gas!You barfed up your tapeworm!Game time: "
j(343) = "You're no longer protected by a force fieldThere's a quarter barfed!"
j(344) = "You may drop any item, but some must be Unused beforeTongue Sandwich"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(345) = "they may be dropped (e.g. armor, suits). The squareSausage Surprise"
j(346) = "you're standing on must be empty to drop something.Tech Devices R Us"
j(347) = "Special items like this have very specific uses.Press a key to begin"
j(348) = "We have the following tech devices:Welcome to Jeffrey Dahmer's Deli"
j(349) = "You stuff yourself until you can't eat another biteSelect catagory:"
j(350) = "Dismantle what?An arrowA dartA jet of acidA pillar of fireA laser"
j(351) = "Press C to construct a device, D to dismantle oneA bolt of lightning"
j(352) = "You have to construct something firstpile of tech partsYou're blind!"
j(353) = "Some falling sandA silvery rayA radiation beam narrowly missed you"
j(354) = "Berries, Coffee, Brandy and Mr Mistys also provide nourishment+-=+-="
j(355) = "Weapon ComparisonArmor and Shield ComparisonMessages Mmmmm Tasty"
j(356) = "You feel invigoratedYou think you could build one of these devices :"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(357) = "You have no parts to build withWhat do you want to build? drizzling"
j(358) = "How many energy units do you wish to use?It split in two!raining"
j(359) = "You can't figure out how to make anythingYour safe is fullRump Roast"
j(360) = "It only works for tech devicesSelect item to place in safe :hailing"
j(361) = "Select item to remove from safe :Of course, the King can't die..."
j(362) = "You detoxified No sign of the fuzz...Your Neutron Suit killed =+-=++"
j(363) = "Nearby radiation trap detectedNo nearby radiation traps detected-=++"
j(364) = "Nearby radiation area detectedNo nearby radiation areas detected+-=+"
j(365) = "Geiger Counter=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=++"
j(366) = "+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=++"
j(367) = "+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=++"
j(368) = "+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=++"
j(369) = " -& constitution -& dexterityA blob of glue an Elvis Impersonator"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(370) = "hound dog, cryin all the timecell block was jumpin to the jailhouse"
j(371) = "Don't be cruel to a heart that's trueLove me tenderly, love me true"
j(372) = "She touched my hand, what a chill I gotlet me be your cuddly bear"
j(373) = "left me, I've found a new place to dwellI dated your little sister"
j(374) = "cell block was dancin to the jailhousehound dog, howlin all the time"
j(375) = "I dated your big sisterleft me, I've found heartbreak hotelpouring"
j(376) = "Love me tender, love me trueDon't be cruel to a heart that's blue"
j(377) = "let me be your teddy bearShe touched my hand, what a thrill I got"
j(378) = "Thanks, , for ridding me of those weenies.You're stuck in a tarpit!"
j(379) = "Use these to defeat the Grinch.Those big spikes really hurt!breezy"
j(380) = "A sign says Abandon all hope ye who enter herefalling coconutscalm"
j(381) = " hit you with his big gold belt buckleOuch! It's hailing!windy+-=++"
j(382) = "What the heck is HE doing here?Grandpa turned you into a mouse!Tent"
j(383) = "You've returned to normal after scurrying about.stuck in a tarpit"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(384) = "You've stepped in quicksand!caught in quicksandYou need to heal up."
j(385) = "They're too awkward to wieldPress spacebar for a disclaimer sneezed!"
j(386) = "The author of this game abhors violence. It should be a gopher hole"
j(387) = "understood that special characters such as this oneKevorkian Machine"
j(388) = "aren't killed, but are defeated and consequently flee.very windy+-=+"
j(389) = " bonked you with a coconutOne small step for a man...You got gassed!"
j(390) = "You stepped in a gopher hole!Very Tired&-& A puff of poison gas"
j(391) = "You settle in for the night.It's too early to set up camp.Real Time:"
j(392) = "Critters got into your food!You almost stepped inVery Hungry+-=+-=++"
j(393) = "Just a hunka hunka burnin' loveJust a hunka hunka burnin' shoes+-=++"
j(394) = "You no longer feel sick.create forcefieldsOh, what a relief it is!"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(395) = "You receive 40,000 bonus experience points plus castlesFlash Grenade"
j(396) = "points for finishing in hoursBlue denotes squares you've been in.+++"
j(397) = "+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=++"
j(398) = "+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=++"
j(399) = "+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=++"
j(400) = "+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=++"
j(401) = "+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=++"
j(402) = "+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=++"
j(403) = "+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=++"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(404) = "You're now protected by a forcefieldYou made a totally gross blob!"
j(405) = " hit you with a scud missile whiffed, but accidentallyM. Monolith"
j(406) = "hit you on the backswingGround levelPress 'u' to useretirement+-=+-="
j(407) = "protected from nerve toxinWould you like to retire this character?"
j(408) = "The Grinch is so touched by the Roast Beast that hisIt fell apart!"
j(409) = "heart grows 3 sizes, and he destroys the nerve toxin!Bamboo Raft+-=+"
j(410) = "You've managed to defeat the Grinch.Hall of FameYour raft is leaking"
j(411) = "+## to hit, +## damage with contact weaponsrange weapons&-& damage"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
j(412) = " hit you with his hat hit you with his money beltYou salvaged+-=+-=+"
j(413) = " poked you with her hat pinIt looks like you're too late.0 damage"
j(414) = "With his dying gasp he releases the nerve toxin! weight units+-=+-=+"
j(415) = "The Grinch just released the nerve toxin.Small WoodenSmall Titanium"
j(416) = "You're given a lovely gold watch10 units will fully charge device"
j(417) = "You must use at leastThe MunstersBewitchedheightens your +-=+-=+-=++"
j(418) = "The Brady Bunch physically supermutatedmentally supermutatedOops!"
j(419) = "and Gregory KrolLiver PlatterYou put to sleepLarge Duralloy? damage"
j(420) = "Your psychokinetic explosionThe electrolock ate your ID!Glue Grenade"
' 1 6 11 16 21 26 31 36 41 46 51 56 61 66
OPEN "alphaman.1" FOR BINARY AS #1: CLS
FOR i = -2 TO 420
FOR k = 1 TO 68
MID$(j(i), k, 1) = CHR$(ASC(MID$(j(i), k, 1)) XOR (ABS(i * 17 + k * 31) MOD 256))
NEXT k
PUT #1, , j(i): LOCATE 1, 1: PRINT i;
NEXT
CLOSE #1
END SUB

BIN
MUTAT.BAS Normal file

Binary file not shown.

355
MUTAT.BAS.txt Normal file
View File

@ -0,0 +1,355 @@
' Copyright (c) 1995 Jeffrey R. Olson
'
' Permission is hereby granted, free of charge, to any person obtaining a copy
' of this software and associated documentation files (the "Software"), to deal
' in the Software without restriction, including without limitation the rights
' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all
' copies or substantial portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
' SOFTWARE.
DECLARE SUB loadit ()
DECLARE SUB saveit ()
DECLARE SUB changestats ()
DEFINT A-Z
' $INCLUDE: 'alpha.dec'
DIM SHARED sss(50, 20, 2), filin$
RANDOMIZE TIMER
CALL loadit
CALL changestats
notoxin = 0
CALL saveit
END
SUB changestats
cstop:
COLOR 11, 1: CLS
LOCATE 2, 10: PRINT USING "Name: & Time:#####"; name$; gt!;
LOCATE 3, 10
PRINT USING "Str:### Dex:### Con:### RR:### MR:### Int:###"; str; dex; con; rr; mr; intl;
LOCATE 4, 10
PRINT USING "Hitmax:##### Hits:##### Experience:########"; hitmax; hits; expr&;
LOCATE 5, 10
PRINT USING "Pmut: ## Mmut: ## Difficulty: #"; pmut; mmut; difficulty;
COLOR 9
LOCATE 12, 1
PRINT "1. Electrical Generation"; TAB(28); "14. Heightened Speed";
COLOR 2: PRINT TAB(53); "1. Military Genius": COLOR 9
PRINT "2. Heightened Dexterity"; TAB(28); "15. Radiation Generation";
COLOR 2: PRINT TAB(53); "2. Scientific Genius": COLOR 9
PRINT "3. Heightened Strength"; TAB(28); "16. Quills";
COLOR 2: PRINT TAB(53); "3. Heightened Willpower": COLOR 9
PRINT "4. Heightened Vision"; TAB(28); "17. Tenticles";
COLOR 2: PRINT TAB(53); "4. Mental Blast": COLOR 9
PRINT "5. Tough Exoskeleton";
COLOR 2: PRINT TAB(53); "5. Teleportation": COLOR 9
PRINT "6. Sonic Attack";
COLOR 2: PRINT TAB(53); "6. Mental Healing": COLOR 9
PRINT "7. Blood Structure Change";
COLOR 2: PRINT TAB(53); "7. Force Field": COLOR 9
PRINT "8. Radiation Reflection";
COLOR 2: PRINT TAB(53); "8. Molecular Disruption": COLOR 9
PRINT "9. Laser Generation";
COLOR 2: PRINT TAB(53); "9. Life Leech": COLOR 9
PRINT "10. Heightened Endurance";
COLOR 2: PRINT TAB(53); "10. Invisibility": COLOR 9
PRINT "11. Foul Musk";
COLOR 2: PRINT TAB(53); "11. Cryogenics": COLOR 9
PRINT "12. Acidic Saliva";
COLOR 2: PRINT TAB(53); "12. Hypnosis": COLOR 9
PRINT "13. Poison Claws";
COLOR 2: PRINT TAB(53); "13. Psychokinesis";
COLOR 13: LOCATE 7, 10
PRINT "Enter stat followed by value (4 characters are sufficient)"
LOCATE 8, 10: PRINT "For example, 'pmut 11' or 'dex 25'"
LOCATE 9, 10: PRINT "Pressing Enter will end program"
LOCATE 10, 10: LINE INPUT a$
IF a$ <> "" AND a$ <> CHR$(13) THEN
b$ = RTRIM$(LTRIM$(MID$(a$, 1, INSTR(a$, " "))))
c$ = RTRIM$(LTRIM$(MID$(a$, INSTR(a$, " "))))
IF LEN(c$) > 0 THEN c! = VAL(c$) ELSE c! = 0
SELECT CASE LEFT$(UCASE$(b$), 4)
CASE "NAME": name$ = RTRIM$(LTRIM$(MID$(a$, INSTR(a$, " "))))
CASE "STR": str = c!
CASE "DEX": dex = c!
CASE "CON": con = c!
CASE "RR": rr = c!
CASE "MR": mr = c!
CASE "INT": intl = c!
CASE "HITS": hits = c!
CASE "HITM": hitmax = c!
CASE "EXPE": expr& = c!
CASE "PMUT": pmut = c!
CASE "MMUT": mmut = c!
CASE "TIME": gt! = c!
CASE "DIFF": difficulty = c!
END SELECT
IF pmut < 1 THEN pmut = 1 ELSE IF pmut > nphysmut THEN pmut = nphysmut
IF mmut < 1 THEN mmut = 1 ELSE IF mmut > nmentmut THEN mmut = nmentmut
IF difficulty < 1 THEN difficulty = 1
IF difficulty > 3 THEN difficulty = 3
GOTO cstop
END IF
excs:
END SUB
SUB loadit '=======================================================
COLOR 14, 1: CLS
LOCATE 4, 10: INPUT "Enter filename to alter (.alf assumed):", filin$
filin$ = filin$ + ".alf"
CLOSE #1
OPEN filin$ FOR APPEND AS #1: CLOSE #1
OPEN filin$ FOR INPUT AS #1
IF EOF(1) THEN 'doesn't exist
CLOSE #1: KILL filin$: PRINT "Doesn't exist": END
END IF
CLOSE #1
OPEN filin$ FOR BINARY AS #1
GET #1, , vdate&
IF vdate& <> versiondate THEN
COLOR 30: LOCATE 8, 10: PRINT "Incorrect version"; : COLOR 14: END
END IF
LOCATE 5, 10: PRINT "Loading file "; filin$; " ....."
GET #1, , lll: name$ = SPACE$(lll): GET #1, , name$
'IF UCASE$(LEFT$(name$, 7)) <> "ALTERED" THEN name$ = LEFT$("Altered " + name$, 19)
GET #1, , ngoody: GET #1, , npack: GET #1, , ndropped: GET #1, , nsafe
FOR i = 1 TO ngoody
GET #1, , lll: gdy(i) = SPACE$(lll): GET #1, , gdy(i)
NEXT i
FOR i = 1 TO npack
GET #1, , lll: bakpak(i) = SPACE$(lll): GET #1, , bakpak(i)
NEXT i
FOR i = 1 TO ndropped
GET #1, , lll: drgdy(i) = SPACE$(lll): GET #1, , drgdy(i)
NEXT i
FOR i = 1 TO nsafe
GET #1, , lll: saf(i) = SPACE$(lll): GET #1, , saf(i)
NEXT i
FOR i = 0 TO 40: berry$(i) = SPACE$(6): GET #1, , berry$(i): NEXT i
FOR i = 1 TO ngoody
FOR j = 1 TO 12: GET #1, , goody(i, j): NEXT j
NEXT i
FOR i = 1 TO npack
FOR j = 1 TO 12: GET #1, , backpack(i, j): NEXT j
NEXT i
FOR i = 1 TO ndropped
FOR j = 1 TO 16: GET #1, , drgoody(i, j): NEXT j
NEXT i
FOR i = 1 TO nsafe
FOR j = 1 TO 12: GET #1, , safe(i, j): NEXT j
NEXT i
GET #1, , nnear
FOR i = 1 TO nnear
FOR j = 1 TO 15: GET #1, , ncre(i, j): NEXT j
NEXT i
FOR i = 0 TO 40: GET #1, , berord(i): GET #1, , knownb(i): NEXT i
FOR i = 2 TO 51: FOR j = 2 TO 21: GET #1, , goodythere(i, j): NEXT j, i
FOR i = 0 TO 6: FOR j = -10 TO 10: GET #1, , goodycastle(i, j): NEXT j, i
FOR i = 1 TO 20: FOR j = 1 TO 3: GET #1, , localgoody(i, j): NEXT j, i
FOR i = 1 TO 10: FOR j = 1 TO 3: GET #1, , radzone(i, j): NEXT j, i
FOR i = 1 TO 80: GET #1, , ssdknown(i): NEXT i
FOR i = 1 TO 40: GET #1, , lsdknown(i): NEXT i
FOR i = -10 TO 10: GET #1, , xstairs(i): NEXT i
FOR i = -10 TO 10: GET #1, , ystairs(i): NEXT i
FOR i = 1 TO 10: FOR j = 1 TO 3: GET #1, , monozone(i, j): NEXT j, i
FOR i = 1 TO 10: monozone(i, 3) = 0: NEXT
GET #1, , str: GET #1, , stradd: GET #1, , dex: GET #1, , dexadd
GET #1, , con: GET #1, , rr: GET #1, , mr: GET #1, , intl
GET #1, , hitmax: GET #1, , hits: GET #1, , hunger: GET #1, , fatigue!
GET #1, , expr&: GET #1, , lvl: GET #1, , pmut: GET #1, , mmut
GET #1, , radsuit: GET #1, , heatsuit: GET #1, , reflecsuit
GET #1, , flashlight: GET #1, , gasmask: GET #1, , sunglasses
GET #1, , wetsuit: GET #1, , mask: GET #1, , boots
GET #1, , pmutturns: GET #1, , mmutturns: GET #1, , inwater
GET #1, , waterturns: GET #1, , inpit: GET #1, , zippy
GET #1, , wpturns: GET #1, , seed!: GET #1, , vpage
GET #1, , mainx: GET #1, , mainy: GET #1, , localx
GET #1, , localy: GET #1, , terrain: GET #1, , terrf
GET #1, , terrb: GET #1, , currsym: GET #1, , currf
GET #1, , currb: GET #1, , ncastle: GET #1, , nruins
GET #1, , castle: GET #1, , castlelevel: GET #1, , incastle
GET #1, , dum
GET #1, , lwall: GET #1, , rwall: GET #1, , twall: GET #1, , bwall
GET #1, , lwscr: GET #1, , rwscr: GET #1, , twscr
GET #1, , bwscr: GET #1, , dots: GET #1, , xenter
GET #1, , yenter: GET #1, , xenterscr: GET #1, , yenterscr
GET #1, , enterdir: GET #1, , bitit: GET #1, , berstr
GET #1, , berdex: GET #1, , bercon: GET #1, , berrr
GET #1, , bermr: GET #1, , berintl
GET #1, , berac: GET #1, , berpmut: GET #1, , bermmut
GET #1, , berconfuse: GET #1, , berdet: GET #1, , berblind
GET #1, , berhic: GET #1, , brandy: GET #1, , berscare
GET #1, , strtox: GET #1, , dextox: GET #1, , contox
GET #1, , berrambo: GET #1, , weather: GET #1, , wind
GET #1, , gt!: GET #1, , rside: GET #1, , roachdef
GET #1, , radint: GET #1, , armor: GET #1, , shield
GET #1, , dark: GET #1, , grabbed: GET #1, , vehicle: GET #1, , confu
GET #1, , hittox: GET #1, , asleep: GET #1, , sunscreen
GET #1, , invisible: GET #1, , udder: GET #1, , flare
GET #1, , coffee: GET #1, , tapenum: GET #1, , berfresh
GET #1, , elvislevel: GET #1, , grinchlevel: GET #1, , grinchzone
GET #1, , serum!: GET #1, , map: GET #1, , bsshoes
GET #1, , spacesuit: GET #1, , bergreen: GET #1, , berklutz
GET #1, , klutzdex: GET #1, , berregen: GET #1, , beryum
GET #1, , camosuit: GET #1, , pinsuit: GET #1, , notoxin
GET #1, , other2hitc: GET #1, , other2hitr: GET #1, , otherdam
GET #1, , tapeworm: GET #1, , turbo!: GET #1, , bulletsuit
GET #1, , xmono: GET #1, , ymono: GET #1, , mononum
GET #1, , inweb: GET #1, , ffgen: GET #1, , inglue
GET #1, , inbog: GET #1, , insand: GET #1, , hail
GET #1, , tent: GET #1, , berff: GET #1, , berhpmut: GET #1, , berhmmut
GET #1, , tentgrab: GET #1, , metshat: GET #1, , grinchstole
GET #1, , mindweb: GET #1, , repulse: GET #1, , ripehrs
GET #1, , spore: GET #1, , answer: GET #1, , skinac
GET #1, , starting: GET #1, , difficulty: GET #1, , finishedcastles
GET #1, , uvhelmet: GET #1, , neutronsuit
FOR i = 1 TO 4: GET #1, , dum: NEXT
n$ = bl
GET #1, , l: ber$ = SPACE$(l): FOR j = 1 TO l: GET #1, , n$: MID$(ber$, j, 1) = n$: NEXT j
FOR i = 2 TO 51: FOR j = 2 TO 21
GET #1, , sss(i - 1, j - 1, 1)
NEXT j, i
FOR i = 2 TO 51: FOR j = 2 TO 21
GET #1, , sss(i - 1, j - 1, 2)
NEXT j, i
CLOSE #1
END SUB
SUB saveit '==============================================================
COLOR 10, 1: CLS : LOCATE 5, 10
LOCATE 7, 10: PRINT "Saving "; filin$
CLOSE #1
OPEN filin$ FOR BINARY AS #1
vdate& = versiondate: PUT #1, , vdate&
lll = LEN(name$): PUT #1, , lll: PUT #1, , name$
PUT #1, , ngoody: PUT #1, , npack: PUT #1, , ndropped: PUT #1, , nsafe
FOR i = 1 TO ngoody
lll = LEN(gdy(i)): PUT #1, , lll: PUT #1, , gdy(i)
NEXT i
FOR i = 1 TO npack
lll = LEN(bakpak(i)): PUT #1, , lll: PUT #1, , bakpak(i)
NEXT i
FOR i = 1 TO ndropped
lll = LEN(drgdy(i)): PUT #1, , lll: PUT #1, , drgdy(i)
NEXT i
FOR i = 1 TO nsafe
lll = LEN(saf(i)): PUT #1, , lll: PUT #1, , saf(i)
NEXT i
FOR i = 0 TO nberry: PUT #1, , berry$(i): NEXT i
FOR i = 1 + nberry TO 40: PUT #1, , berry$(nberry): NEXT i
FOR i = 1 TO ngoody
FOR j = 1 TO 12: PUT #1, , goody(i, j): NEXT j
NEXT i
FOR i = 1 TO npack
FOR j = 1 TO 12: PUT #1, , backpack(i, j): NEXT j
NEXT i
FOR i = 1 TO ndropped
FOR j = 1 TO 16: PUT #1, , drgoody(i, j): NEXT j
NEXT i
FOR i = 1 TO nsafe
FOR j = 1 TO 12: PUT #1, , safe(i, j): NEXT j
NEXT i
PUT #1, , nnear
FOR i = 1 TO nnear: FOR j = 1 TO 15: PUT #1, , ncre(i, j): NEXT j, i
FOR i = 0 TO 40: PUT #1, , berord(i): PUT #1, , knownb(i): NEXT i
FOR i = 2 TO 51: FOR j = 2 TO 21: PUT #1, , goodythere(i, j): NEXT j, i
FOR i = 0 TO 6: FOR j = -10 TO 10: PUT #1, , goodycastle(i, j): NEXT j, i
FOR i = 1 TO 20: FOR j = 1 TO 3: PUT #1, , localgoody(i, j): NEXT j, i
FOR i = 1 TO 10: FOR j = 1 TO 3: PUT #1, , radzone(i, j): NEXT j, i
FOR i = 1 TO 80: PUT #1, , ssdknown(i): NEXT i
FOR i = 1 TO 40: PUT #1, , lsdknown(i): NEXT i
FOR i = -10 TO 10: PUT #1, , xstairs(i): NEXT i
FOR i = -10 TO 10: PUT #1, , ystairs(i): NEXT i
FOR i = 1 TO 10: FOR j = 1 TO 3: PUT #1, , monozone(i, j): NEXT j, i
PUT #1, , str: PUT #1, , stradd: PUT #1, , dex: PUT #1, , dexadd
PUT #1, , con: PUT #1, , rr: PUT #1, , mr: PUT #1, , intl
PUT #1, , hitmax: PUT #1, , hits: PUT #1, , hunger: PUT #1, , fatigue!
PUT #1, , expr&: PUT #1, , lvl: PUT #1, , pmut: PUT #1, , mmut
PUT #1, , radsuit: PUT #1, , heatsuit: PUT #1, , reflecsuit
PUT #1, , flashlight: PUT #1, , gasmask: PUT #1, , sunglasses
PUT #1, , wetsuit: PUT #1, , mask: PUT #1, , boots
PUT #1, , pmutturns: PUT #1, , mmutturns: PUT #1, , inwater
PUT #1, , waterturns: PUT #1, , inpit: PUT #1, , zippy
PUT #1, , wpturns: PUT #1, , seed!: PUT #1, , vpage
PUT #1, , mainx: PUT #1, , mainy: PUT #1, , localx
PUT #1, , localy: PUT #1, , terrain: PUT #1, , terrf
PUT #1, , terrb: PUT #1, , currsym: PUT #1, , currf
PUT #1, , currb: PUT #1, , ncastle: PUT #1, , nruins
PUT #1, , castle: PUT #1, , castlelevel: PUT #1, , incastle
PUT #1, , dir
PUT #1, , lwall: PUT #1, , rwall: PUT #1, , twall: PUT #1, , bwall
PUT #1, , lwscr: PUT #1, , rwscr: PUT #1, , twscr
PUT #1, , bwscr: PUT #1, , dots: PUT #1, , xenter
PUT #1, , yenter: PUT #1, , xenterscr: PUT #1, , yenterscr
PUT #1, , enterdir: PUT #1, , bitit: PUT #1, , berstr
PUT #1, , berdex: PUT #1, , bercon: PUT #1, , berrr
PUT #1, , bermr: PUT #1, , berintl
PUT #1, , berac: PUT #1, , berpmut: PUT #1, , bermmut
PUT #1, , berconfuse: PUT #1, , berdet: PUT #1, , berblind
PUT #1, , berhic: PUT #1, , brandy: PUT #1, , berscare
PUT #1, , strtox: PUT #1, , dextox: PUT #1, , contox
PUT #1, , berrambo: PUT #1, , weather: PUT #1, , wind
PUT #1, , gt!: PUT #1, , rside: PUT #1, , roachdef
PUT #1, , radint: PUT #1, , armor: PUT #1, , shield
PUT #1, , dark: PUT #1, , grabbed: PUT #1, , vehicle: PUT #1, , confu
PUT #1, , hittox: PUT #1, , asleep: PUT #1, , sunscreen
PUT #1, , invisible: PUT #1, , udder: PUT #1, , flare
PUT #1, , coffee: PUT #1, , tapenum: PUT #1, , berfresh
PUT #1, , elvislevel: PUT #1, , grinchlevel: PUT #1, , grinchzone
PUT #1, , serum!: PUT #1, , map: PUT #1, , bsshoes
PUT #1, , spacesuit: PUT #1, , bergreen: PUT #1, , berklutz
PUT #1, , klutzdex: PUT #1, , berregen: PUT #1, , beryum
PUT #1, , camosuit: PUT #1, , pinsuit: PUT #1, , notoxin
PUT #1, , other2hitc: PUT #1, , other2hitr: PUT #1, , otherdam
PUT #1, , tapeworm: PUT #1, , turbo!: PUT #1, , bulletsuit
PUT #1, , xmono: PUT #1, , ymono: PUT #1, , mononum
PUT #1, , inweb: PUT #1, , ffgen: PUT #1, , inglue
PUT #1, , inbog: PUT #1, , insand: PUT #1, , hail
PUT #1, , tent: PUT #1, , berff: PUT #1, , berhpmut: PUT #1, , berhmmut
PUT #1, , tentgrab: PUT #1, , metshat: PUT #1, , grinchstole
PUT #1, , mindweb: PUT #1, , repulse: PUT #1, , ripehrs
PUT #1, , spore: PUT #1, , answer: PUT #1, , skinac
PUT #1, , starting: PUT #1, , difficulty: PUT #1, , finishedcastles
PUT #1, , uvhelmet: PUT #1, , neutronsuit
FOR i = 1 TO 4: PUT #1, , dum: NEXT
lll = LEN(ber$): PUT #1, , lll: PUT #1, , ber$
FOR i = 2 TO 51: FOR j = 2 TO 21
PUT #1, , sss(i - 1, j - 1, 1)
NEXT j, i
FOR i = 2 TO 51: FOR j = 2 TO 21
PUT #1, , sss(i - 1, j - 1, 2)
NEXT j, i
CLOSE #1
END SUB

BIN
MUTAT.EXE Normal file

Binary file not shown.

163
README.TXT Normal file
View File

@ -0,0 +1,163 @@
------------------------===========------------------------
-------------===========ððððððððððððððððððððððð==========--------------
----------==========ððððððððð A L P H A M A N ððððððððð==========----------
----------==========ððððððððð Release 1.1 ððððððððð==========----------
----------==========ððððððððð June 1995 ððððððððð==========----------
-------------===========ððððððððððððððððððððððð==========--------------
------------------------===========------------------------
File list: alphaman.exe main executable
alphaman.1
alphaman.2
alphaman.3 subsidiary
alphaman.4 files
alphaman.5
alphaman.6
readme.txt this file
After playing, alphaman.def (game parameters) and
alphaman.scr (high scores file) will be generated.
You may delete these at any time.
____________________________________________________________________________
AlphaMan (Copyright (c) 1995 Jeffrey R. Olson) is an adventure game set on
Earth in the future, following a nuclear disaster. You will take the role of
a mutated human who is struggling to save the planet from annihilation. You
will be pitted against hideously mutated plants and animals, traps and snares
of all sorts, and several varied adversaries whom you will have to defeat in
order to complete your mission. At your disposal are a broad variety of
technological relics and mutated substances which you will acquire along the
way, as well as your own powers and guile.
____________________________________________________________________________
Your character will have six basic personal attributes: Strength (physical
power), Dexterity (agility and quickness), Constitution (fortitude and
health), Radiation Resistance (susceptibility to radiation), Mental
Resistance (susceptibility to mental attacks) and Intelligence (learning
ability). These characteristics generally are in the range 3-18 (higher is
"better"), but some mutations, devices, etc. can raise or lower these. Your
characteristics may increase with time as you gain experience as well.
Your character also has Hit Points. These reveal to how much damage you can
sustain before dying. You lose hit points as you are damaged by attacks from
creatures, falling into pits, etc. You heal hit points back over time, and
some devices and substances will heal you faster. In addition, you will gain
more hit points as you become a more experienced adventurer.
Your character will have a physical and a mental mutation which can help you
complete your mission. Some mutations, such as Heightened Strength, are in
effect at all times and don't require you to 'u'(se) them. Others, such as
Laser Generation are used periodically as the need arises. AlphaMan version
1.1 includes 17 physical and 13 mental mutations; some details on your
particular mutations can be learned by pressing '?' during the game to see
the help menu, or by examining the file ALPHAMAN.5 which is a text file that
the '?' command accesses.
Your character has an Armor Class (AC) that determines how difficult you are
to hit in combat. Your AC is determined by the armor and shield you are
using, and may be modified by your dexterity and a variety of devices. A low
AC means better protection. An AC 6 to 9 is typical at the start of the game;
an AC of 0 is very good; an AC of -5 or lower is excellent. Heavy Fur armor
or Ringmail is typical at the start of the game, but better armor may be
found during the game. Be sure to wear the better armor as you find it (the
'u'(se) command allows you to select the armor you wish to wear; you must
'U'(nuse) armor you are currently wearing before you can use new armor).
Your character fights with a selected weapon (although you can also throw
things, or use various technological weapons as well). At the start of the
game, a weapon such as a short sword or a pitchfork is common. You may find
better weapons along the way, such as titanium or even duralloy ones. Be
sure to wield the better weapons as you find them (the command 'u'(se) can be
used to select a new weapon-in-hand). Note that a microcomputer, if found in
the game, can reveal which weapons are the best.
Your character will come across a variety of other objects during the course
of a game. These include:
Food: Spam and Beef-a-Roni, which are eaten with the 'e'(at) command. It is
generally best to wait until you're very hungry to eat.
Berries: AlphaMan includes over 30 different kinds of berries which have a
variety of effects. Initially you won't know what most berries do, and
will have to 'e'(at) them or 't'(hrow) them at creatures to determine
their effect. The usefulness of most berries is obvious. Keep in mind
that, while most berries are intended to be eaten (such as berries that
confer invisibility or technical prowess), some should be thrown at
enemies (such as exploding or blinding berries).
Small and Large Tech devices: AlphaMan includes over 100 different kinds of
technological devices. Initially, you won't understand most devices, so
you'll have to 'f'(igure) them out. Often, you'll need to try many times
before successfully figuring out a device. Once figured out, you can
'u'(se) the device when the need arises. Note that the utility of some
devices is obvious (you obviously shoot a Fusion Rifle at enemies),
whereas some devices (such as a Slinky) are useless, and some have more
subtle uses (a Microwave Oven will prematurely ripen berries, for
example). A computer, if found during a game, can explain some of these
subtleties.
____________________________________________________________________________
Much of the game consists of moving around the screen. This is accomplished
with the numeric keypad. You can use the arrow keys to move up, down and
sideways; the Home, End, PgUp and PgDn keys will move you diagonally. If
you move on top of an item, you will pick that item up. If you attempt to
move on top of a creature, you will strike at it with your weapon-in-hand.
____________________________________________________________________________
The Author suggests you print out the list of available commands once the
game begins (by pressing '?' and then 'p') in order to have a hard copy to
reference at first. Many commands which await input will accept a '?'
keystroke, and will then give context-sensitive help for that command.
The premise of this game is loosely based on two games written by James Ward
and published by TSR Hobbies: Metamorphosis Alpha and Gamma World. The
author of AlphaMan acknowledges their unwitting inspiration.
____________________________________________________________________________
Please register this software (you will see details of how to do this every
time you quit the game). There are many enhancements planned for future
updates, including new mutations (4 Arms and Heightened Luck, for example),
new devices (e.g., Berry Pouch and Hologram Generator), new berries (ones
which confer temporary immunity to an attack type, for example) and other
various (and insidious?) additions. You will also receive lifetime AlphaMan
support (answers to any questions you might have, free updates if serious bugs
are found, and general update announcements).
Any suggestions or bug reports are also appreciated. Please send them to:
Jeffrey R. Olson
214 E. Sherwin Dr.
Urbana, IL 61801
____________________________________________________________________________
DISCLAIMER - AGREEMENT
Users of AlphaMan must accept this disclaimer of warranty:
"AlphaMan is supplied as is. The author disclaims all
warranties, expressed or implied, including, without limitation,
the warranties of merchantability and of fitness for any purpose.
The author assumes no liability for damages, direct or conse-
quential, which may result from the use of AlphaMan."
AlphaMan is a "shareware program" and is provided at no charge
to the user for evaluation. Feel free to share it with your
friends, but please do not give it away altered or as part of
another system. The essence of "user-supported" software is to
provide personal computer users with quality software without
high prices, and yet to provide incentive for programmers to
continue to develop new products. If you find this program
useful and find that you are using AlphaMan and continue to use
AlphaMan after a reasonable trial period, you must make a
registration payment of at least $15 to Jeffrey Olson.
Anyone distributing AlphaMan for any kind of remuneration must
first contact Jeffrey Olson at the address above for authorization.
This authorization will be automatically granted, and distributors
may begin offering AlphaMan immediately (However Jeffrey Olson must
be advised so that the distributor can be kept up-to-date with the
latest version of AlphaMan.).
You are encouraged to pass a copy of AlphaMan along to your
friends for evaluation. Please encourage them to register their
copy if they find that they can use it. All registered users
will receive a copy of the latest version of AlphaMan.

178
README.md Normal file
View File

@ -0,0 +1,178 @@
# Alphaman Source and Files
This repository contains source code and related files for the 1995 DOS
roguelike game Alphaman by Jeffrey R. Olson.
Jeff can be reached via email at `ca_jeffo@yahoo.com`
## The Game
The game itself is described at:
* http://roguebasin.roguelikedevelopment.org/index.php?title=Alphaman
* https://mutant-future.fandom.com/wiki/AlphaMan
The game is available for download at:
* https://archive.org/details/Alphaman11
* https://archive.org/details/Alphaman-roguelike
* https://www.myabandonware.com/game/alphaman-315
* https://www.dosgames.com/game/alphaman-the-new-beginning
* https://www.dosgamesarchive.com/download/alpha-man/
There are several contemporary discussions about Alphaman from 1995 on Usenet,
including the suggestions from others which are referenced in `FIXES.TXT`:
* https://groups.google.com/g/rec.games.roguelike.misc/search?q=Alphaman
## Files
#### Game source
* Any `.BAS` file is in MS QuickBasic 4.5 binary format
* Any `.BAS.txt` is a plaintext version of the same file
* `A1.BAS` to `A8.BAS` - Game source
* `ALPCLIB.C` - C helper library
* `MODJNK.BAS` - Game strings
* `MODAM6.BAS` - More strings
* `ALPHA.CAS` and `ALPHA.CAS.txt` - Castle data
* `ALPHA.DEC` and `ALPHA.DEC.txt` - Variable declarations
* `ALPHA.GDY` and `ALPHA.GDY.txt` - Weapon and item handling
* `ALPHA.CRE`, `CRELIST`, `CRETEST.*`, `CREVIEW.*`, `CREALTER.*`, `VIEW.*` -
Definitions, programs, output for creature (enemy monster) generation
#### Supporting Files
* `ALPHA.DBG,DB2,DB3,DC2` - Debug snippets, commented out in the game code
* `BRESNHAM.C` - Public Domain example math code
* `MAZ.*` - Maze path finding test
* `*.BAT` - Build scripts for MS QuickBasic 4.5 and MS QuickC 2.5
* `*.MAK` Compiler directives to create object files from source and strings
#### Gameplay Assistance
Jeff made the FAQ available publicly. The Spoilers file was only provided
to the 50 to 100 people who registered the shareware. It appears on some very
old FTP listings but this is the first time it's been available publicly in
about two decades!
* `ALPHAMAN.FAQ.txt` - Alphaman FAQ by Jeff Olson, version 1.1
* `ALPHAMAN.SPL.txt` - Spoilers by Jeff Olson, version 1.1
* `ALPMAN11.TXT` - Description for upload to FTP sites
* `FIXES.TXT` - Changelog
* `README.TXT` - Descriptive file shipped with game
* `ITEMLIST` - All possible items in plaintext
#### Cheats
These tools require a `.ALF` saved game in the current directory.
* `ITEMS.EXE/BAS/txt` - Add berries, small and large tech devices
* `MUTAT.EXE/BAS/txt` - Modify player stats and physical/mental mutations
You can also name your character `Jeffrey Olson` to start with all stats at 18,
good gear like a Long Sword, Chainmail, Small Titanium Shield, and advantageous
Mutations. Keeping with the game's humour and not taking itself too seriously,
this inside joke allows Jeff to be atop everyone's High Score list.
GamqFAQs also contains a guide which does not allow copying elsewhere. The
author did not respond to my request to include it here:
* [Alphaman Food/Item/Lore Guide by BabaGan00sH](https://gamefaqs.gamespot.com/pc/564667-alphaman-1995/faqs/33882)
## Code Description
Alphaman was originally written as a QuickBasic program. In order to keep
the game on a single 3.5" floppy, Jeff used some C and assembly helpers
(`ALPCLIB.C`) which are linked into the QuickBasic objects at compile time.
Strings are kept in intermediate files and referenced by their binary offset
and length. String definitions are in `MODJNK.BAS` and `MODAM6.BAS`. String
print routines are `SUB Printjnk` in `A7.BAS` and `FUNCTION jnk$` in `A8.BAS`.
Jeff originally used floating point math to handle the game randomisation,
but after seeing how slowly the map generated on an 8088 system without a math
co-processor, he changed to integer-based math using bit-shifts with the help
of a classmate who had written some books on assembly language programming.
## File Formats
Note that when browsing QuickBasic source, `SUB` procedures are "hidden" from
the main file they are defined in. You can list and enter subprocedures in
QuickBasic by pressing the **F2** key or in the top menu bar by selecting
**View** then **SUBs...**.
A few of the text files may not open in your editor of choice. This occurs
because those files use ISO-8859-1 Latin encoding, not UTF-8 like most modern
text files. I chose not to convert the Latin files to preserve the content
accurately, as some DOS characters do not covert to UTF-8.
## Compiling
Alphaman can be compiled in DOSBox. The following was tested successfully
with [dosbox-staging](dosbox-staging.github.io/) version 0.76.0.
Install Microsoft QuickBasic 4.5 and Microsoft QuickC 2.5 with "medium" memory
model support selected. You can find those at:
* https://winworldpc.com/product/quickbasic/45
* https://winworldpc.com/product/quick-c/2x
Your `PATH` should look something like:
~~~
SET PATH=C:\QB45\;C:\QC25\BIN;%PATH%
~~~
You also need the `LIB` and `INCLUDE` variables set as QuickC requires, plus
add the QuickBasic path to libraries:
~~~
SET LIB=C:\QC25\LIB;C:\QB45
SET INCLUDE=C:\QC25\INCLUDE
~~~
* `ALPHAMAN.EXE` is generated by running `COMCLIB.BAT` then `COMALPHA.BAT`
* `ALPHAMAN.1` is generated by running `MODJNK.BAS`
* `ALPHAMAN.2` is generated by running `CREALTER.BAS`
* `ALPHAMAN.3` is generated by running `ALPHA.GDY`
* `ALPHAMAN.4` is generated by running `ALPHA.CAS`
* `ALPHAMAN.5` is plain text, no compilation required
* `ALPHAMAN.6` is generated by running `MODAM6.BAS`
These steps provide all required game files.
## License
The contents of this repository are made available under the MIT license.
tl;dr - do what you like, but include Jeff's copyright notice in any derivative.
~~~
Copyright (c) 1995 Jeffrey R. Olson
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
~~~
## Maintainer
This repository is maintained by:
* Jamie Bainbridge - jamie.bainbridge@gmail.com

16
TRANSFER.BAT Normal file
View File

@ -0,0 +1,16 @@
copy a?.bas a:
copy alpclib.* a:
copy alpha.* a:
copy alphaman.? a:
copy cre*.bas a:
copy mod*.bas a:
copy mutat.bas a:
copy items.bas a:
copy view.bas a:
copy readme.txt a:
copy fixes.txt a:
copy alpman10.zip a:
copy alpman10.txt a:
copy alphaman.faq a:
copy alphaman.spl a:
d a:

BIN
VIEW.BAS Normal file

Binary file not shown.

238
VIEW.BAS.txt Normal file
View File

@ -0,0 +1,238 @@
' Copyright (c) 1995 Jeffrey R. Olson
'
' Permission is hereby granted, free of charge, to any person obtaining a copy
' of this software and associated documentation files (the "Software"), to deal
' in the Software without restriction, including without limitation the rights
' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in all
' copies or substantial portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
' SOFTWARE.
DECLARE SUB scannames ()
DECLARE SUB chartdefenses (i%)
DECLARE SUB chartsusc (i%)
DECLARE SUB pauseforkey (a$)
DECLARE SUB chartexperience ()
DECLARE FUNCTION clr% (i%)
DECLARE SUB chartattacktypes (i%)
DECLARE FUNCTION lev! (n%)
DEFINT A-Z
' $INCLUDE: 'alpha.dec'
DIM SHARED expr(300), defense(300), susc(300), att(300, 5)
DIM SHARED atk$(27), def$(15), sus$(15), creat$(300)
DATA Kinetic, Radiation, Poison 1, Poison 2, Poison 3, Acid, Laser
DATA Mental Blast, Electricity, Heat, Cold, Tentical, Life Leech
DATA Steal, Tickle, "Damage Armor", "Poop Out", Spore, Trample, Aroma, Drain
DATA Blinding, Sickening, Help, Gore, Special, Snooze
FOR i = 1 TO 27: READ atk$(i): NEXT
DATA "1/3 from Kinetic", "Resist Acid", "Resist Electricity"
DATA "Resist Radiation", "Resist Heat", "Resist Cold", "Resist Lasers"
DATA "Grow from heat/laser", "Regenerate 1/turn", "Resist Mental Attacks"
DATA "Resist Poison", "Regenerate 3/turn"
DATA "Quills/shock for 1-4", "Quills/shock for 1-10"
FOR i = 0 TO 13: READ def$(i): NEXT
DATA "Susceptible to Kinetic", "Susceptible to Acid"
DATA "Susceptible to Electricity", "Susceptible to Radiation"
DATA "Susceptible to Heat", "Susceptible to Cold"
DATA "Susceptible to Lasers", "Susceptible to Tickling"
DATA "Always Asleep", "Susceptible to Mental Attacks"
DATA "Susceptible to Poison", "Resist Sneeze/Burp", "Resist Blindness"
DATA "Susc 13", "ac+10", "Sluggish"
FOR i = 0 TO 15: READ sus$(i): NEXT
OPEN "alpha.cre" FOR INPUT AS #1
numcre = 0
WHILE NOT EOF(1)
INPUT #1, creat$
IF LEFT$(LTRIM$(creat$), 1) = CHR$(39) THEN GOTO fin
numcre = numcre + 1
creat$(numcre) = creat$
INPUT #1, a, defense(numcre), c, susc(numcre), expr(numcre)
FOR i = 1 TO 5
INPUT #1, att, btt: att(numcre, i) = btt \ 100
'tohit(i) = att(i) MOD 100: str(i) = att(i) \ 100
'rng(i) = btt(i) MOD 100: typ(i) = btt(i) \ 100
NEXT i
WEND
fin: CLOSE #1: SCREEN 12
chartexperience
FOR i = 1 TO 27: chartattacktypes i: NEXT
FOR i = 0 TO 13: chartdefenses i: NEXT: chartsusc 11: chartsusc 12
FOR i = 0 TO 15
IF i <> 11 AND i <> 12 THEN chartsusc i
NEXT
END
SUB chartattacktypes (i)
CLS : WINDOW (0, 0)-(ncreat + creextra + 1, 9)
FOR j = 1 TO ncreat + creextra
sho = false
FOR k = 1 TO 5
IF att(j, k) = i THEN sho = true
NEXT k
IF sho THEN LINE (j, 0)-(j + .5, 5), clr(j), BF
NEXT j
LINE (1, 0)-(ncreat, .07), 7, BF
LINE (ncreat + 1, 0)-(ncreat + crecas, .07), 8, BF
LINE (ncreat + crecas + 1, 0)-(ncreat + crecas + crefor, .07), 10, BF
LINE (ncreat + crecas + crefor + 1, 0)-(ncreat + crecas + crefor + creswa, .07), 6, BF
LINE (ncreat + crecas + crefor + creswa + 1, 0)-(ncreat + crecas + crefor + creswa + crepla, .07), 14, BF
LINE (ncreat + crecas + crefor + creswa + crepla + 1, 0)-(ncreat + crecas + crefor + creswa + crepla + creh2o, .07), 9, BF
COLOR 13: LOCATE 1, 1: PRINT atk$(i)
pauseforkey a$
IF a$ = "n" THEN scannames
END SUB
SUB chartdefenses (i)
CLS : WINDOW (0, 0)-(ncreat + creextra + 1, 9)
FOR j = 1 TO ncreat + creextra
sho = false
IF defense(j) AND 2 ^ i THEN sho = true
IF sho THEN LINE (j, 0)-(j + .5, 5), clr(j), BF
NEXT j
LINE (1, 0)-(ncreat, .07), 7, BF
LINE (ncreat + 1, 0)-(ncreat + crecas, .07), 8, BF
LINE (ncreat + crecas + 1, 0)-(ncreat + crecas + crefor, .07), 10, BF
LINE (ncreat + crecas + crefor + 1, 0)-(ncreat + crecas + crefor + creswa, .07), 6, BF
LINE (ncreat + crecas + crefor + creswa + 1, 0)-(ncreat + crecas + crefor + creswa + crepla, .07), 14, BF
LINE (ncreat + crecas + crefor + creswa + crepla + 1, 0)-(ncreat + crecas + crefor + creswa + crepla + creh2o, .07), 9, BF
COLOR 13: LOCATE 1, 1: PRINT def$(i)
pauseforkey a$
IF a$ = "n" THEN scannames
END SUB
SUB chartexperience
' chart experience
CLS : WINDOW (0, 0)-(20, 9)
PSET (lev(1), LOG(expr(1))), 7
FOR i = 2 TO ncreat
LINE -(lev(i), LOG(expr(i))), 7
NEXT i
PSET (lev(ncreat + 1), LOG(expr(ncreat + 1))), 8
FOR i = ncreat + 2 TO ncreat + crecas
LINE -(lev(i), LOG(expr(i))), 8
NEXT i
PSET (lev(ncreat + crecas + 1), LOG(expr(ncreat + crecas + 1))), 10
FOR i = ncreat + crecas + 2 TO ncreat + crecas + crefor
LINE -(lev(i), LOG(expr(i))), 10
NEXT i
PSET (lev(ncreat + crecas + crefor + 1), LOG(expr(ncreat + crecas + crefor + 1))), 6
FOR i = ncreat + crecas + crefor + 2 TO ncreat + crecas + crefor + creswa
LINE -(lev(i), LOG(expr(i))), 6
NEXT i
PSET (lev(ncreat + crecas + crefor + creswa + 1), LOG(expr(ncreat + crecas + crefor + creswa + 1))), 14
FOR i = ncreat + crecas + crefor + creswa + 2 TO ncreat + crecas + crefor + creswa + crepla
LINE -(lev(i), LOG(expr(i))), 14
NEXT i
PSET (lev(ncreat + crecas + crefor + creswa + crepla + 1), LOG(expr(ncreat + crecas + crefor + creswa + crepla + 1))), 9
FOR i = ncreat + crecas + crefor + creswa + crepla + 2 TO ncreat + crecas + crefor + creswa + crepla + creh2o
LINE -(lev(i), LOG(expr(i))), 9
NEXT i
COLOR 13: LOCATE 1, 1: PRINT "log-Experience vs level"
pauseforkey a$
IF a$ = "n" THEN scannames
END SUB
SUB chartsusc (i)
CLS : WINDOW (0, 0)-(ncreat + creextra + 1, 9)
FOR j = 1 TO ncreat + creextra
sho = false
IF susc(j) AND 2 ^ i THEN sho = true
IF sho THEN LINE (j, 0)-(j + .5, 5), clr(j), BF
NEXT j
LINE (1, 0)-(ncreat, .07), 7, BF
LINE (ncreat + 1, 0)-(ncreat + crecas, .07), 8, BF
LINE (ncreat + crecas + 1, 0)-(ncreat + crecas + crefor, .07), 10, BF
LINE (ncreat + crecas + crefor + 1, 0)-(ncreat + crecas + crefor + creswa, .07), 6, BF
LINE (ncreat + crecas + crefor + creswa + 1, 0)-(ncreat + crecas + crefor + creswa + crepla, .07), 14, BF
LINE (ncreat + crecas + crefor + creswa + crepla + 1, 0)-(ncreat + crecas + crefor + creswa + crepla + creh2o, .07), 9, BF
COLOR 13: LOCATE 1, 1: PRINT sus$(i)
pauseforkey a$
IF a$ = "n" THEN scannames
END SUB
FUNCTION clr (i)
SELECT CASE i
CASE 1 TO ncreat: c = 7
CASE 1 TO ncreat + crecas: c = 8
CASE 1 TO ncreat + crecas + crefor: c = 10
CASE 1 TO ncreat + crecas + crefor + creswa: c = 6
CASE 1 TO ncreat + crecas + crefor + creswa + crepla: c = 14
CASE 1 TO ncreat + crecas + crefor + creswa + crepla + creh2o: c = 9
END SELECT
clr = c
END FUNCTION
FUNCTION lev! (n)
DIM lll AS SINGLE
SELECT CASE n
CASE 1 TO ncreat
lll = INT(n / 3.49)
CASE 1 TO ncreat + crecas
lll = (n - ncreat - 1)
CASE 1 TO ncreat + crecas + crefor
lll = (n - ncreat - crecas)
CASE 1 TO ncreat + crecas + crefor + creswa
lll = (n - ncreat - crecas - crefor)
CASE 1 TO ncreat + crecas + crefor + creswa + crepla
lll = (n - ncreat - crecas - crefor - creswa)
CASE 1 TO ncreat + crecas + crefor + creswa + crepla + creh2o
lll = (n - ncreat - crecas - crefor - creswa - crepla - 2) / 1.5
END SELECT
IF lll < 1 THEN lll = 1
lev! = lll
END FUNCTION
SUB pauseforkey (a$)
a$ = INKEY$: WHILE a$ = "": a$ = INKEY$: WEND
END SUB
SUB scannames
j = 1: COLOR 12
topscan:
LINE (j, 5.05)-(j + .5, 6), 12, BF
LOCATE 1, 40: PRINT creat$(j); SPACE$(20);
pauseforkey a$
SELECT CASE a$
CASE "+": j = j + 1: IF j > ncreat + creextra THEN j = 1
LINE (j - 1, 5.05)-(j - .5, 6), 0, BF: GOTO topscan
CASE "-": j = j - 1: IF j < 1 THEN j = ncreat + creextra
LINE (j + 1, 5.05)-(j + 1.5, 6), 0, BF: GOTO topscan
CASE "E"
CASE ELSE: GOTO topscan
END SELECT
END SUB
SUB unused
SELECT CASE i
CASE 0: PRINT "1/3 from Kinetic"
CASE 1: PRINT "Acid"
CASE 2: PRINT "Electricity"
CASE 3: PRINT "Radiation"
CASE 4: PRINT "Heat"
CASE 5: PRINT "Cold"
CASE 6: PRINT "Lasers"
CASE 7: PRINT "Grow from heat/laser"
CASE 8: PRINT "Regenerate 1/turn"
CASE 9: PRINT "Mental Attacks"
CASE 10: PRINT "Poison"
CASE 11: PRINT "Regenerate 3/turn"
CASE 12: PRINT "Quills/shock for 1-4"
CASE 13: PRINT "Quills/shock for 1-10"
END SELECT
END SUB

2
ZIP.BAT Normal file
View File

@ -0,0 +1,2 @@
pkzip alpman10 alphaman.exe alphaman.1 alphaman.2 alphaman.3 alphaman.4 alphaman.5 alphaman.6 readme.txt fixes.txt
zip2exe alpman10