128 lines
3.5 KiB
Plaintext
128 lines
3.5 KiB
Plaintext
Scriptname _00E_Ark_GenericDialogueFunctions extends Quest Conditional
|
|
|
|
;=====================================================================================
|
|
; EVENTS
|
|
;=====================================================================================
|
|
|
|
Event OnUpdateGameTime()
|
|
If PlayerREF.GetWorldSpace() == CapitalCityUpperCity
|
|
RegisterForSingleUpdateGameTime(1.0)
|
|
Return
|
|
EndIf
|
|
|
|
; Failsafes
|
|
bPlayerWithinHearingDistance = False
|
|
|
|
Int Index = 0
|
|
While Index < arrayPoemScenes.Length
|
|
If arrayPoemScenes[Index].IsPlaying()
|
|
arrayPoemScenes[Index].Stop()
|
|
EndIf
|
|
Index += 1
|
|
EndWhile
|
|
|
|
bPoemCurrentlyPlaying = False
|
|
EndEvent
|
|
|
|
Event OnUpdate()
|
|
StartRandomPoemScene()
|
|
EndEvent
|
|
|
|
;=====================================================================================
|
|
; FUNCTIONS
|
|
;=====================================================================================
|
|
|
|
bool Function NoPoemPlaying()
|
|
Int Index = 0
|
|
While Index < arrayPoemScenes.Length
|
|
If arrayPoemScenes[Index].IsPlaying()
|
|
Return False
|
|
EndIf
|
|
Index += 1
|
|
EndWhile
|
|
|
|
Return True
|
|
EndFunction
|
|
|
|
Function StartRandomPoemScene()
|
|
|
|
If _00E_UpperCity_PrinceMithREF.GetCurrentPackage() != _00E_CapitalCity_UpperCity_Mith_ReadPoems
|
|
Return
|
|
EndIf
|
|
|
|
If PlayerREF.GetWorldSpace() != CapitalCityUpperCity
|
|
bPlayerWithinHearingDistance = False
|
|
EndIf
|
|
|
|
If bPlayerWithinHearingDistance == False
|
|
Return
|
|
EndIf
|
|
|
|
If NoPoemPlaying() == False
|
|
Return
|
|
EndIf
|
|
|
|
; If the prince is away from his marker or in dialogue with the player, try again later
|
|
If _00E_UpperCity_PrinceMithREF.GetDistance(PrinceMithReadPoemsMarker) > 64.0 || _00E_UpperCity_PrinceMithREF.IsInDialogueWithPlayer()
|
|
RegisterForSingleUpdate(2.0)
|
|
Return
|
|
EndIf
|
|
|
|
If !bPoemCurrentlyPlaying
|
|
bPoemCurrentlyPlaying = True
|
|
UnregisterForUpdate()
|
|
; Pick a poem, but not the same as the last time
|
|
Int poemIndex = Utility.RandomInt(0, arrayPoemScenes.Length - 1)
|
|
While poemIndex == lastPoemPlayed
|
|
poemIndex = Utility.RandomInt(0, arrayPoemScenes.Length - 1)
|
|
EndWhile
|
|
arrayPoemScenes[poemIndex].ForceStart()
|
|
lastPoemPlayed = poemIndex
|
|
RegisterForSingleUpdateGameTime(1.0)
|
|
EndIf
|
|
|
|
EndFunction
|
|
|
|
Function OnPoemSceneEnd()
|
|
bPoemCurrentlyPlaying = False
|
|
RegisterForSingleUpdate(1.0)
|
|
EndFunction
|
|
|
|
Function RemoveAmulets()
|
|
|
|
PlayerREF.RemoveItem(_00E_MQ01_FinnCarbosAmulet, 2)
|
|
bPlayerHasGivenAmulets = True
|
|
PlayerREF.AddItem(Gold001, 150)
|
|
PlayerREF.AddItem(_00E_Eispranke, 1)
|
|
Levelsystem.GiveEP(150)
|
|
|
|
EndFunction
|
|
|
|
;=====================================================================================
|
|
; PROPERTIES
|
|
;=====================================================================================
|
|
|
|
_00E_QuestFunctions Property Levelsystem Auto
|
|
|
|
bool Property bPlayerHasHadMithConversation Auto Conditional Hidden
|
|
bool Property bPlayerHasHadToriusConversation Auto Conditional Hidden
|
|
bool Property bPlayerHasGivenAmulets Auto Conditional Hidden
|
|
|
|
bool Property bPlayerWithinHearingDistance Auto Hidden
|
|
bool Property bPoemCurrentlyPlaying Auto Hidden
|
|
|
|
Actor Property _00E_UpperCity_PrinceMithREF Auto
|
|
Actor Property PlayerREF Auto
|
|
|
|
Worldspace Property CapitalCityUpperCity Auto
|
|
|
|
MiscObject Property Gold001 Auto
|
|
|
|
Armor Property _00E_MQ01_FinnCarbosAmulet Auto
|
|
Potion Property _00E_Eispranke Auto
|
|
|
|
Package Property _00E_CapitalCity_UpperCity_Mith_ReadPoems Auto
|
|
ObjectReference Property PrinceMithReadPoemsMarker Auto
|
|
|
|
Scene[] Property arrayPoemScenes Auto
|
|
Int Property lastPoemPlayed = -1 Auto Hidden |