the selection screen. Should be more sensible and easier to read this way.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6294 c06c8d41-db1a-0410-9941-cceddc491573
3U54KX4JPCEBGC3USUQJVX35HBEWV6DX6ZZ4RV7GT3HBX7LMLKPAC M6IHSU5JWCTOTUSPCVVHMAQ4XJDGQJOLZTTN5BGKEOS4B6Z7IOWAC D3BFRP3THKOVAJBXKCFZIPNPNANTPMPNCJNVIWH3KRCW422W7ONQC MCQZ4HEOF65FEVWUEAMO2765JYMJPKXQ454HCCWWK3JUYEUSUXTAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC JJULXW764V5C2HJKZNWQAEWB6QM5YZADD7ZCE35LYTBFEM6PMYCAC BTDIRPAGSX5DWEEV62VGTYALWM6G5LKFKHT7HYJXVH7XBA4BPHLQC C2PRXJYHDRF2642VDAUY76HJKCPQFGWDI6AM3SMCMYCHGWYDQXQQC VXSORUQOM2VZA4CAZDC6KPAY373NQIN3UT7CXQXTRCYXO2WM62DAC 3OHKRNZDX6FDLBM26OFMRYUXVPLV24RIUYK6YDIIJPWHRVXUAJMAC 3BJ2OOF4F524G6UKVGOZVT6W3FSTSHHTKRJADUBZCHDXZWV3KANQC Z6343ZVG2VOE7WOLBS7YLIWJ6XGCRCGJRJLP5WUVRTG7VOIXRRLAC 3GRGONHWIZ7PTTNMJ6CIZEMIKC7N2DTU62BLJ5QG4E7RGA5O2XMAC DL4M4VJQZX43KRYN4FBP57YPSBX2UJPJ43QSYGFXVJO4PH2CHRCAC SJP5BHX6MFWF3OSQPEF4WUWZWPUGMOVURTT2CUVT6H3A66LETXUAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC 3NIWNYMNSQZEEXZLEQADAAB3D7GLO5FIH64U5P5YQUVIV5MOURCAC TFO3DNZBDBA7YGKQKL624CG6DMVCEOPWQNAXDEV42ZODT5U3666AC YTUD2TIFOAE6CDDT53PZH32TIXZEZZL5Y6ZRS4GXPVBOPIBTMQGQC S4BRP4VHB23F2FCC6BXNAN2MZRVUGW7QMXUEOAVZVGFXKXJPVLLQC G3HJCS277WA2VONPOJW6FAOQO7VHMSMLXZWYIXKFE4N4Y3OV7UZAC WFOFNKQC3EP2FX4YHYAB54B2JPN2KW6LCMFSX4KI6EK6YXNF4DXQC GUXTGUEMZYBRGV5QUAQSJHG3AOIQDWWCDIMOX4LASFJAZVGL2WQAC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC JPGW2YFZDRPAWPG4VAKOOB5SCJA2QSSLR5JJP7ULRBX3LLGI7PUAC PNRMCHHEBCAUD2XBSSH6JOEQ6A6CFEZBCIX436DVD26DA52OCYTQC PO3IATZV4JX3I3522UAGF53ZLZ4FW7C2J32Z23PEWQVHGGEUO7SAC CQ24AVAI6SW3AHTIDMLPSTRRBEU6FHRF5I5FD6G5QIYE6PO4BQMQC G5CA5STLILMQZO2ICHZTVTW76V6RMC7KWP4ELU7ANZBNXYSTWV7AC FW3BFOY6UIWUMYNALIJMPEBTRQIMKUVRHOVFOHDKB3KRGA2QOGPQC UIVESOFZ4C262RYTFHSTFZIYTPTWSRJCFJAOZX7O2PQ35DFRDDEAC JDM5R3HYGXKQKZWY35QZ2KOB24TFZ3FW2PCNXCRCMWG72AZC5ZXQC T7CUIVICB74342RA32BR37T36FOX4RBSQIB5PNOHTGTGUYGDKSTQC 6L4EP4ZRWWYLT55PD5KTTJON5J2JB5VV5MWNHF5VPZQZ5BKEYZ4QC RWSXCNYUGDSMP2GKN22HROC5Q2GHSAVJJUDRT3Z53WU2DAI4IZOQC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC LECIKTCYNIZX557PIJWPY73WM652RHZDIAY4J7OXIK7NY4LZ2ZJAC case JOB_WIZARD:_newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS,you.species == SP_OGRE_MAGE ? WPN_QUARTERSTAFF :player_genus(GENPC_DWARVEN) ? WPN_HAMMER: WPN_DAGGER);
case JOB_GLADIATOR:// Equipment._newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_SHORT_SWORD);if (!_choose_weapon())return (false);_newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR,ARM_LEATHER_ARMOUR, ARM_ANIMAL_SKIN);_newgame_make_item(2, EQ_SHIELD, OBJ_ARMOUR, ARM_SHIELD,ARM_BUCKLER);
case 0:case 1:default:set_equip_desc( you.inv[1], ISFLAG_EMBROIDERED_SHINY );break;case 2:case 3:set_equip_desc( you.inv[1], ISFLAG_GLOWING );break;case 4:case 5:set_equip_desc( you.inv[1], ISFLAG_RUNED );break;case 6:set_equip_race( you.inv[1], ISFLAG_ELVEN );break;
_newgame_make_item(4, EQ_NONE, OBJ_MISSILES, MI_STONE, -1,10 + roll_dice( 2, 10 ));}else{_newgame_make_item(4, EQ_NONE, OBJ_MISSILES, MI_THROWING_NET, -1,4);
// Extra items being tested:if (!_choose_book( you.inv[2], BOOK_MINOR_MAGIC_I, 3 ))return (false);
// Skills.you.skills[SK_FIGHTING] = 2;you.skills[SK_THROWING] = 2;you.skills[SK_DODGING] = 2;you.skills[SK_SHIELDS] = 2;you.skills[SK_UNARMED_COMBAT] = 2;weap_skill = 3;break;
you.skills[SK_DODGING] = 1;you.skills[SK_STEALTH] = 1;you.skills[(coinflip() ? SK_DODGING : SK_STEALTH)]++;you.skills[SK_SPELLCASTING] = 2;you.skills[SK_CONJURATIONS] = 1;you.skills[SK_ENCHANTMENTS] = 1;you.skills[SK_SPELLCASTING + random2(3)]++;you.skills[SK_SUMMONINGS + random2(5)]++;
case JOB_MONK:you.equip[EQ_WEAPON] = -1; // Monks fight unarmed.
if (player_genus(GENPC_DWARVEN))you.skills[SK_MACES_FLAILS] = 1;
_newgame_make_item(0, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE);you.skills[SK_FIGHTING] = 3;you.skills[SK_UNARMED_COMBAT] = 4;you.skills[SK_DODGING] = 3;you.skills[SK_STEALTH] = 2;break;case JOB_BERSERKER:you.religion = GOD_TROG;you.piety = 35;// WEAPONSif (you.has_claws())you.equip[EQ_WEAPON] = -1; // Trolls/Ghouls fight unarmed.else_newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_HAND_AXE);// ARMOUR_newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ANIMAL_SKIN);// SKILLSyou.skills[SK_FIGHTING] = 3;you.skills[SK_DODGING] = 2;weap_skill = 3;if (you_can_wear(EQ_BODY_ARMOUR))you.skills[SK_ARMOUR] = 2;
you.skills[SK_STAVES] = 1;
case JOB_PALADIN:you.religion = GOD_SHINING_ONE;you.piety = 28;// Equipment._newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_FALCHION);_newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_RING_MAIL,ARM_ROBE);_newgame_make_item(2, EQ_SHIELD, OBJ_ARMOUR, ARM_SHIELD, ARM_BUCKLER);_newgame_make_item(3, EQ_NONE, OBJ_POTIONS, POT_HEALING);// Skills.you.skills[(player_light_armour() ? SK_DODGING : SK_ARMOUR)] = 2;you.skills[SK_FIGHTING] = 2;you.skills[SK_SHIELDS] = 2;you.skills[SK_LONG_BLADES] = 3;you.skills[SK_INVOCATIONS] = 2;
case JOB_THIEF:_newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_SHORT_SWORD);_newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_HAND_CROSSBOW);
case JOB_CHAOS_KNIGHT:{_newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_SHORT_SWORD, -1,1, random2(3), random2(3));
_newgame_make_item(2, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE);_newgame_make_item(3, EQ_CLOAK, OBJ_ARMOUR, ARM_CLOAK);_newgame_make_item(4, EQ_NONE, OBJ_MISSILES, MI_DART, -1,10 + roll_dice( 2, 10 ));
if (!_choose_weapon())return (false);if (Options.chaos_knight != GOD_NO_GOD&& Options.chaos_knight != GOD_RANDOM){ng_ck = you.religion =static_cast<god_type>( Options.chaos_knight );}else if (Options.random_pick || Options.chaos_knight == GOD_RANDOM){you.religion = (one_chance_in(3) ? GOD_XOM :coinflip() ? GOD_MAKHLEB: GOD_LUGONU);ng_ck = GOD_RANDOM;}else{_print_character_info();textcolor( CYAN );cprintf(EOL "Which god of chaos do you wish to serve?" EOL);// Both Xom and Makhleb are okay choices for everyone.textcolor( LIGHTGREY );cprintf("a - Xom of Chaos" EOL);cprintf("b - Makhleb the Destroyer" EOL);cprintf("c - Lugonu the Unformed" EOL);textcolor( BROWN );cprintf(EOL "* - Random choice; ""Bksp - Back to species and class selection; ""X - Quit" EOL);
if (you.species == SP_SPRIGGAN)
if (Options.prev_ck != GOD_NO_GOD){textcolor(BROWN);cprintf(EOL "Enter - %s" EOL,Options.prev_ck == GOD_XOM ? "Xom" :Options.prev_ck == GOD_MAKHLEB ? "Makhleb" :Options.prev_ck == GOD_LUGONU ? "Lugonu": "Random");textcolor(LIGHTGREY);}do{keyn = c_getch();switch (keyn){case 'X':cprintf(EOL "Goodbye!");end(0);break;case CK_BKSP:case CK_ESCAPE:case ' ':return (false);case '\r':case '\n':if (Options.prev_ck == GOD_NO_GOD)break;if (Options.prev_ck != GOD_RANDOM){you.religion = static_cast<god_type>(Options.prev_ck);break;}keyn = '*'; // for ng_ck setting// fall-through for randomcase '*':case '+':you.religion = (one_chance_in(3) ? GOD_XOM :coinflip() ? GOD_MAKHLEB: GOD_LUGONU);break;case 'a':you.religion = GOD_XOM;break;case 'b':you.religion = GOD_MAKHLEB;break;case 'c':you.religion = GOD_LUGONU;break;default:break;}}while (you.religion == GOD_NO_GOD);ng_ck = (keyn == '*') ? GOD_RANDOM: you.religion;}int plusses = 4 - you.inv[0].plus - you.inv[0].plus2;ASSERT(plusses >= 0);if (one_chance_in(5))set_equip_desc( you.inv[0], ISFLAG_RUNED );if (one_chance_in(5))set_equip_desc( you.inv[0], ISFLAG_GLOWING );weap_skill = 2;if (you.religion != GOD_XOM){// For Lugonu and Makhleb don't hand out enchanted armour.// Distribute remaining enchantment points on the weapon.const int help = random2(plusses + 1);you.inv[0].plus += help;you.inv[0].plus2 += plusses - help;plusses = 0;}_newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE, -1,1, plusses);you.skills[SK_FIGHTING] = 3;you.skills[SK_ARMOUR] = 1;you.skills[SK_DODGING] = 1;you.skills[(coinflip()? SK_ARMOUR : SK_DODGING)]++;if (you.religion == GOD_XOM)
_make_rod(you.inv[0], STAFF_STRIKING);you.skills[SK_EVOCATIONS] = 1;
you.skills[SK_FIGHTING]++;// The new (piety-aware) Xom uses piety in his own special way...// (Namely, 100 is neutral.)you.piety = 100;// The new Xom also uses gift_timeout in his own special way...// (Namely, a countdown to becoming bored.)you.gift_timeout = random2(40) + random2(40);
you.skills[SK_SHORT_BLADES] = 2;you.skills[SK_FIGHTING] = 1;you.skills[SK_THROWING] = 1;you.skills[SK_DARTS] = 1;you.skills[SK_DODGING] = 2;you.skills[SK_STEALTH] = 2;you.skills[SK_STABBING] = 1;// Increase one of Dodging/Stealth/Stabbing by 1.you.skills[SK_DODGING + random2(3)]++;you.skills[SK_TRAPS_DOORS] = 2;
if (you.religion == GOD_LUGONU){// Chaos Knights of Lugonu start in the Abyss. We need// to mark this unusual occurrence, so the player// doesn't get early access to OOD items, etc.you.char_direction = GDT_GAME_START;you.piety = 38;}elseyou.piety = 25;}
// Small races get stones, the others nets.if (player_size(PSIZE_BODY) < SIZE_MEDIUM)
// Order is important here. -- bwrif (you.species == SP_DEMIGOD)choice = DK_NECROMANCY;else if (Options.death_knight != DK_NO_SELECTION&& Options.death_knight != DK_RANDOM)
_newgame_make_item(4, EQ_NONE, OBJ_MISSILES, MI_STONE, -1,10 + roll_dice( 2, 10 ));
ng_dk = choice = Options.death_knight;}else if (Options.random_pick || Options.death_knight == DK_RANDOM){ng_dk = DK_RANDOM;if (Options.good_random && !_has_good_necromancy_apts())choice = DK_YREDELEMNUL;elsechoice = (coinflip() ? DK_NECROMANCY : DK_YREDELEMNUL);
_newgame_make_item(4, EQ_NONE, OBJ_MISSILES, MI_THROWING_NET, -1,4);
_print_character_info();textcolor( CYAN );cprintf(EOL "From where do you draw your power?" EOL);if (_has_good_necromancy_apts())textcolor(LIGHTGREY);elsetextcolor(DARKGREY);cprintf("a - Necromantic magic" EOL);// Yredelemnul is an okay choice for everyone.textcolor(LIGHTGREY);cprintf("b - the god Yredelemnul" EOL);textcolor( BROWN );cprintf(EOL "* - Random choice; ""Bksp - Back to species and class selection; ""X - Quit" EOL);if (Options.prev_dk != DK_NO_SELECTION){textcolor(BROWN);cprintf(EOL "Enter - %s" EOL,Options.prev_dk == DK_NECROMANCY ? "Necromancy" :Options.prev_dk == DK_YREDELEMNUL ? "Yredelemnul": "Random");}do{keyn = c_getch();switch (keyn){case 'X':cprintf(EOL "Goodbye!");end(0);break;case CK_BKSP:case ESCAPE:case ' ':return (false);case '\r':case '\n':if (Options.prev_dk == DK_NO_SELECTION)break;if (Options.prev_dk != DK_RANDOM){choice = Options.prev_dk;break;}keyn = '*'; // for ng_dk setting// fall-through for randomcase '+':if (keyn == '+' && !_has_good_necromancy_apts()){choice = DK_YREDELEMNUL;break;}// fall-through for randomcase '*':choice = coinflip()? DK_NECROMANCY : DK_YREDELEMNUL;break;case 'a':cprintf(EOL "Very well.");choice = DK_NECROMANCY;break;case 'b':choice = DK_YREDELEMNUL;default:break;}}while (choice == DK_NO_SELECTION);ng_dk = (keyn == '*'? DK_RANDOM : choice);}switch (choice){default: // this shouldn't happen anyways -- bwrcase DK_NECROMANCY:you.skills[SK_SPELLCASTING] = 1;you.skills[SK_NECROMANCY] = 2;break;case DK_YREDELEMNUL:you.religion = GOD_YREDELEMNUL;you.piety = 28;you.inv[0].plus = 1;you.inv[0].plus2 = 1;you.inv[2].quantity = 0;you.skills[SK_INVOCATIONS] = 3;break;
you.skills[SK_THROWING] = 2;you.skills[SK_DODGING] = 2;you.skills[SK_SHIELDS] = 2;you.skills[SK_UNARMED_COMBAT] = 2;weap_skill = 3;
you.skills[SK_ARMOUR] = 1;you.skills[SK_DODGING] = 1;you.skills[SK_STEALTH] = 1;break;case JOB_HEALER:you.religion = GOD_ELYVILON;you.piety = 55;_newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_QUARTERSTAFF);_newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE);_newgame_make_item(2, EQ_NONE, OBJ_POTIONS, POT_HEALING);_newgame_make_item(3, EQ_NONE, OBJ_POTIONS, POT_HEAL_WOUNDS);you.skills[SK_FIGHTING] = 2;you.skills[SK_STAVES] = 3;you.skills[SK_DODGING] = 1;you.skills[SK_INVOCATIONS] = 4;
// Equipment._newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_FALCHION);_newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_RING_MAIL,ARM_ROBE);_newgame_make_item(2, EQ_SHIELD, OBJ_ARMOUR, ARM_SHIELD, ARM_BUCKLER);_newgame_make_item(3, EQ_NONE, OBJ_POTIONS, POT_HEALING);// Skills.you.skills[(player_light_armour() ? SK_DODGING : SK_ARMOUR)] = 2;you.skills[SK_FIGHTING] = 2;you.skills[SK_SHIELDS] = 2;you.skills[SK_LONG_BLADES] = 3;you.skills[SK_INVOCATIONS] = 2;break;case JOB_ASSASSIN:_newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_DAGGER, -1,1, 1 + to_hit_bonus, 1 + (2 - to_hit_bonus));_newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_BLOWGUN);_newgame_make_item(2, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE);_newgame_make_item(3, EQ_CLOAK, OBJ_ARMOUR, ARM_CLOAK);_newgame_make_item(4, EQ_NONE, OBJ_MISSILES, MI_NEEDLE, -1,5 + roll_dice(2, 5));set_item_ego_type(you.inv[4], OBJ_MISSILES, SPMSL_POISONED);_newgame_make_item(5, EQ_NONE, OBJ_MISSILES, MI_NEEDLE, -1,1 + random2(4));set_item_ego_type(you.inv[5], OBJ_MISSILES, SPMSL_CURARE);you.skills[SK_SHORT_BLADES] = 2;you.skills[SK_FIGHTING] = 2;you.skills[SK_DODGING] = 1;you.skills[SK_STEALTH] = 3;you.skills[SK_STABBING] = 2;you.skills[SK_DARTS] = 2;break;case JOB_BERSERKER:you.religion = GOD_TROG;you.piety = 35;// WEAPONSif (you.has_claws())you.equip[EQ_WEAPON] = -1; // Trolls/Ghouls fight unarmed.else_newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_HAND_AXE);// ARMOUR_newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ANIMAL_SKIN);// SKILLSyou.skills[SK_FIGHTING] = 3;you.skills[SK_DODGING] = 2;weap_skill = 3;
_newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE);
you.skills[SK_DODGING]++;you.skills[SK_ARMOUR] = 1; // for the eventual dragon scale mail :)}break;case JOB_HUNTER:// Equipment._newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_DAGGER);switch (you.species){ case SP_MOUNTAIN_DWARF:case SP_HILL_ORC:case SP_CENTAUR:case SP_OGRE:case SP_OGRE_MAGE:you.inv[0].sub_type = WPN_HAND_AXE;break;case SP_GHOUL:case SP_TROLL:_newgame_clear_item(0);break;
case 0:case 1:
}switch (you.species){case SP_SLUDGE_ELF:case SP_HILL_ORC:case SP_MERFOLK:_newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_JAVELIN, -1, 6);_newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_THROWING_NET, -1,2);
case 2:case 3:set_equip_desc( you.inv[1], ISFLAG_GLOWING );
case SP_TROLL:case SP_OGRE:_newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_LARGE_ROCK, -1, 5);_newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_THROWING_NET, -1,3);break;case SP_HALFLING:case SP_GNOME:case SP_KOBOLD:_newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_SLING);_newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_SLING_BULLET, -1,15 + random2avg(21, 5) + random2avg(15, 2));break;case SP_MOUNTAIN_DWARF:_newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_CROSSBOW);_newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_BOLT, -1,15 + random2avg(21, 5));
case 4:case 5:set_equip_desc( you.inv[1], ISFLAG_RUNED );
// Skills.you.skills[SK_FIGHTING] = 2;you.skills[SK_DODGING] = 2;you.skills[SK_STEALTH] = 1;weap_skill = 1;
you.skills[SK_DODGING] = 1;you.skills[SK_STEALTH] = 1;you.skills[(coinflip() ? SK_DODGING : SK_STEALTH)]++;you.skills[SK_SPELLCASTING] = 2;you.skills[SK_CONJURATIONS] = 1;you.skills[SK_ENCHANTMENTS] = 1;you.skills[SK_SPELLCASTING + random2(3)]++;you.skills[SK_SUMMONINGS + random2(5)]++;
break;case JOB_DEATH_KNIGHT:_newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_SHORT_SWORD);if (!_choose_weapon())return (false);weap_skill = 2;_newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE);_newgame_make_item(2, EQ_NONE, OBJ_BOOKS, BOOK_NECROMANCY);choice = DK_NO_SELECTION;// Order is important here. -- bwrif (you.species == SP_DEMIGOD)choice = DK_NECROMANCY;else if (Options.death_knight != DK_NO_SELECTION&& Options.death_knight != DK_RANDOM){ng_dk = choice = Options.death_knight;}else if (Options.random_pick || Options.death_knight == DK_RANDOM){ng_dk = DK_RANDOM;if (Options.good_random && !_has_good_necromancy_apts())choice = DK_YREDELEMNUL;elsechoice = (coinflip() ? DK_NECROMANCY : DK_YREDELEMNUL);}else{_print_character_info();textcolor( CYAN );cprintf(EOL "From where do you draw your power?" EOL);if (_has_good_necromancy_apts())textcolor(LIGHTGREY);elsetextcolor(DARKGREY);cprintf("a - Necromantic magic" EOL);// Yredelemnul is an okay choice for everyone.textcolor(LIGHTGREY);cprintf("b - the god Yredelemnul" EOL);textcolor( BROWN );cprintf(EOL "* - Random choice; ""Bksp - Back to species and class selection; ""X - Quit" EOL);if (Options.prev_dk != DK_NO_SELECTION){textcolor(BROWN);cprintf(EOL "Enter - %s" EOL,Options.prev_dk == DK_NECROMANCY ? "Necromancy" :Options.prev_dk == DK_YREDELEMNUL ? "Yredelemnul": "Random");}do{keyn = c_getch();switch (keyn){case 'X':cprintf(EOL "Goodbye!");end(0);break;case CK_BKSP:case ESCAPE:case ' ':return (false);case '\r':case '\n':if (Options.prev_dk == DK_NO_SELECTION)break;if (Options.prev_dk != DK_RANDOM){choice = Options.prev_dk;break;}keyn = '*'; // for ng_dk setting// fall-through for randomcase '+':if (keyn == '+' && !_has_good_necromancy_apts()){choice = DK_YREDELEMNUL;break;}// fall-through for randomcase '*':choice = coinflip()? DK_NECROMANCY : DK_YREDELEMNUL;break;case 'a':cprintf(EOL "Very well.");choice = DK_NECROMANCY;break;case 'b':choice = DK_YREDELEMNUL;default:break;}}while (choice == DK_NO_SELECTION);ng_dk = (keyn == '*'? DK_RANDOM : choice);}switch (choice){default: // this shouldn't happen anyways -- bwrcase DK_NECROMANCY:you.skills[SK_SPELLCASTING] = 1;you.skills[SK_NECROMANCY] = 2;break;case DK_YREDELEMNUL:you.religion = GOD_YREDELEMNUL;you.piety = 28;you.inv[0].plus = 1;you.inv[0].plus2 = 1;you.inv[2].quantity = 0;you.skills[SK_INVOCATIONS] = 3;break;}you.skills[SK_FIGHTING] = 2;you.skills[SK_ARMOUR] = 1;you.skills[SK_DODGING] = 1;you.skills[SK_STEALTH] = 1;break;case JOB_CHAOS_KNIGHT:{_newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_SHORT_SWORD, -1,1, random2(3), random2(3));if (!_choose_weapon())return (false);if (Options.chaos_knight != GOD_NO_GOD&& Options.chaos_knight != GOD_RANDOM){ng_ck = you.religion =static_cast<god_type>( Options.chaos_knight );}else if (Options.random_pick || Options.chaos_knight == GOD_RANDOM){you.religion = (one_chance_in(3) ? GOD_XOM :coinflip() ? GOD_MAKHLEB: GOD_LUGONU);ng_ck = GOD_RANDOM;}else{_print_character_info();textcolor( CYAN );cprintf(EOL "Which god of chaos do you wish to serve?" EOL);// Both Xom and Makhleb are okay choices for everyone.textcolor( LIGHTGREY );cprintf("a - Xom of Chaos" EOL);cprintf("b - Makhleb the Destroyer" EOL);cprintf("c - Lugonu the Unformed" EOL);textcolor( BROWN );cprintf(EOL "* - Random choice; ""Bksp - Back to species and class selection; ""X - Quit" EOL);if (Options.prev_ck != GOD_NO_GOD){textcolor(BROWN);cprintf(EOL "Enter - %s" EOL,Options.prev_ck == GOD_XOM ? "Xom" :Options.prev_ck == GOD_MAKHLEB ? "Makhleb" :Options.prev_ck == GOD_LUGONU ? "Lugonu": "Random");textcolor(LIGHTGREY);}do{keyn = c_getch();switch (keyn){case 'X':cprintf(EOL "Goodbye!");end(0);break;case CK_BKSP:case CK_ESCAPE:case ' ':return (false);case '\r':case '\n':if (Options.prev_ck == GOD_NO_GOD)break;if (Options.prev_ck != GOD_RANDOM){you.religion = static_cast<god_type>(Options.prev_ck);break;}keyn = '*'; // for ng_ck setting// fall-through for randomcase '*':case '+':you.religion = (one_chance_in(3) ? GOD_XOM :coinflip() ? GOD_MAKHLEB: GOD_LUGONU);break;case 'a':you.religion = GOD_XOM;break;case 'b':you.religion = GOD_MAKHLEB;break;case 'c':you.religion = GOD_LUGONU;break;default:break;}}while (you.religion == GOD_NO_GOD);ng_ck = (keyn == '*') ? GOD_RANDOM: you.religion;}int plusses = 4 - you.inv[0].plus - you.inv[0].plus2;ASSERT(plusses >= 0);if (one_chance_in(5))set_equip_desc( you.inv[0], ISFLAG_RUNED );if (one_chance_in(5))set_equip_desc( you.inv[0], ISFLAG_GLOWING );weap_skill = 2;if (you.religion != GOD_XOM){// For Lugonu and Makhleb don't hand out enchanted armour.// Distribute remaining enchantment points on the weapon.const int help = random2(plusses + 1);you.inv[0].plus += help;you.inv[0].plus2 += plusses - help;plusses = 0;}_newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE, -1,1, plusses);you.skills[SK_FIGHTING] = 3;you.skills[SK_ARMOUR] = 1;you.skills[SK_DODGING] = 1;you.skills[(coinflip()? SK_ARMOUR : SK_DODGING)]++;if (you.religion == GOD_XOM){you.skills[SK_FIGHTING]++;// The new (piety-aware) Xom uses piety in his own special way...// (Namely, 100 is neutral.)you.piety = 100;// The new Xom also uses gift_timeout in his own special way...// (Namely, a countdown to becoming bored.)you.gift_timeout = random2(40) + random2(40);}else // Makhleb or Lugonu{you.skills[SK_INVOCATIONS] = 2;if (you.religion == GOD_LUGONU){// Chaos Knights of Lugonu start in the Abyss. We need// to mark this unusual occurrence, so the player// doesn't get early access to OOD items, etc.you.char_direction = GDT_GAME_START;you.piety = 38;}elseyou.piety = 25;}
}case JOB_HEALER:you.religion = GOD_ELYVILON;you.piety = 55;_newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_QUARTERSTAFF);_newgame_make_item(1, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE);_newgame_make_item(2, EQ_NONE, OBJ_POTIONS, POT_HEALING);_newgame_make_item(3, EQ_NONE, OBJ_POTIONS, POT_HEAL_WOUNDS);
you.skills[SK_FIGHTING] = 2;you.skills[SK_STAVES] = 3;you.skills[SK_DODGING] = 1;you.skills[SK_INVOCATIONS] = 4;break;
case JOB_MONK:you.equip[EQ_WEAPON] = -1; // Monks fight unarmed.
case JOB_THIEF:_newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_SHORT_SWORD);_newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_HAND_CROSSBOW);_newgame_make_item(2, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE);_newgame_make_item(3, EQ_CLOAK, OBJ_ARMOUR, ARM_CLOAK);_newgame_make_item(4, EQ_NONE, OBJ_MISSILES, MI_DART, -1,10 + roll_dice( 2, 10 ));if (you.species == SP_SPRIGGAN){_make_rod(you.inv[0], STAFF_STRIKING);you.skills[SK_EVOCATIONS] = 1;}you.skills[SK_SHORT_BLADES] = 2;you.skills[SK_FIGHTING] = 1;you.skills[SK_THROWING] = 1;you.skills[SK_DARTS] = 1;you.skills[SK_DODGING] = 2;you.skills[SK_STEALTH] = 2;you.skills[SK_STABBING] = 1;// Increase one of Dodging/Stealth/Stabbing by 1.you.skills[SK_DODGING + random2(3)]++;you.skills[SK_TRAPS_DOORS] = 2;break;case JOB_ASSASSIN:_newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_DAGGER, -1,1, 1 + to_hit_bonus, 1 + (2 - to_hit_bonus));_newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_BLOWGUN);_newgame_make_item(2, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE);_newgame_make_item(3, EQ_CLOAK, OBJ_ARMOUR, ARM_CLOAK);_newgame_make_item(4, EQ_NONE, OBJ_MISSILES, MI_NEEDLE, -1,5 + roll_dice(2, 5));set_item_ego_type(you.inv[4], OBJ_MISSILES, SPMSL_POISONED);_newgame_make_item(5, EQ_NONE, OBJ_MISSILES, MI_NEEDLE, -1,1 + random2(4));set_item_ego_type(you.inv[5], OBJ_MISSILES, SPMSL_CURARE);you.skills[SK_SHORT_BLADES] = 2;you.skills[SK_FIGHTING] = 2;you.skills[SK_DODGING] = 1;you.skills[SK_STEALTH] = 3;you.skills[SK_STABBING] = 2;you.skills[SK_DARTS] = 2;break;case JOB_HUNTER:// Equipment._newgame_make_item(0, EQ_WEAPON, OBJ_WEAPONS, WPN_DAGGER);switch (you.species){ case SP_MOUNTAIN_DWARF:case SP_HILL_ORC:case SP_CENTAUR:case SP_OGRE:case SP_OGRE_MAGE:you.inv[0].sub_type = WPN_HAND_AXE;break;case SP_GHOUL:case SP_TROLL:_newgame_clear_item(0);break;default:break;}
_newgame_make_item(0, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_ROBE);
switch (you.species){case SP_SLUDGE_ELF:case SP_HILL_ORC:case SP_MERFOLK:_newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_JAVELIN, -1, 6);_newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_THROWING_NET, -1,2);break;case SP_TROLL:case SP_OGRE:_newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_LARGE_ROCK, -1, 5);_newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_THROWING_NET, -1,3);break;
you.skills[SK_FIGHTING] = 3;you.skills[SK_UNARMED_COMBAT] = 4;you.skills[SK_DODGING] = 3;you.skills[SK_STEALTH] = 2;
case SP_HALFLING:case SP_GNOME:case SP_KOBOLD:_newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_SLING);_newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_SLING_BULLET, -1,15 + random2avg(21, 5) + random2avg(15, 2));break;case SP_MOUNTAIN_DWARF:_newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_CROSSBOW);_newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_BOLT, -1,15 + random2avg(21, 5));break;default:_newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_BOW);_newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_ARROW, -1,15 + random2avg(21, 5));break;}_newgame_make_item(3, EQ_BODY_ARMOUR, OBJ_ARMOUR, ARM_LEATHER_ARMOUR,ARM_ANIMAL_SKIN);// Skills.you.skills[SK_FIGHTING] = 2;you.skills[SK_DODGING] = 2;you.skills[SK_STEALTH] = 1;weap_skill = 1;if (is_range_weapon(you.inv[1]))you.skills[range_skill(you.inv[1])] = 4;elseyou.skills[SK_THROWING] = 4;