|
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 - downloadIndex: ┃ T g ┃
Length: 2905 (0xb59) Types: TextFile Names: »groups.c«
└─⟦87ddcff64⟧ Bits:30001253 CPHDIST85 Tape, 1985 Autumn Conference Copenhagen └─ ⟦this⟧ »cph85dist/search/groups.c«
#ifndef lint static char rcsid[] = "$Header: groups.c,v 1.3 85/08/06 22:29:38 matt Exp $"; #endif /* * * search * * multi-player and multi-system search and destroy. * * Original by Greg Ordy 1979 * Rewrite by Sam Leffler 1981 * Socket code by Dave Pare 1983 * Ported & improved * by Matt Crawford 1985 * * routines to execute player "team" commands l, q, j, g * * Copyright (c) 1979 * * $Log: groups.c,v $ * Revision 1.3 85/08/06 22:29:38 matt * Change handling of "r", "b", "g", "j", "q" commands to * provide better feedback, using per-player message buffer. * */ #include "defines.h" #include "structs.h" /* * Look at your group's members. */ void lookg(p) register t_player *p; { extern void cput(), clearline(), put(); extern t_player player[NPLAYER]; extern char visual[NPLAYER][NPLAYER]; register t_player *pl; register int i; cput(MSDATA, p, "From security-- group = "); clearline(p); for (pl = player; pl < &player[NPLAYER]; pl++) { if (pl->status.alive == FALSE) continue; if (visual[p-player][i = pl-player]) put(p, "%c ", i+'A'); } } /* * Join a group. */ void joing(pl, person) register t_player *pl; char person; { extern t_player player[NPLAYER]; extern char visual[NPLAYER][NPLAYER]; register int i; register t_player *p; if (person == '\n' || person == '\r') { pl->cmdpend = 0; prompt(pl, ""); return; } if (person >= 'a') person -= 'a' - 'A'; for (p = player; p < &player[NPLAYER]; p++) { if (p->status.alive == FALSE || p == pl) continue; if ((i = p-player) == person-'A') { visual[pl-player][i] = 1; return; } } } /* * Quit a group. */ void quitg(pl, person) register t_player *pl; char person; { extern t_player player[NPLAYER]; extern char visual[NPLAYER][NPLAYER]; register int i, j; register t_player *p; if (person == '\n' || person == '\r') { pl->cmdpend = 0; prompt(pl, ""); return; } if (person == '.') { j = pl-player; for (i = 0; i < NPLAYER; i++) visual[j][i] = 0; pl->cmdpend = 0; prompt(pl, ""); return; } if (person >= 'a') person -= 'a' - 'A'; for (p = player; p < &player[NPLAYER]; p++) { if (p->status.alive == FALSE || p == pl) continue; if ((i = p-player) == person-'A') { visual[pl-player][i] = 0; return; } } } /* * Send a group message. */ void groupm(pl, c) register t_player *pl; char c; { extern void makescab(), pmesg(); extern t_player player[NPLAYER]; extern char visual[NPLAYER][NPLAYER]; register t_player *p; register int j; char cc; if (c == '\n' || c == '\r') { j = pl-player; cc = j+'A'; for (p = player; p < &player[NPLAYER]; p++) if (visual[j][p-player] && p->status.alive == TRUE) { pmesg(p, "From %c-- %s", cc, pl->mesgbuf); } pl->cmdpend = 0; donemsg(pl); return; } if (c == SCABLETTER) { /* Benedict Arnold */ c = '^'; makescab(pl); } echomsg(pl, c); }