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.
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(){}
|