have already become almost identical to randarts, change "randart" to "artefact" everywhere except for things that deal exclusively with randarts.
Artefact related files will be renamed later.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9921 c06c8d41-db1a-0410-9941-cceddc491573
FAVME2A2U4OUKN2BTISAG5PCI5Y4BN6YVFKCSQQHHZLEVVVF4LKAC
OWNA3PAPP5YH4HBNSBSDAG5A7XFMAMPNJ5AJKYYWUOIQEWR5XSQAC
BA34JRSHMCRMFKNMNNK46TX7ERXHS5H36TIRTTHJNVCR55J46EEAC
TUTFUS6U22EH5ZXTK5GSGL334V3YF6VBH64FMV4T3JX23LNBJOOAC
MGJRFND6ON2UWFGG3P7PBHBTR6MEBXVELWY6BY4WYRT6IXRRCH7AC
RDZRRV2H4QIV2X3F2FT5NOEWIX56LS3CYS3APOLXUHY6TYNT52LQC
Q7OI6GQEBHXWS57TEHHSWA27C7ONAMWDMXJLSRA46K5JUZWJZW5AC
VEPVDWCFXJD4PEIKPUW7PWVA7VC2IT65GXLUF4ZYRPLPY4EMWQPQC
IXJ2ZADFXOTEOQQQZSGBOIJGTJKDZZZ2AIBFBY4JU7OZUFLH675AC
QE7QCIIFVJFS5TC2APT2TQBMXE5H5IZSVQL2FK5GJNUCJYONFEXAC
26NQ45NPCJXWCCVZYUK6AT3DCHWRT2DZV4UH3ULAXIVBV74556QQC
USMI3T6OZLBVTEIBO22Q4WGZ6FWXL7TD5YDICN26D5OJ7NJ76MOAC
LU56733MPKSGXIYBH4DUPLMRBHL4ZPWTVQMJ4PM4ILWRTSZWIFKAC
H2BZTZTPBSGZLGEUBT5IZHQSLEKD75FJSFJWUFG6OZQY2FPF2CBQC
YBWBS2W5H36C46SVIDCHYCUDONUUSBBZLJHCQY2ESO3ZBFNBWWEQC
3XCAUQHISGMK5SBFEVCMFQTCXN3ECJZVMKHO7SCZ2YKAWG2OK3DAC
E4KOX6TZNYUWGNK4SMNHCUQMRXZ53Q7LI5POQ4REU3PUN5OX4UDAC
S6ZETU2X3HBTKBDL2KTAMCNPMPGHEZO2JGMILIWETWC7XXRS5RYQC
BMXIXQKM2247TENYZSOULFAT6VSZJNGGFBQ3SN7IOM4ROQRVTHZAC
M73AQ575IGVZOOV3ON6EQYEERF3D67H4QAF7SWIX4RLEQROM6ZUAC
N6SBZYHPKCHUZ5UQJLYYIEK62TTEV7YWZXHPTPNVHWPHR6XZRF4AC
JYEEOUYQ7ZPKOGWUV7VCORBVSOLF2UCBFBH3TR75RGOSS6PNKYUAC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
HBZDLHYIRJ3QEU4R6GJEINPVASM7YMVZBFR4QSGECNHVC7D6IVGAC
H5BVKRORNXTCJKFXQPTFWDURKSUFW24CGSJXBGZCJUP4DHMSVDBQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
SA3XGRMUEO3K6T4TJJWMWV2SG3JCEGLBM7SAN4IQ5A4VVMHFBCKQC
QO5ZJWQ3JK3PEGBPTQSAYIPEJEHG2M2KTD74227G5VG7DVXUL3BQC
AUXVWXWIFSTWFA6VZXN2FMG7FQEKRZVV6MD32VQQ7J2RKCXHAVGAC
JZTWTPXIUEVACX5B6FYQRVRJD3KQN653C4G4GXT2VSMX4EP7WS3AC
YFIVTYI7PMVAXV23DUPXPAQNEY3YSFIXQGSN32I3WVHMMD5XS5DQC
OQ4KB7QCJSK7GSW3DYBARH4DCB75HFKLUSOSOZZZ4IUFKNGFRUDQC
N5FAAVHNKQZJV2G3JFRW7WKTXB3A4YY6GTVIMBCG5RSA65TKVBGQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
2LJ3PLU4DNUUCK7SYPTK4G4BTDMJ6UEKOKWML6WOIPJKWLFCD5FQC
R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC
3ZWALZFSTSIVYXY4BAY6ANGINTDACZC6RSSJTEMQSTSUIE66YOBQC
PNFDSBFCGH5IZR7QNF4DQTEV4QXIIO4DWYTSFEOUWLZJVSWNDKAAC
QVVC7AYGVA6U64PTNA7L27422NLMO327P22BQKXEVIMPZHIHO7MQC
2KTJHQUX2LTU2BCLS5YXVRRKMOYKKIZAPF2LBKORFGSHEN5IO3IAC
EZ3ZUOFAHXI73BSCXNYS36TTK4OGCQBSFEIRVNXUAE64ZVKDW5PAC
K4HCETXKKZ4PYT3EG7EIRXV2P6LJXZDMKZ2J3LRPIEAWS4F4B3EAC
F42F3QNVICCXWPMNYL2QQJZNOVBVF4MXZUXNUC7KKYIRZ7R5HGPAC
6FEZL55YR24UK2S72K23U25SM5YVMMT3FEYZGI4HTKQQUCATXUYAC
WFG3MHLJUHQEHV65SPAIOI74NIZTGM447T4WKWKF7CMUIUNRUQOAC
WCJ3KKMEOPOZWA5WQJAWRWFKKYUNY7IKS5ULUIBZ7DXT7F6MVAEQC
SN3VSV7G6NF6NLX5E47QJQQFDIPC2LQUUYGZMH6AWBF3FOUHXCBQC
SRQJVKQVUY7QGCEBA2VQTWEJ7ADIUSY7L46HJQSQNM5DXYRRH5KAC
KPU2SA6G7UECM5N6PNXOT5CCQAYFBN47K5JYBQMFBD25HL2A5GIAC
IKKMJHAWBTZFUVGXCLQZ46PV5RRAMNJGUWKPJTVXVMMWW5QGWPLAC
P3BAFR6LTI7HANQCRLZWJ7LRJYFPFYIG7OVZV4RZM5EAMODRJKZAC
7AWYHENXBDI4OLKU7JD56YAKT5RO6UZ67HEBNPOILXCIFW6BONRAC
YBXZWBUWXXLLYKP5IHXU46AHJ4YO55NM5QE34I3DFB25NLPQXZPAC
LTFWXACXWTSFJNSVDFCMC4IJBHUERV6DNCKIECIMRXG2M2U3TYJAC
KU5FY6KSLTGH44KEZT4SFANRKCTWCQC7VABCMNYJRZNJSYSOXAKQC
XI7X6SNTHG67D4NQWM75HWB6TVRXVFDPGNSQLTXN6JAZBZIVZXIQC
FWNNTOEERPUKXPE4OC52UABFZLKIU3O5GRNNLDK4QI4HR2IOU36QC
SQEDRNEA7TOPFLWDDPQ65BJDOZAARVFHNMCWQG2SWDXP4W5Z3CLAC
EJKHYV2Z6UPRVYUAL4WRW33GBNHYBFPMPA57HMBX2LQKXHIUO5VQC
FFNPHXN2TA7MW6LNTLMU5FRPD4RZDYYTFGUV64RNPEUYEUPCFAVAC
S2FTVAH7NLTLI5CEINIAMJIW3PTZUE22APSK633Y4PLDZ4L6UK4QC
2JPE6F4MSUTKIAQBSTNK2ZYCXNALCOEAVE6IVGTBJIY4P7DA3I2QC
4PQNMLJKDNIU52JSP6QAC6FK23RZPRHNGLFBCPLMWX4TPTR2YN7AC
YXWZYOBUFR4EHBSKXCFGZNK7NIM7IPE2GMZYIXEJTUPDDC3BIEDAC
LDBTCT5WIPLJPZWXS2RUQ26QKISCUUTLO77M464WOE6VSYSNPKYAC
46MRRHVYJ3BS74R2BEVUWEWJCI4FCRBSLZ3NWMQCE6FUCNE5P73QC
P4PEPGY7ATSFJK44EEU5GXRNYTE3T67FYIBR6S2CJRKFQYQWZGGQC
FEKRY3DYIDLWVBLAZN7W2WFNEKZPCAHABXOSM6K5RLTH5WY2NODQC
5YMFMYMV3MRQOJQ6YTJRJL3WS7C4AFB74ZIFOFOEBU5B7YBMS2TAC
X3ZYEJMCHJC27L6YT2NRYB6EN2T3XFRJNUENVHGRPBUKMTVHAGVQC
TYRQMDB4PCK6K4WOC6XSMAGRR2FIEUIQSM7RQO7ZZ44MY37HEA3QC
NUFZ56NQQERFB3YMCXT3LBWTXIIITVGRZ3LCI6T4AT5LDNUG3GRAC
H7BW6SEIQ57X6V4BM2RX54W42W6BH5XJBAS6FYCYKLQQG43ZMU4QC
V53DXVC5T3N6J47H2CNG4MMPRR4PHW4AIS66QNVTKJNNYTTTQL4AC
JOI7WFNNDLVFF37WWV2OK5434U6O3ZHNJXIS5XIRPQFCY45JHGQAC
BTO5WE4OEK64DZQVNYLOESM74KKQNE7KSNMQVF5UDB26OBKP7ORQC
4SI4UGBUACYU6VN6QCDV4UQJDN3WJ4IDD3B2GEVI4DGRBENQJMPQC
ZMYKMHWEU26FOUTD26Q4GTAZMI6RNO3K6NHQ2VGTESE3E73GQVCQC
LY7DLLD7IKL6ZQPVROLDJ46XRM5CMAAEBRFDKJ4M53CPC5GFCGSQC
S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC
3P6R443Q7BHDL2CB34CW5XNWWJ5RXQZUAL7RKVZCNRZPZRLTJS6QC
36DYXIWAQTBOCZBCUPYWDKAXVWDU3TRMSM3OCQZGGMWE2KPERJMAC
X7PDT4KIPYJXXLGCQZKIPDQPYO636QL7LZ5KI2Q65RDNWTHYAT3QC
4HNVBCODEZSNIAVXS2ATJVABR2VGFAW55EOEIUOMYCYFA3TB27OQC
4GYZYBY7FFORRNPIEFTV4ZM2C7Z6D2KTQOM537ZCC2YBXT2TNSHAC
6ARBZEUSCIPVJUQJST5HG6TKQYQZPOHWYIIJO4OD2SUECPYMLVIQC
NCPEO4I5DFISIAOOERCB5BN3VQMBGKTYUSASWRFZAH6N3TVRWI4AC
V3GWLMX6JL3YOYB427VLHPOTGHGWZK64HI6LLUU4X6CFMD2MEQMQC
ILO5P5FRDUY4SEQEXMTUDKOPXAUBJRSORHHUVTLLCYOYSXBXOVRAC
VXSORUQOM2VZA4CAZDC6KPAY373NQIN3UT7CXQXTRCYXO2WM62DAC
XSXDKKFQKXP5V7N3QJRH2KMFJ7E6NRDMWAPK2TGUWRJUXSCZ4YKQC
LCCGXSFIDQFIRXHGRJWOELNPQOHHCXCWXS366GOULDFPQVOKAIJAC
HFCPPPYI366EDKNBDGVNSAW76OGQA2NYTKLSP4LC3VYKHPLWFJ6QC
XEC3L6W6TGIRWHINULNLKCIP4UBMHFYE33WJL7272I2GRRCFZBWAC
SIP35YIR6H5EBKAT4QN3LTE4XOUN6Z6DDMPK33TTGMM5PZM4QB5AC
WXZQJUZXMYS7R6ORNB7DWE5KEUXT262GXWMRPOJYYB4I3BFGYLLAC
LLD2VAMFNPATQNT6AVYSJHPZG3WRHYZAYSVYYK6NACSKHFL35ZMQC
SHFSQYLN7WPQC35V3XYYEIZ4CQMREASUNR474CIKFG3C2FYI4SHQC
7NDXS36TE7QVXTXJWMYSVG5UHCCLPIO4VL6NXFGTDK3ZNKE3A2IAC
QSRRV725GCNDOMIDS36NYAA65MOLDMAZSENVSZ3PNOLBFSGHH7BQC
UWI3ZNJDRQRL7CXFNFEG46TA6SAK24XUFY5YOKVOTJA3VG3OBNFAC
TJ72NVTRNJKF55RTH5MRLTHHVPOJ2M5OOYEWF4UFLTO2PPPTU6PQC
V2CC2HOQANCIVTQE6FHOZXFKAW4NXEVUA7DPAFFEQJ66IYPECSXQC
HH3HFWVXABJ4IRMN22PPJCREMULZSN6DA7VYKOGECGMNUQTZ5QNQC
WVKP2MFDE56ZO3OI7FCEKE5LI3MAUIL6IDTUW6MEBCV5OWF4OKEAC
HGBHRHXFVTEWYYV2D5HKTKL4Z6OSNR2ZOIHFQX55CVRCXQUQ7MQAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
Z6XF4AIERIW4U4AR3HU2ILYFZ54IK4K4ORQ6JKCEWRO5LZODWDDAC
Q4YYTFXYZUDBYWT37U354CJOAQMAAIWM5W72TAEGMEUKZIUZBMGAC
IP4A3VRYFYIVLRUAU4DF4KDNP6E4UISWJX3LI2F4EGSSMIJYRJXAC
ASLW3Z5PAVZSWJEMMMVZT226P44EKSAD47QS72JIFJESAI3RPN3AC
SHSIZVHSB4RPTLGMFJXUDVHF3FTEZZYCRIH4CBZP4MXOBR3HC4QAC
FE4NKR5J4P53PSRDZPEW6MNHUJNCFSWCE6RWBMXIMQBV3EGCDOWQC
YJ4Q65CCPG2R3O2CFICU6WS27ISYEHQGWIHNOOYPN2TIPKNXVX7QC
HQ5FYPDFIQNNDMKDSGWAAXYIVIRK42B4OBA2LESP2OA5SPKSTLVQC
CKY7MRFWMNHXIPJD5ZUAJN5T2YHUIEAYBNYYV5GN74LBZJRDJMEQC
4FQAKUKUO6PCAZ3N4HUR5XL6E4VA5UQUZ3AEDGRBLVY7W2LMWI7QC
CLIEHAE2PP7ZIGLLIMYCWM4FC54KBOAN5AILOLAZJ5S26GTJM4RQC
4HLF6Q3OBOOHCCJ76L2BXVIYI6EMJ2G7O4XXZPFTLFP6BQGSUZNAC
OFH2B2UZBK43QLFQBZ54FOCFLFNE54BZVDNCEUGDTBCUGNVZULIQC
5FBOE2QNRLKUNOP54CZD6LFAMM7LX6NNLHJRJHRDDIUTQ7J723DQC
SEXTAB43OKE5D5NNPNNPJXWR3CLJVRL7VSLMKDATDRLNX4FI3AFQC
MIC2SDBOCS63ZDNBQ2VRZMTFOYJL5DUQVR67I7Z3KBJGDBNZJIGAC
KXHG3CHEUCZX6UZXAQG6QXPS6IRTIJWGGZWYVAMHWYYTCM4KBUSQC
6CWMT6I76TMTHT7BVOVZJ7ATDMZ3VBKKICIRRZBOSGLHJMDS2DWQC
NZBX4WLFXYQYYA5WEAXANO4QOUJQ6CUIACWZ7FPRNA2ABJ4UBWKQC
74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC
PKHOZG6TIUP2NZZIP6CW5OIPZ3O6PCGWXXW5MH4I6P2WVM24HZEQC
BSI5DB3LVY42ZHOS46X2CAPPVOSOTTQWFGLTMAKRFTROI5BQWFDQC
P722Q43MJLCJ5NHF6FA27YM7IYP2ZTP6WP373BAVZPODZW4JLJPQC
T7PHMSG47WP4MTKIGVBP4EAQRGXHMZPYSI3GT3DAEWKHUDFCH3QQC
2DORUQ4B574MDOOMRYWGU5I72AKHMCSTZ6B3VSHQBUQOZYHRC7FAC
DUOVSVYLZG2W4KHAPD57Z2OTWZUYHY46TLGJLI5R7YALOKZCTGFAC
ENOQQ6DEA6ECRNTBGYYNK7G3DFEILMKQBNKP4SUQIZW2L6HWVR7QC
HIRKGUMNJPWKSVTR6TVBPD3MWNA63CEHCLCIPWEMGDFHVB3NPLDQC
75M6AVUSS3G5EJECJJRB67V5UYDOIV26FZNB2FFCMBZ33EK7FVIQC
7K5P2GRF6QUXTMERG2R3BB6DZFQYJQ6V2KNPMBPFDLOP36NQILPAC
GL7TJGUGV4JPLZCDWH6QVST4RYW7UJV6IP7UAEWEKNBWJO2H2ZHAC
5YYQEHOEBH6H4FXW3H6RAQ7U6VZ33BVP3S3I3BE3GM5IUL5DAKYQC
4SWYX4Y3QSG5EUFHUNAW56WVK4FU3CZPQNHGGYKEV2LQ3P3GQTMQC
LCVUTR5N23C2AE3EXJUDTYQVURXN6XXGGOYR4ALIVRIUBTVLN5PAC
IXLNOTBJGHKESBCTME6QAR6XVWFNCHYGMS62V62ZJEA7VLQHXO2QC
U3LUN66XOUGBCEA3E4BFKXBFTPGV5ZQRUTXUYRA73LF6YOHOQHEQC
6UPCB64Z2W243QR3JQD7WPQMPVNVBPYRG7GTGZK6LTKKBBSKBHZQC
4JHALUQLYAZQSH6MHLCS4EIIRHIT3Y4IYT2CE66NHSSWZFZY3SZQC
XXPLTLK26AM2J2QBEJS7UVZV2C6T4J2D7VCIO4L5S4NBNR57X4FAC
VF3Y6IKB5WKEMZRPG6KMWXGST6GU5HDKZ26BFYGKAQBDUZ5JE2TQC
2WWSPLCXLSMBGTXUC33EQ5YBOA5IBFSMJSTZ2TU6HZIMZZWZJWGAC
DWWOM6V2Z4RQVT6AKW6OYLSFOUE4W5PTP2SH4AAZE2E4EIH4RLUAC
UBSBPVWL77W566RKX6H4MCASJJN3D2QKUHIAGZJFK46MCGJZ2NFAC
L2JKKTBQ2U5FMUMCQHVPLTVRR23RHKM67I7FXGCIGYGF7NTGBIEAC
7YUGK5Q64KG5O7GJGTUBRRLHAHBCJ5YOE23YUPT6UBKUSB67CYAQC
2VOD7XONHR3G2JGZGXOPHNR2AN7WUQZFR5KJH5ZY4P4G67H3RCSQC
P2ZCF3BBG523ZEOD6XQA4X5YEHBTWH3IM33YVHXP2SQ5POXZIH4QC
UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC
OQ76R2BGEXU64TGDEQF46WVKM3LW5JO67CVITYQSIKE36LQZ725AC
YL67KHG3TAZXJCWGRZPVASD6RS2SQ3V5KMIUK4E6PV43V2NBOLEAC
EOMCPVNQLX3IMLC46EAO67DPBH5KEG2FQTPBLGU62HIRWA3UQ7XQC
RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC
2ZFV5PKZU3HDHMLJWVWPPFV43NUNUON6YSAITHB26D7L4XIVWUHQC
BRCSZ3GW5VFJW2OGZSUVYJTOOS4NGEX63DNFBJYEILHSCLAA4C4QC
OHOFJZ6S5AJUO5EFVGG7HJHRPSXJSTJD2DDXAERT4LNVWDK23K6AC
prop_str += randart_known_wpn_property(item, RAP_STRENGTH);
prop_int += randart_known_wpn_property(item, RAP_INTELLIGENCE);
prop_dex += randart_known_wpn_property(item, RAP_DEXTERITY);
prop_str += artefact_known_wpn_property(item, ARTP_STRENGTH);
prop_int += artefact_known_wpn_property(item, ARTP_INTELLIGENCE);
prop_dex += artefact_known_wpn_property(item, ARTP_DEXTERITY);
if (Options.autoinscribe_randarts && is_random_artefact(item))
add_autoinscription( item, randart_auto_inscription(item));
if (Options.autoinscribe_artefacts && is_random_artefact(item))
add_autoinscription( item, artefact_auto_inscription(item));
ret += 3 * prop[ RAP_AC ] + 3 * prop[ RAP_EVASION ]
+ 3 * prop[ RAP_ACCURACY ] + 3 * prop[ RAP_DAMAGE ]
+ 6 * prop[ RAP_STRENGTH ] + 6 * prop[ RAP_INTELLIGENCE ]
+ 6 * prop[ RAP_DEXTERITY ];
ret += 3 * prop[ ARTP_AC ] + 3 * prop[ ARTP_EVASION ]
+ 3 * prop[ ARTP_ACCURACY ] + 3 * prop[ ARTP_DAMAGE ]
+ 6 * prop[ ARTP_STRENGTH ] + 6 * prop[ ARTP_INTELLIGENCE ]
+ 6 * prop[ ARTP_DEXTERITY ];
void set_randart_name( item_def &item, const std::string &name );
void set_randart_appearance( item_def &item, const std::string &appear );
void set_artefact_name( item_def &item, const std::string &name );
void set_artefact_appearance( item_def &item, const std::string &appear );
typedef FixedVector< int, RA_PROPERTIES > randart_properties_t;
typedef FixedVector< bool, RA_PROPERTIES > randart_known_props_t;
typedef FixedVector< int, RA_PROPERTIES > artefact_properties_t;
typedef FixedVector< bool, RA_PROPERTIES > artefact_known_props_t;
void randart_desc_properties( const item_def &item,
randart_properties_t &proprt,
randart_known_props_t &known,
bool force_fake_props = false);
void artefact_desc_properties( const item_def &item,
artefact_properties_t &proprt,
artefact_known_props_t &known,
bool force_fake_props = false);
void randart_wpn_properties( const item_def &item,
randart_properties_t &proprt,
randart_known_props_t &known );
void artefact_wpn_properties( const item_def &item,
artefact_properties_t &proprt,
artefact_known_props_t &known );
void randart_wpn_learn_prop( item_def &item, randart_prop_type prop );
bool randart_wpn_known_prop( const item_def &item, randart_prop_type prop );
void artefact_wpn_learn_prop( item_def &item, artefact_prop_type prop );
bool artefact_wpn_known_prop( const item_def &item, artefact_prop_type prop );
void randart_set_properties( item_def &item,
randart_properties_t &proprt );
void randart_set_property( item_def &item,
randart_prop_type prop,
int val );
void artefact_set_properties( item_def &item,
artefact_properties_t &proprt );
void artefact_set_property( item_def &item,
artefact_prop_type prop,
int val );
#define KNOWN_PROPS_KEY "randart_known_props"
#define RANDART_PROPS_KEY "randart_props"
#define RANDART_NAME_KEY "randart_name"
#define RANDART_APPEAR_KEY "randart_appearance"
#define KNOWN_PROPS_KEY "artefact_known_props"
#define ARTEFACT_PROPS_KEY "artefact_props"
#define ARTEFACT_NAME_KEY "artefact_name"
#define ARTEFACT_APPEAR_KEY "artefact_appearance"
void randart_desc_properties( const item_def &item,
randart_properties_t &proprt,
randart_known_props_t &known,
void artefact_desc_properties( const item_def &item,
artefact_properties_t &proprt,
artefact_known_props_t &known,
if (proprt[RAP_BRAND] == SPWPN_SPEED && atype == WPN_QUICK_BLADE)
proprt[RAP_BRAND] = SPWPN_NORMAL;
if (proprt[ARTP_BRAND] == SPWPN_SPEED && atype == WPN_QUICK_BLADE)
proprt[ARTP_BRAND] = SPWPN_NORMAL;
&& proprt[RAP_BRAND] != SPWPN_DRAINING
&& proprt[RAP_BRAND] != SPWPN_VAMPIRICISM
&& proprt[RAP_BRAND] != SPWPN_PAIN)
&& proprt[ARTP_BRAND] != SPWPN_DRAINING
&& proprt[ARTP_BRAND] != SPWPN_VAMPIRICISM
&& proprt[ARTP_BRAND] != SPWPN_PAIN)
void randart_wpn_properties( const item_def &item,
randart_properties_t &proprt )
void artefact_wpn_properties( const item_def &item,
artefact_properties_t &proprt )
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];
ASSERT(!item.props.exists( ARTEFACT_PROPS_KEY ));
item.props[ARTEFACT_PROPS_KEY].new_vector(SV_SHORT).resize(RA_PROPERTIES);
CrawlVector &rap = item.props[ARTEFACT_PROPS_KEY];
bool items_give_ability(const int slot, randart_prop_type abil);
int scan_randarts(randart_prop_type which_property, bool calc_unid = true);
bool items_give_ability(const int slot, artefact_prop_type abil);
int scan_artefacts(artefact_prop_type which_property, bool calc_unid = true);
for (int rap = RAP_INVISIBLE; rap <= RAP_MAPPING; rap++)
if (randart_wpn_property( item, static_cast<randart_prop_type>(rap) ))
for (int rap = ARTP_INVISIBLE; rap <= ARTP_MAPPING; rap++)
if (artefact_wpn_property( item,
static_cast<artefact_prop_type>(rap) ))
{
void use_randart( unsigned char item_wield_2 );
void use_randart(item_def &item, bool unmeld = false);
void use_artefact( unsigned char item_wield_2 );
void use_artefact(item_def &item, bool unmeld = false);
special = randart_wpn_property(item, RAP_BRAND);
use_randart(item_wield_2);
special = artefact_wpn_property(item, ARTP_BRAND);
use_artefact(item_wield_2);
if (Options.autoinscribe_randarts)
add_autoinscription(item, randart_auto_inscription(item));
if (Options.autoinscribe_artefacts)
add_autoinscription(item, artefact_auto_inscription(item));
prop_str += randart_known_wpn_property(item, RAP_STRENGTH);
prop_int += randart_known_wpn_property(item, RAP_INTELLIGENCE);
prop_dex += randart_known_wpn_property(item, RAP_DEXTERITY);
prop_str += artefact_known_wpn_property(item, ARTP_STRENGTH);
prop_int += artefact_known_wpn_property(item, ARTP_INTELLIGENCE);
prop_dex += artefact_known_wpn_property(item, ARTP_DEXTERITY);
proprt[RAP_MAGICAL_POWER] > 0? "increase" : "decrease");
randart_wpn_learn_prop(item, RAP_MAGICAL_POWER);
proprt[ARTP_MAGICAL_POWER] > 0? "increase" : "decrease");
artefact_wpn_learn_prop(item, ARTP_MAGICAL_POWER);
modify_stat( STAT_STRENGTH, proprt[RAP_STRENGTH], false, item );
modify_stat( STAT_INTELLIGENCE, proprt[RAP_INTELLIGENCE], false, item );
modify_stat( STAT_DEXTERITY, proprt[RAP_DEXTERITY], false, item );
modify_stat( STAT_STRENGTH, proprt[ARTP_STRENGTH], false, item );
modify_stat( STAT_INTELLIGENCE, proprt[ARTP_INTELLIGENCE], false, item );
modify_stat( STAT_DEXTERITY, proprt[ARTP_DEXTERITY], false, item );
if (!unmeld && !item_cursed(item) && proprt[RAP_CURSED] > 0
&& one_chance_in(proprt[RAP_CURSED]))
if (!unmeld && !item_cursed(item) && proprt[ARTP_CURSED] > 0
&& one_chance_in(proprt[ARTP_CURSED]))
randart_properties_t proprt;
randart_known_props_t known;
randart_wpn_properties( item, proprt, known );
artefact_properties_t proprt;
artefact_known_props_t known;
artefact_wpn_properties( item, proprt, known );
RAP_BRAND, // 0
RAP_AC,
RAP_EVASION,
RAP_STRENGTH,
RAP_INTELLIGENCE,
RAP_DEXTERITY, // 5
RAP_FIRE,
RAP_COLD,
RAP_ELECTRICITY,
RAP_POISON,
RAP_NEGATIVE_ENERGY, // 10
RAP_MAGIC,
RAP_EYESIGHT,
RAP_INVISIBLE,
RAP_LEVITATE,
RAP_BLINK, // 15
RAP_CAN_TELEPORT,
RAP_BERSERK,
RAP_MAPPING,
RAP_NOISES,
RAP_PREVENT_SPELLCASTING, // 20
RAP_CAUSE_TELEPORTATION,
RAP_PREVENT_TELEPORTATION,
RAP_ANGRY,
RAP_METABOLISM,
RAP_MUTAGENIC, // 25
RAP_ACCURACY,
RAP_DAMAGE,
RAP_CURSED,
RAP_STEALTH,
RAP_MAGICAL_POWER, // 30
RAP_NUM_PROPERTIES
ARTP_BRAND, // 0
ARTP_AC,
ARTP_EVASION,
ARTP_STRENGTH,
ARTP_INTELLIGENCE,
ARTP_DEXTERITY, // 5
ARTP_FIRE,
ARTP_COLD,
ARTP_ELECTRICITY,
ARTP_POISON,
ARTP_NEGATIVE_ENERGY, // 10
ARTP_MAGIC,
ARTP_EYESIGHT,
ARTP_INVISIBLE,
ARTP_LEVITATE,
ARTP_BLINK, // 15
ARTP_CAN_TELEPORT,
ARTP_BERSERK,
ARTP_MAPPING,
ARTP_NOISES,
ARTP_PREVENT_SPELLCASTING, // 20
ARTP_CAUSE_TELEPORTATION,
ARTP_PREVENT_TELEPORTATION,
ARTP_ANGRY,
ARTP_METABOLISM,
ARTP_MUTAGENIC, // 25
ARTP_ACCURACY,
ARTP_DAMAGE,
ARTP_CURSED,
ARTP_STEALTH,
ARTP_MAGICAL_POWER, // 30
ARTP_NUM_PROPERTIES
if (-proprt[RAP_STRENGTH] >= you.strength
|| -proprt[RAP_INTELLIGENCE] >= you.intel
|| -proprt[RAP_DEXTERITY] >= you.dex)
if (-proprt[ARTP_STRENGTH] >= you.strength
|| -proprt[ARTP_INTELLIGENCE] >= you.intel
|| -proprt[ARTP_DEXTERITY] >= you.dex)
randart_properties_t proprt;
randart_known_props_t known;
randart_desc_properties( item, proprt, known, true );
artefact_properties_t proprt;
artefact_known_props_t known;
artefact_desc_properties( item, proprt, known, true );
{ "-CAST", RAP_PREVENT_SPELLCASTING, 2 },
{ "-TELE", RAP_PREVENT_TELEPORTATION, 2 },
{ "MUT", RAP_MUTAGENIC, 2 }, // handled specially
{ "*Rage", RAP_ANGRY, 2 },
{ "*TELE", RAP_CAUSE_TELEPORTATION, 2 },
{ "Hunger", RAP_METABOLISM, 2 }, // handled specially
{ "Noisy", RAP_NOISES, 2 },
{ "-CAST", ARTP_PREVENT_SPELLCASTING, 2 },
{ "-TELE", ARTP_PREVENT_TELEPORTATION, 2 },
{ "MUT", ARTP_MUTAGENIC, 2 }, // handled specially
{ "*Rage", ARTP_ANGRY, 2 },
{ "*TELE", ARTP_CAUSE_TELEPORTATION, 2 },
{ "Hunger", ARTP_METABOLISM, 2 }, // handled specially
{ "Noisy", ARTP_NOISES, 2 },
{ "+Blink", RAP_BLINK, 2 },
{ "+Tele", RAP_CAN_TELEPORT, 2 },
{ "+Rage", RAP_BERSERK, 2 },
{ "+Inv", RAP_INVISIBLE, 2 },
{ "+Lev", RAP_LEVITATE, 2 },
{ "+Map", RAP_MAPPING, 2 },
{ "+Blink", ARTP_BLINK, 2 },
{ "+Tele", ARTP_CAN_TELEPORT, 2 },
{ "+Rage", ARTP_BERSERK, 2 },
{ "+Inv", ARTP_INVISIBLE, 2 },
{ "+Lev", ARTP_LEVITATE, 2 },
{ "+Map", ARTP_MAPPING, 2 },
{ "rElec", RAP_ELECTRICITY, 2 },
{ "rPois", RAP_POISON, 2 },
{ "rF", RAP_FIRE, 1 },
{ "rC", RAP_COLD, 1 },
{ "rN", RAP_NEGATIVE_ENERGY, 1 },
{ "MR", RAP_MAGIC, 2 },
{ "rElec", ARTP_ELECTRICITY, 2 },
{ "rPois", ARTP_POISON, 2 },
{ "rF", ARTP_FIRE, 1 },
{ "rC", ARTP_COLD, 1 },
{ "rN", ARTP_NEGATIVE_ENERGY, 1 },
{ "MR", ARTP_MAGIC, 2 },
{ "AC", RAP_AC, 0 },
{ "EV", RAP_EVASION, 0 },
{ "Str", RAP_STRENGTH, 0 },
{ "Dex", RAP_DEXTERITY, 0 },
{ "Int", RAP_INTELLIGENCE, 0 },
{ "Acc", RAP_ACCURACY, 0 },
{ "Dam", RAP_DAMAGE, 0 },
{ "AC", ARTP_AC, 0 },
{ "EV", ARTP_EVASION, 0 },
{ "Str", ARTP_STRENGTH, 0 },
{ "Dex", ARTP_DEXTERITY, 0 },
{ "Int", ARTP_INTELLIGENCE, 0 },
{ "Acc", ARTP_ACCURACY, 0 },
{ "Dam", ARTP_DAMAGE, 0 },
{ "MP", RAP_MAGICAL_POWER, 0 },
{ "SInv", RAP_EYESIGHT, 2 },
{ "Stlth", RAP_STEALTH, 2 }, // handled specially
{ "Curse", RAP_CURSED, 2 },
{ "MP", ARTP_MAGICAL_POWER, 0 },
{ "SInv", ARTP_EYESIGHT, 2 },
{ "Stlth", ARTP_STEALTH, 2 }, // handled specially
{ "Curse", ARTP_CURSED, 2 },
if (propanns[i].prop == RAP_METABOLISM && val > 2
|| propanns[i].prop == RAP_MUTAGENIC && val > 3
|| propanns[i].prop == RAP_STEALTH && val > 20)
if (propanns[i].prop == ARTP_METABOLISM && val > 2
|| propanns[i].prop == ARTP_MUTAGENIC && val > 3
|| propanns[i].prop == ARTP_STEALTH && val > 20)
randart_properties_t proprt;
randart_known_props_t known;
randart_desc_properties( item, proprt, known );
artefact_properties_t proprt;
artefact_known_props_t known;
artefact_desc_properties( item, proprt, known );
{ RAP_AC, "It affects your AC (%d).", false },
{ RAP_EVASION, "It affects your evasion (%d).", false},
{ RAP_STRENGTH, "It affects your strength (%d).", false},
{ RAP_INTELLIGENCE, "It affects your intelligence (%d).", false},
{ RAP_DEXTERITY, "It affects your dexterity (%d).", false},
{ RAP_ACCURACY, "It affects your accuracy (%d).", false},
{ RAP_DAMAGE, "It affects your damage-dealing abilities (%d).", false},
{ RAP_FIRE, "fire", true},
{ RAP_COLD, "cold", true},
{ RAP_ELECTRICITY, "It insulates you from electricity.", false},
{ RAP_POISON, "It protects you from poison.", false},
{ RAP_NEGATIVE_ENERGY, "negative energy", true},
{ RAP_MAGIC, "It increases your resistance to enchantments.", false},
{ RAP_MAGICAL_POWER, "It affects your mana capacity (%d).", false},
{ RAP_EYESIGHT, "It enhances your eyesight.", false},
{ RAP_INVISIBLE, "It lets you turn invisible.", false},
{ RAP_LEVITATE, "It lets you levitate.", false},
{ RAP_BLINK, "It lets you blink.", false},
{ RAP_CAN_TELEPORT, "It lets you teleport.", false},
{ RAP_BERSERK, "It lets you go berserk.", false},
{ RAP_MAPPING, "It lets you sense your surroundings.", false},
{ RAP_NOISES, "It makes noises.", false},
{ RAP_PREVENT_SPELLCASTING, "It prevents spellcasting.", false},
{ RAP_CAUSE_TELEPORTATION, "It causes teleportation.", false},
{ RAP_PREVENT_TELEPORTATION, "It prevents most forms of teleportation.",
{ ARTP_AC, "It affects your AC (%d).", false },
{ ARTP_EVASION, "It affects your evasion (%d).", false},
{ ARTP_STRENGTH, "It affects your strength (%d).", false},
{ ARTP_INTELLIGENCE, "It affects your intelligence (%d).", false},
{ ARTP_DEXTERITY, "It affects your dexterity (%d).", false},
{ ARTP_ACCURACY, "It affects your accuracy (%d).", false},
{ ARTP_DAMAGE, "It affects your damage-dealing abilities (%d).", false},
{ ARTP_FIRE, "fire", true},
{ ARTP_COLD, "cold", true},
{ ARTP_ELECTRICITY, "It insulates you from electricity.", false},
{ ARTP_POISON, "It protects you from poison.", false},
{ ARTP_NEGATIVE_ENERGY, "negative energy", true},
{ ARTP_MAGIC, "It increases your resistance to enchantments.", false},
{ ARTP_MAGICAL_POWER, "It affects your mana capacity (%d).", false},
{ ARTP_EYESIGHT, "It enhances your eyesight.", false},
{ ARTP_INVISIBLE, "It lets you turn invisible.", false},
{ ARTP_LEVITATE, "It lets you levitate.", false},
{ ARTP_BLINK, "It lets you blink.", false},
{ ARTP_CAN_TELEPORT, "It lets you teleport.", false},
{ ARTP_BERSERK, "It lets you go berserk.", false},
{ ARTP_MAPPING, "It lets you sense your surroundings.", false},
{ ARTP_NOISES, "It makes noises.", false},
{ ARTP_PREVENT_SPELLCASTING, "It prevents spellcasting.", false},
{ ARTP_CAUSE_TELEPORTATION, "It causes teleportation.", false},
{ ARTP_PREVENT_TELEPORTATION, "It prevents most forms of teleportation.",
if (Options.autoinscribe_randarts && is_random_artefact(arm))
add_autoinscription( arm, randart_auto_inscription(arm));
if (Options.autoinscribe_artefacts && is_random_artefact(arm))
add_autoinscription( arm, artefact_auto_inscription(arm));
char _prop_type[RAP_NUM_PROPERTIES] = {
RAP_VAL_POS, //BRAND
RAP_VAL_ANY, //AC
RAP_VAL_ANY, //EVASION
RAP_VAL_ANY, //STRENGTH
RAP_VAL_ANY, //INTELLIGENCE
RAP_VAL_ANY, //DEXTERITY
RAP_VAL_ANY, //FIRE
RAP_VAL_ANY, //COLD
RAP_VAL_BOOL, //ELECTRICITY
RAP_VAL_BOOL, //POISON
RAP_VAL_BOOL, //NEGATIVE_ENERGY
RAP_VAL_POS, //MAGIC
RAP_VAL_BOOL, //EYESIGHT
RAP_VAL_BOOL, //INVISIBLE
RAP_VAL_BOOL, //LEVITATE
RAP_VAL_BOOL, //BLINK
RAP_VAL_BOOL, //CAN_TELEPORT
RAP_VAL_BOOL, //BERSERK
RAP_VAL_BOOL, //MAPPING
RAP_VAL_POS, //NOISES
RAP_VAL_BOOL, //PREVENT_SPELLCASTING
RAP_VAL_BOOL, //CAUSE_TELEPORTATION
RAP_VAL_BOOL, //PREVENT_TELEPORTATION
RAP_VAL_POS, //ANGRY
RAP_VAL_POS, //METABOLISM
RAP_VAL_POS, //MUTAGENIC
RAP_VAL_ANY, //ACCURACY
RAP_VAL_ANY, //DAMAGE
RAP_VAL_POS, //CURSED
RAP_VAL_ANY, //STEALTH
RAP_VAL_ANY //MAGICAL_POWER
char _prop_type[ARTP_NUM_PROPERTIES] = {
ARTP_VAL_POS, //BRAND
ARTP_VAL_ANY, //AC
ARTP_VAL_ANY, //EVASION
ARTP_VAL_ANY, //STRENGTH
ARTP_VAL_ANY, //INTELLIGENCE
ARTP_VAL_ANY, //DEXTERITY
ARTP_VAL_ANY, //FIRE
ARTP_VAL_ANY, //COLD
ARTP_VAL_BOOL, //ELECTRICITY
ARTP_VAL_BOOL, //POISON
ARTP_VAL_BOOL, //NEGATIVE_ENERGY
ARTP_VAL_POS, //MAGIC
ARTP_VAL_BOOL, //EYESIGHT
ARTP_VAL_BOOL, //INVISIBLE
ARTP_VAL_BOOL, //LEVITATE
ARTP_VAL_BOOL, //BLINK
ARTP_VAL_BOOL, //CAN_TELEPORT
ARTP_VAL_BOOL, //BERSERK
ARTP_VAL_BOOL, //MAPPING
ARTP_VAL_POS, //NOISES
ARTP_VAL_BOOL, //PREVENT_SPELLCASTING
ARTP_VAL_BOOL, //CAUSE_TELEPORTATION
ARTP_VAL_BOOL, //PREVENT_TELEPORTATION
ARTP_VAL_POS, //ANGRY
ARTP_VAL_POS, //METABOLISM
ARTP_VAL_POS, //MUTAGENIC
ARTP_VAL_ANY, //ACCURACY
ARTP_VAL_ANY, //DAMAGE
ARTP_VAL_POS, //CURSED
ARTP_VAL_ANY, //STEALTH
ARTP_VAL_ANY //MAGICAL_POWER
1, //RAP_BRAND
0, //RAP_AC
0, //RAP_EVASION
0, //RAP_STRENGTH
0, //RAP_INTELLIGENCE
0, //RAP_DEXTERITY
0, //RAP_FIRE
0, //RAP_COLD
1, //RAP_ELECTRICITY
1, //RAP_POISON
1, //RAP_NEGATIVE_ENERGY
1, //RAP_MAGIC
1, //RAP_EYESIGHT
1, //RAP_INVISIBLE
1, //RAP_LEVITATE
1, //RAP_BLINK
1, //RAP_CAN_TELEPORT
1, //RAP_BERSERK
1, //RAP_MAPPING
-1, //RAP_NOISES
-1, //RAP_PREVENT_SPELLCASTING
-1, //RAP_CAUSE_TELEPORTATION
-1, //RAP_PREVENT_TELEPORTATION
-1, //RAP_ANGRY
-1, //RAP_METABOLISM
-1, //RAP_MUTAGENIC
0, //RAP_ACCURACY
0, //RAP_DAMAGE
-1, //RAP_CURSED
0, //RAP_STEALTH
0 //RAP_MAGICAL_POWER
1, //ARTP_BRAND
0, //ARTP_AC
0, //ARTP_EVASION
0, //ARTP_STRENGTH
0, //ARTP_INTELLIGENCE
0, //ARTP_DEXTERITY
0, //ARTP_FIRE
0, //ARTP_COLD
1, //ARTP_ELECTRICITY
1, //ARTP_POISON
1, //ARTP_NEGATIVE_ENERGY
1, //ARTP_MAGIC
1, //ARTP_EYESIGHT
1, //ARTP_INVISIBLE
1, //ARTP_LEVITATE
1, //ARTP_BLINK
1, //ARTP_CAN_TELEPORT
1, //ARTP_BERSERK
1, //ARTP_MAPPING
-1, //ARTP_NOISES
-1, //ARTP_PREVENT_SPELLCASTING
-1, //ARTP_CAUSE_TELEPORTATION
-1, //ARTP_PREVENT_TELEPORTATION
-1, //ARTP_ANGRY
-1, //ARTP_METABOLISM
-1, //ARTP_MUTAGENIC
0, //ARTP_ACCURACY
0, //ARTP_DAMAGE
-1, //ARTP_CURSED
0, //ARTP_STEALTH
0 //ARTP_MAGICAL_POWER
int all_props[RAP_NUM_PROPERTIES];
int good_props[RAP_NUM_PROPERTIES];
int bad_props[RAP_NUM_PROPERTIES];
for (i = 0; i < RAP_NUM_PROPERTIES; ++i)
int all_props[ARTP_NUM_PROPERTIES];
int good_props[ARTP_NUM_PROPERTIES];
int bad_props[ARTP_NUM_PROPERTIES];
for (i = 0; i < ARTP_NUM_PROPERTIES; ++i)
"RAP_BRAND",
"RAP_AC",
"RAP_EVASION",
"RAP_STRENGTH",
"RAP_INTELLIGENCE",
"RAP_DEXTERITY",
"RAP_FIRE",
"RAP_COLD",
"RAP_ELECTRICITY",
"RAP_POISON",
"RAP_NEGATIVE_ENERGY",
"RAP_MAGIC",
"RAP_EYESIGHT",
"RAP_INVISIBLE",
"RAP_LEVITATE",
"RAP_BLINK",
"RAP_CAN_TELEPORT",
"RAP_BERSERK",
"RAP_MAPPING",
"RAP_NOISES",
"RAP_PREVENT_SPELLCASTING",
"RAP_CAUSE_TELEPORTATION",
"RAP_PREVENT_TELEPORTATION",
"RAP_ANGRY",
"RAP_METABOLISM",
"RAP_MUTAGENIC",
"RAP_ACCURACY",
"RAP_DAMAGE",
"RAP_CURSED",
"RAP_STEALTH",
"RAP_MAGICAL_POWER"
"ARTP_BRAND",
"ARTP_AC",
"ARTP_EVASION",
"ARTP_STRENGTH",
"ARTP_INTELLIGENCE",
"ARTP_DEXTERITY",
"ARTP_FIRE",
"ARTP_COLD",
"ARTP_ELECTRICITY",
"ARTP_POISON",
"ARTP_NEGATIVE_ENERGY",
"ARTP_MAGIC",
"ARTP_EYESIGHT",
"ARTP_INVISIBLE",
"ARTP_LEVITATE",
"ARTP_BLINK",
"ARTP_CAN_TELEPORT",
"ARTP_BERSERK",
"ARTP_MAPPING",
"ARTP_NOISES",
"ARTP_PREVENT_SPELLCASTING",
"ARTP_CAUSE_TELEPORTATION",
"ARTP_PREVENT_TELEPORTATION",
"ARTP_ANGRY",
"ARTP_METABOLISM",
"ARTP_MUTAGENIC",
"ARTP_ACCURACY",
"ARTP_DAMAGE",
"ARTP_CURSED",
"ARTP_STEALTH",
"ARTP_MAGICAL_POWER"
Many players use inscriptions for properties of random artefacts. This
makes browsing the inventory or stashes easier. Crawl provides a scheme
for automatic inscription (you can switch this off using the option
autoinscribe_randarts=false).
Many players use inscriptions for properties of artefacts. This makes
browsing the inventory or stashes easier. Crawl provides a scheme for
automatic inscription (you can switch this off using the option
autoinscribe_artefacts=false).