Mercurial > hg > early-roguelike
annotate rogue4/things.c @ 235:2dcf10d45d5b
Rogue V4: add two more function declarations.
Though it was called with different numbers of arguments, add_line()
does not need to be a variadic function.  Making the second argument
mandatory is a better solution.
| author | John "Elwin" Edwards | 
|---|---|
| date | Mon, 07 Mar 2016 19:26:08 -0500 | 
| parents | 1b73a8641b37 | 
| children | ded75a57405c | 
| rev | line source | 
|---|---|
| 
12
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
2 * Contains functions for dealing with things like potions, scrolls, | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
3 * and other items. | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
4 * | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
5 * @(#)things.c 4.26 (Berkeley) 5/18/82 | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
6 * | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
7 * Rogue: Exploring the Dungeons of Doom | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
8 * Copyright (C) 1980, 1981, 1982 Michael Toy, Ken Arnold and Glenn Wichman | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
9 * All rights reserved. | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
10 * | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
11 * See the file LICENSE.TXT for full copyright and licensing information. | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
12 */ | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
13 | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
14 #include <curses.h> | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
15 #include <ctype.h> | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
16 #include <string.h> | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
17 #include "rogue.h" | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
18 | 
| 215 | 19 int pick_one(struct magic_item *magic, int nitems); | 
| 20 void print_disc(char type); | |
| 21 void set_order(short *order, int numthings); | |
| 22 char *nothing(char type); | |
| 23 | |
| 
12
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
24 bool got_genocide = FALSE; | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
25 | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
26 /* | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
27 * inv_name: | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
28 * Return the name of something as it would appear in an | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
29 * inventory. | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
30 */ | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
31 char * | 
| 215 | 32 inv_name(THING *obj, bool drop) | 
| 
12
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
33 { | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
34 register char *pb; | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
35 | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
36 pb = prbuf; | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
37 switch (obj->o_type) | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
38 { | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
39 case SCROLL: | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
40 if (obj->o_count == 1) | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
41 { | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
42 strcpy(pb, "A scroll "); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
43 pb = &prbuf[9]; | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
44 } | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
45 else | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
46 { | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
47 sprintf(pb, "%d scrolls ", obj->o_count); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
48 pb = &prbuf[strlen(prbuf)]; | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
49 } | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
50 if (s_know[obj->o_which]) | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
51 sprintf(pb, "of %s", s_magic[obj->o_which].mi_name); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
52 else if (s_guess[obj->o_which]) | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
53 sprintf(pb, "called %s", s_guess[obj->o_which]); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
54 else | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
55 sprintf(pb, "titled '%s'", s_names[obj->o_which]); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
56 when POTION: | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
57 if (obj->o_count == 1) | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
58 { | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
59 strcpy(pb, "A potion "); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
60 pb = &prbuf[9]; | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
61 } | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
62 else | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
63 { | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
64 sprintf(pb, "%d potions ", obj->o_count); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
65 pb = &pb[strlen(prbuf)]; | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
66 } | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
67 if (p_know[obj->o_which]) | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
68 sprintf(pb, "of %s(%s)", p_magic[obj->o_which].mi_name, | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
69 p_colors[obj->o_which]); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
70 else if (p_guess[obj->o_which]) | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
71 sprintf(pb, "called %s(%s)", p_guess[obj->o_which], | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
72 p_colors[obj->o_which]); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
73 else if (obj->o_count == 1) | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
74 sprintf(prbuf, "A%s %s potion", vowelstr(p_colors[obj->o_which]), | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
75 p_colors[obj->o_which]); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
76 else | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
77 sprintf(prbuf, "%d %s potions", obj->o_count, | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
78 p_colors[obj->o_which]); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
79 when FOOD: | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
80 if (obj->o_which == 1) | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
81 if (obj->o_count == 1) | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
82 sprintf(pb, "A%s %s", vowelstr(fruit), fruit); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
83 else | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
84 sprintf(pb, "%d %ss", obj->o_count, fruit); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
85 else | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
86 if (obj->o_count == 1) | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
87 strcpy(pb, "Some food"); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
88 else | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
89 sprintf(pb, "%d rations of food", obj->o_count); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
90 when WEAPON: | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
91 if (obj->o_count > 1) | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
92 sprintf(pb, "%d ", obj->o_count); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
93 else | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
94 sprintf(pb, "A%s ", vowelstr(w_names[obj->o_which])); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
95 pb = &prbuf[strlen(prbuf)]; | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
96 if (obj->o_flags & ISKNOW) | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
97 sprintf(pb, "%s %s", num(obj->o_hplus, obj->o_dplus, WEAPON), | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
98 w_names[obj->o_which]); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
99 else | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
100 sprintf(pb, "%s", w_names[obj->o_which]); | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
101 if (obj->o_count > 1) | 
| 
 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 
edwarj4 
parents:  
diff
changeset
 | 
102 strcat(pb, "s"); | 
