classes' associated habitats into the monsterentry struct.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3182 c06c8d41-db1a-0410-9941-cceddc491573
CG4TL4AKSN4J7CMATZFJ5N7PSDCQXLS3QYX7PZ3K67KMMBT675OQC 7AREIGBWRJPQI7N7UMSXYWGOI5D6OFUKX656PX3GOZVY3ALY75BAC 2H32CFFM2FNS63JJPNM2S6HMO543EX72GMPOU5GI6HTMQYPL6I3AC AS2IQQJNNCEQNXXKTGYHLB7RO3ZKCF4F7GK6FJH66BOOKDDRGNIQC KWKVXUJSWKBWPRXD6JVI6K4YHHHNRO525VHPPDQ52XCGQRUHVXQAC HIRKGUMNJPWKSVTR6TVBPD3MWNA63CEHCLCIPWEMGDFHVB3NPLDQC LJLLVQR6KB3QE5CKBL7REN47FL54W557UHETOW7ACIR4P6RXIVLQC ISSEUTHG7EH3QTFLS23GXFIOQXCI5HJPJMK6GWNFMC6NDRD2H34QC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC ILOED4VB4I6VPAUTR75ZWX6MXDYXB5DO2EDK2UH67O3HNKWV23RQC KRN7O2VJTLPT5KLUEMNGNYDSVHB3LYWONSREU2GOUXRMM3J6REYQC J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC LJK4ZQATLSB4MKZG3ARZX5V6RFGTN3NLCN6GTCUGJQKU26SOXMUAC 4JJ6TWOZOPXBIOEQA2CXASS2TO5AMNXNY7LG67NXIVLDVJTJW6KAC OONYLF4DAPLIYLBNNRW74IVT5BBTWI4XHQBXSNSPVRX3FTKJBTRAC X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC PM65H4V4GNPVIJFUQW57DC3VDB7TRUUNXKVZONQKEFZSK3AXX5GQC WUWTYSQ2Z7HI637WNO2J55LW6WLPBDF2ILH622T47ICW3AN7OWMQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC 3V52MSSK7QX7FWLLUW63DTWCBAJEK674EFZLKP45FLZ5KZKVARHAC F7Q5PX44SLPANIZXCY67TG2W5JTRVJMHGQW54VJLGB4XRH7R6JBQC 52W74WXL5XIH6YFJBQRVAO47YHCS3CPMUUZS4Q3AZ3HAPDWMT54AC SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC PFEJ4LMDNEKLMGRCMWQ7EIRVU4JMYGICI4G7X4WVWOROVXQCBZ7QC OSGS3PH2L5CBTDVZCZS6OCFQNA4A7RMEXBYJQB7DDZBYYJW7QSSAC K2MLPJIAXXZRWEWZCNSGICCBNIU2WAAPT7SPIMOH7FLLTOB4QFRAC SJDOBXECX7F3ZPPVR7FPURE53D47PP2TFIF4SB6XPS456PZV3DQAC R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC XFIU6NZ2FVPF7EPMMXLC5O4P7EKGVBC6K2IA3WSVJ57JONFIPKZQC IIK2W5J4NQWD3BVXPJDUCTONSF2ENXPSZBWMZCBC25RCTNMKSK6AC IPQ63XIUPHFMCQOZZAVSGCJOZFDRDWZTUUJSAUMARNDUFLBEMYIAC 2TTHWHQ3ZDD3DLB3KRULTBMS3ZREJG472IBVZXIGTP7MBZWAU52QC JDM27QE4HR52AYFSQE763BFF57ANOTF5MXKMO377PP5EXMN7SAOAC YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC RSIUBEQUGNU4LO6KH4PKVROWQS33DAKSY4XFVGN7T3CEKSXABCSAC * called from: acr - bang - beam - direct - dungeon - fight - files -* monplace - mstuff2 - spells3 - view* *********************************************************************** */dungeon_feature_type monster_habitat(int which_class);/* ***********************************************************************
if (monster_can_submerge(monster->type, grd[monster->x][monster->y])&& ( !player_beheld_by(monster) // no submerging if player entranced&& (one_chance_in(5)|| ((grid_distance( monster->x, monster->y,you.x_pos, you.y_pos ) > 1// FIXME This is better expressed as a// function such as// monster_has_ranged_attack:&& monster->type != MONS_ELECTRICAL_EEL&& monster->type != MONS_LAVA_SNAKE&& (monster->type != MONS_MERMAID|| you.species == SP_MERFOLK)// Don't submerge if we just unsubmerged for// the sake of shouting.&& monster->seen_context != "bursts forth shouting"&& !one_chance_in(20)) ))|| monster->hit_points <= monster->max_hit_points / 2)|| env.cgrid[monster->x][monster->y] != EMPTY_CLOUD){monster->add_ench(ENCH_SUBMERGED);update_beholders(monster);return;}
case MONS_LAVA_WORM:case MONS_LAVA_FISH:case MONS_LAVA_SNAKE:case MONS_SALAMANDER:case MONS_MERFOLK:case MONS_MERMAID:case MONS_BIG_FISH:case MONS_GIANT_GOLDFISH:case MONS_ELECTRICAL_EEL:case MONS_JELLYFISH:case MONS_WATER_ELEMENTAL:case MONS_SWAMP_WORM:if (monster_can_submerge(monster->type, grd[monster->x][monster->y])&& ( !player_beheld_by(monster) // no submerging if player entranced&& (one_chance_in(5)|| ((grid_distance( monster->x, monster->y,you.x_pos, you.y_pos ) > 1// FIXME This is better expressed as a// function such as// monster_has_ranged_attack:&& monster->type != MONS_ELECTRICAL_EEL&& monster->type != MONS_LAVA_SNAKE&& (monster->type != MONS_MERMAID|| you.species == SP_MERFOLK)// Don't submerge if we just unsubmerged for// the sake of shouting.&& monster->seen_context != "bursts forth shouting"&& !one_chance_in(20)) ))|| monster->hit_points <= monster->max_hit_points / 2)|| env.cgrid[monster->x][monster->y] != EMPTY_CLOUD){monster->add_ench(ENCH_SUBMERGED);update_beholders(monster);}break;
dungeon_feature_type monster_habitat(int which_class){switch (which_class){case MONS_MERFOLK:case MONS_MERMAID:case MONS_BIG_FISH:case MONS_GIANT_GOLDFISH:case MONS_ELECTRICAL_EEL:case MONS_JELLYFISH:case MONS_SWAMP_WORM:case MONS_WATER_ELEMENTAL:return (DNGN_DEEP_WATER); // no shallow water (only) monsters? {dlb}// must remain DEEP_WATER for now, else breaks code {dlb}case MONS_LAVA_WORM:case MONS_LAVA_FISH:case MONS_LAVA_SNAKE:case MONS_SALAMANDER:return (DNGN_LAVA);
// Rock worms are native to walls but are happy on the floor// as well.|| (monster_class == MONS_ROCK_WORM
// Rock wall critters are native to walls but are happy on// the floor as well.|| (preferred_habitat == DNGN_ROCK_WALL
case MONS_MERFOLK:case MONS_MERMAID:case MONS_BIG_FISH:case MONS_GIANT_GOLDFISH:case MONS_ELECTRICAL_EEL:case MONS_JELLYFISH:case MONS_WATER_ELEMENTAL:case MONS_SWAMP_WORM:return (grid == DNGN_DEEP_WATER || grid == DNGN_BLUE_FOUNTAIN);
return true;}
dungeon_feature_type spcw = ((mons_class == RANDOM_MONSTER)? DNGN_FLOOR: monster_habitat( mons_class ));
dungeon_feature_type spcw = ((mons_class == RANDOM_MONSTER) ? DNGN_FLOOR: habitat2grid( mons_habitat(mons_class) ));
const dungeon_feature_type habitat = monster_habitat(mid);if (habitat != DNGN_FLOOR)grd[vx][vy] = habitat;
const habitat_type habitat = mons_habitat(mid);if (habitat != HT_NORMAL)grd[vx][vy] = habitat2grid(habitat);
"hab=%s beh=%s(%d) foe=%s(%d) mem=%d target=(%d,%d)",((hab == DNGN_DEEP_WATER) ? "water" :(hab == DNGN_LAVA) ? "lava": "floor"),
"hab=%s beh=%s(%d) foe=%s(%d) mem=%d target=(%d,%d)",((hab == HT_DEEP_WATER) ? "deep water" :(hab == HT_SHALLOW_WATER) ? "shallow water" :(hab == HT_LAVA) ? "lava" :(hab == HT_ROCK_WALL) ? "rock wall" :(hab == HT_FLOOR) ? "floor" :: "unknown"),