Jump to content

A moveable fire damage object. Can it be scripted?


antstubell

Recommended Posts

I'm using BFXFireVol01 which is large volume of moveable static fire but doesn't actually do any fire damage. It's advantage is that I can translate it. In this scenario moving ever closer to the player. I'm using the trigger box DB10FireTrigger to cause damage to the player. Disadvantage of this is that trigger boxes can't be translated so I set up about 5, when each one is enabled it reduces the space in which player is safe from burning making player back themselves eventually into a wall. Then stuff happens and all is good, just a little singed. Problem with enabling these fire damage triggers is that it 'jerks' the player back. Sometimes the fire volume is ahead of the fire damage box and vice-versa. So player can notice "Hey, I'm standing in fire and nothing happens." Other times "WTF, I'm burning and the fire isn't near me... yet." I don't think this can be scripted but I am frequently wrong.

You see the dilemma. A translatable fire damage 'thing' would be super useful but alas I know not of one. That sounded Shakespearian that last bit.

Ideas, help please.

Edited by antstubell
Link to comment
Share on other sites

At each "step" that the fire takes have a fire explosion go off. Design the explosion to be able to damage the player. In game it would have the appearance that the fire sends out an explosion with each move. You may have to give a little bit of time between translation steps to ensure that the explosion completes before the next translation step.

Link to comment
Share on other sites

Extract the "Poison Bloom" nif, from the nif copy the invisible "Trigger Collision" (bhkSPCollisionObject), attach the "Trigger Collision" to the BFXFireVol01 which you will make it an activator.


Now your "Fire" can run an "OnTriggerEnter" event.

* Use the 'TranslateToRef()' function.

Link to comment
Share on other sites

Can't just copy the bhkSPCollisionObject have to copy the NiNode that contains it or Nifskope errors. With that said even after copying the NiNode with collision successfully when attempting to add it to CK as an activator or moveable static it causes fatal error and crashes to desktop.

Link to comment
Share on other sites

You are clearly not doing something right, i'm saying this because i've done it and it's fully functional on my end.

 

Explaining it in a written post is something that needs time, which currently i don't have... sorry.
Try it the other way around, copy all the fire mesh's stuff to the 'Poison Bloom', then delete all the 'Poison Bloom' related stuff, but not the "bhkSPCollisionObject".
Have a pleasant day.
Edited by maxarturo
Link to comment
Share on other sites

There are 3 entries for poison bloom. 1 is an ingredient, I doubt maxarturo means this, other 2 are activators. DLC1TrapPoisonBloom01 and DLC1TrapPoisonBloomGas. Which one are you referring to?

EDIT: The objects have to be copied from the poison bloom to the fire volume because the fire volume is a moveable static, the poison bloom is an activator. I doubt i can translate an activator. I could be wrong but doubtful,

Edited by antstubell
Link to comment
Share on other sites

You can also do this in another way, this is just the break down of the idea:

- Place an "xMarkerActivator" and add to it a script like this one.

* This is an example script that i wrote while i was eating and had no time to think it further, i had to leave for work while i was still chewing...


If anyone else can take a look at it for any 'Typos', and even expand it further for antstubell.



Actor Property ActorPlayer Auto

ObjectReference Property MouvableFire Auto

keyword property DB10MagicHeavyFire auto
Explosion Property DB10TrapFireTriggerExplosion01 auto


AUTO STATE StartFire
EVENT OnActivate(ObjectReference akActionRef)
RegisterForUpdate(1.0)
GoToState("StopFire")
ENDEVENT
ENDSTATE


EVENT OnUpdate()
If ( ActorPlayer.GetDistance(MouvableFire) < 512 )
If !( ActorPlayer.HasMagicEffectWithKeyword(DB10MagicHeavyFire) )
ActorPlayer.PlaceAtMe(DB10TrapFireTriggerExplosion01)
EndIf
EndIf
ENDEVENT


STATE StopFire
EVENT OnActivate(ObjectReference akActionRef)
UnregisterForUpdate()
Self.Disable()
Self.Delete()
ENDEVENT
ENDSTATE



- When your "Fire" starts moving the same script that moves the 'Fire' will send an 'Activate' to the xMarker, the same script will also send a second 'Activate' to the xMarker to stop the function when your "Fire Scene" stops / finishes.


* The timing and distance needs some tweaking so that it has a realistic behavior.


* If the 'Timing' is small, then the script as it is will malfunction, in this case you will need to remove the:

If !( ActorPlayer.HasMagicEffectWithKeyword(DB10MagicHeavyFire) )


otherwise the explosion will be placed only 1 time and no further, because the 'Update' will land each time before the explosion has ended.


Have a pleasant day.

Edited by maxarturo
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...