#pragma once namespace ArtifactTracker { extern bool g_bLoaded; extern bool g_bSaveLoaded; extern bool g_bHomeContainer; extern bool g_bBookShelf; extern bool g_bTakeAll; extern bool g_bNotifyNewArtifact; extern std::uint32_t g_bTakeAllCount; extern RE::TESBoundObject* g_cellContainer; extern RE::BGSListForm* g_listNew; extern RE::BGSListForm* g_listStored; extern RE::BGSListForm* g_listFound; extern RE::BGSListForm* g_persistentStorage; extern RE::BGSKeyword* g_homeKeyword; extern std::unordered_map g_artifactMap; extern std::unordered_set g_artifactFormTypes; extern std::unordered_set g_artifactAllFormTypes; extern std::unordered_map g_persistentMap; extern RE::TESObjectREFR* g_cellStorage; extern const SKSE::LoadInterface* g_loadInterface; bool Init(bool bKID = false); bool IsArtifact(const RE::TESForm* a_item); RE::TESForm* GetArtifactByID(const RE::FormID a_formID); bool IsHome(); void OnGameLoad(); void SetContainerMode(const bool bOpening); void OnCellEnter(const RE::FormID a_formID); void OnCellEnter(const RE::BGSLocation* location, const RE::TESObjectCELL* cell); void SyncCellStorage(const RE::TESObjectREFR* a_ignoreRef = nullptr); void OnContainerChanged(const RE::TESContainerChangedEvent* a_event, RE::TESForm* form); void AddRefArtifactsToList(RE::TESForm* a_refOrList, RE::BGSListForm* a_targetList, RE::BGSListForm* a_excludeList = NULL); void OnLocationChange(); void RescanFoundArtifacts(); void RescanStoredArtifacts(); void RescanNewArtifacts(); }