The first patch is a script patch for Ellinger's Tower Level 2
on the Dark Side. It fixes an incorrect index for a wall item
of a curtain that's meant to be removed
The original used 0 as "unset", and object index + 1 to indicate the
object at the current location. Given all the +1/-1 usages, I've
simplified the use of _objNumber to use -1 as unset, allowing the
direct object index to be used otherwise
Originally the flag was whether the party was on the Dark Side,
but as a bool I was having to cast it to an int side/cc number in
more and more places. So now I've converted it to _ccNum, and it
can be used directly as an int
The later games stored them in resources, but Clouds of Xeen had
them hardcoded. So this adds them under the same resource names
as the later games, so the existing code can load them
All too many of the resource strings are used as parameters in
Common::String::format calls, and it proved too laborious trying
to add .c_str() suffixes everywhere it'd be appropriate. Easier
to simply change all the Reosucre fields back to being const char *
Byte 6 of the flags data, for flags 48 to 55, is directly used
in several places. I didn't think it was needed, but turns out
it is. So I've had to refactor the bool array I had previously
to have this as a bitset, so byte 6 can be accessed
Technically, the dialog now doesn't even show up, since loading
the new maps are so fast these days. I've decided against adding
in an explicit delay, because it's less jarring for players to
now be able to walk transparently between maps without interruption
Previously, I only had a single savefile, which maintains the
state of the party and mazes. But I've realised that I'll need
a separate archive for each side of Xeen. I'm still not entirely
happy with the cleanliness of the new structure, but it at least
is now functionally separating the sides.
Previously the game wasn't paying much attention to the access of
dark.cc vs xeen.cc, which was causing problems when trying to
travel to Dark Side. This is the beginnings of a refactoring
to more closely work like the original does