git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8865 c06c8d41-db1a-0410-9941-cceddc491573
5US6HAZNUVFLJCSX3YLML7U4ZR7HHXU3VM7U6JJEEULNCIPD7B6QC BU3QQQKP33YOLVGTJBMCWJRQTEZHNBP7NTFITSZPCUXEZACVVPQQC MPKLPZVOJEXF2ZBUWMKSLK4MTTB74K2XT7VJFB6O6WZ7SNDCF7FAC F2C63N6XPW62MIAKMZVW7XT5IKN2G6DBOKID5J6LXMQLM2ACAXQAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC MG6LLF3XYCOEBQRX7TJ4MUTKM3IROYWUMZGCMYVW4TGDG36CJMJQC ASH5CK6CPBKMLGGIRJ5GKTWMS5W3OBVHTL66RTYZIPFM6KFBYA3QC SWE3F3BLKHYMJEJLXNFH3MR2E6VDEYXJ6DL7QLPP47BJEKEUCAMAC PFEJ4LMDNEKLMGRCMWQ7EIRVU4JMYGICI4G7X4WVWOROVXQCBZ7QC PDOFPXD2X6VI23AHKCGQ5RVDBG74CNP2E3YOHKXLOARHHBXEK3HQC JE3SMK7MKFSSNBOPA5RITTF5WOQSSAGUPUO3C2QHFOHA77IPAD3AC AYAQKTO6HOZJ44NDH5UIP6WFNB54Z5EZ4UMUISIQ67ZOIDB6OIQAC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC CYYY4OASJTLMNQPNC2H57XAHBRT7JYO6MDY3J5DX5PMWRYT7RRUQC PL6I2CMSTHY5ZHWVMIQE5YTM5S5VPKBNZM6QJVHZSSKOJGIJ5W4AC 77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC MFONX2CQ4V7HA5NSD6P5NDDBXYDSKIOCYUKRZXJ4ZER2OKJWT2HQC R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC 45EMD3KLQPMERNMIKU5G76H6556XOMIW352TSBP7VLWJX2YYGS7AC SIDH2P7NBIG5KEOE27XHD3ZT2NQ2OJZFN6VZXWNWYFFY5YVXSSVQC HQTS3VQ6PNUZKHNVEWMML7JNAAAKL4DSW3KFSRCCSLGYTDHZFCCAC U3KGUJJQWQORJIIFH3ADVNIEEX5HOX6KEOXO7DJSL7L3Z6GG3PAQC UZ6N6HOUPGVSPC5NQROEEDWMEGJA5XUWUY2AKH5QG65AZ25PVXDAC QXD3HX6QQ37PW6HVKIIKGFLO2ACROLUGKK66KFX7ED6SO4FDXB2AC Z6XF4AIERIW4U4AR3HU2ILYFZ54IK4K4ORQ6JKCEWRO5LZODWDDAC JBZ7NU4BB5PGQWCOSZHD5OQUHQIVOD4XGJLSJQ7BUGQEGPRTVGZQC NK2TBKWOQBD2ZRGAO4Z3HMZPIN7UX3HNUS2YHEIJUUINUTRMPODQC ZP2KE7A2LE7Z2S7AC45WE4CXDSEVDTWIMV2EM4IBUKXYJIDU6R7QC UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC ZLQAAP55CJ77XIJN3DZVPT4GTTVLIBFJLIJJKI6L5UBSHX7VUK6AC 3DQXSE4YGFBBDUWK4YEOFWW4UPWILWELFSLP37SL6BERGAZJC5YAC B62ICMDTN5V7R7RBL4JALFVKEMVOOVLRSJASRNYS6CGFWBEEF5JQC NQXYTPHC5ZBLJDIC5OVAUIDYYOXLPSGWUVD464ODH4KBHYGRDPPAC WFED7ME7LXUZCZY3TWX7PCPW4EAA55W626CM2OOYVJTLI2BWFTVAC DK362IHKSDADMUPD35NOTKM4WESQM37KG2PNOJRV2FGELDWULYPQC 475LL4U4ND6PTNV4XKC7WQAOJC7RF2VCCVX3DRILP2PKIBFYWE6QC O6ZMFKDI3XO2SWPNEYHIPYFDWJR4TVDP5BAATK6LVCVETQID6E7AC GBUB77EAYHOFY6GQ5IY3ZSBC7FSQFZZKYNBD5QMCQFIKFLYLWHOQC 67WH6I2XIMRRL26UM4FJJJZEMJIDPW5Q77FFNZGKWGTWS7GTCJ6QC I2B33Z7NZGC33AMDSSK446AZZYWKPHWLAGULVHKKZU4MVB4BNJOAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC RIGGVFYNCRFDUUCMIAN7SDEOUL4VMMZI6OYXZW72BVNI4WXJQXWQC GMYJ4XEEKZASQWMXQZUME5VYCDBRODO7UJJUEZSVZBMSFVBFLK2AC // last updated 29may2000 {dlb}/* ************************************************************************ called from: bang - beam - direct - effects - fight - monstuff -* mstuff2 - spells1 - spells2* *********************************************************************** */
// last updated 12may2000 {dlb}/* ************************************************************************ called from: acr - effects - it_use2 - it_use3 - item_use - spell -* spells - spells3 - spells4* *********************************************************************** */
const int object = env.show(ep);if (object && Options.tutorial_left){if (grid_is_escape_hatch(grd(gc))){learned_something_new(TUT_SEEN_ESCAPE_HATCH, gc);}else if (grid_is_branch_stairs(grd(gc)))learned_something_new(TUT_SEEN_BRANCH, gc);else if (is_feature('>', gc)){learned_something_new(TUT_SEEN_STAIRS, gc);}else if (is_feature('_', gc))learned_something_new(TUT_SEEN_ALTAR, gc);else if (grd(gc) == DNGN_CLOSED_DOOR)learned_something_new(TUT_SEEN_DOOR, gc);else if (grd(gc) == DNGN_ENTER_SHOP)learned_something_new(TUT_SEEN_SHOP, gc);if (igrd(gc) != NON_ITEM&& Options.feature_item_brand != CHATTR_NORMAL&& (is_feature('>', gc) || is_feature('<', gc))){learned_something_new(TUT_STAIR_BRAND, gc);}}
tutorial_observe_cell(gc);
void tutorial_observe_cell(const coord_def& gc){if (grid_is_escape_hatch(grd(gc)))learned_something_new(TUT_SEEN_ESCAPE_HATCH, gc);else if (grid_is_branch_stairs(grd(gc)))learned_something_new(TUT_SEEN_BRANCH, gc);else if (is_feature('>', gc))learned_something_new(TUT_SEEN_STAIRS, gc);else if (is_feature('_', gc))learned_something_new(TUT_SEEN_ALTAR, gc);else if (grd(gc) == DNGN_CLOSED_DOOR)learned_something_new(TUT_SEEN_DOOR, gc);else if (grd(gc) == DNGN_ENTER_SHOP)learned_something_new(TUT_SEEN_SHOP, gc);if (igrd(gc) != NON_ITEM&& Options.feature_item_brand != CHATTR_NORMAL&& (is_feature('>', gc) || is_feature('<', gc))){learned_something_new(TUT_STAIR_BRAND, gc);}}
env.cloud[ cloud ].type = type;env.cloud[ cloud ].decay = decay;env.cloud[ cloud ].pos = p;env.cloud[ cloud ].whose = whose;env.cloud[ cloud ].killer = killer;env.cloud[ cloud ].spread_rate = spread_rate;env.cgrid(p) = cloud;
cloud_struct& c = env.cloud[cloud];c.type = type;c.decay = decay;c.pos = p;c.whose = whose;c.killer = killer;c.spread_rate = spread_rate;env.cgrid(p) = cloud;
// water -> flaming clouds:// lava -> freezing clouds:if (env.cloud[cc].type == CLOUD_FIRE&& grd(env.cloud[cc].pos) == DNGN_DEEP_WATER){
// Fire clouds dissipate faster over water,// cold clouds dissipate faster over lava.if (cloud.type == CLOUD_FIRE && grd(cloud.pos) == DNGN_DEEP_WATER)
}else if (env.cloud[cc].type == CLOUD_COLD&& grd(env.cloud[cc].pos) == DNGN_LAVA){
else if (cloud.type == CLOUD_COLD && grd(cloud.pos) == DNGN_LAVA)
env.cloud[ cloud ].type = CLOUD_NONE;env.cloud[ cloud ].decay = 0;env.cloud[ cloud ].pos.reset();env.cloud[ cloud ].whose = KC_OTHER;env.cloud[ cloud ].killer = KILL_NONE;env.cloud[ cloud ].spread_rate = 0;env.cgrid(cloud_pos) = EMPTY_CLOUD;
env.cgrid(c.pos) = EMPTY_CLOUD;c.pos.reset();
if (env.cloud[ target_cgrid ].type >= CLOUD_GREY_SMOKE&& env.cloud[ target_cgrid ].type <= CLOUD_STEAM|| env.cloud[ target_cgrid ].type == CLOUD_STINK|| env.cloud[ target_cgrid ].type == CLOUD_BLACK_SMOKE|| env.cloud[ target_cgrid ].type == CLOUD_MIST|| env.cloud[ target_cgrid ].decay <= 20) //soon gone
// There's already a cloud here. See if we can overwrite it.cloud_struct& old_cloud = env.cloud[target_cgrid];if (old_cloud.type >= CLOUD_GREY_SMOKE && old_cloud.type <= CLOUD_STEAM|| old_cloud.type == CLOUD_STINK|| old_cloud.type == CLOUD_BLACK_SMOKE|| old_cloud.type == CLOUD_MIST|| old_cloud.decay <= 20) // soon gone
if (env.cloud[ ci ].type >= CLOUD_GREY_SMOKE&& env.cloud[ ci ].type <= CLOUD_STEAM|| env.cloud[ ci ].type == CLOUD_STINK|| env.cloud[ ci ].type == CLOUD_BLACK_SMOKE|| env.cloud[ ci ].type == CLOUD_MIST|| env.cloud[ ci ].decay <= 20) //soon gone
cloud_struct& cloud = env.cloud[ci];if (cloud.type >= CLOUD_GREY_SMOKE && cloud.type <= CLOUD_STEAM|| cloud.type == CLOUD_STINK|| cloud.type == CLOUD_BLACK_SMOKE|| cloud.type == CLOUD_MIST|| cloud.decay <= 20) // soon gone
}static void _regenerate_hp_and_mp(){// XXX: using an int tmp to fix the fact that hit_points_regeneration// is only an unsigned char and is thus likely to overflow. -- bwrint tmp = you.hit_points_regeneration;if (you.hp < you.hp_max && !you.disease && !you.duration[DUR_DEATHS_DOOR])tmp += player_regen();while (tmp >= 100){inc_hp(1, false);tmp -= 100;}ASSERT( tmp >= 0 && tmp < 100 );you.hit_points_regeneration = static_cast<unsigned char>(tmp);// XXX: Doing the same as the above, although overflow isn't an// issue with magic point regeneration, yet. -- bwrtmp = you.magic_points_regeneration;if (you.magic_points < you.max_magic_points)tmp += 7 + you.max_magic_points / 2;while (tmp >= 100){inc_mp(1, false);tmp -= 100;}ASSERT( tmp >= 0 && tmp < 100 );you.magic_points_regeneration = static_cast<unsigned char>(tmp);
if (you.hp < you.hp_max && !you.disease && !you.duration[DUR_DEATHS_DOOR])tmp += player_regen();while (tmp >= 100){inc_hp(1, false);tmp -= 100;}ASSERT( tmp >= 0 && tmp < 100 );you.hit_points_regeneration = static_cast< unsigned char >( tmp );// XXX: Doing the same as the above, although overflow isn't an// issue with magic point regeneration, yet. -- bwrtmp = static_cast< int >( you.magic_points_regeneration );if (you.magic_points < you.max_magic_points)tmp += 7 + you.max_magic_points / 2;while (tmp >= 100){inc_mp(1, false);tmp -= 100;}ASSERT( tmp >= 0 && tmp < 100 );you.magic_points_regeneration = static_cast< unsigned char >( tmp );