diff options
author | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-10-28 10:37:06 +0000 |
---|---|---|
committer | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-10-28 10:37:06 +0000 |
commit | 23d9c0d8f9b6763cedbd0cc73c6e479dd11feb23 (patch) | |
tree | 9964723bd86e7be54b887f876fb9c69f22906c6c /crawl-ref | |
parent | 2da38ae1c055a68506ef1206ac7370ec2ed7273c (diff) | |
download | crawl-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')
-rw-r--r-- | crawl-ref/source/monstuff.cc | 11 |
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) |