Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
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);
|
|
}
|
|
} |