diff options
author | zelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-12-28 06:53:07 +0000 |
---|---|---|
committer | zelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-12-28 06:53:07 +0000 |
commit | 04d5776a5cd366a0812dec39f23a2dd8867f47c0 (patch) | |
tree | dbd8dd0c57e141f0ef27abb74ca0dd5ef3b24b62 /crawl-ref/source/describe.cc | |
parent | d04224e3fc2b5271620775742cf316da09513f77 (diff) | |
download | crawl-ref-04d5776a5cd366a0812dec39f23a2dd8867f47c0.tar.gz crawl-ref-04d5776a5cd366a0812dec39f23a2dd8867f47c0.zip |
The entry gates to portal vaults can now set their long feature description via
the desc_long property of the Lua marker. The lets the portal vault code be
enitrely self contained, rather than having to have a portion of the
description in dat/descript/features.txt. Also, in theory each different entry
vault could have its own version of the description, or it could even
programatically vary after the entry vault had been generated (since it can be
a function in addition to a string). Also, since the gate's short feature
description is no longer needed as a key into the features database, the short
description doesn't need to be the same for each entry vault.
The way I put the descriptions into the .des files is a bit clunky, but when I
tried to use the Lua multi-line string quote ([[string]]) each line displayed
by Crawl was indented one space.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8001 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/describe.cc')
-rw-r--r-- | crawl-ref/source/describe.cc | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc index 3764151469..42bf6aa797 100644 --- a/crawl-ref/source/describe.cc +++ b/crawl-ref/source/describe.cc @@ -33,6 +33,7 @@ #include "itemname.h" #include "itemprop.h" #include "macro.h" +#include "mapmark.h" #include "menu.h" #include "message.h" #include "monstuff.h" @@ -1990,6 +1991,18 @@ std::string get_item_description( const item_def &item, bool verbose, return description.str(); } // end get_item_description() +static std::string _marker_feature_description(const coord_def &pos) +{ + std::vector<map_marker*> markers = env.markers.get_markers_at(pos); + for (int i = 0, size = markers.size(); i < size; ++i) + { + const std::string desc = markers[i]->feature_description_long(); + if (!desc.empty()) + return (desc); + } + return (""); +} + static std::string _get_feature_description_wide(int feat) { return std::string(); @@ -2017,8 +2030,18 @@ void describe_feature_wide(int x, int y) bool custom_desc = false; + if (feat == DNGN_ENTER_PORTAL_VAULT) + { + std::string _desc = _marker_feature_description(pos); + if (!_desc.empty()) + { + long_desc = _desc; + custom_desc = true; + } + } + const CrawlHashTable &props = env.properties; - if (props.exists(LONG_DESC_KEY)) + if (!custom_desc && props.exists(LONG_DESC_KEY)) { const CrawlHashTable &desc_table = props[LONG_DESC_KEY].get_table(); |