Scriptname PlayerVampireQuestScript extends Quest Conditional;Variable to track if the player is a vampire;0 = Not a Vampire;1 = Vampire;2 = Vampire Stage 2;3 = Vampire Stage 3;4 = Vampire Stage 4Int Property VampireStatus Auto ConditionalMessage Property VampireFeedMessage AutoMessage Property VampireStageProgressionMessage AutoRace Property ArgonianRace Auto Race Property ArgonianRaceVampire Auto Race Property BretonRace Auto Race Property BretonRaceVampire Auto Race Property DarkElfRace Auto Race Property DarkElfRaceVampire Auto Race Property HighElfRace Auto Race Property HighElfRaceVampire Auto Race Property ImperialRace Auto Race Property ImperialRaceVampire Auto Race Property KhajiitRace Auto Race Property KhajiitRaceVampire Auto Race Property NordRace Auto Race Property NordRaceVampire Auto Race Property OrcRace Auto Race Property OrcRaceVampire Auto Race Property RedguardRace Auto Race Property RedguardRaceVampire Auto Race Property WoodElfRace Auto Race Property WoodElfRaceVampire Auto Race Property CureRace AutoStatic Property XMarker AutoFaction Property VampirePCFaction Auto Float Property LastFeedTime AutoFloat Property FeedTimer AutoGlobalVariable Property GameDaysPassed AutoIdle Property VampireFeedingBedRight AutoIdle Property VampireFeedingBedrollRight AutoGlobalVariable Property VampireFeedReady AutoimageSpaceModifier Property VampireTransformIncreaseISMD AutoimageSpaceModifier Property VampireTransformDecreaseISMD AutoeffectShader property VampireChangeFX autoEvent OnUpdateGameTime() ;Feed timer FeedTimer = GameDaysPassed.Value - LastFeedTime; debug.trace(self + "Feed Timer is:" + FeedTimer + "days") actor player player = game.GetPlayer() ;Vampire progression should not happen if player is in combat or controls are locked or the player can't fast travel If (Game.IsMovementControlsEnabled() && Game.IsFightingControlsEnabled() && (player.GetCombatState() == 0) && !player.HasMagicEffect(DLC1VampireChangeEffect) && !player.HasMagicEffect(DLC1VampireChangeFXEffect)) ;If player hasn't fed, progress Vampirism If (FeedTimer >= 3) && (VampireStatus == 3) ;add Stage 4 Vampire buffs and spells VampireFeedReady.SetValue(3) ;VampireStageProgressionMessage.Show() VampireStage4Message.Show() VampireStatus = 4 VampireProgression(Game.GetPlayer(), 4) ;All NPCs hate the evil Vampire; Game.GetPlayer().AddtoFaction(VampirePCFaction); Game.GetPlayer().SetAttackActorOnSight(); int cfIndex = 0; while (cfIndex < CrimeFactions.GetSize()); Debug.Trace("VAMPIRE: Setting enemy flag on " + CrimeFactions.GetAt(cfIndex)); (CrimeFactions.GetAt(cfIndex) as Faction).SetPlayerEnemy(); cfIndex += 1; endwhile ;stop checking GameTime until the player feeds again UnregisterforUpdateGameTime() ElseIf FeedTimer >= 2 && (VampireStatus == 2) ;add Stage 3 Vampire buffs and spells VampireFeedReady.SetValue(2) VampireStageProgressionMessage.Show() VampireStatus = 3 VampireProgression(Game.GetPlayer(), 3) ElseIf FeedTimer >= 1 && (VampireStatus == 1) ;add Stage 2 Vampire buffs and spells VampireFeedReady.SetValue(1) VampireStageProgressionMessage.Show() VampireStatus = 2 VampireProgression(Game.GetPlayer(), 2) EndIf Endif EndEventFunction VampireFeedBed() Game.GetPlayer().PlayIdle(VampireFeedingBedRight)EndFunctionFunction VampireFeedBedRoll() Game.GetPlayer().PlayIdle(VampireFeedingBedrollRight)EndFunctionFunction VampireChange(actor Target) ;Effects for hiding the change Game.DisablePlayerControls() VampireChangeFX.play(Target) VampireTransformIncreaseISMD.applyCrossFade(2.0) ObjectReference myXmarker = Target.PlaceAtMe(Xmarker) MAGVampireTransform01.Play(myXmarker) myXmarker.Disable() utility.wait(2.0) imageSpaceModifier.removeCrossFade() VampireChangeFX.stop(Target) ;Change player's race, defaults to Nord Vampire if (Target.GetActorBase().GetRace() == ArgonianRace) CureRace = ArgonianRace Target.SetRace(ArgonianRaceVampire) elseif (Target.GetActorBase().GetRace() == BretonRace) CureRace = BretonRace Target.SetRace(BretonRaceVampire) elseif (Target.GetActorBase().GetRace() == DarkElfRace) CureRace = DarkElfRace Target.SetRace(DarkElfRaceVampire) elseif (Target.GetActorBase().GetRace() == HighELfRace) CureRace = HighELfRace Target.SetRace(HighELfRaceVampire) elseif (Target.GetActorBase().GetRace() == ImperialRace) CureRace = ImperialRace Target.SetRace(ImperialRaceVampire) elseif (Target.GetActorBase().GetRace() == KhajiitRace) CureRace = KhajiitRace Target.SetRace(KhajiitRaceVampire) elseif (Target.GetActorBase().GetRace() == NordRace) CureRace = NordRace Target.SetRace(NordRaceVampire) elseif (Target.GetActorBase().GetRace() == OrcRace) CureRace = OrcRace Target.SetRace(OrcRaceVampire) elseif (Target.GetActorBase().GetRace() == RedguardRace) CureRace = RedguardRace Target.SetRace(RedguardRaceVampire) elseif (Target.GetActorBase().GetRace() == WoodElfRace) CureRace = WoodElfRace Target.SetRace(WoodElfRaceVampire) endif ;Clear player's diseases ;VampireCureDisease.Cast(Target) Target.RemoveSpell(DiseaseBoneBreakFever) Target.RemoveSpell(DiseaseBrainRot) Target.RemoveSpell(DiseaseRattles) Target.RemoveSpell(DiseaseRockjoint) Target.RemoveSpell(DiseaseWitbane) Target.RemoveSpell(DiseasePorphyricHemophelia) Target.RemoveSpell(DiseaseAtaxia) Target.RemoveSpell(TrapDiseaseBoneBreakFever) Target.RemoveSpell(TrapDiseaseBrainRot) Target.RemoveSpell(TrapDiseaseRattles) Target.RemoveSpell(TrapDiseaseRockjoint) Target.RemoveSpell(TrapDiseaseWitbane) Target.RemoveSpell(TrapDiseasePorphyricHemophelia) Target.RemoveSpell(TrapDiseaseAtaxia) ;Make player Vampire Stage 1 VampireStatus = 1 VampireProgression(Game.GetPlayer(), 1) ;Setup the Feed Timers RegisterForUpdateGameTime(12) LastFeedTime = GameDaysPassed.Value ;Set the Global for stat tracking PlayerIsVampire.SetValue(1) Utility.Wait(1) Game.EnablePlayerControls() ;If the player has been cured before, restart the cure quest If VC01.GetStageDone(200) == 1 VC01.SetStage(25) EndIf EndFunctionFunction VampireFeed() ;Effects for hiding the change ;VampireChangeFX.play(game.getPlayer()) VampireTransformDecreaseISMD.applyCrossFade(2.0) utility.wait(2.0) imageSpaceModifier.removeCrossFade() ;VampireChangeFX.stop(game.getPlayer()) Game.IncrementStat( "Necks Bitten" ) VampireFeedMessage.Show() VampireFeedReady.SetValue(0) ;Game.ForceThirdPerson() ;Game.GetPlayer().PlayIdle(VampireFeedingBedRight) ;Player has fed, regress to Stage 1 Vampirisim ;Remove Stage 2, 3, and 4 buffs and spells LastFeedTime = GameDaysPassed.Value VampireStatus = 1 Actor player = Game.GetPlayer() VampireProgression(player, 1) ;Player is no longer hated player.RemoveFromFaction(VampirePCFaction) player.SetAttackActorOnSight(False) int cfIndex = 0; Debug.Trace("VAMPIRE feed: DLC1CrimeFactions = " + DLC1CrimeFactions, 0); Debug.Trace("VAMPIRE feed: CrimeFactions before = " + CrimeFactions, 0) CrimeFactions = DLC1CrimeFactions; Debug.Trace("VAMPIRE feed: CrimeFactions after = " + CrimeFactions, 0) while (cfIndex < CrimeFactions.GetSize()); Debug.Trace("VAMPIRE: Removing enemy flag from " + CrimeFactions.GetAt(cfIndex)) (CrimeFactions.GetAt(cfIndex) as Faction).SetPlayerEnemy(false) cfIndex += 1 endwhile ;Start checking GameTime again if we weren't already UnregisterforUpdateGameTime() RegisterForUpdateGameTime(12)EndFunctionFunction VampireProgression(Actor Player, int VampireStage) ;Swap out abilities depending on stage of Vampirism If VampireStage == 2 VampireTransformIncreaseISMD.applyCrossFade(2.0) utility.wait(2.0) imageSpaceModifier.removeCrossFade() Player.RemoveSpell(AbVampire01) Player.RemoveSpell(AbVampire01b) Player.AddSpell(AbVampire02b, abVerbose = False) Player.AddSpell(AbVampire02, abVerbose = False) ;Player.RemoveSpell(VampireStrength01) ;Player.AddSpell(VampireStrength02, abVerbose = False) Player.RemoveSpell(VampireSunDamage01) Player.AddSpell(VampireSunDamage02, abVerbose = False) Player.AddSpell(VampireDrain02, abVerbose = False) ;check to see if player has power equipped and switch them out If Player.GetEquippedSpell(0) == VampireDrain01 Player.EquipSpell(VampireDrain02, 0) EndIf If Player.GetEquippedSpell(1) == VampireDrain01 Player.EquipSpell(VampireDrain02, 1) EndIf Player.RemoveSpell(VampireDrain01) Player.AddSpell(VampireRaiseThrall02, abVerbose = False) Player.RemoveSpell(VampireRaiseThrall01) Player.AddSpell(VampireCharm) ElseIf VampireStage == 3 VampireTransformIncreaseISMD.applyCrossFade(2.0) utility.wait(2.0) imageSpaceModifier.removeCrossFade() Player.RemoveSpell(AbVampire01) Player.RemoveSpell(AbVampire02) Player.RemoveSpell(AbVampire01b) Player.RemoveSpell(AbVampire02b) Player.AddSpell(AbVampire03b, abVerbose = False) Player.AddSpell(AbVampire03, abVerbose = False) Player.AddSpell(VampireDrain03, abVerbose = False) ;check to see if player has power equipped and switch them out If Player.GetEquippedSpell(0) == VampireDrain02 || Player.GetEquippedSpell(0) == VampireDrain01 Player.EquipSpell(VampireDrain03, 0) EndIf If Player.GetEquippedSpell(1) == VampireDrain02 || Player.GetEquippedSpell(1) == VampireDrain01 Player.EquipSpell(VampireDrain03, 1) EndIf Player.RemoveSpell(VampireDrain01) Player.RemoveSpell(VampireDrain02) Player.RemoveSpell(VampireRaiseThrall01) Player.RemoveSpell(VampireRaiseThrall02) Player.AddSpell(VampireRaiseThrall03, abVerbose = False) ;Player.RemoveSpell(VampireStrength01) ;Player.RemoveSpell(VampireStrength02) ;Player.AddSpell(VampireStrength03, abVerbose = False) Player.RemoveSpell(VampireSunDamage01) Player.RemoveSpell(VampireSunDamage02) Player.AddSpell(VampireSunDamage03, abVerbose = False) ;Player.AddSpell(VampireHuntersSight) ;Player.AddSpell(VampireCloak) ElseIf VampireStage == 4 VampireTransformIncreaseISMD.applyCrossFade(2.0) utility.wait(2.0) imageSpaceModifier.removeCrossFade() Player.RemoveSpell(AbVampire01) Player.RemoveSpell(AbVampire02) Player.RemoveSpell(AbVampire03) Player.RemoveSpell(AbVampire01b) Player.RemoveSpell(AbVampire02b) Player.RemoveSpell(AbVampire03b) Player.AddSpell(AbVampire04, abVerbose = False) Player.AddSpell(AbVampire04b, abVerbose = False) Player.AddSpell(VampireDrain04, abVerbose = False) ;check to see if player has power equipped and switch them out If Player.GetEquippedSpell(0) == VampireDrain03 || Player.GetEquippedSpell(0) == VampireDrain02 || Player.GetEquippedSpell(0) == VampireDrain01 Player.EquipSpell(VampireDrain04, 0) EndIf If Player.GetEquippedSpell(1) == VampireDrain03 || Player.GetEquippedSpell(1) == VampireDrain02 || Player.GetEquippedSpell(1) == VampireDrain01 Player.EquipSpell(VampireDrain04, 1) EndIf Player.RemoveSpell(VampireDrain01) Player.RemoveSpell(VampireDrain02) Player.RemoveSpell(VampireDrain03) Player.RemoveSpell(VampireRaiseThrall01) Player.RemoveSpell(VampireRaiseThrall02) Player.RemoveSpell(VampireRaiseThrall03) Player.AddSpell(VampireRaiseThrall04, abVerbose = False) ;Player.RemoveSpell(VampireStrength01) ;Player.RemoveSpell(VampireStrength02) ;Player.RemoveSpell(VampireStrength03) ;Player.AddSpell(VampireStrength04, abVerbose = False) Player.RemoveSpell(VampireSunDamage01) Player.RemoveSpell(VampireSunDamage02) Player.RemoveSpell(VampireSunDamage03) Player.AddSpell(VampireSunDamage04, abVerbose = False) Player.AddSpell(VampireInvisibilityPC) ElseIf VampireStage == 1 Player.AddSpell(ABVampireSkills, abVerbose = False) Player.AddSpell(ABVampireSkills02, abVerbose = False) Player.RemoveSpell(AbVampire04) Player.RemoveSpell(AbVampire02) Player.RemoveSpell(AbVampire03) Player.RemoveSpell(AbVampire04b) Player.RemoveSpell(AbVampire02b) Player.RemoveSpell(AbVampire03b) Player.AddSpell(AbVampire01, abVerbose = False) Player.AddSpell(AbVampire01b, abVerbose = False) Player.AddSpell(VampireDrain01, abVerbose = False) ;check to see if player has power equipped and switch them out If Player.GetEquippedSpell(0) == VampireDrain03 || Player.GetEquippedSpell(0) == VampireDrain04 || Player.GetEquippedSpell(0) == VampireDrain02 Player.EquipSpell(VampireDrain01, 0) EndIf If Player.GetEquippedSpell(1) == VampireDrain03 || Player.GetEquippedSpell(1) == VampireDrain04 || Player.GetEquippedSpell(1) == VampireDrain02 Player.EquipSpell(VampireDrain01, 1) EndIf Player.RemoveSpell(VampireDrain04) Player.RemoveSpell(VampireDrain02) Player.RemoveSpell(VampireDrain03) Player.RemoveSpell(VampireRaiseThrall04) Player.RemoveSpell(VampireRaiseThrall02) Player.RemoveSpell(VampireRaiseThrall03) Player.AddSpell(VampireRaiseThrall01, abVerbose = False) ;Player.RemoveSpell(VampireStrength04) ;Player.RemoveSpell(VampireStrength02) ;Player.RemoveSpell(VampireStrength03) ;Player.AddSpell(VampireStrength01, abVerbose = False) Player.RemoveSpell(VampireSunDamage04) Player.RemoveSpell(VampireSunDamage02) Player.RemoveSpell(VampireSunDamage03) Player.AddSpell(VampireSunDamage01, abVerbose = False) Player.RemoveSpell(VampireCharm) ;Player.RemoveSpell(VampireCloak) Player.RemoveSpell(VampireInvisibilityPC) EndIfEndFunctionFunction VampireCure(Actor Player) Game.IncrementStat( "Vampirism Cures" ) ;Stop tracking the Feed Timer UnregisterforUpdateGameTime() VampireStatus = 0 ;Player is no longer hated Player.RemoveFromFaction(VampirePCFaction) Player.SetAttackActorOnSight(False) ;Remove all abilities Player.RemoveSpell(DLC1VampireChange) Player.RemoveSpell(ABVampireSkills) Player.RemoveSpell(ABVampireSkills02) Player.RemoveSpell(AbVampire01) Player.RemoveSpell(AbVampire02) Player.RemoveSpell(AbVampire03) Player.RemoveSpell(AbVampire04) Player.RemoveSpell(AbVampire01b) Player.RemoveSpell(AbVampire02b) Player.RemoveSpell(AbVampire03b) Player.RemoveSpell(AbVampire04b) Player.RemoveSpell(VampireDrain01) Player.RemoveSpell(VampireDrain02) Player.RemoveSpell(VampireDrain03) Player.RemoveSpell(VampireDrain04) Player.RemoveSpell(VampireRaiseThrall01) Player.RemoveSpell(VampireRaiseThrall02) Player.RemoveSpell(VampireRaiseThrall03) Player.RemoveSpell(VampireRaiseThrall04) ;Player.RemoveSpell(VampireStrength01) ;Player.RemoveSpell(VampireStrength02) ;Player.RemoveSpell(VampireStrength03) ;Player.RemoveSpell(VampireStrength04) Player.RemoveSpell(VampireSunDamage01) Player.RemoveSpell(VampireSunDamage02) Player.RemoveSpell(VampireSunDamage03) Player.RemoveSpell(VampireSunDamage04) Player.RemoveSpell(VampireCharm) ;Player.RemoveSpell(VampireCloak) Player.RemoveSpell(VampireInvisibilityPC) ;Change player's race, defaults to Nord if (Player.GetRace() == ArgonianRaceVampire) Player.SetRace(ArgonianRace) elseif (Player.GetRace() == BretonRaceVampire) Player.SetRace(BretonRace) elseif (Player.GetRace() == DarkElfRaceVampire) Player.SetRace(DarkElfRace) elseif (Player.GetRace() == HighELfRaceVampire) Player.SetRace(HighElfRace) elseif (Player.GetRace() == ImperialRaceVampire) Player.SetRace(ImperialRace) elseif (Player.GetRace() == KhajiitRaceVampire) Player.SetRace(KhajiitRace) elseif (Player.GetRace() == NordRaceVampire) Player.SetRace(NordRace) elseif (Player.GetRace() == OrcRaceVampire) Player.SetRace(OrcRace) elseif (Player.GetRace() == RedguardRaceVampire) Player.SetRace(RedguardRace) elseif (Player.GetRace() == WoodElfRaceVampire) Player.SetRace(WoodElfRace) endif ;Set the Global for stat tracking PlayerIsVampire.SetValue(0) ;make sure Hunter's Sight is gone Player.RemoveSpell(VampireHuntersSight) EndFunctionSpell Property AbVampire01 AutoSpell Property AbVampire02 AutoSpell Property AbVampire03 AutoSpell Property AbVampire04 AutoSpell Property AbVampire01b AutoSpell Property AbVampire02b AutoSpell Property AbVampire03b AutoSpell Property AbVampire04b AutoSpell Property VampireDrain01 AutoSpell Property VampireDrain02 AutoSpell Property VampireDrain03 AutoSpell Property VampireDrain04 AutoSpell Property VampireRaiseThrall01 AutoSpell Property VampireRaiseThrall02 AutoSpell Property VampireRaiseThrall03 AutoSpell Property VampireRaiseThrall04 AutoSpell Property VampireStrength01 AutoSpell Property VampireStrength02 AutoSpell Property VampireStrength03 AutoSpell Property VampireStrength04 AutoSpell Property VampireSunDamage01 AutoSpell Property VampireSunDamage02 AutoSpell Property VampireSunDamage03 AutoSpell Property VampireSunDamage04 AutoSpell Property VampireHuntersSight AutoSpell Property VampireCharm AutoSpell Property VampireCloak AutoSpell Property VampireInvisibilityPC AutoSpell Property DLC1VampireChange AutoSpell Property VampireCureDisease AutoSpell Property ABVampireSkills AutoSpell Property ABVampireSkills02 AutoSpell Property DiseasePorphyricHemophelia AutoSpell Property TrapDiseasePorphyricHemophelia AutoMagicEffect Property DLC1VampireChangeFXEffect AutoMagicEffect Property DLC1VampireChangeEffect AutoGlobalVariable Property PlayerIsVampire Auto Sound Property MagVampireTransform01 Auto Spell Property DiseaseAtaxia autoSpell Property TrapDiseaseAtaxia AutoSpell Property DiseaseBoneBreakFever AutoSpell Property TrapDiseaseBoneBreakFever AutoSpell Property DiseaseBrainRot AutoSpell Property TrapDiseaseBrainRot AutoSpell Property DiseaseRattles AutoSpell Property TrapDiseaseRattles AutoSpell Property DiseaseRockjoint autoSpell Property TrapDiseaseRockjoint AutoSpell Property DiseaseWitbane AutoSpell Property TrapDiseaseWitbane AutoMessage Property VampireStage4Message AutoQuest Property VC01 AutoFormList Property CrimeFactions AutoFormlist Property DLC1CrimeFactions Auto