2022-07-23 15:38:20 +00:00
|
|
|
scn EBxOnCrosshair
|
|
|
|
|
|
|
|
ref rSource
|
|
|
|
ref rDrink
|
|
|
|
int iCount
|
|
|
|
array_var aDrinksToUpgrade
|
2022-07-24 14:13:55 +00:00
|
|
|
string_var sOrigPrompt
|
|
|
|
string_var sPrompt
|
|
|
|
string_var sBottles
|
2022-07-23 15:38:20 +00:00
|
|
|
|
|
|
|
begin function { rSource }
|
|
|
|
|
|
|
|
if rSource == 0 ; IsFormValid returns 0 on form 35
|
|
|
|
return
|
|
|
|
endif
|
|
|
|
|
2022-07-24 14:13:55 +00:00
|
|
|
if rSource.GetType != 21 ; activator
|
2022-07-23 15:38:20 +00:00
|
|
|
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
|
2022-07-24 14:13:55 +00:00
|
|
|
let sBottles := sv_construct "%g bottle%{s%}" iCount (iCount > 1)
|
2022-07-25 20:26:10 +00:00
|
|
|
elseif call EBxReplenishCanteen rDrink 1
|
2022-07-24 14:13:55 +00:00
|
|
|
let sBottles := "canteen"
|
|
|
|
else
|
|
|
|
return
|
|
|
|
endif
|
2022-07-23 15:38:20 +00:00
|
|
|
|
2022-07-24 14:13:55 +00:00
|
|
|
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"
|
2022-07-23 15:38:20 +00:00
|
|
|
else
|
2022-07-24 14:13:55 +00:00
|
|
|
let sPrompt := "Fill"
|
2022-07-23 15:38:20 +00:00
|
|
|
endif
|
2022-07-24 14:13:55 +00:00
|
|
|
let sPrompt := sv_construct "%z %z with %n" sPrompt sBottles rDrink
|
|
|
|
rSource.SetActivatorPrompt $sPrompt
|
|
|
|
CallAfterSeconds 0 ({} => rSource.SetActivatorPrompt $sOrigPrompt)
|
2022-07-23 15:38:20 +00:00
|
|
|
else
|
2022-07-24 14:13:55 +00:00
|
|
|
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"))
|
2022-07-23 15:38:20 +00:00
|
|
|
endif
|
|
|
|
|
|
|
|
DisableControl 5
|
2022-07-24 14:13:55 +00:00
|
|
|
SetOnControlDownEventHandler EBxOnControlDown 1 5
|
2022-07-23 15:38:20 +00:00
|
|
|
SetOnControlUpEventHandler EBxOnControlUp 1 5
|
|
|
|
|
|
|
|
SetGameMainLoopCallback EBxOnCrosshairTracker 1 1 11
|
|
|
|
|
|
|
|
end
|