|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T e
Length: 9191 (0x23e7)
Types: TextFile
Names: »extra.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Abermud/extra.c«
#include "kernel.h"
#ifdef RCSID
static char RCS[] =
"$Header: extra.c,v 1.1 89/03/13 09:36:15 rsalz Exp $";
#endif /* RCSID */
static int jumtb[] = {-643, -633, -1050, -662, -1082, -1053, 0, 0};
helpcom()
{
int a;
char b[128];
if (item1[0]) {
if ((a = pl1) == -1) {
bprintf("Help who ?\n");
return;
}
if (ploc(a) != ploc(mynum)) {
bprintf("They are not here\n");
return;
}
if (a == mynum) {
bprintf("You can't help yourself.\n");
return;
}
if (phelping(mynum) != -1) {
sprintf(b, "\001p%s\001 has stopped helping you\n", pname(mynum));
sendsys(pname(a), pname(a), -10011, ploc(mynum), b);
bprintf("Stopped helping \001p%s\001.\n", pname(phelping(mynum)));
}
setphelping(mynum, a);
sprintf(b, "\001p%s\001 has offered to help you\n", pname(mynum));
sendsys(pname(a), pname(a), -10011, ploc(mynum), b);
bprintf("OK...\n");
return;
}
closeworld();
bprintf("\001f%s\001", HELP1);
if (plev(mynum) > 9) {
pbfr();
sig_alon();
key_input("Hit <Return> For More.... ", 6);
sig_aloff();
bprintf("\001f%s\001", HELP2);
}
bprintf("\n");
if (plev(mynum) > 9999) {
pbfr();
sig_alon();
key_input("Hit <Return> For More.... ", 6);
sig_aloff();
bprintf("\001f%s\001", HELP3);
}
bprintf("\n");
}
levcom()
{
closeworld();
bprintf("\001f%s\001", LEVELS);
}
valuecom()
{
int b;
if ((b = ob1) == -1) {
bprintf("There isn't one of those here.\n");
return;
}
bprintf("%s : %d points\n", oname(b), (tscale() * (obaseval(b))) / 9);
}
stacom()
{
int a;
if (!item1[0]) {
bprintf("STATS what ?\n");
return;
}
if (plev(mynum) < 10) {
bprintf("Sorry, this is a wizard command buster...\n");
return;
}
if ((a = fobn(item1)) == -1) {
statplyr();
return;
}
bprintf("\nItem :%s", oname(a));
if (ocarrf(a) == 3)
bprintf("\nContained in:%s", oname(oloc(a)));
else {
if (ocarrf(a) != 0)
bprintf("\nHeld By :%s", pname(oloc(a)));
else {
bprintf("\nPosition :");
showname(oloc(a));
}
}
bprintf("\nState :%d", state(a));
bprintf("\nCarr_Flag :%d", ocarrf(a));
bprintf("\nSpare :%d", ospare(a));
bprintf("\nMax State :%d", omaxstate(a));
bprintf("\nBase Value :%d", obaseval(a));
bprintf("\n");
}
examcom()
{
int a;
FILE *x;
char r[88];
if (!item1[0]) {
bprintf("Examine what ?\n");
return;
}
if ((a = ob1) == -1) {
bprintf("You see nothing special at all\n");
return;
}
switch (a) {
case 144:
if (obyte(144, 0) == 0) {
osetbyte(144, 0, 1);
bprintf("You take a scroll from the tube.\n");
oclrbit(145, 0);
setoloc(145, mynum, 1);
return;
}
break;
case 145:
setploc(mynum, -114);
bprintf("As you read the scroll you are teleported!\n");
destroy(145);
trapch(ploc(mynum));
return;
case 101:
if (obyte(101, 0) == 0) {
bprintf("You take a key from one pocket\n");
osetbyte(101, 0, 1);
oclrbit(107, 0);
setoloc(107, mynum, 1);
return;
}
break;
case 13:
if (obyte(13, 1) != 0) {
bprintf("It seems to be charged\n");
return;
}
break;
case 7:
setobjstate(7, randperc() % 3 + 1);
switch (state(7)) {
case 1:
bprintf("It glows red");
break;
case 2:
bprintf("It glows blue");
break;
case 3:
bprintf("It glows green");
break;
}
bprintf("\n");
return;
case 8:
if (state(7) != 0) {
if (iscarrby(3 + state(7), mynum) && otstbit(3 + state(7), 13)) {
bprintf("Everything shimmers and then solidifies into a different view!\n");
destroy(8);
teletrap(-1074);
return;
}
}
break;
case 85:
if (!obyte(83, 0)) {
bprintf("Aha. under the bed you find a loaf and a rabbit pie\n");
oclrbit(83, 0);
oclrbit(84, 0);
osetbyte(83, 0, 1);
return;
}
break;
case 91:
if (!obyte(90, 0)) {
oclrbit(90, 0);
bprintf("You pull an amulet from the bedding\n");
osetbyte(90, 0, 1);
return;
}
break;
}
sprintf(r, "%s%d", EXAMINES, a);
if ((x = fopen(r, "r")) == NULL)
bprintf("You see nothing special.\n");
else {
while (fgets(r, sizeof r, x))
bprintf("%s", r);
fclose(x);
}
}
statplyr()
{
int b;
if ((b = fpbn(item1)) == -1)
bprintf("Whats that ?\n");
else {
bprintf("Name : %s\n", pname(b));
bprintf("Level : %d\n", plev(b));
bprintf("Vis Level : %d\n", pvis(b));
bprintf("Strength : %d\n", pstr(b));
bprintf("Sex : %s\n", (psex(b) == 0) ? "MALE" : "FEMALE");
bprintf("Score : %d\n", pscore(b));
bprintf("Location : ");
showname(ploc(b));
}
}
wizlist()
{
if (plev(mynum) < 10)
bprintf("Huh ?\n");
else {
closeworld();
bprintf("\001f%s\001", WIZLIST);
}
}
incom()
{
char st[80], rn[80], rv[80];
int x;
int y;
if (plev(mynum) < 10) {
bprintf("Huh\n");
return;
}
if (brkword() == -1) {
bprintf("In where ?\n");
return;
}
strcpy(rn, wordbuf);
if (brkword() == -1) {
bprintf("In where ?\n");
return;
}
strcpy(rv, wordbuf);
if ((x = roomnum(rn, rv)) == 0) {
bprintf("Where is that ?\n");
return;
}
getreinput(st);
y = ploc(mynum);
setploc(mynum, x);
if (!exists(x)) {
setploc(mynum, y);
bprintf("No such room\n");
return;
}
gamecom(st);
setploc(mynum, y);
}
jumpcom()
{
int a, b;
char ms[128];
for (a = 0, b = 0; jumtb[a]; a += 2)
if (jumtb[a] == ploc(mynum)) {
b = jumtb[a + 1];
break;
}
if (b == 0) {
bprintf("Wheeeeee....\n");
return;
}
if (plev(mynum) < 10 && (!iscarrby(1, mynum) || state(1) == 0)) {
setploc(mynum, b);
bprintf("Wheeeeeeeeeeeeeeeee <<<<SPLAT>>>>\n");
bprintf("You seem to be splattered all over the place\n");
loseme();
crapup("I suppose you could be scraped up - with a spatula");
}
sprintf(ms, "\001s%s\001%s has just left\n\001",
pname(mynum), pname(mynum));
sendsys(pname(mynum), pname(mynum), -10000, ploc(mynum), ms);
setploc(mynum, b);
sprintf(ms, "\001s%s\001%s has just dropped in\n\001",
pname(mynum), pname(mynum));
sendsys(pname(mynum), pname(mynum), -10000, ploc(mynum), ms);
trapch(b);
}
wherecom()
{
int cha, rnd;
if (pstr(mynum) < 10) {
bprintf("You are too weak\n");
return;
}
if (plev(mynum) < 10)
setpstr(mynum, pstr(mynum) - 2);
rnd = randperc();
cha = 10 * plev(mynum);
if (iscarrby(111, mynum) || iscarrby(121, mynum) || iscarrby(163, mynum))
cha = 100;
closeworld();
if (rnd > cha) {
bprintf("Your spell fails...\n");
return;
}
if (!item1[0]) {
bprintf("What is that ?\n");
return;
}
if (EQ(item1, "<null>")) {
bprintf("NULL, we don't have NULLs in this game!\n");
return;
}
for (cha = 0, rnd = 0; cha < numobs; cha++) {
if (EQ(oname(cha), item1) || EQ(oaltname(cha), item1)) {
rnd = 1;
if (plev(mynum) > 9999)
bprintf("[%3d]", cha);
bprintf("%16s - ", oname(cha));
if ((plev(mynum) < 10) && (ospare(cha) == -1))
bprintf("Nowhere\n");
else
desrm(oloc(cha), ocarrf(cha));
}
}
if ((cha = pl1) != -1) {
rnd++;
bprintf("%s - ", pname(cha));
desrm(ploc(cha), 0);
}
if (!rnd)
bprintf("I dont know what that is\n");
}
desrm(loc, cf)
int loc, cf;
{
int wizinvis, awizinvis;
if (plev(mynum) < 10 && cf == 0 && loc > -5) {
bprintf("Somewhere.....\n");
return;
}
if (cf == 3) {
bprintf("In the %s\n", oname(loc));
return;
}
if (cf > 0) {
wizinvis = (plev(loc) > 10 && pvis(loc));
awizinvis = (plev(loc) > 9999 && pvis(loc));
if ((wizinvis && plev(mynum) <= 10)
|| (awizinvis && plev(mynum) < 9999))
bprintf("Somewhere.....\n");
else
bprintf("Carried by \001c%s\001\n", pname(loc));
return;
}
if (!exists(loc)) {
if (plev(mynum) < 10000)
bprintf("Out in the void\n");
else
bprintf("NOT IN UNIVERSE[%d]\n", loc);
return;
}
bprintf("%-36s", sdesc(loc));
if (plev(mynum) < 10)
bprintf("\n");
else if (!cf || (plev(mynum) > 9 && !awizinvis) || plev(mynum) > 9999) {
bprintf(" | ");
showname(loc);
}
else
bprintf("\n");
}
edit_world()
{
int b, c, d;
if (!ptstflg(mynum, 5)) {
bprintf("Must be Game Administrator\n");
return;
}
if (brkword() == -1) {
bprintf("Must Specify Player or Object\n");
return;
}
if (EQ(wordbuf, "player")) {
if ((b = getnarg(0, 47)) == -1)
return;
if ((c = getnarg(0, 15)) == -1)
return;
if ((d = getnarg(0, 0)) == -1)
return;
ublock[16 * b + c] = d;
}
else if (EQ(wordbuf, "object")) {
if ((b = getnarg(0, numobs - 1)) == -1)
return;
if ((c = getnarg(0, 3)) == -1)
return;
if ((d = getnarg(0, 0)) == -1)
return;
objinfo[4 * b + c] = d;
}
else {
bprintf("Must specify Player or Object\n");
return;
}
bprintf("Tis done\n");
}
int
getnarg(bt, to)
int bt, to;
{
int x;
if (brkword() == -1) {
bprintf("Missing numeric argument\n");
return -1;
}
x = atoi(wordbuf);
if ((bt != to && x < bt) || (to && x > to)) {
bprintf("Invalid range\n");
return -1;
}
return x;
}