Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
103 lines
3.1 KiB
Plaintext
103 lines
3.1 KiB
Plaintext
/*
|
|
----------------
|
|
Iron Heart Surge
|
|
|
|
tob_irnh_ihsrg.nss
|
|
----------------
|
|
|
|
15/07/07 by Stratovarius
|
|
*/ /** @file
|
|
|
|
Iron Heart Surge
|
|
|
|
Iron Heart
|
|
Level: Warblade 3
|
|
Prerequisite: One Iron Heart maneuver.
|
|
Initiation Action: 1 Standard Action
|
|
Range: Personal
|
|
Target: You
|
|
Duration: 1 round.
|
|
|
|
By drawing on your mental strength and physical fortitude, you break free
|
|
of a debilitating state that might otherwise defeat you.
|
|
|
|
You remove one negative status effect on you, and gain a +2 bonus to attacks for one round.
|
|
*/
|
|
|
|
#include "tob_inc_move"
|
|
#include "tob_movehook"
|
|
|
|
int IronHeartCheck(int nSpellId)
|
|
{
|
|
switch (nSpellId)
|
|
{
|
|
case SPELL_POWER_ATTACK1:
|
|
case SPELL_POWER_ATTACK2:
|
|
case SPELL_POWER_ATTACK3:
|
|
case SPELL_POWER_ATTACK4:
|
|
case SPELL_POWER_ATTACK5:
|
|
case SPELL_POWER_ATTACK6:
|
|
case SPELL_POWER_ATTACK7:
|
|
case SPELL_POWER_ATTACK8:
|
|
case SPELL_POWER_ATTACK9:
|
|
case SPELL_POWER_ATTACK10:
|
|
case SPELL_INTUITIVE_ATK:
|
|
case MOVE_IH_PUNISHING_STANCE:
|
|
case MOVE_DM_STANCE_OF_CLARITY:
|
|
case POWER_EXPANSION:
|
|
|
|
return FALSE;
|
|
break;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
if (!PreManeuverCastCode())
|
|
{
|
|
// If code within the PreManeuverCastCode (i.e. UMD) reports FALSE, do not run this spell
|
|
return;
|
|
}
|
|
|
|
// End of Spell Cast Hook
|
|
|
|
object oInitiator = OBJECT_SELF;
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
struct maneuver move = EvaluateManeuver(oInitiator, oTarget);
|
|
|
|
if(move.bCanManeuver)
|
|
{
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SOUL_TRAP), oTarget);
|
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectAttackIncrease(2), oTarget, 6.0);
|
|
|
|
int nStop = FALSE;
|
|
effect eBad = GetFirstEffect(oTarget);
|
|
//Search for negative effects
|
|
while(GetIsEffectValid(eBad) && !nStop)
|
|
{
|
|
int nInt = GetEffectSpellId(eBad);
|
|
if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_DEAF ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_PARALYZE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL)
|
|
{
|
|
//Remove effect if it is negative.
|
|
if(IronHeartCheck(nInt))
|
|
{
|
|
RemoveEffect(oTarget, eBad);
|
|
nStop = TRUE; // One effect only
|
|
}
|
|
}
|
|
eBad = GetNextEffect(oTarget);
|
|
}
|
|
}
|
|
} |