git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7781 c06c8d41-db1a-0410-9941-cceddc491573
WMFU65IAJ3LX2YSFXXRS7ZFNDCZYQC3ZQ3QDHHK3DU3UMLJMAP4QC
LY2CUJ262FHANYCRHMGFEUBVPBHMA5FJHAUALAU6WVZGJSJ6YELQC
J7VTRSN2BLWL7QJMHG73LBUOUL6WNNT2ZAVEDMGYB6SDX3L5GGYQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
UKYGZDI6PYZPXDACCQGVPHANUP5ADCSNROOZIE7LYIZQWSNFHJZAC
JDM5R3HYGXKQKZWY35QZ2KOB24TFZ3FW2PCNXCRCMWG72AZC5ZXQC
YPL32ZYVNBA2OSLEUGSAGSDJ5U2NKYMUHOL7GYSE2F4FCFZI2PTAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
TBJIAJXXLFKL2TTRXBVDVCX252MTD567YCRETKJGZLVWCW3DOUXAC
JJULXW764V5C2HJKZNWQAEWB6QM5YZADD7ZCE35LYTBFEM6PMYCAC
VCG3BRIYRTNNWYC3LOXD6KFGXOX37HAFW2HNV7WXVG2V7EUHLDZQC
VNHFP63ZLLZU3A3PLXP4BITX57DUIYDHFOHQYK3BOBHV3S64G26QC
GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC
TPZWAV3USKO7RX4IGHLZKVPRN36K33PJPSZYL6FZMX4XBHTYOQYAC
RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC
return (true);
}
static bool _choose_wand()
{
// Wand-choosing interface for Artificers -- Greenberg/Bane
const wand_type startwand[5] = { WAND_ENSLAVEMENT, WAND_CONFUSION,
WAND_MAGIC_DARTS, WAND_FROST, WAND_FLAME };
const int num_choices = 5;
int keyin = 0;
if (!Options.random_pick)
{
_print_character_info();
textcolor( CYAN );
cprintf(EOL "You have a choice of wands: "
"(Press %% for a list of aptitudes)" EOL);
for (int i = 0; i < num_choices; i++)
{
textcolor(LIGHTGREY);
const char letter = 'a' + i;
cprintf("%c - %s" EOL, letter, wand_type_name(startwand[i]));
}
textcolor(BROWN);
cprintf(EOL "* - Random choice; "
"Bksp - Back to species and class selection; "
"X - Quit" EOL);
cprintf(EOL);
do
{
textcolor( CYAN );
cprintf(EOL "Which wand? ");
textcolor( LIGHTGREY );
keyin = c_getch();
switch (keyin)
{
case 'X':
cprintf(EOL "Goodbye!");
end(0);
break;
case CK_BKSP:
case CK_ESCAPE:
case ' ':
return (false);
case '\r':
case '%':
list_commands('%');
return _choose_wand();
default:
break;
}
}
while (keyin != '*' && (keyin < 'a' || keyin >= ('a' + num_choices)));
}
if (Options.random_pick || keyin == '*')
{
keyin = random2(num_choices);
keyin += 'a';
}
const wand_type choice = startwand[keyin - 'a'];
int nCharges;
switch (choice)
{
case WAND_MAGIC_DARTS:
case WAND_ENSLAVEMENT:
nCharges = 6;
break;
case WAND_FROST:
case WAND_FLAME:
nCharges = 7;
break;
default:
nCharges = 8;
break;
}
break;
case JOB_ARTIFICER:
// Equipment. Knife and armor or robe.
_newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_KNIFE);
_newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR,
ARM_LEATHER_ARMOUR, ARM_ROBE);
// 1 wand of random effects and one chosen lesser wand
_newgame_make_item(2, EQ_NONE, OBJ_WANDS, WAND_RANDOM_EFFECTS, -1, 1,
6, 0);
// Choice of lesser wands: confusion (8), enslavement (8),
// slowing (8), magic dart (6), frost (7), flame (7)
if (!_choose_wand())
return (false);
// If a supporting wand was chosen, hand out a dagger instead of
// the knife.
if (you.inv[3].sub_type == WAND_CONFUSION
|| you.inv[3].sub_type == WAND_ENSLAVEMENT)
{
you.inv[0].sub_type = WPN_DAGGER;
}
// Skills
you.skills[SK_EVOCATIONS] = 4;
you.skills[SK_TRAPS_DOORS] = 3;
//you.skills[SK_CROSSBOWS] = 2;
you.skills[SK_DODGING] = 2;
you.skills[SK_FIGHTING] = 1;
Artificers:
-----------
The Artificer is attuned to gadgets, mechanics, and magic elicited from arcane
items as opposed to casting magic himself. As a consequence, he enters the
Dungeon with an assortment of wands. Artificers are skilled at Evoking magical
items, finding Traps and Doors, have some prior experience with Scrolls of
Recharging, and understand the basics of melee combat. Dwarves, Gnomes, and
Spriggans are renowned for their skill in artifice.