Jump to content

Errors while installing reduced reputation increase


onerous

Recommended Posts

I got a number of possibly harmless errors when installing the slower reputation increase on BGTutu. You can look at the debug info here.

They'll be harmless, yes. (It's caused by existing scripts/dialogs with parse errors in them: the component decompiles and recompiles every script in the game.)

Link to comment
the component decompiles and recompiles every script in the game.
:)

 

Maybe you could avoid that with REPLACE_ACTION_TEXT et al.?

 

For dialogs, probably. (REPLACE_ACTION_TEXT_REGEXP, rather, in an inlined .d file.) For scripts, I don't think so. (dlg files store their action text as plaintext - I think - but bcs files certainly don't.)

 

What's the advantage? As in, is there some reason I shouldn't be decompiling and recompiling every script in the game?

Link to comment

There isn't such an alternative (that I know of) for scripts. However, I suspect you're not changing all scripts, so there shouldn't be a need to decompile all of them. I haven't looked at the component, but that's what I gathered it does from the "decompiles and recompiles every script in the game." As you say, compiled scripts don't store their actions as text, but there should be some way of detecting whether the .bcs contains the command you wish to replace and only then decompile and recompile it. (I doubt that would avoid completely the unfortunate "INSTALLED WITH WARNINGS" messages but it might be an improvement.)

 

Incidentally, DECOMPILE_BCS_TO_BAF then COMPILE_BAF_TO_BCS even with a BUT_ONLY and no other modifications still results in a file write from what I recall.

Link to comment

Using 229 synthax:

 

COPY_EXISTING_REGEXP GLOB ~^.*\.bcs$~ ~^.*\.dlg$~
 PATCH_IF (~%SOURCE_EXT%~ STRING_EQUAL_CASE ~DLG~ && `0 != INDEX_BUFFER (~ReputationInc~)) ||
	   (~%SOURCE_EXT%~ STRING_EQUAL_CASE ~BCS~ && `0 != INDEX_BUFFER (~%WNL%163OB~))
 THEN BEGIN
PATCH_TRY
  DECOMPILE_AND_PATCH BEGIN
	REPLACE_TEXTUALLY this that
  END
WITH DEFAULT
  PATCH_WARN ~WARNING: couldn't patch %SOURCE_FILE%, some mod broke it; leaving it untouched.~
END
 END
BUT_ONLY

Link to comment
Using 229 synthax:

 

COPY_EXISTING_REGEXP GLOB ~^.*\.bcs$~ ~^.*\.dlg$~
 PATCH_IF (~%SOURCE_EXT%~ STRING_EQUAL_CASE ~DLG~ && `0 != INDEX_BUFFER (~ReputationInc~)) ||
	   (~%SOURCE_EXT%~ STRING_EQUAL_CASE ~BCS~ && `0 != INDEX_BUFFER (~%WNL%163OB~))
 THEN BEGIN
PATCH_TRY
  DECOMPILE_AND_PATCH BEGIN
	REPLACE_TEXTUALLY this that
  END
WITH DEFAULT
  PATCH_WARN ~WARNING: couldn't patch %SOURCE_FILE%, some mod broke it; leaving it untouched.~
END
 END
BUT_ONLY

 

Wow.

Link to comment

I'd also like to add that after applying the current version of the component the following DLG files are reported corrupted by NI:

File: BANMER.DLG  Offset: 636h  Error message: Text(636h) overlaps Text(636h) by 38 bytes
File: BANMER.DLG  Offset: 636h  Error message: 38 unused bytes between Text(636h) and Text(65ch)
File: SARBAR01.DLG  Offset: bb6h  Error message: Text(bb6h) overlaps Text(bb6h) by 73 bytes
File: SARBAR01.DLG  Offset: bb6h  Error message: 73 unused bytes between Text(bb6h) and Text(bffh)
File: SARPROVM.DLG  Offset: 5edh  Error message: Text(5edh) overlaps Text(5edh) by 37 bytes
File: SARPROVM.DLG  Offset: 5edh  Error message: 37 unused bytes between Text(5edh) and Text(612h)
File: SCSARLES.DLG  Offset: e24h  Error message: Text(e24h) overlaps Text(e24h) by 37 bytes
File: SCSARLES.DLG  Offset: e24h  Error message: 37 unused bytes between Text(e24h) and Text(e49h)
File: UHFARM01.DLG  Offset: 36eh  Error message: Text(36eh) overlaps Text(36eh) by 41 bytes
File: UHFARM01.DLG  Offset: 36eh  Error message: 41 unused bytes between Text(36eh) and Text(397h)
File: WISH25.DLG  Offset: b50h  Error message: Text(b50h) overlaps Text(b50h) by 22 bytes
File: WISH25.DLG  Offset: b50h  Error message: 22 unused bytes between Text(b50h) and Text(b66h)

No other mods modify them before this component.

Link to comment

I used David's code, WeiDU 228.

Tried also the latest build from Git, the result is the same. If installing just Fixpack, SCSII main component and this one, there's even more corrupted files.

I'll try your code next with the latest WeiDU from Git.

Link to comment

Yes. Just checked with 227.

 

Update: About your code. I slightly modified it to be

COPY_EXISTING_REGEXP GLOB ~^.*\.bcs$~ ~override~
					  ~^.*\.dlg$~ ~override~
 PATCH_IF (~%SOURCE_EXT%~ STRING_EQUAL_CASE ~DLG~ && `0 != INDEX_BUFFER (~ReputationInc~)) ||
	   (~%SOURCE_EXT%~ STRING_EQUAL_CASE ~BCS~ && `0 != INDEX_BUFFER (~%WNL%163OB~))
 THEN BEGIN
PATCH_TRY
  DECOMPILE_AND_PATCH BEGIN
	REPLACE_TEXTUALLY ~ReputationInc(1)~ ~SetGlobal("DMWWRepBoost","GLOBAL",1)~
	REPLACE_TEXTUALLY ~ReputationInc(2)~ ~ReputationInc(1)~
  END
WITH DEFAULT
  PATCH_WARN ~WARNING: couldn't patch %SOURCE_FILE%, some mod broke it; leaving it untouched.~
END
 END
BUT_ONLY

I can say significantly less files are being patched (with 22808). Something is not right.

Link to comment

Well, my code decompiles and recompiles basically every dialog file in the game, but all it does to them is a REPLACE_TEXTUALLY on a chunk of the ACTION block, so unless I'm seriously missing something or (less likely) there's a bug in WEIDU, it sounds like a false positive. Have you checked the files to see if they're actually corrupted?

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...