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.
78 lines
2.5 KiB
Plaintext
78 lines
2.5 KiB
Plaintext
/*
|
|
----------------
|
|
Ballista Throw
|
|
|
|
tob_stsn_blstthr.nss
|
|
----------------
|
|
|
|
05/12/07 by Stratovarius
|
|
*/ /** @file
|
|
|
|
Ballista Throw
|
|
|
|
Setting Sun (Strike)
|
|
Level: Swordsage 6
|
|
Prerequisite: Two Setting Sun maneuvers
|
|
Initiation Action: 1 Standard Action
|
|
Range: Melee Attack.
|
|
Target: One Creature.
|
|
|
|
You grab your opponent and spin him like a top, swinging him around before throwing him
|
|
at your opponents like a bolt from a ballista
|
|
|
|
Make a trip attempt against your target. You get a +4 bonus on this attempt and cannot be tripped
|
|
if you fail on this attempt. If you succeed on the check, your enemy is thrown in a 60 foot line. The target
|
|
and all creatures in the line take 6d6 damage.
|
|
*/
|
|
|
|
#include "tob_inc_move"
|
|
#include "tob_movehook"
|
|
#include "prc_inc_combmove"
|
|
|
|
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)
|
|
{
|
|
// Trip attempt
|
|
int nSucceed = DoTrip(oInitiator, oTarget, 4, FALSE, FALSE);
|
|
// If you succeed, toss em away 60 feet and knock em down
|
|
if (nSucceed)
|
|
{
|
|
float fDist = 60.0;
|
|
|
|
// Find the target to be tossed into
|
|
int nStop = FALSE;
|
|
location lTarget = GetLocation(oTarget);
|
|
vector vOrigin = GetPosition(oInitiator);
|
|
object oAreaTarget = MyFirstObjectInShape(SHAPE_SPELLCYLINDER, FeetToMeters(60.0), lTarget, TRUE, OBJECT_TYPE_CREATURE, vOrigin);
|
|
while(GetIsObjectValid(oAreaTarget) && !nStop)
|
|
{
|
|
// No hitting yourself or your friends, and they need to be within hitting range.
|
|
if(oTarget != oAreaTarget && GetIsEnemy(oAreaTarget, oInitiator))
|
|
{
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(d6(6)),oAreaTarget);
|
|
}// end if - Target validity check
|
|
|
|
// Get next target
|
|
oAreaTarget = MyNextObjectInShape(SHAPE_SPELLCYLINDER, FeetToMeters(60.0), lTarget, TRUE, OBJECT_TYPE_CREATURE, vOrigin);
|
|
}// end while - Target loop
|
|
|
|
// Knock em down
|
|
_DoBullRushKnockBack(oTarget, oInitiator, fDist);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(EffectKnockdown()), oTarget, 6.0);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(d6(6)), oTarget);
|
|
}
|
|
}
|
|
} |