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.
114 lines
3.9 KiB
Plaintext
114 lines
3.9 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Name Call Faithful Servants
|
|
//:: FileName sp_call_fserv.nss
|
|
//:://////////////////////////////////////////////
|
|
/**@file Call Faithful Servants
|
|
Conjuration(Calling) [Good]
|
|
Level: Celestial 6, cleric 6, sorc/wiz 6
|
|
Components: V, S, Abstinance, Celestial
|
|
Casting Time: 1 minute
|
|
Range: Close
|
|
Duration: Instantaneous
|
|
|
|
You call 1d4 lawful good lantern archons from Celestia,
|
|
1d4 chaotic good coure eladrins from Arborea, or 1d4
|
|
neutral good mesteval guardinals from Elysium to
|
|
your location. They serve you for up to one year
|
|
as guards, soldiers, spies, or whatever other holy
|
|
purpose you have.
|
|
|
|
No matter how many times you cast this spell, you
|
|
can control no more than 2HD worth of celestials
|
|
per caster level. If you exceed this number, all
|
|
the newly created creatures fall under your
|
|
control, and any excess servants from previous
|
|
castings return to their home plane.
|
|
|
|
Absinance Component: The character must abstain
|
|
from casting Conjuration spells for 3 days prior
|
|
to casting this spell.
|
|
|
|
Author: Tenjac
|
|
Created: 6/14/06
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_inc_spells"
|
|
#include "prc_inc_template"
|
|
|
|
void SummonLoop(int nCounter, location lLoc, object oPC);
|
|
|
|
void main()
|
|
{
|
|
if(!X2PreSpellCastCode()) return;
|
|
|
|
PRCSetSchool(SPELL_SCHOOL_CONJURATION);
|
|
|
|
object oPC = OBJECT_SELF;
|
|
location lLoc = PRCGetSpellTargetLocation();
|
|
int nCounter = d4(1);
|
|
int nMetaMagic = PRCGetMetaMagicFeat();
|
|
|
|
if(nMetaMagic & METAMAGIC_MAXIMIZE)
|
|
{
|
|
nCounter = 4;
|
|
}
|
|
if(nMetaMagic & METAMAGIC_EMPOWER)
|
|
{
|
|
nCounter += (nCounter/2);
|
|
}
|
|
|
|
//Must be celestial
|
|
if(GetHasTemplate(TEMPLATE_CELESTIAL) ||
|
|
GetHasTemplate(TEMPLATE_HALF_CELESTIAL) ||
|
|
(MyPRCGetRacialType(oPC) == RACIAL_TYPE_OUTSIDER && GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD)
|
|
)
|
|
{
|
|
//Get original max henchmen
|
|
int nMax = GetMaxHenchmen();
|
|
|
|
//Set new max henchmen high
|
|
SetMaxHenchmen(150);
|
|
|
|
// max number is 2HD worth of celestials per caster level
|
|
int nMaxHD = PRCGetCasterLevel(oPC) * 2;
|
|
// check for existing amoebas ^H^H^H^H^H^H^H lanton archons
|
|
int nFluffBalls = 0;
|
|
object oFluffBall = GetFirstFactionMember(oPC, FALSE);
|
|
while (GetIsObjectValid(oFluffBall))
|
|
{
|
|
if (GetTag(oFluffBall) == "Archon")
|
|
nFluffBalls++;// it's an archon
|
|
oFluffBall = GetNextFactionMember(oPC, FALSE);
|
|
}
|
|
// modify count variable if too high
|
|
if (nFluffBalls + nCounter > nMaxHD)
|
|
nCounter = nMaxHD - nFluffBalls;
|
|
else if (nFluffBalls + nCounter == nMaxHD) // none to summon, then exit with helpful message
|
|
{
|
|
FloatingTextStringOnCreature("You already have "+IntToString(nFluffBalls + nCounter)+"HD out of "+IntToString(nMaxHD)+"HD lantern archons.", oPC);
|
|
return;
|
|
}
|
|
FloatingTextStringOnCreature("Currently have "+IntToString(nFluffBalls + nCounter)+"HD out of "+IntToString(nMaxHD)+"HD lantern archons.", oPC);
|
|
SummonLoop(nCounter, lLoc, oPC);
|
|
//Restore original max henchmen
|
|
SetMaxHenchmen(nMax);
|
|
}
|
|
|
|
PRCSetSchool();
|
|
//SPGoodShift(oPC);
|
|
}
|
|
|
|
void SummonLoop(int nCounter, location lLoc, object oPC)
|
|
{
|
|
int i;
|
|
for(i = 0; i < nCounter; i++)
|
|
{
|
|
//Create appropriate Ghoul henchman
|
|
object oArchon = CreateObject(OBJECT_TYPE_CREATURE, "hen_clantern", lLoc, TRUE, "Archon");
|
|
|
|
//Make henchman
|
|
AddHenchman(oPC, oArchon);
|
|
}
|
|
} |