git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9595 c06c8d41-db1a-0410-9941-cceddc491573
RQ24Y25QDO2GY65XESEVBCP6VXCB7BDTWXO42IPPI6UPRJQ5XYDAC Y3HZ5Q3MH5YLRMGJNGGTJDKB32WCV5XKP5HNNYPGXL5QV55K5IQAC G326V6CGNWTJUBKPCDD2RGCASATPSJTYMZLNPLIJEJM2JHVIDWKAC FSJKED4U2SOUP64DTHF2NEGAYY7EUMSIDKC2SATEXAXEVOCNL3CAC RIW55YSFKKTJLBTOJRVUBC7JOFUBOK7OBMISW4PBSVLYJHAAKPPQC E4I25AZQOBBI4KOLVRGSOZJNPC7XCSUUCE7HT7VVGS54J2AVLPHQC 6QVMISKCQYTVHBH2YZLOE77I72NIVUQN2D7ACECQ5TYMVC72LAWQC JYEEOUYQ7ZPKOGWUV7VCORBVSOLF2UCBFBH3TR75RGOSS6PNKYUAC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC 4EZVKDQA5GM3QDTNTCKEKGH4F6LGAYNLBT756PXODKZ2B7C4ZVHAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC CO3GKDYMG4P7SH6QLQSBQTAXPWLKSPNMHTUT46USTBL4YBLT4L5QC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC CEK6M777MI5JVDC3KHE3JD3FETVSJ4VN6DGATBI5P3O6P5XHY4DAC EOMCPVNQLX3IMLC46EAO67DPBH5KEG2FQTPBLGU62HIRWA3UQ7XQC AVCMVFA3MKCXHO6H44UK5KJNIHTGQV7UA7GYXM26VI6TXXU5ZN6QC TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC IMC2HA2YWCU7SLGGVQQVUEUIST4ILSOEAUYXNZAW2PJZ475GXLDAC F2X5SIIXWXXEL2FVMYDC4GL2ODZ4O7RA46U66VGJ5K2EZHHAQGUAC WT66JDIRTLLP37SHTV4GI3V64JFJ4D25LNRLGCHFG6CLEFKJ3QGQC YH23OR26YDA6C5K74QRWHROMTPGRNZHTHE4HJGPC3JVNAJ62CHGAC NS3KXJXQSN33UQSOBDK3WXXKA3KY5YOUJL67NBZKGQAJYDYZ2COQC JYCMD6WMNHXA53K4LLKVTNX6PLRLU25F6J2TYMPQXM2ENAE66NIAC 5B5DP5S6A6LQMKZYVLQAEMHQZWFWYDHPCKQGRNSCNNYIBQYZ6BIQC LDBTCT5WIPLJPZWXS2RUQ26QKISCUUTLO77M464WOE6VSYSNPKYAC SEUJUTDRU4GF3RALVPYSMVWXQDUMU2MZGKMM5GVVAQG4ARE5WFKQC SOW47HUSYI6HG7UJON3W2F6PQBGD5J2OQLGWTZCPP6QQG6NEGAJAC YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC VM7ZJXYXF3XTGYLWW5RXTEFGG46FOOWWEATC6S565BGHBGM3CXUAC SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC OONYLF4DAPLIYLBNNRW74IVT5BBTWI4XHQBXSNSPVRX3FTKJBTRAC UET576SVCGS2TXEDRTO7BUTOTLJ77MYHIVZJCDWGH2BAXYMKG6DAC 2NFQGSR74TVX4ULEDLQVIXZF6AOXSYQTLFAR3RFZL4Q5ZLUZEPDAC BZIUKX6D2YDH4PCSNOAB3VA6CVE73IJEMQWDB6RKDRGL5AKCDOFAC HQ5FYPDFIQNNDMKDSGWAAXYIVIRK42B4OBA2LESP2OA5SPKSTLVQC 3PBG6FJ6WGSR4UM3I7UQUYYCSYU3UBCKCIKYKUEEANIK72TUL4XAC SOCJXX6MMOXLBEWBID4QN5FW2YNYULNNN7K3IRL7RSWK5EUNAZLQC QLIDDODO7Q7S2UTKVR2SMRMEAXHRPA5C7SU267EQGV6VJ7UXW5JQC Z6Q7JVMFQ32SC7FRGOB7CE7JS2HEOPAO3B2VLU3YR3UCUDZFIPFQC R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC 6RJVKSL7RVZIZIZIC4TWIYJQ24RUSB346ODS3NYGDHUIRTC4Z5FQC QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC CGYTZT5QWIEGYKUOLOK7MFXSLJKLYRZONER5ZCDZO5XYWSLG475QC J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC 47NSOFQMBZCDIBHEAZSENFUGDSQCX3GJHFBUZ65ARDKCYIZ435LAC IIN7AVA6JYRBXH6ZYRR7BY7TV6PW7ANAQ2A3PD55FKBKKQFEEF2AC PKXXBHS3LWLPZI2QVRX22MSQ4R2626IXRSNHFFYHXYTLJJQU54LQC XE5FBYASPYLMBNHWKL5MRN7TQGIWR4O6PF72I7WXRTUJ7HS2O2LAC if (you.species == SP_VAMPIRE){mouse_control mc(MOUSE_MODE_MORE);const int keyin = getch();if (keyin == '!' || keyin == CK_MOUSE_CMD)display_mutations();}
mouse_control mc(MOUSE_MODE_MORE);const int keyin = getch();if (keyin == '!' || keyin == CK_MOUSE_CMD)display_mutations();
}static bool _mons_is_fiery(int mc){return (mc == MONS_FIRE_VORTEX|| mc == MONS_FIRE_ELEMENTAL|| mc == MONS_FLAMING_CORPSE|| mc == MONS_EFREET|| mc == MONS_AZRAEL|| mc == MONS_LAVA_WORM|| mc == MONS_LAVA_FISH|| mc == MONS_LAVA_SNAKE|| mc == MONS_SALAMANDER|| mc == MONS_MOLTEN_GARGOYLE|| mc == MONS_ORB_OF_FIRE);
menu_action(ACT_EXAMINE), title(NULL), flags(_flags), tag(tagname),first_entry(0), y_offset(0), pagesize(0), max_pagesize(0),
menu_action(ACT_EXAMINE), title(NULL), title2(NULL), flags(_flags),tag(tagname), first_entry(0), y_offset(0), pagesize(0), max_pagesize(0),
keymap ? (keymc == KC_DEFAULT ? "default " :keymc == KC_LEVELMAP ? "level-map " :keymc == KC_TARGETING ? "targeting " :keymc == KC_CONFIRM ? "confirm " :keymc == KC_MENU ? "menu " :"buggy") : "",
keymap ? (keymc == KMC_DEFAULT ? "default " :keymc == KMC_LEVELMAP ? "level-map " :keymc == KMC_TARGETING ? "targeting " :keymc == KMC_CONFIRM ? "confirm " :keymc == KMC_MENU ? "menu ": "buggy") : "",
keymc = KeymapContext( KC_DEFAULT + s[1] - '0' );if (keymc >= KC_DEFAULT && keymc < KC_CONTEXT_COUNT)
keymc = KeymapContext( KMC_DEFAULT + s[1] - '0' );if (keymc >= KMC_DEFAULT && keymc < KMC_CONTEXT_COUNT)
// At level == 27 there's a 20.3% chance of a level 3 miscast.int level1_chance = level;int level2_chance = std::max( 0, level - 7);int level3_chance = std::max( 0, level - 15);
// At level == 27 there's a 13.9% chance of a level 3 miscast.int level0_chance = level;int level1_chance = std::max( 0, level - 7);int level2_chance = std::max( 0, level - 12);int level3_chance = std::max( 0, level - 17);
msg = "You hear a loud twang.";
{std::string noise = getSpeakString("weapon_noise");if (!noise.empty())msg = "You hear " + noise;}else{msg = getSpeakString("weapon_noises");std::string wepname = wep_name(DESC_CAP_YOUR);if (!msg.empty()){msg = replace_all(msg, "@Your_weapon@", wepname);msg = replace_all(msg, "@The_weapon@", wepname);}}
return (random_choose_weighted(15, SPWPN_NORMAL,10, SPWPN_FLAMING,10, SPWPN_FREEZING,10, SPWPN_ELECTROCUTION,10, SPWPN_VENOM,10, SPWPN_CHAOS,5, SPWPN_VORPAL,5, SPWPN_DRAINING,5, SPWPN_VAMPIRICISM,2, SPWPN_CONFUSE,2, SPWPN_DISTORTION,0));
int brand = SPWPN_NORMAL;// Assuming the chaos to be mildly intelligent, try to avoid brands// that clash with the most basic resists of the defender,// i.e. its holiness.while (true){brand = (random_choose_weighted(5, SPWPN_VORPAL,10, SPWPN_FLAMING,10, SPWPN_FREEZING,10, SPWPN_ELECTROCUTION,10, SPWPN_VENOM,10, SPWPN_CHAOS,5, SPWPN_DRAINING,5, SPWPN_VAMPIRICISM,5, SPWPN_HOLY_WRATH,2, SPWPN_CONFUSE,2, SPWPN_DISTORTION,0));if (one_chance_in(3))break;bool susceptible = true;switch (brand){case SPWPN_FLAMING:if (defender->is_fiery())susceptible = false;break;case SPWPN_FREEZING:if (defender->is_icy())susceptible = false;break;case SPWPN_ELECTROCUTION:if (defender->airborne())susceptible = false;break;case SPWPN_VENOM:if (defender->holiness() == MH_UNDEAD)susceptible = false;break;case SPWPN_DRAINING:case SPWPN_VAMPIRICISM:if (defender->holiness() != MH_NATURAL)susceptible = false;break;case SPWPN_HOLY_WRATH:if (defender->holiness() != MH_UNDEAD&& defender->holiness() != MH_DEMONIC){susceptible = false;}break;case SPWPN_CONFUSE:if (defender->holiness() != MH_NONLIVING&& defender->holiness() != MH_PLANT){susceptible = false;}break;default:break;}if (susceptible)break;}return (brand);
enum KeymapContext {KC_DEFAULT, // For no-arg getchm(), must be zero.KC_LEVELMAP, // When in the 'X' level mapKC_TARGETING, // Only during 'x' and other targeting modesKC_CONFIRM, // When being asked y/n/q questionsKC_MENU, // For menus
enum KeymapContext{KMC_DEFAULT, // For no-arg getchm(), must be zero.KMC_LEVELMAP, // When in the 'X' level mapKMC_TARGETING, // Only during 'x' and other targeting modesKMC_CONFIRM, // When being asked y/n/q questionsKMC_MENU, // For menus