Imported some old scripts from NWN1 and was happy to see them compile successfully in the NWN2 toolset, only to be perplexed when the visual effects didn't work when I tested the scripts in-game. I had one script that used 3 different VFX constants, fairly common ones at that (like a howl graphic), and none of them worked.
Is there a list somewhere of VFX constants that don't work? I'd rather not spend time guessing. How freaking irritating is it that the toolset has things in it that should work, like no-brainer stuff, and it doesn't work?
This is probably old hat for most of you, heh...but I'm just coming to the realization that the NWN2 toolset is a pile of unfinished mess.
Broken/Missing VFX's...
Débuté par
Jeddia
, avril 22 2013 11:30
#1
Posté 22 avril 2013 - 11:30
#2
Posté 22 avril 2013 - 06:31
NWN2 uses a different VFX system, and from the looks of the 2DA, they started setting the old constants to match equivalent effects in the new system, but gave up at some point, because many/most of the constants are not mapped to anything anymore. I believe the reason is that the new system is more convenient than using constants, and it's extensible so you don't need to keep updating the 2DA whenever you add a new effect.
Instead of using EffectVisualEffect(CONSTANT), use EffectNWN2SpecialEffectFile("string_name"), where "string name" is the name of the effect .sef file (you can, but don't have to, write the .sef extension in it).
If you have the PowerBar plugin, you can browse the effects easily and get their names.
But to answer your specific question, the visualeffects.2da itself can serve as a list of which constants would not work, if you look for the ones that don't have a .sef file attached.
Instead of using EffectVisualEffect(CONSTANT), use EffectNWN2SpecialEffectFile("string_name"), where "string name" is the name of the effect .sef file (you can, but don't have to, write the .sef extension in it).
If you have the PowerBar plugin, you can browse the effects easily and get their names.
But to answer your specific question, the visualeffects.2da itself can serve as a list of which constants would not work, if you look for the ones that don't have a .sef file attached.
Modifié par Tchos, 22 avril 2013 - 06:33 .
#3
Posté 22 avril 2013 - 10:54
here is a batch-test script for Temporary onObject vFx.
// 'testfx'
Don't forget to target something first ( like i always don't.. ). Run it from the console in DebugMode ofc. Change whatever line-up of vFx you want, and remember some Fx need to be onLocation, or Instant, &tc.
ps. Thanks T.
// 'testfx'
void main()
{
object oDebug = GetFirstPC(FALSE);
object oTarget = GetPlayerCurrentTarget(OBJECT_SELF);
string sFx; effect eVis;
float fDelay = 0.f;
int i;
for (i = 0; i < 12; ++ i)
{
switch (i)
{
case 0:
eVis = EffectVisualEffect(VFX_DUR_SPELL_VIGOR);
sFx = "VFX_DUR_SPELL_VIGOR";
break;
case 1:
eVis = EffectVisualEffect(VFX_DUR_SPELL_DIVINE_FAVOR);
sFx = "VFX_DUR_SPELL_DIVINE_FAVOR";
break;
case 2:
eVis = EffectVisualEffect(VFX_DUR_SPELL_VIRTUE);
sFx = "VFX_DUR_SPELL_VIRTUE";
break;
case 3:
eVis = EffectVisualEffect(VFX_DUR_SPELL_AURA_OF_GLORY);
sFx = "VFX_DUR_SPELL_AURA_OF_GLORY";
break;
case 4:
eVis = EffectVisualEffect(VFX_DUR_SPELL_MAGIC_VESTMENT);
sFx = "VFX_DUR_SPELL_MAGIC_VESTMENT";
break;
case 5:
eVis = EffectVisualEffect(VFX_DUR_SPELL_GREATER_MAGIC_WEAPON);
sFx = "VFX_DUR_SPELL_GREATER_MAGIC_WEAPON";
break;
case 6:
eVis = EffectVisualEffect(VFX_DUR_SPELL_DIVINE_POWER);
sFx = "VFX_DUR_SPELL_DIVINE_POWER";
break;
case 7:
eVis = EffectVisualEffect(VFX_DUR_SPELL_HOLY_SWORD);
sFx = "VFX_DUR_SPELL_HOLY_SWORD";
break;
case 8:
eVis = EffectVisualEffect(VFX_DUR_SPELL_GOOD_AURA);
sFx = "VFX_DUR_SPELL_GOOD_AURA";
break;
case 9:
eVis = EffectVisualEffect(VFX_DUR_SPELL_EVIL_AURA);
sFx = "VFX_DUR_SPELL_EVIL_AURA";
break;
case 10:
eVis = EffectVisualEffect(VFX_DUR_FEAT_SACRED_VENGEANCE);
sFx = "VFX_DUR_FEAT_SACRED_VENGEANCE";
break;
case 11:
eVis = EffectVisualEffect(VFX_DUR_FEAT_DIVINE_RESISTANCE);
sFx = "VFX_DUR_FEAT_DIVINE_RESISTANCE";
break;
}
DelayCommand(fDelay, SendMessageToPC(oDebug, ". test : temporary object " + sFx));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget, 5.f));
fDelay += 9.f;
}
}Don't forget to target something first ( like i always don't.. ). Run it from the console in DebugMode ofc. Change whatever line-up of vFx you want, and remember some Fx need to be onLocation, or Instant, &tc.
ps. Thanks T.
#4
Posté 23 avril 2013 - 01:41
Thanks for the replies =) It's helpful to know about that EffectNWN2SpecialEffectFile("string_name"),.. I'll try it out.





Retour en haut






