Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
103 lines
5.0 KiB
Plaintext
103 lines
5.0 KiB
Plaintext
//////////////////////////////////////////////////////////////////////
|
||
/* Dark Speech [Vile]
|
||
You learn a smattering of the language of truly dark power.
|
||
Prerequisites: Will save bonus +5, Int 15, Cha 15.
|
||
Benefit: You can use the Dark Speech to bring loathing and fear to others, to help cast evil spells and create evil magic
|
||
items, and to weaken physical objects.
|
||
|
||
Dread: Whenever you use Dark Speech in this manner,
|
||
you take 1d4 points of Charisma damage, and every other
|
||
creature in a 30-foot radius must attempt a Will save (DC 10
|
||
+ 1/2 your character level + your Cha modifier). The result of
|
||
a failed save by a listener depends on the listener’s character
|
||
level and alignment, as detailed in the table below.
|
||
Level (Alignment) Result
|
||
1st-4th (non-evil) Listener is shaken for 10 rounds and must flee from you until you are out of sight.
|
||
1st-4th (evil) Listener cowers in fear for 10 rounds.
|
||
5th-10th (non-evil) Listener is shaken for 10 rounds.
|
||
5th-10th (evil) Listener is charmed by you (as charm monster) for 10 rounds.
|
||
11th+ (non-evil) Listener is filled with loathing for you but is not otherwise influenced.
|
||
11th+ (evil) Listener is impressed, and you gain a +2 competence bonus on attempts to change its attitude in the future.
|
||
|
||
Power: Whenever you use Dark Speech in this manner,
|
||
you take 1d4 points of Charisma damage. By incorporating
|
||
the Dark Speech into the verbal component of a spell, you
|
||
increase its effective caster level by 1.
|
||
|
||
Special: You gain a +4 circumstance bonus on saving
|
||
throws made when someone uses the Dark Speech against
|
||
you.
|
||
|
||
Special: If you cannot take ability damage, you cannot
|
||
select this feat.
|
||
*/
|
||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
#include "prc_inc_spells"
|
||
|
||
void main()
|
||
{
|
||
object oPC = OBJECT_SELF;
|
||
location lLoc = GetLocation(oPC);
|
||
int nSpell = GetSpellId();
|
||
object oTarget;
|
||
int nDC = 10 + (GetHitDice(oPC) / 2) + GetAbilityModifier(ABILITY_CHARISMA, oPC);
|
||
|
||
if(GetIsImmune(oPC, IMMUNITY_TYPE_ABILITY_DECREASE))
|
||
{
|
||
FloatingTextStringOnCreature("If you cannot take ability damage, you cannot use this feat", oPC, FALSE);
|
||
return;
|
||
}
|
||
|
||
if(nSpell == SPELL_DARK_SPEECH_DREAD)
|
||
{
|
||
int nHD;
|
||
oTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(30.0), lLoc, FALSE, OBJECT_TYPE_CREATURE);
|
||
|
||
ApplyAbilityDamage(oPC, ABILITY_CHARISMA, d4(1), DURATION_TYPE_TEMPORARY, TRUE, -1.0f);
|
||
|
||
while(GetIsObjectValid(oTarget))
|
||
{
|
||
if(oTarget != oPC)
|
||
{
|
||
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS))
|
||
{
|
||
nHD = GetHitDice(oTarget);
|
||
|
||
if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL)
|
||
{
|
||
if(nHD < 5) SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(EffectLinkEffects(EffectFrightened(), EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR))), oTarget, RoundsToSeconds(10));
|
||
else if (nHD > 4 && nHD < 11) SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(EffectCharmed()), oTarget, RoundsToSeconds(10));
|
||
else FloatingTextStringOnCreature(GetName(oTarget) + " is impressed by your Dark Speech.", oPC, FALSE);
|
||
|
||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_BLINDDEAD_DN_RED), oTarget);
|
||
}
|
||
else
|
||
{
|
||
if(nHD < 5)
|
||
{
|
||
effect eLink = EffectLinkEffects(EffectFrightened(), EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR));
|
||
eLink = EffectLinkEffects(eLink, EffectShaken());
|
||
|
||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oTarget, RoundsToSeconds(10));
|
||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_BLINDDEAD_DN_RED), oTarget);
|
||
}
|
||
else if (nHD > 4 && nHD < 11) SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(EffectShaken()), oTarget, RoundsToSeconds(10));
|
||
else FloatingTextStringOnCreature(GetName(oTarget) + " is filled with loathing for you.", oPC, FALSE);
|
||
}
|
||
}
|
||
}
|
||
oTarget = MyNextObjectInShape(SHAPE_SPHERE, FeetToMeters(30.0), lLoc, FALSE, OBJECT_TYPE_CREATURE);
|
||
}
|
||
}
|
||
else if(nSpell == SPELL_DARK_SPEECH_POWER)
|
||
{
|
||
if (GetHasSpellEffect(SPELL_DARK_SPEECH_POWER, oPC))
|
||
{
|
||
PRCRemoveSpellEffects(SPELL_DARK_SPEECH_POWER, oPC, oPC);
|
||
GZPRCRemoveSpellEffects(SPELL_DARK_SPEECH_POWER, oPC, FALSE);
|
||
}
|
||
else
|
||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE), oPC);
|
||
}
|
||
} |