git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2683 c06c8d41-db1a-0410-9941-cceddc491573
EWFP6RFDHTEGD6SX36LYRLQB3APIKGAHNBKWPD56RGYBUE4FWJUQC XW6GWT2M3ZEQSX4C6HCS3SJDQKAUTQMU5HWDZJWX7N3NPIGWKNJAC Z6QGDJGSRPZAC4O5PA7MPWPRQLJAFBQBQXHUAO5QUAXQD2JGPDLQC SHQUW7EH2E2SGQ5ONR63MAKN2VGLKQDQ3HIC2Q6D4DFGPGIJXXJQC 5UJT6L52SB6FYWEXZMFSKKBX32J2RWF7LXMFXDQDRZHPPIXQVAKAC FBK5ECMQ6HJSQSN7C3DICKJIRJ3CSO3CHCQ3ONPBKLLSHDGPBQ7QC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC CMNLYUECIMEZSOYG4KOSINOPER5OM7PPCGIHCM7LQVWEO77XFUYQC AQ36MO7VNGSGQ5KK7JCQA2WEHUELAFLSU2QBUWROVJFOTPMGFGMQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC 7CMQLE4XIFMWDEUZAOKIKDW7BHAJCK5S26APMEZ6TEFEH63TEZ6AC ZCRK2DJ5VKECRQXZTWT4NUDL2VT5ZHUK7NT6NQPLRJ56TDX5PJSAC 6WA4OTA6JU7CZHYOYLSSXJLGWKVFD6GMTN6OL4LLFYAV2UTQYWYQC 3UDBQWJX7TIIV3WJWCOIETL7NYQ4GPEU5SUXA247SUZXNEAQQMBQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC 677XWEUOX2NO2ANPHIRM72UOZVX4ZNHSOYALWL6MUCF65QEAPUBAC RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC HXOYKQF6JLOELDE27O66U3Q7J6CP2YPRF42VSJD4LPTV7PZNT6PQC PL6I2CMSTHY5ZHWVMIQE5YTM5S5VPKBNZM6QJVHZSSKOJGIJ5W4AC W2D7G5ARFVO2HKUPFITKCGFC6UKB6ZCZFIT6223QLQ7PU7UO7L5AC BLGPVQN4B4IZ7O56BQGPSOPDKVHJXYNMWQ5QRNC564XRBL3DP2KQC 5UYUTXYWSIP5DCQOSPW2AVNZO6RHJ2BE7JZ2WLISST22UY2LLMCQC MWHMD65QP6UKXO6Q4ZVEAMXY563AJ6KH7J6UEZOB5CRPPSRB762QC QGK4S2PZQRJRO7ZRIL3LB52ZKMGZOZOI7IZGZGOWL4RTBRPPBDAQC static const mutation_def mutation_defs[] = {{ MUT_TOUGH_SKIN, 10, 3 },{ MUT_STRONG, 8, 14 },{ MUT_CLEVER, 8, 14 },{ MUT_AGILE, 8, 14 },{ MUT_GREEN_SCALES, 2, 3 },{ MUT_BLACK_SCALES, 1, 3 },{ MUT_GREY_SCALES, 2, 3 },{ MUT_BONEY_PLATES, 1, 3 },{ MUT_REPULSION_FIELD, 1, 3 },{ MUT_POISON_RESISTANCE, 4, 1 },
static mutation_def mutation_defs[] = {{ MUT_TOUGH_SKIN, 10, 3, false },{ MUT_STRONG, 8, 14, false },{ MUT_CLEVER, 8, 14, false },{ MUT_AGILE, 8, 14, false },{ MUT_GREEN_SCALES, 2, 3, false },{ MUT_BLACK_SCALES, 1, 3, false },{ MUT_GREY_SCALES, 2, 3, false },{ MUT_BONEY_PLATES, 1, 3, false },{ MUT_REPULSION_FIELD, 1, 3, false },{ MUT_POISON_RESISTANCE, 4, 1, false },
{ MUT_CARNIVOROUS, 5, 3 },{ MUT_HERBIVOROUS, 5, 3 },{ MUT_HEAT_RESISTANCE, 4, 3 },{ MUT_COLD_RESISTANCE, 4, 3 },{ MUT_SHOCK_RESISTANCE, 2, 1 },{ MUT_REGENERATION, 3, 3 },{ MUT_FAST_METABOLISM, 10, 3 },{ MUT_SLOW_METABOLISM, 7, 3 },{ MUT_WEAK, 10, 14 },{ MUT_DOPEY, 10, 14 },
{ MUT_CARNIVOROUS, 5, 3, false },{ MUT_HERBIVOROUS, 5, 3, true },{ MUT_HEAT_RESISTANCE, 4, 3, false },{ MUT_COLD_RESISTANCE, 4, 3, false },{ MUT_SHOCK_RESISTANCE, 2, 1, false },{ MUT_REGENERATION, 3, 3, false },{ MUT_FAST_METABOLISM, 10, 3, true },{ MUT_SLOW_METABOLISM, 7, 3, false },{ MUT_WEAK, 10, 14, true },{ MUT_DOPEY, 10, 14, true },
{ MUT_CLUMSY, 10, 14 },{ MUT_TELEPORT_CONTROL, 2, 1 },{ MUT_TELEPORT, 3, 3 },{ MUT_MAGIC_RESISTANCE, 5, 3 },{ MUT_FAST, 1, 3 },{ MUT_ACUTE_VISION, 2, 1 },{ MUT_DEFORMED, 8, 3 },{ MUT_TELEPORT_AT_WILL, 2, 3 },{ MUT_SPIT_POISON, 8, 3 },{ MUT_MAPPING, 3, 3 },
{ MUT_CLUMSY, 10, 14, true },{ MUT_TELEPORT_CONTROL, 2, 1, false },{ MUT_TELEPORT, 3, 3, true },{ MUT_MAGIC_RESISTANCE, 5, 3, false },{ MUT_FAST, 1, 3, false },{ MUT_ACUTE_VISION, 2, 1, false },{ MUT_DEFORMED, 8, 3, true },{ MUT_TELEPORT_AT_WILL, 2, 3, false },{ MUT_SPIT_POISON, 8, 3, false },{ MUT_MAPPING, 3, 3, false },
{ MUT_BREATHE_FLAMES, 4, 3 },{ MUT_BLINK, 3, 3 },{ MUT_HORNS, 7, 3 },{ MUT_STRONG_STIFF, 10, 3 },{ MUT_FLEXIBLE_WEAK, 10, 3 },{ MUT_SCREAM, 6, 3 },{ MUT_CLARITY, 6, 1 },{ MUT_BERSERK, 7, 3 },{ MUT_DETERIORATION, 10, 3 },{ MUT_BLURRY_VISION, 10, 3 },
{ MUT_BREATHE_FLAMES, 4, 3, false },{ MUT_BLINK, 3, 3, false },{ MUT_HORNS, 7, 3, false },{ MUT_STRONG_STIFF, 10, 3, false },{ MUT_FLEXIBLE_WEAK, 10, 3, false },{ MUT_SCREAM, 6, 3, true },{ MUT_CLARITY, 6, 1, false },{ MUT_BERSERK, 7, 3, true },{ MUT_DETERIORATION, 10, 3, true },{ MUT_BLURRY_VISION, 10, 3, true },
{ MUT_TORMENT_RESISTANCE, 0, 1 },{ MUT_NEGATIVE_ENERGY_RESISTANCE, 0, 3 },{ MUT_SUMMON_MINOR_DEMONS, 0, 1 },{ MUT_SUMMON_DEMONS, 0, 1 },{ MUT_HURL_HELLFIRE, 0, 1 },{ MUT_CALL_TORMENT, 0, 1 },{ MUT_RAISE_DEAD, 0, 1 },
{ MUT_TORMENT_RESISTANCE, 0, 1, false },{ MUT_NEGATIVE_ENERGY_RESISTANCE, 0, 3, false },{ MUT_SUMMON_MINOR_DEMONS, 0, 1, false },{ MUT_SUMMON_DEMONS, 0, 1, false },{ MUT_HURL_HELLFIRE, 0, 1, false },{ MUT_CALL_TORMENT, 0, 1, false },{ MUT_RAISE_DEAD, 0, 1, false },
{ MUT_CONTROL_DEMONS, 0, 1 },{ MUT_PANDEMONIUM, 0, 1 },{ MUT_DEATH_STRENGTH, 0, 1 },{ MUT_CHANNEL_HELL, 0, 1 },{ MUT_DRAIN_LIFE, 0, 1 },{ MUT_THROW_FLAMES, 0, 1 },{ MUT_THROW_FROST, 0, 1 },{ MUT_SMITE, 0, 1 },
{ MUT_CONTROL_DEMONS, 0, 1, false },{ MUT_PANDEMONIUM, 0, 1, false },{ MUT_DEATH_STRENGTH, 0, 1, false },{ MUT_CHANNEL_HELL, 0, 1, false },{ MUT_DRAIN_LIFE, 0, 1, false },{ MUT_THROW_FLAMES, 0, 1, false },{ MUT_THROW_FROST, 0, 1, false },{ MUT_SMITE, 0, 1, false },
{ MUT_BIG_WINGS, 0, 3 }, // Draconian only{ MUT_BLUE_MARKS, 0, 3 }, // used by evil gods to mark followers{ MUT_GREEN_MARKS, 0, 3 },
{ MUT_BIG_WINGS, 0, 3, false }, // Draconian only{ MUT_BLUE_MARKS, 0, 3, false }, // used by evil gods to mark followers{ MUT_GREEN_MARKS, 0, 3, false },
{ MUT_SHAGGY_FUR, 2, 3 },{ MUT_HIGH_MAGIC, 1, 3 },{ MUT_LOW_MAGIC, 9, 3 },{ MUT_SLEEPINESS, 3, 3 },{ RANDOM_MUTATION, 0, 3 },
{ MUT_SHAGGY_FUR, 2, 3, false },{ MUT_HIGH_MAGIC, 1, 3, false },{ MUT_LOW_MAGIC, 9, 3, true },{ MUT_SLEEPINESS, 3, 3, true },{ RANDOM_MUTATION, 0, 3, false },
{ MUT_RED_SCALES, 2, 3 },{ MUT_NACREOUS_SCALES, 1, 3 },{ MUT_GREY2_SCALES, 2, 3 },{ MUT_METALLIC_SCALES, 1, 3 },{ MUT_BLACK2_SCALES, 2, 3 },{ MUT_WHITE_SCALES, 2, 3 },{ MUT_YELLOW_SCALES, 2, 3 },{ MUT_BROWN_SCALES, 2, 3 },{ MUT_BLUE_SCALES, 2, 3 },{ MUT_PURPLE_SCALES, 2, 3 },
{ MUT_RED_SCALES, 2, 3, false },{ MUT_NACREOUS_SCALES, 1, 3, false },{ MUT_GREY2_SCALES, 2, 3, false },{ MUT_METALLIC_SCALES, 1, 3, false },{ MUT_BLACK2_SCALES, 2, 3, false },{ MUT_WHITE_SCALES, 2, 3, false },{ MUT_YELLOW_SCALES, 2, 3, false },{ MUT_BROWN_SCALES, 2, 3, false },{ MUT_BLUE_SCALES, 2, 3, false },{ MUT_PURPLE_SCALES, 2, 3, false },
{ MUT_SPECKLED_SCALES, 2, 3 },{ MUT_ORANGE_SCALES, 2, 3 },{ MUT_INDIGO_SCALES, 2, 3 },{ MUT_RED2_SCALES, 1, 3 },{ MUT_IRIDESCENT_SCALES, 1, 3 },{ MUT_PATTERNED_SCALES, 1, 3 }
{ MUT_SPECKLED_SCALES, 2, 3, false },{ MUT_ORANGE_SCALES, 2, 3, false },{ MUT_INDIGO_SCALES, 2, 3, false },{ MUT_RED2_SCALES, 1, 3, false },{ MUT_IRIDESCENT_SCALES, 1, 3, false },{ MUT_PATTERNED_SCALES, 1, 3, false }
}static mutation_type get_random_xom_mutation(){mutation_type mutat = NUM_MUTATIONS;do{mutat = static_cast<mutation_type>(random2(NUM_MUTATIONS));if (one_chance_in(1000))return (NUM_MUTATIONS);if (one_chance_in(5)){switch (random2(8)){case 0: mutat = MUT_WEAK; break;case 1: mutat = MUT_DOPEY; break;case 2: mutat = MUT_CLUMSY; break;case 3: mutat = MUT_DEFORMED; break;case 4: mutat = MUT_SCREAM; break;case 5: mutat = MUT_DETERIORATION; break;case 6: mutat = MUT_BLURRY_VISION; break;case 7: mutat = MUT_FRAIL; break;}}}while ( !accept_mutation(mutat) );return (mutat);
static mutation_type get_random_mutation(bool prefer_good,int preferred_multiplier){int cweight = 0;mutation_type chosen = NUM_MUTATIONS;for (int i = 0; i < NUM_MUTATIONS; ++i){if (!mutation_defs[i].rarity)continue;const mutation_type curr = static_cast<mutation_type>(i);if (!accept_mutation(curr, true))continue;const bool weighted = mutation_defs[i].bad != prefer_good;int weight = mutation_defs[i].rarity;if (weighted)weight = weight * preferred_multiplier / 100;cweight += weight;
do{mutat = static_cast<mutation_type>(random2(NUM_MUTATIONS));if (one_chance_in(1000))return false;if (one_chance_in(5)){switch (random2(8)){case 0: mutat = MUT_WEAK; break;case 1: mutat = MUT_DOPEY; break;case 2: mutat = MUT_CLUMSY; break;case 3: mutat = MUT_DEFORMED; break;case 4: mutat = MUT_SCREAM; break;case 5: mutat = MUT_DETERIORATION; break;case 6: mutat = MUT_BLURRY_VISION; break;case 7: mutat = MUT_FRAIL; break;}}}while ( !accept_mutation(mutat) );
if ((mutat = get_random_xom_mutation()) == NUM_MUTATIONS)return (false);}else if (which_mutation == RANDOM_GOOD_MUTATION){if ((mutat = get_random_mutation(true, 500)) == NUM_MUTATIONS)return (false);
platform it's building for. Your first step in building Crawl shouldbe to edit source/makefile and point it at the correct platformmakefile. For instance, if you're building for Windows, you'd use
platform it's building for. Your first step in building Crawl should beto edit source/makefile and point it at the correct platform makefile.For instance, if you're building for Windows, you'd use
If you have untrusted users, the correct way to install a multiplayerCrawl is using a chrooted game launcher such as dgamelaunch.To install or not to install:If only one user on the system (you) is going to be playing Crawl, youdo not need to use "make install". A simple "make" will build Crawl inthe source directory, where you can run it as "./crawl".
If you have ncursesw and the development headers (usually in the/usr/include/ncursesw directory) you can build Crawl with support forUnicode display characters in the map by setting UNICODE_GLYPHS = yin makefile.unix.
If you want to use Unicode, you need to link with a curses library thatunderstands Unicode characters, usually named libncursesw (thedevelopment headers for libncursesw are usually in/usr/include/ncursesw.) You also need to have a UTF-8 locale installed.You can then build Crawl with support for Unicode by settingUNICODE_GLYPHS = y in makefile.unix.
* If you'd like users to be able to script Crawl with Lua, you canedit AppHdr.h, uncomment// #define CLUA_BINDINGSclean, and rebuild to compile with user Lua support. See the sectionon Lua (below) for more information.
* If you do not want players to be able to script Crawl with Lua,edit makefile.unix and remove -DCLUA_BINDINGS from the CFOTHERS line.
* Install MinGW from http://www.mingw.org. The MinGW 5.0.2 installeris best so you don't have to fiddle with individual packages (youcan mess with the individual packages if you like to, of course). Ifyou want to edit the level compiler, also get the flex and bisonpackages (available from the GnuWin32 project on Sourceforge:
* Install MinGW from http://www.mingw.org. The MinGW installeris best so you don't have to fiddle with individual packages (you canmess with the individual packages if you like to, of course). If youwant to edit the level compiler, also get the flex and bison packages(available from the GnuWin32 project on Sourceforge:
If you're playing Crawl on a remote machine, the remote Crawl shouldbe built with Unicode support, *and* your local terminal (where you'rerunning telnet/ssh) needs to be able to decode UTF-8.
If you're playing Crawl on a remote machine, the remote Crawl should bebuilt with Unicode support, it needs to have a UTF-8 locale installed,*and* your local terminal (where you're running telnet/ssh) needs to beable to decode UTF-8.
Mike Drinen Icy Lich Edgar SimoKieron Dunbar Arien Malec SolfElethiomel Shawn M Moore Johan StrandellChristopher Evenstar Eva Myers Marc H. ThobenBen Goetter Onia Ninara Matt TitusCiaran Hamilton Erkki Nurmi Steven WheelerChris Hamons nyra Jeremey WilsonR. Dan Henry Yuuma Oohara Zooko