Mercurial > hg > early-roguelike
annotate srogue/things.c @ 40:984f7d5afb6f
srogue: fix '2n orange potions' description bug.
| author | elwin | 
|---|---|
| date | Sat, 04 Dec 2010 02:26:49 +0000 | 
| parents | 2128c7dc8a40 | 
| children | 3aa87373c908 | 
| rev | line source | 
|---|---|
| 36 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 1 /* | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 2 * Contains functions for dealing with things like | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 3 * potions and scrolls | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 4 * | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 5 * @(#)things.c 9.0 (rdk) 7/17/84 | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 6 * | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 7 * Super-Rogue | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 8 * Copyright (C) 1984 Robert D. Kindelberger | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 9 * All rights reserved. | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 10 * | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 11 * Based on "Rogue: Exploring the Dungeons of Doom" | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 12 * Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 13 * All rights reserved. | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 14 * | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 15 * See the file LICENSE.TXT for full copyright and licensing information. | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 16 */ | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 17 | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 18 #include <ctype.h> | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 19 #include "rogue.h" | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 20 #include "rogue.ext" | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 21 | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 22 | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 23 /* | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 24 * inv_name: | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 25 * Return the name of something as it would appear in an inventory. | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 26 */ | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 27 char * | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 28 inv_name(obj, drop) | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 29 struct object *obj; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 30 bool drop; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 31 { | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 32 reg char *pb, *tn, *pl; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 33 reg int wh, knowit; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 34 char nm[3], *inm, *q; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 35 | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 36 wh = obj->o_which; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 37 knowit = FALSE; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 38 if (obj->o_count > 1) | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 39 pl = "s"; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 40 else | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 41 pl = ""; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 42 if (obj->o_count > 1) | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 43 sprintf(nm, "%d", obj->o_count); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 44 else | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 45 strcpy(nm, "A"); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 46 tn = obj->o_typname; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 47 q = ""; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 48 switch(obj->o_type) { | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 49 case SCROLL: | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 50 sprintf(prbuf, "%s %s%s ", nm, tn, pl); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 51 pb = &prbuf[strlen(prbuf)]; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 52 if (s_know[wh] || o_on(obj,ISPOST)) { | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 53 knowit = TRUE; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 54 sprintf(pb, "of %s", s_magic[wh].mi_name); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 55 } | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 56 else if (s_guess[wh]) | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 57 sprintf(pb, "called %s", s_guess[wh]); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 58 else | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 59 sprintf(pb, "titled '%s'", s_names[wh]); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 60 when POTION: | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 61 sprintf(prbuf, "%s %s%s ", nm, tn, pl); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 62 pb = &prbuf[strlen(prbuf)]; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 63 if (p_know[wh] || o_on(obj, ISPOST)) { | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 64 sprintf(pb, "of %s", p_magic[wh].mi_name); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 65 knowit = TRUE; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 66 if (p_know[wh]) { | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 67 pb = &prbuf[strlen(prbuf)]; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 68 sprintf(pb,"(%s)",p_colors[wh]); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 69 } | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 70 } | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 71 else if (p_guess[wh]) | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 72 sprintf(pb,"called %s(%s)", p_guess[wh],p_colors[wh]); | 
| 40 | 73 else if (obj->o_count == 1) | 
| 36 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 74 sprintf(prbuf,"%s%s %s %s%s", nm, vowelstr(p_colors[wh]), | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 75 p_colors[wh], tn, pl); | 
| 40 | 76 else | 
| 77 sprintf(prbuf,"%s %s %s%s", nm, p_colors[wh], tn, pl); | |
| 36 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 78 when FOOD: | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 79 if (wh == 1) { | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 80 if (obj->o_count == 1) | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 81 q = vowelstr(fruit); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 82 sprintf(prbuf, "%s%s %s%s", nm, q, fruit, pl); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 83 } | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 84 else { | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 85 if (obj->o_count == 1) | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 86 sprintf(prbuf, "Some %s", tn); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 87 else | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 88 sprintf(prbuf, "%s rations of %s", nm, tn); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 89 } | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 90 knowit = TRUE; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 91 when WEAPON: | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 92 inm = w_magic[wh].mi_name; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 93 strcpy(prbuf, nm); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 94 if (obj->o_count == 1) | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 95 q = vowelstr(inm); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 96 pb = &prbuf[strlen(prbuf)]; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 97 if (o_on(obj,ISKNOW | ISPOST)) { | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 98 knowit = TRUE; | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 99 sprintf(pb, " %s %s", num(obj->o_hplus, obj->o_dplus), inm); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 100 } | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 101 else | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 102 sprintf(pb, "%s %s", q, inm); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 103 strcat(prbuf, pl); | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 104 when ARMOR: | 
| 
2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 105 inm = a_magic[wh].mi_name; | 
