with an asterisk.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8011 c06c8d41-db1a-0410-9941-cceddc491573
YDWBT7CZGY33CNDPF7S4LK7YULFMDUJAKIODKMGB2IYIWHF4SJWQC Q57GOIHVFNJHTBYNUGJNME3UF2QFRJ6CN2UXVY47NHU7XAT7JJYAC TQOJIJP5MUILKWSEC3Q6BNGVFZJOYSCUR3DR4WPJQ4GGDEVQHEMQC 2Q42G2D2XQ4VWKLCY3JPX5PP3OPTO6PFAE2IYIKLEXA35MD67BBQC SQEDRNEA7TOPFLWDDPQ65BJDOZAARVFHNMCWQG2SWDXP4W5Z3CLAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC CCRQESB4ADT4WA7FGLNZZXAJ6G5QMCTYCZIWORBN45P6ZPILC34AC FWNNTOEERPUKXPE4OC52UABFZLKIU3O5GRNNLDK4QI4HR2IOU36QC QO5ZJWQ3JK3PEGBPTQSAYIPEJEHG2M2KTD74227G5VG7DVXUL3BQC 6F6OFJCUOBUP7QTVWSMSQPW25RLVRYVXO3VO5GLMFRY6K5RMOWFAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC 46MRRHVYJ3BS74R2BEVUWEWJCI4FCRBSLZ3NWMQCE6FUCNE5P73QC SN3VSV7G6NF6NLX5E47QJQQFDIPC2LQUUYGZMH6AWBF3FOUHXCBQC DTO3EUKWHZ5RJNGNCFYXSOVTIPVXPP637F2W7WFGYKJ7JK7VNKNQC Q3DNEB5OOJ34P5ML4CMK3L6SCP7RLW7DDOZEG24KZBX3C7BJRQDAC TZ2SH2SPO5TFSFL2OCV5A32P2X4CRHEKEK7ENUFCBVF3RKUWAD4AC JVSCP4FTW2G57C6YD5HZOZXTODGZH7TR75JQGFJBEPX3LCZH236QC NN6O3D72SXCVAKLQ4R6TPFUWCMWB2CQX4YAAI3DKYIUG6KK3MEEQC 6ZZO2QBB46RZM6OXVS7OIKC5M3SEAULSSJFXW5PJG556JDKKUHWAC SCZCQPNBQG2GXZ76LCEYOMB4QMZGI6YV7LJEC7ZVBUG27KLO564AC ASLW3Z5PAVZSWJEMMMVZT226P44EKSAD47QS72JIFJESAI3RPN3AC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC FIYBXLWALQINNQTHG2KNDUUTAQAZRDDLXW2XOVSKDKBADJ3XCJ4AC 52XHD5LKS6UVLXBYUXMPTMVMTXQ6FBUFXJ2TAW6R7CSJY7OXWVJAC RNJX2RDBDA62DSAUIWVVPFS7YNIU3GEOXDWJUABDS5DS5QGS3LAQC JJVROJMJVKS7VN5HJNB4ZNCG7Y6EMHJQZR3MDN2VZCFTZC73HOZQC 74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC SA3XGRMUEO3K6T4TJJWMWV2SG3JCEGLBM7SAN4IQ5A4VVMHFBCKQC DUOVSVYLZG2W4KHAPD57Z2OTWZUYHY46TLGJLI5R7YALOKZCTGFAC SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC VCG3BRIYRTNNWYC3LOXD6KFGXOX37HAFW2HNV7WXVG2V7EUHLDZQC 2KTJHQUX2LTU2BCLS5YXVRRKMOYKKIZAPF2LBKORFGSHEN5IO3IAC UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC KNO4TZR76DMOYJCF24PSVQW7FUZOTMOJTL7I7J74SM4IHOGDX6TAC X4OVIUAVNYPQYIL5WU6F263TZZL22Z22LHAFJJLOGOPXWCCT7LMQC EYYWIH7377INOKPRABJUATNQ2YWKLOVHZKQIY55POX2YXVMDDWAAC CKY7MRFWMNHXIPJD5ZUAJN5T2YHUIEAYBNYYV5GN74LBZJRDJMEQC return (base_type == OBJ_BOOKS? sub_type :base_type == OBJ_STAVES? sub_type + NUM_BOOKS - STAFF_SMITING :-1);
return (base_type == OBJ_BOOKS ? sub_type :base_type == OBJ_STAVES ? sub_type + NUM_BOOKS - STAFF_SMITING: -1);
int choice_weights[4] = {55, // fixed themed24, // leave alonelevel == -1 ? 0 : 12, // fixed levelagent == GOD_XOM ? 0 : 6, // manual (too useful for Xom)};
int choice = random_choose_weighted(55, BOOK_RANDART_THEME,24, book.sub_type,level == -1 ? 0 : 12, BOOK_RANDART_LEVEL,agent == GOD_XOM ? 0 : 6, BOOK_MANUAL, // too useful for Xom0);
}// Sif Muna shouldn't gift Vehumet or Kiku's special books.// (The spells therein are still fair game for randart books.)if (agent == GOD_SIF_MUNA&& doodad.sub_type >= MIN_GOD_ONLY_BOOK&& doodad.sub_type <= MAX_GOD_ONLY_BOOK){ASSERT(doodad.base_type == OBJ_BOOKS);// Try again.destroy_item(thing_created);thing_created = NON_ITEM;continue;
// Adds a list of all spells contained in a book or rod to its// description string.void append_spells(std::string &desc, const item_def &item){if (!item.has_spells())return;desc += "$$Spells Type Level$";for (int j = 0; j < 8; j++){spell_type stype = which_spell_in_book(item, j);if (stype == SPELL_NO_SPELL)continue;std::string name = (is_memorised(stype)) ? "*" : "";name += spell_title(stype);desc += name;for (unsigned int i = 0; i < 35 - name.length(); i++)desc += " ";name = "";if (item.base_type == OBJ_STAVES)name += "Evocations";else{bool already = false;for (int i = 0; i <= SPTYP_LAST_EXPONENT; i++){if (spell_typematch( stype, 1 << i )){if (already)name += "/" ;name += spelltype_name( 1 << i );already = true;}}}desc += name;for (unsigned int i = 36; i < 65 - name.length(); i++)desc += " ";char sval[3];itoa( spell_difficulty( stype ), sval, 10 );desc += sval;desc += "$";}}
break;case OBJ_BOOKS:if (!player_can_read_spellbook( item )){description << "$This book is beyond your current level of ""understanding.";}else if (!verbose && is_random_artefact( item )){append_spells( desc, item );if (desc.empty())need_extra_line = false;elsedescription << desc;}
break;case OBJ_BOOKS:if (!player_can_read_spellbook( item )){description << "$This book is beyond your current level of ""understanding.";}
}// Adds a list of all spells contained in a book or rod to its// description string.static void _append_spells(std::string &desc, const item_def &item){if (!item.has_spells())return;desc += "$$Spells Type Level$";for (int j = 0; j < 8; j++){spell_type stype = which_spell_in_book(item, j);if (stype == SPELL_NO_SPELL)continue;std::string name = spell_title(stype);desc += name;for (unsigned int i = 0; i < 35 - name.length(); i++)desc += " ";name = "";if (item.base_type == OBJ_STAVES)name += "Evocations";else{bool already = false;for (int i = 0; i <= SPTYP_LAST_EXPONENT; i++){if (spell_typematch( stype, 1 << i )){if (already)name += "/" ;name += spelltype_name( 1 << i );already = true;}}}desc += name;for (unsigned int i = 36; i < 65 - name.length(); i++)desc += " ";char sval[3];itoa( spell_difficulty( stype ), sval, 10 );desc += sval;desc += "$";}