Preventing summoned atros from exploding on death

Post » Sun Mar 16, 2014 6:11 am

Okay, I *think* I figured out how to alter the FlameAtronachEffectScript so conjured atros don't leave an explosion on death (as their form has been pulled back into Oblivion and there's nothing left in the Mundus to explode).

Working from the USKP script source with the silenced debug traces, fixed logged errors, and FXes inappropriately sticking to the player.

Scriptname FlameAtronachEffectScript extends ActiveMagicEffect  {This is a temp script to get the art working right for the flame atronach.};===============================================import utilityimport form;===============================================Actor selfRefVisualEffect Property AtronachFlameTrail AutoArmor Property AtronachFlameDeadSkin  Auto  EffectShader Property AtronachFlameDeathFXS AutoEffectShader Property AtronachUnsummonDeathFXS Autoexplosion property AtronachFlameDeathExplosion autoFormList Property SummonAtroDeathFXExclusionList  Autoint atronachHealth    EVENT OnEffectStart(Actor Target, Actor Caster)            selfRef = caster                ;USKP 2.0.1 - Stop this from attaching to the player.        if( selfRef == Game.GetPlayer() )            Return        EndIf        ;USKP 2.0.3 - 3D check, shaders, etc        if( selfRef.Is3DLoaded() )            AtronachFlameTrail.Play(selfRef, -1)        EndIf    ENDEVENT        Event OnEffectFinish(Actor akTarget, Actor akCaster)        AtronachFlameTrail.Stop(selfRef)    ENDEVENT        EVENT onDying(actor myKiller)        atronachHealth = selfRef.GetAV("Health") as int        if atronachHealth > 0;             debug.trace("flame health  > 0")            AtronachFlameTrail.Stop(selfRef)            AtronachUnsummonDeathFXS.Play(selfRef)        elseIf atronachHealth <= 0            wait(3.0);             debug.trace("flame health  <= 0")            AtronachFlameDeathFXS.Play(selfRef)            wait(0.5)            ;Conditional to prevent summoned atros that got banished back to Oblivion due to bodily ruination from leaving an explosion            if SummonAtroDeathFXExclusionList.HasForm(selfRef) == 0                selfRef.placeAtMe(AtronachFlameDeathExplosion)            endif            wait(0.1)            AtronachFlameTrail.Stop(selfRef)            selfRef.EquipItem(AtronachFlameDeadSkin)            wait(1)            AtronachFlameDeathFXS.Stop(selfRef)        endif    ENDEVENT

Lines in question are 49-52:

            ;Conditional to prevent summoned atros that got banished back to Oblivion due to bodily ruination from leaving an explosion            if SummonAtroDeathFXExclusionList.HasForm(selfRef) == 0                selfRef.placeAtMe(AtronachFlameDeathExplosion)            endif

Will "HasForm" work on the actual ref that is in the game space? The formlist in question contains the summoned atro NPC, the potent variant, the thrall, and the potent thrall. It compiled without error, but I am unsure of it actually working...

User avatar
Laura Shipley
 
Posts: 3564
Joined: Thu Oct 26, 2006 4:47 am

Return to V - Skyrim