Added Inscribe Epic Runes. Added Great Intelligence and Inscribe Epic Runes as Runecaster epic bons feats. Changed Runecaster epic bonus feat progression to 1 every 4 levels past 10th. Bardic PrCs should be able to take Lingering Song & Extra Music as general feats. Forsakers can't use psionics, invocations, spellfire, shadowcasting, truenaming, binding, soulmelds or Supernatural Martial Maneuvers. Fixed elven courtblade / ambidexterity bug. Added more guardrails to prevent self-damage from onHit spells during PerformAttack(). Updated GetProperTarget() Removed ableist slur. RHD casters should work with JPM now. Reworked Blood in the Water's effect icon. Fixed Seize Item's VFX. RHD casters should be able to enter Dragon Disciple. Sharp Note doesn't step on Dragonfire Inspiration anymore.
153 lines
5.3 KiB
Plaintext
153 lines
5.3 KiB
Plaintext
/*
|
||
----------------
|
||
Blood in the Water
|
||
|
||
tob_tgcw_bldwtr.nss
|
||
----------------
|
||
|
||
27/04/07 by Stratovarius
|
||
*/ /** @file
|
||
|
||
Blood in the Water
|
||
|
||
Tiger Claw (Stance)
|
||
Level: Swordsage 1, Warblade 1
|
||
Initiation Action: 1 Swift Action
|
||
Range: Personal.
|
||
Target: You.
|
||
Duration: Stance.
|
||
|
||
The smell of blood drives you into a fury. As you slash into your foe,
|
||
each fresh wound you inflict spurs you onward.
|
||
|
||
Whenever you successfully critical hit a creature, you gain a +1
|
||
Attack and Damage bonus for one minute.
|
||
|
||
DEV NOTE: This *should* process on undead & constructs
|
||
Magic Items and Critical Hits (Dungeon Masters Guide Pg. 222)
|
||
|
||
Magic Weapons and Critical Hits: Some weapon qualities and some
|
||
specific weapons have an extra effect on a critical hit. A flaming
|
||
burst weapon, for example, does extra fire damage on a critical hit.
|
||
This special effect functions against creatures not subject to
|
||
critical hits, such as undead, elementals, and constructs. When
|
||
fighting against such creatures, roll for critical hits as you
|
||
would against humanoids or any other creature subject to critical
|
||
hits. On a successful critical roll, apply the special effect, but
|
||
do not multiply the weapon’s regular damage.
|
||
|
||
Things in the ToB that work on critical hits specify they do not
|
||
work on things that are unaffected by critical hits (i.e., Feral
|
||
Death Blow & Flesh Ripper); this one does not.
|
||
|
||
*/
|
||
|
||
#include "tob_inc_move"
|
||
#include "tob_movehook"
|
||
//#include "prc_alterations"
|
||
|
||
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)
|
||
{
|
||
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
|
||
);
|
||
|
||
// build stance effects
|
||
effect eDur;
|
||
effect eTmp;
|
||
int nHasEffect = 0;
|
||
|
||
// --- add harmless anchor so chain persists ---
|
||
//eDur = EffectLinkEffects(EffectAttackIncrease(1), EffectAttackDecrease(1));
|
||
eDur = EffectIcon(EFFECT_ICON_ATTACK_INCREASE);
|
||
nHasEffect = 1;
|
||
|
||
if (GetHasDefensiveStance(oInitiator, DISCIPLINE_TIGER_CLAW))
|
||
{
|
||
eTmp = EffectSavingThrowIncrease(SAVING_THROW_ALL, 2, SAVING_THROW_TYPE_ALL);
|
||
if (nHasEffect == 0) { eDur = eTmp; nHasEffect = 1; }
|
||
else eDur = EffectLinkEffects(eDur, eTmp);
|
||
}
|
||
|
||
if (GetLevelByClass(CLASS_TYPE_BLOODCLAW_MASTER, oInitiator) >= 2)
|
||
{
|
||
eTmp = EffectMovementSpeedIncrease(33);
|
||
if (nHasEffect == 0) { eDur = eTmp; nHasEffect = 1; }
|
||
else eDur = EffectLinkEffects(eDur, eTmp);
|
||
|
||
eTmp = EffectACIncrease(1);
|
||
if (nHasEffect == 0) { eDur = eTmp; nHasEffect = 1; }
|
||
else eDur = EffectLinkEffects(eDur, eTmp);
|
||
}
|
||
|
||
if (GetLocalInt(oInitiator, "TigerFangSharpClaw"))
|
||
{
|
||
eTmp = EffectDamageIncrease(DAMAGE_BONUS_1, DAMAGE_TYPE_BASE_WEAPON);
|
||
if (nHasEffect == 0) { eDur = eTmp; nHasEffect = 1; }
|
||
else eDur = EffectLinkEffects(eDur, eTmp);
|
||
}
|
||
|
||
// apply stance bonuses permanently
|
||
if (nHasEffect)
|
||
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(eDur), oTarget);
|
||
|
||
// stance activation VFX, lasts one round only
|
||
effect eVFX = EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MAJOR);
|
||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVFX, oTarget, RoundsToSeconds(1));
|
||
}
|
||
}
|
||
|
||
|
||
/* 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)
|
||
{
|
||
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;
|
||
effect eVFX = EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MAJOR);
|
||
if (GetHasDefensiveStance(oInitiator, DISCIPLINE_TIGER_CLAW))
|
||
eDur = EffectLinkEffects(eDur, EffectSavingThrowIncrease(SAVING_THROW_ALL, 2, SAVING_THROW_TYPE_ALL));
|
||
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));
|
||
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, ExtraordinaryEffect(eDur), oTarget);
|
||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVFX, oTarget, 6.0f);
|
||
}
|
||
} */ |