> Room art (PIC/VIEW) and obstacle polygons are read too, since some gates are geometric and exist nowhere in the script.
Anyone got an example? Not counting bugs such as the floor gap in the SQ2 start room.
> Room art (PIC/VIEW) and obstacle polygons are read too, since some gates are geometric and exist nowhere in the script.
Anyone got an example? Not counting bugs such as the floor gap in the SQ2 start room.
The volcano at the end of Leisure Suit Larry 2. The elevator door opening after you drop your bomb into the crater is handled in the PIC, not in the room script. So the game ending condition is essentially invisible if all you look at is the scripts.
Also in LSL2, nothing in the script tells you that you can't dodge the KGB agents on the beach by walking around them.
Great. And the elevator door is operated by script?
No, the elevator door is a boundary that is an obstacle in the PIC, until you drop the bomb and it becomes walkable.
And script is what sets it to walkable?
Yeah so here's the chaining, I went back to look at it.
The door is a sprite, declared in the VIEW, that is in the way of the strip of elevator shaft (declared in the PIC) that you have to step on in order to exit from the volcano (room 82) to room 83, which is the beginning of the endgame.
If you just look at the script, the fact that you can't just walk into the shaft is not visible. Once you've caused the explosion, all that happens is that a variable is set called causedEruption, and the door animation happens. Nothing else other than a look message uses the value of causedEruption in the script. So before we added in the VIEW and PIC files, the engine thought that the endgame was free once you stepped onto the volcano crater.
The PIC file is what tells you that that strip of the screen matters (it's the exit), and the VIEW file is what tells you that the door (a sprite) initially blocks access to it, and once it becomes open allows access to it.
So the engine had to look at the VIEW and PIC to deduce that causedEruption was the flag that mattered, which meant that the items you have to use to cause said explosion were needed for the endgame.
Very clear. Thanks. So does your engine automatically work out that the VIEW door blocks the PIC doorway?
Yeah. There's a gate finding oracle (src/control_oracle.py) that runs on every room.
The positional work is actually being extended right now, because KQ5 makes complicated use of it.
Awesome. Well done.