This is Almighty (awright@capaccess.org)'s code and my mud is located at mud.op.net 5000. If you have any questions mail me or log in and ask me about it. This code here makes it so you can let players place bounties on other players. Enjoy. If you use this please mail me to say that you did and send me your comments or we could trade some other code (I'm looking for a throw skill that works sort of like scan works) In merc.h define AFF_BOUNTY as whatever unused you have, I used L because it was sitting there unused. This is fight.c here, I put a few lines of code before where my bounty code starts so you can figure out where to place it this is bool damage in fight.c------------------------------- if ( IS_NPC( victim ) && HAS_TRIGGER( victim, TRIG_DEATH) ) { victim->position = POS_STANDING; mp_percent_trigger( victim, ch, NULL, NULL, TRIG_DEATH ); } t=time(NULL); if( !IS_NPC(victim) ) ch->last_attack=t; ------ up to this point you wouldve seen this, after this put this in, this is the payment portion------ { if (IS_SET(victim->affected_by, AFF_BOUNTY)) { ch-> silver += victim->level * 5000; send_to_char("You have recieved payment for your good work.\n\r",ch); } raw_kill( victim ); } then there's this little thing here, just so you can see where it goes------ /* dump the flags */ now farther into fight.c go into bool damage old and stick this in ------------------ if (IS_NPC(victim)) wiznet(log_buf,NULL,NULL,WIZ_MOBDEATHS,0,0); else { wiznet(log_buf,NULL,NULL,WIZ_DEATHS,0,0); -----you'll see that, right after it put this in-------------- if (IS_SET(victim->affected_by, AFF_BOUNTY)) { ch-> silver += victim->level * 5000; send_to_char("You have recieved payment for your good work.\n\r",ch); } } raw_kill( victim ); ------then you'll see this little thing again /* dump the flags */ ok that's the hard part, the rest is simple. You might have to play around with the {'s and get it to work with your fight.c make sure the raw_kill is always AFTER the check for AFF_BOUNTY, if it's not then you'll have people walking around basically immortal cause they cant die. Now put this part wherever you want. void do_bounty ( CHAR_DATA *ch , char *argument) { char arg1[MAX_INPUT_LENGTH]; CHAR_DATA *victim; char buf[MAX_STRING_LENGTH]; AFFECT_DATA af; int cost; DESCRIPTOR_DATA *d; argument = one_argument( argument, arg1); if (ch->in_room->vnum != 1223) /*You can change this to*/ /*whatever room you want or you can get rid of it*/ { send_to_char("You cannot do that here.\n\r",ch); return; } if ( ( victim = get_char_world(ch,arg1) ) == NULL ) { send_to_char("That person is not on the mud.\n\r",ch); return; } cost = 5000 * victim->level; if (IS_NPC(victim)) { send_to_char("Not on mobs dummy.\n\r",ch); return; } if ( (ch->silver + 100 * ch->gold) < cost ) { send_to_char( "You can't afford it.\n\r", ch ); return; } if (!IS_IMMORTAL(ch)) /*on my mud it is set up so that it's guildleader*/ /*only so this whole segment could be deleted*/ if (!ch->gleader) { send_to_char("Only guild leaders may bounty people.",ch); return; } if (IS_AFFECTED(victim,AFF_BOUNTY)) { send_to_char( "That person is already bountied.\n\r",ch); return; } deduct_cost(ch,cost); af.where = TO_AFFECTS; af.type = 0; af.level =100; af.duration = 150; af.location = APPLY_NONE; af.modifier = 0; af.bitvector = AFF_BOUNTY; affect_to_char( victim, &af ); send_to_char( "You have been bountied!\n\r", victim ); send_to_char( "Target bountied\n\r",ch); for ( d = descriptor_list; d; d = d->next ) { if ( d->connected == CON_PLAYING ) { sprintf( buf, "^BRINFO:^NW A bounty has been placed on %s for %d silver. \n\r",victim->name,victim->level * 5000); send_to_char(buf,d->character); } } return; } void do_unbounty ( CHAR_DATA *ch , char *argument) { char arg1[MAX_INPUT_LENGTH]; CHAR_DATA *victim; int cost; char buf[MAX_STRING_LENGTH]; DESCRIPTOR_DATA *d; argument = one_argument( argument, arg1); if (ch->in_room->vnum != 1223) { send_to_char("You cannot do that here.\n\r",ch); return; } if ( ( victim = get_char_world(ch,arg1) ) == NULL ) { send_to_char("That person is not on the mud.\n\r",ch); return; } if (IS_NPC(victim)) { send_to_char("Not on mobs dummy.\n\r",ch); return; } cost = 10000 * victim->level; if ( (ch->silver + 100 * ch->gold) < cost ) { send_to_char( "You can't afford it.\n\r", ch ); return; } if (!IS_AFFECTED(victim,AFF_BOUNTY)) { send_to_char("That person is not bountied.\n\r",ch); return; } else { REMOVE_BIT( victim->affected_by, AFF_BOUNTY ); affect_strip(victim,0); send_to_char( "Bounty flag removed.\n\r", ch ); send_to_char( "You are no longer bountied.\n\r", victim ); deduct_cost(ch,cost); for ( d = descriptor_list; d; d = d->next ) { if ( d->connected == CON_PLAYING ) { sprintf( buf, "^BRINFO:^NW The bounty on %s has been removed.\n\r", victim->name); send_to_char(buf,d->character); } } return; } } Now just define it in interp.h and interp.c as you see fit. If you want, you can add an option to the immortal pardon command so you can pardon player bounties.