summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/actor.cc
diff options
context:
space:
mode:
authorDracoOmega <draco_omega@live.com>2013-03-05 19:10:39 -0330
committerDracoOmega <draco_omega@live.com>2013-03-06 01:38:14 -0330
commit0ef0d365f9aa9980514a9a6e4df57069ad36d37c (patch)
tree709e7b208008f99fe5b1223dd2c204c245366581 /crawl-ref/source/actor.cc
parente2e8a398e699175ec37813b621098e3f5e210a2c (diff)
downloadcrawl-ref-0ef0d365f9aa9980514a9a6e4df57069ad36d37c.tar.gz
crawl-ref-0ef0d365f9aa9980514a9a6e4df57069ad36d37c.zip
Make monster debug info in wizmode display monster props
It currently does not display all possible types that can be stored as a prop (eg: lua chunks or vectors), but none of those types are currently used anywhere as a monster prop, either.
Diffstat (limited to 'crawl-ref/source/actor.cc')
-rw-r--r--crawl-ref/source/actor.cc60
1 files changed, 60 insertions, 0 deletions
diff --git a/crawl-ref/source/actor.cc b/crawl-ref/source/actor.cc
index 91cdbe7b70..bcd59d5207 100644
--- a/crawl-ref/source/actor.cc
+++ b/crawl-ref/source/actor.cc
@@ -5,6 +5,7 @@
#include "artefact.h"
#include "attack.h"
#include "coord.h"
+#include "describe.h"
#include "env.h"
#include "fprop.h"
#include "itemprop.h"
@@ -749,3 +750,62 @@ void actor::handle_constriction()
}
}
}
+
+string actor::describe_props() const
+{
+ ostringstream oss;
+
+ if (props.size() == 0)
+ return "";
+
+ for (CrawlHashTable::const_iterator i = props.begin(); i != props.end(); ++i)
+ {
+ if (i != props.begin())
+ oss << ", ";
+ oss << string(i->first) << ": ";
+
+ CrawlStoreValue val = i->second;
+
+ switch (val.get_type())
+ {
+ case SV_BOOL:
+ oss << val.get_bool();
+ break;
+ case SV_BYTE:
+ oss << val.get_byte();
+ break;
+ case SV_SHORT:
+ oss << val.get_short();
+ break;
+ case SV_INT:
+ oss << val.get_int();
+ break;
+ case SV_FLOAT:
+ oss << val.get_float();
+ break;
+ case SV_STR:
+ oss << val.get_string();
+ break;
+ case SV_COORD:
+ {
+ coord_def coord = val.get_coord();
+ oss << "(" << coord.x << ", " << coord.y << ")";
+ break;
+ }
+ case SV_MONST:
+ {
+ monster mon = val.get_monster();
+ oss << mon.name(DESC_PLAIN) << "(" << mon.mid << ")";
+ break;
+ }
+ case SV_INT64:
+ oss << val.get_int64();
+ break;
+
+ default:
+ oss << "???";
+ break;
+ }
+ }
+ return oss.str();
+}