diff options
author | zelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-10-16 07:08:28 +0000 |
---|---|---|
committer | zelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-10-16 07:08:28 +0000 |
commit | 72d9609baca7cbbd5a393e1da9707f1dfd42bdf5 (patch) | |
tree | 7bbd5635360a189592c81ec4bc414a14d60fd175 /crawl-ref/source/effects.cc | |
parent | 96f8635d8d1267198304f1aab7ef4275cf8e4852 (diff) | |
download | crawl-ref-72d9609baca7cbbd5a393e1da9707f1dfd42bdf5.tar.gz crawl-ref-72d9609baca7cbbd5a393e1da9707f1dfd42bdf5.zip |
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
Diffstat (limited to 'crawl-ref/source/effects.cc')
-rw-r--r-- | crawl-ref/source/effects.cc | 53 |
1 files changed, 53 insertions, 0 deletions
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); +} |