Clear out experimental .35 files
Clear out experimental .35 files
This commit is contained in:
@@ -1,109 +0,0 @@
|
||||
/*
|
||||
----------------
|
||||
Island of Blades
|
||||
|
||||
tob_sdhd_islebld.nss
|
||||
----------------
|
||||
|
||||
01/04/07 by Stratovarius
|
||||
*/ /** @file
|
||||
|
||||
Island of Blades
|
||||
|
||||
Shadow Hand (Stance)
|
||||
Level: Swordsage 1
|
||||
Initiation Action: 1 Swift Action
|
||||
Range: Personal.
|
||||
Target: You.
|
||||
Duration: Stance.
|
||||
|
||||
You cloak yourself in a swirling nimbus of shadow energy. These shadows spin
|
||||
and flow around you, preventing any creature near you from being able to
|
||||
anticipate your attacks.
|
||||
|
||||
If both you and an ally are in melee range of the same creature, you gain a
|
||||
+2 bonus to attack rolls.
|
||||
*/
|
||||
|
||||
#include "prc_inc_combat"
|
||||
#include "tob_inc_move"
|
||||
#include "tob_movehook"
|
||||
|
||||
void DoMeleeRangeCheck(object oPC, int nMoveId);
|
||||
|
||||
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)
|
||||
{
|
||||
// Apply a marker effect
|
||||
effect eLink = ExtraordinaryEffect(EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE));
|
||||
if (GetHasDefensiveStance(oInitiator, DISCIPLINE_SHADOW_HAND))
|
||||
eLink = EffectLinkEffects(eLink, EffectSavingThrowIncrease(SAVING_THROW_ALL, 2, SAVING_THROW_TYPE_ALL));
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget);
|
||||
|
||||
DoMeleeRangeCheck(oInitiator, move.nMoveId);
|
||||
}
|
||||
}
|
||||
|
||||
void DoMeleeRangeCheck(object oPC, int nMoveId)
|
||||
{
|
||||
location lTarget = GetLocation(oPC);
|
||||
object oAreaTarget;
|
||||
// Flip through your enemies, seeing if there is one both in melee range of you and an ally
|
||||
object oAreaFriend = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
||||
while(GetIsObjectValid(oAreaFriend))
|
||||
{
|
||||
// First, find the nearest ally
|
||||
if(oAreaFriend != oPC && // Can't be you
|
||||
GetIsFriend(oAreaFriend, oPC)) // Gotta be a friend
|
||||
{
|
||||
// Now we need to loop through valid enemies
|
||||
oAreaTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
||||
while(GetIsObjectValid(oAreaTarget))
|
||||
{
|
||||
// Find the nearest valid target
|
||||
if(oAreaTarget != oPC && // Can't be you
|
||||
oAreaTarget != oAreaFriend && // Can't be your friend
|
||||
GetIsInMeleeRange(oPC, oAreaTarget) && // They must be in melee range
|
||||
GetIsInMeleeRange(oAreaFriend, oAreaTarget) && // And with your friend
|
||||
GetIsEnemy(oAreaTarget, oPC)) // Gotta be an enemy
|
||||
{
|
||||
// Now we apply the bonuses to both of you
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_HOLY);
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oAreaFriend);
|
||||
effect eLink = ExtraordinaryEffect(EffectAttackIncrease(2));
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, 6.0);
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oAreaFriend, 6.0);
|
||||
|
||||
|
||||
}
|
||||
//Select the next target within the spell shape.
|
||||
oAreaTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
||||
}
|
||||
}
|
||||
|
||||
//Select the next target within the spell shape.
|
||||
oAreaFriend = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
||||
}
|
||||
|
||||
// If they still have the spell, keep going
|
||||
if (GetHasSpellEffect(nMoveId, oPC))
|
||||
{
|
||||
DelayCommand(6.0, DoMeleeRangeCheck(oPC, nMoveId));
|
||||
if(DEBUG) DoDebug("DoMeleeRangeCheck: DelayCommand(6.0, DoMeleeRangeCheck(oPC, nMoveId)).");
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user