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/wiz-item.cc | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'crawl-ref/source/wiz-item.cc') 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