DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T m

⟦dcec7e47f⟧ TextFile

    Length: 6549 (0x1995)
    Types: TextFile
    Names: »mobile.c«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Abermud/mobile.c« 

TextFile

/*
**  Timing event stuff
*/
#include "kernel.h"
#ifdef	RCSID
static char RCS[] =
	"$Header: mobile.c,v 1.1 89/03/13 09:36:54 rsalz Exp $";
#endif	/* RCSID */



static char *exnam[6] = {
    "north", "east", "south", "west", "up", "down"
};


on_timing()
{
    int ct;

    for (ct = 16; ct < 64; ct++) {
	if (!ptstflg(ct, 14) && pstr(ct) > 0)
	    consid_move(ct);		/* Maybe move it */
    }
    if (randperc() < 20)
	onlook();
}

/*
**  Look and timing fight controller
*/
onlook()
{
    chkfight(fpbns("shazareth"));
    if (!iscarrby(45, mynum))
	chkfight(fpbns("wraith"));
    chkfight(fpbns("bomber"));
    chkfight(fpbns("lavaman"));
    chkfight(fpbns("guard"));
    chkfight(fpbns("efreet"));
    chkfight(fpbns("djinni"));
    chkfight(fpbns("owin"));
    chkfight(fpbns("glowin"));
    chkfight(fpbns("smythe"));
    chkfight(fpbns("dio"));
    if (!iscarrby(45, mynum))
	chkfight(fpbns("zombie"));
    chkfight(fpbns("rat"));
    chkfight(fpbns("ghoul"));
    chkfight(fpbns("ogre"));
    chkfight(fpbns("riatha"));
    chkfight(fpbns("yeti"));
    chkfight(fpbns("guardian"));
    chkfight(fpbns("elf"));
    chkfight(fpbns("minotaur"));
    chkfight(fpbns("wolf"));
    chkfight(fpbns("beast"));
    chkfight(fpbns("flame"));
    if (iscarrby(32, mynum))
	dorune();
    if (phelping(mynum) != -1)
	helpchkr();
}

chkfight(x)
    int x;
{
    if (ptstflg(x, 14) || x < 0 || EMPTY(pname(x))
     || ploc(x) != ploc(mynum) || pstr(x) < 0 || pvis(mynum))
	return;
    if (x == fpbns("Wolf") || x == fpbns("Beast") || x == fpbns("Shazareth"))
	;
    else if (randperc() > 30)
	return;
    if (shimge[0] || ptstflg(mynum, 12))
	return;
    if (x == fpbns("yeti") && ohany((1 << 13))) {
	bprintf("\001syeti\001The yeti seems disturbed by naked flame, and keeps its distance\n\001");
	return;
    }
    if (pfighting(x) == -1)
	woundmn(x, 0);
}

consid_move(x)
    int x;
{
    int ct;

    if (EMPTY(pname(x)) || randperc() > 10 / tscale())
	return;
    for (ct = 0; ct < 64; ct++)
	if (pfighting(ct) == x)
	    return;

    if (fpbns("shazareth") == x || fpbns("wraith") == x
     || fpbns("figure") == x || fpbns("dragon") == x
     || fpbns("golem") == x || fpbns("beast") == x)
	return;
    if (fpbns("minotaur") == x && randperc() < 50)
	shiftstuff(x);
    else
	movemob(x);

    if (fpbns("chicken") == x && randperc() < 20)
	sendsys("Chicken Licken", "Chicken Licken", -10003,
		ploc(x), "The sky is about to fall in");
}

crashcom()
{
    if (plev(mynum) < 10) {
	bprintf("Hmmm....\n");
	bprintf("I expect it will sometime\n");
	return;
    }
    bprintf("Bye Bye Cruel World...\n");
    sendsys("", "", -666, 0, "");
    rescom();
}

singcom()
{
    if (!chkdumb()) {
	sillycom("\001P%s\001\001d sings in Gaelic\n\001");
	bprintf("You sing\n");
    }
}

spraycom()
{
    int a;

    if (vichere(&a) == -1)
	return;
    if (brkword() == -1) {
	bprintf("With what ?\n");
	return;
    }
    if (EQ(wordbuf, "with")) {
	if (brkword() == -1) {
	    bprintf("With what ?\n");
	    return;
	}
    }
    if (fobna(wordbuf) == -1) {
	bprintf("With what ?\n");
	return;
    }
    bprintf("You can't do that\n");
}


dircom()
{
    int a;
    char b[40];
    char d[40];
    int c;

    if (plev(mynum) < 10) {
	bprintf("That's a wiz command\n");
	return;
    }
    for (a = 0; a < numobs; a++) {
	c = findzone(oloc(a), b);
	sprintf(d, "%s%d", b, c);
	if (ocarrf(a))
	    strcpy(d, "CARRIED");
	if (ocarrf(a) == 3)
	    strcpy(d, "IN ITEM");
	bprintf("%-13s%-13s", oname(a), d);
	if (a % 3 == 2)
	    bprintf("\n");
	if (a % 18 == 17)
	    pbfr();
    }
    bprintf("\n");
}

sys_reset()
{
    FILE *fl;
    int i;
    time_t t;
    long u;

    if (tscale() != 1) {
	bprintf("There are other people on.... So it wont work!\n");
	return;
    }
    time(&t);
    if (fl = openlock(RESET_N, "r")) {
	fscanf(fl, "%ld", &u);
	closelock(fl);
	if (u < t && t < u + 3600) {
	    bprintf("Sorry at least an hour must pass between resets\n");
	    return;
	}
    }
    i = plev(mynum);
    setplev(mynum, 10);
    rescom();
    setplev(mynum, i);
}


dorune()
{
    int ct;

    if (in_fight)
	return;
    for (ct = 0; ct < 32; ct++) {
	if (ct == mynum || EMPTY(pname(ct)) || plev(ct) > 9)
	    continue;
	if (ploc(ct) == ploc(mynum))
	    break;
    }
    if (ct == 32)
	return;

    if (randperc() < 9 * plev(mynum) || fpbns(pname(ct)) == -1)
	return;
    bprintf("The runesword twists in your hands lashing out savagely\n");
    hitplayer(ct, 32);
}


dragget()
{
    int l;

    if (plev(mynum) > 9 || (l = fpbns("dragon")) == -1
     || ploc(l) != ploc(mynum))
	return 0;
    bprintf("The dragon makes it quite clear that he doesnt want his treasure borrowed\n");
    return 1;
}

helpchkr()
{
    int x;

    if (!i_setup)
	return;

    x = phelping(mynum);
    if (EMPTY(pname(x)) || ploc(x) != ploc(mynum)) {
	bprintf("You can no longer help \001c%s\001\n", pname(x));
	setphelping(mynum, -1);
    }
}

said_eight()
{
    if (ploc(mynum) != oloc(242))
	return;
    broad("\001dThere is an almighty crack of thunder!\n\001");
    if (ail_deaf == 0) {
	ail_deaf = 1;
	bprintf("There is an almighty crack of thunder!\n");
	bprintf("The noise has sent you deaf!\n");
    }
}

movemob(x)
    int x;
{
    int n;
    char v[80];
    int r;

    if (shimge[3])
	return;
    r = randperc() % 6;
    if ((n = getexit(ploc(x), r)) > 9999)
	/* MSG FLG ZONE - Unimplemented */
	return;
    if (n > 999) {
	if (state(n - 1000))
	    return;
	n = oloc((n - 1000) ^ 1);
    }
    /* Those are the things to avoid */
    if (n >= 0 || n == -660 || n == -169 || n == -901 || n == -900 || n == -654
     || n == -1124 || n == -600)
	return;

    sprintf(v, "\001s%s\001%s has gone %s .\n\001",
	pname(x), pname(x), exnam[r]);
    sendsys(pname(x), pname(x), -10000, ploc(x), v);
    setploc(x, n);
    sprintf(v, "\001s%s\001%s has arrived.\n\001", pname(x), pname(x));
    sendsys(pname(x), pname(x), -10000, ploc(x), v);
}

stopcom()
{
    if (plev(mynum) < 10) {
	bprintf("I don't know that verb.\n");
	return;
    }
    shimge[3] = 1;
    bprintf("Mobiles STOPped\n");
}

startcom()
{
    if (plev(mynum) < 10) {
	bprintf("I don't know that verb.\n");
	return;
    }
    shimge[3] = 0;
    bprintf("Mobiles STARTed\n");
}

shiftstuff(m)
    int m;
{
    int a;
    char x[200];

    for (a = 0; a < numobs; a++)
	if (ocarrf(a) == 0 && oloc(a) == ploc(m) && !oflannel(a)) {
	    sprintf(x, "\001sminotaur\001The Minotaur takes the %s.\n\001",
		    oname(a));
	    sendsys("minotaur", "minotaur", -10000, ploc(m), x);
	    setoloc(a, m, 1);
	    return;
	}
}