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.
73 lines
2.2 KiB
Plaintext
73 lines
2.2 KiB
Plaintext
/*
|
|
----------------
|
|
Salamander Charge
|
|
|
|
tob_dw_slmdrchrg.nss
|
|
----------------
|
|
|
|
19/08/07 by Stratovarius
|
|
*/ /** @file
|
|
|
|
Salamander Charge
|
|
|
|
Desert Wind (Strike) [Fire]
|
|
Level: Swordsage 7
|
|
Prerequisite: Three Desert Wind maneuvers
|
|
Initiation Action: 1 Full-round action
|
|
Range: Personal
|
|
Target: You
|
|
Duration: Instantaneous, see text
|
|
|
|
You spin and tumble about the battlefield, a wall of raging flame marking your steps.
|
|
|
|
You charge your foe. In the space across which you charge, a wall of fire appears, dealing 6d6 damage to all who enter.
|
|
This wall lasts for 5 rounds.
|
|
This is a supernatural maneuver.
|
|
*/
|
|
|
|
#include "tob_inc_move"
|
|
#include "tob_movehook"
|
|
#include "prc_inc_combmove"
|
|
|
|
location FindLocation(object oTarget, object oInitiator);
|
|
|
|
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)
|
|
{
|
|
// Yup, thats it.
|
|
int nDamage;
|
|
if (GetLocalInt(oInitiator, "DesertFire")) nDamage += d6();
|
|
DoCharge(oInitiator, oTarget, TRUE, TRUE, nDamage);
|
|
effect eAOE = EffectAreaOfEffect(AOE_PER_SALAMANDER_CHARGE);
|
|
location lTarget = FindLocation(oTarget, oInitiator);
|
|
// So you run over it first
|
|
DelayCommand(3.0, ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eAOE, lTarget, 30.0));
|
|
}
|
|
}
|
|
|
|
location FindLocation(object oTarget, object oInitiator)
|
|
{
|
|
// Calculate location
|
|
float fDistance = GetDistanceBetween(oTarget, oInitiator);
|
|
location lInitiator = GetLocation(oInitiator);
|
|
location lTargetOrigin = GetLocation(oTarget);
|
|
vector vAngle = AngleToVector(GetRelativeAngleBetweenLocations(lInitiator, lTargetOrigin));
|
|
vector vTargetOrigin = GetPosition(oTarget);
|
|
// Half the distance
|
|
vector vTarget = vTargetOrigin + (vAngle * (fDistance/2));
|
|
|
|
return lTargetOrigin = Location(GetArea(oTarget), vTarget, GetFacing(oTarget));
|
|
} |