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);
else
if (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());