Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#12100 closed defect (invalid)

ULTIMA4: Karma only increments once

Reported by: bliznik Owned by: dreammaster
Priority: normal Component: Engine: Ultima
Version: Keywords: Ultima IV karma honesty reagent
Cc: Game: Ultima IV: Quest of the Avatar

Description

If I do a good deed, such as paying the correct amount to a Reagent seller in Paws, Moonglow, or Skara Brae, my karma for Honesty will only increment once. I cannot increment my karma a second time without leaving the city. Occasionally, I was able to increment my karma twice, but never more than twice without leaving the city.

Contrast this against playing the game with xu4 or natively...I would normally be able to increase my karma by repeating the same action over and over again without needing to leave and re-enter the city between every repeat of the karma-increasing action.

Change History (3)

comment:1 by dreammaster, 3 years ago

Owner: set to dreammaster
Resolution: invalid
Status: newclosed
Summary: Ultima IV: karma only increments onceULTIMA4: Karma only increments once

This actually seems to be working as intended, at least according to the logic inherited from xu4. Several actions are flagged as "time limited": giving to beggars, being humble, hawkwind, meditation, or not cheating reagents. For those time limited actions, it uses the following to determine whether to discard the change(s):

if (timeLimited) {

if (((_saveGame->_moves / 16) >= 0x10000)
(((_saveGame->_moves / 16) & 0xFFFF) != _saveGame->_lastVirtue))

_saveGame->_lastVirtue = (_saveGame->_moves / 16) & 0xFFFF;

else

return;

}

If I'm reading this correctly, it means that for a second karma change to count, you simply have to walk at least 16 steps. Then you can talk to them again and get the karma to count.

comment:2 by dreammaster, 3 years ago

In fact, the requirement is to cross a boundary of 16 steps. So if the total number of steps you'd taken in the game was 31, it would only require a single step to be in the next interval of 16. But walking 16 steps will at least guarantee you're in the next interval.

comment:3 by bliznik, 3 years ago

Oh, interesting, that is behavior that is different than the original. I didn't realize that the programmers introduced that behavior into the new game. Thanks for looking into that.

Note: See TracTickets for help on using tickets.