4
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

315 lines
9.3 KiB

Scriptname _00E_MQP01_Functions extends Quest
Import Utility
;=====================================================================================
; FUNCTIONS
;=====================================================================================
Function SetUpScene()
Game.FadeOutGame(false, true, 0.5, 0.5)
FadeToBlackHoldIMOD.Apply()
PlayerREF.SetScale(0.85)
TimeScale.SetValue(0.1)
GameHour.SetValue(18.5)
Game.ForceFirstPerson()
Game.DisablePlayerControls(false, true, true, false, true, false, false)
Message.ResetHelpMessage("Clear")
; This message is empty, repurposed to clear stuck help messages
_00E_MQP01_Thoughts01.ShowAsHelpMessage("Clear", 0.1, 1, 1)
FadeToBlackBackImod.Apply()
FadeToBlackHoldIMOD.Remove()
MQP01_DreamDoorREF.BlockActivation(True)
Wait(5.0)
Game.EnablePlayerControls()
if EnderalFunctions.GetNewGameCount() > 1
Game.QuitToMainMenu()
Debug.MessageBox("Due to an engine bug, new game should not be started after quitting to the main menu. Please, restart Enderal first.")
return
endif
Game.DisablePlayerControls(false, true, true, false, true, false, false)
EndFunction
Function UnlockDoor()
MQP01_DreamDoorREF.Lock(False)
MQP01_DreamDoorREF.BlockActivation(False)
EndFunction
Function UnblockDoor()
MQP01_DreamDoorREF.BlockActivation(False)
EndFunction
Function ArriveInHouse()
_00E_MQP01_InfantLaughing.Play(PlayerREF)
TimeScale.SetValue(450)
RegisterForSingleUpdate(1)
EndFunction
Function SC01_FatherFailsave()
Game.DisablePlayerControls()
if MQP01_FatherREF.GetDistance(MQP01_SC1_FatherArriveMarker) >= 75
MQP01_FatherREF.MoveTo(MQP01_SC1_FatherArriveMarker)
EndIf
EndFunction
Function StartFatherWhistleScene()
Game.DisablePlayerControls()
MQP01_FatherREF.MoveTo(MQP01_SC1_FatherStartWalkingMarker)
MQP01_SC1_FatherArrivesInKitchen.ForceStart()
EndFunction
Function StopMusic()
_00E_SilenceTransitionHighPriority.Add()
EndFunction
Function StartFatherAccuseScene()
if PlayerREF.GetDistance(MQP01_SC01_PlayerWalkMarker) >= 55
PlayerREF.TranslateToRef(MQP01_SC01_PlayerWalkMarker, 50, 50)
EndIf
AudioCategoryAMBr.SetVolume(__Config_MuteAmbienceVolume)
AudioCategoryAMB.SetVolume(__Config_MuteAmbienceVolume)
;AudioCategoryMUS.SetVolume(3.25)
;AudioCategoryVOCGeneral.SetVolume(7.5)
; Eddoursul: Instead of setting volume to 1, deafening some users, use relative values
fMusicVolume = Utility.GetINIfloat("fVal3:AudioMenu")
fVoiceVolume = Utility.GetINIfloat("fVal1:AudioMenu")
fEffectsVolume = Utility.GetINIfloat("fVal4:AudioMenu")
AudioCategorySFX.SetVolume(fEffectsVolume * 0.75)
AudioCategoryMUS.SetVolume(fMusicVolume * 1.20)
if fVoiceVolume <= fMusicVolume
AudioCategoryVOCGeneral.SetVolume(fMusicVolume * 1.25)
else
AudioCategoryVOCGeneral.SetVolume(fVoiceVolume * 1.15)
endif
_00E_Music_Special_Dreams.Remove()
_00E_SilenceTransitionHighPriority.Remove()
_00E_Music_Special_MQP01_BuildUp.Add()
FireSound = FXFireEmbers02LP.Play(PlayerREF)
MQP01_SC2_EmbersEffect01.Enable()
MQP01_SC2_FatherAccusesThePlayer.ForceStart()
EndFunction
Function StartFire()
Game.ShakeCamera()
ExplosionToDisable00 = MQP01_SC2_ExplosionSpawnMarker.PlaceAtMe(_00E_HarmlessFireExplosion, 1)
ExplosionToDisable01 = MQP01_FatherREF.PlaceAtMe(_00E_MQP01_IntenseFire, 1)
MAGFireBallExpImod.Apply()
MQP01_SC2_FireREF03.EnableNoWait()
MQP01_SC2_FireREF04.EnableNoWait()
MAGDestructionFireStormExplosionM.Play(PlayerREF)
Wait(0.5)
Game.ShakeCamera(afStrength = 0.7)
MQP01_SC2_FireREF05.EnableNoWait()
MQP01_SC2_FireREF06.EnableNoWait()
MAGDestructionFireballExplosionM.Play(PlayerREF)
FireFXShader.Play(MQP01_FatherRef)
FireFXShader.Play(MQP01_SC02_Elk)
Wait(0.5)
BFXFireImod.Apply()
MAGFirebolt03Fire.Play(PlayerREF)
Game.ShakeCamera(afStrength = 0.1)
MQP01_SC2_FireREF01.EnableNoWait()
MQP01_SC2_FireREF02.EnableNoWait()
_00E_MAGFXFireOilIgniteLow.Play(PlayerREF)
MQP01_SC2_SmokeREF01.EnableNoWait()
MQP01_SC2_EmbersEffect02.EnableNoWait()
EndFunction
Function FatherStartFeeding()
_00E_MQP01_DevourElkM.Play(PlayerREF)
MQP01_FatherREF.SetAnimationVariableBool("bAnimationDriven", true)
Debug.SendAnimationEvent(MQP01_FatherREF, "IdleCannibalFeedCrouching")
EndFunction
Function CrashDownEverything()
MQP01_SC02_Elk.PlayImpactEffect(BloodSprayImpactSetRed )
Wait(0.5)
MQP01_SC02_Elk.PlayImpactEffect(BloodSprayImpactSetRed )
Wait(0.5)
MQP01_SC02_Elk.PlayImpactEffect(BloodSprayImpactSetRed )
Wait(0.5)
MQP01_SC02_Elk.PlayImpactEffect(BloodSprayImpactSetRed )
Wait(0.5)
MQP01_SC02_Elk.PlayImpactEffect(BloodSprayImpactSetRed )
Wait(0.5)
MQP01_SC02_Elk.PlayImpactEffect(BloodSprayImpactSetRed )
Wait(0.5)
MQP01_SC02_Elk.PlayImpactEffect(BloodSprayImpactSetRed )
Wait(0.5)
MQP01_SC02_Elk.PlayImpactEffect(BloodSprayImpactSetRed )
Wait(0.5)
MQP01_SC02_Elk.PlayImpactEffect(BloodSprayImpactSetRed )
Wait(0.5)
MQP01_SC02_Elk.PlayImpactEffect(BloodSprayImpactSetRed )
Wait(5.9)
PlayerREF.TranslateToRef(MQP01_SC2_PlayerCameraTran, 1000.0, 1000.0)
EndFunction
Function PlayIntroAndMovePlayerToShip()
AudioCategoryAMB.Mute()
AudioCategoryMAG.Mute()
AudioCategorySFX.Mute()
MQP01_SC2_FatherAccusesThePlayer.Stop()
_00E_SilenceAbruptHighPriority.Remove()
PlayerREF.SetScale(1)
Sound.StopInstance(FireSound)
BFXFireImod.Remove()
Wait(7.8)
If _00E_AchievementsEnabled.GetValueInt() == 1
Steam.UnlockAchievement("END_COMPLETE_MQP01_01")
EndIf
If _00E_VideoSkip.GetValueInt() == 0
Game.PlayBink("EnderalIntro.bik", true, true, true, true)
EndIf
wait(0.2)
; Eddoursul: restore the original volume level
AudioCategoryVOCGeneral.SetVolume(fVoiceVolume)
AudioCategoryMUS.SetVolume(fMusicVolume)
AudioCategorySFX.SetVolume(fEffectsVolume)
AudioCategoryAMBr.SetVolume(1)
AudioCategoryAMB.SetVolume(1)
MQP02.SetStage(5)
AudioCategoryAMB.UnMute()
AudioCategoryMAG.UnMute()
AudioCategorySFX.UnMute()
_00E_SilenceAbruptHighPriority.Remove()
_00E_Music_Special_Dreams.Remove()
ExplosionToDisable00.delete()
ExplosionToDisable01.delete()
EndFunction
;=====================================================================================
; EVENTS
;=====================================================================================
Event OnUpdate()
If (GameHour.GetValue() <= 22)
RegisterForSingleUpdate(0.5)
Else
Timescale.SetValue(0.1)
EndIf
EndEvent
;=====================================================================================
; PROPERTIES
;=====================================================================================
int iVOCGeneralValue
int FireSound
ObjectReference ExplosionToDisable00
ObjectReference ExplosionToDisable01
float Property __Config_MuteAmbienceVolume = 0.75 Auto
{At which level should the ambience sound be played? (0.5 -> 50% of normal loudness)}
float fMusicVolume = 0.75
float fVoiceVolume = 0.75
float fEffectsVolume = 0.75
_00E_QuestFunctions Property Levelsystem Auto
MusicType Property _00E_Music_Special_Dreams Auto
MusicType Property _00E_SilenceAbruptHighPriority Auto
MusicType Property _00E_Music_Special_MQP01_BuildUp Auto
MusicType Property _00E_SilenceTransitionHighPriority Auto
Explosion Property _00E_HarmlessFireExplosion Auto
SoundCategory Property AudioCategoryVOCGeneral Auto
SoundCategory Property AudioCategoryAMB Auto
SoundCategory Property AudioCategoryMAG Auto
SoundCategory Property AudioCategorySFX Auto
SoundCategory Property AudioCategoryMUS Auto
SoundCategory Property AudioCategoryAMBr Auto
Actor Property PlayerREF Auto
Actor Property MQP01_FatherRef Auto
Scene Property MQP01_SC1_FatherArrivesInKitchen Auto
Scene Property MQP01_SC2_FatherAccusesThePlayer Auto
Message Property _00E_MQP01_Thoughts01 Auto
Sound Property _00E_MAGFXFireOilIgniteLow Auto
Sound Property _00E_MQP01_InfantLaughing Auto
Sound Property FXFireEmbers02LP Auto
Sound Property MAGDestructionFireStormExplosionM Auto
Sound Property MAGDestructionFireballExplosionM Auto
Sound Property MAGFirebolt03Fire Auto
Sound Property _00E_MQP01_DevourElkM Auto
ImpactDataSet Property BloodSprayImpactSetRed Auto
EffectShader Property FireFXShader Auto
Light Property _00E_MQP01_IntenseFire Auto
ObjectReference Property MQP01_SC1_FatherStartWalkingMarker Auto
ObjectReference Property MQP01_SC2_EmbersEffect01 Auto
ObjectReference Property MQP01_SC2_EmbersEffect02 Auto
ObjectReference Property MQP01_SC2_SmokeREF01 Auto
ObjectReference Property MQP01_SC2_FireREF01 Auto
ObjectReference Property MQP01_SC2_FireREF02 Auto
ObjectReference Property MQP01_SC2_FireREF03 Auto
ObjectReference Property MQP01_SC2_FireREF04 Auto
ObjectReference Property MQP01_SC2_FireREF05 Auto
ObjectReference Property MQP01_SC2_FireREF06 Auto
ObjectReference Property MQP01_SC2_ExplosionSpawnMarker Auto
ObjectReference Property MQP01_SC2_PlayerCameraTran Auto
ObjectReference Property MQP01_DreamDoorREF Auto
ObjectReference Property MQP01_SC02_Elk Auto
ObjectReference Property MQP01_SC1_FatherArriveMarker Auto
ObjectReference Property MQP01_SC01_PlayerWalkMarker Auto
Quest Property MQP02 Auto
GlobalVariable Property Timescale Auto
GlobalVariable Property GameHour Auto
GlobalVariable Property _00E_VideoSkip Auto
GlobalVariable Property _00E_AchievementsEnabled Auto
ImageSpaceModifier Property FadeToBlackHoldIMOD Auto
ImageSpaceModifier Property FadeToBlackBackImod Auto
ImageSpaceModifier Property MAGFireBallExpImod Auto
ImageSpaceModifier Property BFXFireImod Auto