diff options
author | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-10-28 10:42:37 +0000 |
---|---|---|
committer | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-10-28 10:42:37 +0000 |
commit | e8b42fff119eba55156976a8c932252fdf0a2dfb (patch) | |
tree | e4e05a0aafc61f5e139b4fb393cd5da0772e10f2 | |
parent | 12eb06947778a1ebb6a9cd67861743d326d854b5 (diff) | |
download | crawl-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.cc | 11 |
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) |