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.
118 lines
4.2 KiB
Plaintext
118 lines
4.2 KiB
Plaintext
/*:://////////////////////////////////////////////
|
||
//:: Spell Name Mage’s Sword
|
||
//:: Spell FileName PHS_S_MagesSword
|
||
//:://////////////////////////////////////////////
|
||
//:: In Game Spell desctiption
|
||
//:://////////////////////////////////////////////
|
||
Evocation [Force]
|
||
Level: Sor/Wiz 7
|
||
Components: V, S, F
|
||
Casting Time: 1 standard action
|
||
Range: Close (8M)
|
||
Effect: One sword
|
||
Duration: 1 round/level (D)
|
||
Saving Throw: None
|
||
Spell Resistance: Yes
|
||
|
||
This spell brings into being a shimmering, swordlike plane of force. The
|
||
sword strikes at any opponent within its range. The sword attacks a target
|
||
once each round. Its attack bonus is equal to your caster level + your Int
|
||
bonus or your Cha bonus (for wizards or sorcerers, respectively) with an
|
||
additional +3 enhancement bonus. It deals 4d6+3 points of damage, with a
|
||
threat range of 19-20 and a critical multiplier of x2.
|
||
|
||
If the sword goes beyond the spell range from you, if it goes out of your
|
||
sight, or if you are not directing it, the sword returns to you and hovers.
|
||
|
||
Each round after the first, you can use a standard action to switch the
|
||
sword to a new target. If you do not, the sword continues to attack the
|
||
previous round’s target.
|
||
|
||
The sword cannot be attacked or harmed by physical attacks, but dispel
|
||
magic, disintegrate, a sphere of annihilation, or a rod of cancellation
|
||
affects it. The sword’s AC is 13 (10, +0 size bonus for Medium object, +3
|
||
deflection bonus).
|
||
|
||
If an attacked creature has spell resistance, the resistance is checked
|
||
the first time Mage’s sword strikes it. If the sword is successfully
|
||
resisted, the spell is dispelled. If not, the sword has its normal full
|
||
effect on that creature for the duration of the spell.
|
||
|
||
Focus: A miniature platinum sword with a grip and pommel of copper and
|
||
zinc. It costs 250 gp to construct.
|
||
//:://////////////////////////////////////////////
|
||
//:: Spell Effects Applied / Notes
|
||
//:://////////////////////////////////////////////
|
||
It will use a new On Hit: Spell Cast At script to check spell resistance.
|
||
|
||
It summons the sword, it attacks, fair enough. It will, due to NwN's real-time
|
||
engine, move automatically to new targets within 8M of the caster.
|
||
//:://////////////////////////////////////////////
|
||
//:: Created By: Jasperre
|
||
//::////////////////////////////////////////////*/
|
||
|
||
#include "PHS_INC_SPELLS"
|
||
|
||
void main()
|
||
{
|
||
// Spell hook check.
|
||
if(!PHS_SpellHookCheck(PHS_SPELL_MAGES_SWORD)) return;
|
||
|
||
// Declare major variables
|
||
object oCaster = OBJECT_SELF;
|
||
location lTarget = GetSpellTargetLocation();
|
||
int nCasterLevel = PHS_GetCasterLevel();
|
||
int nMetaMagic = PHS_GetMetaMagicFeat();
|
||
|
||
// Get duration in rounds
|
||
float fDuration = PHS_GetDuration(PHS_ROUNDS, nCasterLevel, nMetaMagic);
|
||
|
||
// Declare visual effects
|
||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEUTRAL);
|
||
effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
|
||
|
||
// Signal spell cast at
|
||
PHS_SignalSpellCastAt(oCaster, PHS_SPELL_MAGES_SWORD, FALSE);
|
||
|
||
// Create the sword.
|
||
object oSword = CreateObject(OBJECT_TYPE_CREATURE, PHS_CREATURE_RESREF_MAGES_SWORD, lTarget);
|
||
|
||
// Assign its new master
|
||
AddHenchman(oCaster, oSword);
|
||
|
||
// Apply the duration VFX
|
||
PHS_ApplyDurationAndVFX(oSword, eVis, eDur, fDuration);
|
||
|
||
// And add its appropriate attack bonus via. Leveling the creature up to level
|
||
// 20 (each level = +1 natural attack!).
|
||
int nStat;
|
||
// Check if it was cast from an item
|
||
if(GetIsObjectValid(GetSpellCastItem()))
|
||
{
|
||
// Minimum bonus stat needed to cast the spell
|
||
nStat = 7;
|
||
}
|
||
else
|
||
{
|
||
// Else normal ability
|
||
nStat = PHS_LimitInteger(PHS_GetAppropriateAbilityBonus(), 20);
|
||
}
|
||
|
||
// Apply level up
|
||
if(nStat > 1)
|
||
{
|
||
int nCnt;
|
||
int nPackage = GetCreatureStartingPackage(oSword);
|
||
for(nCnt = 1; nCnt < nStat; nCnt++)
|
||
{
|
||
// Always stop if it doesn't work.
|
||
if(LevelUpHenchman(oSword, CLASS_TYPE_MAGICAL_FORCE, FALSE, nPackage) == 0)
|
||
{
|
||
// Debug
|
||
SendMessageToPC(oCaster, "Debug: Uh-oh, magical sword didn't level...");
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|