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