Asmodeus now won't drop the Sceptre, Dispater not the Staff, and Cerebov will also keep his Sword.
Also, monsters will only pick up potions if they can use them, i.e. only vampires drink blood, and undead and non-living can't use !healing.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4254 c06c8d41-db1a-0410-9941-cceddc491573
RKFHYYANUZQHOWOE6YHVFFJNCZU7X67FWUQPQFF6KJKMNIKXFWEAC
UUQ5U2OURPGWPHSHKJPLB6L4BWULX7VYCOUV6RNBIGALAZTWFHUQC
NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC
7KWDC7XFNMBLSUO2HISIROBINZBX5T67LJEEXTAORXW2YZ7VWFGAC
QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC
QS3ZRS3E6KL3YJHPKYEWCWJYRBJSXD5OOYF6Y25HZVECGPJRDB5QC
KS4WBDOLZ45T5Q742JZQIRN3H7XZTYDPM4TCIAILIRO3OV7ANR2AC
DTO3EUKWHZ5RJNGNCFYXSOVTIPVXPP637F2W7WFGYKJ7JK7VNKNQC
beem.name = theBeam.name;
beem.beam_source = monster_index(monster);
beem.source_x = monster->x;
beem.source_y = monster->y;
beem.colour = theBeam.colour;
beem.range = theBeam.range;
beem.rangeMax = theBeam.rangeMax;
beem.damage = theBeam.damage;
beem.ench_power = theBeam.ench_power;
beem.hit = theBeam.hit;
beem.type = theBeam.type;
beem.flavour = theBeam.flavour;
beem.thrower = theBeam.thrower;
beem.is_beam = theBeam.is_beam;
beem.name = theBeam.name;
beem.beam_source = monster_index(monster);
beem.source_x = monster->x;
beem.source_y = monster->y;
beem.colour = theBeam.colour;
beem.range = theBeam.range;
beem.rangeMax = theBeam.rangeMax;
beem.damage = theBeam.damage;
beem.ench_power = theBeam.ench_power;
beem.hit = theBeam.hit;
beem.type = theBeam.type;
beem.flavour = theBeam.flavour;
beem.thrower = theBeam.thrower;
beem.is_beam = theBeam.is_beam;
static bool _is_unique_weapon(monsters *monster, const item_def &weapon)
{
if (is_fixed_artefact(weapon))
{
switch (weapon.special)
{
case SPWPN_SCEPTRE_OF_ASMODEUS:
return (monster->type == MONS_ASMODEUS);
case SPWPN_STAFF_OF_DISPATER:
return (monster->type == MONS_DISPATER);
case SPWPN_SWORD_OF_CEREBOV:
return (monster->type == MONS_CEREBOV);
}
}
return false;
}
// only allow monsters to pick up healing potions
// if they can actually use them
if ((item.sub_type == POT_HEALING || item.sub_type == POT_HEAL_WOUNDS)
&& (mons_holiness(this) == MH_UNDEAD
|| mons_holiness(this) == MH_NONLIVING
|| mons_holiness(this) == MH_PLANT))
{
return false;
}
if (::mons_species(this->type) != MONS_VAMPIRE
&& (item.sub_type == POT_BLOOD
|| item.sub_type == POT_BLOOD_COAGULATED))
{
return false;
}
static void give_monster_item(
monsters *mon, int thing,
bool force_item = false,
bool (monsters::*pickupfn)(item_def&, int) = NULL)
static void give_monster_item(monsters *mon, int thing,
bool force_item = false,
bool (monsters::*pickupfn)(item_def&, int) = NULL)