From 499f07fc517ae167f5a230a398568def9622e3e3 Mon Sep 17 00:00:00 2001 From: Johanna Ploog Date: Tue, 15 Dec 2009 22:05:51 +0100 Subject: Count primary disciplines in themed randart book acquirement statistics. --- crawl-ref/source/spl-book.cc | 8 ++++++-- crawl-ref/source/wiz-item.cc | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) (limited to 'crawl-ref/source') diff --git a/crawl-ref/source/spl-book.cc b/crawl-ref/source/spl-book.cc index c69bdce331..f5f89f44b6 100644 --- a/crawl-ref/source/spl-book.cc +++ b/crawl-ref/source/spl-book.cc @@ -2467,6 +2467,9 @@ static bool _get_weighted_discs(bool completely_random, god_type god, for (int i = 0; i < SPTYP_LAST_EXPONENT; i++) { int disc = 1 << i; + if (disc & SPTYP_DIVINATION) + continue; + if (god_dislikes_spell_discipline(disc, god)) continue; @@ -3052,8 +3055,9 @@ bool make_book_theme_randart(item_def &book, int disc1, int disc2, set_artefact_name(book, name); - book.plus = disc1; - book.plus2 = disc2; + // Save primary/secondary disciplines back into the book. + book.plus = max1; + book.plus2 = max2; return (true); } diff --git a/crawl-ref/source/wiz-item.cc b/crawl-ref/source/wiz-item.cc index a3fdb7a2e4..75bbd4cf32 100644 --- a/crawl-ref/source/wiz-item.cc +++ b/crawl-ref/source/wiz-item.cc @@ -32,6 +32,7 @@ #include "religion.h" #include "skills2.h" #include "spl-book.h" +#include "spl-util.h" #include "stash.h" #include "stuff.h" #include "terrain.h" @@ -905,7 +906,14 @@ static void _debug_acquirement_stats(FILE *ostat) total_plus += item.plus + item.plus2; if (is_artefact(item)) + { num_arts++; + if (type == OBJ_BOOKS && item.sub_type == BOOK_RANDART_THEME) + { + const int disc1 = item.plus & 0xFF; + ego_quants[disc1]++; + } + } else if (type == OBJ_ARMOUR) // Exclude artefacts when counting egos. ego_quants[get_armour_ego_type(item)]++; @@ -945,6 +953,9 @@ static void _debug_acquirement_stats(FILE *ostat) fprintf(ostat, "%5.2f%% artefacts.\n", 100.0 * (float) num_arts / (float) acq_calls); + // TODO: For spellbooks, for each spell discipline list the number of + // known spells and castable seen/unseen spells + if (type == OBJ_WEAPONS) { fprintf(ostat, "Maximum combined pluses: %d\n", max_plus); @@ -1029,6 +1040,33 @@ static void _debug_acquirement_stats(FILE *ostat) else if (type == OBJ_BOOKS) { // TODO: Count themed books' main spell school. + fprintf(ostat, "Primary disciplines of themed randart books:\n"); + + const char* names[] = { + "conjuration", + "enchantment", + "fire magic", + "ice magic", + "transmutation", + "necromancy", + "summoning", + "divination", + "translocation", + "poison magic", + "earth magic", + "air magic", + "holy magic" + }; + + for (int i = 0; i < SPTYP_LAST_EXPONENT; ++i) + { + if (ego_quants[i] > 0) + { + fprintf(ostat, "%17s: %5.2f\n", names[i], + 100.0 * (float) ego_quants[i] / (float) num_arts); + } + } + fprintf(ostat, "\n\n"); } item_def item; -- cgit v1.2.3-54-g00ecf