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;
 | 
						||
            }
 | 
						||
        }
 | 
						||
    }
 | 
						||
}
 |