PRC8/nwn/nwnprc/trunk/scripts/prc_dracaura_tgl.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
Updated AMS marker feats.  Removed arcane & divine marker feats.  Updated Dread Necromancer for epic progression. Updated weapon baseitem models.  Updated new weapons for crafting & npc equip.
 Updated prefix.  Updated release archive.
2024-02-11 14:01:05 -05:00

135 lines
4.4 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Draconic Aura Toggle - Shaman Auras
//:: prc_dracaura_tgl.nss
//::///////////////////////////////////////////////
/*
Toggles auras gained via the Dragon Shaman class.
*/
//:://////////////////////////////////////////////
//:: Created By: xwarren
//:: Created On: Apr 2, 2011
//:://////////////////////////////////////////////
#include "prc_alterations"
#include "prc_inc_dragsham"
void _SetupAura(object oPC, int nSpellID, int nDamageType, string sSlot)
{
object oAura = GetAuraObject(oPC, "VFX_DRACONIC_AURA_1");
int nAuraBonus = GetAuraBonus(oPC);
if(!nDamageType) nDamageType = GetDragonDamageType(GetLocalInt(oPC, "DragonShamanTotem"));
SetLocalObject(oPC, "DraconicAura"+sSlot, oAura);
SetLocalInt(oAura, "SpellID", nSpellID);
SetLocalInt(oAura, "AuraBonus", nAuraBonus);
SetLocalInt(oAura, "DamageType", nDamageType);
}
void _DisableAura(object oPC, object oAura, int nSpellID, string sSlot)
{
DestroyObject(oAura);
DeleteLocalObject(oPC, "DraconicAura"+sSlot);
string sMes = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpellID)));
sMes = "*"+sMes+" "+GetStringByStrRef(63799)+"*";//Deactivated
FloatingTextStringOnCreature(sMes, oPC, FALSE);
}
void _EnableAura(object oPC, int nSpellID, string sSlot)
{
effect eAura = ExtraordinaryEffect(EffectAreaOfEffect(AOE_MOB_DRACONIC_AURA_1));
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eAura, oPC);
_SetupAura(oPC, nSpellID, GetLocalInt(oPC, "DraconicAuraElement"), sSlot);
DeleteLocalInt(oPC, "DraconicAuraElement");
string sMes = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpellID)));
sMes = "*"+sMes+" "+GetStringByStrRef(63798)+"*";//Activated
FloatingTextStringOnCreature(sMes, oPC, FALSE);
}
void main()
{
object oPC = OBJECT_SELF;
int nSpellID = GetSpellId();
//if(TakeSwiftAction(oPC))
//No Double Aura feat
if(!GetHasFeat(FEAT_DOUBLE_DRACONIC_AURA, oPC))
{
//only one aura
object oFirstAura = GetLocalObject(oPC, "DraconicAura1");
int nFirstAura = GetLocalInt(oFirstAura, "SpellID");
//aura active
if(GetIsObjectValid(oFirstAura))
{
//same aura - disable
if(nFirstAura == nSpellID)
{
_DisableAura(oPC, oFirstAura, nFirstAura, "1");
return;
}
//different aura - replace
else
{
//delete the old aura
_DisableAura(oPC, oFirstAura, nFirstAura, "1");
//apply a new one
_EnableAura(oPC, nSpellID, "1");
return;
}
}
else
{
_EnableAura(oPC, nSpellID, "1");
return;
}
}
else
{
object oFirstAura = GetLocalObject(oPC, "DraconicAura1");
object oSecndAura = GetLocalObject(oPC, "DraconicAura2");
int nFirstAura = GetLocalInt(oFirstAura, "SpellID");
int nSecndAura = GetLocalInt(oSecndAura, "SpellID");
if(GetIsObjectValid(oFirstAura))
{
if(nSpellID == nFirstAura)
{
_DisableAura(oPC, oFirstAura, nFirstAura, "1");
if(GetIsObjectValid(oSecndAura))
{
SetLocalObject(oPC, "DraconicAura1", oSecndAura);
DeleteLocalObject(oPC, "DraconicAura2");
}
return;
}
else if(GetIsObjectValid(oSecndAura))
{
if(nSpellID == nSecndAura)
{
_DisableAura(oPC, oSecndAura, nSecndAura, "2");
return;
}
else
{
//delete the old aura
_DisableAura(oPC, oFirstAura, nFirstAura, "1");
//swap second aura to first slot
SetLocalObject(oPC, "DraconicAura1", oSecndAura);
DeleteLocalObject(oPC, "DraconicAura2");
//apply a new aura
_EnableAura(oPC, nSpellID, "2");
return;
}
}
else
{
_EnableAura(oPC, nSpellID, "2");
return;
}
}
else
_EnableAura(oPC, nSpellID, "1");
}
}