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.
120 lines
4.7 KiB
Plaintext
120 lines
4.7 KiB
Plaintext
/*
|
|
----------------
|
|
White Raven Tactics
|
|
|
|
tob_wtrn_whtrvnt.nss
|
|
----------------
|
|
|
|
18/08/07 by Stratovarius
|
|
*/ /** @file
|
|
|
|
White Raven Tactics
|
|
|
|
Iron Heart (Boost)
|
|
Level: Crusader 3, Warblade 3
|
|
Initiation Action: 1 Swift Action
|
|
Range: 10 ft.
|
|
Target: One ally
|
|
|
|
You can inspire your allies to astounding feats of martial prowess
|
|
With a few short orders, you cajole them into seizing the initiative
|
|
and driving back the enemy.
|
|
|
|
Your ally gets to go again this turn. You cannot target yourself with this maneuver.
|
|
*/
|
|
|
|
#include "tob_inc_move"
|
|
#include "tob_movehook"
|
|
//#include "prc_alterations"
|
|
|
|
//inc_vfx_const
|
|
|
|
// Needed for applying time stop effects directly to Initator & Target when PRC_TIMESTOP_LOCAL flag is set
|
|
//#include "inc_timestop"
|
|
|
|
void main()
|
|
{
|
|
if(!PreManeuverCastCode()) return;
|
|
|
|
object oInitiator = OBJECT_SELF;
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
|
|
if(oInitiator == oTarget)
|
|
{
|
|
FloatingTextStringOnCreature("White Raven Tactics may not be used on yourself.", oInitiator, FALSE);
|
|
return;
|
|
}
|
|
|
|
struct maneuver move = EvaluateManeuver(oInitiator, oTarget);
|
|
float fDuration = RoundsToSeconds(1); // One Combat Round
|
|
|
|
if(move.bCanManeuver)
|
|
{
|
|
effect eTime;
|
|
|
|
// Create visual effect for the target
|
|
effect eVisTarget = EffectVisualEffect(PSI_DUR_TEMPORAL_ACCELERATION);
|
|
|
|
// Apply impact VFX (Impact must be done before global Timestop effect, or impact is frozen too)
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HASTE), oTarget);
|
|
|
|
// PRC_TIMESTOP_LOCAL (VFX_PER_NEW_TIMESTOP) alwasy applies its effects to all creatures except the *caster* (oInitiator),
|
|
// and the target passed into it via a local on the caster, so we need to manually freeze the Initiator and set the Target.
|
|
if(GetPRCSwitch(PRC_TIMESTOP_LOCAL))
|
|
{
|
|
//Create extraordinary Time Stop effect
|
|
eTime = ExtraordinaryEffect(EffectAreaOfEffect(VFX_PER_NEW_TIMESTOP));
|
|
|
|
// Link Ethereal and the duration visuals
|
|
eVisTarget = EffectLinkEffects(eVisTarget, EffectEthereal());
|
|
|
|
// Set a local object on the creator/Initator to make the Target exempt from the time stop effect
|
|
SetLocalObject(oInitiator, "PRC_WRT_TARGET", oTarget);
|
|
|
|
// Directly apply a temporary freeze to the Initator
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectLinkEffects(EffectVisualEffect(VFX_DUR_FREEZE_ANIMATION), EffectCutsceneParalyze()), oInitiator, fDuration);
|
|
SetCommandable(FALSE, oInitiator); // If this does not prevent move recovery during the time stop round, then remove it
|
|
DelayCommand(fDuration, SetCommandable(TRUE, oInitiator));
|
|
// Not performing blank screen since, thematically, the effect is the Initator giving the Target orders, so teh initator shooudl be aware of what the target does
|
|
// Blank screen and delayed Blank screen removal could be placed here
|
|
|
|
// Apply area effect to initator instead of target, so it is not removed incorrectly
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eTime, oInitiator, fDuration);
|
|
|
|
// Apply visual & Ethereal effects to the target
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVisTarget, oTarget, fDuration);
|
|
|
|
// Apply the time stop impact VFX (Cannot be used with bioware time stop, since it freezes the VFX animation until the timestop is over)
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_TIME_STOP_DN_ORANGE), GetLocation(oInitiator));
|
|
|
|
//AssignCommand(oTarget,ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVisTarget, oTarget, fDuration));
|
|
|
|
// Clean up
|
|
DelayCommand(fDuration, DeleteLocalObject(oInitiator, "PRC_WRT_TARGET"));
|
|
}
|
|
else
|
|
{
|
|
//Create extraordinary Time Stop effect
|
|
eTime = ExtraordinaryEffect(EffectTimeStop());
|
|
|
|
// Link up the visual effects
|
|
eTime = EffectLinkEffects(eTime, eVisTarget);
|
|
// Apply effect directly to target
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eTime, oTarget, fDuration);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
// recolored time stop VFX
|
|
const int VFX_IMP_TIME_STOP_DN_SOUNDFX = 1049;
|
|
const int VFX_IMP_TIME_STOP_DN_RED = 1050;
|
|
const int VFX_IMP_TIME_STOP_DN_ORANGE = 1051;
|
|
const int VFX_IMP_TIME_STOP_DN_YELLOW = 1052;
|
|
const int VFX_IMP_TIME_STOP_DN_GREEN = 1053;
|
|
const int VFX_IMP_TIME_STOP_DN_BLUE = 1054;
|
|
const int VFX_IMP_TIME_STOP_DN_PURPLE = 1055;
|
|
const int VFX_IMP_TIME_STOP_DN_SILENT = 1056;
|
|
*/ |