scn EBxBootstrap ref rItem ref rScript ref rBrahminScriptDC ref rList int i begin function {} ; Save default activate prompts for later playerRef.AuxiliaryVariableSetString "*sDrinkPrompt" (GetStringSetting "sTargetTypeDrink") playerRef.AuxiliaryVariableSetString "*sActivatePrompt" (GetStringSetting "sTargetTypeActivate") ; Fix bottle names in English version if eval $ScotchBottle01Empty01 == "Large Whiskey Bottle" SetName "Empty Scotch Bottle" ScotchBottle01Empty01 endif if eval $Milkbottle01 == "Milk Bottle" SetName "Empty Milk Bottle" Milkbottle01 endif ; INI settings if FileExists "config\Bottle Rinse Repeat.ini" set EBxFillBottleDelay to GetINIFloat "Settings:bFillBottleDelay" "Bottle Rinse Repeat.ini" endif ; Add new items to form lists ListAddForm NonAlchoholicDrinks EBxBrahminMilk ListAddForm NVDLC03AllEmptyBottlesLIST EBxBeerBottleEmpty ListAddForm RockItLauncherAmmo EBxBeerBottleEmpty ListAddForm NVDLC03AllEmptyBottlesLIST EBxVodkaBottleEmpty ListAddForm RockItLauncherAmmo EBxVodkaBottleEmpty ListAddForm NVDLC03AllEmptyBottlesLIST EBxWineBottleEmpty ListAddForm RockItLauncherAmmo EBxWineBottleEmpty ListAddForm EBxUpgradableToDirtyList IrradiatedWaterUnpurified ListAddForm EBxUpgradableToPuraList IrradiatedWaterUnpurified ListAddForm EBxUpgradableToPurifiedList IrradiatedWaterUnpurified ; PipBoy icons SetTexturePath "interface\icons\pipboyimages\items\items_whiskey.dds" WhiskeyBottle01Empty01 SetTexturePath "interface\icons\pipboyImages\Items\item_scotch.dds" ScotchBottle01Empty01 SetTexturePath "interface\icons\pipboyimages\items\items_cola.dds" NukaColaBottle SetTexturePath "interface\icons\pipboyimages\items\items_cola.dds" SodaBottleEmpty01 SetTexturePath "interface\icons\pipboyimages\items\items_sunset_sarsp.dds" SSBottleEmpty SetTexturePath "interface\icons\pipboyimages\items\milkbottle.dds" Milkbottle01 ; Make irradiated water worthless SetValueAlt IrradiatedWaterUnpurified EBxBottlePrice ; Vault 13 Canteen if IsModLoaded "ClassicPack.esm" let rItem := GetFormFromMod "FalloutNV.esm" "174095" ; PreordVault13CanteenQuest if IsFormValid rItem RemoveScript rItem endif let rItem := GetFormFromMod "FalloutNV.esm" "1735D2" ; PreordVaultCanteen if IsFormValid rItem SetScript EBxPreordVault13CanteenScript rItem endif endif ; Draining on middle click ; Short callback notation with SetOnKeyUp/DownEventHandler currently throws an exception with xNVSE 6.20 + JIP LN 56.31 SetOnMenuOpenEventHandler (begin function { i } SetOnKeyUpEventHandler EBxOnMiddleClick 1 258 end) 1 1002 SetOnMenuCloseEventHandler (begin function { i } SetOnKeyUpEventHandler EBxOnMiddleClick 0 258 end) 1 1002 ; Vault 13 Canteen effect SetOnUseAidItemEventHandler (begin function { rItem } if this == playerRef if eval rItem := ListGetNthForm EBxCanteenEffects EBxCanteenDrink playerRef.CIOS rItem else playerRef.CIOS WaterPurified endif endif end) 1 EBxVault13Canteen ; SSBottleEmptyNoFloat if IsScripted SSBottleEmptyNoFloat == 0 SetEventHandler "OnAdd" (begin function { rItem, rScript } ; The item is not in player's inventory at this point CallAfterSeconds 0 (begin function {} let i := PlayerRef.GetItemCount SSBottleEmptyNoFloat if i > 0 PlayerRef.RemoveItem SSBottleEmptyNoFloat i 1 PlayerRef.AddItem SSBottleEmpty i 1 endif end) end) "first"::SSBottleEmptyNoFloat "second"::playerRef endif ; If not TTW, update NonAlchoholicDrinks let EBxTTW := IsModLoaded "Fallout3.esm" if EBxTTW == 0 let i := 0 while rItem := ListGetNthForm EBxListNonAlchoholicDrinks i ListAddForm NonAlchoholicDrinks rItem -2 1 let i += 1 loop endif ; Automatic detection of alchoholic drinks let rList := TempCloneForm EmptyFormList GetLoadedType rList 47 let i := ListGetCount rList while i > 0 let i -= 1 let rItem := ListGetNthForm rList i if GetEquipType rItem == 13 ListAddForm AlchoholicDrinks rItem -2 1 endif loop ; Enable brahmin milking if EBxTTW set rBrahminScriptDC to GetFormFromMod "Fallout3.esm" "38705" ; CRBrahminScriptDC endif GetLoadedType rList 43 let i := ListGetCount rList while i > 0 let i -= 1 let rItem := ListGetNthForm rList i if eval (GetCreatureType rItem == 1) && (rScript := GetScript rItem) && (rScript == CRBrahminScript || rScript == rBrahminScriptDC) continue endif ListRemoveNthForm rList i loop SetEventHandler "OnActivate" EBxMilkBrahmin "first"::rList "second"::playerRef ListClear rList let rList := 0 ; Game load events SetEventHandler "NewGame" ({} => call EBxOnGameLoad 1) SetEventHandler "PostLoadGame" EBxOnGameLoad end