I was working on a project which required moving around nodes and while I was at it I thought I'd do a little research on them. I came across a few interesting things but one thing that caught my eye was "monster" nodes. They appear to have originally been created for use by beholders so their eyestalk beam effects would look like they were coming from the appropriate tentacle.
"Neat!", I thought. "I wonder if you can strap those onto a player model?" So I loaded up PMH0 and created a few dummy nodes, renaming them "monster0" to "monster4". Apparently you can go up to at least "monster9", but you'll get the idea when you view the video below. I didn't use NWMax's "MonsterNode" button because it suffers from the same issues that emitter creation does- you can't see them when you're creating them. I fixed the
emitter creation problem and something similar would probably fix this if you really wanted to. Anyway, back to those monster nodes. Some I attached directly to the Aurora base, others to player nodes, like rhand_g and lhand_g. It worked and I was able to use them as beam origins just like you would with other nodes like the BODY_NODE_* constants. See EffectBeam and those constants in the Lexicon or Omnibus for more of what I'm talking about.
Here is what that looks like in action:
Script-wise, the above was done using basic beam scripting. Nothing fancy or tricky except for having added those monster nodes to the player model (PMH0 in this case) and having referenced those nodes in my script as the origin of the beam.
Neat but...can we do anything
else with those monster nodes? So I searched against the Omnibus for "monster0" and came across an interesting reference in the BioWare documents (and one from Georg Zoeller) that indicated that you could
launch spell projectiles out of these nodes. Makes sense, given that their original purpose was for beholder tentacle rays.
So I copied the line from the fireball spell in spells.2da, butchered it up a bit and used ActionCastFakeSpellAtObject to see if I could get it to launch a projectile from my "monster3" node using a sample projectile I created. Yep, coming off monster3, which is high off my left shoulder and attached to the Aurora base directly:
Here is the script, which also contains a stripped down spells.2DA line (in the comments) and uses a default projectile. You'll have to extract PMH0.mdl and add the nodes (or at least just "monster3") yourself, though. If you need help extracting it just post here or PM me and I'll be happy to guide you through it. It's
super easy to do and you get to place the nodes where you like.
Anyway, that just spits out one projectile at a time. Can we overcast the spell using the DelayCommand trick? Yup:
Kinda like that one spell... And without any ProjFX hassle.
Here is the script for that one which also contains a stripped down spells.2DA line (in the comments) and uses a default projectile.
In conjunction with VFX, you could give the illusion that a beam or projectile was shooting out of whatever the VFX was, like a shoulder cannon for instance. And of course you can use this on monsters. It is the "monster node" after all. I haven't tried placeables yet but that could be fun in making multi-beam fences and other goodies if it works.
The demo module below shows off the 9
ProjType settings for projectiles in
spells.2da. It doesn't require any monster nodes or anything like that and just serves as a visual demo of the path each of the ProjTypes takes as they move from origin to target.
They are:homing - Homes directly to target
ballistic - Homes to target following ballistic arc
highballistic - Homes to target following extremely steep ballistic arc, like a mortar.
burst - Homes to target via random (XYZ) ballistic arc. Path random on all 3 axes.
accelerating - Homes directly to target, accelerating as it travels
spiral - Homes to target then spirals around several times before impact. Think "Hellball"
linked - Attached to ProjSpwnPoint and at the very last second homes directly to target
bounce - Travels to target via 3 bounces. First bounce at halfway point, second when 3/4 there if not launched high.
test - (undocumented) Homes to target following ballistic arc, breaks into 4 MIRVs at halfway point which converge on target.
**** - This is the "tenth" setting, but it's really no setting at all so any projectile created using this as a ProjType setting will hang in space where it was created. There are probably much better methods to use if you're going for that effect.
There are also
three related settings worth mentioning which are not displayed in the demo video or module but which might come in handy, for
ProjOrientation- another column in spells.2da. They are "***", "path" and "target" and they affect the facing of the projectile as it moves from source to target. **** will cause the projectile to forever face the direction it was spawned in (rather awkward for something like the "burst" setting), while "path" keeps the projectile always oriented to the path during flight and target (you guessed it) keeps the projectile oriented toward the target during flight.
As you can see if you look at the spells.2da in my hak, I just ripped off a simple fireball spell and changed a few settings. I'm using quick-n-dirty ActionCastFakeSpellAtObject in the demo and so you may need to limbo a bit to get what you want out of it in certain situations. Looking at/using the script samples I link to should help you get up to speed if you do want to play with the effect. I don't do much scripting anymore so there's probably quite a bit of room for improvement.