the props table. No more re-rolling every time we need the name, yay! :D
Should be save file compatible, and I also modified my previous change to be save file compatible, after all. Not entirely sure this works, though, as I didn't have any old saved games to test this with.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4479 c06c8d41-db1a-0410-9941-cceddc491573
XI7X6SNTHG67D4NQWM75HWB6TVRXVFDPGNSQLTXN6JAZBZIVZXIQC X3ZYEJMCHJC27L6YT2NRYB6EN2T3XFRJNUENVHGRPBUKMTVHAGVQC K2GMFKXUWN5R3KCW6OYVXHN47MIQZKEEIOSAU6LFFKBNKF6JBVWAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC HQYQ6ZCUZBFKNPREFNSWSMRA4UD7VJXW6XK2GQONE5F3OX5NOMUQC KU5FY6KSLTGH44KEZT4SFANRKCTWCQC7VABCMNYJRZNJSYSOXAKQC TYRQMDB4PCK6K4WOC6XSMAGRR2FIEUIQSM7RQO7ZZ44MY37HEA3QC SN3VSV7G6NF6NLX5E47QJQQFDIPC2LQUUYGZMH6AWBF3FOUHXCBQC 7K5P2GRF6QUXTMERG2R3BB6DZFQYJQ6V2KNPMBPFDLOP36NQILPAC Q3DNEB5OOJ34P5ML4CMK3L6SCP7RLW7DDOZEG24KZBX3C7BJRQDAC BTO5WE4OEK64DZQVNYLOESM74KKQNE7KSNMQVF5UDB26OBKP7ORQC EJKHYV2Z6UPRVYUAL4WRW33GBNHYBFPMPA57HMBX2LQKXHIUO5VQC QVVC7AYGVA6U64PTNA7L27422NLMO327P22BQKXEVIMPZHIHO7MQC IXLNOTBJGHKESBCTME6QAR6XVWFNCHYGMS62V62ZJEA7VLQHXO2QC LDBTCT5WIPLJPZWXS2RUQ26QKISCUUTLO77M464WOE6VSYSNPKYAC 7AWYHENXBDI4OLKU7JD56YAKT5RO6UZ67HEBNPOILXCIFW6BONRAC VNHFP63ZLLZU3A3PLXP4BITX57DUIYDHFOHQYK3BOBHV3S64G26QC ASSERT( is_random_artefact( item ) );CrawlHashTable &props = item.props;if (!props.exists( RANDART_PROPS_KEY ))props[RANDART_PROPS_KEY].new_vector(SV_SHORT).resize(RA_PROPERTIES);CrawlVector &rap = props[RANDART_PROPS_KEY];rap.set_max_size(RA_PROPERTIES);for (vec_size i = 0; i < RA_PROPERTIES; i++)rap[i] = (short) 0;if (is_unrandom_artefact( item )){const unrandart_entry *unrand = _seekunrandart( item );for (int i = 0; i < RA_PROPERTIES; i++)rap[i] = (short) unrand->prpty[i];return;}FixedVector< int, RA_PROPERTIES > proprt;
void static _init_randart_properties(item_def &item){ASSERT( is_random_artefact( item ) );CrawlHashTable &props = item.props;if (!props.exists( RANDART_PROPS_KEY ))props[RANDART_PROPS_KEY].new_vector(SV_SHORT).resize(RA_PROPERTIES);CrawlVector &rap = props[RANDART_PROPS_KEY];rap.set_max_size(RA_PROPERTIES);for (vec_size i = 0; i < RA_PROPERTIES; i++)rap[i] = (short) 0;if (is_unrandom_artefact( item )){const unrandart_entry *unrand = _seekunrandart( item );for (int i = 0; i < RA_PROPERTIES; i++)rap[i] = (short) unrand->prpty[i];return;}randart_properties_t prop;_get_randart_properties(item, prop);
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);
if (item.props.exists( RANDART_PROPS_KEY )){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);
if (item_type_known(item)){// print artefact's real nameif (item.props.exists(RANDART_NAME_KEY))return item.props[RANDART_NAME_KEY].get_string();return _randart_name(item, false);}// print artefact appearanceif (item.props.exists(RANDART_APPEAR_KEY))return item.props[RANDART_APPEAR_KEY].get_string();return _randart_name(item, false);}
if ((status == UNIQ_EXISTS|| (in_abyss && status == UNIQ_NOT_EXISTS)|| (!in_abyss && status == UNIQ_LOST_IN_ABYSS))&& !force)
if (!force&& (status == UNIQ_EXISTS|| in_abyss && status == UNIQ_NOT_EXISTS|| !in_abyss && status == UNIQ_LOST_IN_ABYSS))
// set artefact nameASSERT(!item.props.exists( RANDART_NAME_KEY ));item.props[RANDART_NAME_KEY].get_string() = _randart_name(item);// set artefact appearanceASSERT(!item.props.exists( RANDART_APPEAR_KEY ));item.props[RANDART_APPEAR_KEY].get_string() = "brightly glowing blade";// in case this is ever needed anywhereitem.special = (random_int() & RANDART_SEED_MASK);
// get true artefact nameASSERT(!item.props.exists( RANDART_NAME_KEY ));item.props[RANDART_NAME_KEY].get_string() = _randart_name(item, false);// get artefact appearanceASSERT(!item.props.exists( RANDART_APPEAR_KEY ));item.props[RANDART_APPEAR_KEY].get_string() = _randart_name(item, true);