1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
/* 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") ? "" :
strchr(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++;
}
|