Posted by: the bigg
« on: August 27, 2010, 01:55:13 PM »The bug, in fact, was severe enough to warrant uploading a new version post-haste.
PRINT "Patching dialogue files, this will take some time..."
COPY_EXISTING_REGEXP GLOB ~^.+\.dlg$~ ~override~
PATCH_IF ( SOURCE_SIZE > 0x33 ) BEGIN
PATCH_PRINT "%SOURCE_FILE%"
DECOMPILE_DLG_TO_D
REFACTOR_D_TRIGGER CASE_INSENSITIVE EXACT_MATCH ~StateCheck(Myself,STATE_CHARMED)~ ~OR(2) StateCheck(Myself,STATE_CHARMED) Global("CHARMED","LOCALS",1)~
COMPILE_D_TO_DLG
END
IF ~StateCheck.Myself.STATE_CHARMED~
BUT_ONLY_IF_IT_CHANGES
PRINT "Patching dialogue files, this will take some time..."
COPY_EXISTING_REGEXP GLOB ~^.+\.dlg$~ ~override~
PATCH_IF ( SOURCE_SIZE > 0x33 ) BEGIN
PATCH_PRINT "%SOURCE_FILE%"
DECOMPILE_DLG_TO_D
REFACTOR_D_TRIGGER CASE_INSENSITIVE EXACT_MATCH ~StateCheck(Myself,STATE_CHARMED)~ ~OR(2)
StateCheck(Myself,STATE_CHARMED)
Global("CHARMED","LOCALS",1)~
COMPILE_D_TO_DLG
END
IF ~StateCheck.Myself.STATE_CHARMED~
BUT_ONLY_IF_IT_CHANGES
OR(2)
StateCheck(Myself,STATE_CHARMED)
StateCheck(Myself,STATE_CHARMED)
ACTION_PHP_EACH ~sounds~ AS ~index~ => ~sound~ BEGIN
ACTION_IF (NOT FILE_EXISTS_IN_GAME ~%sound%.wav~) BEGIN
MOVE ~SpellPackB6/Audio/%sound%.wav~ ~override~
END
END
into this ACTION_PHP_EACH ~sounds~ AS ~index~ => ~sound~ BEGIN
ACTION_IF (NOT FILE_EXISTS ~override/%sound%.wav~) BEGIN
MOVE ~SpellPackB6/Audio/%sound%.wav~ ~override~
END
END
fixed what I was dealing with. This will still look for duplicates in the override, but will allow existing in-game sounds to be overriden.The script copies a new .bat file at each install, which gets deleted at uninstall, because it's done by WeiDU.Yes... but that's not a problem. All the .bat does is ensure that there is a .wav version of each sound file in the folder. If there are .wav versions already in the folder, the .bat doesn't need to do anything.Code: [Select]COPY ~SpellPackB5/Audio/convert_win.bat~ ~SpellPackB5/Audio/win%AUDIO_INDEX%.bat~
This blank .bat file is then appended if it does not see a .wav file in the audio folder. But since there are leftovers at reinstall, the .bat file does not get appended.
-Galactygon
ACTION_PHP_EACH ~sounds~ AS ~index~ => ~sound~ BEGIN
ACTION_IF (NOT FILE_EXISTS_IN_GAME ~%sound%.wav~) BEGIN
MOVE ~your_mod/Audio/%sound%.wav~ ~override~
END
END
COPY ~SpellPackB5/Audio/convert_win.bat~ ~SpellPackB5/Audio/win%AUDIO_INDEX%.bat~
In fact, it's necessary to remove .wav files at uninstall. Because if they aren't, this block will return false at reinstall, and the sounds will not be appended to the .bat file, so the sounds will not be installed at reinstall.I can't reproduce this. What you're suggesting shouldn't happen, because if the .wav already exists, then yes, the sound won't be appended to the script that converts .ogg to .wav (because it's already in .wav format). However, the sounds that are copied over do not depend on what was converted - every sound you specify that exists as a .wav in the folder should be installed.Code: [Select]ACTION_IF (NOT FILE_EXISTS ~SpellPackB5/Audio/%sound%.wav~) BEGIN
COPY ~SpellPackB5/Audio/null.wav~ ~SpellPackB5/Audio/%sound%.wav~
APPEND_OUTER ~SpellPackB5/Audio/win%AUDIO_INDEX%.bat~ ~oggdec %sound%.ogg~
APPEND_OUTER ~SpellPackB5/Audio/osx%AUDIO_INDEX%.sh~ ~SpellPackB5/Audio/sox SpellPackB5/Audio/%sound%.ogg SpellPackB5/Audio/%sound%.wav~
APPEND_OUTER ~SpellPackB5/Audio/lin%AUDIO_INDEX%.sh~ ~oggdec SpellPackB5/Audio/%sound%.ogg~
END
Testing confirms this.
-Galactygon
ACTION_IF (NOT FILE_EXISTS ~SpellPackB5/Audio/%sound%.wav~) BEGIN
COPY ~SpellPackB5/Audio/null.wav~ ~SpellPackB5/Audio/%sound%.wav~
APPEND_OUTER ~SpellPackB5/Audio/win%AUDIO_INDEX%.bat~ ~oggdec %sound%.ogg~
APPEND_OUTER ~SpellPackB5/Audio/osx%AUDIO_INDEX%.sh~ ~SpellPackB5/Audio/sox SpellPackB5/Audio/%sound%.ogg SpellPackB5/Audio/%sound%.wav~
APPEND_OUTER ~SpellPackB5/Audio/lin%AUDIO_INDEX%.sh~ ~oggdec SpellPackB5/Audio/%sound%.ogg~
END
FILE_CONTAINS accepts only paths to actual files. If the file doesn't exist, it spits out an error.That's 100% correct.
With FILE_CONTAINS_EVALUATED,
If you specify a filename:
1) If the file exists in the main directory (e.g. baldur.ini), check it.
2) Else if the file exists in the override directory, check it.
3) Else if the file exists in the game biffs, check it.
4) Else return 0.
If you specify a path to a file:
1) If the file exists, check it.
2) Else return 0.
COPY_EXISTING ~SPPR302.spl~ ~override~
SPRINT gh "CLERIC_CHANT"
PATCH_IF (FILE_CONTAINS_EVALUATED (~override/LCLIST_SPELLS.2da~ ~%gh%~)) BEGIN
PATCH_PRINT "Chanting..."
END
PATCH_IF (FILE_CONTAINS_EVALUATED (~override/LCLIST_SPELLS.2da~ ~CLERIC_CHANT~)) BEGIN
PATCH_PRINT "Chanting..."
END
PATCH_IF (FILE_CONTAINS ~override/LCLIST_SPELLS.2da~ ~CLERIC_CHANT~) BEGIN
PATCH_PRINT "Chanting..."
END
BUT_ONLY
worked.COPY ~TestMod/LCLIST_SPELLS.2da~ ~override~
COPY_EXISTING ~SPPR302.spl~ ~override~
SPRINT gh "CLERIC_CHANT"
PATCH_IF (FILE_CONTAINS_EVALUATED (~LCLIST_SPELLS.2da~ ~%gh%~)) BEGIN
PATCH_PRINT "Chanting..."
END
PATCH_IF (FILE_CONTAINS_EVALUATED (~LCLIST_SPELLS.2da~ ~CLERIC_CHANT~)) BEGIN
PATCH_PRINT "Chanting..."
END
BUT_ONLY
It prints out both for me just fine.COPY_EXISTING ~SPPR302.spl~ ~override~
SPRINT gh "CLERIC_CHANT"
PATCH_IF (FILE_CONTAINS_EVALUATED (~override/LCLIST_SPELLS.2da~ ~%gh%~)) BEGIN
PATCH_PRINT "Chanting..."
END
PATCH_IF (FILE_CONTAINS_EVALUATED (~override/LCLIST_SPELLS.2da~ ~CLERIC_CHANT~)) BEGIN
PATCH_PRINT "Chanting..."
END
PATCH_IF (FILE_CONTAINS ~override/LCLIST_SPELLS.2da~ ~CLERIC_CHANT~) BEGIN
PATCH_PRINT "Chanting..."
END
BUT_ONLY
COPY_EXISTING ~SPPR302.spl~ ~override~
SPRINT gh "CLERIC_CHANT"
PATCH_IF (FILE_CONTAINS_EVALUATED (~LCLIST_SPELLS.2da~ ~%gh%~)) BEGIN
PATCH_PRINT "Chanting..."
END
PATCH_IF (FILE_CONTAINS_EVALUATED (~LCLIST_SPELLS.2da~ ~CLERIC_CHANT~)) BEGIN
PATCH_PRINT "Chanting..."
END
PATCH_IF (SOURCE_SIZE > 0x71 AND !(FILE_CONTAINS_EVALUATED (~LCLIST_PATCHIGNORE_TELEPORT.2da~ ~%SOURCE_FILE%~)))
which always worked for me.