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 artefact
if (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 One
rap[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