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