… | |
… | |
138 | |
138 | |
139 | if (command == 'i') |
139 | if (command == 'i') |
140 | castnow = 1; |
140 | castnow = 1; |
141 | |
141 | |
142 | /* Remove control of the golem */ |
142 | /* Remove control of the golem */ |
143 | if (op->contr->ranges[range_golem] != NULL) |
143 | if (op->contr->ranges[range_golem]) |
144 | { |
144 | { |
145 | if (op->contr->golem_count == op->contr->ranges[range_golem]->count) |
145 | op->contr->ranges[range_golem]->destroy (); |
146 | { |
|
|
147 | remove_friendly_object (op->contr->ranges[range_golem]); |
|
|
148 | remove_ob (op->contr->ranges[range_golem]); |
|
|
149 | free_object (op->contr->ranges[range_golem]); |
|
|
150 | } |
|
|
151 | |
|
|
152 | op->contr->ranges[range_golem] = NULL; |
146 | op->contr->ranges[range_golem] = 0; |
153 | op->contr->golem_count = 0; |
|
|
154 | } |
147 | } |
155 | |
148 | |
156 | if (params != NULL) |
149 | if (params != NULL) |
157 | { |
150 | { |
158 | int spellnumber = 0; |
151 | int spellnumber = 0; |
159 | |
152 | |
160 | if ((spellnumber = atoi (params))) |
153 | if ((spellnumber = atoi (params))) |
161 | for (spob = op->inv; spob && spob->count != (tag_t) spellnumber; spob = spob->below) |
154 | for (spob = op->inv; spob && spob->count != spellnumber; spob = spob->below) |
162 | /* nop */; |
155 | /* nop */; |
163 | else |
156 | else |
164 | spob = lookup_spell_by_name (op, params); |
157 | spob = lookup_spell_by_name (op, params); |
165 | |
158 | |
166 | if (spob && spob->type == SPELL) |
159 | if (spob && spob->type == SPELL) |
… | |
… | |
233 | |
226 | |
234 | switch (r) |
227 | switch (r) |
235 | { |
228 | { |
236 | case range_none: /* "Nothing" is always legal */ |
229 | case range_none: /* "Nothing" is always legal */ |
237 | return 1; |
230 | return 1; |
|
|
231 | |
238 | case range_bow: |
232 | case range_bow: |
239 | case range_misc: |
233 | case range_misc: |
240 | case range_magic: /* cast spells */ |
234 | case range_magic: /* cast spells */ |
241 | if (op->contr->ranges[r]) |
235 | return !!op->contr->ranges[r]; |
242 | return 1; |
|
|
243 | else |
|
|
244 | return 0; |
|
|
245 | |
236 | |
246 | case range_golem: /* Use scrolls */ |
237 | case range_golem: /* Use scrolls */ |
247 | if (op->contr->ranges[range_golem] && op->contr->ranges[range_golem]->count == op->contr->golem_count) |
238 | return !!op->contr->ranges[range_golem]; |
248 | return 1; |
|
|
249 | else |
|
|
250 | return 0; |
|
|
251 | |
239 | |
252 | case range_skill: |
240 | case range_skill: |
253 | if (op->chosen_skill) |
241 | return !!op->chosen_skill; |
254 | return 1; |
|
|
255 | else |
|
|
256 | return 0; |
|
|
257 | } |
242 | } |
|
|
243 | |
258 | /* No match above, must not be valid */ |
244 | /* No match above, must not be valid */ |
259 | return 0; |
245 | return 0; |
260 | } |
246 | } |
261 | |
247 | |
262 | void |
248 | void |