You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

165 lines
4.8 KiB

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