and allow wielding the appropriate items, e.g. arrows for
Sticks to Snakes etc.
Use the same rules for clicking on items in Tiles.
Also add yet another minimap colour option, this time for plants (really zero xp monsters in general) since I became tired of plant-rich vaults showing up in bright red colours.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4195 c06c8d41-db1a-0410-9941-cceddc491573
OXHOOJE4XEQKGI3JKURNSITG6CRQFAOFQ2EKKG6M5DCLN7LS4GUAC
OYYZVCE3QHBVJM6IEKK5HTJRG5YOVQNCBRMSJENTHOI2WPJLNCFAC
ECUYJLVGW6ADRLLF2WOMRG464VHOVDPP5OK5SAX2PHBUUC5FD4TQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
XI7U6RL6MFTH6SZQMLO4XFWGXGIFJBCRT6ZFCJFR2B2MGRSKDDCAC
YOZHWGKGPWZGHQYNMMBHNGDO2UEVIHPOR6UF3SEZPIYWVMBGWBOAC
CYAVI4PYWMMKTPYT5N2B3MI4OSHZFLPKOZFSLFJUXRYAACYXWW3AC
TM35IHKZZNBCMR3ERBS4EYHGUK5IVCPUT2JUITMT74AYAIUZSYFQC
YMC3RKF4Z7DOHZNGG7INC343SXCTWOPK7ISD42I3WA3AZZNVBGIAC
ND3T5LCZATC63EVQ6SLI7XXMSUL7XICJDNLH3UCYUDEFWTA3N5MQC
D5EMJEEIJSSULF236DUM26QHHNDLH7FXAOBHFDAYI65KCKTDTDYQC
HBHQQDULNVWISJ75XIL6R6BFEDYRNY22NX3ZTFVNP5ZWJGJSKOEQC
DGHHGJ6RCXFF3I53K2DI2FDB3UW2SUZAWWAQ7T6YW6374WOQASUQC
E3X5HVN5UN75OMTJA6JFQBNZ54P37NDZLZZF7EFBZZC45KR73YGAC
KZIHM6RUX43HHKXG6HGJHVEEYUPVVNBFIWMT4SKPD2GAH5ZMA3KAC
WSENSWVHRNAW2NZO3HQLRV3HJKULA4JQHKM65M2NINZSD6NRQAMAC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
YL3SLEMOESF2QDGYWH5ATHN46PODT57GQUKYHWDAV4HFC5AR6OHQC
FOQJ5S5WR7P7YMEWQ5Q4O7LTGLQ7LFVM4I2SG2Q7MIVC4PB2JHTQC
OWNMHNCGA5H3A6AULXXW473PKC7N6IINE3LJCB3KCFG2XA3TYCQQC
6NF5UR6BR6OBG62NDZPT3OMKYDT2MJ4AEF6QD4QUKWHNW2ZHAK2AC
ZA7XPDPN44QXOAE5UKRQKMCJCC4IOFTW24CWRFIBKNJBCS7MRR5AC
BWAQ3FHBBM6G3K3KYP75CRTR343RDQZJRYX5ZGYUEXYBAC3APDLAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
CE6FLTWU5PYFBSGVTIJXQXRMHOIHQ3VJCKHQVIMUUAIFHQ73X7NAC
5TG5LXU4DX65KMWCZ7YJHOB3VAETQAVBUHEUSQTPMA327XV2HQWAC
DGB7DKTR6OEQEMOOF3MAHDT4PAPKZ54Y33MWYVD7XIOESPFAXHQQC
O6ZMFKDI3XO2SWPNEYHIPYFDWJR4TVDP5BAATK6LVCVETQID6E7AC
EOMCPVNQLX3IMLC46EAO67DPBH5KEG2FQTPBLGU62HIRWA3UQ7XQC
XCEZ7OA2INNPSYNAB5U6JB7XNDAD5BKU26YLFPPZ3SEESFZKADQAC
TPPJRQ2NTCV3GI2VRHEXQJREDERPJODCJWUG5WCOQGN4REPPPAMAC
RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC
THEWZBBFONK266AMYIIFQ4SFGZMTMU62ZO2Y43UMCDD6DDBSDYKAC
EHSY6DVGUMI6C67WKET3GDJVLWJWGYBYQONNDK5JVT7BCTHBEZVAC
if (wielded)
desc += EOL "[Ctrl-L-Click] Unwield";
else if ( item.sub_type == MI_STONE
&& player_knows_spell(SPELL_SANDBLAST)
|| item.sub_type == MI_ARROW
&& player_knows_spell(
SPELL_STICKS_TO_SNAKES) )
{
// For Sandblast and Sticks to Snakes, respectively.
desc += EOL "[Ctrl-L-Click] Wield (w)";
}
// For Sublimation of Blood.
if (wielded)
desc += EOL "[Ctrl-L-Click] Unwield";
else if ( item_type_known(item)
&& (item.sub_type == POT_BLOOD
|| item.sub_type
== POT_BLOOD_COAGULATED)
&& player_knows_spell(
SPELL_SUBLIMATION_OF_BLOOD) )
{
desc += EOL "[Ctrl-L-Click] Wield (w)";
}
}
// For Boneshards.
// special handling since skeletons have no primary action
if (item.base_type == OBJ_CORPSES
&& item.sub_type == CORPSE_SKELETON)
{
if (wielded)
desc += EOL "[Ctrl-L-Click] Unwield";
else if (player_knows_spell(SPELL_BONE_SHARDS))
desc += EOL "[Ctrl-L-Click] Wield (w)";
static bool _valid_weapon_swap(const item_def &item)
{
// weapons and staves are valid weapons
if (item.base_type == OBJ_WEAPONS || item.base_type == OBJ_STAVES)
return true;
// misc. items need to be wielded to be evoked
if (item.base_type == OBJ_MISCELLANY && item.sub_type != MISC_RUNE_OF_ZOT)
return true;
// some missiles need to be wielded for spells
if (item.base_type == OBJ_MISSILES)
{
if (item.sub_type == MI_STONE)
return (player_knows_spell(SPELL_SANDBLAST));
if (item.sub_type == MI_ARROW)
return (player_knows_spell(SPELL_STICKS_TO_SNAKES));
return false;
}
// Boneshards
if (item.base_type == OBJ_CORPSES)
{
return (item.sub_type == CORPSE_SKELETON
&& player_knows_spell(SPELL_BONE_SHARDS));
}
// Sublimation of Blood
if (!player_knows_spell(SPELL_SUBLIMATION_OF_BLOOD))
return false;
if (item.base_type == OBJ_FOOD)
return (item.sub_type == FOOD_CHUNK);
if (item.base_type == OBJ_POTIONS && item_type_known(item))
{
return (item.sub_type == POT_BLOOD
|| item.sub_type == POT_BLOOD_COAGULATED);
}
return false;
}
const bool good_swap = (item_slot == PROMPT_GOT_SPECIAL)
|| you.inv[item_slot].base_type == OBJ_WEAPONS
|| you.inv[item_slot].base_type == OBJ_STAVES
|| (you.inv[item_slot].base_type == OBJ_MISCELLANY
&& you.inv[item_slot].sub_type != MISC_RUNE_OF_ZOT);
const bool good_swap = (item_slot == PROMPT_GOT_SPECIAL
|| _valid_weapon_swap(you.inv[item_slot]));
else if (you.inv[idx].base_type == OBJ_MISCELLANY
|| you.inv[idx].base_type == OBJ_STAVES
&& item_is_rod(you.inv[idx])) // unwield rods/misc. items
else if (item.base_type == OBJ_MISCELLANY
|| item.base_type == OBJ_STAVES
&& item_is_rod(item)) // unwield rods/misc. items
tile_item_col, tile_unseen_col, tile_floor_col, tile_wall_col,
tile_mapped_wall_col, tile_door_col, tile_downstairs_col,
tile_upstairs_col, tile_feature_col, tile_trap_col,
tile_water_col, tile_lava_col, tile_excluded_col,
tile_excl_centre_col
tile_plant_col, tile_item_col, tile_unseen_col, tile_floor_col,
tile_wall_col, tile_mapped_wall_col, tile_door_col,
tile_downstairs_col, tile_upstairs_col, tile_feature_col,
tile_trap_col, tile_water_col, tile_lava_col,
tile_excluded_col, tile_excl_centre_col