probably done in a needlessly redundant way, but I'm tired and cranky, so please do forgive me. Might be buggy, thus won't apply to 0.4 yet.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6467 c06c8d41-db1a-0410-9941-cceddc491573
HCQBAKIE4MXJ3XID6CECTZGNWYC33C3642KOKNKO37VVRDMJ2T4QC PTEXB5VKN7K5AZA2WPZMTWVKGVQ6PEQINSDCJIJHGJJ5NS3S4AQQC ORZ37JMK7WY6FLTYZGC75D3POVCAZMZ7RCZIY4ZL2EGPXBMBCKJQC 4C6O4H7IO3LDZPBDGRST3QUFKMNQRB4Y6JXUV3NKIJVVPLAA2AWQC YXWZYOBUFR4EHBSKXCFGZNK7NIM7IPE2GMZYIXEJTUPDDC3BIEDAC ZHFUXYUHS6V47WK2NRH7OU6RX77NRKTXOZC3MND2GG7PEEWSGFTAC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC 5UVDIVD4NSXA52U4QMQIVST3GSZJ2A2YZK3RUEXKPM43YVQ7LI5AC XHNJ2W4AQHIF32P2ENIMMDLWAIFWP442KJIZC6RKS4HBJNZIHHBAC PO3IATZV4JX3I3522UAGF53ZLZ4FW7C2J32Z23PEWQVHGGEUO7SAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC JPGW2YFZDRPAWPG4VAKOOB5SCJA2QSSLR5JJP7ULRBX3LLGI7PUAC C2PRXJYHDRF2642VDAUY76HJKCPQFGWDI6AM3SMCMYCHGWYDQXQQC S4BRP4VHB23F2FCC6BXNAN2MZRVUGW7QMXUEOAVZVGFXKXJPVLLQC VXSORUQOM2VZA4CAZDC6KPAY373NQIN3UT7CXQXTRCYXO2WM62DAC T6HIHZTSKZ2W2P5ADH37CFU6REFSO53OVGMPMMH3PBVZHKTK5H7QC JDM5R3HYGXKQKZWY35QZ2KOB24TFZ3FW2PCNXCRCMWG72AZC5ZXQC RWSXCNYUGDSMP2GKN22HROC5Q2GHSAVJJUDRT3Z53WU2DAI4IZOQC 3U54KX4JPCEBGC3USUQJVX35HBEWV6DX6ZZ4RV7GT3HBX7LMLKPAC 57E4T664CXRFPVW2BZBYI33UIHFS4PSEZURZYPSYSZK5DRLJJ5CQC OFH2B2UZBK43QLFQBZ54FOCFLFNE54BZVDNCEUGDTBCUGNVZULIQC QGVAXJZXG2HUCLELWAN6LJJOBSP2BS6TIZMPJTDOAGI2E2SUCOCQC UET576SVCGS2TXEDRTO7BUTOTLJ77MYHIVZJCDWGH2BAXYMKG6DAC return (false);
return (CC_BANNED);switch (god){case GOD_BEOGH:if (you.species == SP_HILL_ORC)return (CC_UNRESTRICTED);return (CC_BANNED);case GOD_ZIN:switch (you.species){case SP_DEMONSPAWN:case SP_MUMMY:case SP_GHOUL:case SP_VAMPIRE:return (CC_BANNED);case SP_HIGH_ELF:case SP_MOUNTAIN_DWARF:return (CC_UNRESTRICTED);default:return (CC_RESTRICTED);}case GOD_YREDELEMNUL:switch (you.species){case SP_HILL_ORC:// Restrict in favour of Beogh, else unrestricted.if (you.char_class == JOB_PRIEST)return (CC_RESTRICTED);// intentional fall-throughcase SP_HUMAN:case SP_HIGH_ELF:case SP_SLUDGE_ELF:case SP_MOUNTAIN_DWARF:case SP_MERFOLK:case SP_HALFLING:case SP_KOBOLD:case SP_CENTAUR:case SP_OGRE:case SP_TROLL:case SP_MINOTAUR:case SP_DEMONSPAWN:case SP_MUMMY:case SP_GHOUL:case SP_VAMPIRE:return (CC_UNRESTRICTED);default:if (player_genus(GENPC_DRACONIAN))return (CC_UNRESTRICTED);return (CC_RESTRICTED);}
if (god == GOD_BEOGH)return (you.species == SP_HILL_ORC);
case GOD_XOM:switch (you.species){case SP_HUMAN:case SP_MOUNTAIN_DWARF:case SP_HILL_ORC:case SP_MERFOLK:case SP_CENTAUR:case SP_OGRE:case SP_TROLL:case SP_MINOTAUR:case SP_KENKU:case SP_DEMONSPAWN:case SP_VAMPIRE:return (CC_UNRESTRICTED);default:if (player_genus(GENPC_DRACONIAN))return (CC_UNRESTRICTED);return (CC_RESTRICTED);}case GOD_MAKHLEB:switch (you.species){case SP_HUMAN:case SP_HIGH_ELF:case SP_SLUDGE_ELF:case SP_MOUNTAIN_DWARF:case SP_MERFOLK:case SP_HALFLING:case SP_GNOME:case SP_KOBOLD:case SP_CENTAUR:case SP_OGRE:case SP_TROLL:case SP_MINOTAUR:case SP_DEMONSPAWN:case SP_MUMMY:case SP_GHOUL:case SP_VAMPIRE:return (CC_UNRESTRICTED);default:if (player_genus(GENPC_DRACONIAN))return (CC_UNRESTRICTED);return (CC_RESTRICTED);}
switch (you.species){case SP_DEMONSPAWN:case SP_MUMMY:case SP_GHOUL:case SP_VAMPIRE:return (!is_good_god(god));
case GOD_LUGONU:switch (you.species){case SP_HUMAN:case SP_MOUNTAIN_DWARF:case SP_HILL_ORC:case SP_MERFOLK:case SP_SPRIGGAN:case SP_CENTAUR:case SP_OGRE:case SP_TROLL:case SP_MINOTAUR:case SP_DEMONSPAWN:case SP_VAMPIRE:return (CC_UNRESTRICTED);default:if (player_genus(GENPC_DRACONIAN))return (CC_UNRESTRICTED);return (CC_RESTRICTED);}
// For orcs 50% chance of Beogh instead.if (you.species == SP_HILL_ORC && coinflip())you.religion = GOD_BEOGH;
if (_religion_restriction(gods[i]) == CC_UNRESTRICTED&& one_chance_in(++count)){you.religion = gods[i];did_chose = true;}}}
// Zin and Yredelemnul are valid for everyone.// (The undead have been handled above.)textcolor(LIGHTGREY);cprintf("a - Zin (for traditional priests)" EOL);cprintf("b - Yredelemnul (for priests of death)" EOL);
const char* god_name[3] = {"Zin (for traditional priests)","Yredelemnul (for priests of death)","Beogh (for priests of Orcs)"};
textcolor(LIGHTGREY);cprintf("c - Beogh (priest of Orcs)" EOL);
if (_religion_restriction(gods[i]) == CC_BANNED)continue;if (_religion_restriction(gods[i]) == CC_UNRESTRICTED)textcolor(LIGHTGREY);elsetextcolor(DARKGREY);const char letter = 'a' + i;cprintf("%c - %s" EOL, letter, god_name[i]);
if (keyn == '+'){int count = 0;for (int i = 0; i < 3; i++){if (_religion_restriction(gods[i]) == CC_BANNED)continue;if (_religion_restriction(gods[i])== CC_UNRESTRICTED&& one_chance_in(++count)){you.religion = gods[i];}}if (count > 0)break;}// intentional fall-throughcase '*':
you.religion = (one_chance_in(3) ? GOD_XOM :coinflip() ? GOD_MAKHLEB: GOD_LUGONU);
bool did_chose = false;if (Options.good_random){int count = 0;for (int i = 0; i < 3; i++){if (_religion_restriction(gods[i]) == CC_BANNED)continue;if (_religion_restriction(gods[i]) == CC_UNRESTRICTED&& one_chance_in(++count)){you.religion = gods[i];did_chose = true;}}}if (!did_chose){you.religion = (one_chance_in(3) ? GOD_XOM :coinflip() ? GOD_MAKHLEB: GOD_LUGONU);}
// Xom, Makhleb, and Lugonu 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);
for (int i = 0; i < 3; i++){if (_religion_restriction(gods[i]) == CC_BANNED)continue;if (_religion_restriction(gods[i]) == CC_UNRESTRICTED)textcolor(LIGHTGREY);elsetextcolor(DARKGREY);const char letter = 'a' + i;cprintf("%c - %s" EOL, letter, god_name[i]);}
case '+':if (keyn == '+'){int count = 0;for (int i = 0; i < 3; i++){if (_religion_restriction(gods[i]) == CC_BANNED)continue;if (_religion_restriction(gods[i])== CC_UNRESTRICTED&& one_chance_in(++count)){you.religion = gods[i];}}if (count > 0)break;}// intentional fall-through
if (Options.good_random && !_necromancy_okay())choice = DK_YREDELEMNUL;else
bool did_chose = false;if (Options.good_random){if (_necromancy_okay()){choice = DK_NECROMANCY;did_chose = true;}if (_religion_restriction(GOD_YREDELEMNUL) == CC_UNRESTRICTED){if (!did_chose || coinflip())choice = DK_YREDELEMNUL;did_chose = true;}}if (!did_chose)
choice = DK_YREDELEMNUL;break;
bool did_chose = false;if (_necromancy_okay()){choice = DK_NECROMANCY;did_chose = true;}if (_religion_restriction(GOD_YREDELEMNUL)== CC_UNRESTRICTED){if (!did_chose || coinflip())choice = DK_YREDELEMNUL;did_chose = true;}if (did_chose)break;