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 a

⟦58c0ed010⟧ TextFile

    Length: 7786 (0x1e6a)
    Types: TextFile
    Names: »action.c«

Derivation

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

TextFile

/*
**  Standard actions
*/
#include "kernel.h"
#include "condact.h"
#ifdef	RCSID
static char RCS[] =
	"$Header: action.c,v 1.1 89/03/13 09:35:20 rsalz Exp $";
#endif	/* RCSID */


/*
**  This function processes a database table entry action statement
**  of any form. Return may be jumpaway().
*/
stdaction(n)
    int n;
{
    int a, b, c, x, y;

    switch (n) {
    case NULL:
	break;				/* Do nothing */
    case GAIN:
	setpscore(mynum, pscore(mynum) + getpar());
	calibme();
	break;				/* Gain points */
    case LOSE:
	setpscore(mynum, pscore(mynum) - getpar());
	calibme();
	break;				/* Lose points */
    case WOUND:
	setpstr(mynum, pstr(mynum) - getpar());
	calibme();
	break;				/* Wounded and take damage */
    case HEAL:
	setpstr(mynum, pstr(mynum) + getpar());
	calibme();
	break;				/* Healed damage */
    case INC:
	a = getpar();			/* Increase state of object */
	setobjstate(a, state(a) + 1);
	if (state(a) > omaxstate(a))
	    setobjstate(a, omaxstate(a));
	break;
    case DEC:
	a = getpar();			/* Decrease state of object */
	if (state(a))
	    setobjstate(a, state(a) - 1);
	break;
    case ADD:
	a = getpar();
	globaldata[a] += getpar();
	break;				/* Flag Operations */
    case SUB:
	a = getpar();
	globaldata[a] -= getpar();
	break;
    case MUL:
	a = getpar();
	globaldata[a] *= getpar();
	break;
    case LET:
	a = getpar();
	globaldata[a] = getpar();
	break;
    case DIV:
	a = getpar();
	globaldata[a] /= getparnz();
	break;
    case MOD:
	a = getpar();
	globaldata[a] %= getparnz();
	break;
    case PUT:
	a = getpar();
	setoloc(a, getpar(), 0);
	break;				/* Put object in room */
    case PUTIN:
	a = getpar();
	setoloc(a, getpar(), 3);
	break;				/* Put object in container */
    case PUTCARR:
	a = getpar();
	setoloc(a, getpar(), 1);
	break;				/* Put object carried by user */
    case PUTWORN:
	a = getpar();
	setoloc(a, getpar(), 2);
	break;				/* Put object worn by user */
    case OK:
	bprintf("Ok.\n");		/* Print ok and exit table */
	/* FALLTHROUGH */
    case DONE:
	jumpaway();
    case DESTROY:
	osetbit(getpar(), 0);
	break;				/* Destroy object */
    case QUIT:
	loseme();
	crapup(messages[getpar()]);	/* Message exit */
    case DIE:
	delpers(pname(mynum));
	zapped = 1;			/* Dont save */
	loseme();
	crapup(messages[getpar()]);
    case PUTWITH:
	a = getpar();
	b = getpar();
	setoloc(a, oloc(b), ocarrf(b));
	break;				/* put obj by obj */
    case GOBY:
	teletrap(oloc(getpar()));
	break;				/* Goto object */
    case DISPROOM:
	disploc();
	break;				/* Describe current room */
    case GOTO:
	teletrap(getpar());		/* Jump to room */
	break;
    case SWAP:		/* Swap 2 object positions */
	a = getpar();
	b = getpar();
	x = oloc(a);
	y = ocarrf(a);
	setoloc(a, oloc(b), ocarrf(b));
	setoloc(b, x, y);
	break;
    case POBJ:
	bprintf("%s", oname(getpar()));
	break;				/* Print object name */
    case PPLAYER:
	bprintf("%s", pname(getpar()));
	break;				/* Print player name */
    case PNUMBER:
	bprintf("%d", getpar());
	break;				/* Print number */
    case SETLEVEL:
	setplev(mynum, getpar());
	calibme();
	break;				/* Set level */
    /* Setlevel to mortal levels results in calibration resetting ! */
    case SETVIS:
	setpvis(mynum, getpar());
	break;
    case COPYFL:
	globaldata[getpar()] = globaldata[getpar()];
	break;				/* Copy flag to flag */
    case LOBJAT:
	listobject(getpar(), 0);
	break;
    case LOBJIN:
	listobject(getpar(), 3);
	break;
    case LOBJCARR:
	listobject(getpar(), 1);
	break;				/* List items in things */
    case CREATE:
	oclrbit(getpar(), 0);
	break;
    case DOOBJS:
	break;				/* UNIMP */
    case DOPLS:
	break;				/* UNIMP */
    case SETSTATE:
	a = getpar();
	setobjstate(a, (int) getpar());
	break;				/* Set object state */
    /* Most of the actions below this point do major sections of code.
     * Quite a few still contain in wired special cases, which want removing
     * so be careful.  */
    case INVEN:
	inventory();
	break;
    case EXITS:
	exits();
	break;
    case MOVE:
	dodirn(getpar());
	break;				/* 0=n 1=e etc... */
    case SETIN:
	setincom();
	break;
    case SETOUT:
	setoutcom();
	break;
    case SETMIN:
	setmincom();
	break;
    case SETMOUT:
	setmoutcom();
	break;
    case TELL:
	tellcom();
	break;
    case SAY:
	saycom();
	break;
    case SHOUT:
	shoutcom();
	break;
    case WIZACT:
	wizcom();
	break;
    case ARCH:
	awizcom();
	break;
    case BUG:
	bugcom();
	break;
    case TYPO:
	typocom();
	break;
    case BLIND:
	ail_blind = 1;
	break;				/* Thesewill be pflags one day! */
    case DEAF:
	ail_deaf = 1;
	break;
    case DUMB:
	ail_dumb = 1;
	break;
    case CRIPPLE:
	ail_crip = 1;
	break;
    case CURE:
	ail_blind = 0;
	ail_crip = 0;
	ail_dumb = 0;
	ail_deaf = 0;
	break;
    case TSS:
	tsscom();
	break;				/* Time sharing escape */
    case LISTFILE:
	bprintf("\001f%s\001", messages[getpar()]);
	break;			/* Print a file - using bprintf file include */
    case USERS:
	usercom();
	break;
/*
    case BRIEF:
	brief_cmd();
	break;
*/
    case GETOLOC:
	a = getpar();
	globaldata[getpar()] = oloc(a);
	globaldata[getpar()] = ocarrf(a);
	break;				/* Load object location into flags */
    case GETPLOC:
	a = getpar();
	globaldata[getpar()] = ploc(a);
	break;				/* Load player location into flags */
    case SETSEX:
	a = getpar();
	setpsex(a, getpar());
	break;
    case PRONOUNS:
	pncom();
	break;
    case WHO:
	whocom();
	break;
    case GET:
	getobj();
	break;
    case DROP:
	dropitem();
	break;
    case WEAR:
	wearcom();
	break;
    case REMOVE:
	removecom();
	break;
    case GIVE:
	givecom();
	break;
    case STEAL:
	stealcom();
	break;
    case VALUE:
	valuecom();
	break;
    case SCORE:
	scorecom();
	break;
    case WEAPON:
	weapcom();
	break;
    case DROPIN:
	putcom();
	break;
    case FORCE:
	forcecom();
	break;
    case EXORCISE:
	exorcom();
	break;
    case BEG:
	begcom();
	break;
    case TIME:
	timecom();
	break;
    case SETACT:
	setcom();
	break;
    case EXAMINE:
	examcom();
	break;
    case LOCNODES:
	loccom();
	break;
    case DIR:
	dircom();
	break;
    case FOB:
	/* Find object and load into flags MAY AFFECT PRONOUNS */
	a = getpar();
	b = getpar();
	(void)getpar();
	(void)getpar();
	globaldata[a] = fobn(b == 1 ? item1 : item2);
	break;
    case RESET:
	rescom();
	break;
    case CONVERSE:
	convcom();
	break;
    case SHELL:
	shellcom();
	break;
    case INACT:
	incom();
	break;		/* Action after in is passed thru table seperate */
    case GOTOACT:
	goloccom();
	break;
    case PFLAGS:
	setpflags();
	break;
    case PLAYERS:
	peoplecom();
	break;
    case MOBILES:
	mobilecom();
	break;
    case WHERE:
	wherecom();
	break;
    case DECOBYTE:
	a = getpar();
	b = getpar();
	osetbyte(a, b, obyte(a, b) - 1);
	break;
    case INCOBYTE:
	/* Incremenbt object byte flag */
	a = getpar();
	b = getpar();
	osetbyte(a, b, obyte(a, b) + 1);
	break;
    case SETOBYTE:
	a = getpar();
	b = getpar();
	c = getpar();
	osetbyte(a, b, c);
	break;
    case PROVOKE:
	/* Do monster 0 point hit - starts fight if you with it */
	woundmn(getpar(), 0);
	break;
    case MOVEMON:
	/* Move player with NO messages about transfer - players as well as
	 * monsters */
	a = getpar();
	setploc(a, getpar());
	break;
    case WOUNDMON:
	/* Wound a mobile - COMMAND CANNOT APLY TO PLAYERS, IF WOULD KILL */
	a = getpar();
	woundmn(a, getpar());
	break;
    case KILL:
	killcom();
	break;
    case LOOK:
	look_cmd();
	break;
    case BROAD:
	broad(messages[getpar()]);
	break;
    case KILLPL:
	killplcom();
	break;
    default:
	if (n > 1999)
	    bprintf("%s", messages[n - 2000]);	/* Analyse message groups */
	else if (n > 199)
	    bprintf("%s\n", messages[n - 200]);
	else
	    bprintf("**Invalid Action.\n");
    }
}


disploc()
{
    lookin(ploc(mynum));
}

listobject(x, y)
    int x, y;
{
    aobjsat(x, y, 0);
}