372 lines
10 KiB
Plaintext
372 lines
10 KiB
Plaintext
|
Scriptname LycantropheTransformSC extends activemagiceffect
|
||
|
|
||
|
bool isOnInfluanceOfPotion = false
|
||
|
|
||
|
bool nateSeesUs
|
||
|
bool sneakAttack
|
||
|
|
||
|
Actor targetRef
|
||
|
Event OnCrosshairRefChange(ObjectReference ref)
|
||
|
If ref as Actor ;Used to determine if it's none or not.
|
||
|
nateSeesUs = Game.GetPlayer().IsDetectedBy(ref as Actor)
|
||
|
if !nateSeesUs && isSneaking
|
||
|
Game.GetPlayer().SetAV("UnarmedDamage", 1000.1)
|
||
|
sneakAttack=true
|
||
|
elseif isSneaking
|
||
|
Game.GetPlayer().SetAV("UnarmedDamage", 10.1)
|
||
|
sneakAttack=false
|
||
|
endif
|
||
|
EndIf
|
||
|
EndEvent
|
||
|
|
||
|
Event OnUpdate()
|
||
|
if Game.GetPlayer().isInCombat()
|
||
|
detectionImage.Remove()
|
||
|
else
|
||
|
detectionImage.PopTo(detectionImage, 0.25)
|
||
|
endif
|
||
|
if isSneaking
|
||
|
RegisterForSingleUpdate(1)
|
||
|
endif
|
||
|
endEvent
|
||
|
|
||
|
bool isSneaking
|
||
|
Event OnKeyUp(int keyCode, float holdTime)
|
||
|
if keyCode == sneakWerewolfKey
|
||
|
if Game.GetPlayer().GetActorValue("Sneak")!=200
|
||
|
detectionImage.PopTo(detectionImage, 0.25)
|
||
|
RegisterForSingleUpdate(1)
|
||
|
|
||
|
isSneaking=true
|
||
|
;Game.GetPlayer().ForceAV ("SpeedMult", 50 )
|
||
|
Game.GetPlayer().ForceAV("CarryWeight", 10000)
|
||
|
|
||
|
Game.GetPlayer().ForceActorValue("SneakMod", 200)
|
||
|
Game.GetPlayer().ForceActorValue("Sneak", 200)
|
||
|
;Game.GetPlayer().AddPerk(InvisibilityMe )
|
||
|
Game.GetPlayer().StartSneaking()
|
||
|
_00E_EspionageFXS.Play(Game.GetPlayer())
|
||
|
|
||
|
int instanceID = sneakSound.play(Game.GetPlayer()) ; play mySFX sound from my self
|
||
|
Sound.SetInstanceVolume(instanceID, 1)
|
||
|
|
||
|
Game.GetPlayer().AddPerk(_00E_A1_InvisibilityPerk)
|
||
|
Game.GetPlayer().AddSpell(DetectLifeWerewolfVision, false)
|
||
|
Game.GetPlayer().ForceActorValue("Magicka", 20000)
|
||
|
|
||
|
DetectLifeWerewolfVision2.SetBaseCost(0)
|
||
|
DetectLifeWerewolfVision.cast(Game.GetPlayer())
|
||
|
|
||
|
else
|
||
|
detectionImage.Remove()
|
||
|
UnregisterForUpdate()
|
||
|
|
||
|
isSneaking=false
|
||
|
Game.GetPlayer().SetAV("UnarmedDamage", 10.1)
|
||
|
Game.GetPlayer().ForceAV ("SpeedMult", 100 )
|
||
|
Game.GetPlayer().ForceAV("CarryWeight", 10001)
|
||
|
sneakAttack=false
|
||
|
|
||
|
_00E_EspionageFXS.Stop(Game.GetPlayer())
|
||
|
Game.GetPlayer().RemovePerk(_00E_A1_InvisibilityPerk)
|
||
|
|
||
|
Game.GetPlayer().RemoveSpell(DetectLifeWerewolfVision)
|
||
|
Game.GetPlayer().DispelSpell(DetectLifeWerewolfVision)
|
||
|
Game.GetPlayer().ForceActorValue("Magicka", 0)
|
||
|
Game.GetPlayer().ForceActorValue("MagickaRate", 0)
|
||
|
endif
|
||
|
endif
|
||
|
if keyCode == 38
|
||
|
;Debug.Messagebox("Strength : 100\nStamina : 100\nResist : 100")
|
||
|
String hasEffectPanacea1 = "None"
|
||
|
String hasEffectPanacea2 = "None"
|
||
|
|
||
|
if (Game.GetPlayer().hasMagicEffect(panacea1Effect))
|
||
|
panacea1EffectOn.Show()
|
||
|
endif
|
||
|
if (Game.GetPlayer().hasMagicEffect(panacea2Effect))
|
||
|
panacea2EffectOn.Show()
|
||
|
endif
|
||
|
if (Game.GetPlayer().hasMagicEffect(panacea3Effect))
|
||
|
panacea3EffectOn.Show()
|
||
|
endif
|
||
|
if (Game.GetPlayer().hasMagicEffect(panacea4Effect))
|
||
|
panacea4EffectOn.Show()
|
||
|
endif
|
||
|
|
||
|
;_00E_statisticMessage.Show(Game.GetPlayer().GetActorValue("Health"), Game.GetPlayer().GetActorValue("Stamina"), Game.GetPlayer().GetActorValue("UnarmedDamage"), Game.GetPlayer().GetActorValue("DamageResist"))
|
||
|
;else
|
||
|
; Debug.Messagebox(keyCode )
|
||
|
|
||
|
endif
|
||
|
|
||
|
EndEvent
|
||
|
|
||
|
Event OnActorAction(int actionType, Actor akActor, Form source, int slot) ;only for keep up activate life detection
|
||
|
if actionType==0 && akActor==Game.GetPlayer() && sneakAttack
|
||
|
Utility.Wait(0.1)
|
||
|
Game.GetPlayer().SetAV("UnarmedDamage", 10.1)
|
||
|
sneakAttack=false
|
||
|
DetectLifeWerewolfVision.cast(Game.GetPlayer())
|
||
|
endif
|
||
|
endEvent
|
||
|
|
||
|
Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
|
||
|
If trasformedAlready==0 && akAggressor
|
||
|
float ZAngle = akAggressor.GetAngleZ()-Game.GetPlayer().GetAngleZ() ;calculating difference between enemy and player camera angle
|
||
|
if ZAngle < 0
|
||
|
ZAngle = ZAngle * -1
|
||
|
endif
|
||
|
if ZAngle < 50
|
||
|
int rawDamage = ((akSource as Weapon).GetBaseDamage() * 0.5) as Int
|
||
|
Game.GetPlayer().DamageActorValue("Health", rawDamage * 1000 ) ;giving additional dmg for player if difference of angle is < 50
|
||
|
Endif
|
||
|
Endif
|
||
|
EndEvent
|
||
|
|
||
|
int num = 1
|
||
|
Int trasformedAlready
|
||
|
Int sneakWerewolfKey = 46
|
||
|
Int waitForTransformS=4
|
||
|
|
||
|
|
||
|
|
||
|
int waitTimeToEndTransform=2;
|
||
|
Event OnEffectStart(Actor akTarget, Actor akCaster)
|
||
|
;Debug.MessageBox(Game.GetPlayer().GetActorValue("Sneak")+" vs "+Game.GetPlayer().GetActorValue("Magicka")+" vs "+Game.GetPlayer().GetActorValue("MagickaRate")+" vs "+Game.GetPlayer().GetActorValue("Health")+" vs "+Game.GetPlayer().GetActorValue("Stamina")+" vs "+Game.GetPlayer().GetActorValue("UnarmedDamage")+" vs "+Game.GetPlayer().GetActorValue("DamageResist"))
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
Game.ForceThirdPerson()
|
||
|
|
||
|
|
||
|
|
||
|
isOnInfluanceOfPotion =Game.GetPlayer().HasMagicEffect(bloodPotionInfluance)
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
ActorBase pActorBase = Game.GetPlayer().GetActorBase()
|
||
|
trasformedAlready=isTransformed.GetValue() as Int
|
||
|
;Game.GetPlayer().AddItem(SuperSecretPotionReference, 200)
|
||
|
Int doesHavePotion = Game.GetPlayer().GetItemCount(SuperSecretPotionReference)
|
||
|
|
||
|
if isOnInfluanceOfPotion || doesHavePotion > 0
|
||
|
|
||
|
if !isOnInfluanceOfPotion && trasformedAlready==0
|
||
|
Game.GetPlayer().RemoveItem(SuperSecretPotionReference, 1)
|
||
|
if !Game.GetPlayer().IsInCombat()
|
||
|
Form EquippedItemRight = Game.GetPlayer().GetEquippedObject(1)
|
||
|
Game.GetPlayer().UnequipItem(EquippedItemRight, false, true)
|
||
|
|
||
|
Game.DisablePlayerControls(true, true, true, false, true, true, true)
|
||
|
Game.GetPlayer().PlayIdle(DrinkPotionForPlayerIdle )
|
||
|
|
||
|
Utility.Wait(2)
|
||
|
Game.GetPlayer().EquipItemEx(EquippedItemRight, 1)
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
if trasformedAlready==0
|
||
|
Debug.Notification("Transforming to werewolf")
|
||
|
isTransformed.SetValue(1)
|
||
|
|
||
|
AbWerewolf.Cast(akCaster, akCaster)
|
||
|
WerewolfChange.Cast(akCaster, akCaster)
|
||
|
|
||
|
;akCaster.GetActorBase().SetEssential(False)
|
||
|
|
||
|
|
||
|
|
||
|
if( Game.GetPlayer().GetAV("InventoryWeight")<=akTarget.GetAV("CarryWeight"))
|
||
|
akTarget.ForceAV("CarryWeight", 1000)
|
||
|
endif
|
||
|
|
||
|
(playerTransformStorageQuest as playerTransformStorage).checkForEquipedItems()
|
||
|
|
||
|
|
||
|
|
||
|
Game.DisablePlayerControls(true, true, true, false, true, true, true)
|
||
|
|
||
|
|
||
|
int BaseWeaponDmg =Game.GetPlayer().GetEquippedWeapon().GetBaseDamage()
|
||
|
int AR = (Game.GetPlayer().GetWornForm(0x00000004) as Armor).GetArmorRating()
|
||
|
|
||
|
float armorNow=10
|
||
|
|
||
|
|
||
|
|
||
|
Utility.Wait(waitTimeToEndTransform)
|
||
|
|
||
|
|
||
|
|
||
|
akCaster.SetRace(WerewolfBeastRace)
|
||
|
akCaster.UnequipAll()
|
||
|
akCaster.KnockAreaEffect(1, 1024)
|
||
|
|
||
|
akTarget.ModAV("DamageResist", 10)
|
||
|
;akTarget.SetAV("DamageResist", 10)
|
||
|
akTarget.SetAV("UnarmedDamage", 10.1)
|
||
|
|
||
|
bTransformed = True
|
||
|
|
||
|
akCaster.AddShout(_00E_A1_Lycantrophe_Transform)
|
||
|
akCaster.EquipShout(_00E_A1_Lycantrophe_Transform)
|
||
|
|
||
|
Game.EnablePlayerControls(abMovement = true, abFighting = true, abCamSwitch = false, abLooking = true, abSneaking = true, abMenu = true, abActivate = true, abJournalTabs = true)
|
||
|
|
||
|
RegisterForCrosshairRef()
|
||
|
RegisterForActorAction(0)
|
||
|
sneakWerewolfKey = Input.GetMappedKey("Toggle Always Run")
|
||
|
RegisterForKey(sneakWerewolfKey)
|
||
|
RegisterForKey(38)
|
||
|
|
||
|
|
||
|
|
||
|
akCaster.PlaceAtMe(PowerRacialWoodElfCommandAnimalExplosion01)
|
||
|
|
||
|
else
|
||
|
|
||
|
goingBackToHumanShader.Play(Game.GetPlayer())
|
||
|
|
||
|
Game.DisablePlayerControls(true, true, true, false, true, true, true)
|
||
|
|
||
|
|
||
|
akTarget.ModAV("DamageResist", -10)
|
||
|
|
||
|
(playerTransformStorageQuest as playerTransformStorage).equipeItems()
|
||
|
|
||
|
|
||
|
akCaster.PlaceAtMe(PowerRacialWoodElfCommandAnimalExplosion01)
|
||
|
|
||
|
RegisterForAnimationEvent(Game.GetPlayer(), "TransformToHuman")
|
||
|
Game.GetPlayer().PlayIdle(WerewolfTransformBack)
|
||
|
|
||
|
Game.SetInCharGen(true, true, false)
|
||
|
UnRegisterForAnimationEvent(Game.GetPlayer(), "TransformToHuman")
|
||
|
|
||
|
|
||
|
Game.EnablePlayerControls(true, true, true, true, true, true, true)
|
||
|
|
||
|
Race orig_race = (playerTransformStorageQuest as playerTransformStorage).originalRace
|
||
|
Game.GetPlayer().SetRace(orig_race)
|
||
|
|
||
|
Game.GetPlayer().SetAttackActorOnSight(false)
|
||
|
Game.GetPlayer().RemoveFromFaction(PlayerWerewolfFaction)
|
||
|
Game.SetPlayerReportCrime(true)
|
||
|
|
||
|
; alert anyone nearby that they should now know the player is a werewolf
|
||
|
; Game.SendWereWolfTransformation()
|
||
|
Game.SetBeastForm(False)
|
||
|
isTransformed.SetValue(0)
|
||
|
|
||
|
UnregisterforActorAction(0)
|
||
|
UnregisterforCrosshairRef()
|
||
|
UnregisterForAllKeys()
|
||
|
UnregisterForUpdate()
|
||
|
|
||
|
isSneaking=false
|
||
|
|
||
|
goingBackToHumanShader.Stop(Game.GetPlayer())
|
||
|
endif
|
||
|
|
||
|
else
|
||
|
Debug.Notification("You don't have Lycant potion")
|
||
|
endif
|
||
|
;Debug.MessageBox(Game.GetPlayer().GetActorValue("Sneak")+" vs "+Game.GetPlayer().GetActorValue("Magicka")+" vs "+Game.GetPlayer().GetActorValue("MagickaRate")+" vs "+Game.GetPlayer().GetActorValue("Health")+" vs "+Game.GetPlayer().GetActorValue("Stamina")+" vs "+Game.GetPlayer().GetActorValue("UnarmedDamage")+" vs "+Game.GetPlayer().GetActorValue("DamageResist"))
|
||
|
|
||
|
EndEvent
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
SPELL Property AbWerewolf Auto
|
||
|
|
||
|
SPELL Property WerewolfChange Auto
|
||
|
|
||
|
Explosion Property PowerRacialWoodElfCommandAnimalExplosion01 Auto
|
||
|
|
||
|
Race Property WerewolfBeastRace Auto
|
||
|
|
||
|
Faction Property PlayerWerewolfFaction Auto
|
||
|
|
||
|
bool bTransformed
|
||
|
|
||
|
Race baseRasePlayer
|
||
|
|
||
|
Int tTran=1
|
||
|
|
||
|
Idle Property WerewolfTransformBack Auto
|
||
|
|
||
|
Shout Property _00E_A1_Lycantrophe_Transform Auto
|
||
|
|
||
|
GlobalVariable Property isTransformed Auto
|
||
|
|
||
|
Quest Property playerTransformStorageQuest Auto
|
||
|
|
||
|
Potion Property SuperSecretPotionReference Auto
|
||
|
|
||
|
Idle Property Idle_1stPersonWoozyGetUpFromBed Auto
|
||
|
|
||
|
;Perk Property InvisibilityMe Auto
|
||
|
|
||
|
;Idle Property lycantTransformAnim Auto
|
||
|
|
||
|
EffectShader Property _00E_EspionageFXS Auto
|
||
|
|
||
|
Spell Property PerkShadowWarriorInvisibility Auto
|
||
|
|
||
|
SPELL Property _00E_A2_GhostwalkCloakSP Auto
|
||
|
|
||
|
PERK Property _00E_A1_InvisibilityPerk Auto
|
||
|
|
||
|
SPELL Property DetectLifeWerewolfVision Auto
|
||
|
|
||
|
MagicEffect Property DetectLifeWerewolfVision2 Auto
|
||
|
|
||
|
SPELL Property DetectLife Auto
|
||
|
|
||
|
Idle Property DrinkPotionForPlayerIdle Auto
|
||
|
Sound Property sneakSound Auto
|
||
|
|
||
|
;SPELL Property knockBack Auto
|
||
|
|
||
|
;SPELL Property werewolfAbility Auto
|
||
|
|
||
|
;MagicEffect Property knockBackEffect Auto
|
||
|
|
||
|
;Perk Property perkKnock Auto
|
||
|
|
||
|
EffectShader Property goingBackToHumanShader Auto
|
||
|
|
||
|
;Idle Property werewolfChangeAnimation Auto
|
||
|
|
||
|
MagicEffect Property bloodPotionInfluance Auto
|
||
|
|
||
|
|
||
|
|
||
|
Message Property _00E_statisticMessage Auto
|
||
|
|
||
|
ImageSpaceModifier Property detectionImage Auto
|
||
|
|
||
|
MagicEffect Property panacea1Effect Auto
|
||
|
|
||
|
MagicEffect Property panacea2Effect Auto
|
||
|
|
||
|
MagicEffect Property panacea3Effect Auto
|
||
|
|
||
|
MagicEffect Property panacea4Effect Auto
|
||
|
|
||
|
Message Property panacea1EffectOn Auto
|
||
|
|
||
|
Message Property panacea2EffectOn Auto
|
||
|
|
||
|
Message Property panacea3EffectOn Auto
|
||
|
|
||
|
Message Property panacea4EffectOn Auto
|
||
|
|
||
|
Message Property panacea5EffectOn Auto
|
||
|
|
||
|
MagicEffect Property panacea5Effect Auto
|