PRC8/nwn/nwnprc/trunk/newspellbook/tob_wtrn_tacstrk.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

76 lines
2.3 KiB
Plaintext

/*
----------------
Tactical Strike
tob_wtrn_tacstrk.nss
----------------
08/06/07 by Stratovarius
*/ /** @file
Tactical Strike
White Raven (Strike)
Level: Crusader 2, Warblade 2
Initiation Action: 1 Standard Action
Range: Melee Attack
Target: One Creature
A faint numbus of sickly grey shadow surrounds your weapon.
When you attack, this shadowy aura flows into the wound you
inflict, sapping your opponent's strength, vitality, and energy.
Make a single melee attack. If you succesfully hit the creature, all allies gain
a 5' boost to movement speed for one round.
*/
#include "tob_inc_move"
#include "tob_movehook"
//#include "prc_alterations"
void TOBAttack(object oTarget, object oInitiator)
{
effect eNone;
object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oInitiator);
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, d6(2), GetWeaponDamageType(oWeap), "Tactical Strike Hit", "Tactical Strike Miss");
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
{
location lTarget = PRCGetSpellTargetLocation();
//Cycle through the targets within the spell shape until you run out of targets.
object oAreaTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, lTarget, TRUE, OBJECT_TYPE_CREATURE);
while(GetIsObjectValid(oAreaTarget))
{
if (GetIsFriend(oAreaTarget, oInitiator))
{
// 1/6th increase: 16.6 = 17.
// Not really a 5' step, I know,but oh well.
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(EffectMovementSpeedIncrease(17)), oAreaTarget, 6.0);
}
//Select the next target within the spell shape.
oAreaTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, lTarget, TRUE, OBJECT_TYPE_CREATURE);
}// end while - Target loop
}
}
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)
{
DelayCommand(0.0, TOBAttack(oTarget, oInitiator));
}
}