PRC8/nwn/nwnprc/trunk/newspellbook/tob_tgcw_swpdrg.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
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.
2024-02-11 14:01:05 -05:00

104 lines
4.5 KiB
Plaintext

//////////////////////////////////////////////////
// Swooping Dragon Strike
// Tiger Claw (Strike)
// tob_tgcw_swpdrg.nss
//////////////////////////////////////////////////
/** @file Swooping Dragon Strike
Tiger Claw (Strike)
Level: Swordsage 7, warblade 7
Prerequisite: Three Tiger Claw maneuvers
Initiation Action: 1 standard action
Range: Melee attack
Target: One creature
Saving Throw: Fortitude partial
Like a dragon you swoop down upon you foe and let loose with a devastating attack. You
leap over her and, as you soar through the air, unleash a devastating volley of attacks.
You leap over an opponent and chop down at her, ruining her defenses and striking with a
critical blow.
As part of this maneuver, you attempt a Jump check to leap over your target. The result
of this Jump check must be sufficient to allow you to move through an opponent's space
and over her. If you fail the Jump check needed to jump over your foe, you provoke attacks
of opportunity for the distance you jump, if applicable. If your jump was too short to clear
your opponent but far enough that you would land in a space she occupies, you land adjacent
to your opponent in the square closest to your starting square.
If your check is insufficient to jump over your target, you can also make a single attack
against your foe with no special benefits or penalties, as long as your target is within reach.
If the check succeeds, you do not provoke attacks of opportunity for leaving threatened
squares during your jump. Your foe loses her Dexterity bonus to AC against your melee attack.
This attack deals an extra 10d6 points of damage, and the target must succeed on a Fortitude
save (DC equal to your Jump check result) or be stunned for 1 round.
*/
#include "tob_inc_move"
#include "tob_movehook"
#include "prc_inc_combmove"
void TOBAttack(object oTarget, object oInitiator, int iJumpRoll)
{
object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oInitiator);
effect eNone;
int nAB = GetAbilityModifier(ABILITY_DEXTERITY, oTarget);
int nBonus = TOBSituationalAttackBonuses(oInitiator, DISCIPLINE_TIGER_CLAW);
DelayCommand(0.0, PerformAttack(oTarget, oInitiator, eNone, 0.0, nAB + nBonus, d6(10), GetWeaponDamageType(oWeap), "Swooping Dragon Strike Hit", "Swooping Dragon Strike Miss"));
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
{
// Saving Throw
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, iJumpRoll))
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectStunned(), oTarget, RoundsToSeconds(1));
}
}
}
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)
{
int iJumpRoll = d20() + GetSkillRank(SKILL_JUMP, oInitiator) + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
int nDC = 12;
int nSizePenalty;
int nSize = PRCGetCreatureSize(oTarget);
effect eNone;
if(nSize == CREATURE_SIZE_MEDIUM) nSizePenalty = 5;
if(nSize == CREATURE_SIZE_LARGE) nSizePenalty = 10;
if(nSize == CREATURE_SIZE_HUGE) nSizePenalty = 15;
if(nSize == CREATURE_SIZE_GARGANTUAN) nSizePenalty = 20;
if(nSize == CREATURE_SIZE_COLOSSAL) nSizePenalty = 25;
nDC += nSizePenalty;
if(iJumpRoll >= nDC)
{
AssignCommand(oTarget, ClearAllActions(TRUE));
effect eJump = EffectDisappearAppear(GetLocation(oTarget));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eJump, oInitiator, 3.1);
DelayCommand(0.0, TOBAttack(oTarget, oInitiator, iJumpRoll));
}
else
{
FloatingTextStringOnCreature("Jump check failed.", oInitiator);
DelayCommand(0.0, PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, 0, 0, "Hit", "Miss"));
}
DelayCommand(0.1, TigerBlooded(oInitiator, oTarget));
}
}