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.
94 lines
3.3 KiB
Plaintext
94 lines
3.3 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: Spell Name Charm Animal
|
|
//:: Spell FileName SMP_S_CharmAnima
|
|
//:://////////////////////////////////////////////
|
|
//:: In Game Spell desctiption
|
|
//:://////////////////////////////////////////////
|
|
Enchantment (Charm) [Mind-Affecting]
|
|
Level: Drd 1, Rgr 1
|
|
Components: V, S
|
|
Casting Time: 1 standard action
|
|
Range: Close (8M)
|
|
Target: One animal
|
|
Duration: 1 hour/level
|
|
Saving Throw: Will negates
|
|
Spell Resistance: Yes
|
|
|
|
This spell functions like charm person, except that it affects a creature of
|
|
the animal type. The charming makes an animal creature regard you as its
|
|
trusted friend and ally. If the creature is currently being threatened or
|
|
attacked by you or your allies, however, it receives a +5 bonus on its saving
|
|
throw.
|
|
|
|
Any act by you or your apparent allies that threatens the charmed animal
|
|
breaks the spell. You cannot control a charmed creature directly, but it
|
|
may help in battle and not attack you.
|
|
//:://////////////////////////////////////////////
|
|
//:: Spell Effects Applied / Notes
|
|
//:://////////////////////////////////////////////
|
|
Charms using Biowares EffectCharmed(), which, as tests show, just increases
|
|
personal reputation.
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Jasperre
|
|
//::////////////////////////////////////////////*/
|
|
|
|
#include "SMP_INC_SPELLS"
|
|
|
|
void main()
|
|
{
|
|
// Spell Hook Check.
|
|
if(!SMP_SpellHookCheck()) return;
|
|
|
|
//Declare major variables
|
|
object oCaster = OBJECT_SELF;
|
|
object oTarget = GetSpellTargetObject();
|
|
int nSpellSaveDC = SMP_GetSpellSaveDC();
|
|
int nMetaMagic = SMP_GetMetaMagicFeat();
|
|
int nCasterLevel = SMP_GetCasterLevel();
|
|
|
|
// Duration is 1 hour/level.
|
|
float fDuration = SMP_GetDuration(SMP_HOURS, nCasterLevel, nMetaMagic);
|
|
|
|
// Lower save DC by 5 if they are in combat
|
|
if(GetIsInCombat(oTarget))
|
|
{
|
|
nSpellSaveDC -= 5;
|
|
}
|
|
|
|
// Declare Effects
|
|
effect eVis = EffectVisualEffect(VFX_IMP_CHARM);
|
|
effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE);
|
|
effect eCharm = EffectCharmed();
|
|
effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
|
|
|
// Link effects
|
|
effect eLink = EffectLinkEffects(eMind, eCharm);
|
|
eLink = EffectLinkEffects(eLink, eCessate);
|
|
|
|
// Always fire spell cast at event
|
|
SMP_SignalSpellCastAt(oTarget, SMP_SPELL_CHARM_ANIMAL, FALSE);
|
|
|
|
// Make sure they are an anmial
|
|
if(GetRacialType(oTarget) == RACIAL_TYPE_ANIMAL &&
|
|
// Make sure they are not immune to spells
|
|
!SMP_TotalSpellImmunity(oTarget))
|
|
{
|
|
// Must check reaction type for PvP
|
|
if(!GetIsReactionTypeFriendly(oTarget))
|
|
{
|
|
// Check spell resistance and immunities, and immunity to charm
|
|
if(!SMP_SpellResistanceCheck(oCaster, oTarget) &&
|
|
!SMP_ImmunityCheck(oTarget, IMMUNITY_TYPE_CHARM) &&
|
|
!SMP_ImmunityCheck(oTarget, IMMUNITY_TYPE_MIND_SPELLS))
|
|
{
|
|
//Make Will Save to negate effect
|
|
if(!SMP_SavingThrow(SAVING_THROW_WILL, oTarget, nSpellSaveDC, SAVING_THROW_TYPE_MIND_SPELLS))
|
|
{
|
|
// Apply VFX Impact and daze effect
|
|
SMP_ApplyDurationAndVFX(oTarget, eVis, eLink, fDuration);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|