forked from Jaysyn/PRC8
Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
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);
|
||
}
|
||
} |