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.
98 lines
3.4 KiB
Plaintext
98 lines
3.4 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: Spell Name Awaken
|
|
//:: Spell FileName PHS_S_Awaken
|
|
//:://////////////////////////////////////////////
|
|
//:: In Game Spell desctiption
|
|
//:://////////////////////////////////////////////
|
|
This will awaken a tree (not in) or animal. Casting time is 24 hours!? well,
|
|
is actually 10 rounds in NwN because it is a real time game.
|
|
Will save of 10 + animals HD to suceeed.
|
|
Awakened animal will be friendly, and will join your party as
|
|
//:://////////////////////////////////////////////
|
|
//:: Spell Effects Applied / Notes
|
|
//:://////////////////////////////////////////////
|
|
As it says (animals only).
|
|
|
|
Permament duration and effects, like the spell says. Henchmen until it is
|
|
attacked by the caster or released from its duty.
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Jasperre
|
|
//::////////////////////////////////////////////*/
|
|
|
|
#include "PHS_INC_SPELLS"
|
|
|
|
void main()
|
|
{
|
|
// Spell hook check.
|
|
if(!PHS_SpellHookCheck(PHS_SPELL_AWAKEN)) return;
|
|
|
|
// Declare major variables
|
|
object oCaster = OBJECT_SELF;
|
|
object oTarget = GetSpellTargetObject();
|
|
int nMetaMagic = PHS_GetMetaMagicFeat();
|
|
|
|
// Make sure they are not immune to spells
|
|
if(PHS_TotalSpellImmunity(oTarget)) return;
|
|
|
|
// Check we have the XP needed
|
|
if(!PHS_ComponentXPCheck(250, oCaster)) return;
|
|
|
|
// Remove the XP
|
|
PHS_ComponentXPRemove(250, oCaster);
|
|
|
|
// Check if the target is valid! (IE animal!)
|
|
if(GetRacialType(oTarget) != RACIAL_TYPE_ANIMAL ||
|
|
GetAbilityScore(oTarget, ABILITY_INTELLIGENCE) >= 10)
|
|
{
|
|
SendMessageToPC(oCaster, "Your chosen target is either not an animal, or is already quite intelligent");
|
|
return;
|
|
}
|
|
|
|
// Make sure they do not try and get another faction member's animal to come.
|
|
if(GetIsObjectValid(GetMaster(oTarget)) && GetMaster(oTarget) != oCaster)
|
|
{
|
|
SendMessageToPC(oCaster, "You cannot awaken a creature who is summoned and not your own");
|
|
return;
|
|
}
|
|
|
|
// Save DC is 10 + animals current HD
|
|
int nWillDC = 10 + GetHitDice(oTarget);
|
|
|
|
// Random Intelligence and charisma bonuses
|
|
int nInt = PHS_MaximizeOrEmpower(6, 3, nMetaMagic);
|
|
int nCha = PHS_MaximizeOrEmpower(3, 1, nMetaMagic);
|
|
|
|
// Declare effects
|
|
effect eVis = EffectVisualEffect(PHS_VFX_FNF_AWAKEN);
|
|
effect eInt = EffectAbilityIncrease(ABILITY_INTELLIGENCE, nInt);
|
|
effect eCha = EffectAbilityIncrease(ABILITY_CHARISMA, nCha);
|
|
effect eAttack = EffectAttackIncrease(1);
|
|
effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
|
|
|
// Link effects - they are just magical, mind you.
|
|
effect eLink = EffectLinkEffects(eInt, eCha);
|
|
eLink = EffectLinkEffects(eLink, eAttack);
|
|
eLink = EffectLinkEffects(eLink, eCessate);
|
|
|
|
// Will save check
|
|
if(PHS_NotSpellSavingThrow(SAVING_THROW_WILL, oCaster, nWillDC))
|
|
{
|
|
// Signal spell cast at
|
|
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_AWAKEN, FALSE);
|
|
|
|
// Remove previous effects
|
|
PHS_RemoveSpellEffectsFromTarget(PHS_SPELL_AWAKEN, oTarget);
|
|
|
|
// Apply VFX and permanent effect.
|
|
PHS_ApplyPermanentAndVFX(oTarget, eVis, eLink);
|
|
|
|
// Also add them as a henchmen if they can be
|
|
if(!GetIsImmune(oTarget, IMMUNITY_TYPE_MIND_SPELLS) &&
|
|
!GetIsImmune(oTarget, IMMUNITY_TYPE_CHARM) &&
|
|
!GetFactionEqual(oTarget, oCaster))
|
|
{
|
|
AddHenchman(oCaster, oTarget);
|
|
}
|
|
}
|
|
}
|