If DataFileExists('DLCShiveringIsles.esp') SelectSubPackage '00 Unofficial Shivering Isles Patch'EndIf
; Constants; ---------SetVar vPatches "Sensual Walks Patch ESPs" ; Folder containing Sensual Walks patch ESPs StringLength vPatchLen "%vPatches%\\" ; String length of patch path plus "\" characterSetVar Fwalk "Vwalk" ; Suffix used for Sensual Walks ESP filesStringLength vSfxLen " %Fwalk%" ; String length of suffixSetVar vUOPsfx " - Unofficial Patch" ; Unofficial patch suffix; Unofficial Oblivion and Shivering Isles Patches (UOS); -----------------------------------------------------SetVar vUOSesp "UOS" ; UOS suffix for Sensual Walks ESPsSetVar vUact 0 ; Action operation...; 0 = No UOS processing required; 1 = Unofficial Oblivion Patch processing required; 2 = Unofficial Shivering Isles Patch processing required (Not allowed at presnt); 3 = Unofficial Oblivion Patch and Unofficial Shivering Isles Patch processing requiredSetVar vSelect "Select \"Configure Sensual Walks Unofficial Patches\"\ \"Disable (Only if you are experiencing problems)\""SetVar vCases ""If DataFileExists "Unofficial Oblivion Patch.esp" SetVar vSelect "%vSelect% \"Unofficial Oblivion Patch Only\"" SetVar vCases "Case Unofficial Oblivion Patch Only%NewLine%\ SetVar vUact 1%NewLine%\ SetVar vUOSmods \"%vSpecial%\"%NewLine%\ Break%NewLine%"EndIfIf DataFileExists "Unofficial Shivering Isles Patch.esp" SetVar vSelect "%vSelect% \"|Unofficial Oblivion and Shivering Isles Patches\"" SetVar vCases "%vCases%Case Unofficial Oblivion and Shivering Isles Patches%NewLine%\ SetVar vUact 3%NewLine%\ Break%NewLine%"EndIf; Allow UOS to be disabledIfNot Equal "%vCases%" "" SetVar vCases "%vCases%Case Disable (Only if you are experiencing problems)%NewLine%\ SetVar vUact 0%NewLine%\ Break%NewLine%" ExecLines %vSelect%%NewLine%%vCases%EndSelectEndIf; LoadEarly Processing Control Variables; ======================================SetVar vEarly "" ; Build LoadEarly statements for optional executionSetVar vEtime 98; Establish which Sensual Walks mods can be installed; ===================================================;; Builds a simulated array of all mods that need to be installed by looping through the BAIN folders.; This also establishes which version should be used where there are multiple options.;; vBfolder = Bain folder; vSWesp = Vwalk ESP name; vMaster = Master ESPSetVar vBi 0 ; Simulated array indexSetVar vBprev "" ; Previous BAIN folder numberFor Each PluginFolder vBpath "%vPatches%" False RemoveString vBfolder "%vBpath%" 0 %vPatchLen% ; Folder name Substring vBgroup "%vBfolder%" 4 3 ; Group indicator ; Ignore Group Headings IfNot Equal "%vBgroup%" "===" Substring vBnum "%vBfolder%" 0 3 ; Bain folder number For Each Plugin vSWesp "%vBpath%" Exit ; Only one ESP in each folder EndFor GetFileNameWithoutExtension vSWesp "%vSWesp%" ; Sensual Walks ESP StringLength vESPlen "%vSWesp%" IfNot Equal "%vBnum%" "%vBprev%" ; Establish whether Master ESP is installed iSet vLen %vESPlen% - %vSfxLen% Substring vMaster "%vSWesp%" 0 %vLen% ; Sensual Walks master ESP SetVar vInstall True SelectString %vBnum% Case 000 Break Case 804 SetVar vInstall False ; 804 sixy Eyja HGEC is already processed by earlier Eyja checks. Break Case 002 SetVar vMaster "DLCShiveringIsles" ; Allow for Dark Seducer and Golden Saint Default IfNot DataFileExists "%vMaster%.esp" SetVar vInstall False ; Master is NOT present so nothing to install EndIf Break EndSelect If Equal %vInstall% True iSet vBi %vBi% + 1 SetVar vExec "SetVar vBfolder%vBi% \"%vBfolder%\"" ExecLines %vExec% SetVar vExec "SetVar vSWesp%vBi% \"%vSWesp%\"" ExecLines %vExec% SetVar vExec "SetVar vMaster%vBi% \"%vMaster%\"" ExecLines %vExec% SetVar vBprev "%vBnum%" EndIf Else ; Bain folder number is the same as the previous one, so this is a choice If Equal %vInstall% True StringLength vLen "%vBfolder%" iSet vLen %vLen% - 3 RemoveString vBSfx "%vBfolder%" 0 %vLen% SetVar vName "None" ; Determines whether Version processing required ; Process Unofficial Patch choices SelectString %vBSfx% Case UOP If Equal %vUact% 1 SetVar vExec "SetVar vBfolder%vBi% \"%vBfolder%\"" ExecLines %vExec% SetVar vExec "SetVar vSWesp%vBi% \"%vSWesp%\"" ExecLines %vExec% SetVar vExec "SetVar vMaster%vBi% \"Unofficial Oblivion Patch\"" ExecLines %vExec% EndIf Break Case USI If Equal %vUact% 3 SetVar vExec "SetVar vBfolder%vBi% \"%vBfolder%\"" ExecLines %vExec% SetVar vExec "SetVar vSWesp%vBi% \"%vSWesp%\"" ExecLines %vExec% SetVar vExec "SetVar vMaster%vBi% \"Unofficial Shivering Isles Patch\"" ExecLines %vExec% EndIf Break Case UPP ; Check if there is an Unofficial Patch version for this plugin If DataFileExists "%vMaster%%vUOPsfx%.esp" SetVar vExec "SetVar vBfolder%vBi% \"%vBfolder%\"" ExecLines %vExec% SetVar vExec "SetVar vSWesp%vBi% \"%vSWesp%\"" ExecLines %vExec% SetVar vExec "SetVar vMaster%vBi% \"%vMaster%%vUOPsfx%\"" ExecLines %vExec% EndIf Break Default RemoveString vName "%vBfolder%" 0 4 Break EndSelect ; Process version dependant installs SelectString %vName% Case None Break Case Frostcrag Reborn If DataFileExists "Meshes\\Architecture\\MagesTower\\MagesTower01RETEX.NIF" SetVar vExec "SetVar vBfolder%vBi% \"%vBfolder%\"" ExecLines %vExec% EndIf Break Case Frostcrag Spire Revisited If DataFileExists "Meshes\\Architecture\\MagesTower\\ELchasmcornerinside01c.nif" SetVar vExec "SetVar vBfolder%vBi% \"%vBfolder%\"" ExecLines %vExec% EndIf Break Case Companion Vilja - Non-Essential Select "Specify which Companion Vilja mod you are using" \ "|Companion Vilja - Essential" "Companion Vilja - Not Essential" Case Companion Vilja - Not Essential SetVar vExec "SetVar vBfolder%vBi% \"%vBfolder%\"" ExecLines %vExec% Break EndSelect Break Case The Romancing of Eyja - Abriael Human version SetVar vSelect "Select \"Specify which Eyja mod you are using\" \"The Romancing of Eyja\"" SetVar vCases "" SetVar vBar "|" If DataFileExists "Abriael_Human.esp" SetVar vSelect "%vSelect% \"%vBar%The Romancing of Eyja - Abriael Human version\"" SetVar vBar "" SetVar vCases "%vCases%\ Case The Romancing of Eyja - Abriael Human version%NewLine%\ SetVar vBfolder%vBi% \"%vBfolder%\"%NewLine%\ Break%NewLine%" EndIf If DataFileExists "CuteElf11.esp" If DataFileExists "HentaiChinaDress.esp" SetVar vSelect "%vSelect% \"%vBar%sixy Eyja HGEC\"" SetVar vCases "%vCases%\ Case sixy Eyja HGEC%NewLine%\ SetVar vBfolder%vBi% \"804 sixy Eyja HGEC\"%NewLine%\ Break%NewLine%" EndIf EndIf IfNot Equal vCases "" ExecLines %vSelect%%NewLine%%vCases%%NewLine%EndSelect EndIf Break Case Elsweyr the Deserts of Anequina v2.0 If DataFileExists "Meshes\\Anequina\\Architecture\\Fortress\\FortressWall01.nif" SetVar vExec "SetVar vBfolder%vBi% \"%vBfolder%\"" ExecLines %vExec% EndIf Break Case TRoN (The Underdark - The Realm Of Northdark) v0.59.1b If DataFileExists "Meshes\\TU\\watermillFarmhouse03.nif" SetVar vExec "SetVar vBfolder%vBi% \"%vBfolder%\"" ExecLines %vExec% EndIf Break EndSelect EndIf EndIf EndIfEndFor; Build and Display Plugin Selection Menu; =======================================;; Creates a simulated array containing an index to each mod that is to be installed;; vInstall = Index to vBfolder (Bain folder), vSWesp (Vwalk ESP name) and vMaster (Master ESP) arrays.SetVar vBcount %vBi% ; Number of mods availableSetVar vIi 0 ; Install indexSetVar vSelect "SelectMany \"Confirm which Sensual Walk plugins you want to install\"\ \"Abort Installation\""SetVar vCases "Case Abort Installation%NewLine%\ FatalError%NewLine%\Break%NewLine%"For Count vBi 1 %vBcount% SetVar vExec "SetVar vBfolder \"\%vBfolder%vBi%\%\"" ExecLines %vExec% RemoveString vName "%vBfolder%" 0 4 SetVar vSelect "%vSelect% \"|%vName%\"" SetVar vCases "%vCases%\ Case %vName%%NewLine%\ iSet vIi \%vIi\% + 1%NewLine%\ SetVar vInstall\%vIi\% %vBi%%NewLine%\ Break%NewLine%"EndFor; Execute the generated script; ----------------------------ExecLines %vSelect%%NewLine%%vCases%%NewLine%EndSelect; Post Selection Checks; =====================If Equal %vIi% 0 Message "You have not selected any plugins - Installation aborted" "Fatal Error" FatalErrorEndIf; Install selected plugins; ========================;; This generates the Copy and LoadAfter statements.; It also contructs a string containing LoadEarly statements for optional executionSetVar vIcount %vIi% ; Number of ESPs to be installed.For Count vIi 1 %vIcount% ; Retrieve Folder, Sensual Walks ESP and Master ESP SetVar vExec "SetVar vBi \"\%vInstall%vIi%\%\"" ExecLines %vExec% SetVar vExec "SetVar vBfolder \"\%vBfolder%vBi%\%\"" ExecLines %vExec% SetVar vExec "SetVar vSWesp \"\%vSWesp%vBi%\%\"" ExecLines %vExec% SetVar vExec "SetVar vMaster \"\%vMaster%vBi%\%\"" ExecLines %vExec% ; Install Plugin CopyPlugin "%vPatches%\\%vBfolder%\\%vSWesp%.esp" "%vSWesp%.esp" ; Load Order Processing SelectString %vMaster% Case Oblivion LoadBefore "%vSWesp%.esp" "Oblivion.esm" Break Default LoadAfter "%vSWesp%.esp" "%vMaster%.esp" SetVar vExec "SetVar vEarly \"\%vEarly\%LoadEarly \\\"%vSWesp%.esp\\\"\%NewLine\%\"" ExecLines %vExec% Break EndSelect IfNot Equal %vUact% 0 ; Additional Load Order Processing for UOS versions of OB, SI, SI DG & DS, TNR, BW and CW Substring vBnum "%vBfolder%" 0 3 ; Bain folder number SelectString %vBnum% ; Colourwheels sixy Female NPCs must load after TNR, Beautiful Women, Shivering Isles and Oblivion Case 110 For Each Plugin vLoadAfter "%vPatches%" True "Beautiful_Women* UOS.esp" GetFileName vLoadAfter "%vLoadAfter%" LoadAfter "%vSWesp%.esp" "%vLoadAfter%" EndFor ; Beautiful Women must load after TNR, Shivering Isles and Oblivion Case 100 Case 101 Case 102 Case 103 Case 104 Case 105 For Each Plugin vLoadAfter "%vPatches%" True "TNR* UOS.esp" GetFileName vLoadAfter "%vLoadAfter%" LoadAfter "%vSWesp%.esp" "%vLoadAfter%" EndFor ; TNR must load after Shivering Isles and Oblivion Case 120 Case 121 For Each Plugin vLoadAfter "%vPatches%" True "DLCShiveringIsles* UOS.esp" GetFileName vLoadAfter "%vLoadAfter%" LoadAfter "%vSWesp%.esp" "%vLoadAfter%" EndFor ; Shivering Isles must load after Oblivion Case 001 Case 002 For Each Plugin vLoadAfter "%vPatches%" True "Oblivion* UOS.esp" GetFileName vLoadAfter "%vLoadAfter%" LoadAfter "%vSWesp%.esp" "%vLoadAfter%" EndFor Break EndSelect EndIfEndFor
Traceback (most recent call last): File "F:\games\oblivion\Mopy\basher.py", line 3004, in OnShowPage self.GetPage(event.GetSelection()).OnShow() File "F:\games\oblivion\Mopy\basher.py", line 2039, in OnShow if data.refresh(progress,what,self.fullRefresh): File "F:\games\oblivion\Mopy\bosh.py", line 10071, in refresh settings['bash.installers.removeEmptyDirs'], fullRefresh) File "F:\games\oblivion\Mopy\bosh.py", line 8975, in refreshSizeCrcDate crc = apFile.crc File "F:\games\oblivion\Mopy\bolt.py", line 416, in crc crc = crc32(insRead(512),crc)IOError: [Errno 13] Permission denied
Traceback (most recent call last): File "F:\games\oblivion\Mopy\basher.py", line 3004, in OnShowPage self.GetPage(event.GetSelection()).OnShow() File "F:\games\oblivion\Mopy\basher.py", line 2039, in OnShow if data.refresh(progress,what,self.fullRefresh): File "F:\games\oblivion\Mopy\bosh.py", line 10071, in refresh settings['bash.installers.removeEmptyDirs'], fullRefresh) File "F:\games\oblivion\Mopy\bosh.py", line 8975, in refreshSizeCrcDate crc = apFile.crc File "F:\games\oblivion\Mopy\bolt.py", line 416, in crc crc = crc32(insRead(512),crc)IOError: [Errno 13] Permission denied
Traceback (most recent call last): File "C:\Program Files\Bethesda Softworks\Oblivion\Mopy\basher.py", line 1651, in DoAutoBashTags modList.RefreshUI(self.modInfo.name) File "C:\Program Files\Bethesda Softworks\Oblivion\Mopy\basher.py", line 1135, in RefreshUI modDetails.SetFile(detail) File "C:\Program Files\Bethesda Softworks\Oblivion\Mopy\basher.py", line 1462, in SetFile tagsStr = '\n'.join(sorted(modInfo.getBashTags()))TypeError: sequence item 0: expected string, Path found
Traceback (most recent call last): File "C:\Program Files\Bethesda Softworks\Oblivion\Mopy\basher.py", line 1350, in OnItemSelected self.details.SetFile(modName) File "C:\Program Files\Bethesda Softworks\Oblivion\Mopy\basher.py", line 1462, in SetFile tagsStr = '\n'.join(sorted(modInfo.getBashTags()))TypeError: sequence item 0: expected string, Path found