83 lines
2.9 KiB
Plaintext
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 |