Clear out experimental .35 files
Clear out experimental .35 files
This commit is contained in:
@@ -1,139 +0,0 @@
|
||||
/*
|
||||
----------------
|
||||
Wolf Pack Tactics
|
||||
|
||||
tob_tgcw_wlfpck.nss
|
||||
----------------
|
||||
|
||||
11/12/07 by Stratovarius
|
||||
*/ /** @file
|
||||
|
||||
Wolf Pack Tactics
|
||||
|
||||
Tiger Claw (Stance)
|
||||
Level: Swordsage 8, Warblade 8
|
||||
Prerequisite: Two Tiger Claw maneuvers
|
||||
Initiation Action: 1 Swift Action
|
||||
Range: Personal
|
||||
Target: You
|
||||
Duration: Stance
|
||||
|
||||
With each stinging attach that connects against a foe, you slip around him, using the
|
||||
distraction provided by your attacks to prevent him from hindering your movement.
|
||||
|
||||
While you are in this stance, you gain a 5 foot bonus to movement for every succesful attack,
|
||||
up to a maximum of 30 feet. This bonus applies the round after the hits strike.
|
||||
*/
|
||||
|
||||
#include "tob_inc_move"
|
||||
#include "tob_movehook"
|
||||
//#include "prc_alterations"
|
||||
|
||||
void WolfPackTactics()
|
||||
{
|
||||
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)
|
||||
{
|
||||
object oItem = IPGetTargetedOrEquippedMeleeWeapon();
|
||||
// Add the OnHit
|
||||
IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
effect eDur = ExtraordinaryEffect(EffectVisualEffect(PSI_DUR_BURST));
|
||||
if (GetLevelByClass(CLASS_TYPE_BLOODCLAW_MASTER, oInitiator) >= 2)
|
||||
{
|
||||
eDur = EffectLinkEffects(eDur, EffectMovementSpeedIncrease(33));
|
||||
eDur = EffectLinkEffects(eDur, EffectACIncrease(1));
|
||||
}
|
||||
if (GetLocalInt(oInitiator, "TigerFangSharpClaw")) eDur = EffectLinkEffects(eDur, EffectDamageIncrease(DAMAGE_BONUS_1, DAMAGE_TYPE_BASE_WEAPON));
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(eDur), oTarget);
|
||||
AddEventScript(oInitiator, EVENT_ONHEARTBEAT, "tob_tgcw_wlfpck", TRUE, FALSE);
|
||||
AddEventScript(oItem, EVENT_ONHIT, "tob_tgcw_wlfpck", TRUE, FALSE);
|
||||
SetLocalObject(oInitiator, "WolfPackWeapon", oItem);
|
||||
}
|
||||
}
|
||||
|
||||
void WolfPackOnHit()
|
||||
{
|
||||
object oInitiator = OBJECT_SELF;
|
||||
object oItem = GetSpellCastItem();
|
||||
object oTarget = PRCGetSpellTargetObject();
|
||||
if(DEBUG) DoDebug("tob_tgcw_wlfpck: OnHit:\n"
|
||||
+ "oPC = " + DebugObject2Str(oInitiator) + "\n"
|
||||
+ "oItem = " + DebugObject2Str(oItem) + "\n"
|
||||
+ "oTarget = " + DebugObject2Str(oTarget) + "\n"
|
||||
);
|
||||
|
||||
// Only applies to weapons
|
||||
if(GetBaseItemType(oItem) != BASE_ITEM_ARMOR && GetHasSpellEffect(MOVE_TC_WOLF_PACK_TACTICS, oInitiator))
|
||||
{
|
||||
// Get the number of completed attacks this round and increment
|
||||
int nCount = GetLocalInt(oInitiator, "WolfPackTactics");
|
||||
SetLocalInt(oInitiator, "WolfPackTactics", nCount + 1);
|
||||
}
|
||||
// Target has no spell effect, so clean up.
|
||||
else if (!GetHasSpellEffect(MOVE_TC_WOLF_PACK_TACTICS, oInitiator))
|
||||
{
|
||||
// Clean up the scripts
|
||||
object oWeap = GetLocalObject(oInitiator, "WolfPackWeapon");
|
||||
RemoveEventScript(oWeap, EVENT_ITEM_ONHIT, "tob_tgcw_wlfpck", TRUE, TRUE);
|
||||
RemoveEventScript(oItem, EVENT_ITEM_ONHIT, "tob_tgcw_wlfpck", TRUE, TRUE);
|
||||
RemoveEventScript(oInitiator, EVENT_ONHEARTBEAT, "tob_tgcw_wlfpck", TRUE, TRUE);
|
||||
DeleteLocalObject(oInitiator, "WolfPackWeapon");
|
||||
}
|
||||
}
|
||||
|
||||
void WolfPackOnHB()
|
||||
{
|
||||
object oInitiator = OBJECT_SELF;
|
||||
object oItem = GetLocalObject(oInitiator, "WolfPackWeapon");
|
||||
|
||||
if(GetHasSpellEffect(MOVE_TC_WOLF_PACK_TACTICS, oInitiator))
|
||||
{
|
||||
// Get the number of completed attacks this round and then reset
|
||||
int nCount = GetLocalInt(oInitiator, "WolfPackTactics");
|
||||
DeleteLocalInt(oInitiator, "WolfPackTactics");
|
||||
|
||||
// Max of +30 feet a round/6 attacks
|
||||
if (nCount > 6) nCount = 6;
|
||||
// Uses a percent bonus, hence the multiplier
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectMovementSpeedIncrease(17*nCount), oInitiator, 6.0);
|
||||
}
|
||||
// Target has no spell effect, so clean up.
|
||||
else if (!GetHasSpellEffect(MOVE_TC_WOLF_PACK_TACTICS, oInitiator))
|
||||
{
|
||||
// Clean up the scripts
|
||||
RemoveEventScript(oItem, EVENT_ITEM_ONHIT, "tob_tgcw_wlfpck", TRUE, TRUE);
|
||||
RemoveEventScript(oInitiator, EVENT_ONHEARTBEAT, "tob_tgcw_wlfpck", TRUE, TRUE);
|
||||
DeleteLocalObject(oInitiator, "WolfPackWeapon");
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
int nEvent = GetRunningEvent();
|
||||
if(DEBUG) DoDebug("tob_tgcw_wlfpck running, event: " + IntToString(nEvent));
|
||||
|
||||
// We aren't being called from any event, instead from the maneuver being activated
|
||||
if(nEvent == FALSE)
|
||||
{
|
||||
WolfPackTactics();
|
||||
}
|
||||
else if(nEvent == EVENT_ITEM_ONHIT)
|
||||
{
|
||||
WolfPackOnHit();
|
||||
}
|
||||
else if(nEvent == EVENT_ONHEARTBEAT)
|
||||
{
|
||||
WolfPackOnHB();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user