and use it to force TSO's blessed blades to be randart items with the holy wrath brand and (for flavour) life protection. This change breaks saves, unfortunately, but allows for much cleaner finetuning.
I also replaced all those randart names "of The Shining One's @esteem@" etc. with plain "of The Shining One", as they're just too long otherwise. I'm sorry, dolorous! If it helps, I also culled some of the other overly long names. Randart names are now generally restricted to a maximum length of 25.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4472 c06c8d41-db1a-0410-9941-cceddc491573
KU5FY6KSLTGH44KEZT4SFANRKCTWCQC7VABCMNYJRZNJSYSOXAKQC 6FEZL55YR24UK2S72K23U25SM5YVMMT3FEYZGI4HTKQQUCATXUYAC 5YMFMYMV3MRQOJQ6YTJRJL3WS7C4AFB74ZIFOFOEBU5B7YBMS2TAC FNMFLXKHNFPTKR4RFSSTZDDHJ5OMLMAYBIDVNLSMUW33QJTTW5HAC SRQJVKQVUY7QGCEBA2VQTWEJ7ADIUSY7L46HJQSQNM5DXYRRH5KAC ZMYKMHWEU26FOUTD26Q4GTAZMI6RNO3K6NHQ2VGTESE3E73GQVCQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC 6FYEYTS5NRD5JAFIBSFHPBCQOKZBMWPWEI26USCI6OBUDGLJQKAAC 6VIU5UKD5ZWLEF2MEB42NJ3BYQYAJXSGAJXRO2Q4POX4HNRPYGUAC 5UXWZHJ23JEPCI7QAF3R7JWV37LHH7I2FEWCFD4JPC5HC7YQQJ2AC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC EJKHYV2Z6UPRVYUAL4WRW33GBNHYBFPMPA57HMBX2LQKXHIUO5VQC SN3VSV7G6NF6NLX5E47QJQQFDIPC2LQUUYGZMH6AWBF3FOUHXCBQC 5XRO5LF23BWIP7GJMWKJL267QLJN4BGXWKU7AELCAHN457O4UZHQC F42F3QNVICCXWPMNYL2QQJZNOVBVF4MXZUXNUC7KKYIRZ7R5HGPAC TYRQMDB4PCK6K4WOC6XSMAGRR2FIEUIQSM7RQO7ZZ44MY37HEA3QC IXLNOTBJGHKESBCTME6QAR6XVWFNCHYGMS62V62ZJEA7VLQHXO2QC LDBTCT5WIPLJPZWXS2RUQ26QKISCUUTLO77M464WOE6VSYSNPKYAC BTO5WE4OEK64DZQVNYLOESM74KKQNE7KSNMQVF5UDB26OBKP7ORQC 7K5P2GRF6QUXTMERG2R3BB6DZFQYJQ6V2KNPMBPFDLOP36NQILPAC IMWUGMMOAL72JLH5LLDD3BXXPZ7ZSTXQUJEXW5WMI6JKXHXD2N2AC X7TRUBJTRDVUI53BROBYHF4UDC4I5SUYWBUOGQMZNN2WEZAFVGVQC YBXZWBUWXXLLYKP5IHXU46AHJ4YO55NM5QE34I3DFB25NLPQXZPAC NMVBJSGTQODFIYMZ2U2HH2VRTM44ITRZAE2RRM6F4UQRR44F5QIQC QKEAQDJVENG6A765VDRHWJYG74SSRYB6RQD46IJZP33TMCT4OJVQC 2YPKGG54CJ5HF335JMVYX22G6YDO2UYKX63KEBIDFR5VV3JDQZ7QC SIKUFFTW6LUAQXM2YVHJQV7ESVM2KXNOFGT653DXIXTMJM3WYYHAC UKYGQLOVVM7UU4DJJPBH26ELQMI3K656N3HXIJV33LO2IVSDZZPAC ASSERT( is_random_artefact( item ) );ASSERT( item.props.exists( KNOWN_PROPS_KEY ) );const CrawlStoreValue &_val = item.props[KNOWN_PROPS_KEY];ASSERT( _val.get_type() == SV_VEC );const CrawlVector &known_vec = _val.get_vector();ASSERT( known_vec.get_type() == SV_BOOL );ASSERT( known_vec.size() == RA_PROPERTIES);ASSERT( known_vec.get_max_size() == RA_PROPERTIES);
CrawlHashTable &props = item.props;if (!props.exists( RANDART_PROPS_KEY ))props[RANDART_PROPS_KEY].new_vector(SV_SHORT).resize(RA_PROPERTIES);
if ( item_ident( item, ISFLAG_KNOW_PROPERTIES ) ){for (vec_size i = 0; i < RA_PROPERTIES; i++)known[i] = (bool) true;}else{for (vec_size i = 0; i < RA_PROPERTIES; i++)known[i] = known_vec[i];}
CrawlVector &rap = props[RANDART_PROPS_KEY];rap.set_max_size(RA_PROPERTIES);
}for (int i = 0; i < RA_PROPERTIES; i++)rap[i] = (short) proprt[i];}void randart_wpn_properties( const item_def &item,randart_properties_t &proprt,randart_known_props_t &known){ASSERT( is_random_artefact( item ) );ASSERT( item.props.exists( KNOWN_PROPS_KEY ) );ASSERT( item.props.exists( RANDART_PROPS_KEY ) );const CrawlStoreValue &_val = item.props[KNOWN_PROPS_KEY];ASSERT( _val.get_type() == SV_VEC );const CrawlVector &known_vec = _val.get_vector();ASSERT( known_vec.get_type() == SV_BOOL );ASSERT( known_vec.size() == RA_PROPERTIES);ASSERT( known_vec.get_max_size() == RA_PROPERTIES);if ( item_ident( item, ISFLAG_KNOW_PROPERTIES ) ){for (vec_size i = 0; i < RA_PROPERTIES; i++)known[i] = (bool) true;}else{for (vec_size i = 0; i < RA_PROPERTIES; i++)known[i] = known_vec[i];
const CrawlVector &rap_vec = item.props[RANDART_PROPS_KEY].get_vector();ASSERT( rap_vec.get_type() == SV_SHORT );ASSERT( rap_vec.size() == RA_PROPERTIES);ASSERT( rap_vec.get_max_size() == RA_PROPERTIES);for (vec_size i = 0; i < RA_PROPERTIES; i++)proprt[i] = rap_vec[i].get_short();
// already is an artefactif (is_artefact(item))return (false);ASSERT(!item.props.exists( KNOWN_PROPS_KEY ));item.props[KNOWN_PROPS_KEY].new_vector(SV_BOOL).resize(RA_PROPERTIES);CrawlVector &known = item.props[KNOWN_PROPS_KEY];known.set_max_size(RA_PROPERTIES);for (vec_size i = 0; i < RA_PROPERTIES; i++)known[i] = (bool) false;ASSERT(!item.props.exists( RANDART_PROPS_KEY ));item.props[RANDART_PROPS_KEY].new_vector(SV_SHORT).resize(RA_PROPERTIES);CrawlVector &rap = item.props[RANDART_PROPS_KEY];rap.set_max_size(RA_PROPERTIES);for (vec_size i = 0; i < RA_PROPERTIES; i++)rap[i] = (short) 0;// blessed blade of The Shining Onerap[RAP_BRAND] = (short) SPWPN_HOLY_WRATH;rap[RAP_NEGATIVE_ENERGY] = (short) 1;item.flags |= ISFLAG_RANDART;return (true);}
of The Shining One's @divine_esteem@of The Shining One's @anger_name@of The Shining One's @valour_name@of The Shining One's @virtue_name@
of The Shining One