summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-10-28 10:42:37 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-10-28 10:42:37 +0000
commite8b42fff119eba55156976a8c932252fdf0a2dfb (patch)
treee4e05a0aafc61f5e139b4fb393cd5da0772e10f2
parent12eb06947778a1ebb6a9cd67861743d326d854b5 (diff)
downloadcrawl-ref-e8b42fff119eba55156976a8c932252fdf0a2dfb.tar.gz
crawl-ref-e8b42fff119eba55156976a8c932252fdf0a2dfb.zip
Trunk->0.3 merge (2635): monster alignment check before giving experience.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/branches/stone_soup-0.3@2636 c06c8d41-db1a-0410-9941-cceddc491573
-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 b03e89f4e4..554a4ab386 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -363,7 +363,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)
@@ -372,8 +373,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,
@@ -391,7 +395,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)