I liked the bounty system that Kaan had so I took it and modified it to fit circle 3.1. You might find the coding disgusting in some places and you can be sure those are probably the places that I modified but, if it works. By the way I took out a few color codes from the original code but they are not hard to replace if you want them. Also as you might have noticed I added a line to the config.c file to set the cost of a bounty. I really don't know if this was the way to do it but it appears to work for me so I hope it does for you also. Tenethor ## Note from original author ## In Dibrova, we allow for a limited pkill based on many things (clan, level, etc). Another factor is the 'bounty' flag. If a player has a bounty on their head, they may be attacked by anyone who wishes to give it a shot. The charge in the current setup is 550,000 gold to set the bounty on a player, 500,000 of which goes to the player who gets the kill. The code below is that which enables the bounty option. Anyone who might need any help with this, feel free to visit me at 63.81.118.7 port 5150 (Dibrova). If I'm not on, send me a mudmail. - Kaan First of all towards the bottem of do_who in act.informative.c you need to add this in with all the other checks, I put it after the KILLER check but it shouldn't matter as long as you get it in that area. + if (PLR_FLAGGED(tch, PLR_BOUNTY)) + send_to_char(ch, " (BOUNTY)"); In config.c, anywhere really, add this. I think underneath 'int pt_allowed' is a good place + /* What is the cost to place a bounty? */ + int bounty_cost = 550000; + in fight.c add this under the other extern's + extern int bounty_cost; /* see config.c */ in 'check_killer' you need to change this + if (PLR_FLAGGED(vict, PLR_KILLER) || PLR_FLAGGED(vict, PLR_THIEF) || PLR_FLAGGED(vict, PLR_BOUNTY)) --- - if (PLR_FLAGGED(vict, PLR_KILLER) || PLR_FLAGGED(vict, PLR_THIEF)) and at the top of int damage you need to add this + char buf[MAX_STRING_LENGTH]; and towards the bottom you need to add this /* Uh oh. Victim died. */ if (GET_POS(victim) == POS_DEAD) {836,841d832 if (ch != victim && (IS_NPC(victim) || victim->desc)) {+ if (PLR_FLAGGED(victim, PLR_BOUNTY)) { if (AFF_FLAGGED(ch, AFF_GROUP)) group_gain(ch, victim); else solo_gain(ch, victim); } + if (PLR_FLAGGED(victim, PLR_BOUNTY)) { + REMOVE_BIT(PLR_FLAGS(victim), PLR_BOUNTY); + GET_GOLD(ch) = (GET_GOLD(ch) + (bounty_cost - ((bounty_cost / 100) * 10))); # /* This reward should be 90% of the cost you can change this to whatever you want though. */ + sprintf(buf, "\r\nBOUNTY:: The bounty on %s has been collected by %s!\r\n", GET_NAME(victim), GET_NAME(ch)); + send_to_all(buf); + } In interpreter.c you need to add this to the command list + { "bounty" , POS_STANDING, do_not_here , 0, 0 }, in spec_assign.c at the top add this to the declarations + SPECIAL(bounty); And this to the room assignments in 'void ASSIGNROOM' + ASSIGNROOM(3001, bounty); In spec_procs.c add this to the rest of the extern's + extern int bounty_cost; and this to the special declarations + SPECIAL(bounty); and this right below the spec_proc for SPECIAL(dump) /* The checks below can be changed to suit your tastes and to fit your mud. I */ /* changed the original code a little here becouse I don't have remorts on my mud. Tenethor */ + SPECIAL(bounty) + { + struct char_data *victim; + char buf[MAX_STRING_LENGTH]; + char arg[MAX_INPUT_LENGTH]; + + if (!CMD_IS("bounty")) + return FALSE; + + one_argument(argument, arg); + + if (!*arg) { + send_to_char(ch ,"Who is it that you wish to place a bounty on?\r\n"); + return TRUE; + } + if (!(victim = get_char_vis(ch, arg, NULL, FIND_CHAR_WORLD))) { + send_to_char(ch ,NOPERSON); + return TRUE; + } + if (victim == ch) { + send_to_char(ch, "You want to place a bounty on yourself? Nah.\r\n"); + return TRUE; + } + if (GET_LEVEL(victim) >= LVL_IMMORT) { + send_to_char(ch ,"Let's just call that person 'priviledged', okay?\r\n"); + return TRUE; + } + if ((GET_LEVEL(victim) + 10) < GET_LEVEL(ch)) { + send_to_char(ch ,"You can't place bounties on people that much lower than you.\r\n"); + return TRUE; + } + if (GET_GOLD(ch) < bounty_cost) { + send_to_char(ch, "You do not have the funds to place a bounty upon them.\r\n" + "The cost to place a bounty is %d gold.\r\n", bounty_cost); + return TRUE; + } + if (PLR_FLAGGED(victim, PLR_BOUNTY)) { + send_to_char(ch, "That person already has a bounty on them.\r\n"); + return TRUE; + } else + SET_BIT(PLR_FLAGS(victim), PLR_BOUNTY); + GET_GOLD(ch) = (GET_GOLD(ch) - bounty_cost); + send_to_char(ch, "You pay the %d gold to place the bounty.\r\n", bounty_cost); + send_to_char(victim, "A bounty has been placed upon your head - watch your back!\r\n"); + sprintf (buf, "\r\nBOUNTY:: A bounty has been placed upon %s's life!\r\n", GET_NAME(victim)); + send_to_all(buf); + return TRUE; + return FALSE; + } Finally in structs.h add this to the end of your player flags list. Remember to change these numbers to the next number in your list if need be. + #define PLR_BOUNTY (1 << 17) /* Player has a bounty on life */ ^^ This should be all you need to change. I hope I helped someone by updating this.