/********************************************************************************************** * Credits: The bounty command, Found on Kyndig.com * * modified by Ceial. The rest is original * * code by Ceial made for KBK. Use it as * * but leave this header above do bounty. * * Ceial (pinch_my_niblets@yahoo.ca) * **********************************************************************************************/ // Not this code has run flawless on a Tartarus based mud. No certain how it'll // react to stock rom or whatever you run. Use at your own descretion, and don't // email me telling me how my code sucks. I don't care, it works. :P // save.c stuff. I stuck it above titles in fwrite_char fprintf( fp, "Bounty %d\n", ch->pcdata->bounty ); // bounty data fprintf( fp, "Bkills %d\n", ch->pcdata->bkills ); // points for bounty // save.c in load_char_obj ch->pcdata->bounty = 0; ch->pcdata->bkills = 0; // in load_char, stuck it right after bamfin KEY( "Bounty", ch->pcdata->bounty, fread_number( fp ) KEY( "Bkills", ch->pcdata->bkills, fread_number( fp ) ); // Add this anywheres. Doesn't really matter. Just be sure to add it to interp.c & .h void do_bounty( CHAR_DATA *ch, char *argument ) { char arg1 [MAX_INPUT_LENGTH]; char arg2 [MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; CHAR_DATA *victim; argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); if ( arg1[0] == '\0' || arg2[0] == '\0' ) { send_to_char( "Place a bounty on who's head?\n\rSyntax: Bounty \n\r", ch ); if (IS_IMMORTAL(ch)) // lets imms know they can remove bounties { send_to_char("Bounty remove to remove bounties.\n\r",ch); } if (ch->cabal == CABAL_ANCIENT) // lets the clan members know they can check the value { send_to_char("Bounty show to see their worth.\n\r",ch); } return; } if ( ( victim = get_char_world( ch, arg1 ) ) == NULL) { send_to_char( "They aren't in the lands.", ch ); return; } if (IS_NPC(victim)) { send_to_char( "You cannot bounty that.\n\r", ch ); return; } // This is for the clan ancient. Since i made it so only they can see bounties // and reap the rewards. if ((ch->cabal == CABAL_ANCIENT) && (!strcmp(arg2,"show"))) // shows the worth { sprintf( buf, "Their bounty is worth %d gold.\n\r", victim->pcdata->bounty); send_to_char(buf,ch); return; } if (IS_IMMORTAL(ch) && (!strcmp(arg2,"remove"))) // removes it { victim->pcdata->bounty = 0; send_to_char("Bounty removed.\n\r",ch); send_to_char("Your bounty has been removed.\n\r",victim); return; } // Didn't want people adding bounties on top of other bounties. if (victim->pcdata->bounty != 0) { send_to_char( "They already have a bounty on their head.\n\r", ch); return; } // So they can't bounty the person in the clan. if (victim->cabal == CABAL_ANCIENT) { send_to_char("You can't bounty an Ancient!\n\r",ch); return; } if ( is_number( arg2 ) ) { int amount; amount = atoi(arg2); if (ch->gold < amount) { send_to_char( "You don't have that much gold!\n\r", ch ); return; } // Don't be a cheap ass if (amount < 1000) { send_to_char("Bleh! Don't insult Ancient like that. Use more gold!.\n\r",ch); return; } ch->gold -= amount; victim->pcdata->bounty +=amount; send_to_char("A bounty has been placed on your head.\n\r",victim); sprintf( buf, "You have placed a bounty on %s.\n\r",victim->name); send_to_char(buf,ch); return; } } //Bounty payoff for Ancient. in fight.c, stick it in raw_kill //And be sure you have defined a normal trash item vnum for the scalp if (!IS_NPC(victim) && (ch->cabal == CABAL_ANCIENT) && victim->pcdata->bounty > 0) { trophy = create_object(get_obj_index(OBJ_VNUM_ANCIENT_SCALP),0); sprintf( buf, trophy->short_descr, victim->name); free_string( trophy->short_descr ); trophy->short_descr = str_dup( buf); sprintf( buf, trophy->description, victim->name); free_string( trophy->description ); trophy->description = str_dup(buf); obj_to_char(trophy,ch); act("You violently carve off their scalp.",ch,0,0,TO_CHAR); act("$n violently carves off their scalp.",ch,0,0,TO_ROOM); sprintf(buf,"You recive a %d gold bounty, for killing %s.\n\r", victim->pcdata->bounty, victim->name); send_to_char(buf, ch); ch->gold += victim->pcdata->bounty; victim->pcdata->bounty =0; } // act_obj.c So you can reward the clan person with a point. // make a mob in the clan area for the pointmaster, and define it in merc if ((obj->pIndexData->vnum == OBJ_VNUM_ANCIENT_SCALP) && ((victim->pIndexData->vnum == MOB_VNUM_POINTMASTER))) { if (IS_NPC(victim)) { if (victim->pIndexData->vnum != MOB_VNUM_POINTMASTER) { send_to_char("You can only give scalps to the pointsmaster.",ch); return; } if (ch->cabal != CABAL_ANCIENT) { send_to_char("You aren't an assassin!\n\r",ch); return; } send_to_char("Your kill has been recorded.\n\r",ch); ch->pcdata->bkills ++; obj_from_char( obj ); return; } else { send_to_char("You can only give scalps to the pointsmaster.",ch); return; } }