INIT
INT:%APToUse
EVENTS
EVENT AddSneakItem
VARS
INT:_SneakItemAdded = 0
ON
OnInit()
ACTIONS
IF "c1&c2"
CharacterIsPlayer(__Me)
IsEqual(_SneakItemAdded,0)
THEN
Set(_SneakItemAdded,1)
CharacterAddToInventory(__Me,"Sneaking_Enable",1)
ENDIF
EVENT ApplySneaking
VARS
FLOAT:_AP
FLOAT:_APCosts
INT:_Sneaking
ITEM:_Item
ITEMTEMPLATE:_Template
ITEMTEMPLATE:_SneakTemp = "Other_SneakingActivation_28043f27-fbe6-4d0f-96f5-db78d3ca5d90"
ON
OnUseItem(__Me,_Item)
ACTIONS
IF "c1&c2"
ItemGetTemplate(_Item,_Template)
IsEqual(_Template,_SneakTemp)
THEN
IF "c1&c2"
CharacterGetAbility(_Sneaking,__Me,Sneaking)
CharacterGetStat(_AP,__Me,ActionPoints)
THEN
IF "c1"
IsEqual(_Sneaking,0)
THEN
Set(_APCosts,5)
ELIF "c1"
IsEqual(_Sneaking,1)
THEN
Set(_APCosts,4)
ELIF "c1"
IsEqual(_Sneaking,2)
THEN
Set(_APCosts,3)
ELIF "c1"
IsEqual(_Sneaking,3)
THEN
Set(_APCosts,2)
ELIF "c1"
IsEqual(_Sneaking,4)
THEN
Set(_APCosts,1)
ELIF "c1"
IsEqual(_Sneaking,5)
THEN
Set(_APCosts,1)
ELIF "c1"
IsEqual(_Sneaking,6)
THEN
Set(_APCosts,0)
ENDIF
IF "!c1&!c2"
IsLessThen(_AP,_APCosts)
CharacterHasStatus(__Me,SNEAKING)
THEN
Cast(%APToUse,_APCosts)
CharacterApplyStatus(__Me,SNEAKING,-1)
StartTimer("RemoveAP",1,0)
ELSE
DisplayText(__Me,"APTooLowOrSneakActive",2)
ENDIF
ENDIF
ENDIF
EVENT RemoveSneakingAP //a delayed sneak check before removing AP is necessary to ensure that the sneak status wasn't immediately removed after application, because of sneak spotters
ON
OnTimer("RemoveAP")
ACTIONS
IF "c1"
CharacterHasStatus(__Me,SNEAKING)
THEN
CharacterUseActionPoints(__Me,%APToUse)
ELSE
DisplayText(__Me,"SneakingFailed",2)
ENDIF