aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/script.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/engine/script.cpp')
-rw-r--r--engines/sci/engine/script.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/engines/sci/engine/script.cpp b/engines/sci/engine/script.cpp
index 47acad2858..b3857f311c 100644
--- a/engines/sci/engine/script.cpp
+++ b/engines/sci/engine/script.cpp
@@ -649,9 +649,6 @@ const Object *Script::getObject(uint32 offset) const {
}
Object *Script::scriptObjInit(reg_t obj_pos, bool fullObjectInit) {
- if (getSciVersion() < SCI_VERSION_1_1 && fullObjectInit)
- obj_pos.incOffset(8); // magic offset (SCRIPT_OBJECT_MAGIC_OFFSET)
-
if (obj_pos.getOffset() >= _buf->size())
error("Attempt to initialize object beyond end of script %d (%u >= %u)", _nr, obj_pos.getOffset(), _buf->size());
@@ -1088,11 +1085,13 @@ void Script::initializeObjectsSci0(SegManager *segMan, SegmentId segmentId) {
case SCI_OBJ_OBJECT:
case SCI_OBJ_CLASS:
{
- reg_t addr = make_reg(segmentId, seeker - *_buf + 4);
- Object *obj = scriptObjInit(addr);
- obj->initSpecies(segMan, addr);
-
- if (pass == 2) {
+ reg_t addr = make_reg(segmentId, seeker - *_buf + 4 - SCRIPT_OBJECT_MAGIC_OFFSET);
+ Object *obj;
+ if (pass == 1) {
+ obj = scriptObjInit(addr);
+ obj->initSpecies(segMan, addr);
+ } else {
+ obj = getObject(addr.getOffset());
if (!obj->initBaseObject(segMan, addr)) {
if ((_nr == 202 || _nr == 764) && g_sci->getGameId() == GID_KQ5) {
// WORKAROUND: Script 202 of KQ5 French and German