diff --git a/src/newgrf_optimiser.cpp b/src/newgrf_optimiser.cpp index 6878c180a9..e07f5061a4 100644 --- a/src/newgrf_optimiser.cpp +++ b/src/newgrf_optimiser.cpp @@ -2400,13 +2400,16 @@ void OptimiseVarAction2DeterministicSpriteGroup(VarAction2OptimiseState &state, if (reg->flags & TLF_DODRAW) bits.set(reg->dodraw, true); if (reg->flags & TLF_SPRITE) bits.set(reg->sprite, true); if (reg->flags & TLF_PALETTE) bits.set(reg->palette, true); - if (reg->flags & TLF_BB_XY_OFFSET) { - bits.set(reg->delta.parent[0], true); - bits.set(reg->delta.parent[1], true); + if (element->IsParentSprite()) { + if (reg->flags & TLF_BB_XY_OFFSET) { + bits.set(reg->delta.parent[0], true); + bits.set(reg->delta.parent[1], true); + } + if (reg->flags & TLF_BB_Z_OFFSET) bits.set(reg->delta.parent[2], true); + } else { + if (reg->flags & TLF_CHILD_X_OFFSET) bits.set(reg->delta.child[0], true); + if (reg->flags & TLF_CHILD_Y_OFFSET) bits.set(reg->delta.child[1], true); } - if (reg->flags & TLF_BB_Z_OFFSET) bits.set(reg->delta.parent[2], true); - if (reg->flags & TLF_CHILD_X_OFFSET) bits.set(reg->delta.child[0], true); - if (reg->flags & TLF_CHILD_Y_OFFSET) bits.set(reg->delta.child[1], true); } } } diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp index 2905ef1019..dfe08abd95 100644 --- a/src/newgrf_spritegroup.cpp +++ b/src/newgrf_spritegroup.cpp @@ -749,11 +749,14 @@ void SpriteGroupDumper::DumpSpriteGroup(const SpriteGroup *sg, const char *paddi log_reg(TLF_DODRAW, "TLF_DODRAW", reg->dodraw); log_reg(TLF_SPRITE, "TLF_SPRITE", reg->sprite); log_reg(TLF_PALETTE, "TLF_PALETTE", reg->palette); - log_reg(TLF_BB_XY_OFFSET, "TLF_BB_XY_OFFSET x", reg->delta.parent[0]); - log_reg(TLF_BB_XY_OFFSET, "TLF_BB_XY_OFFSET y", reg->delta.parent[1]); - log_reg(TLF_BB_Z_OFFSET, "TLF_BB_Z_OFFSET", reg->delta.parent[2]); - log_reg(TLF_CHILD_X_OFFSET, "TLF_CHILD_X_OFFSET", reg->delta.child[0]); - log_reg(TLF_CHILD_Y_OFFSET, "TLF_CHILD_Y_OFFSET", reg->delta.child[1]); + if (element->IsParentSprite()) { + log_reg(TLF_BB_XY_OFFSET, "TLF_BB_XY_OFFSET x", reg->delta.parent[0]); + log_reg(TLF_BB_XY_OFFSET, "TLF_BB_XY_OFFSET y", reg->delta.parent[1]); + log_reg(TLF_BB_Z_OFFSET, "TLF_BB_Z_OFFSET", reg->delta.parent[2]); + } else { + log_reg(TLF_CHILD_X_OFFSET, "TLF_CHILD_X_OFFSET", reg->delta.child[0]); + log_reg(TLF_CHILD_Y_OFFSET, "TLF_CHILD_Y_OFFSET", reg->delta.child[1]); + } if (reg->flags & TLF_SPRITE_VAR10) { seprintf(this->buffer, lastof(this->buffer), "%s TLF_SPRITE_VAR10 value: %X", padding, reg->sprite_var10); print();