2025/05/25 Update
Updated all ToB maneuvers with saves to respect Blade Meditation. Added HasBladeMeditationForDiscipline() Expanded Witchborn Binder for epic progression. Fixed a few bugs around Vile Martial strike. Echo Spell shouldn't target self or items. Muckdweller should have a -6 STR. Added new Vile Martial feats to GetVileFeats(). Grappling something now removes invisibility. Started on Power Attack NUI. Starmantle shouldn't stack. Factotum & Shadow Thief of Amn require UMD checks for scroll casting.
This commit is contained in:
@@ -24,6 +24,60 @@ mystery or a spell of higher than 4th level.
|
||||
#include "shd_inc_shdfunc"
|
||||
#include "shd_mysthook"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oShadow = OBJECT_SELF;
|
||||
int nMyst = PRCGetSpellId();
|
||||
|
||||
if(DEBUG) DoDebug("shd_myst_echospl: nMyst " + IntToString(nMyst));
|
||||
|
||||
// Disallow if this spell is from an item
|
||||
if (PRCGetSpellCastItem(oShadow) != OBJECT_INVALID)
|
||||
{
|
||||
FloatingTextStringOnCreature("You cannot Echo spells cast from items.", oShadow);
|
||||
if(DEBUG) DoDebug("shd_myst_echospl: Disallowed - item cast");
|
||||
return;
|
||||
}
|
||||
// Disallow if this spell is cast by the shadowcaster itself
|
||||
if (GetLastSpellCaster() == oShadow)
|
||||
{
|
||||
FloatingTextStringOnCreature("You cannot Echo your own spells.", oShadow);
|
||||
if(DEBUG) DoDebug("shd_myst_echospl: Disallowed - item cast or cast by oShadow");
|
||||
return;
|
||||
}
|
||||
|
||||
if (GetLocalInt(oShadow, "EchoedSpell"))
|
||||
{
|
||||
int nSpellId = GetLocalInt(oShadow, "EchoedSpell");
|
||||
int nDC = 10 + StringToInt(Get2DACache("spells", "Innate", nSpellId)) + GetAbilityModifier(ABILITY_CHARISMA, oShadow);
|
||||
|
||||
if(DEBUG) DoDebug("shd_myst_echospl: Echo SpellId " + IntToString(nSpellId) + " at DC " + IntToString(nDC));
|
||||
|
||||
AssignCommand(oShadow, ActionCastSpell(nSpellId, GetShadowcasterLevel(oShadow), 0, nDC));
|
||||
}
|
||||
else
|
||||
{
|
||||
if(DEBUG) DoDebug("shd_myst_echospl: MYST_ECHO_SPELL");
|
||||
if (!ShadPreMystCastCode()) return;
|
||||
|
||||
object oTarget = PRCGetSpellTargetObject();
|
||||
struct mystery myst = EvaluateMystery(oShadow, oTarget, METASHADOW_NONE);
|
||||
|
||||
if (myst.bCanMyst)
|
||||
{
|
||||
if(DEBUG) DoDebug("shd_myst_echospl: MYST_ECHO_SPELL bCanMyst");
|
||||
SetLocalInt(oTarget, "EchoSpell", TRUE);
|
||||
SetLocalObject(oTarget, "EchoSpell", oShadow);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DIMENSIONANCHOR), oTarget);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* #include "shd_inc_shdfunc"
|
||||
#include "shd_mysthook"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oShadow = OBJECT_SELF;
|
||||
@@ -56,4 +110,4 @@ void main()
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DIMENSIONANCHOR), oTarget);
|
||||
}
|
||||
}
|
||||
}
|
||||
} */
|
@@ -46,7 +46,7 @@ void main()
|
||||
if(move.bCanManeuver)
|
||||
{
|
||||
effect eNone;
|
||||
int nDC = GetDefenderAC(oTarget, oInitiator);
|
||||
int nDC = GetDefenderAC(oTarget, oInitiator);
|
||||
int nAB = -2;
|
||||
if (GetIsSkillSuccessful(oInitiator, SKILL_CONCENTRATION, nDC))
|
||||
{
|
||||
|
@@ -27,19 +27,26 @@ or be unable to take any actions for 1 round.
|
||||
|
||||
void TOBAttack(object oTarget, object oInitiator)
|
||||
{
|
||||
effect eNone;
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, 0, 0, "Disrupting Blow Hit", "Disrupting Blow Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
int nDC = 15 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC))
|
||||
{
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectDazed(), oTarget, RoundsToSeconds(1));
|
||||
}
|
||||
}
|
||||
effect eNone;
|
||||
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, 0, 0, "Disrupting Blow Hit", "Disrupting Blow Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
int nDC = 15 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC))
|
||||
{
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectDazed(), oTarget, RoundsToSeconds(1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
|
@@ -29,14 +29,22 @@
|
||||
|
||||
void TOBAttack(object oTarget, object oInitiator)
|
||||
{
|
||||
effect eNone = EffectVisualEffect(VFX_IMP_BLINDDEAD_DN_CYAN);
|
||||
int nDC = 14 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
effect eNone = EffectVisualEffect(VFX_IMP_BLINDDEAD_DN_CYAN);
|
||||
int nAB = 0;
|
||||
if (GetLocalInt(oInitiator, "SupernalAttack")) nAB += 1;
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, nAB, 0, 0, "Mind Strike Hit", "Mind Strike Miss");
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, (14 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator))))
|
||||
if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC))
|
||||
{
|
||||
ApplyAbilityDamage(oTarget, ABILITY_WISDOM, d4(), DURATION_TYPE_PERMANENT);
|
||||
}
|
||||
|
@@ -12,7 +12,7 @@ Range: Personal
|
||||
Target: You
|
||||
|
||||
In the blink of an eye, you make your move. Your speed, reflexes, and boundless confidence
|
||||
combine to allow you to make a fast, bold move that catches your fores off guard.
|
||||
combine to allow you to make a fast, bold move that catches your foes off guard.
|
||||
|
||||
Your speed doubles for one round.
|
||||
|
||||
|
@@ -41,8 +41,15 @@ void main()
|
||||
// Enemy check
|
||||
if (GetIsEnemy(oProneTarget, oInitiator))
|
||||
{
|
||||
int nDC = 10 + GetHitDice(oInitiator)/2 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
// Save check
|
||||
if (!PRCMySavingThrow(SAVING_THROW_WILL, oProneTarget, (10 + GetHitDice(oInitiator)/2 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator))))
|
||||
if (!PRCMySavingThrow(SAVING_THROW_WILL, oProneTarget, nDC))
|
||||
{
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(EffectKnockdown()), oProneTarget, 6.0);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(d6(12)), oProneTarget);
|
||||
|
@@ -32,8 +32,16 @@ void main()
|
||||
object oProneTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(10.0), GetLocation(oInitiator));
|
||||
while(GetIsObjectValid(oProneTarget))
|
||||
{
|
||||
// Skill check
|
||||
if (!GetIsSkillSuccessful(oProneTarget, SKILL_BALANCE, 15))
|
||||
int nDC = 15;
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
// Skill check
|
||||
if (!GetIsSkillSuccessful(oProneTarget, SKILL_BALANCE, nDC))
|
||||
{
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(EffectKnockdown()), oProneTarget, 6.0);
|
||||
}
|
||||
|
@@ -16,7 +16,7 @@
|
||||
|
||||
You cause a 10 foot tall pillar of stone to appear, tossing enemies to the ground.
|
||||
*/
|
||||
|
||||
#include "tob_inc_move"
|
||||
#include "prc_inc_spells"
|
||||
|
||||
void main()
|
||||
@@ -26,11 +26,18 @@ void main()
|
||||
object oProneTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(10.0), GetLocation(oInitiator));
|
||||
while(GetIsObjectValid(oProneTarget))
|
||||
{
|
||||
// Save check
|
||||
if (!PRCMySavingThrow(SAVING_THROW_WILL, oProneTarget, (10 + GetHitDice(oInitiator)/2 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator))))
|
||||
int nDC = 10 + GetHitDice(oInitiator)/2 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
// Save check
|
||||
if (!PRCMySavingThrow(SAVING_THROW_WILL, oProneTarget, nDC))
|
||||
{
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(EffectKnockdown()), oProneTarget, 6.0);
|
||||
}
|
||||
}
|
||||
|
||||
oProneTarget = MyNextObjectInShape(SHAPE_SPHERE, FeetToMeters(10.0), GetLocation(oInitiator));
|
||||
}
|
||||
|
@@ -28,8 +28,17 @@ void main()
|
||||
{
|
||||
//Declare major variables
|
||||
object oTarget = GetEnteringObject();
|
||||
object oInitiator = GetAreaOfEffectCreator(OBJECT_SELF);
|
||||
|
||||
int nDC = 10;
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, DISCIPLINE_STONE_DRAGON);
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
// Cleaned up on exit
|
||||
if (!GetIsSkillSuccessful(oTarget, SKILL_BALANCE, 10) && GetIsEnemy(oTarget, GetAreaOfEffectCreator()))
|
||||
if (!GetIsSkillSuccessful(oTarget, SKILL_BALANCE, nDC) && GetIsEnemy(oTarget, GetAreaOfEffectCreator()))
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(EffectKnockdown()), oTarget, 6.0);
|
||||
}
|
@@ -39,8 +39,15 @@ void TOBAttack(object oTarget, object oInitiator)
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, d6(8), 0, "Castigating Strike Hit", "Castigating Strike Miss");
|
||||
if(GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
int nDC = 17 + GetAbilityModifier(ABILITY_CHARISMA, oInitiator);
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
// Saving Throw for the primary target
|
||||
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (17 + GetAbilityModifier(ABILITY_CHARISMA, oInitiator))))
|
||||
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC))
|
||||
{
|
||||
effect eLink = ExtraordinaryEffect(EffectVisualEffect(VFX_IMP_HEAD_EVIL));
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eLink, oTarget);
|
||||
@@ -64,7 +71,7 @@ void TOBAttack(object oTarget, object oInitiator)
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_M_PURPLE), oAreaTarget);
|
||||
|
||||
// Saving Throw for the secondary targets
|
||||
if(!PRCMySavingThrow(SAVING_THROW_FORT, oAreaTarget, (17 + GetAbilityModifier(ABILITY_CHARISMA, oInitiator))))
|
||||
if(!PRCMySavingThrow(SAVING_THROW_FORT, oAreaTarget, nDC))
|
||||
{
|
||||
effect eLink = ExtraordinaryEffect(EffectVisualEffect(VFX_IMP_HEAD_EVIL));
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eLink, oAreaTarget);
|
||||
|
@@ -35,8 +35,14 @@ void TOBAttack(object oTarget, object oInitiator)
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, 0, 0, "Daunting Strike Hit", "Daunting Strike Miss");
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (15 + GetAbilityModifier(ABILITY_CHARISMA, oInitiator))))
|
||||
int nDC = 15 + GetAbilityModifier(ABILITY_CHARISMA, oInitiator);
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC))
|
||||
{
|
||||
effect eLink = ExtraordinaryEffect(EffectLinkEffects(EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED), EffectShaken()));
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 60.0);
|
||||
|
@@ -46,6 +46,6 @@ void main()
|
||||
{
|
||||
effect eNone = EffectVisualEffect(PSI_IMP_CONCUSSION_BLAST);
|
||||
object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oInitiator);
|
||||
DelayCommand(0.0, PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, d8(8), GetWeaponDamageType(oWeap), "Divine Surge Hit", "Divine Surge Miss"));
|
||||
DelayCommand(0.0, PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, d8(8), GetWeaponDamageType(oWeap), "Divine Surge Hit", "Divine Surge Miss"));
|
||||
}
|
||||
}
|
@@ -41,6 +41,13 @@ void main()
|
||||
effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL);
|
||||
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
|
||||
int nDC = 11 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
//Get the first target in the radius around the caster
|
||||
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(30.0), lTarget);
|
||||
while(GetIsObjectValid(oTarget))
|
||||
|
@@ -66,6 +66,13 @@ void Deathmark(object oInitiator, object oTarget)
|
||||
float fDist = DoDeathmarkArea(oTarget);
|
||||
//FloatingTextStringOnCreature("Deathmark Area "+FloatToString(fDist), oInitiator);
|
||||
int nDC = 13 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
|
||||
|
||||
//Get the first target in the radius around the caster
|
||||
|
@@ -51,6 +51,13 @@ void main()
|
||||
float fLength = FeetToMeters(60.0);
|
||||
vector vOrigin = GetPosition(oInitiator);
|
||||
int nDC = 14 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
|
||||
// Loop over targets in the line shape
|
||||
oTarget = MyFirstObjectInShape(SHAPE_SPELLCYLINDER, fLength, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, vOrigin);
|
||||
|
@@ -48,6 +48,13 @@ void main()
|
||||
{
|
||||
location lTarget = GetLocation(oInitiator);
|
||||
int nDC = 12 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
|
||||
//Get the first target in the radius around the caster
|
||||
oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, FeetToMeters(30.0), PRCGetSpellTargetLocation(), TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
|
||||
|
@@ -50,6 +50,13 @@ void main()
|
||||
{
|
||||
location lTarget = GetLocation(oInitiator);
|
||||
int nDC = 19 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
|
||||
//Get the first target in the radius around the caster
|
||||
oTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(60.0), PRCGetSpellTargetLocation(), TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
|
||||
|
@@ -49,6 +49,13 @@ void main()
|
||||
{
|
||||
location lTarget = GetLocation(oInitiator);
|
||||
int nDC = 16 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
|
||||
//Get the first target in the radius around the caster
|
||||
oTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(30.0), PRCGetSpellTargetLocation(), TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
|
||||
|
@@ -49,6 +49,13 @@ void main()
|
||||
{
|
||||
location lTarget = GetLocation(oInitiator);
|
||||
int nDC = 18 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
|
||||
//Get the first target in the radius around the caster
|
||||
oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, FeetToMeters(30.0), PRCGetSpellTargetLocation(), TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
|
||||
|
@@ -31,17 +31,24 @@ Str modifier) or be dazed for 1 round.
|
||||
|
||||
void TOBAttack(object oTarget, object oInitiator)
|
||||
{
|
||||
effect eNone;
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, 0, 0, "Dazing Strike Hit", "Dazing Strike Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (15 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator))))
|
||||
{
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectDazed(), oTarget, RoundsToSeconds(1));
|
||||
}
|
||||
}
|
||||
effect eNone;
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, 0, 0, "Dazing Strike Hit", "Dazing Strike Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
int nDC = 15 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
` // Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC))
|
||||
{
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectDazed(), oTarget, RoundsToSeconds(1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
|
@@ -39,6 +39,13 @@ void TOBAttack(object oTarget, object oInitiator)
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
int nDC = 13 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
int nDamage = 4;
|
||||
if (PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_NONE))
|
||||
nDamage = 2;
|
||||
|
@@ -50,7 +50,14 @@ void main()
|
||||
if(move.bCanManeuver)
|
||||
{
|
||||
object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oInitiator);
|
||||
int nDC = d20(1) + GetAttackBonus(oTarget, oInitiator, oWeap);
|
||||
int nDC = d20(1) + GetAttackBonus(oTarget, oInitiator, oWeap);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
SetLocalInt(oInitiator, "IHLightningThrow", TRUE);
|
||||
float fLength = FeetToMeters(30.0);
|
||||
location lTarget = PRCGetSpellTargetLocation();
|
||||
|
@@ -26,18 +26,25 @@ to 2 points, although the foe still takes full normal melee damage.
|
||||
|
||||
void TOBAttack(object oTarget, object oInitiator)
|
||||
{
|
||||
effect eNone;
|
||||
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, 0, 0, "Bloodletting Strike Hit", "Bloodletting Strike Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
int nDam = 4;
|
||||
|
||||
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (15 + GetAbilityModifier(ABILITY_WISDOM, oInitiator)))) nDam = 2;
|
||||
|
||||
ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, nDam, DURATION_TYPE_TEMPORARY, TRUE, -1.0);
|
||||
}
|
||||
effect eNone;
|
||||
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, 0, 0, "Bloodletting Strike Hit", "Bloodletting Strike Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
int nDam = 4;
|
||||
|
||||
int nDC = 15 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC)) nDam = 2;
|
||||
|
||||
ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, nDam, DURATION_TYPE_TEMPORARY, TRUE, -1.0);
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
|
@@ -38,8 +38,16 @@ void TOBAttack(object oTarget, object oInitiator)
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, nDamage, nDamageType, "Clinging Shadow Strike Hit", "Clinging Shadow Strike Miss");
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (11 + GetAbilityModifier(ABILITY_WISDOM, oInitiator))))
|
||||
int nDC = 11 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC))
|
||||
{
|
||||
effect eLink = SupernaturalEffect(EffectVisualEffect(VFX_IMP_HEAD_EVIL));
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eLink, oTarget);
|
||||
|
@@ -31,14 +31,22 @@
|
||||
|
||||
void TOBAttack(object oTarget, object oInitiator)
|
||||
{
|
||||
effect eNone;
|
||||
effect eNone;
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, 0, 0, "Drain Vitality Hit", "Drain Vitality Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack") && PRCMySavingThrow(SAVING_THROW_FORT, oTarget, 12 + GetAbilityModifier(ABILITY_WISDOM, oInitiator),SAVING_THROW_TYPE_NONE))
|
||||
{
|
||||
ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, 2, DURATION_TYPE_TEMPORARY, TRUE, -1.0f);
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE_RED), oTarget);
|
||||
}
|
||||
|
||||
int nDC = 12 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack") && PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE))
|
||||
{
|
||||
ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, 2, DURATION_TYPE_TEMPORARY, TRUE, -1.0f);
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE_RED), oTarget);
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
|
@@ -31,8 +31,15 @@ void TOBAttack(object oTarget, object oInitiator)
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
int nDam = d6(15);
|
||||
|
||||
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (15 + GetAbilityModifier(ABILITY_WISDOM, oInitiator)))) nDam = d6(5);
|
||||
|
||||
int nDC = 15 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC)) nDam = d6(5);
|
||||
|
||||
if(!GetIsImmune(oTarget, IMMUNITY_TYPE_CRITICAL_HIT))
|
||||
{
|
||||
|
@@ -45,7 +45,15 @@ void TOBAttack(object oTarget, object oInitiator)
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (18 + GetAbilityModifier(ABILITY_WISDOM, oInitiator))))
|
||||
int nDC = 18 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC))
|
||||
{
|
||||
int nLevels = d4();
|
||||
|
||||
|
@@ -53,7 +53,15 @@ void TOBAttack(object oTarget, object oInitiator)
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack") && PRCGetIsAliveCreature(oTarget))
|
||||
{
|
||||
// Saving Throw
|
||||
int nSave = PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (19 + GetAbilityModifier(ABILITY_WISDOM, oInitiator)));
|
||||
int nDC = 19 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
int nSave = PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC);
|
||||
int nRoll = d20(1);
|
||||
int nDam;
|
||||
|
||||
|
@@ -47,22 +47,28 @@ void main()
|
||||
int nTouchAttack = PRCDoMeleeTouchAttack(oTarget);
|
||||
if(nTouchAttack > 0)
|
||||
{
|
||||
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (14 + GetAbilityModifier(ABILITY_WISDOM, oInitiator))))
|
||||
{
|
||||
effect eParal = EffectParalyze();
|
||||
effect eVis = EffectVisualEffect(82);
|
||||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||
effect eDur2 = EffectVisualEffect(VFX_DUR_PARALYZED);
|
||||
effect eDur3 = EffectVisualEffect(VFX_DUR_PARALYZE_HOLD);
|
||||
int nDC = 14 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
effect eLink = EffectLinkEffects(eDur2, eDur);
|
||||
eLink = EffectLinkEffects(eLink, eParal);
|
||||
eLink = EffectLinkEffects(eLink, eVis);
|
||||
eLink = EffectLinkEffects(eLink, eDur3);
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(d3()));
|
||||
}
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC))
|
||||
{
|
||||
effect eParal = EffectParalyze();
|
||||
effect eVis = EffectVisualEffect(82);
|
||||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||
effect eDur2 = EffectVisualEffect(VFX_DUR_PARALYZED);
|
||||
effect eDur3 = EffectVisualEffect(VFX_DUR_PARALYZE_HOLD);
|
||||
|
||||
effect eLink = EffectLinkEffects(eDur2, eDur);
|
||||
eLink = EffectLinkEffects(eLink, eParal);
|
||||
eLink = EffectLinkEffects(eLink, eVis);
|
||||
eLink = EffectLinkEffects(eLink, eDur3);
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(d3()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -40,14 +40,21 @@ void TOBAttack(object oTarget, object oInitiator)
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, nDamage, nDamageType, "Obscuring Shadow Veil Hit", "Obscuring Shadow Veil Miss");
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
int nDC = 14 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (14 + GetAbilityModifier(ABILITY_WISDOM, oInitiator))))
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC))
|
||||
{
|
||||
effect eLink = SupernaturalEffect(EffectVisualEffect(VFX_IMP_HEAD_EVIL));
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eLink, oTarget);
|
||||
eLink = SupernaturalEffect(EffectMissChance(50));
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 6.0);
|
||||
}
|
||||
effect eLink = SupernaturalEffect(EffectVisualEffect(VFX_IMP_HEAD_EVIL));
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eLink, oTarget);
|
||||
eLink = SupernaturalEffect(EffectMissChance(50));
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 6.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -63,6 +63,13 @@ void main()
|
||||
|
||||
//Apply the flat-footed effect
|
||||
int nDC = 13 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE))
|
||||
{
|
||||
AssignCommand(oTarget, ClearAllActions(TRUE));
|
||||
|
@@ -61,7 +61,14 @@ void main()
|
||||
ApplyTouchAttackDamage(oInitiator, oTarget, iAttackRoll, d6(8), DAMAGE_TYPE_MAGICAL);
|
||||
|
||||
//Apply the stun effect
|
||||
int nDC = 16 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
int nDC = 16 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE))
|
||||
{
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectStunned(), oTarget, RoundsToSeconds(1));
|
||||
|
@@ -40,11 +40,18 @@ void TOBAttack(object oTarget, object oInitiator)
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
int nDC = 13 + GetAbilityModifier(ABILITY_WISDOM, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
int nDamage = 4;
|
||||
if (PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE))
|
||||
if (PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE))
|
||||
nDamage = 2;
|
||||
ApplyAbilityDamage(oTarget, ABILITY_STRENGTH, nDamage, DURATION_TYPE_PERMANENT);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY), oTarget);
|
||||
ApplyAbilityDamage(oTarget, ABILITY_STRENGTH, nDamage, DURATION_TYPE_PERMANENT);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY), oTarget);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -34,8 +34,14 @@ void TOBAttack(object oTarget, object oInitiator)
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, d6(4), GetWeaponDamageType(oWeap), "Bone Crusher Hit", "Bone Crusher Miss");
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (13 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator))))
|
||||
int nDC = 13 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC))
|
||||
{
|
||||
effect eLink = SupernaturalEffect(EffectVisualEffect(VFX_IMP_HEAD_EVIL));
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eLink, oTarget);
|
||||
|
@@ -31,19 +31,26 @@ square.
|
||||
|
||||
void TOBAttack(object oTarget, object oInitiator)
|
||||
{
|
||||
effect eNone;
|
||||
object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oInitiator);
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, d6(6), GetWeaponDamageType(oWeap), "Colossus Strike Hit", "Colossus Strike Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
int nDC = 17 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE, oInitiator, 1.0))
|
||||
{
|
||||
float fFeet = IntToFloat(5 * d4(1));
|
||||
_DoBullRushKnockBack(oTarget, oInitiator, fFeet);
|
||||
}
|
||||
}
|
||||
effect eNone;
|
||||
object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oInitiator);
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, d6(6), GetWeaponDamageType(oWeap), "Colossus Strike Hit", "Colossus Strike Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
int nDC = 17 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE, oInitiator, 1.0))
|
||||
{
|
||||
float fFeet = IntToFloat(5 * d4(1));
|
||||
_DoBullRushKnockBack(oTarget, oInitiator, fFeet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
|
@@ -54,6 +54,12 @@ void main()
|
||||
|
||||
location lLoc = GetLocation(oInitiator);
|
||||
int nDC = 18 + (GetAbilityModifier(ABILITY_STRENGTH, oInitiator));
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
//Shaking
|
||||
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), lLoc);
|
||||
|
@@ -35,18 +35,23 @@ damage.
|
||||
|
||||
void TOBAttack(object oTarget, object oInitiator)
|
||||
{
|
||||
effect eNone;
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, d6(4), 0, "Iron Bones Hit", "Iron Bones Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
//Save
|
||||
int nDC = 16 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE, oInitiator, 1.0))
|
||||
{
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectDazed(), oTarget, RoundsToSeconds(1));
|
||||
}
|
||||
}
|
||||
effect eNone;
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, d6(4), 0, "Iron Bones Hit", "Iron Bones Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
//Save
|
||||
int nDC = 16 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE, oInitiator, 1.0))
|
||||
{
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectDazed(), oTarget, RoundsToSeconds(1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
|
@@ -34,25 +34,25 @@ times you move into or through its space.
|
||||
|
||||
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)
|
||||
{
|
||||
//Twice the speed
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectMovementSpeedIncrease(99), oInitiator, RoundsToSeconds(1));
|
||||
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectAreaOfEffect(AOE_MOB_MOUNTAIN_AVALANCHE), oInitiator, 6.0);
|
||||
}
|
||||
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)
|
||||
{
|
||||
//Twice the speed
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectMovementSpeedIncrease(99), oInitiator, RoundsToSeconds(1));
|
||||
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectAreaOfEffect(AOE_MOB_MOUNTAIN_AVALANCHE), oInitiator, 6.0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@@ -30,18 +30,27 @@
|
||||
|
||||
void TOBAttack(object oTarget, object oInitiator)
|
||||
{
|
||||
effect eNone = EffectVisualEffect(PSI_IMP_CONCUSSION_BLAST);
|
||||
object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oInitiator);
|
||||
effect eNone = EffectVisualEffect(PSI_IMP_CONCUSSION_BLAST);
|
||||
object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oInitiator);
|
||||
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, d6(2), GetWeaponDamageType(oWeap), "Overwhelming Mountain Strike Hit", "Overwhelming Mountain Strike Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (13 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator))))
|
||||
{
|
||||
{
|
||||
int nDC = 13 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC))
|
||||
{
|
||||
effect eLink = ExtraordinaryEffect(EffectSlow());
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 6.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
|
@@ -29,15 +29,22 @@
|
||||
|
||||
void TOBAttack(object oTarget, object oInitiator)
|
||||
{
|
||||
effect eNone;
|
||||
object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oInitiator);
|
||||
effect eNone;
|
||||
object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oInitiator);
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, d6(1), GetWeaponDamageType(oWeap), "Stone Vise Hit", "Stone Vise Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack") && PRCMySavingThrow(SAVING_THROW_FORT, oTarget, 12 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator),SAVING_THROW_TYPE_NONE))
|
||||
{
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(EffectCutsceneParalyze()), oTarget, 6.0);
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DIMENSIONLOCK), oTarget);
|
||||
}
|
||||
|
||||
int nDC = 12 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack") && PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE))
|
||||
{
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(EffectCutsceneParalyze()), oTarget, 6.0);
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DIMENSIONLOCK), oTarget);
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
|
@@ -37,8 +37,14 @@ void TOBAttack(object oTarget, object oInitiator)
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, d6(4), 0, "Strike of the Broken Shield Hit", "Strike of the Broken Shield Miss");
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, (14 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator))))
|
||||
int nDC = 14 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC))
|
||||
{
|
||||
AssignCommand(oTarget, ClearAllActions(TRUE));
|
||||
}
|
||||
|
@@ -77,7 +77,13 @@ void main()
|
||||
// Saving Throw for area target
|
||||
int nDamage = d6(4);
|
||||
// Adjust damage according to Reflex Save, Evasion or Improved Evasion
|
||||
nDamage = PRCGetReflexAdjustedDamage(nDamage, oAreaTarget, (13 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator)), SAVING_THROW_TYPE_NONE);
|
||||
int nDC = 13 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
nDamage = PRCGetReflexAdjustedDamage(nDamage, oAreaTarget, nDC, SAVING_THROW_TYPE_NONE);
|
||||
|
||||
if(nDamage > 0)
|
||||
{
|
||||
|
@@ -31,14 +31,22 @@
|
||||
|
||||
void TOBAttack(object oTarget, object oInitiator)
|
||||
{
|
||||
effect eNone;
|
||||
effect eNone;
|
||||
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, 0, 0, 0, "Clever Positioning Hit", "Clever Positioning Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack") && PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, 12 + GetAbilityModifier(ABILITY_DEXTERITY, oInitiator),SAVING_THROW_TYPE_NONE))
|
||||
{
|
||||
DoTransposition(TRUE, FALSE);
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_WIND), oTarget);
|
||||
}
|
||||
int nDC = 12 + GetAbilityModifier(ABILITY_DEXTERITY, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack") && PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_NONE))
|
||||
{
|
||||
DoTransposition(TRUE, FALSE);
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_WIND), oTarget);
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
|
@@ -50,11 +50,11 @@ void main()
|
||||
if (IPGetIsMeleeWeapon(oItem))
|
||||
{
|
||||
// Perform first bonus attack, overriding weapon just to make sure
|
||||
DelayCommand(0.0, PerformAttack(oTarget, oInitiator, eNone, 0.0, nBonus, 0, 0, "Raging Mongoose Hit", "Raging Mongoose Miss", FALSE, oItem));
|
||||
DelayCommand(0.0, PerformAttack(oTarget, oInitiator, eNone, 0.0, nBonus, 0, 0, "Dancing Mongoose Hit", "Dancing Mongoose Miss", FALSE, oItem));
|
||||
if (IPGetIsMeleeWeapon(oItem2))
|
||||
{
|
||||
// Perform second bonus attack, overriding weapon just to make sure
|
||||
DelayCommand(0.0, PerformAttack(oTarget, oInitiator, eNone, 0.0, nBonus, 0, 0, "Raging Mongoose Hit", "Raging Mongoose Miss", FALSE, oItem2));
|
||||
DelayCommand(0.0, PerformAttack(oTarget, oInitiator, eNone, 0.0, nBonus, 0, 0, "Dancing Mongoose Hit", "Dancing Mongoose Miss", FALSE, oItem2));
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@@ -47,6 +47,13 @@ void TOBAttack(object oTarget, object oInitiator)
|
||||
{
|
||||
//Save
|
||||
int nDC = 19 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_DEATH) && !GetIsImmune(oTarget, IMMUNITY_TYPE_CRITICAL_HIT))
|
||||
{
|
||||
DeathlessFrenzyCheck(oTarget);
|
||||
|
@@ -31,11 +31,20 @@ void TOBAttack(object oTarget, object oInitiator)
|
||||
{
|
||||
effect eNone = EffectVisualEffect(PSI_IMP_CONCUSSION_BLAST);
|
||||
int nBonus = TOBSituationalAttackBonuses(oInitiator, DISCIPLINE_TIGER_CLAW);
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, nBonus, 0, 0, "Flesh Ripper Hit", "Flesh Ripper Miss");
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack") && !GetIsImmune(oTarget, IMMUNITY_TYPE_CRITICAL_HIT))
|
||||
int nDC = 13 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, nBonus, 0, 0, "Flesh Ripper Hit", "Flesh Ripper Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack") && !GetIsImmune(oTarget, IMMUNITY_TYPE_CRITICAL_HIT))
|
||||
{
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (13 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator))))
|
||||
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC))
|
||||
{
|
||||
effect eLink = EffectLinkEffects(EffectAttackDecrease(4), EffectACDecrease(4));
|
||||
eLink = ExtraordinaryEffect(eLink);
|
||||
|
@@ -58,8 +58,16 @@ void main()
|
||||
{
|
||||
if(GetIsEnemy(oTarget, oInitiator))
|
||||
{
|
||||
// Saving Throw
|
||||
if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, (14 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator))))
|
||||
// Saving Throw
|
||||
int nDC = 14 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
|
||||
if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC))
|
||||
{
|
||||
effect eLink = ExtraordinaryEffect(EffectLinkEffects(EffectShaken(), EffectVisualEffect(VFX_IMP_DOOM)));
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 60.0);
|
||||
|
@@ -27,25 +27,32 @@ Dexterity damage and the speed penalty.
|
||||
|
||||
void TOBAttack(object oTarget, object oInitiator)
|
||||
{
|
||||
effect eNone;
|
||||
int nBonus = TOBSituationalAttackBonuses(oInitiator, DISCIPLINE_TIGER_CLAW);
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, nBonus, 0, 0, "Hamstring Attack Hit", "Hamstring Attack Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
int nDexDam = d8(1);
|
||||
effect eSlow = EffectMovementSpeedDecrease(33);
|
||||
|
||||
//Save
|
||||
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, (17 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator)), SAVING_THROW_TYPE_NONE))
|
||||
{
|
||||
nDexDam = nDexDam/2;
|
||||
eSlow = EffectMovementSpeedDecrease(17);
|
||||
}
|
||||
|
||||
ApplyAbilityDamage(oTarget, ABILITY_DEXTERITY, nDexDam, DURATION_TYPE_PERMANENT);
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSlow, oTarget, TurnsToSeconds(1));
|
||||
}
|
||||
effect eNone;
|
||||
int nDC = 17 + GetAbilityModifier(ABILITY_STRENGTH, oInitiator);
|
||||
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));;
|
||||
if (nBladeMed)
|
||||
{
|
||||
nDC += 1;
|
||||
}
|
||||
int nBonus = TOBSituationalAttackBonuses(oInitiator, DISCIPLINE_TIGER_CLAW);
|
||||
PerformAttack(oTarget, oInitiator, eNone, 0.0, nBonus, 0, 0, "Hamstring Attack Hit", "Hamstring Attack Miss");
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
{
|
||||
int nDexDam = d8(1);
|
||||
effect eSlow = EffectMovementSpeedDecrease(33);
|
||||
|
||||
//Save
|
||||
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE))
|
||||
{
|
||||
nDexDam = nDexDam/2;
|
||||
eSlow = EffectMovementSpeedDecrease(17);
|
||||
}
|
||||
|
||||
ApplyAbilityDamage(oTarget, ABILITY_DEXTERITY, nDexDam, DURATION_TYPE_PERMANENT);
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSlow, oTarget, TurnsToSeconds(1));
|
||||
}
|
||||
}
|
||||
|
||||
void main()
|
||||
|
@@ -43,6 +43,12 @@ void TOBAttack(object oTarget, object oInitiator, int iJumpRoll)
|
||||
effect eNone;
|
||||
int nAB = GetAbilityModifier(ABILITY_DEXTERITY, oTarget);
|
||||
int nBonus = TOBSituationalAttackBonuses(oInitiator, DISCIPLINE_TIGER_CLAW);
|
||||
int nBladeMed = HasBladeMeditationForDiscipline(oInitiator, GetDisciplineByManeuver(PRCGetSpellId()));
|
||||
if (nBladeMed)
|
||||
{
|
||||
iJumpRoll += 1;
|
||||
}
|
||||
|
||||
DelayCommand(0.0, PerformAttack(oTarget, oInitiator, eNone, 0.0, nAB + nBonus, d6(10), GetWeaponDamageType(oWeap), "Swooping Dragon Strike Hit", "Swooping Dragon Strike Miss"));
|
||||
|
||||
if (GetLocalInt(oTarget, "PRCCombat_StruckByAttack"))
|
||||
|
@@ -10,7 +10,7 @@
|
||||
|
||||
Swarm Tactics
|
||||
|
||||
Devoted Spirit (Stance)
|
||||
White Raven (Stance)
|
||||
Level: Crusader 5, Warblade 5
|
||||
Prerequisite: One White Raven maneuver
|
||||
Initiation Action: 1 Swift Action
|
||||
|
@@ -10,7 +10,7 @@
|
||||
|
||||
Swarm Tactics
|
||||
|
||||
Devoted Spirit (Stance)
|
||||
White Raven (Stance)
|
||||
Level: Crusader 5, Warblade 5
|
||||
Prerequisite: One White Raven maneuver
|
||||
Initiation Action: 1 Swift Action
|
||||
|
@@ -10,7 +10,7 @@
|
||||
|
||||
White Raven Tactics
|
||||
|
||||
Iron Heart (Boost)
|
||||
White Raven (Boost)
|
||||
Level: Crusader 3, Warblade 3
|
||||
Initiation Action: 1 Swift Action
|
||||
Range: 10 ft.
|
||||
|
Reference in New Issue
Block a user