|
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 w
Length: 2678 (0xa76) Types: TextFile Names: »wizard.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Galaxy/src/wizard.c«
/* * %W% (mrdch&amnnon) %G% */ # include "header" extern char didchange[2] ; extern int changestat; extern int nulluser; int no_new_year = 0; /* * get a string. see if exists within the wizards file. */ iswizard (u) char *u; { char s[BUFSIZ]; FILE * wizf = fopen (WIZFIL, "r"); if (wizf == NULL) return (0); while (xgets (s, wizf)) { if (strcmp (s, u) == 0) { (void) fclose (wizf); return (1); /* oh, boy, i'm a wizard! */ } } (void) fclose (wizf); return (0); } /* gather chars into string, return upon CR or EOF */ xgets (s, f) FILE * f; char *s; { int c; for (;;) { c = getc (f); if (c == '\n' || c == EOF) { *s = '\0'; return (c == EOF ? 0 : 1); } else *s++ = c; } } /* * function that chakes if you're a wizard. */ assert_wizard () { if ( (iswiz[player] != 1) && !changestat) { say ("But sir, where is your wizard hat?"); longjmp (jparse, 1); } } toggle_wizard () { if (iswiz[player] == 1) { iswiz[player]++ ; say("Sir! You are no longer a wizard.") ; return ; } if (iswiz[player] == 2) { iswiz[player]-- ; say ("Sir! You have been nominated wizard again.") ; return ; } } /* * If playing agains oneself, or wizard, give the asking side * the opportunity to become the other side. */ changeplay () { if (!nulluser) assert_wizard (); curse_map (curpln); if (changestat) { player = !player; curpln = apntr; } else curpln = spntr; curse_com (curpln); didchange[player] = !didchange[player]; } /* * gives a lot. needs a wizard. */ wizwiz () { int j; assert_wizard (); feedpop ("5000"); for (j = 0; j < CLASES; j++) { curpln -> inventar.popul[j] += 1000; } curpln -> inventar.metals += 100; curpln -> inventar.know = 5; for (j = 1; j <= MAXSHIPS; j++) { curpln -> ships[j - 1] += j * 11; curpln -> missile[j - 1] += j * 11; } } /* * function that gives a planet to a player. Needs wizard to * work. */ takepl (s) char *s; { planet * pp; assert_wizard (); pp = getpl (s); skipword (s); assert_end (s); pp -> whos = player; say ("Planet %s surrenders.", pp -> pid); check_end (); } /* A quick exit for those who are permitted */ getoutofhere () { assert_wizard (); endgame (-1); } debuggingmode() { if(iswiz[0] || iswiz[1]) return(1); else return(0); }