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.

70 lines
2.2 KiB

scn EBxOnCrosshair
ref rSource
ref rDrink
int iCount
array_var aDrinksToUpgrade
string_var sOrigPrompt
string_var sPrompt
string_var sBottles
begin function { rSource }
if rSource == 0 ; IsFormValid returns 0 on form 35
return
endif
if rSource.GetType != 21 ; activator
if GetCrosshairWater == 0
return
endif
elseif rSource.GetActivatorWaterType == 0
return
endif
let aDrinksToUpgrade := call EBxGetDrinksToUpgrade rSource
if eval 0 >= ar_size aDrinksToUpgrade
let aDrinksToUpgrade := ar_null
return
endif
let rDrink := aDrinksToUpgrade[0]
let iCount := GetMinOf (playerRef.GetItemCount caps001) (playerRef.GetItemCount (aDrinksToUpgrade[1]))
let aDrinksToUpgrade := ar_null
if iCount > 0
let sBottles := sv_construct "%g bottle%{s%}" iCount (iCount > 1)
elseif eval EBxCanteenSipsMax > 0 && call EBxReplenishCanteen rDrink 1
let sBottles := "canteen"
else
return
endif
if GetCrosshairWater
let sPrompt := sv_construct "%{Drink or hold to fill%}%{Fill%} %z with %n" (EBxFillBottleDelay > 0) (EBxFillBottleDelay <= 0) sBottles rDrink
SetStringSetting "sTargetTypeDrink" $sPrompt
CallAfterSeconds 0 ({} => SetStringSetting "sTargetTypeDrink" (playerRef.AuxiliaryVariableGetString "*sDrinkPrompt"))
elseif eval rSource.GetActivatorPrompt != ""
let sOrigPrompt := rSource.GetActivatorPrompt
if EBxFillBottleDelay > 0
let sPrompt := $(rSource.GetActivatorPrompt) + " or hold to fill"
else
let sPrompt := "Fill"
endif
let sPrompt := sv_construct "%z %z with %n" sPrompt sBottles rDrink
rSource.SetActivatorPrompt $sPrompt
CallAfterSeconds 0 ({} => rSource.SetActivatorPrompt $sOrigPrompt)
else
let sPrompt := sv_construct "%{Activate or hold to fill%}%{Fill%} %z with %n" (EBxFillBottleDelay > 0) (EBxFillBottleDelay <= 0) sBottles rDrink
SetStringSetting "sTargetTypeActivate" $sPrompt
CallAfterSeconds 0 ({} => SetStringSetting "sTargetTypeActivate" (playerRef.AuxiliaryVariableGetString "*sActivatePrompt"))
endif
DisableControl 5
SetOnControlDownEventHandler EBxOnControlDown 1 5
SetOnControlUpEventHandler EBxOnControlUp 1 5
SetGameMainLoopCallback EBxOnCrosshairTracker 1 1 11
end