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.
125 lines
3.8 KiB
Plaintext
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(){}
|