Mercurial > hg > early-roguelike
annotate arogue7/rings.c @ 125:adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
| author | John "Elwin" Edwards | 
|---|---|
| date | Fri, 08 May 2015 15:24:40 -0400 | 
| parents | |
| children | b786053d2f37 | 
| rev | line source | 
|---|---|
| 
125
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
2 * rings.c - routines dealing specifically with rings | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
3 * Advanced Rogue | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
4 * Copyright (C) 1984, 1985, 1986 Michael Morgan, Ken Dalka and AT&T | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
5 * All rights reserved. | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
6 * | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
7 * Based on "Rogue: Exploring the Dungeons of Doom" | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
8 * Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
9 * All rights reserved. | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
10 * | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
11 * See the file LICENSE.TXT for full copyright and licensing information. | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
12 */ | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
13 | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
14 #include "curses.h" | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
15 #include "rogue.h" | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
16 | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
17 /* | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
18 * routines dealing specifically with rings | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
19 */ | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
20 | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
21 | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
22 /* | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
23 * how much food does this ring use up? | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
24 */ | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
25 ring_eat(hand) | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
26 register int hand; | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
27 { | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
28 if (cur_ring[hand] == NULL) | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
29 return 0; | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
30 switch (cur_ring[hand]->o_which) { | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
31 case R_VAMPREGEN: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
32 return 3; | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
33 case R_REGEN: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
34 return 2; | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
35 case R_HEALTH: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
36 case R_SUSABILITY: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
37 return 1; | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
38 case R_SEARCH: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
39 case R_SEEINVIS: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
40 return (rnd(100) < 33); | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
41 case R_DIGEST: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
42 if (cur_ring[hand]->o_ac >= 0) | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
43 return (-(cur_ring[hand]->o_ac)-1); | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
44 else | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
45 return (-(cur_ring[hand]->o_ac)); | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
46 } | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
47 return 0; | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
48 } | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
49 | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
50 ring_on(item) | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
51 register struct linked_list *item; | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
52 { | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
53 register struct object *obj; | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
54 register int save_max; | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
55 | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
56 obj = OBJPTR(item); | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
57 | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
58 /* | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
59 * Calculate the effect it has on the poor guy. | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
60 */ | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
61 switch (obj->o_which) | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
62 { | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
63 case R_ADDSTR: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
64 save_max = max_stats.s_str; | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
65 chg_str(obj->o_ac); | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
66 max_stats.s_str = save_max; | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
67 when R_ADDHIT: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
68 pstats.s_dext += obj->o_ac; | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
69 when R_ADDINTEL: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
70 pstats.s_intel += obj->o_ac; | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
71 when R_ADDWISDOM: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
72 pstats.s_wisdom += obj->o_ac; | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
73 when R_SEEINVIS: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
74 turn_on(player, CANSEE); | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
75 msg("Your eyes begin to tingle"); | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
76 light(&hero); | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
77 mvwaddch(cw, hero.y, hero.x, PLAYER); | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
78 when R_AGGR: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
79 aggravate(TRUE, TRUE); | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
80 when R_WARMTH: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
81 turn_on(player, NOCOLD); | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
82 when R_FIRE: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
83 turn_on(player, NOFIRE); | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
84 when R_LIGHT: { | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
85 if(roomin(&hero) != NULL) { | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
86 light(&hero); | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
87 mvwaddch(cw, hero.y, hero.x, PLAYER); | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
88 } | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
89 } | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
changeset
 | 
90 when R_SEARCH: | 
| 
 
adfa37e67084
Import Advanced Rogue 7.7 from the Roguelike Restoration Project (r1490)
 
John "Elwin" Edwards 
parents:  
diff
 | 
