164 lines
4.7 KiB
Plaintext
164 lines
4.7 KiB
Plaintext
|
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")
|
||
|
|
||
|
; 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
|
||
|
|
||
|
; 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
|
||
|
|
||
|
; 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
|
||
|
if ListGetFormIndex NonAlchoholicDrinks rItem == -1
|
||
|
ListAddForm NonAlchoholicDrinks rItem
|
||
|
endif
|
||
|
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
|
||
|
if ListGetFormIndex AlchoholicDrinks rItem == -1
|
||
|
ListAddForm AlchoholicDrinks rItem
|
||
|
endif
|
||
|
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
|