Clear out experimental .35 files
Clear out experimental .35 files
This commit is contained in:
@@ -1,170 +0,0 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Invocation Hook File.
|
||||
//:: inv_invokehook.nss
|
||||
//:://////////////////////////////////////////////
|
||||
/*
|
||||
|
||||
This file acts as a hub for all code that
|
||||
is hooked into the invocation scripts
|
||||
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Fox
|
||||
//:: Created On: 25-1-2008
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "prc_inc_spells"
|
||||
#include "inv_inc_invfunc"
|
||||
#include "x2_inc_spellhook"
|
||||
|
||||
// This function holds all functions that are supposed to run before the actual
|
||||
// spellscript gets run. If this functions returns FALSE, the spell is aborted
|
||||
// and the spellscript will not run
|
||||
int PreInvocationCastCode();
|
||||
|
||||
// All invocations have somatic component so we will roll ASF check here
|
||||
int InvocationASFCheck(object oInvoker, int nClass)
|
||||
{
|
||||
int nASF = GetArcaneSpellFailure(oInvoker);
|
||||
|
||||
// Warlocks ignore ASF chance while casting in light armor
|
||||
if(nClass == CLASS_TYPE_WARLOCK)
|
||||
{
|
||||
object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oInvoker);
|
||||
int nAC = GetBaseAC(oArmor);
|
||||
|
||||
//armors
|
||||
switch(nAC)
|
||||
{
|
||||
case 1: nASF -= 5; break;//light
|
||||
case 2: nASF -= 10; break;//light
|
||||
case 3: nASF -= 20; break;//light
|
||||
case 4: nASF -= GetHasFeat(FEAT_BATTLE_CASTER, oInvoker) ? 20 : 0; break;//medium;
|
||||
case 5: nASF -= GetHasFeat(FEAT_BATTLE_CASTER, oInvoker) ? 30 : 0; break;//medium
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
else if(nClass == CLASS_TYPE_DRAGON_SHAMAN)
|
||||
{
|
||||
//no ASF chance
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if(Random(100) < nASF)
|
||||
{
|
||||
//52946 = Spell failed due to arcane spell failure!
|
||||
FloatingTextStrRefOnCreature(52946, oInvoker, FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// if FALSE is returned by this function, the spell will not be cast
|
||||
// the order in which the functions are called here DOES MATTER, changing it
|
||||
// WILL break the crafting subsystems
|
||||
//------------------------------------------------------------------------------
|
||||
int PreInvocationCastCode()
|
||||
{
|
||||
object oInvoker = OBJECT_SELF;
|
||||
object oTarget = PRCGetSpellTargetObject();
|
||||
object oCastItem = GetSpellCastItem();
|
||||
int nInvokeId = PRCGetSpellId();
|
||||
int nInvokingClass = GetInvokingClass(oInvoker);
|
||||
int nInvokeLevel = GetInvocationLevel(oInvoker);
|
||||
int bInvokeIsHostile = Get2DACache("spells", "HostileSetting", nInvokeId) == "1";
|
||||
|
||||
int nContinue = !ExecuteScriptAndReturnInt("prespellcode", oInvoker);
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Break any spell require maintaining concentration
|
||||
//---------------------------------------------------------------------------
|
||||
X2BreakConcentrationSpells();
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// No invoking while using expertise
|
||||
//---------------------------------------------------------------------------
|
||||
if(nContinue)
|
||||
if (GetActionMode(oInvoker, ACTION_MODE_EXPERTISE) || GetActionMode(oInvoker, ACTION_MODE_IMPROVED_EXPERTISE))
|
||||
nContinue = FALSE;
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Check for PRC spell effects
|
||||
//---------------------------------------------------------------------------
|
||||
if(nContinue)
|
||||
nContinue = PRCSpellEffects(oInvoker, oTarget, nInvokeId, nInvokeLevel, nInvokingClass, bInvokeIsHostile, -1);
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Run Grappling Concentration Check
|
||||
//---------------------------------------------------------------------------
|
||||
if(nContinue)
|
||||
nContinue = GrappleConc(oInvoker, nInvokeLevel);
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Run ASF Check
|
||||
//---------------------------------------------------------------------------
|
||||
if(nContinue)
|
||||
nContinue = InvocationASFCheck(oInvoker, nInvokingClass);
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// This stuff is only interesting for player characters we assume that use
|
||||
// magic device always works and NPCs don't use the crafting feats or
|
||||
// sequencers anyway. Thus, any NON PC spellcaster always exits this script
|
||||
// with TRUE (unless they are DM possessed or in the Wild Magic Area in
|
||||
// Chapter 2 of Hordes of the Underdark.
|
||||
//---------------------------------------------------------------------------
|
||||
if(!GetIsPC(oInvoker)
|
||||
&& !GetPRCSwitch(PRC_NPC_HAS_PC_SPELLCASTING))
|
||||
{
|
||||
if(!GetIsDMPossessed(oInvoker) && !GetLocalInt(GetArea(oInvoker), "X2_L_WILD_MAGIC"))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Run use magic device skill check
|
||||
//---------------------------------------------------------------------------
|
||||
if(nContinue)
|
||||
{
|
||||
nContinue = X2UseMagicDeviceCheck(oInvoker);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
// run any user defined spellscript here
|
||||
//-----------------------------------------------------------------------
|
||||
if (nContinue)
|
||||
{
|
||||
nContinue = X2RunUserDefinedSpellScript();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Check for the new restricted itemproperties
|
||||
//---------------------------------------------------------------------------
|
||||
if(nContinue
|
||||
&& GetIsObjectValid(oCastItem)
|
||||
&& !CheckPRCLimitations(oCastItem, oInvoker))
|
||||
{
|
||||
SendMessageToPC(oInvoker, "You cannot use "+GetName(oCastItem));
|
||||
nContinue = FALSE;
|
||||
}
|
||||
|
||||
//Cleaning spell variables used for holding the charge
|
||||
if(!GetLocalInt(oInvoker, "PRC_SPELL_EVENT"))
|
||||
{
|
||||
DeleteLocalInt(oInvoker, "PRC_SPELL_CHARGE_COUNT");
|
||||
DeleteLocalInt(oInvoker, "PRC_SPELL_CHARGE_SPELLID");
|
||||
DeleteLocalObject(oInvoker, "PRC_SPELL_CONC_TARGET");
|
||||
DeleteLocalInt(oInvoker, "PRC_SPELL_METAMAGIC");
|
||||
DeleteLocalManifestation(oInvoker, "PRC_POWER_HOLD_MANIFESTATION");
|
||||
DeleteLocalMystery(oInvoker, "MYST_HOLD_MYST");
|
||||
}
|
||||
else if(GetLocalInt(oInvoker, "PRC_SPELL_CHARGE_SPELLID") != nInvokeId)
|
||||
{ //Sanity check, in case something goes wrong with the action queue
|
||||
DeleteLocalInt(oInvoker, "PRC_SPELL_EVENT");
|
||||
}
|
||||
|
||||
return nContinue;
|
||||
}
|
||||
|
Reference in New Issue
Block a user