This is how I went about implementing death/kill/deathtrap counters for player characters. It's meaningless in terms of characters having view of the underlying engine, yet still satisfies their hunger for numbers in do_score. I also have a 'victories in the arena' counter, but left it out considering my arena being scratch code. Should be simple enough to add. -Jac A ButterMud Production - telnet://betterbox.net:4000 Edit the follow spares in structs.h __structs.h__ int spells_to_learn; /* How many can you learn yet this level*/ int rip_cnt; int kill_cnt; int dt_cnt;; int spare10; __ Add the following macros in utils.h __utils.h__ #define GET_RIP_CNT(ch) ((ch)->player_specials->saved.rip_cnt) #define GET_KILL_CNT(ch) ((ch)->player_specials->saved.kill_cnt) #define GET_DT_CNT(ch) ((ch)->player_specials->saved.dt_cnt) __ Add the following right before die(victim) is called. __fight.c__ if (!IS_NPC(victim)) GET_RIP_CNT(victim) += 1; if (!IS_NPC(ch)) GET_KILL_CNT(ch) += 1; __ Add the following right before the character is extracted when walking into a deathtrap. __act.movement.c__ GET_DT_CNT(ch) += 1; __ Report it within do_score __do.score__ sprintf(buf, "%sYou have died %d times and killed %d opponents.\r\n", buf, GET_RIP_CNT(ch), GET_KILL_CNT(ch)); sprintf(buf, "%sYou have walked into a deathtrap %d times.\r\n", buf, GET_DT_CNT(ch)); __ Now for the nosey wizards in stat_char __act.wizard.c__ sprintf(buf, "Rip: [%d], Kills: [%d], DeaathTraps: [%d]\r\n",GET_RIP_CNT(k), GET_KILL_CNT(k), GET_DT_CNT(k)); send_to_char(buf, ch); __ +------------------------------------------------------------+ | 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/08/00 PST