Changed labyrinth handling for minotaurs:
Instead of being magic mappable, labyrinths are plain mappable. Yes, that makes everything much easier, but allowing magic mapping and yet you still have to trudge along by hand (rather than use autotravel) is worse. To make up for it, we might want to boost the monster minotaur (trying to defend its home against a rival?) Or we could just remove the difference altogether…
Cleaned up debug.cc a bit.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5401 c06c8d41-db1a-0410-9941-cceddc491573
SQDS2YBPOYDDDCW3GGARBZ2HQIUHCQKL7SSHKFQWDENOL5YNNVNQC RQXYFQIYSP2M2Q4RHM2ZGGBWFKKOBZP2J3EAYEFHMPPBSXOBFYJQC NG53L53MSFQZAIVKHG54IEMXNJ33AYVPF2OZM4MMJFDKEJCGPBSAC R2DQBWKIW7YUJB5SOQ7J274JIYRVX4H3ISFRPAL5RG2RVVP4G2KAC SSQP7MS6LZYY73QEF66EYNNQJJSB6TVLLWXLWL7JJAYBLXCEY2XAC XEFLKDEZCVSPO4SMGNXRNQWAJ6KKWABWFX2PULITTDJUIKYPVPSAC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC LDBTCT5WIPLJPZWXS2RUQ26QKISCUUTLO77M464WOE6VSYSNPKYAC IIN7AVA6JYRBXH6ZYRR7BY7TV6PW7ANAQ2A3PD55FKBKKQFEEF2AC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC GPEJOT73KMACP33IPAKFR5ROGHCOIP22VXZMQNYTGLEA2OSZUM2AC GLHJZ2VIFB3BMTNJ2P6E6OO26QGKSURY7X4ACAGWPSCUSUFNZRGQC ISSEUTHG7EH3QTFLS23GXFIOQXCI5HJPJMK6GWNFMC6NDRD2H34QC F7Q5PX44SLPANIZXCY67TG2W5JTRVJMHGQW54VJLGB4XRH7R6JBQC 5TWOIGLM6G4QEASFEKKTK7UBPTL4PXASVEOL5777FPT6RHSUTBBQC CG4TL4AKSN4J7CMATZFJ5N7PSDCQXLS3QYX7PZ3K67KMMBT675OQC RBAGQ2PB7V5YAM5KSHSZR2E3MLKDSRVM5XYGI2TIXP5QMVBOQHDQC AS2IQQJNNCEQNXXKTGYHLB7RO3ZKCF4F7GK6FJH66BOOKDDRGNIQC LJK4ZQATLSB4MKZG3ARZX5V6RFGTN3NLCN6GTCUGJQKU26SOXMUAC IE3INS4WUXZOBVXB5VWRBYPVPXADD2U2W5H3TBTOYNWJ3EGRSGQQC 2DORUQ4B574MDOOMRYWGU5I72AKHMCSTZ6B3VSHQBUQOZYHRC7FAC WQLOHSNCA3VOMDJF6IINJYKSYVYZEBPJJWBB33QSNE4RP5HEXPMAC JD3FMKAAAUQZSNPGFLVX7F5H5SWGUSYOFZU4X5W4XYNV6HUKDBKAC RX6575DZOHRUXQUZH34YZGPZJF4STUPLBQDIVTINA2L6LVCKRIGQC 3C2VE43SHCSBY4LTRTFYFLIPRWFUN6DXU6D34QVWDQTSNRBUFG7AC 3UKFCWWS5BLFQWZRB5FUA46CE2XGX5VRCEWC3K3XH5RCGQK64N2AC ED62QWGKBPORWVKDFOQRKJXEIWZVNGR3O4KWQBDSRNPT36AYOQYAC ZGUJWUFJ4NFFJ6PGXLFGQWCWBCZHPWGWI44NJHJEVPRG5L36PADQC EH4VJW3I5Y4V6DT3YMLNDA3NW2DEAV4LRE4T5IEXAVB4WB3JJMGAC P5TRGRH7XMQSPCZKM5IEEO34TY6WMLGHHX7BU6Y453JFRXLUR2VQC 45EMD3KLQPMERNMIKU5G76H6556XOMIW352TSBP7VLWJX2YYGS7AC ILN2K6ASDZSMEHOPJ22IZLZJUO6DDGZTKAKXM3YXG6JZZHJNLX4AC ODNAIEJW732NG7USKQKCIP4R4DAEYXXJQX6LY7TIN32NKE75454QC M5ZDZJBTOJ7SWQPZZQPC24JYZKP26MWSRDHXBWQE2MPPL6WCXOIQC JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC PAYI4UTJCR3XZSFOX5L35EURHRXQ6STO4Z7AQ3525QPNL3QYLNBAC 7YUGK5Q64KG5O7GJGTUBRRLHAHBCJ5YOE23YUPT6UBKUSB67CYAQC 6O5667Y65C5GTP4V3NBKWUN22IRGCAXEELJ6MCANMYPBOKDUO75QC IPYQUTCWLI46CL62UXHR6PULPO4JPPXPFAJCGZULBQM67SHGPXTAC J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC BW3XFNOS6LDAQLHOZ6RXARCMKCY5JVLVDSXDSSAX4DSYM3FANQBAC ZHFUXYUHS6V47WK2NRH7OU6RX77NRKTXOZC3MND2GG7PEEWSGFTAC J5AAA4LUTW6PLS2DBKGTXPSW2SGOBMICEOA3VDHRSKVLU36EGQMAC EGV2HM7SD7UQSWJGLR65NQJTUBAJ7WHLM67FMH4UFP7JRSFKREPAC T7CUIVICB74342RA32BR37T36FOX4RBSQIB5PNOHTGTGUYGDKSTQC YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC DHXIQXK5VTL5JDDEERAVLZK4KBQLXFTBN5TQ6MH3PRBLG5ULOS4AC CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC KQNIGKATHT4YSPJFPJGIGPD6VNR5B753SE2JN2LCXZZJNHCGY3DQC YBXZWBUWXXLLYKP5IHXU46AHJ4YO55NM5QE34I3DFB25NLPQXZPAC 3FBKOX4Y5QYPMBOCSAMHNZXCY7Z75YDQDL4EJZHZIGDXL7RMZ7TAC 62RTHBY44JDI7W4EYD4UD3W2QL4CZ3SJ6DY7LX6QBCF3JWFEEIOAC FUEEIUKGHHFPIRZCN3N753GONWAZTWQ2ZWR53IBJAAZ6FZUNGOMAC 5V47S4NNTHWTSAHV3YLO2VGH7JTUIYJ3GBPDN5ZM4UQALT2ZEXDQC HJV7BZBM752K5I47ILBQJJXSPODBBLGKDX5DWJTRDXPJ3V7AEVWAC ENI6P5WUO7DS4Y7EUDCYB4PSNT7CXH2L5JIB5BLZHNMWN4QDXMWQC RPGERJQMO2J4ZDYTRHJCLZMXDVSTUOOJURSZ7FPWOUFHTXIV5VIAC WLX2RQMMOMP2PYPAGJRM4VFD2WTLJTOAZZPPY3MV76FU2EGEJ54QC 77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC // Can monsters of class monster_class live happily on actual_grid? Use flies// == true to pretend the monster can fly.
// Can monsters of class monster_class live happily on actual_grid?// Use flies == true to pretend the monster can fly.
return (grid_compatible(preferred_habitat, actual_grid)// [dshaligram] Flying creatures are all DNGN_FLOOR, so we// only have to check for the additional valid grids of deep// water and lava.|| (mons_airborne(monster_class, flies, paralysed)&& (actual_grid == DNGN_LAVA|| actual_grid == DNGN_DEEP_WATER))
if (grid_compatible(preferred_habitat, actual_grid))return (true);// [dshaligram] Flying creatures are all DNGN_FLOOR, so we// only have to check for the additional valid grids of deep// water and lava.if (mons_airborne(monster_class, flies, paralysed)&& (actual_grid == DNGN_LAVA || actual_grid == DNGN_DEEP_WATER)){return (true);}// Amphibious critters are happy in water or on land.if (mons_amphibious(monster_class)&& (preferred_habitat == DNGN_FLOOR&& grid_compatible(DNGN_DEEP_WATER, actual_grid)|| preferred_habitat == DNGN_DEEP_WATER&& grid_compatible(DNGN_FLOOR, actual_grid))){return (true);}
// Amphibious critters are happy in water or on land.|| (mons_amphibious(monster_class)&& ((preferred_habitat == DNGN_FLOOR&& grid_compatible(DNGN_DEEP_WATER, actual_grid))|| (preferred_habitat == DNGN_DEEP_WATER&& grid_compatible(DNGN_FLOOR, actual_grid))))
// Rock wall critters are native to walls but are happy on// the floor as well.if (preferred_habitat == DNGN_ROCK_WALL&& grid_compatible(DNGN_FLOOR, actual_grid)){return (true);}
// Rock wall critters are native to walls but are happy on// the floor as well.|| (preferred_habitat == DNGN_ROCK_WALL&& grid_compatible(DNGN_FLOOR, actual_grid)));
return (false);
elseif (your_spells( static_cast<spell_type>(spell), 0, false )== SPRET_ABORT){crawl_state.cancel_cmd_repeat();}
else if (your_spells( static_cast<spell_type>(spell), 0, false )== SPRET_ABORT){crawl_state.cancel_cmd_repeat();}
int type = mspec.mid;if (mons_class_is_zombified(mspec.mid))type = mspec.monbase;
mpr("Such a monster couldn't be found.", MSGCH_DIAGNOSTICS);return;}int x = you.x_pos;int y = you.y_pos;int type = mspec.mid;if (mons_class_is_zombified(mspec.mid))type = mspec.monbase;
coord_def place = find_newmons_square(type, coord_def(x, y));if (in_bounds(place)){x = place.x;y = place.y;}
coord_def place = find_newmons_square(type, coord_def(x, y));if (in_bounds(place)){x = place.x;y = place.y;}else{// Reset to your position.x = you.x_pos;y = you.y_pos;
static void fsim_item(FILE *out,bool melee,const item_def *weap,const char *wskill,unsigned long damage,long iterations, long hits,int maxdam, unsigned long time)
static void _fsim_item(FILE *out,bool melee,const item_def *weap,const char *wskill,unsigned long damage,long iterations, long hits,int maxdam, unsigned long time)
static bool fsim_ranged_combat(FILE *out, int wskill, int mi,const item_def *item, int missile_slot)
static bool _fsim_ranged_combat(FILE *out, int wskill, int mi,const item_def *item, int missile_slot)
fsim_item(out, false, item, make_stringf("%2d", wskill).c_str(),cumulative_damage, iter_limit, hits, maxdam, time_taken);
_fsim_item(out, false, item, make_stringf("%2d", wskill).c_str(),cumulative_damage, iter_limit, hits, maxdam, time_taken);
fsim_item(out, true, item, make_stringf("%2d", wskill).c_str(),cumulative_damage, iter_limit, hits, maxdam, time_taken);
_fsim_item(out, true, item, make_stringf("%2d", wskill).c_str(),cumulative_damage, iter_limit, hits, maxdam, time_taken);
return iweap && iweap->base_type == OBJ_WEAPONS&& is_range_weapon(*iweap)?skill_name( range_skill(*iweap) ) :iweap? skill_name( fsim_melee_skill(iweap) ) :skill_name( SK_UNARMED_COMBAT );
if (iweap && iweap->base_type == OBJ_WEAPONS){if (is_range_weapon(*iweap))return skill_name(range_skill(*iweap));return skill_name(_fsim_melee_skill(iweap));}return skill_name(SK_UNARMED_COMBAT);
missile_slot == -1? you.m_quiver->get_fire_item() :missile_slot;
(missile_slot == -1 ? you.m_quiver->get_fire_item(): missile_slot);
fprintf(o, "Weapon : %s\n", fsim_weapon(ms).c_str());fprintf(o, "Skill : %s\n", fsim_wskill(ms).c_str());
fprintf(o, "Weapon : %s\n", _fsim_weapon(ms).c_str());fprintf(o, "Skill : %s\n", _fsim_wskill(ms).c_str());