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