diff options
author | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-01-31 16:52:53 +0000 |
---|---|---|
committer | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-01-31 16:52:53 +0000 |
commit | 522d82aa2e3f30bba891843b44904741ab790659 (patch) | |
tree | a4ca8ccb9aac072ccc524d0487636f3031528c36 | |
parent | 8214e2be4bb79403f7fa585b83a8b015a1d0b0d8 (diff) | |
download | crawl-ref-522d82aa2e3f30bba891843b44904741ab790659.tar.gz crawl-ref-522d82aa2e3f30bba891843b44904741ab790659.zip |
Fix starting books being unidentified at game start.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8864 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r-- | crawl-ref/source/enum.h | 2 | ||||
-rw-r--r-- | crawl-ref/source/itemname.cc | 4 | ||||
-rw-r--r-- | crawl-ref/source/newgame.cc | 30 | ||||
-rw-r--r-- | crawl-ref/source/spl-book.cc | 12 |
4 files changed, 29 insertions, 19 deletions
diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h index 706bf3e247..6629a1480b 100644 --- a/crawl-ref/source/enum.h +++ b/crawl-ref/source/enum.h @@ -320,7 +320,7 @@ enum book_type BOOK_RANDART_LEVEL, // 46 BOOK_RANDART_THEME, - BOOK_CARD_EFFECT, + BOOK_CARD_EFFECT, // not implemented MAX_MEMORISABLE_BOOK = BOOK_CARD_EFFECT, diff --git a/crawl-ref/source/itemname.cc b/crawl-ref/source/itemname.cc index b6cbb48e9d..f9bf2de229 100644 --- a/crawl-ref/source/itemname.cc +++ b/crawl-ref/source/itemname.cc @@ -84,8 +84,10 @@ std::string item_def::name(description_level_type descrip, unsigned long ignore_flags) const { if (crawl_state.arena) + { ignore_flags |= ISFLAG_KNOW_PLUSES | ISFLAG_KNOW_CURSE - | ISFLAG_COSMETIC_MASK; + | ISFLAG_COSMETIC_MASK; + } if (descrip == DESC_NONE) return (""); diff --git a/crawl-ref/source/newgame.cc b/crawl-ref/source/newgame.cc index 562a942b67..152086313c 100644 --- a/crawl-ref/source/newgame.cc +++ b/crawl-ref/source/newgame.cc @@ -1311,7 +1311,9 @@ game_start: you.inv[i].flags |= ISFLAG_BEEN_IN_INV; // Identify all items in pack. - set_ident_type( you.inv[i], ID_KNOWN_TYPE ); + set_ident_type(you.inv[i], ID_KNOWN_TYPE); + set_ident_flags(you.inv[i], ISFLAG_IDENT_MASK); + // link properly you.inv[i].pos.set(-1, -1); you.inv[i].link = i; @@ -2061,17 +2063,21 @@ static char_choice_restriction _book_restriction(startup_book_type booktype) } } -static bool _choose_book( item_def& book, int firstbook, int numbooks ) +static bool _choose_book( int slot, int firstbook, int numbooks ) { - int keyin = 0; clrscr(); + + item_def &book(you.inv[slot]); book.base_type = OBJ_BOOKS; + book.sub_type = firstbook; book.quantity = 1; book.plus = 0; + book.plus2 = 0; book.special = 1; // Assume a choice of no more than three books, and that all book // choices are contiguous. + ASSERT(numbooks >= 1 && numbooks <= 3); char_choice_restriction book_restrictions[3]; for (int i = 0; i < numbooks; i++) { @@ -2099,6 +2105,7 @@ static bool _choose_book( item_def& book, int firstbook, int numbooks ) } } + int keyin = 0; if (!Options.random_pick && Options.book != SBT_RANDOM) { _print_character_info(); @@ -2116,7 +2123,8 @@ static bool _choose_book( item_def& book, int firstbook, int numbooks ) else textcolor(DARKGREY); - cprintf("%c - %s" EOL, 'a' + i, book.name(DESC_PLAIN).c_str()); + cprintf("%c - %s" EOL, 'a' + i, + book.name(DESC_PLAIN, false, true).c_str()); } textcolor(BROWN); @@ -2162,14 +2170,14 @@ static bool _choose_book( item_def& book, int firstbook, int numbooks ) else { keyin = 'a' - + _start_to_book(firstbook, Options.prev_book) - - firstbook; + + _start_to_book(firstbook, Options.prev_book) + - firstbook; } } break; case '%': list_commands('%'); - return _choose_book(book, firstbook, numbooks); + return _choose_book(slot, firstbook, numbooks); default: break; } @@ -4386,7 +4394,7 @@ static bool _choose_wand() if (i == num_choices - 1) { cprintf("%c - %s" EOL, letter, - you.inv[2].name(DESC_QUALNAME, false).c_str()); + you.inv[2].name(DESC_QUALNAME, false, true).c_str()); wandtype = you.inv[2].sub_type; is_rod = true; } @@ -5246,7 +5254,7 @@ bool _give_items_skills() _newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_LEATHER_ARMOUR, ARM_ROBE); - if (!_choose_book( you.inv[2], BOOK_CONJURATIONS_I, 2 )) + if (!_choose_book(2, BOOK_CONJURATIONS_I, 2 )) return (false); you.skills[SK_FIGHTING] = 2; @@ -5287,7 +5295,7 @@ bool _give_items_skills() _newgame_make_item(0, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE); _newgame_make_item(1, EQ_HELMET, OBJ_ARMOUR, ARM_WIZARD_HAT); - if (!_choose_book( you.inv[2], BOOK_MINOR_MAGIC_I, 3 )) + if (!_choose_book(2, BOOK_MINOR_MAGIC_I, 3 )) return (false); you.skills[SK_DODGING] = 2; @@ -5317,7 +5325,7 @@ bool _give_items_skills() case JOB_CONJURER: _newgame_make_item(0, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE); - if (!_choose_book( you.inv[1], BOOK_CONJURATIONS_I, 2 )) + if (!_choose_book(1, BOOK_CONJURATIONS_I, 2 )) return (false); you.skills[SK_CONJURATIONS] = 4; diff --git a/crawl-ref/source/spl-book.cc b/crawl-ref/source/spl-book.cc index abbe5ead07..5d97c6d4d8 100644 --- a/crawl-ref/source/spl-book.cc +++ b/crawl-ref/source/spl-book.cc @@ -1157,18 +1157,18 @@ void mark_had_book(int booktype) you.had_book[booktype] = true; - if ( booktype == BOOK_MINOR_MAGIC_I - || booktype == BOOK_MINOR_MAGIC_II - || booktype == BOOK_MINOR_MAGIC_III) + if (booktype == BOOK_MINOR_MAGIC_I + || booktype == BOOK_MINOR_MAGIC_II + || booktype == BOOK_MINOR_MAGIC_III) { - you.had_book[BOOK_MINOR_MAGIC_I] = true; - you.had_book[BOOK_MINOR_MAGIC_II] = true; + you.had_book[BOOK_MINOR_MAGIC_I] = true; + you.had_book[BOOK_MINOR_MAGIC_II] = true; you.had_book[BOOK_MINOR_MAGIC_III] = true; } else if (booktype == BOOK_CONJURATIONS_I || booktype == BOOK_CONJURATIONS_II) { - you.had_book[BOOK_CONJURATIONS_I] = true; + you.had_book[BOOK_CONJURATIONS_I] = true; you.had_book[BOOK_CONJURATIONS_II] = true; } } |