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.
107 lines
4.2 KiB
Plaintext
107 lines
4.2 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Shadowmind
|
|
//:: psi_shadowmind.nss
|
|
//:://////////////////////////////////////////////
|
|
//:: Adds the powers to the Shadowmind
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Stratovarius
|
|
//:: Created On: March 6, 2006
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "psi_inc_powknown"
|
|
|
|
int GetPowerRowID(int nClass, int nPower)
|
|
{
|
|
string sPowerFile = GetAMSDefinitionFileName(nClass);
|
|
int nCheck = -1;
|
|
int i;
|
|
for(i = 0; i < GetPRCSwitch(FILE_END_CLASS_POWER) ; i++)
|
|
{
|
|
nCheck = StringToInt(Get2DACache(sPowerFile, "RealSpellID", i));
|
|
|
|
// Find the row ID of the power we need and return it
|
|
if(nCheck == nPower)
|
|
{
|
|
return i;
|
|
}
|
|
|
|
}
|
|
// this should never trigger
|
|
return -1;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
object oPC = OBJECT_SELF;
|
|
int nClass = GetPrimaryPsionicClass(oPC);
|
|
int nPowerTotal = GetKnownPowersModifier(oPC, nClass);
|
|
|
|
// Determine why this script is running
|
|
if(GetRunningEvent() != EVENT_ONPLAYERLEVELDOWN)
|
|
{
|
|
// Adding Distract if the Shadowmind is level 1 in the class or greater
|
|
if (GetLevelByClass(CLASS_TYPE_SHADOWMIND,oPC) >= 1 &&
|
|
!GetPersistantLocalInt(oPC, "PRC_Shadowmind_DistractGained")
|
|
)
|
|
{
|
|
if(DEBUG) DoDebug("psi_shadowmind: Adding Distract");
|
|
AddPowerKnown(oPC, nClass, GetPowerRowID(nClass, POWER_DISTRACT), TRUE, GetHitDice(oPC));
|
|
SetKnownPowersModifier(oPC, nClass, ++nPowerTotal);
|
|
SetPersistantLocalInt(oPC, "PRC_Shadowmind_DistractGained", TRUE);
|
|
}
|
|
// Adding Cloud Mind if the Shadowmind is level 3 in the class or greater
|
|
if (GetLevelByClass(CLASS_TYPE_SHADOWMIND,oPC) >= 3 &&
|
|
!GetPersistantLocalInt(oPC, "PRC_Shadowmind_CloudMindGained")
|
|
)
|
|
{
|
|
if(DEBUG) DoDebug("psi_shadowmind: Adding Cloud Mind");
|
|
AddPowerKnown(oPC, nClass, GetPowerRowID(nClass, POWER_CLOUD_MIND), TRUE, GetHitDice(oPC));
|
|
SetKnownPowersModifier(oPC, nClass, ++nPowerTotal);
|
|
SetPersistantLocalInt(oPC, "PRC_Shadowmind_CloudMindGained", TRUE);
|
|
}
|
|
// Adding Cloud Mind, Mass if the Shadowmind is level 3 in the class or greater
|
|
if (GetLevelByClass(CLASS_TYPE_SHADOWMIND,oPC) >= 9 &&
|
|
!GetPersistantLocalInt(oPC, "PRC_Shadowmind_CloudMindMassGained")
|
|
)
|
|
{
|
|
if(DEBUG) DoDebug("psi_shadowmind: Adding Cloud Mind, Mass");
|
|
AddPowerKnown(oPC, nClass, GetPowerRowID(nClass, POWER_CLOUD_MIND_MASS), TRUE, GetHitDice(oPC));
|
|
SetKnownPowersModifier(oPC, nClass, ++nPowerTotal);
|
|
SetPersistantLocalInt(oPC, "PRC_Shadowmind_CloudMindMassGained", TRUE);
|
|
}
|
|
|
|
// Hook to OnLevelDown to remove the power slots granted here
|
|
AddEventScript(oPC, EVENT_ONPLAYERLEVELDOWN, "psi_shadowmind", TRUE, FALSE);
|
|
}
|
|
else
|
|
{
|
|
// Has lost Distract, but the slot is still present
|
|
if(GetPersistantLocalInt(oPC, "PRC_Shadowmind_DistractGained") &&
|
|
GetLevelByClass(CLASS_TYPE_SHADOWMIND,oPC) < 1
|
|
)
|
|
{
|
|
DeletePersistantLocalInt(oPC, "PRC_Shadowmind_DistractGained");
|
|
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
|
|
}
|
|
// Has lost Cloud Mind, but the slot is still present
|
|
if(GetPersistantLocalInt(oPC, "PRC_Shadowmind_CloudMindGained") &&
|
|
GetLevelByClass(CLASS_TYPE_SHADOWMIND,oPC) < 3
|
|
)
|
|
{
|
|
DeletePersistantLocalInt(oPC, "PRC_Shadowmind_CloudMindGained");
|
|
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
|
|
}
|
|
// Has lost Cloud Mind, Mass, but the slot is still present
|
|
if(GetPersistantLocalInt(oPC, "PRC_Shadowmind_CloudMindMassGained") &&
|
|
GetLevelByClass(CLASS_TYPE_SHADOWMIND,oPC) < 9
|
|
)
|
|
{
|
|
DeletePersistantLocalInt(oPC, "PRC_Shadowmind_CloudMindMassGained");
|
|
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
|
|
}
|
|
|
|
// Remove eventhook if the character no longer has levels in Shadowmind
|
|
if(GetLevelByClass(CLASS_TYPE_SHADOWMIND,oPC) == 0)
|
|
RemoveEventScript(oPC, EVENT_ONPLAYERLEVELDOWN, "psi_shadowmind", TRUE, FALSE);
|
|
}
|
|
} |