diff options
Diffstat (limited to 'src/game-server/character.cpp')
-rw-r--r-- | src/game-server/character.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/game-server/character.cpp b/src/game-server/character.cpp index bf16e268..ccd629e8 100644 --- a/src/game-server/character.cpp +++ b/src/game-server/character.cpp @@ -86,6 +86,7 @@ Character::Character(MessageIn &msg): mRecalculateLevel(true), mParty(0), mTransaction(TRANS_NONE), + mTalkNpcId(0), mNpcThread(0) { const AttributeManager::AttributeScope &attr = @@ -696,6 +697,31 @@ AttribmodResponseCode Character::useCorrectionPoint(size_t attribute) return ATTRIBMOD_OK; } +void Character::startNpcThread(Script::Thread *thread, int npcId) +{ + mNpcThread = thread; + mTalkNpcId = npcId; + + resumeNpcThread(); +} + +void Character::resumeNpcThread() +{ + Script *script = ScriptManager::currentState(); + + assert(script->getCurrentThread() == mNpcThread); + + if (script->resume()) + { + MessageOut msg(GPMSG_NPC_CLOSE); + msg.writeInt16(mTalkNpcId); + gameHandler->sendTo(this, msg); + + mTalkNpcId = 0; + mNpcThread = 0; + } +} + void Character::disconnected() { mConnected = false; |