Menu

#2052 SI: Lucilla love scene bugs out

Regression
closed-out-of-date
nobody
None
5
2024-04-09
2020-04-19
No

When Lucilla arrives at 3am in her bedroom and you doubleclick on her the love scene bugs out. The music changes and right when one of the companions would state that he better catch some air, the usecode stops working and Lucille remains frozen forever in the wait state.

I couldn't reproduce with an existing savegame but maybe it needs to be started from a new game (will try that later).
Note: the savegame was started before the palette fix so it has a broken one.

1 Attachments

Related

Bugs: #2052

Discussion

  • Dominik Reichardt

    This only happens with this savegame both in master and the 1.6 release. A new game works fine (attached).

    comparing the debug output of bugged vs. working:

    Running usecode 02e6 () with event 2, depth 0
    Running usecode 0954 () with event 2, depth 1
        [0x6f]: is_pc_female() = 0000
    Returning ("milord") from usecode 0954
    ...back into usecode 02e6
        [0x20]: get_object_position(ffba) = [ 0432, 0a57, 0000 ]
        [0xbc]: get_npc_id(ffba) = 000a
        [0xbc]: get_npc_id(ffba) = 000a
        [0xbc]: get_npc_id(ffba) = 000a
        [0xbc]: get_npc_id(ffba) = 000a
        [0xbc]: get_npc_id(ffba) = 000a
        [0xbc]: get_npc_id(ffba) = 000a
        [0xbc]: get_npc_id(ffba) = 000a
        [0xbc]: get_npc_id(ffba) = 000a
        [0xbc]: get_npc_id(ffba) = 000a
    Returning from usecode 02e6
    Ending script for 0x7fd4800df230
    

    working:

    Running usecode 02e6 () with event 2, depth 0
    Running usecode 0954 () with event 2, depth 1
        [0x6f]: is_pc_female() = 0000
    Returning ("milord") from usecode 0954
    ...back into usecode 02e6
        [0x20]: get_object_position(ffba) = [ 0432, 0a57, 0000 ]
        [0xbc]: get_npc_id(ffba) = 0000
        [0xbc]: get_npc_id(ffba) = 0000
        [0xbc]: get_npc_id(ffba) = 0000
        [0xbc]: get_npc_id(ffba) = 0000
        [0xbc]: get_npc_id(ffba) = 0000
        [0xbc]: get_npc_id(ffba) = 0000
        [0xbc]: get_npc_id(ffba) = 0000
        [0xbc]: get_npc_id(ffba) = 0000
        [0xbc]: get_npc_id(ffba) = 0000
        [0x05]: show_npc_face0(ffba, 0000) = 0000
        [0x20]: get_object_position(ffba) = [ 0432, 0a57, 0000 ]
        [0x2b]: get_party_list() = [ 7fd4b7c15620, 7fd4a7c68460, 7fd4a7c69160, 7fd4a7c65440 ]
        [0x73]: get_array_size([ 7fd4b7c15620, 7fd4a7c68460, 7fd4a7c69160, 7fd4a7c65440 ]) = 0004
    Running usecode 0992 (0000, 0000, "@Er, um, I believe I need some fresh air...@", 0001) with event 2, depth 1
    Running usecode 098e () with event 2, depth 2
        [0x2b]: get_party_list() = [ 7fd4b7c15620, 7fd4a7c68460, 7fd4a7c69160, 7fd4a7c65440 ]
        [0x18]: get_item_shape(7fd4b7c15620) = 02d1
        [0x18]: get_item_shape(7fd4a7c68460) = 01e8
        [0x18]: get_item_shape(7fd4a7c69160) = 01e7
        [0x18]: get_item_shape(7fd4a7c65440) = 01d1
    Returning ([ 7fd4b7c15620, 7fd4a7c68460, 7fd4a7c69160, 7fd4a7c65440 ]) from usecode 098e
    ...back into usecode 0992
    
    ...and so on...
    
     
    • Jeff Freedman

      Jeff Freedman - 2020-04-21

      It's been so long since I was debugging usecode, that I've forgotten
      what 'npc_id' is.  Looking a little, it's an SI-only field that gets set
      and tested only by usecode, not by anything else, and it gets saved and
      restored in savegames.  So it looks like it's wrong in the savegame, but
      we don't know how it got that way.  Might be impossible unless we can
      duplicate it in a fresh game.

      On 4/20/20 1:43 PM, Dominik Reichardt wrote:

      This only happens with this savegame both in master and the 1.6
      release. A new game works fine (attached).

      comparing the debug output of bugged vs. working:

      Running usecode 02e6 () with event 2,depth 0
      Running usecode 0954 () with event 2,depth 1
      [0x6f]:is_pc_female() = 0000
      Returning ("milord") from usecode 0954
      ...back into usecode 02e6
      [0x20]:get_object_position(ffba) = [0432,0a57,0000 ]
      [0xbc]:get_npc_id(ffba) = 000a
      [0xbc]:get_npc_id(ffba) = 000a
      [0xbc]:get_npc_id(ffba) = 000a
      [0xbc]:get_npc_id(ffba) = 000a
      [0xbc]:get_npc_id(ffba) = 000a
      [0xbc]:get_npc_id(ffba) = 000a
      [0xbc]:get_npc_id(ffba) = 000a
      [0xbc]:get_npc_id(ffba) = 000a
      [0xbc]:get_npc_id(ffba) = 000a
      Returning from usecode 02e6
      Ending script for 0x7fd4800df230

      working:

      Running usecode 02e6 () with event 2, depth 0
      Running usecode 0954 () with event 2, depth 1
      [0x6f]: is_pc_female() = 0000
      Returning ("milord") from usecode 0954
      ...back into usecode 02e6
      [0x20]: get_object_position(ffba) = [ 0432, 0a57, 0000 ]
      [0xbc]: get_npc_id(ffba) = 0000
      [0xbc]: get_npc_id(ffba) = 0000
      [0xbc]: get_npc_id(ffba) = 0000
      [0xbc]: get_npc_id(ffba) = 0000
      [0xbc]: get_npc_id(ffba) = 0000
      [0xbc]: get_npc_id(ffba) = 0000
      [0xbc]: get_npc_id(ffba) = 0000
      [0xbc]: get_npc_id(ffba) = 0000
      [0xbc]: get_npc_id(ffba) = 0000
      [0x05]: show_npc_face0(ffba, 0000) = 0000
      [0x20]: get_object_position(ffba) = [ 0432, 0a57, 0000 ]
      [0x2b]: get_party_list() = [ 7fd4b7c15620, 7fd4a7c68460, 7fd4a7c69160, 7fd4a7c65440 ]
      [0x73]: get_array_size([ 7fd4b7c15620, 7fd4a7c68460, 7fd4a7c69160, 7fd4a7c65440 ]) = 0004
      Running usecode 0992 (0000, 0000, "@Er, um, I believe I need some fresh air...@", 0001) with event 2, depth 1
      Running usecode 098e () with event 2, depth 2
      [0x2b]: get_party_list() = [ 7fd4b7c15620, 7fd4a7c68460, 7fd4a7c69160, 7fd4a7c65440 ]
      [0x18]: get_item_shape(7fd4b7c15620) = 02d1
      [0x18]: get_item_shape(7fd4a7c68460) = 01e8
      [0x18]: get_item_shape(7fd4a7c69160) = 01e7
      [0x18]: get_item_shape(7fd4a7c65440) = 01d1
      Returning ([ 7fd4b7c15620, 7fd4a7c68460, 7fd4a7c69160, 7fd4a7c65440 ]) from usecode 098e
      ...back into usecode 0992

      ...and so on...

      Attachments:


      [bugs:#2052] https://sourceforge.net/p/exult/bugs/2052/ SI: Lucilla
      love scene bugs out

      Status: open
      Group: Regression
      Created: Sun Apr 19, 2020 10:01 AM UTC by Dominik Reichardt
      Last Updated: Sun Apr 19, 2020 10:01 AM UTC
      Owner: nobody
      Attachments:

      When Lucilla arrives at 3am in her bedroom and you doubleclick on her
      the love scene bugs out. The music changes and right when one of the
      companions would state that he better catch some air, the usecode
      stops working and Lucille remains frozen forever in the wait state.

      I couldn't reproduce with an existing savegame but maybe it needs to
      be started from a new game (will try that later).
      Note: the savegame was started before the palette fix so it has a
      broken one.


      Sent from sourceforge.net because you indicated interest in
      https://sourceforge.net/p/exult/bugs/2052/

      To unsubscribe from further messages, please visit
      https://sourceforge.net/auth/subscriptions/

       

      Related

      Bugs: #2052

  • Marzo Sette Torres Junior

    I was taking a look as well. For reference.

    In one of the paths through the usecode (specifically, with event == 0xD), Lucilla's NPC ID gets set to whatever is the quality of one of the path eggs in the usecode container.

    This path egg is used in a few other places as well. It may be that something else was going on at the same time that set the path egg's quality to a bad value for Lucilla's cutscene, and this ends up breaking both the Lucilla cutscene and that other thing... but only the Lucilla cutscene was visible.

    I believe that the path egg in question is the one with frame 22. Lucilla's ID is 0x10; setting it to 0 in the cheat menu fixes the issue.

    A few places where this same path egg is used:

    • Frigidazzi's cutscene: has its quality set to Frigidazzi's current NPC ID in two spots;
    • Xenka's return: used for playing bells in one place, and to call usecode function 0x109 ("townsman" shape) several times;
    • In Flux Analyzer usecode, for calling its own usecode again;
    • in usecode function 0x49C (Draygan's usecode) to call usecode for NPC 0x9D (Hurd?)
    • in Karnax's usecode, to call usecode function 0x109 ("townsman" shape).

    Of those, the most promising for corrupting the cutscene is likely Frigidazzi; but certainty will require looking into the other usecode functions and see what those functions do.

     
  • Dominik Reichardt

    Another place where usecode seems to stop working is http://exult.sourceforge.net/forum/read.php?f=1&i=1790751&t=1790751
    The buttons in the order shrine to open doors seem to stop working for that user

     

    Last edit: Dominik Reichardt 2020-04-24
  • Dominik Reichardt

    • status: open --> closed-out-of-date