summaryrefslogtreecommitdiffstats
path: root/crawl-ref
diff options
context:
space:
mode:
authorzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2008-06-03 02:51:49 +0000
committerzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2008-06-03 02:51:49 +0000
commit63e312c909cf2d91461e1b17b6e4c4a71a8250a0 (patch)
tree03185e2ed234e5e5bf079427534449d9a0857f71 /crawl-ref
parentc0c613a08e2c4353475b6dd14f5aa934b364a38d (diff)
downloadcrawl-ref-63e312c909cf2d91461e1b17b6e4c4a71a8250a0.tar.gz
crawl-ref-63e312c909cf2d91461e1b17b6e4c4a71a8250a0.zip
Don't include items in drop filter if they're cursed and equipped, or if
they're inscribed with "!d" or "!*". git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5446 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref')
-rw-r--r--crawl-ref/source/invent.cc21
-rw-r--r--crawl-ref/source/invent.h1
-rw-r--r--crawl-ref/source/menu.h2
3 files changed, 23 insertions, 1 deletions
diff --git a/crawl-ref/source/invent.cc b/crawl-ref/source/invent.cc
index 9ed94b4425..adb60da6e6 100644
--- a/crawl-ref/source/invent.cc
+++ b/crawl-ref/source/invent.cc
@@ -389,6 +389,27 @@ void InvMenu::draw_stock_item(int index, const MenuEntry *me) const
Menu::draw_stock_item(index, me);
}
+bool InvMenu::is_selectable(int index) const
+{
+
+ if (type == MT_DROP)
+ {
+ InvEntry *item = dynamic_cast<InvEntry*>(items[index]);
+ if (item->is_item_cursed() && item->is_item_equipped())
+ return false;
+
+ std::string text = item->get_text();
+
+ if (text.find("!*") != std::string::npos
+ || text.find("!d") != std::string::npos)
+ {
+ return false;
+ }
+ }
+
+ return Menu::is_selectable(index);
+}
+
template <std::string (*proc)(const InvEntry *a)>
int compare_item_str(const InvEntry *a, const InvEntry *b)
{
diff --git a/crawl-ref/source/invent.h b/crawl-ref/source/invent.h
index ad2fa005b5..46a3ead180 100644
--- a/crawl-ref/source/invent.h
+++ b/crawl-ref/source/invent.h
@@ -158,6 +158,7 @@ protected:
const menu_sort_condition *cond);
const menu_sort_condition *find_menu_sort_condition() const;
virtual void draw_stock_item(int index, const MenuEntry *me) const;
+ virtual bool is_selectable(int index) const;
protected:
menu_type type;
diff --git a/crawl-ref/source/menu.h b/crawl-ref/source/menu.h
index fdb1ff2ba2..91561b0440 100644
--- a/crawl-ref/source/menu.h
+++ b/crawl-ref/source/menu.h
@@ -311,7 +311,7 @@ protected:
void select_index( int index, int qty = -1 );
bool is_hotkey(int index, int key );
- bool is_selectable(int index) const;
+ virtual bool is_selectable(int index) const;
virtual int item_colour(int index, const MenuEntry *me) const;