diff options
author | Philipp Sehmisch <tmw@crushnet.org> | 2008-05-19 15:07:45 +0000 |
---|---|---|
committer | Philipp Sehmisch <tmw@crushnet.org> | 2008-05-19 15:07:45 +0000 |
commit | 502d5c892c92b4a71eceae1d275032100d42dd23 (patch) | |
tree | 81f29c3ce0bda3d2a4221a485c9695d4e56eb568 /src/game-server | |
parent | 4b4b6d0865f5f04f73e04926fb9e6b610f0a71a7 (diff) | |
download | manaserv-502d5c892c92b4a71eceae1d275032100d42dd23.tar.gz manaserv-502d5c892c92b4a71eceae1d275032100d42dd23.tar.bz2 manaserv-502d5c892c92b4a71eceae1d275032100d42dd23.tar.xz manaserv-502d5c892c92b4a71eceae1d275032100d42dd23.zip |
Implemented NPC names. Implemented the theoretical possibility to have named monsters along the way. Note that the syntax of the LUA functions for creating NPCs has changed.
Diffstat (limited to 'src/game-server')
-rw-r--r-- | src/game-server/being.hpp | 11 | ||||
-rw-r--r-- | src/game-server/character.cpp | 6 | ||||
-rw-r--r-- | src/game-server/character.hpp | 11 | ||||
-rw-r--r-- | src/game-server/mapreader.cpp | 2 | ||||
-rw-r--r-- | src/game-server/npc.cpp | 3 | ||||
-rw-r--r-- | src/game-server/npc.hpp | 2 | ||||
-rw-r--r-- | src/game-server/state.cpp | 2 |
7 files changed, 20 insertions, 17 deletions
diff --git a/src/game-server/being.hpp b/src/game-server/being.hpp index b725bfee..6c7ff398 100644 --- a/src/game-server/being.hpp +++ b/src/game-server/being.hpp @@ -218,6 +218,16 @@ class Being : public MovingObject */ virtual void modifiedAttribute(int) {} + /** Gets the name of the being. */ + std::string const & + getName() const + { return mName; } + + /** Sets the name of the being. */ + void + setName(const std::string& name) + { mName = name; } + protected: static const int TICKS_PER_HP_REGENERATION = 100; Action mAction; @@ -227,6 +237,7 @@ class Being : public MovingObject Being(Being const &rhs); Being &operator=(Being const &rhs); + std::string mName; /**< Name of the being. */ Hits mHitsTaken; /**< List of punches taken since last update */ AttributeModifiers mModifiers; /**< Currently modified attributes. */ int mHpRegenTimer; /**< timer for hp regeneration*/ diff --git a/src/game-server/character.cpp b/src/game-server/character.cpp index e21de7c9..f169bd26 100644 --- a/src/game-server/character.cpp +++ b/src/game-server/character.cpp @@ -59,7 +59,7 @@ Character::Character(MessageIn &msg): mExperience.resize(CHAR_SKILL_NB, 0); // Get character data. mDatabaseID = msg.readLong(); - mName = msg.readString(); + setName(msg.readString()); deserializeCharacterData(*this, msg); for (int i = CHAR_ATTR_BEGIN; i < CHAR_ATTR_END; ++i) { @@ -120,7 +120,7 @@ void Character::respawn() { if (mAction != DEAD) { - LOG_WARN("Character \""<<mName<<"\" tried to respawn without being dead"); + LOG_WARN("Character \""<<getName()<<"\" tried to respawn without being dead"); return; } @@ -395,7 +395,7 @@ void Character::levelup() levelupMsg.writeShort(mCharacterPoints); levelupMsg.writeShort(mCorrectionPoints); gameHandler->sendTo(this, levelupMsg); - LOG_INFO(mName<<" reached level "<<mLevel); + LOG_INFO(getName()<<" reached level "<<mLevel); } AttribmodResponseCode Character::useCharacterPoint(size_t attribute) diff --git a/src/game-server/character.hpp b/src/game-server/character.hpp index 393a18d7..5e26b96c 100644 --- a/src/game-server/character.hpp +++ b/src/game-server/character.hpp @@ -139,16 +139,6 @@ class Character : public Being setDatabaseID(int id) { mDatabaseID = id; } - /** Gets the name of the character. */ - std::string const & - getName() const - { return mName; } - - /** Sets the name of the character. */ - void - setName(const std::string& name) - { mName = name; } - /** Gets the gender of the character (male or female). */ int getGender() const @@ -335,7 +325,6 @@ class Character : public Being std::vector<unsigned int> mExperience; /**< experience collected for each skill.*/ - std::string mName; /**< Name of the character. */ int mDatabaseID; /**< Character's database ID. */ unsigned char mGender; /**< Gender of the character. */ unsigned char mHairStyle; /**< Hair Style of the character. */ diff --git a/src/game-server/mapreader.cpp b/src/game-server/mapreader.cpp index 39d209d6..3d0a82ff 100644 --- a/src/game-server/mapreader.cpp +++ b/src/game-server/mapreader.cpp @@ -323,7 +323,7 @@ static Map *readMap(xmlNodePtr node, std::string const &path, MapComposite *comp if (npcId != -1 && scriptText != NULL) { - s->loadNPC(npcId, objX, objY, scriptText); + s->loadNPC(objName, npcId, objX, objY, scriptText); } else { diff --git a/src/game-server/npc.cpp b/src/game-server/npc.cpp index abc425ec..fd462c50 100644 --- a/src/game-server/npc.cpp +++ b/src/game-server/npc.cpp @@ -24,9 +24,10 @@ #include "game-server/npc.hpp" #include "scripting/script.hpp" -NPC::NPC(int id, Script *s): +NPC::NPC(const std::string &name, int id, Script *s): Being(OBJECT_NPC, 65535), mScript(s), mID(id) { + setName(name); } void NPC::update() diff --git a/src/game-server/npc.hpp b/src/game-server/npc.hpp index 2d790c4c..c4d8b384 100644 --- a/src/game-server/npc.hpp +++ b/src/game-server/npc.hpp @@ -34,7 +34,7 @@ class Character; class NPC : public Being { public: - NPC(int id, Script *); + NPC(const std::string &name, int id, Script *); void update(); diff --git a/src/game-server/state.cpp b/src/game-server/state.cpp index 03c6e3c1..a129e889 100644 --- a/src/game-server/state.cpp +++ b/src/game-server/state.cpp @@ -273,12 +273,14 @@ static void informPlayer(MapComposite *map, Character *p) { Monster *q = static_cast< Monster * >(o); enterMsg.writeShort(q->getSpecy()->getType()); + enterMsg.writeString(q->getName()); } break; case OBJECT_NPC: { NPC *q = static_cast< NPC * >(o); enterMsg.writeShort(q->getNPC()); + enterMsg.writeString(q->getName()); } break; default: |