PRC8/nwn/nwnprc/trunk/include/spinc_necro_cyst.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

125 lines
3.8 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Necrotic Cyst spell includes
//:: spinc_necro_cyst
//:://////////////////////////////////////////////
/** @file
This file contains functions and constants
related to the Necrotic Cyst spell line.
@author Ornedan
@date Created - 2005.09.21
*/
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
///////////////////////////////////////
/* Function prototypes */
///////////////////////////////////////
/**
* Checks if the given creature may cast Necrotic Cyst spells.
*
* @param oPC The creature whose eligibility to test.
* @return TRUE if the creature is allowed to cast
* Necrotic Cyst spells, FALSE otherwise.
*/
int GetCanCastNecroticSpells(object oPC);
/**
* Checks if the given creature has a necrotic cyst.
*
* @param oCreature Creature to check.
* @return TRUE if the creature has a necrotic cyst,
* FALSE otherwise.
*/
int GetHasNecroticCyst(object oCreature);
///////////////////////////////////////
/* Constant declarations */
///////////////////////////////////////
const string NECROTIC_EMPOWERMENT_MARKER = "HAS_NECROTIC_EMPOWER";
const string NECROTIC_CYST_MARKER = "HAS_NECROTIC_CYST";
const int nNoNecCyst = 16829317;
const int nNoMotherCyst = 16829318;
const int nNecEmpower = 16829319;
const int nGaveCyst = 16829316;
///////////////////////////////////////
/* Function declarations */
///////////////////////////////////////
//#include "prc_alterations" // No point in including prc_alteractions
//#include "inc_utility"
#include "prc_x2_itemprop" // required for - SetPersistantLocalInt
//#include "prc_spell_const"
int GetCanCastNecroticSpells(object oPC)
{
int bReturn = TRUE;
// check for Necrotic Empowerment on caster
if(GetHasSpellEffect(SPELL_NECROTIC_EMPOWERMENT, oPC))
{
// "You cannot cast spells utilizing your Mother Cyst while under the effect of Necrotic Empowerment."
FloatingTextStrRefOnCreature(nNecEmpower, oPC);
bReturn = FALSE;
}
// check for Mother Cyst
if(!GetHasFeat(FEAT_MOTHER_CYST, oPC) && (!GetIsObjectValid(GetSpellCastItem())))
{
// "You must have a Mother Cyst to cast this spell."
FloatingTextStrRefOnCreature(nNoMotherCyst, oPC);
bReturn = FALSE;
}
if(DEBUG) DoDebug("spinc_necrocyst: GetCanCastNecroticSpells():\n"
+ "oPC = '" + GetName(oPC) + "'");
return bReturn;
}
int GetHasNecroticCyst(object oCreature)
{
return GetPersistantLocalInt(oCreature, NECROTIC_CYST_MARKER);
//if(DEBUG) DoDebug("spinc_necrocyst: GetHasNecroticCyst():\n"
// + "oCreature = '" + GetName(oCreature) + "'");
}
void GiveNecroticCyst(object oCreature)
{
SetPersistantLocalInt(oCreature, NECROTIC_CYST_MARKER, 1);
FloatingTextStrRefOnCreature(nGaveCyst, OBJECT_SELF);
itemproperty iCystDam = (ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1));
object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oCreature);
if (GetIsObjectValid(oArmor))
{
//add item prop with DURATION_TYPE_PERMANENT
IPSafeAddItemProperty(oArmor, iCystDam, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
}
else
{
object oSkin = GetPCSkin(oCreature);
IPSafeAddItemProperty(oSkin, iCystDam, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
}
//Keep property on armor or hide
ExecuteScript ("prc_keep_onhit_a", oCreature);
if(DEBUG) DoDebug("spinc_necrocyst: GiveNecroticCyst():\n"
+ "oCreature = '" + GetName(oCreature) + "'");
}
void RemoveCyst(object oCreature)
{
SetPersistantLocalInt(oCreature, NECROTIC_CYST_MARKER, 0);
}
// Test main
//void main(){}