It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
It doesn't seem to work though, obviously not a major issue but I'm asking about it out of plain ol' curiosity. Anyone think it's an issue with how the events are coded?

Per Unkillable Cat's excellent EOB1_Explorer_Notes.txt:
"Flag 18 = Throw dagger at 07,30, yields one-time 1600xp bonus."

What he's referencing is Event 42 in Level 2's Events tab of the EOB1 Explorer:
// trigger point 07,30
// trigger mask $20 (%00100000)
// triggered on on_put_item

$1060 — SOUND — INDEX = 12, POS = <07,30>

$1064 — OPEN_DOOR — POS = <08,30>

$1067 — IF — WALL_SIDE (<08,30>, SIDE 1) = 18
$106E — ELSE_GOTO — $1080

$1071 — IF — LEVEL_FLAG (18) = 0
$1076 — ELSE_GOTO — $1080

$1079 — GIVE_XP — TYPE = $E2, AMOUNT = 1600

$107D — SET_FLAG — LEVEL_FLAG 18

$1080 END
===

So when you throw an item through the grated door at (08,30) it lands on the pressure plate at (07,30), which opens the door, then it checks if the east side (side 1) of the door tile is "18" (I'm assuming this is a texture ID for the closed door, since the initial value for Side 1 is 18 before you open it). If not, it exits the If block (goto -> end). If the Wall_Side value for Side 1 is 18, it checks if Level Flag 18 has been set to true, exits the If block if so, and otherwise gives each character 400 EXP and sets Flag 18 to true.

My theory was that the line at $1067 is returning false, since the Side 1 = 18 check happens after the door has been opened, meaning there's no wall there at all anymore, so the game exits the If block before it even gets to the Flag 18 check or the Give_XP function.

But interestingly, Event 22 on the same level is set up much the same way (the grated door in the "Only the strong shall pass" section that you can throw something through to hit a switch and open, near the /third/ dagger carving). Lots of the EXP bonuses in EOB1 have the property of having multiple locations to trigger, but only at the first trigger point (i.e. the sewer drains in Level 1). Event 22 has the exact same double-If setup with the Wall_Side 1 = 18 check, _after_ the door is already opened, followed by the Flag 18 check, then setting Flag 18 to true after giving the 1600 EXP.

But the EXP bonus is broken at both locations, and you have to explore the first three locked doors in Level 2 to even access the next part of the level (where you find the Stone Dagger portal key, right before coming to the last dagger carving and Event 42 posted above). So it seems weird that they set this EXP bonus to trigger from whichever location you visit first (the other one can't trigger after Flag 18 is set), when you HAVE to execute Event 22 to even /access/ Event 42.

So I thought maybe the Flag_18 bonus in EOB1_Explorer_Notes.txt didn't work because Flag 18 was already set by Event 22, but I don't know if Event 22 even sets the flag either. I'm not a programmer by any means, but my best guess is that the game is exiting the If block before it even gets to the EXP bonus because of the Wall_Side check after the doors are already opened (i.e., the Wall_Side checks are returning false and skipping to the end of the If blocks).

I'm sure there are smarter folks around here, anyone have a better explanation? Or has anyone ever gotten EXP from these doors? I should stress I know this wall of text sounds INCREDIBLY pedantic and meaningless, lol. Not a programmer, like I said, I'm just really interested in how these old games work under the hood, doing stuff like If blocks in assembly languages. So I figured it wouldn't hurt to ask :p
No posts in this topic were marked as the solution yet. If you can help, add your reply