NWN1 script help
Posted: Tue Oct 07, 2008 7:03 pm
I have a few tweaks to do yet ... but my biggest ... head scratcher is ..
The effects, the sound and visual fire when the potion is drank, but does not fire when it wears off.
I have the spawning in of the sound object because I am assuming that the player will move after drinking the potion.
Once I get this finalized I intend on making an Enlarge potion as well.
Thanks in advance for the help script ninja's of ALFA.
/* Script generated by
Lilac Soul's NWN Script Generator, v. 2.3
For download info, please visit:
http://nwvault.ign.com/View.php?view=Ot ... 683&id=625 */
#include "nw_i0_2q4luskan"
void main()
{
object oPC;
object oTarget;
object oSpawn;
location lTarget;
oPC = GetItemActivator();
oTarget = oPC;
lTarget = GetLocation(oTarget);
oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "magicteleportino", lTarget);
//Visual effects can't be applied to waypoints, so if it is a WP
//the VFX will be applied to the WP's location instead
int nInt;
nInt = GetObjectType(oTarget);
if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_TORNADO), oTarget);
else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_TORNADO), GetLocation(oTarget));
oTarget = GetObjectByTag("MagicTeleportInOut");
SoundObjectSetPosition(oTarget, GetPosition(oPC));
SoundObjectPlay(oTarget);
SoundObjectSetVolume(oTarget, 25);
oTarget = oPC;
int iRace = GetRacialType(oPC);
if(iRace == RACIAL_TYPE_DWARF) SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_GNOME);
if(iRace == RACIAL_TYPE_ELF) SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_HALFLING);
if(iRace == RACIAL_TYPE_GNOME) SetCreatureAppearanceType(oPC, 1255);
if(iRace == RACIAL_TYPE_HALFELF) SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_GNOME);
if(iRace == RACIAL_TYPE_HALFLING) SetCreatureAppearanceType(oPC, 1255);
if(iRace == RACIAL_TYPE_HALFORC) SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_DWARF);
if(iRace == RACIAL_TYPE_HUMAN) SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_GNOME);
SetLocalString(oPC, "shrunk", "1");
AssignCommand(oPC, ActionSpeakString("*shrinks*"));
oTarget = GetObjectByTag("MagicTeleportInOut");
SoundObjectStop(oTarget);
DelayCommand(1.0, DestroyObject(oTarget, 0.0));
oTarget = oPC;
effect eEffect;
eEffect = EffectDazed();
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 8.0f);
eEffect = EffectAbilityDecrease(ABILITY_STRENGTH, 2);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 20.0f);
eEffect = EffectACIncrease(1);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 23.0f);
lTarget = GetLocation(oTarget);
DelayCommand(23.0, CreateObjectVoid(OBJECT_TYPE_PLACEABLE, "magicteleportino", lTarget));
//Visual effects can't be applied to waypoints, so if it is a WP
//the VFX will be applied to the WP's location instead
nInt = GetObjectType(oTarget);
if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_TORNADO), oTarget);
else DelayCommand(24.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_TORNADO), GetLocation(oTarget)));
oTarget = GetObjectByTag("MagicTeleportInOut");
DelayCommand(24.0,SoundObjectSetPosition(oTarget, GetPosition(oPC)));
DelayCommand(24.0, SoundObjectPlay(oTarget));
SoundObjectSetVolume(oTarget, 25);
oTarget = oPC;
DelayCommand(24.0, SetLocalString(oPC, "shrunk", "0"));
if(iRace == RACIAL_TYPE_DWARF) DelayCommand(24.0, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_DWARF));
if(iRace == RACIAL_TYPE_ELF) DelayCommand(24.0, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_ELF));
if(iRace == RACIAL_TYPE_GNOME) DelayCommand(24.0, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_GNOME));
if(iRace == RACIAL_TYPE_HALFELF) DelayCommand(24.0, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_HALF_ELF));
if(iRace == RACIAL_TYPE_HALFLING) DelayCommand(24.0, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_HALFLING));
if(iRace == RACIAL_TYPE_HALFORC) DelayCommand(24.0, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_HALF_ORC));
if(iRace == RACIAL_TYPE_HUMAN) DelayCommand(24.0, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_HUMAN));
DelayCommand(24.0, AssignCommand(oPC, ActionSpeakString("*returns to normal size*")));
oTarget = GetObjectByTag("MagicPortalInOut");
DelayCommand(24.0, SoundObjectStop(oTarget));
oTarget = GetObjectByTag("MagicTeleportInOut");
DelayCommand(25.0, DestroyObject(oTarget, 0.0));
oTarget = oPC;
eEffect = EffectDazed();
DelayCommand(24.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 10.0f));
}
The effects, the sound and visual fire when the potion is drank, but does not fire when it wears off.
I have the spawning in of the sound object because I am assuming that the player will move after drinking the potion.
Once I get this finalized I intend on making an Enlarge potion as well.
Thanks in advance for the help script ninja's of ALFA.
/* Script generated by
Lilac Soul's NWN Script Generator, v. 2.3
For download info, please visit:
http://nwvault.ign.com/View.php?view=Ot ... 683&id=625 */
#include "nw_i0_2q4luskan"
void main()
{
object oPC;
object oTarget;
object oSpawn;
location lTarget;
oPC = GetItemActivator();
oTarget = oPC;
lTarget = GetLocation(oTarget);
oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "magicteleportino", lTarget);
//Visual effects can't be applied to waypoints, so if it is a WP
//the VFX will be applied to the WP's location instead
int nInt;
nInt = GetObjectType(oTarget);
if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_TORNADO), oTarget);
else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_TORNADO), GetLocation(oTarget));
oTarget = GetObjectByTag("MagicTeleportInOut");
SoundObjectSetPosition(oTarget, GetPosition(oPC));
SoundObjectPlay(oTarget);
SoundObjectSetVolume(oTarget, 25);
oTarget = oPC;
int iRace = GetRacialType(oPC);
if(iRace == RACIAL_TYPE_DWARF) SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_GNOME);
if(iRace == RACIAL_TYPE_ELF) SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_HALFLING);
if(iRace == RACIAL_TYPE_GNOME) SetCreatureAppearanceType(oPC, 1255);
if(iRace == RACIAL_TYPE_HALFELF) SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_GNOME);
if(iRace == RACIAL_TYPE_HALFLING) SetCreatureAppearanceType(oPC, 1255);
if(iRace == RACIAL_TYPE_HALFORC) SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_DWARF);
if(iRace == RACIAL_TYPE_HUMAN) SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_GNOME);
SetLocalString(oPC, "shrunk", "1");
AssignCommand(oPC, ActionSpeakString("*shrinks*"));
oTarget = GetObjectByTag("MagicTeleportInOut");
SoundObjectStop(oTarget);
DelayCommand(1.0, DestroyObject(oTarget, 0.0));
oTarget = oPC;
effect eEffect;
eEffect = EffectDazed();
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 8.0f);
eEffect = EffectAbilityDecrease(ABILITY_STRENGTH, 2);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 20.0f);
eEffect = EffectACIncrease(1);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 23.0f);
lTarget = GetLocation(oTarget);
DelayCommand(23.0, CreateObjectVoid(OBJECT_TYPE_PLACEABLE, "magicteleportino", lTarget));
//Visual effects can't be applied to waypoints, so if it is a WP
//the VFX will be applied to the WP's location instead
nInt = GetObjectType(oTarget);
if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_TORNADO), oTarget);
else DelayCommand(24.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_TORNADO), GetLocation(oTarget)));
oTarget = GetObjectByTag("MagicTeleportInOut");
DelayCommand(24.0,SoundObjectSetPosition(oTarget, GetPosition(oPC)));
DelayCommand(24.0, SoundObjectPlay(oTarget));
SoundObjectSetVolume(oTarget, 25);
oTarget = oPC;
DelayCommand(24.0, SetLocalString(oPC, "shrunk", "0"));
if(iRace == RACIAL_TYPE_DWARF) DelayCommand(24.0, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_DWARF));
if(iRace == RACIAL_TYPE_ELF) DelayCommand(24.0, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_ELF));
if(iRace == RACIAL_TYPE_GNOME) DelayCommand(24.0, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_GNOME));
if(iRace == RACIAL_TYPE_HALFELF) DelayCommand(24.0, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_HALF_ELF));
if(iRace == RACIAL_TYPE_HALFLING) DelayCommand(24.0, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_HALFLING));
if(iRace == RACIAL_TYPE_HALFORC) DelayCommand(24.0, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_HALF_ORC));
if(iRace == RACIAL_TYPE_HUMAN) DelayCommand(24.0, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_HUMAN));
DelayCommand(24.0, AssignCommand(oPC, ActionSpeakString("*returns to normal size*")));
oTarget = GetObjectByTag("MagicPortalInOut");
DelayCommand(24.0, SoundObjectStop(oTarget));
oTarget = GetObjectByTag("MagicTeleportInOut");
DelayCommand(25.0, DestroyObject(oTarget, 0.0));
oTarget = oPC;
eEffect = EffectDazed();
DelayCommand(24.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 10.0f));
}