; #### This file is part of the mod "Cassiopeia Papyrus Extender" (SFSE plugin) by LarannKiar ####





; Events are dispacthed by Cassiopiea in the form of global function callbacks:
; All event registrations are cleared on OnPlayerLoadGame ( the registration map isn't saved in save games )


; Example callback:

Function TESFormDeleteEvent(int aiDeletedFormID) global		

EndFunction

; Explanation:

; TESFormDeleteEvent: native event BGS named and implemented
; aiDeletedFormID: event data ( this event actually passes the deleted form's formID )


; You can register a script for any event with:
Bool Function RegisterForNativeEvent(String asScriptName, String asEventName, Form[] akFormFilter = None) native global

; Like:
Function SomeFunction()
	RegisterForNativeEvent("SomeScript", "TESCellFullyLoadedEvent")
EndFunction

; asScriptName this is the script that will receive the callback
; asEventName is the the event callback's name ( must be selected from the event list, see below )
; the event data parameters can be renamed but their types (e.g. bool, int, Actor) and their order cannot be changed
; Register/UnregisterForNativeEvent return true if the operation was successful

; Note that not all events have event data, more will probably be decoded later...


; You can optionally filter a ( registered ) script by an array of forms:

Function YourFunction(ObjectReference someReference)

	Form[] Forms = new Form[0]
	Forms.Add(someReference)
	RegisterForNativeEvent("SomeScript", "ReferenceSet3d", Forms)	; SomeScript would receive ReferenceSet3d only for 'someReference'

EndFunction

Function YourFunction(ObjectReference someReference)

	Form[] Forms = new Form[0]
	Forms.Add(someReference.GetBaseObject())
	RegisterForNativeEvent("SomeScript", "ReferenceSet3d", Forms)	; SomeScript would receive ReferenceSet3d events for all references which have the same Base Object as 'someReference'

EndFunction

; "Filter forms" can be added / removed from an already registered script with:

Bool Function AddNativeEventFilter(String asScriptName, String asEventName, Form[] akFormFilter) native global
Bool Function RemoveNativeEventFilter(String asScriptName, String asEventName, Form[] akFormFilter) native global

; Add/RemoveNativeEventFilter return true if the operation was successful


; You can see what forms a script is filtered by as well check whether a script is registered for an event at all with:

Form[] Function GetNativeEventFilteredForms(String asScriptName, String asEventName) native global
Bool Function IsRegisteredForNativeEvent(String asScriptName, String asEventName) native global





; ##### Events ( with EventData ) #####
;
;
; # when this actor equips / unequips something
; # akFilter support: can be filtered by akSource
Function TESEquipEvent(Actor akSource, Form akItemBase, bool abEquipped) global
;
; # when this reference's 3D is attached
; # has akFilter support ( code can check its GetBaseObject() too, disjunctive )
Function ReferenceSet3d(ObjectReference akReference) global
;
; # when this reference is detached ( no longer in the loaded area )
; # has akFilter support ( code can check its GetBaseObject() too, disjunctive )
Function ReferenceDetach(ObjectReference akReference) global
;
; # combat event
; # has akFilter support ( code checks for both akSource and akTarget, disjunctive )
Function TESCombatEvent(Actor akSource, ObjectReference akTarget, int aiCombatState) global
;
; # sent when this actor changes their ParentCell
; # has akFilter support ( code can check for the actor and the cells, disjunctive )
Function ActorCellChangeEvent(Actor akActor, Cell akPreviousCell, Cell akCurrentCell) Global
;
; # sent when this cell gets fully loaded
; # has akFilter support
Function TESCellFullyLoadedEvent(Cell akCell) global
;
; # when an item's container is changed
; # has akFilter support ( code checks for both source and target containers, disjunctive )
Function TESContainerChangedEvent(ObjectReference akSourceContainer, ObjectReference akTargetContainer, Form akItemBase, Int aiItemCount, Int aiItemRefID) global
;
; # sent after the form that had this FormID was deleted
Function TESFormDeleteEvent(Int aiDeletedFormID) global
;
; # when a form receives a new formID
Function TESFormIDRemapEvent(Int aiOldFormID, Int aiNewFormID) global
;
; # when this reference is loaded / unloaded
; # has akFilter support
Function TESObjectLoadedEvent(ObjectReference akReference, bool abLoaded) global
;
; # when a reference Activates another
; # has akFilter support ( code checks for both the activated and the action references, disjunctive )
Function TESActivateEvent(ObjectReference akActivatedRef, ObjectReference akActionRef) global
;
; # workshop events
; # have akFilter support ( code checks for both itemRef and workshopRef, disjunctive )
Function Workshop_ItemGrabbedEvent(ObjectReference itemRef, ObjectReference workshopRef) global
Function Workshop_ItemMovedEvent(ObjectReference itemRef, ObjectReference workshopRef) global
Function Workshop_ItemPlacedEvent(ObjectReference itemRef, ObjectReference workshopRef) global
;
; # input event ( aiKeyCode is DirectX Scan Code )
Function BSInputEvent(Int aiKeyCode, String asControlName, String asFriendlyName, bool bPressed, Float afHeldTime) global





; ##### Events ( without EventData ) #####
;
;
Activation
ActivityCompletedEvent
ActorItemEquipped
AutoLoadDoorRolloverEvent
BGSAcousticSpaceListener_StackChangedEvent
BGSAffinityEventEvent
BGSCellGridLoadEvent
BGSRadiationDamageEvent
BGSScannerGuideEffectStatusUpdateEvent
BGSSceneActionPlayerDialogue_ActionEndEvent
BarterMenu_BuyItem
BarterMenu_CloseMenu
BarterMenu_HideModel
BarterMenu_LoadModel
BarterMenu_SellItem
BarterMenu_SetMouseOverModel
BarterMenu_ViewedItem
BinkMovieStoppedPlayingEvent
BooksRead
BountyEvent
CellAttachDetachEvent
ChallengeCompletedEvent
CharGen_BrowChange
CharGen_BrowColorChange
CharGen_CancelTextEntry
CharGen_CloseMenu
CharGen_CyclePronoun
CharGen_DirtScarsEtcChange
CharGen_EndBodyChange
CharGen_EndTextEntry
CharGen_EyeColorChange
CharGen_FacialHairChange
CharGen_FacialHairColorChange
CharGen_HairChange
CharGen_HairColorChange
CharGen_HeadpartPlusSelectorChange
CharGen_HeadpartPresetChange
CharGen_JewelryChange
CharGen_JewelryColorChange
CharGen_MakeupChange
CharGen_MarkingsChange
CharGen_PostBlendColorOptionChange
CharGen_PostBlendFaceChange
CharGen_PostBlendIntensityChange
CharGen_PresetChange
CharGen_PresetNPCChangedEvent
CharGen_RotatePaperdoll
CharGen_SetAdditionalSlider
CharGen_SetBackground
CharGen_SetBodyValues
CharGen_SetCameraPosition
CharGen_SetPronoun
CharGen_SetSex
CharGen_SetSlider
CharGen_SetTrait
CharGen_ShowChooseBackgroundMessage
CharGen_ShowPlayerRenameMessage
CharGen_SkintoneChange
CharGen_StartBodyChange
CharGen_StartTextEntry
CharGen_SwitchBodyType
CharGen_TeethChange
CharGen_TeethRollOff
CharGen_TeethRollOn
CharGen_ToggleMarking
CharGen_TogglePreviewHabSuit
ClearHUDMessagesEvent
ClearQuickContainerEvent
ClearShipHudTarget
ContainerMenuClosed
ContainerMenu_HideModel
ContainerMenu_Jettison
ContainerMenu_LoadModel
ContainerMenu_OpenRefuelMenu
ContainerMenu_SetMouseOverModel
ContainerMenu_TakeAll
ContainerMenu_ToggleEquip
ContainerMenu_TransferItem
ContrabandScanWarningEvent
ControlsRemappedEvent
CraftingMenu_CloseMenu
CraftingMenu_CraftItem
CraftingMenu_ExitBench
CraftingMenu_Highlight3D
CraftingMenu_InstallMod
CraftingMenu_RenameItem
CraftingMenu_RevertHighlight
CraftingMenu_RevertedModdedItem
CraftingMenu_SelectedMod
CraftingMenu_SelectedModSlot
CraftingMenu_SelectedModdableItem
CraftingMenu_SelectedRecipe
CraftingMenu_ToggleTracking
CraftingMenu_ViewingModdableItem
CriticalHitEvent
CustomMarkerUpdate
DataMenu_Missions
DataMenu_PlotToLocation
DataMenu_Reopened
DataMenu_SetPaperDollActive
DataSlateMenu_playSFX
DataSlateMenu_toggleAudio
DialogueMenu_OnDialogueSelect
DialogueMenu_OnListVisibilityChange
DialogueMenu_OnPersuasionAutoWin
DialogueMenu_RequestExit
DialogueMenu_RequestSkipDialogue
DockEvent
EnteredUnity
ExperienceMeterDisplayData
FavoritesMenu_AssignQuickkey
FavoritesMenu_UseQuickkey
FirstThirdPersonSwitch
GravJumpEvent
HUDModeEvent
HUDNotificationEvent
HUDNotification_MissionActiveWidgetUpdate
HUDNotification_SetMissionActive
HideSubtitleEvent
InstantReferenceInteractionEvent
InventoryItemEvent
InventoryMenu_Change3DView
InventoryMenu_HideModel
InventoryMenu_LoadModel
InventoryMenu_OnEnterCategory
InventoryMenu_OpenCargoHold
InventoryMenu_PaperDollTryOn
InventoryMenu_ResetPaperDollInv
InventoryMenu_SelectItem
InventoryMenu_SetMouseOverModel
InventoryMenu_ToggleFavorite
InventoryMenu_ToggleHelmet
InventoryMenu_ToggleSuit
LandedSetEvent
LandingEvent
LevelIncrease
LevelUp_AnimFinished
LevelUp_OnWidgetShown
LocationLinked
LocationTextEvent
LocationTextWidget_FinishedQueue
MessageBoxMenu_OnBackOut
MessageBoxMenu_OnButtonPress
MessageBoxMenu_OnScriptedButtonPress
MissionBoard_MissionEntryChanged
MissionBoard_MissionEntryPressed
MissionMenu_ClearState
MissionMenu_PlotToLocation
MissionMenu_RejectQuest
MissionMenu_ShowItemLocation
MissionMenu_ToggleTrackingQuest
ModelReferenceEffectEvents_ReferenceEffectFinished
MonocleMenu_Bioscan
MonocleMenu_FastTravel
MonocleMenu_Harvest
MonocleMenu_Outpost
MonocleMenu_PhotoMode
MonocleMenu_SocialSpell
MonocleMenu_SurfaceMap
MonocleMenu_ZoomIn
MonocleMenu_ZoomOut
PauseMenu_ActionCanceled
PauseMenu_ConfirmAction
PauseMenu_ConfirmLoad
PauseMenu_ConfirmSave
PauseMenu_DeleteSave
PauseMenu_QuitToDesktop
PauseMenu_SetCharacter
PauseMenu_StartAction
PauseMenu_StartLoad
PerkChanged
PhotoGallery_DeletePhoto
PhotoMode_InitializeCategory
PhotoMode_RefineSetting
PhotoMode_ResetToDefaults
PhotoMode_SliderChanged
PhotoMode_StepperChanged
PhotoMode_TakeSnapshot
PhotoMode_ToggleHelmet
PhotoMode_ToggleUI
PickRefUpdateEvent
PickpocketMenu_OnItemSelect
PlanetTraitKnownEvent
PlayBink_CloseMenu
PlayerAmmoChanged
PlayerDetectionLevelChangeEvent
PlayerFastTravel
PlayerIronSightsEndEvent
PlayerIronSightsStartEvent
PlayerJumpPressEvent
PlayerJumpReleaseEvent
PlayerKnowledgeFlagSetEvent
PlayerSetWeaponStateEvent
PlayerSneakingChangeEvent
PlayerZeroGSprintJustPressedEvent
PlayerZeroGSprintReleasedEvent
PowersMenu_ActivateEssence
PowersMenu_EquipPower
PowersMenu_FavoritePower
Refuel_Accept
Refuel_Cancel
ReloadWeaponEvent
ResearchMenu_AddMaterial
ResearchMenu_CategorySelected
ResearchMenu_HideModel
ResearchMenu_PreviewProject
ResearchMenu_ProjectViewed
ResearchMenu_ToggleTrackingProject
ResearchProgressEvent
Reticle_OnLongAnimFinished
SecurityMenu_BackOutKey
SecurityMenu_ConfirmExit
SecurityMenu_EliminateUnusedKeys
SecurityMenu_GetRingHint
SecurityMenu_SelectNewKey
SecurityMenu_TryUseKey
ShipAddedEvent
ShipCameraStateToggled
ShipCollisionEvent
ShipCustomizedEvent
ShipEditor_SystemSelected
ShipHudQuickContainer_TransferItem
ShipHudQuickContainer_TransferMenu
ShipHud_AbortJump
ShipHud_Activate
ShipHud_BodyViewMarkerDimensions
ShipHud_ChangeComponentSelection
ShipHud_Deselect
ShipHud_DockRequested
ShipHud_FarTravel
ShipHud_HailAccepted
ShipHud_HailCancelled
ShipHud_HailShip
ShipHud_JumpToQuestMarker
ShipHud_Land
ShipHud_LandingMarkerMap
ShipHud_Map
ShipHud_OpenPhotoMode
ShipHud_Repair
ShipHud_SetTargetMode
ShipHud_Target
ShipHud_TargetShipSystem
ShipHud_UntargetShipSystem
ShipHud_UpdateComponentPower
ShipHud_UpdateTargetPanelRect
ShowHUDMessageEvent
ShowLongShipBootup
ShowSubtitleEvent
ShowingQuestMarketTextEvent
SkillsMenu_Accept
SleepWaitMenu_InterruptRest
SleepWaitMenu_StartRest
SpaceshipBIEvents_ShipPowerAllocationBIEventSent
SpaceshipBoughtEvent
SpaceshipDynamicNavmeshCompleted
SpaceshipFarTravelEvent
SpaceshipPlanetScanEvent
SpaceshipRampDownEvent
SpaceshipRefueledEvent
SpaceshipRegisteredEvent
SpaceshipShieldEvent
SpaceshipSoldEvent
SpaceshipSystemDamagedEvent
SpaceshipSystemPowerAllocationEvent
SpaceshipSystemPowerChangeEvent
SpaceshipSystemRepairedBIEvent
SpaceshipSystemRepairedEvent
SpaceshipTakeDamageEvent
SpaceshipWeaponBindingChangedEvent
StarMapMenu_ExecuteRoute
StarMapMenu_Galaxy_FocusSystem
StarMapMenu_LandingInputInProgress
StarMapMenu_MarkerGroupContainerVisibilityChanged
StarMapMenu_MarkerGroupEntryClicked
StarMapMenu_MarkerGroupEntryHoverChanged
StarMapMenu_OnCancel
StarMapMenu_OnClearRoute
StarMapMenu_OnExitStarMap
StarMapMenu_OnGalaxyViewInitialized
StarMapMenu_OnHintButtonClicked
StarMapMenu_OnOutpostEntrySelected
StarMapMenu_QuickSelectChange
StarMapMenu_ReadyToClose
StarMapMenu_ScanPlanet
StarMapMenu_SelectedLandingSite
StarMapMenu_SelectedLandingSiteFailed
StarMapMenu_ShowRealCursor
SurfaceMapMenu_MarkerClicked
SurfaceMapMenu_TryPlaceCustomMarker
TESBookReadEvent
TESCellNavmeshGeneratedEvent
TESFurnitureEvent
TESGrabReleaseEvent
TESHarvestEvent
TESLoadGameEvent
TESMissionAcceptedEvent
TESPickNewIdleEvent
TESPlayerFollowerWarpEvent
TESResetEvent
TESResolveNPCTemplatesEvent
TakeOffEvent
TakeoffMenu_ExitShip
TakeoffMenu_Launch
TargetHitEvent
TerminalHacked
TerminalMenu_CancelEvent
Terminal_CloseAllViews
Terminal_CloseTopView
Terminal_CloseView
TraitDiscoveryTextEvent
TryUpdateShipHudTarget
UIMenuChargenMenuDisablePaperdoll
UnlockedTerminalElementEvent
UpdateActivateListenerEvent
UpdateSceneRectEvent
WorkshopBuilderMenu_ChangeBuildItem
WorkshopBuilderMenu_SelectedItem
WorkshopBuilderMenu_ToggleTracking
WorkshopMenu_AttemptBuild
WorkshopMenu_ChangeVariant
WorkshopMenu_ConnectionEvent
WorkshopMenu_SelectedCategory
WorkshopMenu_SelectedGridObject
WorkshopMenu_ShowExtras
WorkshopMenu_SwitchMode
WorkshopMenu_ToggleDistance
WorkshopMenu_ToggleTracking
WorkshopMenu_ToggleView
Workshop_CargoLinkAddedEvent
Workshop_CargoLinkTargetChangedEvent
Workshop_EnterOutpostBeaconModeEvent
Workshop_ItemProducedEvent
Workshop_ItemRemovedEvent
Workshop_ItemRepairedEvent
Workshop_ItemScrappedEvent
Workshop_OutpostNameChangedEvent
Workshop_OutpostPlacedEvent
Workshop_PlacementStatusEvent
Workshop_PowerOffEvent
Workshop_PowerOnEvent
Workshop_SnapBehaviorCycledEvent
Workshop_WorkshopFlyCameraEvent
Workshop_WorkshopItemPlacedEvent
Workshop_WorkshopModeEvent
Workshop_WorkshopOutputLinkEvent
Workshop_WorkshopStatsChangedEvent
Workshop_WorkshopUpdateStatsEvent










