This is a well working one.... Enjoy. struct camp_event { struct char_data *ch; int was_in; }; ACMD(do_camp) { struct camp_event *ce; if (GET_ACTION(ch)) { send_to_char("You are too busy to do this!\r\n", ch); return; } if (GET_POS(ch) == POS_FIGHTING) { send_to_char("Suicide may be accomplished in many ways. This isn't one of them.\r\n", ch); return; } /* create and initialize the camp event */ CREATE(ce, struct camp_event, 1); ce->ch = ch; ce->was_in = ch->in_room; GET_ACTION(ch) = event_create(camp_event, ce, 50); act("You prepare a campsite, in anticipation of leaving the realm.", FALSE, ch, NULL, NULL, TO_CHAR); } EVENTFUNC(camp_event) { struct camp_event *ce = (struct camp_event *) event_obj; struct char_data *ch = NULL; int was_in, now_in, x, y, z; void Crash_rentsave(struct char_data *ch, int cost); /* extract all the info from ce */ ch = ce->ch; was_in = ce->was_in; now_in = ch->in_room; free(event_obj); /* make sure we're supposed to be here, then clear it */ if (!GET_ACTION(ch)) return 0; GET_ACTION(ch) = NULL; if (IS_NPC(ch) || !ch->desc) return 0; if (GET_POS(ch) == POS_FIGHTING) { act("You decide now is not the best time for camping.", FALSE, ch, NULL, NULL, TO_CHAR); return 0; } if (now_in != was_in) { act("You are no longer near where you began the campsite.", FALSE, ch, NULL, NULL, TO_CHAR); return 0; } act("You complete your campsite, and leave this world for awhile.", FALSE, ch, NULL, NULL, TO_CHAR); if (!GET_INVIS_LEV(ch)) act("$n camps out, leaving this realm.", TRUE, ch, 0, 0, TO_PROXIMITY); sprintf(buf, "%s camped out", GET_NAME(ch)); mudlog(buf, CMP, LVL_GOD, TRUE); Crash_rentsave(ch, 0); extract_char(ch); save_char(ch, now_in); return 1; } Erik Madison System Engineer LinkMaster ISP Services fafhrd@linkmaster.net +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST