Initial commit
This commit is contained in:
commit
043eac23ed
BIN
Artifact Tracker.esp
Normal file
BIN
Artifact Tracker.esp
Normal file
Binary file not shown.
BIN
Scripts/ETR_CellStorageScript.pex
Normal file
BIN
Scripts/ETR_CellStorageScript.pex
Normal file
Binary file not shown.
BIN
Scripts/ETR_TrackFoundItems.pex
Normal file
BIN
Scripts/ETR_TrackFoundItems.pex
Normal file
Binary file not shown.
BIN
Scripts/ETR_TrackNewItems.pex
Normal file
BIN
Scripts/ETR_TrackNewItems.pex
Normal file
Binary file not shown.
BIN
Scripts/ETR_TrackStoredItems.pex
Normal file
BIN
Scripts/ETR_TrackStoredItems.pex
Normal file
Binary file not shown.
58
Source/Scripts/ETR_CellStorageScript.psc
Normal file
58
Source/Scripts/ETR_CellStorageScript.psc
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
Scriptname ETR_CellStorageScript extends ObjectReference
|
||||||
|
|
||||||
|
FormList Property ETR_ItemsNew Auto
|
||||||
|
FormList Property ETR_ItemsFound Auto
|
||||||
|
FormList Property ETR_ItemsStored Auto
|
||||||
|
FormList Property ETR_PersistentStorageList Auto
|
||||||
|
|
||||||
|
|
||||||
|
event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer)
|
||||||
|
Debug.Notification("OnItemRemoved")
|
||||||
|
bool bStored = ETR_ItemsStored.HasForm(akBaseItem)
|
||||||
|
|
||||||
|
if GetItemCount(akBaseItem) > 0
|
||||||
|
if ! bStored
|
||||||
|
ETR_ItemsFound.RemoveAddedForm(akBaseItem)
|
||||||
|
ETR_ItemsNew.RemoveAddedForm(akBaseItem)
|
||||||
|
ETR_ItemsStored.AddForm(akBaseItem)
|
||||||
|
Debug.Notification("Added " + akBaseItem.GetName() + " to ETR_ItemsStored.")
|
||||||
|
endif
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if Eddoursul_Functions.GetItemCountInList(ETR_PersistentStorageList, akBaseItem)
|
||||||
|
Debug.Notification("ETR_PersistentStorageList")
|
||||||
|
; do nothing
|
||||||
|
if ! bStored
|
||||||
|
ETR_ItemsFound.RemoveAddedForm(akBaseItem)
|
||||||
|
ETR_ItemsNew.RemoveAddedForm(akBaseItem)
|
||||||
|
ETR_ItemsStored.AddForm(akBaseItem)
|
||||||
|
Debug.Notification("Added " + akBaseItem.GetName() + " to ETR_ItemsStored.")
|
||||||
|
endif
|
||||||
|
|
||||||
|
else
|
||||||
|
ETR_ItemsNew.RemoveAddedForm(akBaseItem)
|
||||||
|
ETR_ItemsStored.RemoveAddedForm(akBaseItem)
|
||||||
|
ETR_ItemsFound.AddForm(akBaseItem)
|
||||||
|
Debug.Notification("Added " + akBaseItem.GetName() + " to ETR_ItemsFound.")
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
endevent
|
||||||
|
|
||||||
|
|
||||||
|
event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)
|
||||||
|
|
||||||
|
if ETR_ItemsStored.HasForm(akBaseItem)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
ETR_ItemsFound.RemoveAddedForm(akBaseItem)
|
||||||
|
ETR_ItemsNew.RemoveAddedForm(akBaseItem)
|
||||||
|
ETR_ItemsStored.AddForm(akBaseItem)
|
||||||
|
|
||||||
|
;UI.Invoke("HUD Menu", "_root.AHZWidgetContainer.AHZWidget.RefreshWidgets")
|
||||||
|
|
||||||
|
Debug.Notification("Added " + akBaseItem.GetName() + " to cell storage and ETR_ItemsStored.")
|
||||||
|
|
||||||
|
endevent
|
112
Source/Scripts/ETR_TrackFoundItems.psc
Normal file
112
Source/Scripts/ETR_TrackFoundItems.psc
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
Scriptname ETR_TrackFoundItems extends ReferenceAlias
|
||||||
|
|
||||||
|
Actor Property PlayerRef Auto
|
||||||
|
|
||||||
|
FormList Property ETR_ItemsNew Auto
|
||||||
|
FormList Property ETR_ItemsFound Auto
|
||||||
|
FormList Property ETR_ItemsStored Auto
|
||||||
|
FormList Property ETR_PersistentStorageList Auto
|
||||||
|
FormList Property ETR_ExcludeFromNew Auto
|
||||||
|
|
||||||
|
Container Property ETR_CellStorageContainer Auto
|
||||||
|
|
||||||
|
Keyword Property LocTypePlayerHouse Auto
|
||||||
|
|
||||||
|
bool bAtHome = false
|
||||||
|
int iFollowerIndex = 0
|
||||||
|
|
||||||
|
|
||||||
|
event OnInit()
|
||||||
|
OnPlayerLoadGame()
|
||||||
|
endevent
|
||||||
|
|
||||||
|
|
||||||
|
Event OnPlayerLoadGame()
|
||||||
|
AddInventoryEventFilter(ETR_ItemsFound)
|
||||||
|
EndEvent
|
||||||
|
|
||||||
|
|
||||||
|
Event OnLocationChange(Location akOldLoc, Location akNewLoc)
|
||||||
|
|
||||||
|
bAtHome = akNewLoc && akNewLoc.HasKeyword(LocTypePlayerHouse)
|
||||||
|
|
||||||
|
int iCurrentFollowers = 0;
|
||||||
|
Actor[] aFollowers = Eddoursul_Functions.GetPlayerFollowers()
|
||||||
|
int i = aFollowers.length
|
||||||
|
while i > 0
|
||||||
|
i -= 1
|
||||||
|
if ! aFollowers[i].IsDead() && ! aFollowers[i].IsDisabled()
|
||||||
|
iCurrentFollowers += aFollowers[i].GetFormID()
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
if iCurrentFollowers == iFollowerIndex
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
; If the list of followers has changed, rebuild ETR_ItemsFound and ETR_ItemsNew
|
||||||
|
iFollowerIndex = iCurrentFollowers
|
||||||
|
|
||||||
|
Debug.Notification("Team changed, updating lists")
|
||||||
|
|
||||||
|
ETR_ItemsFound.Revert()
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(PlayerRef, ETR_ItemsFound, 26, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(PlayerRef, ETR_ItemsFound, 41, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(PlayerRef, ETR_ItemsFound, 27, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(PlayerRef, ETR_ItemsFound, 32, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
|
||||||
|
i = aFollowers.length
|
||||||
|
while i > 0
|
||||||
|
i -= 1
|
||||||
|
if ! aFollowers[i].IsDead() && ! aFollowers[i].IsDisabled()
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(aFollowers[i], ETR_ItemsFound, 26, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(aFollowers[i], ETR_ItemsFound, 41, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(aFollowers[i], ETR_ItemsFound, 27, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(aFollowers[i], ETR_ItemsFound, 32, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
ETR_ItemsNew.Revert()
|
||||||
|
Eddoursul_Functions.AddAllFormsToList(ETR_ItemsNew, 26, None, ETR_ExcludeFromNew) ; armor
|
||||||
|
Eddoursul_Functions.AddAllFormsToList(ETR_ItemsNew, 41, None, ETR_ExcludeFromNew) ; weapons
|
||||||
|
Eddoursul_Functions.AddAllFormsToList(ETR_ItemsNew, 27, None, ETR_ExcludeFromNew) ; books
|
||||||
|
Eddoursul_Functions.AddAllFormsToList(ETR_ItemsNew, 32, None, ETR_ExcludeFromNew) ; misc items
|
||||||
|
|
||||||
|
endEvent
|
||||||
|
|
||||||
|
|
||||||
|
event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer)
|
||||||
|
|
||||||
|
if akDestContainer
|
||||||
|
if akDestContainer as Actor
|
||||||
|
if (akDestContainer as Actor).IsPlayerTeammate()
|
||||||
|
; Keep follower items marked as found
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
elseif ETR_PersistentStorageList.HasForm(akDestContainer)
|
||||||
|
ETR_ItemsFound.RemoveAddedForm(akBaseItem)
|
||||||
|
ETR_ItemsNew.RemoveAddedForm(akBaseItem)
|
||||||
|
ETR_ItemsStored.AddForm(akBaseItem)
|
||||||
|
Debug.Notification("Added " + akBaseItem.GetName() + " to ETR_ItemsStored")
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if bAtHome && (! akDestContainer || akDestContainer.GetParentCell() == PlayerRef.GetParentCell()) && Eddoursul_Functions.HasRefInCell(akBaseItem, None, true, ETR_PersistentStorageList)
|
||||||
|
|
||||||
|
ObjectReference cellStorage = Eddoursul_Functions.GetOrCreateCellStorage(PlayerRef, ETR_PersistentStorageList, ETR_CellStorageContainer)
|
||||||
|
|
||||||
|
if cellStorage.GetItemCount(akBaseItem) == 0
|
||||||
|
cellStorage.AddItem(akBaseItem, 1, true)
|
||||||
|
endif
|
||||||
|
|
||||||
|
elseif PlayerRef.GetItemCount(akBaseItem) == 0 && Eddoursul_Functions.GetItemCountInActors(Eddoursul_Functions.GetPlayerFollowers(), akBaseItem) == 0
|
||||||
|
|
||||||
|
Debug.Notification("Moving " + akBaseItem.GetName() + " to ETR_ItemsNew")
|
||||||
|
ETR_ItemsFound.RemoveAddedForm(akBaseItem)
|
||||||
|
ETR_ItemsStored.RemoveAddedForm(akBaseItem)
|
||||||
|
ETR_ItemsNew.AddForm(akBaseItem)
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
endevent
|
82
Source/Scripts/ETR_TrackNewItems.psc
Normal file
82
Source/Scripts/ETR_TrackNewItems.psc
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
Scriptname ETR_TrackNewItems extends ReferenceAlias
|
||||||
|
|
||||||
|
Actor Property PlayerRef Auto
|
||||||
|
|
||||||
|
FormList Property ETR_ItemsNew Auto
|
||||||
|
FormList Property ETR_ItemsFound Auto
|
||||||
|
FormList Property ETR_ItemsStored Auto
|
||||||
|
FormList Property ETR_ExcludeFromNew Auto
|
||||||
|
FormList Property ETR_PersistentStorageList Auto
|
||||||
|
|
||||||
|
|
||||||
|
event OnInit()
|
||||||
|
|
||||||
|
if Game.GetModByName("HearthFires.esm") < 255 && Game.GetModByName("Enderal - Forgotten Stories.esm") == 255
|
||||||
|
ETR_ExcludeFromNew.AddForm(Game.GetFormFromFile(0x807, "HearthFires.esm")) ; BYOHHouseCraftingCategorySmithing
|
||||||
|
endif
|
||||||
|
|
||||||
|
OnPlayerLoadGame()
|
||||||
|
|
||||||
|
endevent
|
||||||
|
|
||||||
|
|
||||||
|
event OnPlayerLoadGame()
|
||||||
|
|
||||||
|
AddInventoryEventFilter(ETR_ItemsNew)
|
||||||
|
|
||||||
|
if skse.GetPluginVersion("Ahzaab's moreHUD Plugin") >= 30800
|
||||||
|
ahzmorehud.RegisterIconFormList("dbmNew", ETR_ItemsNew)
|
||||||
|
ahzmorehud.RegisterIconFormList("dbmFound", ETR_ItemsFound)
|
||||||
|
ahzmorehud.RegisterIconFormList("dbmDisp", ETR_ItemsStored)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if skse.GetPluginVersion("Ahzaab's moreHUD Inventory Plugin") >= 10017
|
||||||
|
ahzmorehudie.RegisterIconFormList("dbmNew", ETR_ItemsNew)
|
||||||
|
ahzmorehudie.RegisterIconFormList("dbmFound", ETR_ItemsFound)
|
||||||
|
ahzmorehudie.RegisterIconFormList("dbmDisp", ETR_ItemsStored)
|
||||||
|
endif
|
||||||
|
|
||||||
|
; Rebuild all lists to avoid discrepancies, stale data, and broken records
|
||||||
|
|
||||||
|
ETR_ItemsStored.Revert()
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(ETR_PersistentStorageList, ETR_ItemsStored, 26, None, ETR_ExcludeFromNew)
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(ETR_PersistentStorageList, ETR_ItemsStored, 41, None, ETR_ExcludeFromNew)
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(ETR_PersistentStorageList, ETR_ItemsStored, 27, None, ETR_ExcludeFromNew)
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(ETR_PersistentStorageList, ETR_ItemsStored, 32, None, ETR_ExcludeFromNew)
|
||||||
|
|
||||||
|
ETR_ItemsFound.Revert()
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(PlayerRef, ETR_ItemsFound, 26, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(PlayerRef, ETR_ItemsFound, 41, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(PlayerRef, ETR_ItemsFound, 27, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(PlayerRef, ETR_ItemsFound, 32, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
|
||||||
|
Actor[] aFollowers = Eddoursul_Functions.GetPlayerFollowers()
|
||||||
|
int i = aFollowers.length
|
||||||
|
while i > 0
|
||||||
|
i -= 1
|
||||||
|
if ! aFollowers[i].IsDead() && ! aFollowers[i].IsDisabled()
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(aFollowers[i], ETR_ItemsFound, 26, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(aFollowers[i], ETR_ItemsFound, 41, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(aFollowers[i], ETR_ItemsFound, 27, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
Eddoursul_Functions.AddItemsOfTypeAndKeywordToList(aFollowers[i], ETR_ItemsFound, 32, None, ETR_ExcludeFromNew, false, false, false)
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
ETR_ItemsNew.Revert()
|
||||||
|
Eddoursul_Functions.AddAllFormsToList(ETR_ItemsNew, 26, None, ETR_ExcludeFromNew) ; armor
|
||||||
|
Eddoursul_Functions.AddAllFormsToList(ETR_ItemsNew, 41, None, ETR_ExcludeFromNew) ; weapons
|
||||||
|
Eddoursul_Functions.AddAllFormsToList(ETR_ItemsNew, 27, None, ETR_ExcludeFromNew) ; books
|
||||||
|
Eddoursul_Functions.AddAllFormsToList(ETR_ItemsNew, 32, None, ETR_ExcludeFromNew) ; misc items
|
||||||
|
|
||||||
|
endevent
|
||||||
|
|
||||||
|
|
||||||
|
event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)
|
||||||
|
|
||||||
|
ETR_ItemsNew.RemoveAddedForm(akBaseItem)
|
||||||
|
ETR_ItemsFound.AddForm(akBaseItem)
|
||||||
|
ETR_ItemsStored.RemoveAddedForm(akBaseItem)
|
||||||
|
|
||||||
|
Debug.Notification("New artifact acquired: " + akBaseItem.GetName())
|
||||||
|
|
||||||
|
endevent
|
84
Source/Scripts/ETR_TrackStoredItems.psc
Normal file
84
Source/Scripts/ETR_TrackStoredItems.psc
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
Scriptname ETR_TrackStoredItems extends ReferenceAlias
|
||||||
|
|
||||||
|
Actor Property PlayerRef Auto
|
||||||
|
|
||||||
|
FormList Property ETR_ItemsNew Auto
|
||||||
|
FormList Property ETR_ItemsFound Auto
|
||||||
|
FormList Property ETR_ItemsStored Auto
|
||||||
|
FormList Property ETR_PersistentStorageList Auto
|
||||||
|
|
||||||
|
Container Property ETR_CellStorageContainer Auto
|
||||||
|
|
||||||
|
Keyword Property LocTypePlayerHouse Auto
|
||||||
|
|
||||||
|
bool bAtHome = false
|
||||||
|
|
||||||
|
|
||||||
|
event OnInit()
|
||||||
|
OnPlayerLoadGame()
|
||||||
|
endevent
|
||||||
|
|
||||||
|
|
||||||
|
Event OnPlayerLoadGame()
|
||||||
|
AddInventoryEventFilter(ETR_ItemsStored)
|
||||||
|
EndEvent
|
||||||
|
|
||||||
|
|
||||||
|
Event OnLocationChange(Location akOldLoc, Location akNewLoc)
|
||||||
|
bAtHome = akNewLoc && akNewLoc.HasKeyword(LocTypePlayerHouse)
|
||||||
|
endEvent
|
||||||
|
|
||||||
|
|
||||||
|
; The item is already registered as stored, and we just stored more
|
||||||
|
event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer)
|
||||||
|
|
||||||
|
if ! bAtHome
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
if akDestContainer
|
||||||
|
|
||||||
|
if !(akDestContainer as Actor)
|
||||||
|
if ETR_PersistentStorageList.HasForm(akDestContainer)
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
elseif (akDestContainer as Actor).IsPlayerTeammate()
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ! akDestContainer || akDestContainer.GetParentCell() == PlayerRef.GetParentCell()
|
||||||
|
|
||||||
|
ObjectReference cellStorage = Eddoursul_Functions.GetOrCreateCellStorage(PlayerRef, ETR_PersistentStorageList, ETR_CellStorageContainer)
|
||||||
|
|
||||||
|
if cellStorage.GetItemCount(akBaseItem) == 0 && Eddoursul_Functions.HasRefInCell(akBaseItem, None, true, ETR_PersistentStorageList)
|
||||||
|
cellStorage.AddItem(akBaseItem, 1, true)
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
endevent
|
||||||
|
|
||||||
|
|
||||||
|
; We took a stored item, and we want to find out if it's the last stored item of its kind
|
||||||
|
event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)
|
||||||
|
|
||||||
|
if akSourceContainer && !(akSourceContainer as Actor) && ETR_PersistentStorageList.HasForm(akSourceContainer)
|
||||||
|
if Eddoursul_Functions.GetItemCountInList(ETR_PersistentStorageList, akBaseItem) == 0
|
||||||
|
Debug.Notification("Added " + akBaseItem.GetName() + " to ETR_ItemsFound")
|
||||||
|
ETR_ItemsStored.RemoveAddedForm(akBaseItem)
|
||||||
|
ETR_ItemsFound.AddForm(akBaseItem)
|
||||||
|
ETR_ItemsNew.RemoveAddedForm(akBaseItem)
|
||||||
|
endif
|
||||||
|
|
||||||
|
elseif bAtHome
|
||||||
|
ObjectReference cellStorage = Eddoursul_Functions.GetOrCreateCellStorage(PlayerRef, ETR_PersistentStorageList, ETR_CellStorageContainer)
|
||||||
|
int iCount = cellStorage.GetItemCount(akBaseItem)
|
||||||
|
if iCount > 0 && ! Eddoursul_Functions.HasRefInCell(akBaseItem, None, true, ETR_PersistentStorageList)
|
||||||
|
cellStorage.RemoveItem(akBaseItem, iCount, true)
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
endevent
|
Loading…
Reference in New Issue
Block a user