/* * Predict the players location, and display it. */ void predict_score(void) { int j; high_score the_score; high_score scores[MAX_HISCORES]; /* Read scores, place current score */ highscore_read(scores, N_ELEMENTS(scores)); build_score(&the_score, "nobody (yet!)", NULL); if (p_ptr->is_dead) j = highscore_where(&the_score, scores, N_ELEMENTS(scores)); else j = highscore_add(&the_score, scores, N_ELEMENTS(scores)); /* Hack -- Display the top fifteen scores */ if (j < 10) { display_scores_aux(scores, 0, 15, j); } /* Display some "useful" scores */ else { display_scores_aux(scores, 0, 5, -1); display_scores_aux(scores, j - 2, j + 7, j); } }
/** * Enters a players name on a hi-score table, if "legal". * * Assumes "signals_ignore_tstp()" has been called. */ void enter_score(time_t *death_time) { int j; /* Cheaters are not scored */ for (j = 0; j < OPT_MAX; ++j) { if (option_type(j) != OP_SCORE) continue; if (!player->opts.opt[j]) continue; msg("Score not registered for cheaters."); event_signal(EVENT_MESSAGE_FLUSH); return; } /* Add a new entry, if allowed */ if (player->noscore & (NOSCORE_WIZARD | NOSCORE_DEBUG)) { msg("Score not registered for wizards."); event_signal(EVENT_MESSAGE_FLUSH); } else if (!player->total_winner && streq(player->died_from, "Interrupting")) { msg("Score not registered due to interruption."); event_signal(EVENT_MESSAGE_FLUSH); } else if (!player->total_winner && streq(player->died_from, "Quitting")) { msg("Score not registered due to quitting."); event_signal(EVENT_MESSAGE_FLUSH); } else { high_score entry; high_score scores[MAX_HISCORES]; build_score(&entry, player->died_from, death_time); highscore_read(scores, N_ELEMENTS(scores)); highscore_add(&entry, scores, N_ELEMENTS(scores)); highscore_write(scores, N_ELEMENTS(scores)); } /* Success */ return; }
/* * Enters a players name on a hi-score table, if "legal". * * Assumes "signals_ignore_tstp()" has been called. */ void enter_score(time_t *death_time) { int j; /* Cheaters are not scored */ for (j = OPT_SCORE; j < OPT_MAX; ++j) { if (!op_ptr->opt[j]) continue; msg_print("Score not registered for cheaters."); message_flush(); return; } /* Wizard-mode pre-empts scoring */ if (p_ptr->noscore & (NOSCORE_WIZARD | NOSCORE_DEBUG)) { msg_print("Score not registered for wizards."); message_flush(); } #ifndef SCORE_BORGS /* Borg-mode pre-empts scoring */ else if (p_ptr->noscore & NOSCORE_BORG) { msg_print("Score not registered for borgs."); message_flush(); } #endif /* SCORE_BORGS */ /* Hack -- Interupted */ else if (!p_ptr->total_winner && streq(p_ptr->died_from, "Interrupting")) { msg_print("Score not registered due to interruption."); message_flush(); } /* Hack -- Quitter */ else if (!p_ptr->total_winner && streq(p_ptr->died_from, "Quitting")) { msg_print("Score not registered due to quitting."); message_flush(); } /* Add a new entry to the score list, see where it went */ else { high_score entry; high_score scores[MAX_HISCORES]; build_score(&entry, p_ptr->died_from, death_time); highscore_read(scores, N_ELEMENTS(scores)); highscore_add(&entry, scores, N_ELEMENTS(scores)); highscore_write(scores, N_ELEMENTS(scores)); } /* Success */ return; }