Changes between Initial Version and Version 1 of Ticket #12019, comment 3

12/24/20 04:57:43 (3 years ago)


  • Ticket #12019, comment 3

    initial v1  
    1 I had a deeper look at the usecode(script) and disassembly last night but nothing jumped out as the reason these events ''should'' be blocked.  Obviously they are in the original game though, I just have to work out how.  Some notes for my memory:
     1I had a deeper look at the usecode(script) and these events ''should'' be blocked.
     3Here's my investigation notes for my own memory:
    35* Use and Schedule event code are the same as the disassembly of the original game
    46* Usecode class ids are all correct (adjusted from shape nos as the original game does)
    57* Implementation of 0x78 (exclude) opcode is correct
    6 * BENTIC::use() is exclusive proctype 0x207 but has no other code to stop other things happening
    7 * BENTIC::enterFastArea() spawns BENTIC::3A25, which randomly spawns BENTIC::3AA1 (proctype 0x205) where he barks the book reading notes ("I never knew that..", "Fascinating!" etc)
     8* BENTIC::enterFastArea():
     9  * kills any 0x205 type processes
     10  * spawns BENTIC::3A25 (proctype 0x205, not marked exclusive) which:
     11     * stops any animations
     12     * does another animation
     13     * gets a random value between 0x3C and 0x64
     14     * waits for that many timer ticks
     15     * spawns BENTIC::3AA1 (proctype 0x205, not marked exclusive) where he barks the book reading notes ("I never knew that..", "Fascinating!" etc)
     16* BENTIC::use() is exclusive proctype 0x207, and spawns METHOD::0E4F which is a general conversation intro which:
     17  * checks if the npc is dead and:
     18     * If dead, kills proctype 0x207(use)
     19     * If not, kills proctype 0x205(scheduled actions), 0x200, 0x0F0(animation), 0x204(pathfinding), and sets avatar in stasis, has them say random things if the avatar is invisible, sets the `somebodyTalking` global, etc.
     21So this *should* kill the process, but for some reason it doesn't? I will try tracing it around this bit to see why.