1344ca1c2fdffb32ee144d44520934c525e87447
2 * routines dealing specifically with rings
4 * @(#)rings.c 3.17 (Berkeley) 6/15/81
6 * Rogue: Exploring the Dungeons of Doom
7 * Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman
10 * See the file LICENSE.TXT for full copyright and licensing information.
20 register struct object
*obj
;
21 register struct linked_list
*item
;
26 item
= get_item("put on", RING
);
28 * Make certain that it is somethings that we want to wear
32 obj
= (struct object
*) ldata(item
);
33 if (obj
->o_type
!= RING
)
36 msg("It would be difficult to wrap that around a finger");
43 * find out which hand to put it on
48 if (cur_ring
[LEFT
] == NULL
&& cur_ring
[RIGHT
] == NULL
)
50 if ((ring
= gethand()) < 0)
53 else if (cur_ring
[LEFT
] == NULL
)
55 else if (cur_ring
[RIGHT
] == NULL
)
60 msg("You already have a ring on each hand");
68 * Calculate the effect it has on the poor guy.
73 save_max
= max_stats
.s_str
;
75 max_stats
.s_str
= save_max
;
78 player
.t_flags
|= CANSEE
;
80 mvwaddch(cw
, hero
.y
, hero
.x
, PLAYER
);
87 if (r_know
[obj
->o_which
] && r_guess
[obj
->o_which
])
89 free(r_guess
[obj
->o_which
]);
90 r_guess
[obj
->o_which
] = NULL
;
92 else if (!r_know
[obj
->o_which
] && askme
&& r_guess
[obj
->o_which
] == NULL
)
95 msg(terse
? "Call it: " : "What do you want to call it? ");
96 if (get_str(buf
, cw
) == NORM
)
98 r_guess
[obj
->o_which
] = malloc((unsigned int) strlen(buf
) + 1);
99 if (r_guess
[obj
->o_which
] != NULL
)
100 strcpy(r_guess
[obj
->o_which
], buf
);
109 register struct object
*obj
;
111 if (cur_ring
[LEFT
] == NULL
&& cur_ring
[RIGHT
] == NULL
)
116 msg("You aren't wearing any rings");
119 else if (cur_ring
[LEFT
] == NULL
)
121 else if (cur_ring
[RIGHT
] == NULL
)
124 if ((ring
= gethand()) < 0)
127 obj
= cur_ring
[ring
];
130 msg("Not wearing such a ring");
134 msg("Was wearing %s", inv_name(obj
, TRUE
));
144 msg("Left or Right ring? ");
146 msg("Left hand or right hand? ");
147 if ((c
= readchar(cw
)) == 'l' || c
== 'L')
149 else if (c
== 'r' || c
== 'R')
151 else if (c
== ESCAPE
)
157 msg("Please type L or R");
162 * how much food does this ring use up?
167 if (cur_ring
[hand
] == NULL
)
169 switch (cur_ring
[hand
]->o_which
)
176 return (rnd(100) < 33);
178 return -(rnd(100) < 50);
189 register struct object
*obj
;
193 if (!(obj
->o_flags
& ISKNOW
))
195 switch (obj
->o_which
)
202 strcpy(&buf
[1], num(obj
->o_ac
, 0));