A Future Pilot

Griff Missing Fix

Recommended Posts

I'm gonna post my discoveries regarding this bug here, and my progress in fixing it.

 

To begin with, the description of the bug as usually reported is "If you open the door to Griff's cell in the Sand People Enclave before getting the quest for him from Mission, he won't appear after talking to the Czerka officer."

 

The first thing I noticed when investigating this is that the bug can't be caused by the door because that door isn't differentiated from any of the other "Wood Slat Doors" in the compound. There is a single .utd file (sw_door_tat_005.utd) for all of those doors. (The module is m20aa.git inside tat_m20aa.rim).

 

I then went digging into the module and scripts and such, and after a lot of hassle I was able to get the bytecode for the OnEnter script of the module where Griff is actually spawned (this is from xoreos-tools ncsdis):

 

k_ptat20aa_enter.ncs:

main: ; void main()
  00000C94 02 06                      RSADDO
  00000C96 05 00 0224 00              ACTION GetFirstPC 0
  00000C9B 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  00000CA3 1B 00 FFFFFFFC             MOVSP -4
  00000CA9 02 06                      RSADDO
  00000CAB 04 05 str                  CONSTS "tat17_vaporator"
  00000CBE 03 01 FFFFFFF4 0004        CPTOPSP -12 4
  00000CC6 05 00 001E 02              ACTION GetItemPossessedBy 2
  00000CCB 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  00000CD3 1B 00 FFFFFFFC             MOVSP -4
  00000CD9 02 06                      RSADDO
  00000CDB 04 03 00000000             CONSTI 0
  00000CE1 04 05 str                  CONSTS "tat20_09chief_01"
  00000CF5 05 00 00C8 02              ACTION GetObjectByTag 2
  00000CFA 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  00000D02 1B 00 FFFFFFFC             MOVSP -4
  00000D08 04 03 00000004             CONSTI 4
  00000D0E 04 05 str                  CONSTS "tat_AreaLocator"
  00000D21 05 00 0245 02              ACTION SetGlobalNumber 2
  00000D26 04 05 str                  CONSTS "Mis_MissionTalk"
  00000D39 05 00 0244 01              ACTION GetGlobalNumber 1
  00000D3E 04 03 00000009             CONSTI 9
  00000D44 0B 20                      EQII
  00000D46 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00000D4E 1F 00 00000018             JZ loc_00000D66
  00000D54 02 03                      RSADDI
  00000D56 1E 00 000000F6             JSR sub_00000E4C
  00000D5C 04 03 00000000             CONSTI 0
  00000D62 0B 20                      EQII
  00000D64 06 20                      LOGANDII
loc_00000D66:
  00000D66 1F 00 0000003B             JZ loc_00000DA1
  00000D6C 04 03 00000001             CONSTI 1
  00000D72 1E 00 000001F4             JSR sub_00000F66
  00000D78 2C 01 10 00000264 0000000C STORESTATE sta_00000D88 612 12
  00000D82 1D 00 0000000E             JMP loc_00000D90
  -------- -------------------------- ---
sta_00000D88:
  00000D88 1E 00 0000051E             JSR sub_000012A6
  00000D8E 20 00                      RETN
  -------- -------------------------- ---
loc_00000D90:
  00000D90 04 04 3F800000             CONSTF 1.000000
  00000D96 05 00 0007 02              ACTION DelayCommand 2
  00000D9B 1D 00 00000006             JMP loc_00000DA1
  -------- -------------------------- ---
loc_00000DA1:
  00000DA1 03 01 FFFFFFF8 0004        CPTOPSP -8 4
  00000DA9 05 00 002A 01              ACTION GetIsObjectValid 1
  00000DAE 04 03 00000001             CONSTI 1
  00000DB4 0B 20                      EQII
  00000DB6 1F 00 0000008E             JZ loc_00000E44
  00000DBC 04 04 3F333333             CONSTF 0.700000
  00000DC2 05 00 02F7 01              ACTION NoClicksFor 1
  00000DC7 2C 01 10 00000264 0000000C STORESTATE sta_00000DD7 612 12
  00000DD1 1D 00 00000062             JMP loc_00000E33
  -------- -------------------------- ---
sta_00000DD7:
  00000DD7 2C 01 10 00000264 0000000C STORESTATE sta_00000DE7 612 12
  00000DE1 1D 00 00000043             JMP loc_00000E24
  -------- -------------------------- ---
sta_00000DE7:
  00000DE7 04 05 str                  CONSTS ""
  00000DEB 04 05 str                  CONSTS ""
  00000DEF 04 05 str                  CONSTS ""
  00000DF3 04 05 str                  CONSTS ""
  00000DF7 04 05 str                  CONSTS ""
  00000DFB 04 05 str                  CONSTS ""
  00000DFF 04 03 00000001             CONSTI 1
  00000E05 04 03 00000000             CONSTI 0
  00000E0B 04 03 00000000             CONSTI 0
  00000E11 04 05 str                  CONSTS ""
  00000E15 03 01 FFFFFFCC 0004        CPTOPSP -52 4
  00000E1D 05 00 00CC 0B              ACTION ActionStartConversation 11
  00000E22 20 00                      RETN
  -------- -------------------------- ---
loc_00000E24:
  00000E24 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00000E2C 05 00 0006 02              ACTION AssignCommand 2
  00000E31 20 00                      RETN
  -------- -------------------------- ---
loc_00000E33:
  00000E33 04 04 3F000000             CONSTF 0.500000
  00000E39 05 00 0007 02              ACTION DelayCommand 2
  00000E3E 1D 00 00000006             JMP loc_00000E44
  -------- -------------------------- ---
loc_00000E44:
  00000E44 1B 00 FFFFFFF4             MOVSP -12
  00000E4A 20 00                      RETN
  -------- -------------------------- ---
sub_00000E4C: ; int sub_00000E4C()
  00000E4C 02 03                      RSADDI
  00000E4E 27 01 FFFFFD9C 0004        CPTOPBP -612 4
  00000E56 04 06 00000000             CONSTO 0
  00000E5C 1E 00 00000022             JSR sub_00000E7E
  00000E62 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  00000E6A 1B 00 FFFFFFFC             MOVSP -4
  00000E70 1D 00 0000000C             JMP loc_00000E7C
  -------- -------------------------- ---
  00000E76 1B 00 FFFFFFFC             MOVSP -4
loc_00000E7C:
  00000E7C 20 00                      RETN
  -------- -------------------------- ---
sub_00000E7E: ; int sub_00000E7E(object, int)
  00000E7E 02 03                      RSADDI
  00000E80 03 01 FFFFFFF4 0004        CPTOPSP -12 4
  00000E88 04 03 00000000             CONSTI 0
  00000E8E 0D 20                      GEQII
  00000E90 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00000E98 1F 00 00000018             JZ loc_00000EB0
  00000E9E 03 01 FFFFFFF0 0004        CPTOPSP -16 4
  00000EA6 04 03 00000013             CONSTI 19
  00000EAC 10 20                      LEQII
  00000EAE 06 20                      LOGANDII
loc_00000EB0:
  00000EB0 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00000EB8 1F 00 00000015             JZ loc_00000ECD
  00000EBE 03 01 FFFFFFF4 0004        CPTOPSP -12 4
  00000EC6 05 00 002A 01              ACTION GetIsObjectValid 1
  00000ECB 06 20                      LOGANDII
loc_00000ECD:
  00000ECD 1F 00 0000006B             JZ loc_00000F38
  00000ED3 03 01 FFFFFFF4 0004        CPTOPSP -12 4
  00000EDB 03 01 FFFFFFF4 0004        CPTOPSP -12 4
  00000EE3 05 00 02A7 02              ACTION GetLocalBoolean 2
  00000EE8 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  00000EF0 1B 00 FFFFFFFC             MOVSP -4
  00000EF6 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00000EFE 04 03 00000000             CONSTI 0
  00000F04 0E 20                      GTII
  00000F06 1F 00 0000002C             JZ loc_00000F32
  00000F0C 04 03 00000001             CONSTI 1
  00000F12 01 01 FFFFFFEC 0004        CPDOWNSP -20 4
  00000F1A 1B 00 FFFFFFF8             MOVSP -8
  00000F20 1D 00 0000003E             JMP loc_00000F5E
  -------- -------------------------- ---
  00000F26 1B 00 FFFFFFFC             MOVSP -4
  00000F2C 1D 00 00000006             JMP loc_00000F32
  -------- -------------------------- ---
loc_00000F32:
  00000F32 1D 00 00000006             JMP loc_00000F38
  -------- -------------------------- ---
loc_00000F38:
  00000F38 04 03 00000000             CONSTI 0
  00000F3E 01 01 FFFFFFEC 0004        CPDOWNSP -20 4
  00000F46 1B 00 FFFFFFF8             MOVSP -8
  00000F4C 1D 00 00000012             JMP loc_00000F5E
  -------- -------------------------- ---
  00000F52 1B 00 FFFFFFFC             MOVSP -4
  00000F58 1B 00 FFFFFFFC             MOVSP -4
loc_00000F5E:
  00000F5E 1B 00 FFFFFFF8             MOVSP -8
  00000F64 20 00                      RETN
  -------- -------------------------- ---
sub_00000F66: ; void sub_00000F66(int)
  00000F66 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00000F6E 04 03 00000001             CONSTI 1
  00000F74 0B 20                      EQII
  00000F76 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00000F7E 1F 00 00000014             JZ loc_00000F92
  00000F84 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00000F8C 1F 00 00000016             JZ loc_00000FA2
loc_00000F92:
  00000F92 03 01 FFFFFFF8 0004        CPTOPSP -8 4
  00000F9A 04 03 00000000             CONSTI 0
  00000FA0 0B 20                      EQII
loc_00000FA2:
  00000FA2 07 20                      LOGORII
  00000FA4 1F 00 00000028             JZ loc_00000FCC
  00000FAA 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00000FB2 27 01 FFFFFD9C 0004        CPTOPBP -612 4
  00000FBA 04 06 00000000             CONSTO 0
  00000FC0 1E 00 0000001A             JSR sub_00000FDA
  00000FC6 1D 00 00000006             JMP loc_00000FCC
  -------- -------------------------- ---
loc_00000FCC:
  00000FCC 1D 00 00000006             JMP loc_00000FD2
  -------- -------------------------- ---
loc_00000FD2:
  00000FD2 1B 00 FFFFFFFC             MOVSP -4
  00000FD8 20 00                      RETN
  -------- -------------------------- ---
sub_00000FDA: ; void sub_00000FDA(object, int, int)
  00000FDA 02 03                      RSADDI
  00000FDC 05 00 0224 00              ACTION GetFirstPC 0
  00000FE1 05 00 00A6 01              ACTION GetHitDice 1
  00000FE6 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  00000FEE 1B 00 FFFFFFFC             MOVSP -4
  00000FF4 03 01 FFFFFFF0 0004        CPTOPSP -16 4
  00000FFC 04 03 00000001             CONSTI 1
  00001002 0B 20                      EQII
  00001004 1F 00 000001D4             JZ loc_000011D8
  0000100A 03 01 FFFFFFF4 0004        CPTOPSP -12 4
  00001012 27 01 FFFFFDC8 0004        CPTOPBP -568 4
  0000101A 0B 20                      EQII
  0000101C 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00001024 1F 00 00000014             JZ loc_00001038
  0000102A 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00001032 1F 00 00000018             JZ loc_0000104A
loc_00001038:
  00001038 03 01 FFFFFFF0 0004        CPTOPSP -16 4
  00001040 27 01 FFFFFDDC 0004        CPTOPBP -548 4
  00001048 0B 20                      EQII
loc_0000104A:
  0000104A 07 20                      LOGORII
  0000104C 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00001054 1F 00 00000014             JZ loc_00001068
  0000105A 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00001062 1F 00 00000018             JZ loc_0000107A
loc_00001068:
  00001068 03 01 FFFFFFF0 0004        CPTOPSP -16 4
  00001070 27 01 FFFFFDE0 0004        CPTOPBP -544 4
  00001078 0B 20                      EQII
loc_0000107A:
  0000107A 07 20                      LOGORII
  0000107C 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00001084 1F 00 00000014             JZ loc_00001098
  0000108A 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00001092 1F 00 00000018             JZ loc_000010AA
loc_00001098:
  00001098 03 01 FFFFFFF0 0004        CPTOPSP -16 4
  000010A0 27 01 FFFFFDE4 0004        CPTOPBP -540 4
  000010A8 0B 20                      EQII
loc_000010AA:
  000010AA 07 20                      LOGORII
  000010AC 1F 00 00000026             JZ loc_000010D2
  000010B2 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  000010BA 04 03 0000000F             CONSTI 15
  000010C0 16 20                      MULII
  000010C2 05 00 0224 00              ACTION GetFirstPC 0
  000010C7 05 00 0189 02              ACTION GiveXPToCreature 2
  000010CC 1D 00 00000106             JMP loc_000011D2
  -------- -------------------------- ---
loc_000010D2:
  000010D2 03 01 FFFFFFF4 0004        CPTOPSP -12 4
  000010DA 27 01 FFFFFDCC 0004        CPTOPBP -564 4
  000010E2 0B 20                      EQII
  000010E4 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  000010EC 1F 00 00000014             JZ loc_00001100
  000010F2 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  000010FA 1F 00 00000018             JZ loc_00001112
loc_00001100:
  00001100 03 01 FFFFFFF0 0004        CPTOPSP -16 4
  00001108 27 01 FFFFFDE8 0004        CPTOPBP -536 4
  00001110 0B 20                      EQII
loc_00001112:
  00001112 07 20                      LOGORII
  00001114 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  0000111C 1F 00 00000014             JZ loc_00001130
  00001122 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  0000112A 1F 00 00000018             JZ loc_00001142
loc_00001130:
  00001130 03 01 FFFFFFF0 0004        CPTOPSP -16 4
  00001138 27 01 FFFFFDD8 0004        CPTOPBP -552 4
  00001140 0B 20                      EQII
loc_00001142:
  00001142 07 20                      LOGORII
  00001144 1F 00 00000026             JZ loc_0000116A
  0000114A 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00001152 04 03 00000014             CONSTI 20
  00001158 16 20                      MULII
  0000115A 05 00 0224 00              ACTION GetFirstPC 0
  0000115F 05 00 0189 02              ACTION GiveXPToCreature 2
  00001164 1D 00 0000006E             JMP loc_000011D2
  -------- -------------------------- ---
loc_0000116A:
  0000116A 03 01 FFFFFFF4 0004        CPTOPSP -12 4
  00001172 27 01 FFFFFDD0 0004        CPTOPBP -560 4
  0000117A 0B 20                      EQII
  0000117C 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00001184 1F 00 00000014             JZ loc_00001198
  0000118A 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00001192 1F 00 00000018             JZ loc_000011AA
loc_00001198:
  00001198 03 01 FFFFFFF0 0004        CPTOPSP -16 4
  000011A0 27 01 FFFFFDD4 0004        CPTOPBP -556 4
  000011A8 0B 20                      EQII
loc_000011AA:
  000011AA 07 20                      LOGORII
  000011AC 1F 00 00000026             JZ loc_000011D2
  000011B2 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  000011BA 04 03 0000000A             CONSTI 10
  000011C0 16 20                      MULII
  000011C2 05 00 0224 00              ACTION GetFirstPC 0
  000011C7 05 00 0189 02              ACTION GiveXPToCreature 2
  000011CC 1D 00 00000006             JMP loc_000011D2
  -------- -------------------------- ---
loc_000011D2:
  000011D2 1D 00 00000006             JMP loc_000011D8
  -------- -------------------------- ---
loc_000011D8:
  000011D8 03 01 FFFFFFF4 0004        CPTOPSP -12 4
  000011E0 04 03 00000000             CONSTI 0
  000011E6 0D 20                      GEQII
  000011E8 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  000011F0 1F 00 00000018             JZ loc_00001208
  000011F6 03 01 FFFFFFF0 0004        CPTOPSP -16 4
  000011FE 04 03 00000013             CONSTI 19
  00001204 10 20                      LEQII
  00001206 06 20                      LOGANDII
loc_00001208:
  00001208 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00001210 1F 00 00000015             JZ loc_00001225
  00001216 03 01 FFFFFFF4 0004        CPTOPSP -12 4
  0000121E 05 00 002A 01              ACTION GetIsObjectValid 1
  00001223 06 20                      LOGANDII
loc_00001225:
  00001225 1F 00 00000073             JZ loc_00001298
  0000122B 03 01 FFFFFFF0 0004        CPTOPSP -16 4
  00001233 04 03 00000001             CONSTI 1
  00001239 0B 20                      EQII
  0000123B 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00001243 1F 00 00000014             JZ loc_00001257
  00001249 03 01 FFFFFFFC 0004        CPTOPSP -4 4
  00001251 1F 00 00000016             JZ loc_00001267
loc_00001257:
  00001257 03 01 FFFFFFEC 0004        CPTOPSP -20 4
  0000125F 04 03 00000000             CONSTI 0
  00001265 0B 20                      EQII
loc_00001267:
  00001267 07 20                      LOGORII
  00001269 1F 00 00000029             JZ loc_00001292
  0000126F 03 01 FFFFFFF0 0004        CPTOPSP -16 4
  00001277 03 01 FFFFFFF0 0004        CPTOPSP -16 4
  0000127F 03 01 FFFFFFF0 0004        CPTOPSP -16 4
  00001287 05 00 02A8 03              ACTION SetLocalBoolean 3
  0000128C 1D 00 00000006             JMP loc_00001292
  -------- -------------------------- ---
loc_00001292:
  00001292 1D 00 00000006             JMP loc_00001298
  -------- -------------------------- ---
loc_00001298:
  00001298 1B 00 FFFFFFFC             MOVSP -4
  0000129E 1B 00 FFFFFFF4             MOVSP -12
  000012A4 20 00                      RETN
  -------- -------------------------- ---
sub_000012A6: ; void sub_000012A6()
  000012A6 02 06                      RSADDO
  000012A8 04 05 str                  CONSTS "tat20_wp_griff"
  000012BA 05 00 00C5 01              ACTION GetWaypointByTag 1
  000012BF 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  000012C7 1B 00 FFFFFFFC             MOVSP -4
  000012CD 02 06                      RSADDO
  000012CF 04 03 00000000             CONSTI 0
  000012D5 04 05 str                  CONSTS "tat20_griffguard"
  000012E9 05 00 00C8 02              ACTION GetObjectByTag 2
  000012EE 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  000012F6 1B 00 FFFFFFFC             MOVSP -4
  000012FC 02 06                      RSADDO
  000012FE 04 03 00000001             CONSTI 1
  00001304 04 05 str                  CONSTS "tat20_griffguard"
  00001318 05 00 00C8 02              ACTION GetObjectByTag 2
  0000131D 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  00001325 1B 00 FFFFFFFC             MOVSP -4
  0000132B 02 06                      RSADDO
  0000132D 04 03 00000002             CONSTI 2
  00001333 04 05 str                  CONSTS "tat20_griffguard"
  00001347 05 00 00C8 02              ACTION GetObjectByTag 2
  0000134C 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  00001354 1B 00 FFFFFFFC             MOVSP -4
  0000135A 02 06                      RSADDO
  0000135C 04 03 00000003             CONSTI 3
  00001362 04 05 str                  CONSTS "tat20_griffguard"
  00001376 05 00 00C8 02              ACTION GetObjectByTag 2
  0000137B 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  00001383 1B 00 FFFFFFFC             MOVSP -4
  00001389 02 12                      RSADDE2
  0000138B 03 01 FFFFFFE8 0004        CPTOPSP -24 4
  00001393 05 00 00D5 01              ACTION GetLocation 1
  00001398 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  000013A0 1B 00 FFFFFFFC             MOVSP -4
  000013A6 02 12                      RSADDE2
  000013A8 03 01 FFFFFFE8 0004        CPTOPSP -24 4
  000013B0 05 00 00D5 01              ACTION GetLocation 1
  000013B5 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  000013BD 1B 00 FFFFFFFC             MOVSP -4
  000013C3 02 12                      RSADDE2
  000013C5 03 01 FFFFFFE8 0004        CPTOPSP -24 4
  000013CD 05 00 00D5 01              ACTION GetLocation 1
  000013D2 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  000013DA 1B 00 FFFFFFFC             MOVSP -4
  000013E0 02 12                      RSADDE2
  000013E2 03 01 FFFFFFE8 0004        CPTOPSP -24 4
  000013EA 05 00 00D5 01              ACTION GetLocation 1
  000013EF 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  000013F7 1B 00 FFFFFFFC             MOVSP -4
  000013FD 02 12                      RSADDE2
  000013FF 03 01 FFFFFFE8 0004        CPTOPSP -24 4
  00001407 05 00 00D5 01              ACTION GetLocation 1
  0000140C 01 01 FFFFFFF8 0004        CPDOWNSP -8 4
  00001414 1B 00 FFFFFFFC             MOVSP -4
  0000141A 04 03 00000000             CONSTI 0
  00001420 03 01 FFFFFFE8 0004        CPTOPSP -24 4
  00001428 04 05 str                  CONSTS "tat20_griff"
  00001437 04 03 00000001             CONSTI 1
  0000143D 05 00 00F3 04              ACTION CreateObject 4
  00001442 1B 00 FFFFFFFC             MOVSP -4
  00001448 04 03 00000000             CONSTI 0
  0000144E 03 01 FFFFFFEC 0004        CPTOPSP -20 4
  00001456 04 05 str                  CONSTS "tat20_09warr_01"
  00001469 04 03 00000001             CONSTI 1
  0000146F 05 00 00F3 04              ACTION CreateObject 4
  00001474 1B 00 FFFFFFFC             MOVSP -4
  0000147A 04 03 00000000             CONSTI 0
  00001480 03 01 FFFFFFF0 0004        CPTOPSP -16 4
  00001488 04 05 str                  CONSTS "tat20_09warr_01"
  0000149B 04 03 00000001             CONSTI 1
  000014A1 05 00 00F3 04              ACTION CreateObject 4
  000014A6 1B 00 FFFFFFFC             MOVSP -4
  000014AC 04 03 00000000             CONSTI 0
  000014B2 03 01 FFFFFFF4 0004        CPTOPSP -12 4
  000014BA 04 05 str                  CONSTS "tat20_09warr_01"
  000014CD 04 03 00000001             CONSTI 1
  000014D3 05 00 00F3 04              ACTION CreateObject 4
  000014D8 1B 00 FFFFFFFC             MOVSP -4
  000014DE 04 03 00000000             CONSTI 0
  000014E4 03 01 FFFFFFF8 0004        CPTOPSP -8 4
  000014EC 04 05 str                  CONSTS "tat20_09warr_01"
  000014FF 04 03 00000001             CONSTI 1
  00001505 05 00 00F3 04              ACTION CreateObject 4
  0000150A 1B 00 FFFFFFFC             MOVSP -4
  00001510 1B 00 FFFFFFD8             MOVSP -40
  00001516 20 00                      RETN
  -------- -------------------------- ---
 

Now I'm no expert, but from what I can tell it seems that the only global that is checked before spawning Griff and his 4 guards is "Mis_MissionTalk". (There are a couple "GetIsObjectValid"s in there which I'm not totally sure about yet. I've gotta walk through the code some more, but at first glance I don't think they affect Griff spawning).

 

So now I have to figure out what would cause Mis_MissionTalk to NOT be set to 9. It's originally set to 9 in tat17_10czerk_01.dlg inside tat_17ag_s.rim with:

 

k_hmis_talk9x.nss:

//:: k_hmis_Talk9x
/*
    Sets Mis_MissionTalk at 9
*/
//:: Created By:  Drew K
//:: Copyright (c) 2002 Bioware Corp.
#include "k_inc_debug"
 
 
 
void main()
{
  SetGlobalNumber("Mis_MissionTalk",9);
}
 

Since there are no outside checks in that script, the problem is obviously not the script.

 

My guess at this point is either there is something that would cause that script to not run, or there is something that happens between when you talk to the Czerka officer and when you walk into the Enclave that changes Mis_MissionTalk.

 

I've been able to create a script to spawn Griff if tat_MissCaptive is set to 1 (which is set by another script in that same Czerka dialog), and he hasn't already been spawned by the OnEnter script. Even though this fixes the symptom, it doesn't get at the root of the problem.

 

I haven't been able to reproduce this bug since working on the fix (though I actually got the bug on my first playthrough), so I don't have any save files to check the globals against. If anyone has any thoughts on any of this, or if you'd be willing to make me some save files exhibiting the bug, that would be awesome!

 

Thanks!

Share this post


Link to post
Share on other sites

I was able to find a savefile demonstrating the bug, however on looking through the globals, as far as I can tell there's no reason Griff shouldn't spawn.

 

My best guess now is that the script I posted above check if some object is valid, and if it isn't, Griff isn't spawned (though that shouldn't be the case, since Griff spawning should only be dependent on Mission's conversation point and nothing else).

 

I've added a fix to the Unofficial Patch which forces him to spawn if Mission's conversation is in the right place, and he hasn't already been spawned, but quite frankly I have no idea what causes this to begin with.

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.