Ok, here's the latest version of the assassin spec_proc. I haven't written docs for it yet (as I don't know if it works yet) If you use this code and it blows up in your face, try and find where it blew up, and why. I will try and figure it out. Unless you can loan me a site to test out the code, I can't do the debugging myself (and my computer is not fast enough, nor have enough HD space to run Linux or any UNIX for that matter) I am not responsible for murdered players with this code, and this version will NOT send a message tothe player if they succeed or not. Why? Well, until I can figure out how to get the system to send mud-mail automatically, I do not want to have the sanity checks to see if the hiring player is even online. Here we go...... #define ASSASSIN_PRICE(as) (GET_LEVEL(as) * 100000) SPECIAL(assassin) { int as_loc; struct char_data *as, *vict; as_loc = ch->in_room + 1; if (CMD_IS("list")) { send_to_char("Available assassins are:\r\n", ch); for (as = world[real_room(as_loc)].people;as;as = as->next_in_room) { sprintf(buf, "%8d - %s\r\n", ASSASSIN_PRICE(as), GET_NAME(as)); send_to_char(buf, ch); } return 1; } else if (CMD_IS("hire")) { two_arguments(argument, buf, buf2); if(!*buf) { send_to_char("Hire who?\r\n", ch); return 1; } if (!(as = get_char_room(buf, real_room(as_loc)))) { send_to_char("There is nobody called that!\r\n", ch); return 1; } if(!IS_NPC(as)) { send_to_char("GET THE HELL OUT OF THAT ROOM, NOW !!!\r\n", as); sprintf(buf, "%s is in the assassin store room.\r\n", GET_NAME(as)); mudlog(buf, BRF, LVL_IMMORT, TRUE); send_to_char("You can't hire players.\r\n", ch); return 1; } if (!*buf2) { send_to_char("Whom do want dead?\r\n", ch); return 1; } if (GET_GOLD(ch) < ASSASSIN_PRICE(as)) { send_to_char("You don't have enough gold!\r\n", ch); return 1; } if ((vict = get_player_vis(as, buf2, 0))) { GET_GOLD(ch) -= ASSASSIN_PRICE(as); as = read_mobile(GET_MOB_RNUM(as), REAL); char_to_room(as, ch->in_room); SET_BIT(MOB_FLAGS(as), MOB_ASSASSIN); SET_BIT(MOB_FLAGS(as), MOB_HUNTER); remember(as, vict); HUNTING(as) = vict; ASSASSIN(vict) = as; SET_BIT(AFF_FLAGS(vict), AFF_MARK); send_to_char("We cannot contact you if the job succeeds or not...security reasons.\r\n", ch); act("$n hires $N for a job.", FALSE, ch, 0, as, TO_ROOM); return 1; } else { send_to_char("The assassin can't find the mark!\r\n", ch); return 1; } } return 1; } --in interpreter.c in nanny() in CON_MENU before "char_to_room(d->character, load_room)" add in a struct char_data *as; if (IS_AFFECTED(d->character, AFF_MARK)) { as = read_mobile(AS_RNUM(d->character), REAL); char_to_room(as, AS_ROOM(d->character)); SET_BIT(MOB_FLAGS(as), MOB_ASSASSIN); SET_BIT(MOB_FLAGS(as), MOB_HUNTER); remember(as, vict); HUNTING(as) = vict; ASSASSIN(d->character) = as; } --in act.other.c in do_quit after the send_to_char("Good bye.... AS_ROOM(ch) = AS_MOB_ROOM(ch); AS_RNUM(ch) = AS_MOB_RNUM(ch); extract_char(ASSASSIN(ch)); --in structs.h in char_special_data, after *hunting add struct char_data *assassin; --in structs.h, in player_special_data_saved, change 2 of the spare int's to int as_room; int as_rnum; --in structs.h add in wherever there is room MOB_ASSASSIN MOB_HUNTING AFF_MARK --in utils.h add in #define ASSASSIN(ch) ((ch)->char_specials.assassin) #define AS_ROOM(ch) ((ch)->player_specials->saved.as_room) #define AS_RNUM(ch) ((ch)->player_specials->saved.as_rnum) #define AS_MOB_ROOM(ch) (ASSASSIN(ch)->in_room) #define AS_MOB_RNUM(ch) (ASSASSIN(ch)->nr) ------------------------------------------------------------------ Ryan A.J. Biggs email-ae744@freenet.toronto.on.ca Doppleganger, Charon the Boatman and member of Dieties Anonymous Owner of a 100% organic wibble and Plasma lamp, and rubber chicken Keeper of the sacred butcher knife and the Cloak of Shadows Compiler of the Net.Psionics.Handbook ------------------------------------------------------------------ +-----------------------------------------------------------+ | 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/07/00 PST