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

×
Early on when playing the game (GOG version) I was thrilled to discover that I could use Jaana's healing services for free once she joined my party. The cool down on her heal ability seemed to just be one day. Then I used her to rez a party member and ever since for heal or rez her response is "I must wait awhile".

It's been a dozen or more in-game days since she did the rez. I am wondering if anyone knows if she will ever regain the ability to heal?

Thanks for any insight anyone may have.
Post edited February 18, 2021 by 6502_Workshop
This question / problem has been solved by Gotchaimage
I'm vaguely aware that the Exult project has a computer program (ucxt?) that can disassemble Usecode (the script for usable objects such as NPCs in conversation) to a somewhat human-readable form. I suppose that someone with enough interest and technical ability and time on their hands could use that or some other tool to disassemble Jaana's code and see what exactly is checked in that part of her conversation to determine whether she is able to do healing.

Some day I'd like to make a web-based Usecode viewer / editor.. some day.

It might be even cooler to modify NPC behavior to enable Jaana to cast healing spells during combat.

edit: I've since found the cause of this issue and patched U7BG to prevent the bug from occurring; see my posts below.
Post edited February 20, 2021 by pocococo
Could be an Exult issue. I haven’t experienced this playing the normal version. Every time I used Exult I ran into issues, so I eventually stopped using it. One thing that always ended up happening to me was objects (buildings even sometimes) disappearing. My guess was always that the game has a total object limit which is blown out by the tailor in Britain endlessly adding more items to the game (another bug). So beware!
avatar
Ixnatifual: Could be an Exult issue. I haven’t experienced this playing the normal version. Every time I used Exult I ran into issues, so I eventually stopped using it. One thing that always ended up happening to me was objects (buildings even sometimes) disappearing. My guess was always that the game has a total object limit which is blown out by the tailor in Britain endlessly adding more items to the game (another bug). So beware!
As far as I know they solved that bug long ago though. :) It's not been happening to me in their latest releases.
Although I have unfortunately been experiencing crashes in TBG in their recent releases, which forces me to save often.
Also, that item limit also happens in vanilla if you go out of your way to create lots of items (by, for example, winning tons of gold at the casino).



As for 6502's problem: You mentioned playing vanilla, so not an Exult issue at least.
Have you tried removing her from the party, waiting a full day, then inviting her back in?
avatar
Gotcha: As for 6502's problem: You mentioned playing vanilla, so not an Exult issue at least.
Have you tried removing her from the party, waiting a full day, then inviting her back in?
Thanks for the suggestion.

I tried this in two scenarios, asking Jaana to leave and "wait right here" and also "return home". In both cases I rested for 24 hours and when I talked to her as an NPC she was happy to heal me but after asking her to join her response to heal was still "I must wait awhile".

I take it this is not normal behavior for her?
avatar
6502_Workshop: I take it this is not normal behavior for her?
Yeah, I can't recall ever having this problem. I did run into this on the wiki:

"Note that should Jaana join the party, she does these services for free, but will need time to recover after each healing, until the <spoiler tag> is destroyed. She however can always resurrect only a limited number of times outside of her shop."
But that should mean that at least her regular healing should function.

I also came across this topic though:
https://www.gog.com/forum/ultima_series/jaana_wont_heal_anymore_in_ultima_vii

You could try what is suggested there: Remove Jaana from your party, then ask for a heal and pay money for it, then invite her back in.
avatar
6502_Workshop: I take it this is not normal behavior for her?
avatar
Gotcha: Yeah, I can't recall ever having this problem. I did run into this on the wiki:

"Note that should Jaana join the party, she does these services for free, but will need time to recover after each healing, until the <spoiler tag> is destroyed. She however can always resurrect only a limited number of times outside of her shop."
But that should mean that at least her regular healing should function.

I also came across this topic though:
https://www.gog.com/forum/ultima_series/jaana_wont_heal_anymore_in_ultima_vii

You could try what is suggested there: Remove Jaana from your party, then ask for a heal and pay money for it, then invite her back in.
Thanks for the tip!

I just tried it and unfortunately it didn't work. It seems I have a variant of the bug that the known work around doesn't solve.
avatar
Gotcha: You could try what is suggested there: Remove Jaana from your party, then ask for a heal and pay money for it, then invite her back in.
Since that didn't work, I am wondering do you know if there are any other healer NPCs who will join?
Post edited February 19, 2021 by 6502_Workshop
Unfortunately, Jaana is the only healer who will join your party.
I got curious enough to run the Exult Usecode disassembler, ucxt, on Jaana's script.

It turns out that Jaana's healing dialogue checks and sets game timer 10 (0xA). The state of this timer is stored in the file GAMETIMK.DAT in the saved game (e.g. GAMEDAT/GAMETIMK.DAT for the default / last save).

I have successfully set this timer (and skipped past Jaana's healing cooldown) by doing this:
- save and exit from Ultima VII
- hex-edit the file GAMEDAT\GAMETIMK.DAT, setting the contents (six bytes) to 00 00 00 00 01 00
- launch Ultima VII again and Journey Onward

Are you familiar with hex-editing and able to hex-edit this file? If not, I could try to send you a copy of the edited file...
avatar
pocococo: I got curious enough to run the Exult Usecode disassembler, ucxt, on Jaana's script.

It turns out that Jaana's healing dialogue checks and sets game timer 10 (0xA). The state of this timer is stored in the file GAMETIMK.DAT in the saved game (e.g. GAMEDAT/GAMETIMK.DAT for the default / last save).

I have successfully set this timer (and skipped past Jaana's healing cooldown) by doing this:
- save and exit from Ultima VII
- hex-edit the file GAMEDAT\GAMETIMK.DAT, setting the contents (six bytes) to 00 00 00 00 01 00
- launch Ultima VII again and Journey Onward

Are you familiar with hex-editing and able to hex-edit this file? If not, I could try to send you a copy of the edited file...
Thanks for the information and the offer!

I have some experience with hex editing but I am playing the GOG version of Ultima 7, not Exult. Is there any reason to think this might work on the GOG version? I am not familiar with the technical aspects of either version.
avatar
6502_Workshop: I am playing the GOG version of Ultima 7, not Exult. Is there any reason to think this might work on the GOG version?
Exult is irrelevant to this, other than that i used a tool developed by them to analyze the (original) game's script.

The hex-editing solution (or workaround) i proposed is entirely relevant to the GOG version of the game; that is what i tested it on.

If you do try what i suggested, please let me know what results you get. Also, there's a rare chance that you may have to sleep again for up to 5 hours (in game, not in real life) after applying the steps.
avatar
pocococo: I got curious enough to run the Exult Usecode disassembler, ucxt, on Jaana's script.

It turns out that Jaana's healing dialogue checks and sets game timer 10 (0xA). The state of this timer is stored in the file GAMETIMK.DAT in the saved game (e.g. GAMEDAT/GAMETIMK.DAT for the default / last save).

I have successfully set this timer (and skipped past Jaana's healing cooldown) by doing this:
- save and exit from Ultima VII
- hex-edit the file GAMEDAT\GAMETIMK.DAT, setting the contents (six bytes) to 00 00 00 00 01 00
- launch Ultima VII again and Journey Onward

Are you familiar with hex-editing and able to hex-edit this file? If not, I could try to send you a copy of the edited file...
avatar
6502_Workshop: Thanks for the information and the offer!

I have some experience with hex editing but I am playing the GOG version of Ultima 7, not Exult. Is there any reason to think this might work on the GOG version? I am not familiar with the technical aspects of either version.
My understainding is that the Uecode, which is the game's scripting language, is the same for both versions. Exult just has a Usecode interpreter that interprets this language, so anything related to the Usecode *should* be the same (barring a bug in the interpreter).

(This means that, for example, the effects of training should be the same, since Usecode handles that. However, the HP/MP regen each hour is not, and as a result is different last I checked.)
avatar
6502_Workshop: I am playing the GOG version of Ultima 7, not Exult. Is there any reason to think this might work on the GOG version?
avatar
pocococo: Exult is irrelevant to this, other than that i used a tool developed by them to analyze the (original) game's script.

The hex-editing solution (or workaround) i proposed is entirely relevant to the GOG version of the game; that is what i tested it on.

If you do try what i suggested, please let me know what results you get. Also, there's a rare chance that you may have to sleep again for up to 5 hours (in game, not in real life) after applying the steps.
Thanks!

I did the hex edit and after launching the game Jaana immediately was able to heal. After healing she gave me the "I must wait awhile message" and then after resting for 8 hours she was able to heal again.

That's how it was working for me before I tried asking her to rez somebody. Next time somebody dies I'll have her to a rez and see if that borks the timers again. I'll post back with the results.

Worst case, I can just simulate a reasonable cool down on the rez using the hex edit to reset.

Thanks again!


avatar
dtgreene: My understainding is that the Uecode, which is the game's scripting language, is the same for both versions. Exult just has a Usecode interpreter that interprets this language, so anything related to the Usecode *should* be the same (barring a bug in the interpreter).

(This means that, for example, the effects of training should be the same, since Usecode handles that. However, the HP/MP regen each hour is not, and as a result is different last I checked.)
Good to know, thanks!
Post edited February 20, 2021 by 6502_Workshop
avatar
6502_Workshop: I did the hex edit and after launching the game Jaana immediately was able to heal. After healing she gave me the "I must wait awhile message" and then after resting for 8 hours she was able to heal again.
I'm glad that the workaround worked for you. I have now fixed the bug in U7BG that causes this issue in my UltimaHacks, which you can apply if you want a permanent fix.

https://github.com/JohnGlassmyer/UltimaHacks

Digging into the game's code, I found this inconsistency: when trying to calculate the number of hours that have elapsed since a given timer was set, it uses a day-of-the-week number (which wraps around to 0 every 7 days) rather than the absolute day number.

So, for example, Jaana's healing is supposed to be unavailable for 5 hours after the last use, but if you use her healing at noon on Saturday then it would still be unavailable at noon on the following Thursday because the game would think that -2 (negative two) days had passed, which would be "less than" the required 5 hours. And if you were unlucky enough to use her healing less than 5 hours before the end of the in-game week, then there would never be a subsequent time when her healing would be available.

I've patched U7BG to use absolute day number instead in this calculation, and verified that this prevents the issue from occurring.

U7SI does not have the same issue; it already uses absolute day number in the corresponding calculation.
Nice job!