Further file organization
Further file organization
This commit is contained in:
124
nwn/nwnprc/trunk/include/spinc_necro_cyst.nss
Normal file
124
nwn/nwnprc/trunk/include/spinc_necro_cyst.nss
Normal file
@@ -0,0 +1,124 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: 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(){}
|
Reference in New Issue
Block a user