The Knife of Accuracy should probably be turned into an unrandart.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7673 c06c8d41-db1a-0410-9941-cceddc491573
LY7DLLD7IKL6ZQPVROLDJ46XRM5CMAAEBRFDKJ4M53CPC5GFCGSQC DUOVSVYLZG2W4KHAPD57Z2OTWZUYHY46TLGJLI5R7YALOKZCTGFAC YJ4Q65CCPG2R3O2CFICU6WS27ISYEHQGWIHNOOYPN2TIPKNXVX7QC TJN537N2F5J7JWBCT2Z4VSTNXIMFCMEXTKTY7N2UCXIVUUQ3XJBQC IP4A3VRYFYIVLRUAU4DF4KDNP6E4UISWJX3LI2F4EGSSMIJYRJXAC GA7RSKRL2B7OYL4NWCCMULF2QXJ27NALF7KWTSVXY272NS5KFGJQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC XI7X6SNTHG67D4NQWM75HWB6TVRXVFDPGNSQLTXN6JAZBZIVZXIQC 2DORUQ4B574MDOOMRYWGU5I72AKHMCSTZ6B3VSHQBUQOZYHRC7FAC EJKHYV2Z6UPRVYUAL4WRW33GBNHYBFPMPA57HMBX2LQKXHIUO5VQC IXLNOTBJGHKESBCTME6QAR6XVWFNCHYGMS62V62ZJEA7VLQHXO2QC UVJBHQ5KGUIEFRHKTYQPKSXYDUDKTRAXINUXGJJJ6QGNCR6JO7ZAC DTO3EUKWHZ5RJNGNCFYXSOVTIPVXPP637F2W7WFGYKJ7JK7VNKNQC TZ2SH2SPO5TFSFL2OCV5A32P2X4CRHEKEK7ENUFCBVF3RKUWAD4AC 4GGNXCX2CLKWQZIZT543LXFFKFRD4PY5XPJFLGWKW4ACKYZNLVPQC VNHFP63ZLLZU3A3PLXP4BITX57DUIYDHFOHQYK3BOBHV3S64G26QC LDBTCT5WIPLJPZWXS2RUQ26QKISCUUTLO77M464WOE6VSYSNPKYAC SL4H3NXHK4VIROWPSQDGO7YIYDKDWZWMUDGH5U7Y6NG63MUQXRPAC 6GDKXNFXPKQ6AVNOSMJECN7CLELM2KCMVRM2A7BARLK2NNILN6SAC VCG3BRIYRTNNWYC3LOXD6KFGXOX37HAFW2HNV7WXVG2V7EUHLDZQC CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC SHSIZVHSB4RPTLGMFJXUDVHF3FTEZZYCRIH4CBZP4MXOBR3HC4QAC EHP6PYCIPYQ3KF4JFGBTZXEUQHN3FVAH4NUWEOWDDNKGPYVOTOJQC HHTFZV7UCVSE332T2FMAS2UHWSP6OZ2PSLEJ7D47QTSBTFTUFTNAC QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC WFMQVPMMOPG5SBJD5LUBOIYWRMXVWK3FXENK7SAEGZ5T6XWFKERQC struct fixedart_setting{int which;const char* name;const char* appearance;object_class_type base;int subtype;int acc;int dam;int colour;bool curse;};const fixedart_setting fixedarts[] = {{SPWPN_SINGING_SWORD,"Singing Sword","golden long sword",OBJ_WEAPONS,WPN_LONG_SWORD,7,7,YELLOW,false},{SPWPN_WRATH_OF_TROG,"Wrath of Trog","bloodstained battleaxe",OBJ_WEAPONS,WPN_BATTLEAXE,3,11,RED,false},{SPWPN_SCYTHE_OF_CURSES,"Scythe of Curses","warped scythe",OBJ_WEAPONS,WPN_SCYTHE,13,13,DARKGREY,true},
{SPWPN_MACE_OF_VARIABILITY,"Mace of Variability","shimmering mace",OBJ_WEAPONS,WPN_MACE,random2(16) - 4,random2(16) - 4,random_colour(),false},{SPWPN_GLAIVE_OF_PRUNE,"Glaive of Prune","purple glaive",OBJ_WEAPONS,WPN_GLAIVE,0,12,MAGENTA,false},{SPWPN_SCEPTRE_OF_TORMENT,"Sceptre of Torment","jewelled golden mace",OBJ_WEAPONS,WPN_MACE,7,6,YELLOW,false},{SPWPN_SWORD_OF_ZONGULDROK,"Sword of Zonguldrok","bone long sword",OBJ_WEAPONS,WPN_LONG_SWORD,9,9,LIGHTGREY,false},{SPWPN_SWORD_OF_POWER,"Sword of Power","chunky great sword",OBJ_WEAPONS,WPN_GREAT_SWORD,0, // set on wield0, // set on wieldRED,false},{SPWPN_KNIFE_OF_ACCURACY,"Knife of Accuracy","thin dagger",OBJ_WEAPONS,WPN_DAGGER,27,-1,LIGHTCYAN,false},{SPWPN_STAFF_OF_OLGREB,"Staff of Olgreb","green glowing staff",OBJ_WEAPONS,WPN_QUARTERSTAFF,0, // set on wield0, // set on wieldGREEN,false},{SPWPN_VAMPIRES_TOOTH,"Vampire's Tooth","ivory dagger",OBJ_WEAPONS,WPN_DAGGER,3,4,WHITE,false},{SPWPN_STAFF_OF_WUCAD_MU,"Staff of Wucad Mu","ephemeral quarterstaff",OBJ_WEAPONS,WPN_QUARTERSTAFF,0, // set on wield0, // set on wieldBROWN,false},{SPWPN_SWORD_OF_CEREBOV,"Sword of Cerebov","great serpentine sword",OBJ_WEAPONS,WPN_GREAT_SWORD,6,6,YELLOW,true},{SPWPN_STAFF_OF_DISPATER,"Staff of Dispater","golden staff",OBJ_WEAPONS,WPN_QUARTERSTAFF,4,4,YELLOW,false},{SPWPN_SCEPTRE_OF_ASMODEUS,"Sceptre of Asmodeus","ruby sceptre",OBJ_WEAPONS,WPN_QUARTERSTAFF,7,7,RED,false}};static const char* _get_fixedart_name(const item_def &item){// Find the appropriate fixed artefact.for (unsigned int i = 0; i < ARRAYSZ(fixedarts); ++i){if (fixedarts[i].which == item.special){const fixedart_setting *fixed = &fixedarts[i];return (item_type_known(item) ? fixed->name : fixed->appearance);}}return (item_type_known(item) ? "Unnamed Artefact" : "buggy fixedart");}
case SPWPN_SINGING_SWORD:item.base_type = OBJ_WEAPONS;item.sub_type = WPN_LONG_SWORD;item.plus = 7;item.plus2 = 7;break;case SPWPN_WRATH_OF_TROG:item.base_type = OBJ_WEAPONS;item.sub_type = WPN_BATTLEAXE;item.plus = 3;item.plus2 = 11;break;case SPWPN_SCYTHE_OF_CURSES:item.base_type = OBJ_WEAPONS;item.sub_type = WPN_SCYTHE;item.plus = 13;item.plus2 = 13;break;case SPWPN_MACE_OF_VARIABILITY:item.base_type = OBJ_WEAPONS;item.sub_type = WPN_MACE;item.plus = random2(16) - 4;item.plus2 = random2(16) - 4;break;case SPWPN_GLAIVE_OF_PRUNE:item.base_type = OBJ_WEAPONS;item.sub_type = WPN_GLAIVE;item.plus = 0;item.plus2 = 12;break;case SPWPN_SCEPTRE_OF_TORMENT:item.base_type = OBJ_WEAPONS;item.sub_type = WPN_MACE;item.plus = 7;item.plus2 = 6;break;case SPWPN_SWORD_OF_ZONGULDROK:item.base_type = OBJ_WEAPONS;item.sub_type = WPN_LONG_SWORD;item.plus = 9;item.plus2 = 9;break;case SPWPN_SWORD_OF_POWER:item.base_type = OBJ_WEAPONS;item.sub_type = WPN_GREAT_SWORD;item.plus = 0; // set on wielditem.plus2 = 0; // set on wieldbreak;
if (fixedarts[i].which == which){fixedart = &fixedarts[i];break;}}
case SPWPN_KNIFE_OF_ACCURACY:item.base_type = OBJ_WEAPONS;item.sub_type = WPN_DAGGER;item.plus = 27;item.plus2 = -1;break;
// None found?if (fixedart == NULL){#ifdef DEBUG_DIAGNOSTICSmprf(MSGCH_ERROR, "Couldn't find fixed artefact %d", which);#endifreturn (false);}
case SPWPN_STAFF_OF_OLGREB:item.base_type = OBJ_WEAPONS;item.sub_type = WPN_QUARTERSTAFF;item.plus = 0; // set on wielditem.plus2 = 0; // set on wieldbreak;
// If we get here, we've made the artefactitem.base_type = fixedart->base;item.sub_type = fixedart->subtype;item.plus = fixedart->acc;item.plus2 = fixedart->dam;item.colour = fixedart->colour;item.special = which;item.quantity = 1;
case SPWPN_VAMPIRES_TOOTH:item.base_type = OBJ_WEAPONS;item.sub_type = WPN_DAGGER;item.plus = 3;item.plus2 = 4;break;
// get true artefact nameASSERT(!item.props.exists( RANDART_NAME_KEY ));item.props[RANDART_NAME_KEY].get_string() = fixedart->name;
case SPWPN_STAFF_OF_WUCAD_MU:item.base_type = OBJ_WEAPONS;item.sub_type = WPN_QUARTERSTAFF;item.plus = 0; // set on wielditem.plus2 = 0; // set on wieldbreak;case SPWPN_SWORD_OF_CEREBOV:item.base_type = OBJ_WEAPONS;item.sub_type = WPN_GREAT_SWORD;item.plus = 6;item.plus2 = 6;item.colour = YELLOW;do_curse_item( item );break;case SPWPN_STAFF_OF_DISPATER:item.base_type = OBJ_WEAPONS;item.sub_type = WPN_QUARTERSTAFF;item.plus = 4;item.plus2 = 4;item.colour = YELLOW;break;
// get artefact appearanceASSERT(!item.props.exists( RANDART_APPEAR_KEY ));item.props[RANDART_APPEAR_KEY].get_string() = fixedart->appearance;
if (is_fixed_artefact( item )){switch (item.special){case SPWPN_SINGING_SWORD:case SPWPN_SCEPTRE_OF_TORMENT:item.colour = YELLOW;break;case SPWPN_WRATH_OF_TROG:case SPWPN_SWORD_OF_POWER:item.colour = RED;break;case SPWPN_SCYTHE_OF_CURSES:item.colour = DARKGREY;break;case SPWPN_MACE_OF_VARIABILITY:item.colour = random_colour();break;case SPWPN_GLAIVE_OF_PRUNE:item.colour = MAGENTA;break;case SPWPN_SWORD_OF_ZONGULDROK:item.colour = LIGHTGREY;break;case SPWPN_KNIFE_OF_ACCURACY:item.colour = LIGHTCYAN;break;case SPWPN_STAFF_OF_OLGREB:item.colour = GREEN;break;case SPWPN_VAMPIRES_TOOTH:item.colour = WHITE;break;case SPWPN_STAFF_OF_WUCAD_MU:item.colour = BROWN;break;}break;}
static const char* fixed_artefact_name( const item_def& item, bool ident ){if (ident){switch (item.special){case SPWPN_SINGING_SWORD: return "Singing Sword";case SPWPN_WRATH_OF_TROG: return "Wrath of Trog";case SPWPN_SCYTHE_OF_CURSES: return "Scythe of Curses";case SPWPN_MACE_OF_VARIABILITY: return "Mace of Variability";case SPWPN_GLAIVE_OF_PRUNE: return "Glaive of Prune";case SPWPN_SCEPTRE_OF_TORMENT: return "Sceptre of Torment";case SPWPN_SWORD_OF_ZONGULDROK: return "Sword of Zonguldrok";case SPWPN_SWORD_OF_CEREBOV: return "Sword of Cerebov";case SPWPN_STAFF_OF_DISPATER: return "Staff of Dispater";case SPWPN_SCEPTRE_OF_ASMODEUS: return "Sceptre of Asmodeus";case SPWPN_SWORD_OF_POWER: return "Sword of Power";case SPWPN_KNIFE_OF_ACCURACY: return "Knife of Accuracy";case SPWPN_STAFF_OF_OLGREB: return "Staff of Olgreb";case SPWPN_VAMPIRES_TOOTH: return "Vampire's Tooth";case SPWPN_STAFF_OF_WUCAD_MU: return "Staff of Wucad Mu";default: return "Brodale's Buggy Bola";}}else{switch (item.special){case SPWPN_SINGING_SWORD: return "golden long sword";case SPWPN_WRATH_OF_TROG: return "bloodstained battleaxe";case SPWPN_SCYTHE_OF_CURSES: return "warped scythe";case SPWPN_MACE_OF_VARIABILITY: return "shimmering mace";case SPWPN_GLAIVE_OF_PRUNE: return "purple glaive";case SPWPN_SCEPTRE_OF_TORMENT: return "jewelled golden mace";case SPWPN_SWORD_OF_ZONGULDROK: return "bone long sword";case SPWPN_SWORD_OF_CEREBOV: return "great serpentine sword";case SPWPN_STAFF_OF_DISPATER: return "golden staff";case SPWPN_SCEPTRE_OF_ASMODEUS: return "ruby sceptre";case SPWPN_SWORD_OF_POWER: return "chunky great sword";case SPWPN_KNIFE_OF_ACCURACY: return "thin dagger";case SPWPN_STAFF_OF_OLGREB: return "green glowing staff";case SPWPN_VAMPIRES_TOOTH: return "ivory dagger";case SPWPN_STAFF_OF_WUCAD_MU: return "ephemeral quarterstaff";default: return "buggy bola";}}}
if (is_fixed_artefact( *this ) && !dbname){buff << fixed_artefact_name( *this, know_type );break;}
pbolt.name = zinfo->name;pbolt.flavour = zinfo->flavour;pbolt.colour = zinfo->colour;pbolt.type = dchar_glyph(zinfo->glyph);
pbolt.name = zinfo->name;pbolt.flavour = zinfo->flavour;pbolt.colour = zinfo->colour;pbolt.type = dchar_glyph(zinfo->glyph);