diff options
Diffstat (limited to 'scumm/string.cpp')
-rw-r--r-- | scumm/string.cpp | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/scumm/string.cpp b/scumm/string.cpp index 42b91ac657..5c624df4e2 100644 --- a/scumm/string.cpp +++ b/scumm/string.cpp @@ -583,6 +583,14 @@ const byte *Scumm::addMessageToStack(const byte *msg) { if (_features & GF_AFTER_V8) { addStringToStack(READ_LE_UINT32(ptr + num)); num += 4; + } else if (_features & GF_AFTER_V2) { + int var = READ_LE_UINT16(ptr + num); + num += 2; + char c; + while ((c = _scummVars[var])) { + if (c != '@') + *_msgPtrToAdd++ = c; + } } else { addStringToStack(READ_LE_UINT16(ptr + num)); num += 2; @@ -625,27 +633,10 @@ const byte *Scumm::addMessageToStack(const byte *msg) { } void Scumm::addIntToStack(int var) { - int num, max; - byte flag; + int num; num = readVar(var); - if (num < 0) { - *_msgPtrToAdd++ = '-'; - num = -num; - } - - flag = 0; - max = 10000; - do { - if (num >= max || flag) { - *_msgPtrToAdd++ = num / max + '0'; - num -= (num / max) * max; - flag = 1; - } - max /= 10; - if (max == 1) - flag = 1; - } while (max); + _msgPtrToAdd += sprintf((char *)_msgPtrToAdd, "%d", num); } void Scumm::addVerbToStack(int var) |