parent
68c68c6a3e
commit
5dc76239c8
5 changed files with 312 additions and 278 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,312 @@ |
||||
Scriptname _00E_SleightOfHandAlias extends ReferenceAlias Hidden |
||||
; This script sets up the sleight of hand loot of a chest upon activating it |
||||
|
||||
;===================================================================================== |
||||
; EVENTS |
||||
;===================================================================================== |
||||
|
||||
event OnInit() |
||||
RegisterForMenu("ContainerMenu") |
||||
RegisterForMenu("LootMenu") |
||||
endevent |
||||
|
||||
event OnPlayerLoadGame() |
||||
RegisterForMenu("ContainerMenu") |
||||
RegisterForMenu("LootMenu") |
||||
endevent |
||||
|
||||
event OnUpdate() |
||||
if lastContainer && UI.IsMenuOpen("LootMenu") && lastContainer == Game.GetCurrentCrosshairRef() |
||||
OpenHiddenSlot(lastContainer, true) |
||||
endif |
||||
endevent |
||||
|
||||
event OnMenuOpen(String MenuName) |
||||
|
||||
if MenuName == "LootMenu" |
||||
UnregisterForUpdate() |
||||
; Even when QuickLoot RE does not show up, it still sends open and close menu events |
||||
; To determine if QuickLoot is open, we check it 0.1 seconds later |
||||
ObjectReference lootMenuRef = Game.GetCurrentCrosshairRef() |
||||
|
||||
if ! lootMenuRef |
||||
return |
||||
endif |
||||
|
||||
Container baseContainer = lootMenuRef.GetBaseObject() as Container |
||||
|
||||
if ! baseContainer || lootMenuRef.IsActivationBlocked() || _00E_ChestsWithHiddenSlots.Find(baseContainer) == -1 |
||||
return |
||||
endif |
||||
|
||||
lastContainer = lootMenuRef |
||||
; Clears previous request automatically |
||||
RegisterForSingleUpdate(0.1) |
||||
return |
||||
endif |
||||
|
||||
if MenuName == "ContainerMenu" |
||||
ObjectReference currentContainer = EnderalFunctions.GetCurrentContainer() |
||||
|
||||
if ! currentContainer || currentContainer as Actor |
||||
return |
||||
endif |
||||
|
||||
if currentContainer == containterToFill |
||||
; Opened hidden container |
||||
Utility.Wait(0.1) |
||||
; Move unclaimed items to the original container |
||||
containterToFill.RemoveAllItems(lastContainer, true, true) |
||||
lastContainer = None |
||||
containterToFill = None |
||||
return |
||||
endif |
||||
|
||||
if _00E_ChestsWithHiddenSlots.Find(currentContainer.GetBaseObject()) == -1 |
||||
return |
||||
endif |
||||
|
||||
OpenHiddenSlot(currentContainer) |
||||
endif |
||||
|
||||
endevent |
||||
|
||||
event OnMenuClose(String MenuName) |
||||
if MenuName == "LootMenu" |
||||
UnregisterForUpdate() |
||||
lastContainer = None |
||||
endif |
||||
endevent |
||||
|
||||
|
||||
;===================================================================================== |
||||
; FUNCTIONS |
||||
;===================================================================================== |
||||
|
||||
function OpenHiddenSlot(ObjectReference currentContainer, bool bLootMenu = false) |
||||
|
||||
if ! SetUpHiddenSlot(currentContainer) |
||||
return |
||||
endif |
||||
|
||||
UILockpickingCylinderTurnM.Play(PlayerREF) |
||||
messageToShow.Show() |
||||
|
||||
if bLootMenu |
||||
containterToFill.RemoveAllItems(currentContainer, true, true) |
||||
else |
||||
; Open hidden container after the original one closes |
||||
Utility.Wait(0.1) |
||||
|
||||
If IsOwned(currentContainer) |
||||
containterToFill.SetFactionOwner(SleightOfHandOwnerFaction) |
||||
Else |
||||
containterToFill.SetFactionOwner(none) |
||||
Endif |
||||
|
||||
lastContainer = currentContainer |
||||
containterToFill.Activate(PlayerREF, True) |
||||
endif |
||||
|
||||
If containterToFill == _00E_FS_SleightOfHand_HiddenSlot_BigSlotREF |
||||
_00E_EPHandler.GiveEP(_00E_BigHiddenSlotExpReward.GetValue() as int) |
||||
If _00E_HiddenSlotAchievementUnlocked.GetValueInt() == 0 |
||||
UIEnchantingLearnEffectM.Play(PlayerREF) |
||||
_00E_HiddenSlotAchievementUnlocked.SetValueInt(1) |
||||
Steam.UnlockAchievement("END_HIDDEN_SLOT_01") |
||||
EndIf |
||||
EndIf |
||||
|
||||
endfunction |
||||
|
||||
bool function SetUpHiddenSlot(ObjectReference aContainer) |
||||
|
||||
if aContainer.GetItemCount(_00E_HiddenSlotChecked) |
||||
return false |
||||
endif |
||||
|
||||
aContainer.AddItem(_00E_HiddenSlotChecked, 1, true) |
||||
|
||||
if ! DoesContainerHaveHiddenSlot() |
||||
return false |
||||
EndIf |
||||
|
||||
messageToShow = GetSlotMessage() |
||||
int iHiddenSlotTier = GetHiddenSlotTier() |
||||
|
||||
int iFormlistIndexOffset = 8*(iHiddenSlotTier - 1) |
||||
int iFormlistIndex |
||||
|
||||
if messageToShow == _00E_FS_SleightOfHand_HiddenSlot_sSmallSlotFound |
||||
|
||||
containterToFill = _00E_FS_SleightOfHand_HiddenSlot_SmallSlotREF |
||||
iFormlistIndex = Utility.RandomInt(0, 2) + iFormlistIndexOffset |
||||
|
||||
Elseif messageToShow == _00E_FS_SleightOfHand_HiddenSlot_sMediumSlotFound |
||||
|
||||
containterToFill = _00E_FS_SleightOfHand_HiddenSlot_MediumSlotREF |
||||
iFormlistIndex = Utility.RandomInt(3, 5) + iFormlistIndexOffset |
||||
|
||||
Elseif messageToShow == _00E_FS_SleightOfHand_HiddenSlot_sBigSlotFound |
||||
|
||||
containterToFill = _00E_FS_SleightOfHand_HiddenSlot_BigSlotREF |
||||
iFormlistIndex = Utility.RandomInt(6, 7) + iFormlistIndexOffset |
||||
|
||||
EndIf |
||||
|
||||
Formlist hiddenSlotFormlist = _00E_FS_HiddenSlotRewardFormlists.GetAt(iFormlistIndex) as Formlist |
||||
AddItemsToContainer(hiddenSlotFormlist, iFormlistIndexOffset, iHiddenSlotTier) |
||||
|
||||
return true |
||||
|
||||
EndFunction |
||||
|
||||
Function AddItemsToContainer(Formlist itemsToAdd, int iFormlistIndexOffset, int iHiddenSlotTier) |
||||
|
||||
containterToFill.RemoveAllItems() |
||||
|
||||
if containterToFill == _00E_FS_SleightOfHand_HiddenSlot_BigSlotREF |
||||
|
||||
if ! itemsToAdd.HasForm(_00E_FS_SleightOfHand_HiddenSlotUsedMarker) |
||||
itemsToAdd.AddForm(_00E_FS_SleightOfHand_HiddenSlotUsedMarker) |
||||
Else |
||||
int iFormlistIndex = Utility.RandomInt(3, 5) + iFormlistIndexOffset |
||||
itemsToAdd = _00E_FS_HiddenSlotRewardFormlists.GetAt(iFormlistIndex) as Formlist |
||||
messageToShow = _00E_FS_SleightOfHand_HiddenSlot_sMediumSlotFound |
||||
EndIf |
||||
|
||||
EndIf |
||||
|
||||
int iIndex = itemsToAdd.GetSize() - 1 |
||||
|
||||
while iIndex >= 0 |
||||
|
||||
Form formToAdd = itemsToAdd.GetAt(iIndex) |
||||
|
||||
if formToAdd == Gold001 |
||||
containterToFill.AddItem(itemsToAdd.GetAt(iIndex), iHiddenSlotTier*5) |
||||
Else |
||||
containterToFill.AddItem(itemsToAdd.GetAt(iIndex), 1) |
||||
EndIf |
||||
|
||||
iIndex -= 1 |
||||
|
||||
endwhile |
||||
|
||||
EndFunction |
||||
|
||||
bool Function DoesContainerHaveHiddenSlot() |
||||
|
||||
float fHiddenSlotChance = Utility.RandomInt(0, 100) |
||||
|
||||
int iPlayerPickpocketSkill = PlayerREF.GetActorValue("Pickpocket") as Int |
||||
|
||||
; raised the divider from 2 to 2.5, maybe we should raise it even further |
||||
; otherwise too much loot might be given away |
||||
float fPlayerChance = iPlayerPickpocketSkill/2.5 |
||||
|
||||
If fPlayerChance < 15 |
||||
fPlayerChance = 15 |
||||
EndIf |
||||
|
||||
return (fHiddenSlotChance <= fPlayerChance) |
||||
|
||||
EndFunction |
||||
|
||||
int Function GetHiddenSlotTier() |
||||
|
||||
int iPlayerLevel = PlayerLevel.GetValueInt() |
||||
|
||||
if iPlayerLevel >= iTierCap_1 && iPlayerLevel < iTierCap_2 |
||||
Return 1 |
||||
Elseif iPlayerLevel >= iTierCap_2 && iPlayerLevel < iTierCap_3 |
||||
Return 2 |
||||
Elseif iPlayerLevel >= iTierCap_3 && iPlayerLevel < iTierCap_4 |
||||
Return 3 |
||||
Elseif iPlayerLevel >= iTierCap_4 && iPlayerLevel < iTierCap_5 |
||||
Return 4 |
||||
Else |
||||
Return 5 |
||||
EndIf |
||||
|
||||
EndFunction |
||||
|
||||
Message Function GetSlotMessage() |
||||
|
||||
; This calculates whether the hidden slot will be filled with a small, a regular, or a rare reward |
||||
|
||||
int iSlotSize = Utility.RandomInt(1, 100) |
||||
|
||||
if iSlotSize <= iBigSlotChance && PlayerREF.GetActorValue("Pickpocket") >= 75 |
||||
return _00E_FS_SleightOfHand_HiddenSlot_sBigSlotFound |
||||
|
||||
Elseif (iSlotSize > iBigSlotChance) && (iSlotSize <= (iMediumSlotChance + iBigSlotChance)) && PlayerREF.GetActorValue("Pickpocket") >= 50 |
||||
return _00E_FS_SleightOfHand_HiddenSlot_sMediumSlotFound |
||||
|
||||
Else |
||||
return _00E_FS_SleightOfHand_HiddenSlot_sSmallSlotFound |
||||
|
||||
EndIf |
||||
|
||||
EndFunction |
||||
|
||||
bool Function IsOwned(ObjectReference aContainer) |
||||
|
||||
If aContainer.GetActorOwner() |
||||
return true |
||||
EndIf |
||||
|
||||
Cell ContainerParentCell = aContainer.GetParentCell() |
||||
|
||||
return ContainerParentCell.GetActorOwner() || ContainerParentCell.GetFactionOwner() |
||||
|
||||
EndFunction |
||||
|
||||
;===================================================================================== |
||||
; PROPERTIES |
||||
;===================================================================================== |
||||
|
||||
; These integers determine at which levels player can access the different tiers |
||||
int iTierCap_1 = 0 |
||||
int iTierCap_2 = 15 |
||||
int iTierCap_3 = 25 |
||||
int iTierCap_4 = 35 |
||||
int iTierCap_5 = 45 |
||||
|
||||
; These integers determine the likelihood of the different slot sizes |
||||
int iSmallSlotChance = 50 |
||||
int iMediumSlotChance = 35 |
||||
int iBigSlotChance = 15 |
||||
|
||||
; This formlist will be filled with the formlist containing the items that will actually be added into the container |
||||
Message messageToShow |
||||
ObjectReference lastContainer |
||||
ObjectReference containterToFill |
||||
|
||||
Actor Property PlayerRef Auto |
||||
|
||||
GlobalVariable Property PlayerLevel Auto |
||||
GlobalVariable Property _00E_HiddenSlotAchievementUnlocked Auto |
||||
GlobalVariable Property _00E_BigHiddenSlotExpReward Auto |
||||
|
||||
; These REFs simply provide the containers that will be filled when finding a secret slot |
||||
ObjectReference Property _00E_FS_SleightOfHand_HiddenSlot_SmallSlotREF Auto |
||||
ObjectReference Property _00E_FS_SleightOfHand_HiddenSlot_MediumSlotREF Auto |
||||
ObjectReference Property _00E_FS_SleightOfHand_HiddenSlot_BigSlotREF Auto |
||||
|
||||
MiscObject Property Gold001 Auto |
||||
MiscObject Property _00E_FS_SleightOfHand_HiddenSlotUsedMarker Auto |
||||
MiscObject Property _00E_HiddenSlotChecked Auto |
||||
|
||||
Sound Property UILockpickingCylinderTurnM Auto |
||||
Sound Property UIEnchantingLearnEffectM Auto |
||||
|
||||
Message Property _00E_FS_SleightOfHand_HiddenSlot_sSmallSlotFound Auto |
||||
Message Property _00E_FS_SleightOfHand_HiddenSlot_sMediumSlotFound Auto |
||||
Message Property _00E_FS_SleightOfHand_HiddenSlot_sBigSlotFound Auto |
||||
|
||||
; This contains all formlists with items for the rewards.For every tier, there are nine different treasures to be found, three in small and medium category, two in big. |
||||
FormList Property _00E_FS_HiddenSlotRewardFormlists Auto |
||||
FormList Property _00E_ChestsWithHiddenSlots Auto |
||||
|
||||
Faction Property SleightOfHandOwnerFaction Auto |
@ -1,278 +0,0 @@ |
||||
Scriptname _00E_FS_SleightOfHand_HiddenSlotSC extends ObjectReference |
||||
; This script sets up the sleight of hand loot of a chest upon activating it |
||||
|
||||
;===================================================================================== |
||||
; EVENTS |
||||
;===================================================================================== |
||||
|
||||
|
||||
Event OnActivate(ObjectReference akActionRef) |
||||
|
||||
If !Self.IsLocked() && akActionRef == PlayerREF |
||||
|
||||
If !bSetUp |
||||
SetUpHiddenSlot() |
||||
EndIf |
||||
|
||||
Utility.Wait(0.5) |
||||
If bFoundTreasure && !bDone |
||||
OpenHiddenSlot() |
||||
EndIf |
||||
|
||||
EndIf |
||||
|
||||
EndEvent |
||||
|
||||
Event OnMenuClose(String MenuName) |
||||
containterToFill.RemoveAllItems(Self as ObjectReference, true, false) |
||||
UnregisterForMenu("ContainerMenu") |
||||
EndEvent |
||||
|
||||
;===================================================================================== |
||||
; FUNCTIONS |
||||
;===================================================================================== |
||||
|
||||
Function OpenHiddenSlot() |
||||
|
||||
bDone = True |
||||
UILockpickingCylinderTurnM.Play(PlayerREF) |
||||
messageToShow.Show() |
||||
|
||||
If bOwned |
||||
containterToFill.SetFactionOwner(SleightOfHandOwnerFaction) |
||||
Else |
||||
containterToFill.SetFactionOwner(none) |
||||
Endif |
||||
|
||||
RegisterForMenu("ContainerMenu") |
||||
containterToFill.Activate(PlayerREF, True) |
||||
|
||||
If sTreasureSize == "Big" |
||||
|
||||
UIEnchantingLearnEffectM.Play(PlayerREF) |
||||
_00E_EPHandler.GiveEP(iRewardEXPBigSlot) |
||||
If _00E_HiddenSlotAchievementUnlocked.GetValueInt() == 0 |
||||
_00E_HiddenSlotAchievementUnlocked.SetValueInt(1) |
||||
Steam.UnlockAchievement("END_HIDDEN_SLOT_01") |
||||
EndIf |
||||
EndIf |
||||
|
||||
EndFunction |
||||
|
||||
Function SetUpHiddenSlot() |
||||
|
||||
bSetUp = True |
||||
|
||||
if DoesContainerHaveHiddenSlot() |
||||
|
||||
bFoundTreasure = True |
||||
sTreasureSize = GetSlotSize() |
||||
iHiddenSlotTier = GetHiddenSlotTier() |
||||
|
||||
iFormlistIndexOffset = 8*(iHiddenSlotTier - 1) |
||||
iFormlistIndex |
||||
|
||||
if sTreasureSize == "Small" |
||||
|
||||
containterToFill = _00E_FS_SleightOfHand_HiddenSlot_SmallSlotREF |
||||
iFormlistIndex = Utility.RandomInt(0, 2) + iFormlistIndexOffset |
||||
|
||||
Elseif sTreasureSize == "Medium" |
||||
|
||||
containterToFill = _00E_FS_SleightOfHand_HiddenSlot_MediumSlotREF |
||||
iFormlistIndex = Utility.RandomInt(3, 5) + iFormlistIndexOffset |
||||
|
||||
Elseif sTreasureSize == "Big" |
||||
|
||||
containterToFill = _00E_FS_SleightOfHand_HiddenSlot_BigSlotREF |
||||
iFormlistIndex = Utility.RandomInt(6, 7) + iFormlistIndexOffset |
||||
|
||||
EndIf |
||||
|
||||
bOwned = GetOwner() |
||||
|
||||
hiddenSlotFormlist = _00E_FS_HiddenSlotRewardFormlists.GetAt(iFormlistIndex) as Formlist |
||||
AddItemsToContainer(hiddenSlotFormlist) |
||||
|
||||
EndIf |
||||
|
||||
EndFunction |
||||
|
||||
Function AddItemsToContainer(Formlist itemsToAdd) |
||||
|
||||
containterToFill.RemoveAllItems() |
||||
|
||||
if sTreasureSize == "Big" |
||||
|
||||
if !(itemsToAdd.HasForm(_00E_FS_SleightOfHand_HiddenSlotUsedMarker)) |
||||
itemsToAdd.AddForm(_00E_FS_SleightOfHand_HiddenSlotUsedMarker) |
||||
Else |
||||
iFormlistIndex = Utility.RandomInt(3, 5) + iFormlistIndexOffset |
||||
itemsToAdd = _00E_FS_HiddenSlotRewardFormlists.GetAt(iFormlistIndex) as Formlist |
||||
messageToShow = _00E_FS_SleightOfHand_HiddenSlot_sMediumSlotFound |
||||
EndIf |
||||
|
||||
EndIf |
||||
|
||||
int iIndex = itemsToAdd.GetSize() - 1 |
||||
|
||||
while iIndex >= 0 |
||||
|
||||
Form formToAdd = itemsToAdd.GetAt(iIndex) |
||||
|
||||
if formToAdd == Gold001 |
||||
containterToFill.AddItem(itemsToAdd.GetAt(iIndex), iHiddenSlotTier*5) |
||||
Else |
||||
containterToFill.AddItem(itemsToAdd.GetAt(iIndex), 1) |
||||
EndIf |
||||
|
||||
iIndex -= 1 |
||||
|
||||
endwhile |
||||
|
||||
EndFunction |
||||
|
||||
bool Function DoesContainerHaveHiddenSlot() |
||||
|
||||
float fHiddenSlotChance = Utility.RandomInt(0, 100) |
||||
|
||||
iPlayerPickpocketSkill = PlayerREF.GetActorValue("Pickpocket") as Int |
||||
|
||||
; raised the divider from 2 to 2.5, maybe we should raise it even further |
||||
; otherwise too much loot might be given away |
||||
float fPlayerChance = iPlayerPickpocketSkill/2.5 |
||||
|
||||
If fPlayerChance < 15 |
||||
fPlayerChance = 15 |
||||
EndIf |
||||
|
||||
If fHiddenSlotChance <= fPlayerChance |
||||
Return True |
||||
Else |
||||
Return False |
||||
EndIf |
||||
|
||||
EndFunction |
||||
|
||||
int Function GetHiddenSlotTier() |
||||
|
||||
iPlayerLevel = PlayerLevel.GetValueInt() |
||||
|
||||
if iPlayerLevel >= iTierCap_1 && iPlayerLevel < iTierCap_2 |
||||
Return 1 |
||||
Elseif iPlayerLevel >= iTierCap_2 && iPlayerLevel < iTierCap_3 |
||||
Return 2 |
||||
Elseif iPlayerLevel >= iTierCap_3 && iPlayerLevel < iTierCap_4 |
||||
Return 3 |
||||
Elseif iPlayerLevel >= iTierCap_4 && iPlayerLevel < iTierCap_5 |
||||
Return 4 |
||||
Else |
||||
Return 5 |
||||
EndIf |
||||
|
||||
EndFunction |
||||
|
||||
string Function GetSlotSize() |
||||
|
||||
; This calculates whether the hidden slot will be filled with a small, a regular, or a rare reward |
||||
|
||||
int iSlotSize = Utility.RandomInt(1, 100) |
||||
|
||||
if iSlotSize <= iBigSlotChance && PlayerREF.GetActorValue("Pickpocket") >= 75 |
||||
|
||||
messageToShow = _00E_FS_SleightOfHand_HiddenSlot_sBigSlotFound |
||||
Return "Big" |
||||
|
||||
Elseif (iSlotSize > iBigSlotChance) && (iSlotSize <= (iMediumSlotChance + iBigSlotChance)) && PlayerREF.GetActorValue("Pickpocket") >= 50 |
||||
|
||||
messageToShow = _00E_FS_SleightOfHand_HiddenSlot_sMediumSlotFound |
||||
Return "Medium" |
||||
|
||||
Else |
||||
|
||||
messageToShow = _00E_FS_SleightOfHand_HiddenSlot_sSmallSlotFound |
||||
Return "Small" |
||||
|
||||
EndIf |
||||
|
||||
EndFunction |
||||
|
||||
bool Function GetOwner() |
||||
|
||||
ContainerParentCell = Self.GetParentCell() |
||||
|
||||
If Self.GetActorOwner() |
||||
bOwned = true |
||||
EndIf |
||||
|
||||
If !bOwned && ContainerParentCell.GetActorOwner() |
||||
bOwned = true |
||||
EndIf |
||||
|
||||
If !bOwned && ContainerParentCell.GetFactionOwner() |
||||
bOwned = true |
||||
EndIf |
||||
|
||||
Return bOwned |
||||
EndFunction |
||||
|
||||
;===================================================================================== |
||||
; PROPERTIES |
||||
;===================================================================================== |
||||
|
||||
bool bFoundTreasure |
||||
bool bDone |
||||
bool bSetUp |
||||
bool bOwned |
||||
|
||||
int iPlayerPickpocketSkill |
||||
int iPlayerLevel |
||||
int iHiddenSlotTier |
||||
int iFormlistIndexOffset |
||||
int iFormlistIndex |
||||
int iRewardEXPBigSlot = 50 |
||||
|
||||
; These integers determine at which levels player can access the different tiers |
||||
int iTierCap_1 = 0 |
||||
int iTierCap_2 = 15 |
||||
int iTierCap_3 = 25 |
||||
int iTierCap_4 = 35 |
||||
int iTierCap_5 = 45 |
||||
|
||||
; These integers determine the likelihood of the different slot sizes |
||||
int iSmallSlotChance = 50 |
||||
int iMediumSlotChance = 35 |
||||
int iBigSlotChance = 15 |
||||
|
||||
String sTreasureSize |
||||
|
||||
; This formlist will be filled with the formlist containing the items that will actually be added into the container |
||||
Formlist hiddenSlotFormlist |
||||
Message messageToShow |
||||
ObjectReference containterToFill |
||||
Cell ContainerParentCell |
||||
|
||||
Actor Property PlayerREF Auto |
||||
|
||||
GlobalVariable Property PlayerLevel Auto |
||||
GlobalVariable Property _00E_HiddenSlotAchievementUnlocked Auto |
||||
|
||||
; These REFs simply provide the containers that will be filled when finding a secret slot |
||||
ObjectReference Property _00E_FS_SleightOfHand_HiddenSlot_SmallSlotREF Auto |
||||
ObjectReference Property _00E_FS_SleightOfHand_HiddenSlot_MediumSlotREF Auto |
||||
ObjectReference Property _00E_FS_SleightOfHand_HiddenSlot_BigSlotREF Auto |
||||
|
||||
MiscObject Property Gold001 Auto |
||||
MiscObject Property _00E_FS_SleightOfHand_HiddenSlotUsedMarker Auto |
||||
|
||||
Sound Property UILockpickingCylinderTurnM Auto |
||||
Sound Property UIEnchantingLearnEffectM Auto |
||||
|
||||
Message Property _00E_FS_SleightOfHand_HiddenSlot_sSmallSlotFound Auto |
||||
Message Property _00E_FS_SleightOfHand_HiddenSlot_sMediumSlotFound Auto |
||||
Message Property _00E_FS_SleightOfHand_HiddenSlot_sBigSlotFound Auto |
||||
|
||||
; This contains all formlists with items for the rewards.For every tier, there are nine different treasures to be found, three in small and medium category, two in big. |
||||
Formlist Property _00E_FS_HiddenSlotRewardFormlists Auto |
||||
|
||||
Faction Property SleightOfHandOwnerFaction Auto |
Loading…
Reference in new issue