diff options
-rw-r--r-- | engines/titanic/true_talk/tt_npc_script.cpp | 8 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_npc_script.h | 2 |
2 files changed, 10 insertions, 0 deletions
diff --git a/engines/titanic/true_talk/tt_npc_script.cpp b/engines/titanic/true_talk/tt_npc_script.cpp index ba205b6498..990f22722d 100644 --- a/engines/titanic/true_talk/tt_npc_script.cpp +++ b/engines/titanic/true_talk/tt_npc_script.cpp @@ -113,6 +113,13 @@ void TTnpcData::resetFlags() { Common::fill(&_array[20], &_array[136], 0); } +void TTnpcData::copyData() { + if (_array[20]) { + Common::copy_backward(&_array[16], &_array[136], &_array[24]); + Common::fill(&_array[20], &_array[28], 0); + } +} + /*------------------------------------------------------------------------*/ TTnpcScriptBase::TTnpcScriptBase(int charId_, const char *charClass, int v2, @@ -803,6 +810,7 @@ TTscriptRange *TTnpcScript::findRange(uint id) { } void TTnpcScript::checkItems(const TTroomScript *roomScript, const TTsentence *sentence) { + _data.copyData(); _field2CC = 0; ++CTrueTalkManager::_v2; diff --git a/engines/titanic/true_talk/tt_npc_script.h b/engines/titanic/true_talk/tt_npc_script.h index e5be7d7296..c2f001f8cc 100644 --- a/engines/titanic/true_talk/tt_npc_script.h +++ b/engines/titanic/true_talk/tt_npc_script.h @@ -43,6 +43,8 @@ public: int &operator[](int idx) { return _array[idx]; } int *getSlot(int idx) { return &_array[16 + idx * 4]; } void resetFlags(); + + void copyData(); }; class TTnpcScriptBase : public TTscriptBase { |