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.
61 lines
2.6 KiB
Plaintext
61 lines
2.6 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Metamagic Spell Ability
|
|
//:: ft_metamagic.nss
|
|
//:://////////////////////////////////////////////
|
|
//:: Applies desired metamagic effect to next spell cast.
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: N-S
|
|
//:: Created On: 20/09/2009
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_alterations"
|
|
#include "prc_spell_const"
|
|
#include "inc_debug"
|
|
|
|
int GetMetamagicFromSpellAbility(int nSpell)
|
|
{
|
|
switch (nSpell)
|
|
{
|
|
case SPELL_EXTEND_SPELL_ABILITY: return METAMAGIC_EXTEND;
|
|
case SPELL_SILENT_SPELL_ABILITY: return METAMAGIC_SILENT;
|
|
case SPELL_STILL_SPELL_ABILITY: return METAMAGIC_STILL;
|
|
case SPELL_EMPOWER_SPELL_ABILITY: return METAMAGIC_EMPOWER;
|
|
case SPELL_MAXIMIZE_SPELL_ABILITY: return METAMAGIC_MAXIMIZE;
|
|
case SPELL_QUICKEN_SPELL_ABILITY: return METAMAGIC_QUICKEN;
|
|
}
|
|
return METAMAGIC_NONE;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
object oPC = OBJECT_SELF;
|
|
int nMetaState = GetLocalInt(oPC, "PRC_metamagic_state");
|
|
int nSpellID = GetSpellId();
|
|
int nMetaOld = GetLocalInt(oPC, "MetamagicFeatAdjust");
|
|
int nMetamagic = GetMetamagicFromSpellAbility(nSpellID);
|
|
|
|
if (DEBUG) Assert(nMetamagic != METAMAGIC_NONE, "nMetamagic != METAMAGIC_NONE", "Bad call to metamagic script!", "ft_metamagic");
|
|
|
|
if(nMetaState < 1 || (nMetaState > 0 && nMetaOld != nMetamagic))//no metamagic was used or different metamagic used
|
|
{
|
|
SetLocalInt(oPC, "MetamagicFeatAdjust", nMetamagic);
|
|
SetLocalInt(oPC, "PRC_metamagic_state", 1);
|
|
// "[Extend/Silent/...] Spell Activated"
|
|
FloatingTextStringOnCreature("*"+GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nSpellID))) + " " + GetStringByStrRef(63798)+"*", oPC, FALSE);
|
|
SendMessageToPC(oPC, "Metamagic activated for the next spell you cast.");
|
|
}
|
|
else if(nMetaState == 1 && nMetaOld == nMetamagic)//same metamagic used twice
|
|
{
|
|
SetLocalInt(oPC, "PRC_metamagic_state", 2);
|
|
// "[Extend/Silent/...] Spell Activated"
|
|
FloatingTextStringOnCreature("*"+GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nSpellID))) + " " + GetStringByStrRef(63798)+"*", oPC, FALSE);
|
|
SendMessageToPC(oPC, "Metamagic activated for all spells you cast.");
|
|
}
|
|
else if(nMetaState == 2)//disable metamagic
|
|
{
|
|
SetLocalInt(oPC, "PRC_metamagic_state", 0);
|
|
SetLocalInt(oPC, "MetamagicFeatAdjust", 0);
|
|
FloatingTextStringOnCreature("*"+GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nSpellID))) + " " + GetStringByStrRef(63799)+"*", oPC, FALSE);
|
|
}
|
|
}
|