inkyblackness / ss-specs

Unofficial System Shock 1 Specifications
Other
25 stars 2 forks source link

Document Object Class 8 (Items) #39

Open dertseha opened 8 years ago

dertseha commented 8 years ago

Document the Item objects:

dertseha commented 8 years ago

Looking at the briefacase in level 1, right at the start - ID (8/0/7), it behaves as if it is a container; The level data [0x00, 0x00, 0x41, 0x01, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00] contains two int16: 0x0141 and 0x0093, which both refer to objects in the master list.

These two objects (the email and the data reader) are lying on the floor in the extra, separate tile of the map. I've long suspected that this is where the objects are actually from. Thinking of it, this is actually necessary, since the container don't offer space to store all the information of a contained object. The only place where an object instance can live is in the map.

Still, this briefcase stuff is preliminary information - that the briefcase is not in the container class hints that container-logic is not bound to that one object class. Whether other objects from class 8 share this container feature is yet to be found out.

dertseha commented 8 years ago

Corpses, also containers with up to 4 items, have a first int16 field that is 0x0001 in a few cases. This is only when the four slots are empty.

I suspected that this might be a "don't spawn random stuff" marker, though, initial tests didn't produce anything. (More precicely: I never got any random stuff. This might hint at some missing level properties, like a loot table -> another investigation)

dertseha commented 8 years ago

So far I couldn't figure out how to enable automatic junk loot generation. I skipped this for now and continued.

Next up: there is one battery pack (in all of Citadel) that has two object index values in its level class data; Referring to itself and a logic probe, most likely next to it. For now I suspect this is an error and will leave it as curiosity.

dertseha commented 8 years ago

Kind of a roadblock at the moment: For some yet unknown reason the cyberspace items wouldn't work with the construct level; Data nodes/fragments wouldn't show the message. This was done in an immediate cyberspace level, so, starting level is cyberspace.

To remove this variable I extended the construct application to create multiple levels. This works, as is adding a cyberspace terminal to enter the new cyberspace level. Sadly the cyberspace exit node, which doesn't take any parameters, doesn't transport back to the initial level - it crashes the game.

I'll try whether the other cyberspace nodes, that I initially wanted to test, now work better - yet the exit node not working is an issue and I haven't figured out what might be missing.

dertseha commented 8 years ago

The cyberspace nodes still don't work. I'm starting to suspect that there's a fundamental issue with the construct.

dertseha commented 8 years ago

After figuring out which levels can be proper cyberspace levels, items work and info nodes produce text.

dertseha commented 8 years ago

The majority of level properties have been documented, with two exceptions:

I believe the access card can be ignored (like the battery mentioned above), the more important flag is the one for corpses.