bottle-rinse-repeat/src/EBxOnCrosshair.gek

71 lines
2.2 KiB
Plaintext
Raw Permalink Normal View History

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)
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