From 72d9609baca7cbbd5a393e1da9707f1dfd42bdf5 Mon Sep 17 00:00:00 2001 From: zelgadis Date: Tue, 16 Oct 2007 07:08:28 +0000 Subject: Added new field seen_context to the monsters class, which can be set to cause a non-standard context to be passed to interrupt_activity( AI_SEE_MONSTER ) if it is called before the current turn is over. If a submerged monster surfaces in order to shout, it has to wait one turn before being able to submerge again. Added back in a scroll named "forgetfullness", but rather than giving amnesia about the map it gives amnesia about non-equipped inventory items. I tried to make the effects annoying rather than serious. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2481 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/effects.cc | 53 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'crawl-ref/source/effects.cc') diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc index 7fd88fac32..a4db2907b5 100644 --- a/crawl-ref/source/effects.cc +++ b/crawl-ref/source/effects.cc @@ -20,6 +20,7 @@ #include "externs.h" #include "beam.h" +#include "decks.h" #include "direct.h" #include "food.h" #include "hiscores.h" @@ -1820,3 +1821,55 @@ void yell(bool force) noisy( 10, you.x_pos, you.y_pos ); mpr("Attack!"); } // end yell() + +bool forget_inventory(bool quiet) +{ + int items_forgotten = 0; + + for (int i = 0; i < ENDOFPACK; i++) + { + item_def& item(you.inv[i]); + if (!is_valid_item(item) || item_is_equipped(item)) + continue; + + unsigned long orig_flags = item.flags; + + unset_ident_flags(item, ISFLAG_KNOW_CURSE); + + // Don't forget times used or uses left for wands or decks. + if (item.base_type != OBJ_WANDS && item.base_type != OBJ_MISCELLANY) + unset_ident_flags(item, ISFLAG_KNOW_PLUSES); + + if (!is_artefact(item)) + { + switch (item.base_type) + { + case OBJ_WEAPONS: + case OBJ_ARMOUR: + case OBJ_BOOKS: + case OBJ_STAVES: + case OBJ_MISCELLANY: + // Don't forget identity of decks if it the player has + // used any of its cards, or knows how many are left. + if (!is_deck(item) || item.plus2 == 0) + unset_ident_flags(item, ISFLAG_KNOW_TYPE); + break; + + default: + break; + } + } + // Non-jewellery artifacts can easily be re-identified by + // equipping them. + else if (item.base_type != OBJ_JEWELLERY) + unset_ident_flags(item, ISFLAG_KNOW_TYPE | ISFLAG_KNOW_PROPERTIES); + + if (item.flags != orig_flags) + items_forgotten++; + } + + if (items_forgotten > 0) + mpr("Wait, did you forget something?"); + + return (items_forgotten > 0); +} -- cgit v1.2.3-54-g00ecf