// // Spawn Groups // // // nChildrenSpawned // : Number of Total Children ever Spawned // // nSpawnCount // : Number of Children currently Alive // // nSpawnNumber // : Number of Children to Maintain at Spawn // // nRandomWalk // : Walking Randomly? TRUE/FALSE // // nPlaceable // : Spawning Placeables? TRUE/FALSE // // int ParseFlagValue(string sName, string sFlag, int nDigits, int nDefault); int ParseSubFlagValue(string sName, string sFlag, int nDigits, string sSubFlag, int nSubDigits, int nDefault); object GetChildByTag(object oSpawn, string sChildTag); object GetChildByNumber(object oSpawn, int nChildNum); object GetSpawnByID(int nSpawnID); void DeactivateSpawn(object oSpawn); void DeactivateSpawnsByTag(string sSpawnTag); void DeactivateAllSpawns(); void DespawnChildren(object oSpawn); void DespawnChildrenByTag(object oSpawn, string sSpawnTag); // // string GetTemplateByCR(int nCR, string sGroupType) { string sRetTemplate; if (sGroupType == "outdoor") { switch (nCR) { case 1: switch(d6(1)) { case 1: sRetTemplate = "NW_SKELETON"; break; case 2: sRetTemplate = "NW_ZOMBIE01"; break; case 3: sRetTemplate = "NW_NIXIE"; break; case 4: sRetTemplate = "NW_ORCA"; break; case 5: sRetTemplate = "NW_ORCB"; break; case 6: sRetTemplate = "NW_BTLFIRE"; break; } break; case 2: switch(d4(1)) { case 1: sRetTemplate = "NW_KOBOLD004"; break; case 2: sRetTemplate = "NW_KOBOLD005"; break; case 3: sRetTemplate = "NW_KOBOLD003"; break; case 4: sRetTemplate = "NW_PIXIE"; break; } break; case 3: switch(d4(1)) { case 1: sRetTemplate = "NW_BTLBOMB"; break; case 2: sRetTemplate = "NW_BTLFIRE002"; break; case 3: sRetTemplate = "NW_BTLSTINK"; break; case 4: sRetTemplate = "NW_NYMPH"; break; } break; default: sRetTemplate = ""; break; } } else if (sGroupType == "crypt") { switch (nCR) { case 1: switch(d4(1)) { case 1: case 2: sRetTemplate = "NW_SKELETON"; break; case 3: sRetTemplate = "NW_ZOMBIE01"; break; case 4: sRetTemplate = "NW_ZOMBIE02"; break; } break; case 2: sRetTemplate = "NW_GHOUL"; break; case 3: sRetTemplate = "NW_SHADOW"; break; default: sRetTemplate = ""; break; } } else { // unknown group type sRetTemplate = ""; } return sRetTemplate; } // Convert a given EL equivalent and its encounter level, // return the corresponding CR float ConvertELEquivToCR(float fEquiv, float fEncounterLevel) { float fCR, fEquivSq, fTemp; if (fEquiv == 0.0) { return 0.0; } fEquivSq = fEquiv * fEquiv; fTemp = log(fEquivSq); fTemp /= log(2.0); fCR = fEncounterLevel + fTemp; return fCR; } // Convert a given CR to its encounter level equivalent per DMG page 101. float ConvertCRToELEquiv(float fCR, float fEncounterLevel) { if (fCR > fEncounterLevel || fCR < 1.0) { return 1.; } float fEquiv, fExponent, fDenom; fExponent = fEncounterLevel - fCR; fExponent *= 0.5; fDenom = pow(2.0, fExponent); fEquiv = 1.0 / fDenom; return fEquiv; } string SpawnGroup(object oSpawn, string sTemplate) { // Initialize string sRetTemplate; // Initialize Values int nSpawnNumber = GetLocalInt(oSpawn, "f_SpawnNumber"); int nRandomWalk = GetLocalInt(oSpawn, "f_RandomWalk"); int nPlaceable = GetLocalInt(oSpawn, "f_Placeable"); int nChildrenSpawned = GetLocalInt(oSpawn, "ChildrenSpawned"); int nSpawnCount = GetLocalInt(oSpawn, "SpawnCount"); // // Only Make Modifications Between These Lines // ------------------------------------------- if (GetStringLeft(sTemplate, 7) == "scaled_") { float fEncounterLevel; int nScaledInProgress = GetLocalInt(oSpawn, "ScaledInProgress"); string sGroupType = GetStringRight(sTemplate, GetStringLength(sTemplate) - 7); // First Time in for this encounter? if (! nScaledInProgress) { // First time in - find the party level int nTotalPCs = 0; int nTotalPCLevel = 0; object oArea = GetArea(OBJECT_SELF); object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE) { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs == 0) { fEncounterLevel = 0.0; } else { fEncounterLevel = IntToFloat(nTotalPCLevel) / IntToFloat(nTotalPCs); } // Save this for subsequent calls SetLocalFloat(oSpawn, "ScaledEncounterLevel", fEncounterLevel); // We're done when the CRs chosen add up to the // desired encounter level SetLocalInt(oSpawn, "ScaledCallCount", 0); SetLocalInt(oSpawn, "ScaledInProgress", TRUE); } fEncounterLevel = GetLocalFloat(oSpawn, "ScaledEncounterLevel"); int nScaledCallCount = GetLocalInt(oSpawn, "ScaledCallCount"); // For simplicity, I'm not supporting creatures with CR < 1.0) if (fEncounterLevel < 1.0) { // We're done... No creatures have CR low enough to add to this encounter sRetTemplate = ""; } else { // randomly choose a CR at or below the remaining (uncovered) encounter // level int nCR = Random(FloatToInt(fEncounterLevel)) + 1; // cap to the largest CR we currently support in GetTemplateByCR if (nCR > 3) { nCR = 3; } sRetTemplate = GetTemplateByCR(nCR, sGroupType); // Convert CR to Encounter Level equivalent so it can be correctly // subtracted. This does the real scaling work float fELEquiv = ConvertCRToELEquiv(IntToFloat(nCR), fEncounterLevel); float fElRemaining = 1.0 - fELEquiv; fEncounterLevel = ConvertELEquivToCR(fElRemaining, fEncounterLevel); SetLocalFloat(oSpawn, "ScaledEncounterLevel", fEncounterLevel); } nScaledCallCount++; SetLocalInt(oSpawn, "ScaledCallCount", nScaledCallCount); nSpawnNumber = GetLocalInt(oSpawn, "f_SpawnNumber"); if (nScaledCallCount >= nSpawnNumber) { // reset... SetLocalInt(oSpawn, "ScaledInProgress", FALSE); } } // cr_militia if (sTemplate == "cr_militia") { switch(d2(1)) { case 1: sRetTemplate = "cr_militia_m"; break; case 2: sRetTemplate = "cr_militia_f"; break; } } // // pg_guard if (sTemplate == "pg_guard") { switch(d2(1)) { case 1: sRetTemplate = "pg_guard_m"; break; case 2: sRetTemplate = "pg_guard_f"; break; } } // // Goblins if (sTemplate == "goblins_low") { if (d2(1) == 1) { sRetTemplate = "NW_GOBLINA"; } else { sRetTemplate = "NW_GOBLINB"; } } // // Goblins and Boss if (sTemplate == "gobsnboss") { int nIsBossSpawned = GetLocalInt(oSpawn, "IsBossSpawned"); if (nIsBossSpawned == TRUE) { // Find the Boss object oBoss = GetChildByTag(oSpawn, "NW_GOBCHIEFA"); // Check if Boss is Alive if (oBoss != OBJECT_INVALID && GetIsDead(oBoss) == FALSE) { // He's alive, spawn a Peon to keep him Company sRetTemplate = "NW_GOBLINA"; } else { // He's dead, Deactivate Camp! SetLocalInt(oSpawn, "SpawnDeactivated", TRUE); } } else { // No Boss, so Let's Spawn Him sRetTemplate = "NW_GOBCHIEFA"; SetLocalInt(oSpawn, "IsBossSpawned", TRUE); } } // // Scaled Encounter if (sTemplate == "scaledgobs") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE) { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs == 0) { nAveragePCLevel = 0; } else { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something with CR 1 case 1: sRetTemplate = "cr1creature"; break; // // Spawn Something with CR 5 case 5: sRetTemplate = "cr5creature"; break; // } } // // Pirates and Boss if (sTemplate == "pirates") { // Delay the Spawn for 45 Minutes if (GetLocalInt(oSpawn, "DelayEnded") == FALSE) { if (GetLocalInt(oSpawn, "DelayStarted") == FALSE) { // Start the Delay SetLocalInt(oSpawn, "DelayStarted", TRUE); DelayCommand(20.0, SetLocalInt(oSpawn, "DelayEnded", TRUE)); } sRetTemplate = ""; return sRetTemplate; } int nIsBossSpawned = GetLocalInt(oSpawn, "IsBossSpawned"); if (nIsBossSpawned == TRUE) { // Find the Boss object oBoss = GetChildByTag(oSpawn, "NW_GOBCHIEFA"); // Check if Boss is Alive if (oBoss != OBJECT_INVALID && GetIsDead(oBoss) == FALSE) { // He's alive, spawn a Peon to keep him Company sRetTemplate = "NW_GOBLINA"; } else { // He's dead, Deactivate Camp! SetLocalInt(oSpawn, "SpawnDeactivated", TRUE); } } else { // No Boss, so Let's Spawn Him sRetTemplate = "NW_GOBCHIEFA"; SetLocalInt(oSpawn, "IsBossSpawned", TRUE); } } // // Advanced Scaled Encounter if (sTemplate == "advscaled") { //Initalize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); //Cycle through PCs in area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE) { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs == 0) { nAveragePCLevel = 0; } else { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } //Select a Creature to Spawn switch (nAveragePCLevel) { //Spawn Something with CR 1 case 1: switch (d6()) { case 1: sRetTemplate = "cr1example1"; case 2: sRetTemplate = "cr1example2"; case 3: sRetTemplate = "cr1example3"; case 4: sRetTemplate = "cr1example4"; case 5: sRetTemplate = "cr1example5"; case 6: sRetTemplate = "cr1example6"; } break; } } // // Encounters if (sTemplate == "encounter") { // Declare Variables int nCounter, nCounterMax; string sCurrentTemplate; // Retreive and Increment Counter nCounter = GetLocalInt(oSpawn, "GroupCounter"); nCounterMax = GetLocalInt(oSpawn, "CounterMax"); nCounter++; // Retreive CurrentTemplate sCurrentTemplate = GetLocalString(oSpawn, "CurrentTemplate"); // Check CounterMax if (nCounter > nCounterMax) { sCurrentTemplate = ""; nCounter = 1; } if (sCurrentTemplate != "") { // Spawn Another CurrentTemplate sRetTemplate = sCurrentTemplate; } else { // Choose New CurrentTemplate and CounterMax switch (Random(2)) { // Spawn 1-4 NW_DOGs case 0: sRetTemplate = "NW_DOG"; nCounterMax = Random(4) + 1; break; } // Record New CurrentTemplate and CounterMax SetLocalString(oSpawn, "CurrentTemplate", sRetTemplate); SetLocalInt(oSpawn, "CounterMax", nCounterMax); } // Record Counter SetLocalInt(oSpawn, "GroupCounter", nCounter); } // // if (sTemplate == "kobolds") { int nKobold = Random(6) + 1; sRetTemplate = "NW_KOBOLD00" + IntToString(nKobold); } // //Sily's Groups if (sTemplate == "sily_goblin_scout") { switch(d2(1)) { case 1: sRetTemplate = "an_goblin"; break; case 2: sRetTemplate = "an_goblin2"; break; } } //:: Scaled group - Flesh & Bone Undead if (sTemplate == "grp_flesh") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn /* Flesh & Bone Undead nw_wight - Wight: 04 HD / CR4 BONEBAT001 - Bonebat: 04 HD / CR5 PLAGUEBLIGHT001 - Plague Blight: 06 HD / CR6 PLAGUEBLIGHT002 - Plague Blight: 09 HD / CR9 WHEEP001 - Wheep: 10 HD / CR10 PLAGUEBLIGHT003 - Plague Blight: 12 HD / CR11 BLOODAMNIOTE001 - Blood Amniote: 10 HD / CR12 PLAGUEBLIGHT004 - Plague Blight: 15 HD / CR14 nw_mohrg - Mohrg: 14 HD / CR14 BONEKLAW001 - Boneklaw: 10 HD / CR16 PLAGUEBLIGHT005 - Plague Blight: 18 HD / CR17 SLAUGHTERWIGHT01 - Slaughter Wight: 18 HD / CR21 BONEKLAW002 - Boneklaw: 14 HD / CR21 BONEYARD001 - Boneyard: 17 HD / CR22 BLASPHEME001 - Blaspheme: 18 HD / CR23 SLAUGHTERWIGHT02 - Slaughter Wight: 21 HD / CR23 BONEKLAW003 - Boneklaw: 18 HD / CR25 SLAUGHTERWIGHT03 - Slaughter Wight: 24 HD / CR27 BONEKLAW004 - Boneklaw: 22 HD / CR28 BLASPHEME002 - Blaspheme: 22 HD / CR28 SLAUGHTERWIGHT04 - Slaughter Wight: 28 HD / CR29 BONEYARD002 - Boneyard: 21 HD / CR30 BLASPHEME003 - Blaspheme: 26 HD / CR32 BONEYARD003 - Boneyard: 25 HD / CR34 ANGELOFDECAY001 - Angel of Decay: 26 HD / CR36 BLASPHEME004 - Blaspheme: 30 HD / CR37 ANGELOFDECAY002 - Angel of Decay: 30 HD / CR40 WINTERWIGHT001 - Winterwight: 32 HD / CR41 BLASPHEME005 - Blaspheme: 34 HD / CR42 ANGELOFDECAY003 - Angel of Decay: 34 HD / CR44 ANGELOFDECAY004 - Angel of Decay: 38 HD / CR46 HUNEFER001 - Hunefer: 50 HD / CR48 ANGELOFDECAY005 - Angel of Decay: 42 HD / CR49 BONEYARD008 - Boneyard: 50 HD / CR62 HUNEFER002 - Hunefer: 54 HD / CR75 */ switch (nAveragePCLevel) { // Spawn Something with CR 4 case 1: case 2: case 3: case 4: sRetTemplate = "nw_wight"; //:: Wight: 04 HD / CR4 break; // // Spawn Something with CR 5 case 5: sRetTemplate = "bonebat001"; //:: Bonebat: 04 HD / CR5 break; // // Spawn Something with CR 6-7 case 6: case 7: sRetTemplate = "plagueblight001"; //:: Plague Blight: 06 HD / CR6 break; // // Spawn Something with CR 8-9 case 8: case 9: sRetTemplate = "plagueblight002"; //:: Plague Blight: 09 HD / CR9 break; // // Spawn Something with CR 10 case 10: sRetTemplate = "wheep001"; //:: Wheep: 10 HD / CR10 break; // // Spawn Something with CR 11 case 11: sRetTemplate = "plagueblight003"; //:: Plague Blight: 12 HD / CR11 break; // // Spawn Something with CR 12 case 12: sRetTemplate = "bloodamniote001"; //:: Blood Amniote: 10 HD / CR12 break; // // Spawn Something with CR 13-14 case 13: case 14: { int nRandom = d2(1); if(nRandom == 1) { sRetTemplate = "plagueblight004"; //:: Plague Blight: 15 HD / CR14 } else { sRetTemplate = "nw_mohrg"; //:: Mohrg: 14 HD / CR14 } break; } // // Spawn Something with CR 15-16 case 15: case 16: sRetTemplate = "boneklaw001"; //:: Boneklaw: 10 HD / CR16 break; // // Spawn Something with CR 17-18 case 17: case 18: sRetTemplate = "plagueblight005"; //:: Plague Blight: 18 HD / CR17 break; // // Spawn Something with CR 19-21 case 19: case 20: case 21: { int nRandom = d2(1); if(nRandom == 1) { sRetTemplate = "slaughterwight01"; //:: Slaughter Wight: 18 HD / CR21 } else { sRetTemplate = "boneklaw002"; //:: Boneklaw: 14 HD / CR21 } break; } // // Spawn Something with CR 22 case 22: sRetTemplate = "boneyard001"; //:: Boneyard: 17 HD / CR22 break; // // Spawn Something with CR 23 case 23: { int nRandom = d2(1); if(nRandom == 1) { sRetTemplate = "blaspheme001"; //:: Blaspheme: 18 HD / CR23 } else { sRetTemplate = "slaughterwight02"; //:: Slaughter Wight: 21 HD / CR23 } break; } // // Spawn Something with CR 24-25 case 24: case 25: sRetTemplate = "boneklaw003"; //:: Boneklaw: 18 HD / CR25 break; // // Spawn Something with CR 26-27 case 26: case 27: sRetTemplate = "slaughterwight03"; //:: Slaughter Wight: 24 HD / CR27 break; // // Spawn Something with CR 28 case 28: { int nRandom = d2(1); if(nRandom == 1) { sRetTemplate = "boneklaw004"; //:: Boneklaw: 22 HD / CR28 } else { sRetTemplate = "blaspheme002"; //:: Blaspheme: 22 HD / CR28 } break; } // // Spawn Something with CR 29 case 29: sRetTemplate = "slaughterwight04"; //:: Slaughter Wight: 28 HD / CR29 break; // // Spawn Something with CR 30 case 30: sRetTemplate = "boneyard002"; //:: Boneyard: 21 HD / CR30 break; // // Spawn Something with CR 31-32 case 31: case 32: sRetTemplate = "blaspheme003"; //:: Blaspheme: 26 HD / CR32 break; // // Spawn Something with CR 33-34 case 33: case 34: sRetTemplate = "boneyard003"; //:: Boneyard: 25 HD / CR34 break; // // Spawn Something with CR 35-36 case 35: case 36: sRetTemplate = "angelofdecay001"; //:: Angel of Decay: 26 HD / CR36 break; // // Spawn Something with CR 37 case 37: sRetTemplate = "blaspheme004"; //:: Blaspheme: 30 HD / CR37 break; // // Spawn Something with CR 38-40 case 38: case 39: case 40: sRetTemplate = "angelofdecay002"; //:: Angel of Decay: 30 HD / CR40 break; // // Spawn Something with CR 41 case 41: sRetTemplate = "winterwight001"; //:: Winterwight: 32 HD / CR41 break; // // Spawn Something with CR 42 case 42: sRetTemplate = "blaspheme005"; //:: Blaspheme: 34 HD / CR42 break; // // Spawn Something with CR 43-44 case 43: case 44: sRetTemplate = "angelofdecay003"; //:: Angel of Decay: 34 HD / CR44 break; // // Spawn Something with CR 45-46 case 45: case 46: sRetTemplate = "angelofdecay004"; //:: Angel of Decay: 38 HD / CR46 break; // // Spawn Something with CR 47-48 case 47: case 48: sRetTemplate = "hunefer001"; //:: Hunefer: 50 HD / CR48 break; // // Spawn Something with CR 49-50 case 49: case 50: sRetTemplate = "angelofdecay005"; //:: Angel of Decay: 42 HD / CR49 break; // // Default default: { int nRandom = d2(1); if(nRandom == 1) { sRetTemplate = "boneyard008"; //:: Boneyard: 50 HD / CR62 } else { sRetTemplate = "hunefer002"; //:: Hunefer: 54 HD / CR75 } break; } // } } //:: End Scaled group - Flesh & Bone Undead //:: Scaled group - Incorporeal Undead if (sTemplate == "grp_ghostly") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn /* Incorporeal Undead ar_shadowrat001 - Shadow Rat, Common: .5 HD / CR2 haunt - Haunt: 01 HD / CR3 ar_shadowrat002 - Shadow Rat, Dire: 01 HD / CR3 shadow003 - Shadow: 01 HD / CR3 nw_shadow - Shadow: 03 HD / CR4 ar_shadowrat003 - Shadow Rat, Dire: 04 HD / CR5 nw_spectre - Spectre 07 HD / CR6 nw_wraith - Wraith: 05 HD / CR7 cryptchanter001 - Crypt Chanter: 07 HD / CR8 spectre001 - Rift Wraith: 15 HD / CR9 shadow002 - Shadow: 09 HD / CR11 voidwraith001 - Voidwraith: 06 HD / CR13 ar_wraith002 - Wraith: 10 HD / CR14 cryptchanter002 - Crypt Chanter: 12 HD / CR14 damnedspirit - Damned Spirit: 15 HD / CR17 quickling002 - Ethereal Cutpurse: 15 HD / CR17 voidwraith002 - Voidwraith: 09 HD / CR18 cryptchanter003 - Crypt Chanter: 17 HD / CR19 dreamvestige001 - Dream Vestige: 17 HD / CR23 ar_wraith003 - Wraith, Dread: 16 HD / CR24 voidwraith003 - Voidwraith: 12 HD / CR27 dreamvestige002 - Dream Vestige: 21 HD / CR28 ar_wraith004 - Wraith, Dread: 20 HD / CR29 dreamvestige003 - Dream Vestige: 21 HD / CR32 nightwalker001 - Nightwalker: 21 HD / CR32 voidwraith004 - Voidwraith: 15 HD / CR33 ar_wraith005 - Wraith, Dread: 24 HD / CR35 roguespectre - Rogue Spectre: 30 HD / CR37 voidwraith005 - Voidwraith: 18 HD / CR40 ar_wraith006 - Wraith, Dread: 28 HD / CR40 ar_wraith007 - Wraith, Dread: 32 HD / CR45 demonshadow1 - Demonic Shadow Fiend: 46 HD / CR46 dw_ghost001 - Dwarven Ghost, Wizard: 30 HD / CR 50 */ switch (nAveragePCLevel) { // Spawn Something with CR 2 case 1: case 2: sRetTemplate = "ar_shadowrat001"; //:: Shadow Rat, Common: .5 HD / CR2 break; // // Spawn Something with CR 3 case 3: { int nRandom = d3(1); if(nRandom == 1) { sRetTemplate = "haunt"; //:: Haunt: 01 HD / CR3 } else if (nRandom == 2) { sRetTemplate = "ar_shadowrat002"; //:: Shadow Rat, Dire: 01 HD / CR3 } else { sRetTemplate = "shadow003"; //:: Shadow: 01 HD / CR3 } break; } // // Spawn Something with CR 4 case 4: sRetTemplate = "nw_shadow"; //:: Shadow: 03 HD / CR4 break; // // Spawn Something with CR 5 case 5: sRetTemplate = "ar_shadowrat003"; //:: Shadow Rat, Dire: 04 HD / CR5 break; // // Spawn Something with CR 6 case 6: sRetTemplate = "nw_spectre"; //:: Spectre 07 HD / CR6 break; // // Spawn Something with CR 7 case 7: sRetTemplate = "nw_wraith"; //:: Wraith: 05 HD / CR7 break; // // Spawn Something with CR 8 case 8: sRetTemplate = "cryptchanter001"; //:: Crypt Chanter: 07 HD / CR8 break; // // Spawn Something with CR 9 case 9: sRetTemplate = "spectre001"; //:: Rift Wraith: 15 HD / CR9 break; // // Spawn Something with CR 10-11 case 10: case 11: sRetTemplate = "shadow002"; //:: Shadow: 09 HD / CR11 break; // // Spawn Something with CR 12-13 case 12: case 13: sRetTemplate = "voidwraith001"; //:: Voidwraith: 06 HD / CR13 break; // // Spawn Something with CR 14 case 14: sRetTemplate = "ar_wraith002"; //:: Wraith: 10 HD / CR14 break; // // Spawn Something with CR 15-17 case 15: case 16: case 17: { int nRandom = d2(1); if(nRandom == 1) { sRetTemplate = "damnedspirit"; //:: Damned Spirit: 15 HD / CR17 } else { sRetTemplate = "quickling002"; //:: Ethereal Cutpurse: 15 HD / CR17 } break; } // // Spawn Something with CR 18 case 18: sRetTemplate = "voidwraith002"; //:: Voidwraith: 09 HD / CR18 break; // // Spawn Something with CR 19 case 19: sRetTemplate = "cryptchanter003"; //:: Crypt Chanter: 17 HD / CR19 break; // // Spawn Something with CR 20-23 case 20: case 21: case 22: case 23: sRetTemplate = "dreamvestige001"; //:: Dream Vestige: 17 HD / CR23 break; // // Spawn Something with CR 24 case 24: sRetTemplate = "ar_wraith003"; //:: Wraith, Dread: 16 HD / CR24 break; // // Spawn Something with CR 25-27 case 25: case 26: case 27: sRetTemplate = "voidwraith003"; //:: Voidwraith: 12 HD / CR27 break; // // Spawn Something with CR 28 case 28: sRetTemplate = "dreamvestige002"; //:: Dream Vestige: 21 HD / CR28 break; // // Spawn Something with CR 29 case 29: sRetTemplate = "ar_wraith004"; //:: Wraith, Dread: 20 HD / CR29 break; // // Spawn Something with CR 30-32 case 30: case 31: case 32: { int nRandom = d2(1); if(nRandom == 1) { sRetTemplate = "dreamvestige003"; //:: Dream Vestige: 21 HD / CR32 } else { sRetTemplate = "nightwalker001"; //:: Nightwalker: 21 HD / CR32 } break; } // // Spawn Something with CR 33 case 33: sRetTemplate = "voidwraith004"; //:: Voidwraith: 15 HD / CR33 break; // // Spawn Something with CR 34-35 case 34: case 35: sRetTemplate = "ar_wraith005"; //:: Wraith, Dread: 24 HD / CR35 break; // // Spawn Something with CR 36-37 case 36: case 37: sRetTemplate = "roguespectre"; //:: Rogue Spectre: 30 HD / CR37 break; // // Spawn Something with CR 38-40 case 38: case 39: case 40: { int nRandom = d2(1); if(nRandom == 1) { sRetTemplate = "voidwraith005"; //:: Voidwraith: 18 HD / CR40 } else { sRetTemplate = "ar_wraith006"; //:: Wraith, Dread: 28 HD / CR40 } break; } // // Spawn Something with CR 41-45 case 41: case 42: case 43: case 44: case 45: sRetTemplate = "ar_wraith007"; //:: Wraith, Dread: 32 HD / CR45 break; // // Spawn Something with CR 46 case 46: sRetTemplate = "demonshadow1"; //:: Demonic Shadow Fiend: 46 HD / CR46 break; // // Default default: { int nRandom = d3(1); if(nRandom == 1) { sRetTemplate = "ar_wraith007"; //:: Wraith, Dread: 32 HD / CR45 } else if(nRandom == 2) { sRetTemplate = "demonshadow1"; //:: Demonic Shadow Fiend: 46 HD / CR46 } else { sRetTemplate = "dw_ghost001"; //:: Dwarven Ghost, Wizard: 30 HD / CR 50 } break; } // } } //:: End Scaled group - Incorporeal Undead //::////////////////////////////////////////////// //:: Individual scaled spawns below //:: //::////////////////////////////////////////////// //:: Scaled group - Angel of Decay if (sTemplate == "grp_aod") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 36 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: case 36: sRetTemplate = "angelofdecay001"; //:: Angel of Decay: 26 HD / CR36 break; // // Spawn Something up to CR 40 case 37: case 38: case 39: case 40: sRetTemplate = "angelofdecay001"; //:: Angel of Decay: 30 HD / CR40 break; // // Spawn Something up to CR 44 case 41: case 42: case 43: case 44: sRetTemplate = "angelofdecay003"; //:: Angel of Decay: 34 HD / CR44 break; // // Spawn Something up to CR 48 case 45: case 46: case 47: case 48: sRetTemplate = "angelofdecay004"; //:: Angel of Decay: 38 HD / CR48 break; // // Spawn the Default mob default: sRetTemplate = "angelofdecay005"; //:: Angel of Decay: 42 HD / CR49 break; // } } //:: End Scaled group - Angel of Decay //:: Scaled group - Blaspheme if (sTemplate == "grp_blaspheme") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 24 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: sRetTemplate = "blaspheme001"; //:: blaspheme001 / CR23 break; // // Spawn Something up to CR 29 case 25: case 26: case 27: case 28: case 29: sRetTemplate = "blaspheme002"; //:: Blaspheme: 22 HD / CR28 break; // // Spawn Something up to CR 33 case 30: case 31: case 32: case 33: sRetTemplate = "blaspheme003"; //:: Blaspheme: 26 HD / CR32 break; // // Spawn Something up to CR 40 case 34: case 35: case 36: case 37: case 38: case 39: case 40: sRetTemplate = "blaspheme004"; //:: Blaspheme: 30 HD / CR37 break; // // Spawn the Default mob default: sRetTemplate = "blaspheme005"; //:: Blaspheme: 34 HD / CR42 break; // } } //:: End Scaled group - Blaspheme //:: Scaled group - Bleakborn if (sTemplate == "grp_bleakborn") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 24 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: sRetTemplate = "bleakborn001"; //:: Bleakborn: 06 HD / CR9 break; // // Spawn the Default mob default: sRetTemplate = "bleakborn002"; //:: Bleakborn: 10 HD / CR13 break; // } } //:: End Scaled group - Bleakborn //:: Scaled group - Boneklaw if (sTemplate == "grp_boneklaw") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 16 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: sRetTemplate = "boneclaw001"; //:: Boneklaw: 10 HD / CR16 break; // // Spawn Something up to CR 21 case 17: case 18: case 19: case 20: case 21: sRetTemplate = "boneclaw002"; //:: Boneklaw: 14 HD / CR21 break; // // Spawn Something up to CR 25 case 22: case 23: case 24: case 25: sRetTemplate = "boneclaw003"; //:: Boneklaw: 18 HD / CR25 break; // // Spawn the Default mob default: sRetTemplate = "boneclaw004"; //:: Boneklaw: 22 HD / CR28 break; // } } //:: End Scaled group - Boneklaw //:: Scaled group - Boneyard if (sTemplate == "grp_boneyard") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 23 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: sRetTemplate = "boneyard001"; //:: Boneyard: 17 HD / CR23 break; // // Spawn Something up to CR 30 case 24: case 25: case 26: case 27: case 28: case 29: case 30: sRetTemplate = "boneyard002"; //:: Boneklaw: 14 HD / CR21 break; // // Spawn Something up to CR 34-49 case 31: case 32: case 33: case 34: case 35: case 36: case 37: case 38: case 39: case 40: case 41: case 42: case 43: case 44: case 45: case 46: case 47: case 48: case 49: sRetTemplate = "boneyard003"; //:: Boneklaw: 18 HD / CR25 break; // // Spawn the Default mob default: sRetTemplate = "boneyard008"; //:: Boneyard: 50 HD / CR62 break; // } } //:: End Scaled group - Boneyard //:: Scaled group - Cinderspawn if (sTemplate == "grp_cinder") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 15 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: sRetTemplate = "cinderspawn001"; //:: Cinderspawn: 10 HD / CR14 break; // // Spawn Something up to CR 21 case 16: case 17: case 18: case 19: case 20: case 21: sRetTemplate = "cinderspawn002"; //:: Cinderspawn: 14 HD / CR20 break; // // Spawn Something up to CR 26 case 22: case 23: case 24: case 25: case 26: sRetTemplate = "cinderspawn003"; //:: Cinderspawn: 18 HD / CR25 break; // Spawn Something up to CR 31 case 27: case 28: case 29: case 30: case 31: sRetTemplate = "cinderspawn004"; //:: Cinderspawn: 22 HD / CR30 break; // // Spawn Something up to CR 32-41 case 32: case 33: case 34: case 35: case 36: case 37: case 38: case 39: case 40: case 41: sRetTemplate = "cinderspawn005"; //:: Cinderspawn: 26 HD / CR35 break; // // Spawn the Default mob default: sRetTemplate = "cinderspawn006"; //:: Cinderspawn: 30 HD / CR41 break; // } } //:: End Scaled group - Cinderspawn //:: Scaled group - Crypt Chanter if (sTemplate == "grp_chanter") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 8 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: sRetTemplate = "cryptchanter001"; //:: Crypt Chanter: 07 HD / CR8 break; // // Spawn Something up to CR 14 case 9: case 10: case 11: case 12: case 13: case 14: sRetTemplate = "cryptchanter002"; //:: Crypt Chanter: 12 HD / CR14 break; // // Spawn the Default mob default: sRetTemplate = "cryptchanter003"; //:: Crypt Chanter: 17 HD / CR19 break; // } } //:: End Scaled group - Crypt Chanter //:: Scaled group - Dream Vestige if (sTemplate == "grp_vestige") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 23 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: sRetTemplate = "dreamvestige001"; //:: Dream Vestige: 17 HD / CR23 break; // // Spawn Something up to CR 28 case 25: case 26: case 27: case 28: sRetTemplate = "dreamvestige002"; //:: Dream Vestige: 21 HD / CR28 break; // // Spawn the Default mob default: sRetTemplate = "dreamvestige003"; //:: Dream Vestige: 25 HD / CR32 break; // } } //:: End Scaled group - Dream Vestige //:: Scaled group - Ghouls & Ghasts if (sTemplate == "grp_ghasts") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something with CR 1-4 case 1: case 2: case 3: case 4: sRetTemplate = "nw_ghoul"; //:: Ghoul: 02 HD / CR3 break; // // Spawn Something with CR 5-8 case 5: case 6: case 7: case 8: sRetTemplate = "NW_GHAST"; //:: Ghast: 04 HD / CR5 break; // // Spawn Something with 9-10 case 9: case 10: sRetTemplate = "GHAST003"; //:: Ghast: 05 HD / CR7 break; // // Spawn Default default: sRetTemplate = "GHAST002"; //:: Ghast: 08 HD / CR10 break; // } } //:: End Scaled group - Ghouls & Ghasts //:: Scaled group - Hulking Corpse if (sTemplate == "grp_hulkcorpse") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 18 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: sRetTemplate = "hulkcorpse001"; //:: Hulking Corpse: 20 HD / CR17 break; // // Spawn Something up to CR 22 case 19: case 20: case 21: case 22: sRetTemplate = "hulkcorpse002"; //:: Hulking Corpse: 24 HD / CR20 break; // // Spawn Something up to CR 26 case 23: case 24: case 25: case 26: sRetTemplate = "hulkcorpse003"; //:: Hulking Corpse: 28 HD / CR23 break; // // Spawn Something up to CR 30 case 27: case 28: case 29: case 30: sRetTemplate = "hulkcorpse004"; //:: Hulking Corpse: 32 HD / CR27 break; // // Spawn Something up to CR 34 case 31: case 32: case 33: case 34: sRetTemplate = "hulkcorpse005"; //:: Hulking Corpse: 36 HD / CR29 break; // // Spawn Something up to CR 36 case 35: case 36: sRetTemplate = "hulkcorpse006"; //:: Hulking Corpse: 40 HD / CR32 break; // // Spawn Something up to CR 38 case 37: case 38: sRetTemplate = "hulkcorpse007"; //:: Hulking Corpse: 44 HD / CR35 break; // // Spawn Something up to CR 40 case 39: case 40: sRetTemplate = "hulkcorpse008"; //:: Hulking Corpse: 48 HD / CR38 break; // // Spawn Something up to CR 44 case 41: case 42: case 43: case 44: sRetTemplate = "hulkcorpse009"; //:: Hulking Corpse: 52 HD / CR41 break; // // Spawn Something up to CR 48 case 45: case 46: case 47: case 48: sRetTemplate = "hulkcorpse010"; //:: Hulking Corpse: 56 HD / CR44 break; // // Spawn the Default mob default: sRetTemplate = "hulkcorpse011"; //:: Hulking Corpse: 60 HD / CR47 break; // } } //:: End Scaled group - Hulking Corpse //:: Scaled group - Mummy if (sTemplate == "grp_mummy") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 5 case 1: case 2: case 3: case 4: case 5: sRetTemplate = "nw_mummy"; //:: Mummy: 06HD / CR5 break; // // Spawn Something up to CR 10 case 6: case 7: case 8: case 9: case 10: { int nRandom = d2(1); if(nRandom == 1) { sRetTemplate = "nw_mumcleric"; //:: Greater Mummy: 12 HD / CR10 } else { sRetTemplate = "nw_mumfight"; //:: Warrior Mummy: 12 HD / CR10 } break; } // // Spawn Something up to CR 11-18 case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: sRetTemplate = "nw_mummyboss"; //:: Mummy Lord: 12 HD / CR11 break; // // Spawn the Default mob default: sRetTemplate = "poa_mummy001"; //:: Greater Mummy of Orcus: 25 HD / CR19 break; // } } //:: End Scaled group - Mummy //:: Scaled group - Plague Blight if (sTemplate == "grp_blight") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 8 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: sRetTemplate = "plagueblight001"; //:: Plague Blight: 06 HD / CR6 break; // // Spawn Something up to CR 11 case 9: case 10: case 11: sRetTemplate = "plagueblight002"; //:: Plague Blight: 09 HD / CR9 break; // // Spawn Something up to CR 13 case 12: case 13: sRetTemplate = "plagueblight003"; //:: Plague Blight: 12 HD / CR11 break; // // Spawn Something up to CR 16 case 14: case 15: case 16: sRetTemplate = "plagueblight004"; //:: Plague Blight: 15 HD / CR14 break; // // Spawn the Default mob default: sRetTemplate = "plagueblight005"; //:: Plague Blight: 18 HD / CR17 break; // } } //:: End Scaled group - Plague Blight //:: Scaled group - Shadow if (sTemplate == "grp_shadow") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 3 case 1: case 2: case 3: { int nRandom = d3(1); if(nRandom == 1) { sRetTemplate = "haunt"; //:: Haunt: 01 HD / CR3 } else if (nRandom == 2) { sRetTemplate = "ar_shadowrat002"; //:: Shadow Rat, Dire: 01 HD / CR3 } else { sRetTemplate = "shadow003"; //:: Shadow: 01 HD / CR3 } break; } // // Spawn Something with CR 4 case 4: sRetTemplate = "nw_shadow"; //:: Shadow: 03 HD / CR4 break; // // Spawn Something with CR 5-9 case 5: case 6: case 7: case 8: case 9: sRetTemplate = "ar_shadowrat003"; //:: Shadow Rat, Dire: 04 HD / CR5 break; // // Spawn Something with CR 10-40 case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: case 36: case 37: case 38: case 39: case 40: sRetTemplate = "shadow002"; //:: Shadow: 09 HD / CR11 break; // // Spawn Default Mob default: sRetTemplate = "demonshadow1"; //:: Demonic Shadow Fiend: 46 HD / CR46 break; } } //:: End Scaled group - Shadow //:: Scaled group - Voidwraith if (sTemplate == "grp_void") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 13 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: sRetTemplate = "voidwraith001"; //:: Voidwraith: 06 HD / CR13 break; // // Spawn Something up to CR 18 case 14: case 15: case 16: case 17: case 18: sRetTemplate = "voidwraith002"; //:: Voidwraith: 09 HD / CR18 break; // // Spawn Something up to CR 27 case 19: case 20: case 21: case 22: case 23:case 25: case 26: case 27: sRetTemplate = "voidwraith003"; //:: Voidwraith: 12 HD / CR27 break; // // Spawn Something up to CR 33 case 28: case 29: case 30: case 31: case 32: case 33: sRetTemplate = "voidwraith004"; //:: Voidwraith: 15 HD / CR33 break; // // Spawn the Default mob default: sRetTemplate = "voidwraith005"; //:: Voidwraith: 18 HD / CR40 break; // } } //:: End Scaled group - Voidwraith //:: Scaled group - Wight if (sTemplate == "grp_wight") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 5 case 1: case 2: case 3: case 4: case 5: sRetTemplate = "nw_wight"; //:: Wight: 04 HD / CR4 break; // // Spawn Something up to CR 9 case 6: case 7: case 8: case 9: sRetTemplate = "ra_wight002"; //:: Wight: 08 HD / CR8 break; // // Spawn Something up to CR 13 case 10: case 11: case 12: case 13: sRetTemplate = "ra_wight003"; //:: Wight, Advanced: 12 HD / CR12 break; // // Spawn Something up to CR 18 case 14: case 15: case 16: case 17: case 18: sRetTemplate = "ra_wight004"; //:: Wight, Advanced: 16 HD / CR16 break; // // Spawn Something up to CR 22 case 19: case 20: case 21: case 22: sRetTemplate = "slaughterwight01"; //:: Slaughter Wight: 18 HD / CR21 break; // // Spawn Something up to CR 24 case 23: case 24: sRetTemplate = "slaughterwight02"; //:: Slaughter Wight: 21 HD / CR23 break; // // Spawn Something up to CR 28 case 25: case 26: case 27: case 28: sRetTemplate = "slaughterwight03"; //:: Slaughter Wight: 24 HD / CR27 break; // // Spawn Something up to CR 42: case 29: case 30: case 31: case 32: case 33: case 34: case 35: case 36: case 37: case 38: case 39: case 40: case 41: case 42: case 43: case 44: case 45: case 46: case 47: case 48: case 49: case 50: sRetTemplate = "slaughterwight04"; //:: Slaughter Wight: 28 HD / CR29 break; // // Spawn the Default mob default: sRetTemplate = "winterwight001"; //:: Winterwight: 32 HD / CR41 break; // } } //:: End Scaled group - Wight //:: Scaled group - Wraith if (sTemplate == "grp_wraith") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 10 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: sRetTemplate = "nw_wraith"; //:: Wraith: 05 HD / CR7 break; // // Spawn Something up to CR 16 case 11: case 12: case 13: case 14: case 15: case 16: sRetTemplate = "ar_wraith002"; //:: Wraith: 10 HD / CR14 break; // // Spawn the Default mob default: sRetTemplate = "ar_wraith008"; //:: Wraith, Advanced: 14 HD / CR19 break; // } } //:: End Scaled group - Wraith //:: Scaled group - Wraith, Dread if (sTemplate == "grp_dread") { // Initialize Variables int nTotalPCs; int nTotalPCLevel; int nAveragePCLevel; object oArea = GetArea(OBJECT_SELF); // Cycle through PCs in Area object oPC = GetFirstObjectInArea(oArea); while (oPC != OBJECT_INVALID) { if (GetIsPC(oPC) == TRUE || GetIsPC(GetMaster(oPC)) == TRUE) //:: Summons & henchmen should count towards this. { nTotalPCs++; nTotalPCLevel = nTotalPCLevel + GetHitDice(oPC); } oPC = GetNextObjectInArea(oArea); } if (nTotalPCs > 0) { nAveragePCLevel = nTotalPCLevel / nTotalPCs; } else { nAveragePCLevel = 3; } // Select a Creature to Spawn switch (nAveragePCLevel) { // Spawn Something up to CR 24 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: sRetTemplate = "ar_wraith003"; //:: Wraith, Dread: 16 HD / CR24 break; // // Spawn Something up to CR 29 case 25: case 26: case 27: case 28: case 29: sRetTemplate = "ar_wraith004"; //:: Wraith, Dread: 20 HD / CR29 break; // // Spawn Something up to CR 35 case 30: case 31: case 32: case 33: case 34: case 35: sRetTemplate = "ar_wraith005"; //:: Wraith, Dread: 24 HD / CR35 break; // // Spawn Something up to CR 40 case 36: case 37: case 38: case 39: case 40: sRetTemplate = "ar_wraith006"; //:: Wraith, Dread: 28 HD / CR40 break; // // Spawn the Default mob default: sRetTemplate = "ar_wraith007"; //:: Wraith, Dread: 32 HD / CR45 break; // } } //:: End Scaled group - Wraith, Dread // ------------------------------------------- // Only Make Modifications Between These Lines // return sRetTemplate; }