/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* hack.rip.c - version 1.0.2 */ /* $FreeBSD: src/games/hack/hack.rip.c,v 1.4 1999/11/16 10:26:37 marcel Exp $ */ /* $DragonFly: src/games/hack/hack.rip.c,v 1.4 2006/08/21 19:45:32 pavalos Exp $ */ #include "hack.h" static void center(int, const char *); static char rip[][60] = { " ----------", " / \\", " / REST \\", " / IN \\", " / PEACE \\", " / \\", " | |", " | |", " | |", " | |", " | |", " | 1001 |", " *| * * * | *", " _________)/\\\\_//(\\/(/\\)/\\//\\/|_)_______\n", }; static const int n_rips = sizeof(rip) / sizeof(rip[0]); void outrip(void) { char *dpx; char buf[BUFSZ]; int j, x, y; cls(); strcpy(buf, plname); buf[16] = 0; center(6, buf); sprintf(buf, "%ld AU", u.ugold); center(7, buf); sprintf(buf, "killed by%s", !strncmp(killer, "the ", 4) ? "" : !strcmp(killer, "starvation") ? "" : index(vowels, *killer) ? " an" : " a"); center(8, buf); strcpy(buf, killer); if(strlen(buf) > 16) { int i,i0,i1; i0 = i1 = 0; for(i = 0; i <= 16; i++) if(buf[i] == ' ') i0 = i, i1 = i+1; if(!i0) i0 = i1 = 16; buf[i1 + 16] = 0; center(10, buf+i1); buf[i0] = 0; } center(9, buf); sprintf(buf, "%4d", getyear()); center(11, buf); for(y = 8, j = 0; j < n_rips; y++, j++){ x = 0; dpx = rip[j]; while(dpx[x]) { while(dpx[x] == ' ') x++; curs(x,y); while(dpx[x] && dpx[x] != ' '){ if(done_stopprint) return; curx++; putchar(dpx[x++]); } } } getret(); } static void center(int line, const char *text) { const char *ip = text; char *op; op = &rip[line][28 - ((strlen(text)+1)/2)]; while(*ip) *op++ = *ip++; }