enderalse/source/scripts/defaultownzombie.psc

83 lines
2.9 KiB
Plaintext

Scriptname defaultOwnZombie extends Actor
{Put this script on an actor, and point the properties to the actors you want him to own as zombies.}
ObjectReference Property ZombieRef01 auto
{Point this property to the actor you want this specific reference to own as a zombie}
ObjectReference Property ZombieRef02 auto
{Point this property to the actor you want this specific reference to own as a zombie}
ObjectReference Property ZombieRef03 auto
{Point this property to the actor you want this specific reference to own as a zombie}
ObjectReference Property ZombieRef04 auto
{Point this property to the actor you want this specific reference to own as a zombie}
ObjectReference Property ZombieRef05 auto
{Point this property to the actor you want this specific reference to own as a zombie}
ObjectReference Property ZombieRef06 auto
{Point this property to the actor you want this specific reference to own as a zombie}
EffectShader Property ReanimateFXShader auto
{Should autofill with effect of the same name}
Faction Property AddZombiesToThisFaction auto
{Put the faction in here that you want the zombies to be a part of (so they are friends with their owner)}
Bool Property HasBeenLoaded = FALSE auto hidden
;USKP 2.0.3 - Convert to OnLoad since OnCellLoad doesn't work reliably for this.
EVENT OnLoad()
if (HasBeenLoaded == FALSE)
; Put the effects on the owned zombies. And whatever else happens when something becomes a zombie.
MakeZombie(ZombieRef01)
MakeZombie(ZombieRef02)
MakeZombie(ZombieRef03)
MakeZombie(ZombieRef04)
MakeZombie(ZombieRef05)
MakeZombie(ZombieRef06)
HasBeenLoaded = TRUE
else
; Do nothing, since I've already been loaded
endif
endEVENT
EVENT OnDeath(Actor akKiller)
; I've died, try to kill the zombies I own
; ;debug.Trace("DARYL - " + self + " I DIED!!!")
TryToKill(ZombieRef01)
TryToKill(ZombieRef02)
TryToKill(ZombieRef03)
TryToKill(ZombieRef04)
TryToKill(ZombieRef05)
TryToKill(ZombieRef06)
endEVENT
Function MakeZombie(ObjectReference ActorToZombify)
if (ActorToZombify)
(ActorToZombify as Actor).StopCombatAlarm() ;USKP 2.0.3
(ActorToZombify as Actor).RemoveFromAllFactions()
(ActorToZombify as Actor).AddToFaction(AddZombiesToThisFaction)
ReanimateFXShader.Play(ActorToZombify)
endif
endFunction
Function TryToKill(ObjectReference ActorToKill)
if (ActorToKill)
; ;debug.Trace("DARYL - " + self + " Attempting to kill " + ActorToKill)
if ((ActorToKill as Actor).IsDead())
; We don't need to kill them, since they are dead.
; We do need to make sure they don't have the effect on them though.
; ;debug.Trace("DARYL - " + self + ActorToKill + " Is already dead, disable his shader")
ReanimateFXShader.Stop(ActorToKill)
else
; They aren't dead, so kill them and remove the zombie effect.
; ;debug.Trace("DARYL - " + self + ActorToKill + " isn't dead, kill him and disable his shader")
(ActorToKill as Actor).Kill()
ReanimateFXShader.Stop(ActorToKill)
endif
endif
endFunction