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.
99 lines
3.8 KiB
Plaintext
99 lines
3.8 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: Spell Name Sculpt Sound
|
|
//:: Spell FileName PHS_S_SculptSoun
|
|
//:://////////////////////////////////////////////
|
|
//:: In Game Spell desctiption
|
|
//:://////////////////////////////////////////////
|
|
Transmutation
|
|
Level: Brd 3
|
|
Components: V, S
|
|
Casting Time: 1 standard action
|
|
Range: Close (8M)
|
|
Targets: One enemy creature/level within a 10M-radius (30ft) sphere
|
|
Duration: 1 hour/level (D)
|
|
Saving Throw: Will negates (object)
|
|
Spell Resistance: Yes (object)
|
|
|
|
You change the sounds that creatures or objects make. You can transform the
|
|
voices of enemies into other sounds. Once the transmutation is made, you
|
|
cannot change it, although it can be dispelled normally. A spellcaster whose
|
|
voice is changed dramatically is unable to cast spells with verbal
|
|
components, and ususally only can utter a strange sound when he tries to.
|
|
//:://////////////////////////////////////////////
|
|
//:: Spell Effects Applied / Notes
|
|
//:://////////////////////////////////////////////
|
|
Will use the spell hook.
|
|
|
|
Basically, it can harm spell casters - like Silence, but only ones with
|
|
verbal components.
|
|
|
|
Of course, well, we'll add some strange sound FX to play at the end instead
|
|
of casting the spell, to make it funny :-)
|
|
|
|
To tell PC's, we'll also have floating text to tell them, as there is no
|
|
effect for this.
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Jasperre
|
|
//::////////////////////////////////////////////*/
|
|
|
|
#include "PHS_INC_SPELLS"
|
|
|
|
void main()
|
|
{
|
|
// Spell hook check.
|
|
if(PHS_SpellHookCheck(PHS_SPELL_SCULPT_SOUND)) return;
|
|
|
|
// Define major variables
|
|
object oCaster = OBJECT_SELF;
|
|
location lTarget = GetSpellTargetLocation();
|
|
object oTarget;
|
|
int nCasterLevel = PHS_GetCasterLevel();
|
|
int nSpellSaveDC = PHS_GetSpellSaveDC();
|
|
int nMetaMagic = PHS_GetMetaMagicFeat();
|
|
|
|
// Delay = distance / 20
|
|
float fDelay;
|
|
|
|
// Duration is in hours
|
|
float fDuration = PHS_GetDuration(PHS_HOURS, nCasterLevel, nMetaMagic);
|
|
|
|
// Just a duration visual
|
|
effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
|
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_SONIC);
|
|
|
|
// Apply AOE visual
|
|
effect eImpact = EffectVisualEffect(VFX_FNF_LOS_NORMAL_30);
|
|
PHS_ApplyLocationVFX(lTarget, eImpact);
|
|
|
|
// Loop enemies - and apply the effects.
|
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 10.0, lTarget);
|
|
while(GetIsObjectValid(oTarget))
|
|
{
|
|
// Only affects non-friends. PvP Check. Must be able to be affected
|
|
if(!GetIsFriend(oTarget) && !GetFactionEqual(oTarget) &&
|
|
oTarget != oCaster && GetIsReactionTypeHostile(oTarget) &&
|
|
// Make sure they are not immune to spells
|
|
!PHS_TotalSpellImmunity(oTarget))
|
|
{
|
|
//Fire cast spell at event for the specified target
|
|
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_SCULPT_SOUND);
|
|
|
|
// Delay for visuals and effects.
|
|
fDelay = GetDistanceBetween(oCaster, oTarget)/20;
|
|
|
|
// Resistance and immunity checking. Check fear + mind immunity too
|
|
if(!PHS_SpellResistanceCheck(oCaster, oTarget, fDelay))
|
|
{
|
|
// Normal Will-based saving throw.
|
|
if(!PHS_SavingThrow(SAVING_THROW_WILL, oTarget, nSpellSaveDC, SAVING_THROW_TYPE_NONE, oCaster, fDelay))
|
|
{
|
|
// Apply visuals and the duration effect
|
|
FloatingTextStringOnCreature("*Your voice suddenly changes from Sculpt Sound*", oTarget, FALSE);
|
|
DelayCommand(fDelay, PHS_ApplyDurationAndVFX(oTarget, eVis, eCessate, fDuration));
|
|
}
|
|
}
|
|
}
|
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, 10.0, lTarget);
|
|
}
|
|
}
|