summaryrefslogtreecommitdiff
path: root/src/game-server/monster.cpp
diff options
context:
space:
mode:
authorGuillaume Melquiond <guillaume.melquiond@gmail.com>2007-07-08 13:31:33 +0000
committerGuillaume Melquiond <guillaume.melquiond@gmail.com>2007-07-08 13:31:33 +0000
commitf23ebba72f01fc6fac49211a50ca008c8af4ed84 (patch)
tree65a603d92548643f4b7d197464c2942722bc374c /src/game-server/monster.cpp
parenta4c7586b310a8be8ffd5c8acad88b5236695c1da (diff)
downloadmanaserv-f23ebba72f01fc6fac49211a50ca008c8af4ed84.tar.gz
manaserv-f23ebba72f01fc6fac49211a50ca008c8af4ed84.tar.bz2
manaserv-f23ebba72f01fc6fac49211a50ca008c8af4ed84.tar.xz
manaserv-f23ebba72f01fc6fac49211a50ca008c8af4ed84.zip
Added monster drops.
Diffstat (limited to 'src/game-server/monster.cpp')
-rw-r--r--src/game-server/monster.cpp30
1 files changed, 27 insertions, 3 deletions
diff --git a/src/game-server/monster.cpp b/src/game-server/monster.cpp
index be9d6fa1..30f3a909 100644
--- a/src/game-server/monster.cpp
+++ b/src/game-server/monster.cpp
@@ -22,13 +22,29 @@
#include "game-server/monster.hpp"
-#include "game-server/collisiondetection.hpp"
+#include "game-server/item.hpp"
#include "game-server/mapcomposite.hpp"
-
+#include "game-server/state.hpp"
#include "utils/logger.h"
-Monster::Monster():
+ItemClass *MonsterClass::getRandomDrop() const
+{
+ int p = rand() / (RAND_MAX / 10000);
+ for (MonsterDrops::const_iterator i = mDrops.begin(),
+ i_end = mDrops.end(); i != i_end; ++i)
+ {
+ p -= i->probability;
+ if (p < 0)
+ {
+ return i->item;
+ }
+ }
+ return NULL;
+}
+
+Monster::Monster(MonsterClass *specy):
Being(OBJECT_MONSTER, 65535),
+ mSpecy(specy),
mCountDown(0),
mAttackTime(0),
mAttackPreDelay(5),
@@ -230,6 +246,14 @@ void Monster::die()
{
mCountDown = 50; // sets remove time to 5 seconds
Being::die();
+ if (ItemClass *drop = mSpecy->getRandomDrop())
+ {
+ Item *item = new Item(drop, 1);
+ item->setMap(getMap());
+ item->setPosition(getPosition());
+ DelayedEvent e = { EVENT_INSERT };
+ GameState::enqueueEvent(item, e);
+ }
}
WeaponStats Monster::getWeaponStats()