summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYohann Ferreira <yohann_dot_ferreira_at_orange_dot_fr>2010-05-27 19:07:07 +0200
committerYohann Ferreira <yohann_dot_ferreira_at_orange_dot_fr>2010-05-27 19:33:03 +0200
commite6ce3d52648aec7139f1c3383a0ef0921411f0d4 (patch)
tree5e619753421f04f5f991f7a245646ee10291905a /src
parent714ebc9d079bbb7d18b9ea6bfe1a20dd0ce190df (diff)
downloadmanaserv-e6ce3d52648aec7139f1c3383a0ef0921411f0d4.tar.gz
manaserv-e6ce3d52648aec7139f1c3383a0ef0921411f0d4.tar.xz
manaserv-e6ce3d52648aec7139f1c3383a0ef0921411f0d4.zip
Fixes the random drops made by monsters once they've reached their lifetime limit.
This contributes to avoid maps full of loot after a week or so. This also resolves TMW-Mantis: #708 Reviewed-by: Jaxad0127
Diffstat (limited to 'src')
-rw-r--r--src/game-server/monster.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/game-server/monster.cpp b/src/game-server/monster.cpp
index 2489e73..b6d871d 100644
--- a/src/game-server/monster.cpp
+++ b/src/game-server/monster.cpp
@@ -422,18 +422,18 @@ void Monster::died()
Being::died();
setTimerHard(T_M_DECAY, Monster::DECAY_TIME);
- //drop item
- if (ItemClass *drop = mSpecy->getRandomDrop())
- {
- Item *item = new Item(drop, 1);
- item->setMap(getMap());
- item->setPosition(getPosition());
- GameState::enqueueInsert(item);
- }
-
- //distribute exp reward
if (mExpReceivers.size() > 0)
{
+ // If the monster was killed by players, randomly drop an item.
+ if (ItemClass *drop = mSpecy->getRandomDrop())
+ {
+ Item *item = new Item(drop, 1);
+ item->setMap(getMap());
+ item->setPosition(getPosition());
+ GameState::enqueueInsert(item);
+ }
+
+ // Distribute exp reward.
std::map<Character *, std::set <size_t> > ::iterator iChar;
std::set<size_t>::iterator iSkill;
@@ -453,7 +453,8 @@ void Monster::died()
int expPerSkill = int(expPerChar / skillSet->size());
for (iSkill = skillSet->begin(); iSkill != skillSet->end(); iSkill++)
{
- character->receiveExperience(*iSkill, expPerSkill, mSpecy->getOptimalLevel());
+ character->receiveExperience(*iSkill, expPerSkill,
+ mSpecy->getOptimalLevel());
}
character->incrementKillCount(mSpecy->getType());
}