224 lines
10 KiB
Plaintext
224 lines
10 KiB
Plaintext
// hc_summon_inc - include file for Summon Creature I-IX spells
|
|
// Archaegeo, June 28, 2002
|
|
// Hardcore Ruleset
|
|
|
|
// HardCore Summons Table by Jaga Te'lesin
|
|
// To use, you must download and import HardCoreERFSU.zip from the
|
|
// HCR WWW page for the actual creature files. Then COMMENT OUT
|
|
// Line 19
|
|
|
|
string pick_creature(int nLevel)
|
|
{
|
|
int nRoll;
|
|
string sCreature="";
|
|
object oPC = OBJECT_SELF;
|
|
int iStringLength;
|
|
int iSummonAllow = FALSE;
|
|
|
|
// Comment the next line to use the summoned creatures tables
|
|
return "";
|
|
while (iSummonAllow == FALSE)
|
|
{
|
|
switch(nLevel) // Level of the Summon Creature spell
|
|
{
|
|
// This is all skipped right now due to the return "" above. remove that line
|
|
// when all of the creatures exist.
|
|
// Summon Creature I
|
|
case 1:
|
|
if ( (GetLocalInt(oPC,"hcsumcreat1") >0) && (GetLocalInt(oPC,"hcsumcreat1")<5) ) // to bypass uninitialized var (happened before !)
|
|
{
|
|
nRoll=GetLocalInt(oPC,"hcsumcreat1");
|
|
}
|
|
else nRoll=d4();
|
|
|
|
switch(nRoll)
|
|
{
|
|
case 1: sCreature="lg_sum_cel_dog"; break; //Celestial Dog+
|
|
case 2: sCreature="cg_sum_cel_badger"; break; //Celestial Badger+
|
|
case 3: sCreature="le_sum_fie_dir_rat"; break; //Fiendish Dire Rat+
|
|
case 4: sCreature="ce_sum_fiend_hawk"; break; //Fiendish Hawk+
|
|
}
|
|
break;
|
|
|
|
// Summon Creature II
|
|
case 2:
|
|
if ( (GetLocalInt(oPC,"hcsumcreat2") >0) && (GetLocalInt(oPC,"hcsumcreat2")<5) )
|
|
{
|
|
nRoll=GetLocalInt(oPC,"hcsumcreat2");
|
|
}
|
|
else nRoll=Random(5)+1;
|
|
switch(nRoll)
|
|
{
|
|
case 1: sCreature="cg_sum_cel_eagle"; break; //Celestial Eagle+
|
|
case 2: sCreature="le_sum_lemure"; break; //Lemure+
|
|
case 3: sCreature="le_sum_fiend_wolf"; break; //Fiendish Wolf+
|
|
case 4: sCreature="lg_sum_cel_wolf"; break; //Celestial Wolf+
|
|
case 5: sCreature="ce_sum_fiend_hyena"; break; //Fiendish Hyena+
|
|
}
|
|
|
|
break;
|
|
// Summon Creature III
|
|
case 3:
|
|
if ( (GetLocalInt(oPC,"hcsumcreat3") >0) && (GetLocalInt(oPC,"hcsumcreat3")<9) )
|
|
{
|
|
nRoll=GetLocalInt(oPC,"hcsumcreat3");
|
|
}
|
|
else nRoll=d8();
|
|
switch(nRoll)
|
|
{
|
|
case 1: sCreature="lg_sum_cel_blk_bear"; break; //Celestial Black Bear+
|
|
case 2: sCreature="cg_sum_cel_dir_badg"; break; //Celestial Dire Badger+
|
|
case 3: sCreature="ne_sum_fie_boar"; break; //Fiendish Boar+
|
|
case 4: sCreature="ce_sum_fie_leopard"; break; //Fiendish Leopard+
|
|
case 5: sCreature="nn_sum_sml_air_elem"; break; //Small Air Elemental+
|
|
case 6: sCreature="nn_sum_sml_ear_elem"; break; //Small Earth Elemental+
|
|
case 7: sCreature="nn_sum_sml_fir_elem"; break; //Small Fire Elemental+
|
|
case 8: sCreature="nn_sum_sml_wat_elem"; break; //Small Water Elemental+
|
|
}
|
|
break;
|
|
|
|
// Summon Creature IV
|
|
case 4:
|
|
if ( (GetLocalInt(oPC,"hcsumcreat4") >0) && (GetLocalInt(oPC,"hcsumcreat4")<5) )
|
|
{
|
|
nRoll=GetLocalInt(oPC,"hcsumcreat4");
|
|
}
|
|
else nRoll=Random(5)+1;
|
|
switch(nRoll)
|
|
{
|
|
case 1: sCreature="lg_sum_lant_archon"; break; //Lantern Archon+
|
|
case 2: sCreature="cg_sum_cel_lion"; break; //Celestial Lion+
|
|
case 3: sCreature="le_sum_imp"; break; //Imp+
|
|
case 4: sCreature="le_sum_hell_hound"; break; //Hell Hound+
|
|
case 5: sCreature="ce_sum_howler"; break; // Howler
|
|
}
|
|
break;
|
|
|
|
// Summon Creature V
|
|
case 5:
|
|
if ( (GetLocalInt(oPC,"hcsumcreat5") >0) && (GetLocalInt(oPC,"hcsumcreat5")<19) )
|
|
{
|
|
nRoll=GetLocalInt(oPC,"hcsumcreat5");
|
|
}
|
|
else nRoll=Random(18)+1;
|
|
switch(nRoll)
|
|
{
|
|
case 1: sCreature="lg_sum_cel_brn_bear"; break; //Celestial Brown Bear+
|
|
case 2: sCreature="lg_sum_hound_archon"; break; //Hound Archon+
|
|
case 3: sCreature="ne_sum_fie_dir_boar"; break; //Fiendish Dire Boar+
|
|
case 4: sCreature="ce_sum_fie_panther"; break; //Fiendish Panther+
|
|
case 5: sCreature="nn_sum_med_air_elem"; break; //Medium Air Elemental+
|
|
case 6: sCreature="nn_sum_med_ear_elem"; break; //Medium Earth Elemental+
|
|
case 7: sCreature="nn_sum_med_fir_elem"; break; //Medium Fire Elemental+
|
|
case 8: sCreature="nn_sum_med_wat_elem"; break; //Medium Water Elemental+
|
|
case 9: sCreature="nn_sum_air_mephit"; break; //Air Mephit+
|
|
case 10: sCreature="nn_sum_dust_mephit"; break; //Dust Mephit+
|
|
case 11: sCreature="nn_sum_earth_mephit"; break; //Earth Mephit+
|
|
case 12: sCreature="nn_sum_fire_mephit"; break; //Fire Mephit+
|
|
case 13: sCreature="nn_sum_ice_mephit"; break; //Ice Mephit+
|
|
case 14: sCreature="nn_sum_magma_mephit"; break; //Magma Mephit+
|
|
case 15: sCreature="nn_sum_ooze_mephit"; break; //Ooze Mephit+
|
|
case 16: sCreature="nn_sum_salt_mephit"; break; //Salt Mephi+
|
|
case 17: sCreature="nn_sum_steam_mephit"; break; //Steam Mephit+
|
|
case 18: sCreature="nn_sum_water_mephit"; break; //Water Mephit+
|
|
}
|
|
break;
|
|
|
|
// Summon Creature VI
|
|
case 6:
|
|
if ( (GetLocalInt(oPC,"hcsumcreat6") >0) && (GetLocalInt(oPC,"hcsumcreat6")<7) )
|
|
{
|
|
nRoll=GetLocalInt(oPC,"hcsumcreat6");
|
|
}
|
|
else nRoll=d6();
|
|
switch(nRoll)
|
|
{
|
|
case 1: sCreature="lg_sum_cel_dir_bear"; break; //Celestial Dire Bear+
|
|
case 2: sCreature="cn_sum_red_slaad"; break; //Red Slaad+
|
|
case 3: sCreature="nn_sum_lrg_air_elem"; break; //Large Air Elemental+
|
|
case 4: sCreature="nn_sum_lrg_ear_elem"; break; //Large Earth Elemental+
|
|
case 5: sCreature="nn_sum_lrg_fir_elem"; break; //Large Fire Elemental+
|
|
case 6: sCreature="nn_sum_lrg_wat_elem"; break; //Large Water Elemental+
|
|
}
|
|
break;
|
|
|
|
// Summon Creature VII
|
|
case 7:
|
|
if ( (GetLocalInt(oPC,"hcsumcreat7") >0) && (GetLocalInt(oPC,"hcsumcreat7")<8) )
|
|
{
|
|
nRoll=GetLocalInt(oPC,"hcsumcreat7");
|
|
}
|
|
else nRoll=Random(7)+1;
|
|
switch(nRoll)
|
|
{
|
|
case 1: sCreature="nn_sum_hug_air_elem"; break; //Huge Air Elemental+
|
|
case 2: sCreature="nn_sum_hug_ear_elem"; break; //Huge Earth Elemental+
|
|
case 3: sCreature="nn_sum_hug_fir_elem"; break; //Huge Fire Elemental+
|
|
case 4: sCreature="nn_sum_hug_wat_elem"; break; //Huge Water Elemental+
|
|
case 5: sCreature="nn_sum_invis_stalkr"; break; //Invisible Stalker+
|
|
case 6: sCreature="cn_sum_blue_slaad"; break; //Blue Slaad+
|
|
case 7: sCreature="ce_sum_fie_dir_tigr"; break; //Fiendish Dire Tiger+
|
|
}
|
|
break;
|
|
|
|
// Summon Creature VIII
|
|
case 8:
|
|
if ( (GetLocalInt(oPC,"hcsumcreat8") >0) && (GetLocalInt(oPC,"hcsumcreat8")<6) )
|
|
{
|
|
nRoll=GetLocalInt(oPC,"hcsumcreat8");
|
|
}
|
|
else nRoll=Random(5)+1;
|
|
switch(nRoll)
|
|
{
|
|
case 1: sCreature="nn_sum_gre_air_elem"; break; //Greater Air Elemental+
|
|
case 2: sCreature="nn_sum_gre_ear_elem"; break; //Greater Earth Elemental+
|
|
case 3: sCreature="nn_sum_gre_fir_elem"; break; //Greater Fire Elemental+
|
|
case 4: sCreature="nn_sum_gre_wat_elem"; break; //Greater Water Elemental+
|
|
case 5: sCreature="ce_sum_succubus"; break; //Succubus+
|
|
}
|
|
break;
|
|
|
|
// Summon Creature IX
|
|
case 9:
|
|
if ( (GetLocalInt(oPC,"hcsumcreat9") >0) && (GetLocalInt(oPC,"hcsumcreat9")<7) )
|
|
{
|
|
nRoll=GetLocalInt(oPC,"hcsumcreat9");
|
|
}
|
|
else nRoll=d6(1);
|
|
switch(nRoll)
|
|
{
|
|
case 1: sCreature="nn_sum_eld_air_elem"; break; //Elder Air Elemental+
|
|
case 2: sCreature="nn_sum_eld_ear_elem"; break; //Elder Earth Elemental+
|
|
case 3: sCreature="nn_sum_eld_fir_elem"; break; //Elder Fire Elemental+
|
|
case 4: sCreature="nn_sum_eld_wat_elem"; break; //Elder Water Elemental+
|
|
case 5: sCreature="le_sum_rakshasa"; break; //Rakshasa+
|
|
case 6: sCreature="ce_sum_vrock"; break; //Vrock+
|
|
}
|
|
break;
|
|
}
|
|
/// determine if creature can be summoned
|
|
iSummonAllow = TRUE;
|
|
iStringLength = GetStringLength(sCreature)-3;
|
|
if (GetLevelByClass(CLASS_TYPE_CLERIC,OBJECT_SELF)>0) // aplies only to clerics
|
|
{
|
|
string sElem1,sElem2;
|
|
sElem1 = GetSubString(sCreature,0,1);
|
|
sElem2 = GetSubString(sCreature,1,1);
|
|
if ((GetAlignmentLawChaos(oPC) == ALIGNMENT_CHAOTIC) && (sElem1 == "l"))
|
|
{iSummonAllow = FALSE;}
|
|
else if ((GetAlignmentLawChaos(oPC) == ALIGNMENT_LAWFUL) && (sElem1 == "c"))
|
|
{iSummonAllow = FALSE;}
|
|
if ((GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL) && (sElem2 =="g"))
|
|
{iSummonAllow = FALSE;}
|
|
if ((GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD) && (sElem2 =="e"))
|
|
{iSummonAllow = FALSE;}
|
|
}
|
|
|
|
|
|
} // while FALSE
|
|
// Return the chosen critter
|
|
sCreature = GetSubString(sCreature,3,iStringLength);
|
|
return sCreature;
|
|
}
|
|
|