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.
		
			
				
	
	
		
			97 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*:://////////////////////////////////////////////
 | |
| //:: Spell Name Divine Power
 | |
| //:: Spell FileName phs_s_divinepowr
 | |
| //:://////////////////////////////////////////////
 | |
| //:: In Game Spell desctiption
 | |
| //:://////////////////////////////////////////////
 | |
|     Range: Personal Target: You Duration: 1 round/level
 | |
| 
 | |
|     Calling upon the divine power of your patron, you imbue yourself with
 | |
|     strength and skill in combat. Your base attack bonus becomes equal to your
 | |
|     character level (which may give you additional attacks), you gain a +6
 | |
|     enhancement bonus to Strength, and you gain 1 temporary hit point per caster
 | |
|     level.
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Spell Effects Applied / Notes
 | |
| //:://////////////////////////////////////////////
 | |
|     As spell description. :-)
 | |
| 
 | |
|     We apply it better then the NwN way.
 | |
| 
 | |
|     We can use GetBaseAttackBonus :-D
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Created By: Jasperre
 | |
| //::////////////////////////////////////////////*/
 | |
| 
 | |
| #include "PHS_INC_SPELLS"
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     // Spell Hook Check
 | |
|     if(!PHS_SpellHookCheck(PHS_SPELL_DIVINE_POWER)) return;
 | |
| 
 | |
|     // Delcare major variables
 | |
|     object oCaster = OBJECT_SELF;
 | |
|     object oTarget = GetSpellTargetObject();// Should be OBJECT_SELF
 | |
|     int nCasterLevel = PHS_GetCasterLevel();
 | |
|     int nMetaMagic = PHS_GetMetaMagicFeat();
 | |
| 
 | |
|     // Broken the rule of order (well, not really a rule) but we MUST remove
 | |
|     // the spells effects first.
 | |
| 
 | |
|     // Remove pervious castings of it
 | |
|     PHS_RemoveSpellEffectsFromTarget(PHS_SPELL_DIVINE_POWER, oTarget);
 | |
| 
 | |
|     // Get old BAB
 | |
|     int nOldBAB = GetBaseAttackBonus(oTarget);
 | |
| 
 | |
|     // Make sure they are not immune to spells
 | |
|     if(PHS_TotalSpellImmunity(oTarget)) return;
 | |
| 
 | |
|     // Get duration in rounds
 | |
|     float fDuration = PHS_GetDuration(PHS_ROUNDS, nCasterLevel, nMetaMagic);
 | |
| 
 | |
|     // Calculate the extra BAB we should add for extra attacks
 | |
|     // - Based on character level (Hit dice) of the caster
 | |
|     int nNewBAB = GetHitDice(oTarget) - nOldBAB;;
 | |
| 
 | |
|     int nNewAttack = nNewBAB;
 | |
|     if(nNewAttack > 10) nNewAttack = 10;
 | |
| 
 | |
|     // Extra attacks. Get 1 per 5 levels, min of 1, so have new BAB take old BAB.
 | |
|     int nExtraAttacks = (PHS_LimitInteger(nNewBAB/5) - PHS_LimitInteger(nOldBAB/5));
 | |
|     if(nExtraAttacks > 5) nExtraAttacks = 5;
 | |
| 
 | |
|     // Declare effects
 | |
|     effect eVis = EffectVisualEffect(VFX_IMP_SUPER_HEROISM);
 | |
|     effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
 | |
|     effect eStrength = EffectAbilityIncrease(ABILITY_STRENGTH, 6);
 | |
|     effect eHP = EffectTemporaryHitpoints(nCasterLevel);
 | |
|     effect eAttack = EffectAttackIncrease(nNewAttack);
 | |
| 
 | |
|     effect eLink = EffectLinkEffects(eCessate, eHP);
 | |
|     // We add the strength link only if we will havn't got any 6 or more bonuses
 | |
|     // to strength
 | |
|     if(PHS_GetHasAbilityBonusOfPower(oTarget, ABILITY_STRENGTH, 6) == 0)
 | |
|     {
 | |
|         eLink = EffectLinkEffects(eLink, eStrength);
 | |
|     }
 | |
|     eLink = EffectLinkEffects(eLink, eAttack);
 | |
| 
 | |
|     // If no extra attacks, we do not use eExtraAttacks
 | |
|     if(nExtraAttacks > 0)
 | |
|     {
 | |
|         effect eExtraAttacks = EffectModifyAttacks(nExtraAttacks);
 | |
|         eLink = EffectLinkEffects(eLink, eExtraAttacks);
 | |
|     }
 | |
| 
 | |
|     // Remove any bonuses to strength of 5 or under.
 | |
|     PHS_RemoveAnyAbilityBonuses(oTarget, ABILITY_STRENGTH, 5);
 | |
| 
 | |
|     //Fire cast spell at event for the specified target
 | |
|     PHS_SignalSpellCastAt(oTarget, PHS_SPELL_DIVINE_POWER, FALSE);
 | |
| 
 | |
|     // Apply VNF and effect.
 | |
|     PHS_ApplyDurationAndVFX(oTarget, eVis, eLink, fDuration);
 | |
| }
 |