PRC8/nwn/nwnprc/trunk/scripts/prc_templates.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
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.
2024-02-11 14:01:05 -05:00

89 lines
3.0 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Name Template main script
//:: FileName prc_templates
//:://////////////////////////////////////////////
/*
This deals with maintaining the bonus' that the
various templates grant.
This also applies the bonuses that Weapons of
Legacy grant to the PC
*/
//:://////////////////////////////////////////////
//:: Created By: Primogenitor, Strat
//:: Created On: 18/04/06
//:://////////////////////////////////////////////
#include "prc_inc_template"
void RunTemplateStuff(int nTemplate, object oPC = OBJECT_SELF)
{
//run the maintenance script
string sScript = Get2DACache("templates", "MaintainScript", nTemplate);
if(DEBUG) DoDebug("Running template maintenance script "+sScript);
DelayCommand(0.0f, ExecuteScript(sScript, oPC));
}
void ApplyLegacy(int nWoL, object oPC = OBJECT_SELF)
{
object oSkin = GetPCSkin(oPC);
int nLegacy = GetPersistantLocalInt(oPC, "LegacyRitual");
if (nLegacy == 1)
IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_LEAST_LEGACY), 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
else if (nLegacy == 2)
IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_LESSER_LEGACY), 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
else if (nLegacy == 3)
IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_GREATER_LEGACY), 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
// Clean up prior effects before applying new ones
effect eEffect = GetFirstEffect(oPC);
while(GetIsEffectValid(eEffect))
{
// Is it a WOL effect?
if(GetEffectTag(eEffect) == "WOLEffect")
RemoveEffect(oPC, eEffect);
eEffect = GetNextEffect(oPC);
}
string sScript = Get2DACache("wol_items", "MaintainScript", nWoL);
if(DEBUG) DoDebug("Running legacy application script "+sScript);
DelayCommand(0.0f, ExecuteScript(sScript, oPC));
if (sScript == "wol_m_devious") DelayCommand(0.0f, ExecuteScript("wol_m_vicious", oPC));
}
void main()
{
if(DEBUG) DoDebug("Running prc_templates");
object oPC = OBJECT_SELF;
//loop over all templates and see if the player has them
if(!persistant_array_exists(oPC, "templates"))
{
persistant_array_create(oPC, "templates");
}
int i;
int bHasTemplate = FALSE;
for(i=0; i<persistant_array_get_size(oPC, "templates"); i++)
{
int nTemplate = persistant_array_get_int(oPC, "templates", i);
if(GetHasTemplate(nTemplate, oPC))
{
bHasTemplate = TRUE;
RunTemplateStuff(nTemplate, oPC);
}
}
// This stores the row number, if any, for the weapon of legacy
int nWoL = GetPersistantLocalInt(oPC, "LegacyOwner");
if (nWoL)
ApplyLegacy(nWoL, oPC);
if(bHasTemplate || nWoL)
{
if(DEBUG) DoDebug("Re-running prc_feat");
//run the main PRC feat system so we trigger any feats we've borrowed
DelayCommand(0.5, ExecuteScript("prc_feats", oPC));
}
}