summaryrefslogtreecommitdiff
path: root/src/game-server/monster.cpp
diff options
context:
space:
mode:
authorPhilipp Sehmisch <tmw@crushnet.org>2007-03-30 17:27:11 +0000
committerPhilipp Sehmisch <tmw@crushnet.org>2007-03-30 17:27:11 +0000
commitdc054c19aefcc9ca20aa0d4104386886a912a9d7 (patch)
tree4faf4a5bc26ac85d1300ca2f3346d4838807013c /src/game-server/monster.cpp
parent24dd2d0a7878f3e1e72a4d857a57bd9c7ea5a25e (diff)
downloadmanaserv-dc054c19aefcc9ca20aa0d4104386886a912a9d7.tar.gz
manaserv-dc054c19aefcc9ca20aa0d4104386886a912a9d7.tar.bz2
manaserv-dc054c19aefcc9ca20aa0d4104386886a912a9d7.tar.xz
manaserv-dc054c19aefcc9ca20aa0d4104386886a912a9d7.zip
Renamed "Controlled" to "Monster" and moved it into the game-server directory.
Diffstat (limited to 'src/game-server/monster.cpp')
-rw-r--r--src/game-server/monster.cpp195
1 files changed, 195 insertions, 0 deletions
diff --git a/src/game-server/monster.cpp b/src/game-server/monster.cpp
new file mode 100644
index 00000000..9d75e6fa
--- /dev/null
+++ b/src/game-server/monster.cpp
@@ -0,0 +1,195 @@
+/*
+ * The Mana World Server
+ * Copyright 2004 The Mana World Development Team
+ *
+ * This file is part of The Mana World.
+ *
+ * The Mana World is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or any later version.
+ *
+ * The Mana World is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with The Mana World; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * $Id: controller.cpp 3191 2007-03-15 23:47:13Z crush_tmw $
+ */
+
+#include "game-server/monster.hpp"
+
+#include "utils/logger.h"
+
+Monster::Monster():
+ Being(OBJECT_MONSTER, 65535),
+ mCountDown(0)
+{
+ mAttributes.resize(NB_ATTRIBUTES_CONTROLLED, 1); // TODO: fill with the real attributes
+}
+
+void Monster::update()
+{
+ /* Temporary "AI" behaviour that is purely artificial and not at all
+ * intelligent.
+ */
+ if (mCountDown == 0)
+ {
+ if (mAction != DEAD)
+ {
+ Point randomPos( rand() % 320 + 720,
+ rand() % 320 + 840 );
+ setDestination(randomPos);
+ mCountDown = 10 + rand() % 10;
+
+ LOG_DEBUG("Setting new random destination " << randomPos.x << ","
+ << randomPos.y << " for being " << getPublicID());
+ }
+ else
+ {
+ raiseUpdateFlags(UPDATEFLAG_REMOVE);
+ }
+ }
+ else
+ {
+ mCountDown--;
+ }
+}
+
+void Monster::die()
+{
+ mCountDown = 50; //sets remove time to 5 seconds
+ Being::die();
+}
+
+WeaponStats Monster::getWeaponStats()
+{
+
+ WeaponStats weaponStats;
+
+ /*
+ * TODO: This should all be set by the monster database
+ */
+ weaponStats.piercing = 1;
+ weaponStats.element = ELEMENT_NEUTRAL;
+ weaponStats.skill = MONSTER_SKILL_WEAPON;
+
+ return weaponStats;
+}
+
+void Monster::calculateDerivedAttributes()
+{
+ Being::calculateDerivedAttributes();
+ /*
+ * Do any monster specific attribute calculation here
+ */
+}
+/*
+ * The Mana World Server
+ * Copyright 2004 The Mana World Development Team
+ *
+ * This file is part of The Mana World.
+ *
+ * The Mana World is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or any later version.
+ *
+ * The Mana World is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with The Mana World; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * $Id: controller.cpp 3191 2007-03-15 23:47:13Z crush_tmw $
+ */
+
+#include "game-server/monster.hpp"
+
+#include "utils/logger.h"
+
+extern int worldTime;
+
+Monster::Monster():
+ Being(OBJECT_MONSTER, 65535),
+ mCountDown(0)
+{
+ mAttributes.resize(NB_ATTRIBUTES_CONTROLLED, 1); // TODO: fill with the real attributes
+}
+
+void Monster::update()
+{
+ /* Temporary "AI" behaviour that is purely artificial and not at all
+ * intelligent.
+ */
+ if (mCountDown == 0)
+ {
+ if (mAction != DEAD)
+ {
+ Point randomPos( rand() % 320 + 720,
+ rand() % 320 + 840 );
+ setDestination(randomPos);
+ mCountDown = 10 + rand() % 10;
+
+ LOG_DEBUG("Setting new random destination " << randomPos.x << ","
+ << randomPos.y << " for being " << getPublicID());
+ }
+ else
+ {
+ raiseUpdateFlags(UPDATEFLAG_REMOVE);
+ }
+ }
+ else
+ {
+ mCountDown--;
+ }
+}
+
+int Monster::damage(Damage damage)
+{
+ int damageValue = Being::damage(damage);
+
+ BattleLogEntry newEntry;
+
+ newEntry.timestamp = worldTime;
+ newEntry.attacker = damage.source;
+ newEntry.skill = damage.skill;
+ newEntry.value = damageValue;
+ battleLog.push_back(newEntry);
+
+ return damageValue;
+};
+
+void Monster::die()
+{
+ mCountDown = 50; //sets remove time to 5 seconds
+ Being::die();
+}
+
+WeaponStats Monster::getWeaponStats()
+{
+
+ WeaponStats weaponStats;
+
+ /*
+ * TODO: This should all be set by the monster database
+ */
+ weaponStats.piercing = 1;
+ weaponStats.element = ELEMENT_NEUTRAL;
+ weaponStats.skill = MONSTER_SKILL_WEAPON;
+
+ return weaponStats;
+}
+
+void Monster::calculateDerivedAttributes()
+{
+ Being::calculateDerivedAttributes();
+ /*
+ * Do any monster specific attribute calculation here
+ */
+}