Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
135 lines
4.4 KiB
Plaintext
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");
|
|
}
|
|
} |