INAM simply happens to be the 4 character signature of that subrecord. the meaning of a specific subrecord depends on the record it's contained in. So an INAM in an EXPL can mean something totally different then an INAM in an MESG record.
All I can tell you about this INAM subrecord in the EXPL record right now is that it's new and when it's present it seems to contain a single FormID of an ACTI record.
But lets follow this up a bit further then:
Specifically the EXPL records that do contain an INAM are:
testPhilLightningExplosion1 "Chain Lightning Explosion" [EXPL:01003584]DLC03TeslaCannonExplosion "Missile Explosion" [EXPL:01002700]DLC03TeslaCannonExplosionSmall "Missile Explosion" [EXPL:0100B393]DLC03TeslaCannonExplosionSmall02 "Missile Explosion" [EXPL:0100D4EF]DLC03TeslaCannonExplosionSmall03 "Missile Explosion" [EXPL:0100D4F0]
And the contents of the INAM's (in the same order as the record listed above) are:
testPhilCLightningVol1 [ACTI:01003585]DLC03TeslaChainStep01 [ACTI:0100D42A]DLC03TeslaChainStep02 [ACTI:0100D4F2]DLC03TeslaChainStep03 [ACTI:0100D4F3]DLC03TeslaChainStep04 [ACTI:0100D4F4]
Ignoreing that testPhil thing for now and looking at the 4 other,
Step02-04 contain a DEST subrecord (so they can take damage and are destroyable), Step01 doesn't.
All 4 use the same model:
DLC03\Effects\DLC03TeslaChainStep01.NIF
They have different scripts assigned:
DLC03TeslaChainEffectVTwo01Script [SCPT:0100D4FB]DLC03TeslaChainEffectVTwo02Script [SCPT:0100D4FC]DLC03TeslaChainEffectVTwo03Script [SCPT:0100D4FD]DLC03TeslaChainEffectVTwo03Script [SCPT:0100D4FD]
The scripts are rather complex:
scn DLC03TeslaChainEffectVTwo01ScriptShort DoOnceShort DeleteMeShort InitFloat Timerfloat zAnglefloat thisXfloat thisYfloat targetXfloat targetYfloat deltaXfloat deltaYfloat tanZAnglefloat distancefloat triggerZCoordfloat targetZCoordfloat deltaZfloat AimAngleXfloat RatioDist;// vars for vertibirdref TriggerObjectref triggerActorBegin OnLoad if Init == 0 Set Timer to (0.5 + getRandomPercent * 0.003) Set DeleteMe to 0 Set DoOnce to 0 Set Init to 1 endifend;///////////////////////////////////////////////////////;// VERTIBIRD EXPLOSION STUFF;////////////////////////////////////////////////////////BEGIN ONTRIGGEREnter;// store who triggered us set TriggerObject to getActionRef ;// if its in the vertibird list, blow it up! IF TriggerObject.isInList DLC03TeslaExplosionList TriggerObject.do 50000 ENDIF if TriggerObject.isActor == 1 if TriggerObject.GetDead == 0 set triggerActor to getActionRef endif endif ENDBegin GameMode If DeleteMe == 1 MarkForDelete endif If Timer <= 0 Disable set DeleteMe to 1 endif if timer < 0.3 if DoOnce == 0 if triggerActor.isActor == 1 if triggerActor.GetDead == 0 set distance to GetDistance triggerActor if distance > 100 Set thisX to GetPos X Set thisY to GetPos Y Set targetX to triggerActor.GetPos X Set targetY to triggerActor.GetPos Y Set deltaX to (targetX - thisX) Set deltaY to (targetY - thisY) if deltaX < 0 if deltaY < 0 Set tanZAngle to (deltaY / deltaX) Set zAngle to Tan tanZAngle 1 Set zAngle to 270 - zAngle else Set tanZAngle to (deltaY / -deltaX) Set zAngle to Tan tanZAngle 1 Set zAngle to zAngle - 90 endif else if deltaY < 0 Set tanZAngle to (-deltaY / deltaX) Set zAngle to Tan tanZAngle 1 Set zAngle to zAngle + 90 else Set tanZAngle to (deltaY / deltaX) Set zAngle to Tan tanZAngle 1 Set zAngle to 90 - zAngle endif endif set triggerZCoord to GetPos Z ;;// you want the z component of the trigger's location set targetZCoord to triggerActor.GetPos Z ;;// you want the z component of the target's location set targetZCoord to targetZCoord + 64 ;; Aim for the middle of the target (fudge) set deltaZ to (triggerZCoord - targetZCoord) set RatioDist to (deltaZ / distance) set AimAngleX to Sin RatioDist 1 ;// the extra 1 is what tells the script to use arcsine and not sine if deltaY < 0 Set AimAngleX to (0 - AimAngleX) endif SetAngle X AimAngleX setangle z zAngle FireWeapon DLC03WeapTeslaChainEffect set DoOnce to 1 endIf endIf endif endIf endif Set Timer to (Timer - GetSecondsPassed)End
scn DLC03TeslaChainEffectVTwo02ScriptShort DoOnceShort DoShootShort DeleteMeShort InitFloat Timerfloat zAnglefloat thisXfloat thisYfloat targetXfloat targetYfloat deltaXfloat deltaYfloat tanZAnglefloat distancefloat triggerZCoordfloat targetZCoordfloat deltaZfloat AimAngleXfloat RatioDist;// vars for vertibirdref triggerObjectref triggerActorBegin OnLoad if Init == 0 Set Timer to (.5 + getRandomPercent * 0.003) Set DeleteMe to 0 Set DoShoot to 0 Set DoOnce to 0 Set Init to 1 endifend;///////////////////////////////////////////////////////;// VERTIBIRD EXPLOSION STUFF;////////////////////////////////////////////////////////BEGIN ONTRIGGEREnter;// store who triggered us set triggerObject to getActionRef ;// if its in the vertibird list, blow it up! IF triggerObject.isInList DLC03TeslaExplosionList triggerObject.do 50000 ENDIF if TriggerObject.isActor == 1 if TriggerObject.GetDead == 0 set triggerActor to getActionRef endif endifENDBegin GameMode If DeleteMe == 1 MarkForDelete endif If Timer <= 0 Disable set DeleteMe to 1 endif if timer < 0.3 if DoOnce == 0 if triggerActor.isActor == 1 if triggerActor.GetDead == 0 set distance to GetDistance triggerActor if distance > 100 Set thisX to GetPos X Set thisY to GetPos Y Set targetX to triggerActor.GetPos X Set targetY to triggerActor.GetPos Y Set deltaX to (targetX - thisX) Set deltaY to (targetY - thisY) if deltaX < 0 if deltaY < 0 Set tanZAngle to (deltaY / deltaX) Set zAngle to Tan tanZAngle 1 Set zAngle to 270 - zAngle else Set tanZAngle to (deltaY / -deltaX) Set zAngle to Tan tanZAngle 1 Set zAngle to zAngle - 90 endif else if deltaY < 0 Set tanZAngle to (-deltaY / deltaX) Set zAngle to Tan tanZAngle 1 Set zAngle to zAngle + 90 else Set tanZAngle to (deltaY / deltaX) Set zAngle to Tan tanZAngle 1 Set zAngle to 90 - zAngle endif endif set triggerZCoord to GetPos Z ;;// you want the z component of the trigger's location set targetZCoord to triggerActor.GetPos Z ;;// you want the z component of the target's location set targetZCoord to targetZCoord + 64 ;; Aim for the middle of the target (fudge) set deltaZ to (triggerZCoord - targetZCoord) set RatioDist to (deltaZ / distance) set AimAngleX to Sin RatioDist 1 ;// the extra 1 is what tells the script to use arcsine and not sine if deltaY < 0 Set AimAngleX to (0 - AimAngleX) endif SetAngle X AimAngleX setangle z zAngle FireWeapon DLC03WeapTeslaChainEffect02 set DoOnce to 1 endIf endIf endif endIf endif Set Timer to (Timer - GetSecondsPassed)End
scn DLC03TeslaChainEffectVTwo03ScriptShort DoOnceShort DoShootShort DeleteMeShort InitFloat Timerfloat zAnglefloat thisXfloat thisYfloat targetXfloat targetYfloat deltaXfloat deltaYfloat tanZAnglefloat distancefloat triggerZCoordfloat targetZCoordfloat deltaZfloat AimAngleXfloat RatioDist;// vars for vertibirdref triggerObjectref triggerActorBegin OnLoad if Init == 0 Set Timer to (.4 + getRandomPercent * 0.003) Set DeleteMe to 0 Set DoShoot to 0 Set DoOnce to 0 Set Init to 1 endifend;///////////////////////////////////////////////////////;// VERTIBIRD EXPLOSION STUFF;////////////////////////////////////////////////////////BEGIN ONTRIGGEREnter;// store who triggered us set triggerObject to getActionRef ;// if its in the vertibird list, blow it up! IF triggerObject.isInList DLC03TeslaExplosionList triggerObject.do 50000 ENDIF if TriggerObject.isActor == 1 if TriggerObject.GetDead == 0 set triggerActor to getActionRef endif endifENDBegin GameMode If DeleteMe == 1 MarkForDelete endif If Timer <= 0 Disable set DeleteMe to 1 endif if timer < 0.3 if DoOnce == 0 if triggerActor.isActor == 1 if triggerActor.GetDead == 0 set distance to GetDistance triggerActor if distance > 100 Set thisX to GetPos X Set thisY to GetPos Y Set targetX to triggerActor.GetPos X Set targetY to triggerActor.GetPos Y Set deltaX to (targetX - thisX) Set deltaY to (targetY - thisY) if deltaX < 0 if deltaY < 0 Set tanZAngle to (deltaY / deltaX) Set zAngle to Tan tanZAngle 1 Set zAngle to 270 - zAngle else Set tanZAngle to (deltaY / -deltaX) Set zAngle to Tan tanZAngle 1 Set zAngle to zAngle - 90 endif else if deltaY < 0 Set tanZAngle to (-deltaY / deltaX) Set zAngle to Tan tanZAngle 1 Set zAngle to zAngle + 90 else Set tanZAngle to (deltaY / deltaX) Set zAngle to Tan tanZAngle 1 Set zAngle to 90 - zAngle endif endif set triggerZCoord to GetPos Z ;;// you want the z component of the trigger's location set targetZCoord to triggerActor.GetPos Z ;;// you want the z component of the target's location set targetZCoord to targetZCoord + 64;; Aim for the middle of the target (fudge) set deltaZ to (triggerZCoord - targetZCoord) set RatioDist to (deltaZ / distance) set AimAngleX to Sin RatioDist 1 ;// the extra 1 is what tells the script to use arcsine and not sine if deltaY < 0 Set AimAngleX to (0 - AimAngleX) endif SetAngle X AimAngleX setangle z zAngle FireWeapon DLC03WeapTeslaChainEffect04 set DoOnce to 1 endIf endIf endif endIf endif Set Timer to (Timer - GetSecondsPassed)End
Looking at all this information it would seem that the INAM subrecord in the EXPL record results in something like a PlaceAtMe call to spawn a new instance of the referenced record at the position of the explosion.
The initial explosion (DLC03TeslaCannonExplosion "Missile Explosion" [EXPL:01002700]) is referenced by DLC03TeslaCannonProjectile "Missile" [PROJ:010026FE] which in turn is referenced by DLC03WeapTeslaCannon "Tesla Cannon" [WEAP:01006725].
That explosion the creates an instance of DLC03TeslaChainStep01 [ACTI:0100D42A]. The script attached to that activator in turn use to command "FireWeapon DLC03WeapTeslaChainEffect".
DLC03WeapTeslaChainEffect "Tesla Cannon" [WEAP:0100D48E] then shoots DLC03TeslaChainProjectile "Missile" [PROJ:0100D48D] which uses the next smaller explosion: DLC03TeslaCannonExplosionSmall "Missile Explosion" [EXPL:0100B393]
DLC03TeslaCannonExplosionSmall "Missile Explosion" [EXPL:0100B393] in turn places an DLC03TeslaChainStep02 [ACTI:0100D4F2].
The script of which again uses FireWeapon to shoot DLC03WeapTeslaChainEffect02 "Tesla Cannon" [WEAP:0100D4F8].
Which through a new PROJ record places the 3rd type of ACTI and so on.
The INAM record and the game engine functionality behind it seems to be essential for the correct working for the Tesla Cannon. Which, looking at this code, seems to shoot an intial projectile, the explosion of which seems to leave behind something that shoots more projectiles, causing smaller explosions, which in turn leave something behind shooting even more projectiles, causing even smaller explosions, and so on.