On Thu, 28 Nov 1996 linebacker@microlink.net wrote:
> I have a simple sacrifice command that simply extracts the object or corpse
> from the room. My problem is that if a player tries to sacrifice a mob,
> the game crashes. How would I perform a check to see that the argument
> (*buf) is a mobile (or player)?
>
> I check to see if the arg is an object by if (obj = get_obj_in_list_vis(blah..
>
> How would I do this for a player or mob?
If you want to sacrafice mobiles (why?!), you can do:
struct char_data *mob = NULL;
/* if we find an object do a sacrafice on it */
if (obj = get_obj_in_list_vis(ch, arg, world[ch->in_room].contents)) {
if (GET_OBJ_TYPE(obj) != ITEM_CONTAINER || !GET_OBJ_VAL(obj, 3)) {
send_to_char("You can only sacrafice corpses.\r\n", ch);
return;
}
act("$n sacrafices $p to $s god.", TRUE, ch, 0, 0, TO_ROOM);
act("You sacrafice $p to your god.", FALSE, ch, 0, 0, TO_CHAR);
obj_from_room(obj);
extract_obj(obj);
// give a little reward
GET_GOLD(ch) += (GET_OBJ_WEIGHT(obj) / 8);
} else if (mob = get_char_room_vis(ch, arg)) {
raw_kill(mob);
return;
} else if (mob && !IS_NPC(mob)) {
send_to_char("You can't sacrafice a player.\r\n", ch);
return;
} else {
send_to_char("Sacrafice who or what?\r\n", ch);
return;
}
}
--
Daniel Koepke
dkoepke@california.com
Forgive me father, for I am sin.
+-----------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://cspo.queensu.ca/~fletcher/Circle/list_faq.html |
+-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST