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 c

⟦24b0e8adf⟧ TextFile

    Length: 3296 (0xce0)
    Types: TextFile
    Names: »condition.c«

Derivation

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

TextFile

/*
**  Condition evaluator for the system
*/
#include "kernel.h"
#include "condact.h"
#ifdef	RCSID
static char RCS[] =
	"$Header: condition.c,v 1.1 89/03/13 09:35:52 rsalz Exp $";
#endif	/* RCSID */


condeval(n, p2)
    int n, p2;
{
    int a, b, r, p;

    p = prmmod(p2);
    a = n & NOT;

    switch (n & COND) {
    case LEVEQ:
	r = plev(mynum) == p;
	break;
    case LEVLT:
	r = plev(mynum) < p;
	break;
    case IN:
	r = ploc(mynum) == p;
	break;
    case GOT:
	r = iscarrby(p, mynum);
	break;
    case AVL:
	r = isavl(p);
	break;
    case IFDEAF:
	r = ail_deaf;
	break;
    case IFDUMB:
	r = ail_dumb;
	break;
    case IFBLIND:
	r = ail_blind;
	break;
    case IFCRIPPLED:
	r = ail_crip;
	break;
    case IFFIGHTING:
	r = in_fight;
	break;
    case PFLAG:
	r = ptstflg(p, getnext());
	break;
    case STATE:
	r = state(p) == getnext();
	break;
    case EQc:
	r = globaldata[p] == getnext();
	break;
    case LT:
	r = globaldata[p] < getnext();
	break;
    case GT:
	r = globaldata[p] > getnext();
	break;
    case VISLT:
	r = pvis(p) < getnext();
	break;
    case VISEQ:
	r = pvis(p) == getnext();
	break;
    case CANSEE:
	r = pvis(p) <= plev(mynum);
	break;
    case STRLT:
	r = pstr(mynum) < p;
	break;
    case STREQ:
	r = pstr(mynum) == p;
	break;
    case ISIN:
	r = iscontin(p, getnext());
	break;
    case HERE:
	r = ishere(p);
	break;
    case PLGOT:
	r = iscarrby(p, getnext());
	break;
    case DESTROYED:
	r = otstbit(p, 0);
	break;
    case CHANCE:
	r = randperc() < p;
	break;
    case OBIT:
	r = otstbit(p, getnext());
	break;
    case FORCED:
	r = isforce;
	break;
    case INLT:
	r = ploc(mynum) < p;
	break;
    case INGT:
	r = ploc(mynum) > p;
	break;
    case ISME:
	r = p == mynum;
	break;
    case DARK:
	r = isdark();
	break;
    case OBJAT:
	r = oloc(p) == getnext() && ocarrf(p) == 0;
	break;
    case CHANCELEV:
	r = randperc() < p * plev(mynum);
	break;
    case WIZ:
	r = plev(mynum) > 9;
	break;
    case AWIZ:
	r = plev(mynum) > 9999;
	break;
    case OP:
	r = op(pname(mynum));
	break;
    case PLWORN:
	r = iswornby(p, getnext());
	break;
    case PAR:
	parameters[pptr++] = p2;
	r = 1;
	break;
    case TSTSEX:
	r = psex(mynum) == p;
	break;
    case WPN:
	r = pwpn(mynum) == p;
	break;
    case ENEMY:
	r = fighting == p;
	break;
    case CANGO:
	r = cango(p);
	break;
    case PREP:
	r = prep == p;
	break;
    case ALONE:
	r = tscale() == 100;
	break;
    case WILLFITIN:
	r = willhold(p, getnext());
	break;
    case ISMONSTER:
	r = p > 16;
	break;
    case CANCARRY:
	r = cancarry(p);
	break;
    case OBYTEEQ:
	b = getnext();
	r = obyte(p, b) == getnext();
	break;
    case OBYTEGT:
	b = getnext();
	r = obyte(p, b) > getnext();
	break;
    case OBYTEZ:
	r = obyte(p, getnext()) == 0;
	break;
    case HASANY:
	r = ohany((int)(1 << p)) == 1;
	break;
    case HELPED:
	r = ptothlp(mynum) > 0;
	break;
    case PHERE:
	r = ploc(p) == ploc(mynum);
	break;
    default:
	mudlog("bad condition - code %d", (char *)n);
	crapup("Something unexpectedly nasty has happened");
    }
    return a ? !r : r;
}


cango(d)
    int d;
{
    if (getexit(ploc(mynum), d) == 0)
	return 0;
    if (getexit(ploc(mynum), d) < 0)
	return 1;
    if (getexit(ploc(mynum), d) < 1000)
	return 0;
    if (state(getexit(ploc(mynum), d) - 1000) == 0)
	return 1;
    return 0;
}