diff options
author | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_fr> | 2010-05-27 19:07:07 +0200 |
---|---|---|
committer | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_fr> | 2010-05-27 19:33:03 +0200 |
commit | e6ce3d52648aec7139f1c3383a0ef0921411f0d4 (patch) | |
tree | 5e619753421f04f5f991f7a245646ee10291905a /src/game-server | |
parent | 714ebc9d079bbb7d18b9ea6bfe1a20dd0ce190df (diff) | |
download | manaserv-e6ce3d52648aec7139f1c3383a0ef0921411f0d4.tar.gz manaserv-e6ce3d52648aec7139f1c3383a0ef0921411f0d4.tar.bz2 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/game-server')
-rw-r--r-- | src/game-server/monster.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/game-server/monster.cpp b/src/game-server/monster.cpp index 2489e735..b6d871d5 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()); } |