Initial upload.
Adding base PRC 4.19a files to repository.
This commit is contained in:
114
trunk/spells/sp_call_fserv.nss
Normal file
114
trunk/spells/sp_call_fserv.nss
Normal file
@@ -0,0 +1,114 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: 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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user