summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/monstuff.cc
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-10-28 10:37:06 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-10-28 10:37:06 +0000
commit23d9c0d8f9b6763cedbd0cc73c6e479dd11feb23 (patch)
tree9964723bd86e7be54b887f876fb9c69f22906c6c /crawl-ref/source/monstuff.cc
parent2da38ae1c055a68506ef1206ac7370ec2ed7273c (diff)
downloadcrawl-ref-23d9c0d8f9b6763cedbd0cc73c6e479dd11feb23.tar.gz
crawl-ref-23d9c0d8f9b6763cedbd0cc73c6e479dd11feb23.zip
Monsters should not gain experience for offing their friends.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2635 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/monstuff.cc')
-rw-r--r--crawl-ref/source/monstuff.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index 6eebbc4750..81c9a7d05b 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -375,7 +375,8 @@ static void check_kill_milestone(const monsters *mons,
}
#endif // DGL_MILESTONES
-static void give_monster_experience( int killer_index, int experience,
+static void give_monster_experience( monsters *victim,
+ int killer_index, int experience,
bool victim_was_born_friendly )
{
if (killer_index < 0 || killer_index >= MAX_MONSTERS)
@@ -384,8 +385,11 @@ static void give_monster_experience( int killer_index, int experience,
if (!mons->alive())
return;
- if (!victim_was_born_friendly || !mons_friendly(mons))
+ if ((!victim_was_born_friendly || !mons_friendly(mons))
+ && !mons_aligned(killer_index, monster_index(victim)))
+ {
mons->gain_exp(experience);
+ }
}
static void give_adjusted_experience(monsters *monster, killer_type killer,
@@ -403,7 +407,8 @@ static void give_adjusted_experience(monsters *monster, killer_type killer,
gain_exp( experience / 2 + 1, exp_gain, avail_gain );
if (MON_KILL(killer))
- give_monster_experience( killer_index, experience, created_friendly );
+ give_monster_experience( monster, killer_index, experience,
+ created_friendly );
}
static bool is_pet_kill(killer_type killer, int i)