|
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 c
Length: 3296 (0xce0) Types: TextFile Names: »condition.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Abermud/condition.c«
/* ** 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; }