Further file organization
Further file organization
This commit is contained in:
135
nwn/nwnprc/trunk/scripts/prc_dracaura_tgl.nss
Normal file
135
nwn/nwnprc/trunk/scripts/prc_dracaura_tgl.nss
Normal file
@@ -0,0 +1,135 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: 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");
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user