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.
99 lines
3.5 KiB
Plaintext
99 lines
3.5 KiB
Plaintext
//:://////////////////////////////////////////////////////////////
|
|
//:: Diamond Dragon
|
|
//:: psi_diadra.nss
|
|
//:://///////////////////////////////////////////////////////////
|
|
//:: Applies the passive bonuses from Diamond Dragon, and handles
|
|
//:: cleanup from the Channel Wings and Tail feats.
|
|
//:://///////////////////////////////////////////////////////////
|
|
//:: Created By: Fox
|
|
//:: Created On: Nov 15, 2007
|
|
//:://///////////////////////////////////////////////////////////
|
|
|
|
#include "prc_ipfeat_const"
|
|
#include "prc_x2_itemprop"
|
|
#include "inc_item_props"
|
|
|
|
//removes channeled wings after relogging or server restart
|
|
void WingCorrection(object oPC, int nEvent)
|
|
{
|
|
if(GetCreatureWingType(oPC) != PRC_WING_TYPE_DRAGON_SILVER)
|
|
return;
|
|
int nChanneled = GetPersistantLocalInt(oPC, "ChannelingWings");
|
|
if(nChanneled)
|
|
{
|
|
SetPersistantLocalInt(oPC, "ChannelingWings", FALSE);
|
|
SetCreatureWingType(CREATURE_WING_TYPE_NONE, oPC);
|
|
}
|
|
|
|
}
|
|
|
|
//removes channeled tails after relogging or server restart
|
|
void TailCorrection(object oPC, int nEvent)
|
|
{
|
|
if(GetCreatureWingType(oPC) != PRC_TAIL_TYPE_DRAGON_SILVER)
|
|
return;
|
|
int nChanneled = GetPersistantLocalInt(oPC, "ChannelingTail");
|
|
if(nChanneled)
|
|
{
|
|
SetPersistantLocalInt(oPC, "ChannelingTail", FALSE);
|
|
SetCreatureTailType(CREATURE_TAIL_TYPE_NONE, oPC);
|
|
}
|
|
}
|
|
|
|
void main()
|
|
{
|
|
|
|
int nEvent = GetRunningEvent();
|
|
if(DEBUG) DoDebug("psi_diadra running, event: " + IntToString(nEvent));
|
|
|
|
object oPC = OBJECT_SELF;
|
|
object oSkin = GetPCSkin(oPC);
|
|
|
|
//No event, being called from PRCEvalFeats
|
|
if(nEvent == FALSE)
|
|
{
|
|
//hook the script in to automatically check for tails or wings that need removing
|
|
AddEventScript(oPC, EVENT_ONCLIENTENTER, "psi_diadra", TRUE, FALSE);
|
|
|
|
//Dragon Augmentation feat handling
|
|
int iTest, nBonus, nDiff;
|
|
|
|
//Strength Augmentation feats
|
|
iTest = GetPersistantLocalInt(oPC, "NWNX_DiaDragStr");
|
|
nBonus = GetHasFeat(FEAT_DRAGON_AUGMENT_STR_1, oPC) ? 1 : 0;
|
|
nBonus = GetHasFeat(FEAT_DRAGON_AUGMENT_STR_2, oPC) ? 2 : nBonus;
|
|
nBonus = GetHasFeat(FEAT_DRAGON_AUGMENT_STR_3, oPC) ? 3 : nBonus;
|
|
nDiff = nBonus - iTest;
|
|
|
|
if(nDiff != 0)
|
|
SetCompositeBonus(oSkin, "DrAug_STR", nBonus, ITEM_PROPERTY_ABILITY_BONUS, IP_CONST_ABILITY_STR);
|
|
|
|
//Dex Augmentation feats
|
|
iTest = GetPersistantLocalInt(oPC, "NWNX_DiaDragDex");
|
|
nBonus = GetHasFeat(FEAT_DRAGON_AUGMENT_DEX_1, oPC) ? 1 : 0;
|
|
nBonus = GetHasFeat(FEAT_DRAGON_AUGMENT_DEX_2, oPC) ? 2 : nBonus;
|
|
nBonus = GetHasFeat(FEAT_DRAGON_AUGMENT_DEX_3, oPC) ? 3 : nBonus;
|
|
nDiff = nBonus - iTest;
|
|
|
|
if(nDiff != 0)
|
|
SetCompositeBonus(oSkin, "DrAug_DEX", nBonus, ITEM_PROPERTY_ABILITY_BONUS, IP_CONST_ABILITY_DEX);
|
|
|
|
//Con Augmentation feats
|
|
iTest = GetPersistantLocalInt(oPC, "NWNX_DiaDragCon");
|
|
nBonus = GetHasFeat(FEAT_DRAGON_AUGMENT_CON_1, oPC) ? 1 : 0;
|
|
nBonus = GetHasFeat(FEAT_DRAGON_AUGMENT_CON_2, oPC) ? 2 : nBonus;
|
|
nBonus = GetHasFeat(FEAT_DRAGON_AUGMENT_CON_3, oPC) ? 3 : nBonus;
|
|
nDiff = nBonus - iTest;
|
|
|
|
if(nDiff != 0)
|
|
SetCompositeBonus(oSkin, "DrAug_CON", nBonus, ITEM_PROPERTY_ABILITY_BONUS, IP_CONST_ABILITY_CON);
|
|
}
|
|
|
|
//Every heartbeat, perform wing and tail status checks to see if they expired
|
|
if(nEvent == EVENT_ONCLIENTENTER)
|
|
{
|
|
WingCorrection(oPC, nEvent);
|
|
TailCorrection(oPC, nEvent);
|
|
}
|
|
}
|