forked from Jaysyn/PRC8
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.
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);
|
|
}
|
|
} |