Gguy

How would one switch a beam effect?

Recommended Posts

Greetings, great ones!

 

I come before you, great ones, to ask a question that will fulfill my destiny...ok, let's not do that...

 

 

Howdy!

 

I always liked the way the plasma thrower looked ingame and i think it would look cool (the blue flames) as a replacement for the drain life/death field powers. I ain't no professional when it comes to Kotor modding , but I do know a bit about 2da editing and using the kotor tool for retexturing. I wish to ask if my wish is possible to achieve, and if so...how?

 

To explain myself yet again, I wish to use the blue flame beam effect from the plasma thrower as a replacement for the drain life, death field powers (or well, all 3 of the type)

Share this post


Link to post
Share on other sites

You would need to open k_inc_force.nss, locate each of the powers you want to edit, and swap the numbers in the EffectVisualEffect and/or EffectBeam functions with a different number from visualeffects.2da. After that, you'd save the k_inc_force.nss in your Override folder and compile k_sp1_generic.nss, which is what actually fires the force powers in-game.

 

I don't know if the Plasma Thrower's visual effect is part of visualeffect.2da or not, but there is VFX_BEAM_PLASMA_SPRAY, which is row 2069, so you might try that value.

Share this post


Link to post
Share on other sites

I noticed the VFX_BEAM_PLASMA_SPRAY in the 2da, but all the info that was listed was the duration, the rest was blank (****). I'll check the mentioned file and see what i notice. I'll reply after i do so...

 

EDIT: found the file using the Kotor tool, what should I use to open it?

 

I'm aware that I can use notepad or notepad ++ to open script files, but i wish to ask if there is any specific tool i should use to avoid any file corruptions or errors (since most are written in text). The coding i done in my past was on a more simple level, as i am mainly a machinima director and graphics designer.

 

EDIT MK2: i did open it with notepad as a test and noticed that it does indeed look right (as a script should) , I'll try the instructions above and see if it all works out, if not...I'll comment again

 

 

EDIT MK3: (i know, so many edits, but i want to avoid double posting) :

 

I don't seem to understand what you mean by "Numbers" , there are no numbers near the "effectvisualeffect" and the "effectbeam" sections. this is what I'm looking at:

 

DRAIN LIFE
        */
        case FORCE_POWER_DRAIN_LIFE:
        {
            SWFP_HARMFUL = TRUE;
            SWFP_PRIVATE_SAVE_TYPE = SAVING_THROW_FORT;
            int nDam = GetHitDice(OBJECT_SELF);
            int nDamTest = GetHitDice(OBJECT_SELF);
            if(nDamTest > 10)
            {
                nDamTest = 10;
            }

            // DJS-OEI 3/25/2004
            SWFP_DAMAGE = Sp_CalcDamage( oTarget, nDamTest, 4 );
            //SWFP_DAMAGE = d4(nDamTest);
            SWFP_DAMAGE_TYPE= DAMAGE_TYPE_DARK_SIDE;
            SWFP_DAMAGE_VFX = VFX_PRO_DRAIN;
            //Set up the drain effect link for the target
            effect eBeam = EffectBeam(VFX_BEAM_DRAIN_LIFE, OBJECT_SELF, BODY_NODE_HAND);
            effect eVFX = EffectVisualEffect(SWFP_DAMAGE_VFX);
            //Set up the link to Heal the user by the same amount.
            effect eHeal;
            effect eDamage = EffectDamage(SWFP_DAMAGE, DAMAGE_TYPE_DARK_SIDE);

            ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam, oTarget, fLightningDuration);
            DelayCommand(0.3, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVFX, oTarget));

            int nResist = Sp_BlockingChecks(oTarget, eDamage, eInvalid, eInvalid);

            SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId(), SWFP_HARMFUL));
            if(GetRacialType(oTarget) != RACIAL_TYPE_DROID)
            {
                if(nResist == 0)
                {
                    int nSaves = Sp_MySavingThrows(oTarget);
                    if(nSaves > 0)
                    {
                        SWFP_DAMAGE /= 2;
                    }
                    eDamage = EffectDamage(SWFP_DAMAGE,  DAMAGE_TYPE_DARK_SIDE);
                    if(GetCurrentHitPoints(OBJECT_SELF) < GetMaxHitPoints(OBJECT_SELF) && SWFP_DAMAGE > 0)
                    {
                        eHeal = EffectHeal(SWFP_DAMAGE);
                        ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, OBJECT_SELF);
                    }
                    ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget);
                }
                else
                {
                    ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectForceFizzle(), OBJECT_SELF);
                }
            }
        }
        break;

 

 

 

 

 

 

 

Now, this line does seem important, though : effect eBeam = EffectBeam(VFX_BEAM_DRAIN_LIFE, OBJECT_SELF, BODY_NODE_HAND);

Share this post


Link to post
Share on other sites

I did notice that the kotor tool has a text editor, I suppose that is what you are referring to?

 

The most important part right now is figuring out what Fair strides meant by "Numbers" , there are no numbers next to the lines mentioned

Share this post


Link to post
Share on other sites

I wasn't sure if that would be the case or not. The first part of the EffectBeam and EffectVisualEffect functions is the number. The text that is there is something from nwscript.nss that references the row in visualeffects.2da. You'd replace that with the row number itself.

Share this post


Link to post
Share on other sites

these are the effectbeam and effectvisualeffect lines of the drain life power:

 

            effect eBeam = EffectBeam(VFX_BEAM_DRAIN_LIFE, OBJECT_SELF, BODY_NODE_HAND);

 

and

 

 

          effect eVFX = EffectVisualEffect(SWFP_DAMAGE_VFX);

 

only actual numbers i see are the row numbers on the very left, but those are obviously not editable =P. Are you perhaps referring to the  "VFX_BEAM_DRAIN_LIFE" and "SWFP_DAMAGE_VFX" lines (That makes the most sense to me, as those are also present in the 2da file) , because if not, i honestly don't see what you may be talking about.

Share this post


Link to post
Share on other sites

EffectBeam(VFX_BEAM_DRAIN_LIFE, OBJECT_SELF, BODY_NODE_HAND);

 

If you open nwscript.nss and search for "VFX_BEAM_DRAIN_LIFE", you will find that it will be listed something like this:

 

int VFX_BEAM_DRAIN_LIFE         = ;

 

The number there is the same number as the row number in the visualeffects.2da file (the column furthest to the left when you're editing a .2da file is the row number).

 

The "VFX_BEAM_DRAIN_LIFE" is merely a substitute for the number. This is to make it more understandable for people reading the script.

 

In this case, you'd replace the "VFX_BEAM_DRAIN_LIFE" with either 2069 (the row number from visualeffects.2da that indicates Plasma Spray) or "VFX_BEAM_PLASMA_SPRAY" without the quotes.

 

Be aware that the only reason you can use "VFX_BEAM_PLASMA_SPRAY" instead of the number is because the original values from visualeffects.2da are listed in nwscript.nss. Any that are added from a mod can't do this.

Share this post


Link to post
Share on other sites

I totally understand your post now, I'll go get to work and get back if I run into further issues!

Share this post


Link to post
Share on other sites

Should you be interested in any more scripting or want to learn more, I'll be doing a streaming event where I go over scripting, trying to teach others about it and how to do it. It'll be in about three weeks or so, once on Thursday (around 5PM PST, which is UTC-8) and once on Saturday (around 9AM PST, which is UTC-8).

 

http://deadlystream.com/forum/blog/64/entry-169-a-proposal-for-scripting

Share this post


Link to post
Share on other sites

Thanks for the offer, but like I said, while I do have some minor scripting experience, I am not really a scripter by trade. (Machinima direction and graphics designing (including animation, 3d animations and effects, gimp (really similar to Photoshop) ,adobe after effects and many many more.)

 

anyways,back to the task at hand =P :

 

I had managed to change the VFX_BEAM_DRAIN_LIFE and the beams were successfully replaced in-game (After compiling) , but I still need to do the most important part of this project: the plasma IMPACT effect is still the same as before and I want to change it to the blue flame that is used by the plasma thrower. Mind explaining how I do that part (change the impact effect)?

 

Here is my progress so far:

 

femjcn.png

212ejqc.png

Share this post


Link to post
Share on other sites

            SWFP_DAMAGE_VFX = VFX_PRO_DRAIN;


            effect eVFX = EffectVisualEffect(SWFP_DAMAGE_VFX);

 

The eVFX is the effect applied to the targets, the impact effect. It references SWFP_DAMAGE_VFX as a shortcut, so changing that top line is what you want to do. The VFX_PRO_DRAIN is another shortcut from nwscript.nss that references visualeffects.2da again.

 

This will be replaced just like you did with the beam effect. In the visualeffects.2da, look through the "VFX_IMP_" entries ("IMP" is short for "IMPACT"). You can sort the .2da by a column by click the label at the very top of the .2da file's column.

Share this post


Link to post
Share on other sites

Ok, so pretty much same process as before. Now the only issue will finding out what the plasma flame effect is called. I’ll check the 2da and see if any name mind resemble what I am searching for.

 

There is one called VFX_IMP_PLASMA , I think it's pretty obvious this might be it; I’ll see when I test it out...

 

EDIT: it wasn't the above, the visual itself was right...but the flames were green instead of the blue seen in the plasma thrower, I’ll continue searching...

 

Success!

 

It seems that for some reason, the row numbers for the VFX_imp_plasma and VFX_imp_posion (it's misspelled in the 2da, but it's clearly the poison effect) were switched around. Here is the final result in-game (death field is the same, besides the animation difference and splitting beams):

 

k4f0wj.jpg
33m94ld.jpg
2a8rb69.jpg

 

I wish to thank Fair Strides and others for the assistance in this task, I appreciate the assistance you have given me.

 

 

I’ll probably go use the death field impact (purple) in case I find that this one doesn't fit well, but I am sure glad I accomplished something!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.