Well, now that last update is live I can move the spawning table from 2da to JSON arrays like this:
//SCALING VARIABLES
// Initialize Variables
int nPC_count;
int nPC_total_lvl;
int nPC_Average_lvl;
object oPC_Area = GetArea(OBJECT_SELF);
// Cycle through PCs in Area
object oPC_temp = GetFirstObjectInArea(oPC_Area);
while (oPC_temp != OBJECT_INVALID)
{
if (GetIsPC(oPC_temp) == TRUE)
{
nPC_count++;
nPC_total_lvl = nPC_total_lvl + GetHitDice(oPC_temp);
}
oPC_temp = GetNextObjectInArea(oPC_Area);
}
if (nPC_count == 0)
{
nPC_Average_lvl = 0;
}
else
{
nPC_Average_lvl = nPC_total_lvl / nPC_count;
}
/////////////////////////////////////
//TABLA SPAWN ///////////////////////
/////////////////////////////////////
if (sTemplate == "tabla_spawn")
{
json spawnArray;
string eModel = GetLocalString (oSpawn, "eModel");
string eModelCR = GetLocalString (oSpawn, "eModelTabla");
int iCRmax = nPC_Average_lvl;
if (eModelCR == "CR" || eModelCR == "CRS") {
iCRmax = Random(iCRmax)+1;
} else {
iCRmax = 0;
}
/*************************************/
/*************************************/
/********* AMBIENT SPAWNS ************/
/*************************************/
/*************************************/
if (eModel == "amb_farmlands") { // FARMLANDS
switch (20) {
case 0: { eModel = "mbst_worg"; break; }
default: {
switch (10) {
case 0: { eModel = "anim_boar"; break; }
case 1: { eModel = "anim_bear"; break; }
case 2: { eModel = "anim_cougar"; break; }
case 3: { eModel = "anim_falcon"; break; }
case 4: { eModel = "anim_wolf"; break; }
default: { eModel = "anim_badger"; break; }
}
break;
}
}
}
if (eModel == "amb_hills") { // HILLS
switch (20) {
case 0: { eModel = "ogre_common"; break; }
case 1: { eModel = "ettin_common"; break; }
case 2: { eModel = "giant_hill_common"; break; }
case 3: { eModel = "giant_hill_common"; break; }
default: {
switch (10) {
case 0: { eModel = "anim_badger"; break; }
case 1: { eModel = "anim_boar"; break; }
case 2: { eModel = "anim_cougar"; break; }
case 3: { eModel = "anim_falcon"; break; }
case 4: { eModel = "anim_wolf"; break; }
default: { eModel = "anim_bear"; break; }
}
break;
}
}
}
if (eModel == "amb_plains") { // PLAINS
switch (20) {
case 0: { eModel = "ogre_common"; break; }
case 1: { eModel = "ettin_common"; break; }
default: {
switch (10) {
case 0: { eModel = "anim_badger"; break; }
case 1: { eModel = "anim_bear"; break; }
case 2: { eModel = "anim_cougar"; break; }
case 3: { eModel = "anim_falcon"; break; }
case 4: { eModel = "anim_wolf"; break; }
default: { eModel = "anim_boar"; break; }
}
break;
}
}
}
if (eModel == "amb_swamp") { // SWAMP
switch (20) {
case 0: { eModel = "ogre_common"; break; }
default: { eModel = "anim_snake"; break; }
}
}
if (eModel == "amb_woods") { // WOODS
switch (20) {
case 0: { eModel = "ogre_common"; break; }
case 1: { eModel = "ettin_common"; break; }
default: {
switch (10) {
case 0: { eModel = "anim_badger"; break; }
case 1: { eModel = "anim_boar"; break; }
case 2: { eModel = "anim_cougar"; break; }
case 3: { eModel = "anim_falcon"; break; }
case 4: { eModel = "anim_bear"; break; }
default: { eModel = "anim_wolf"; break; }
}
break;
}
}
}
/****************************/
/****************************/
/********* ANIMALS **********/
/****************************/
/****************************/
if (eModel == "anim_badger") { // BADGER - CR
spawnArray = JsonParse (
"[\"an_badger_01\",\"an_badger_02\",\"an_badger_dire03\",\"an_badger_dire05\",\"an_badger_dire05\","
+"\"an_badger_dire06\",\"an_badger_dire06\",\"an_badger_dire06\",\"an_badger_dire06\",\"an_badger_dire06\","
+"\"an_badger_dire06\",\"an_badger_dire06\",\"an_badger_dire06\",\"an_badger_dire06\",\"an_badger_dire06\","
+"\"an_badger_dire06\",\"an_badger_dire06\",\"an_badger_dire06\",\"an_badger_dire06\",\"an_badger_dire06\"]"
);
}
if (eModel == "anim_bat") { // BAT - CR
spawnArray = JsonParse (
"[\"an_bat_01\",\"an_bat_01\",\"an_bat_dire_04\",\"an_bat_dire_04\",\"an_bat_dire_08\","
+"\"an_bat_dire_08\",\"an_bat_dire_12\",\"an_bat_dire_12\",\"an_bat_dire_12\",\"an_bat_dire_12\","
+"\"an_bat_dire_12\",\"an_bat_dire_12\",\"an_bat_dire_12\",\"an_bat_dire_12\",\"an_bat_dire_12\","
+"\"an_bat_dire_12\",\"an_bat_dire_12\",\"an_bat_dire_12\",\"an_bat_dire_12\",\"an_bat_dire_12\"]"
);
}
if (eModel == "anim_bear") { // BEAR - CR
spawnArray = JsonParse (
"[\"an_bear02\",\"an_bear02\",\"an_bear03\",\"an_bear05\",\"an_bear05\","
+"\"an_bear06\",\"an_bear06\",\"an_bear07\",\"an_bear_dire09\",\"an_bear_dire09\","
+"\"an_bear_dire11\",\"an_bear_dire11\",\"an_bear_dire14\",\"an_bear_dire14\",\"an_bear_dire16\","
+"\"an_bear_dire16\",\"an_bear_dire19\",\"an_bear_dire19\",\"an_bear_dire21\",\"an_bear_dire21\"]"
);
}
if (eModel == "anim_boar") { // BOAR - CR
spawnArray = JsonParse (
"[\"an_boar_03\",\"an_boar_03b\",\"an_boar_03c\",\"an_boar_04\",\"an_boar_04\","
+"\"an_boar_dire5\",\"an_boar_dire5\",\"an_boar_dire7\",\"an_boar_dire7\",\"an_boar_dire9\","
+"\"an_boar_dire11\",\"an_boar_dire11\",\"an_boar_dire11\",\"an_boar_dire11\",\"an_boar_dire11\","
+"\"an_boar_dire11\",\"an_boar_dire11\",\"an_boar_dire11\",\"an_boar_dire11\",\"an_boar_dire11\"]"
);
}
if (eModel == "anim_cougar") { // COUGAR - CR ยก?
spawnArray = JsonParse (
"[\"an_cougar_02\",\"an_cougar_02\",\"an_cougar_02\",\"an_cougar_04\",\"an_cougar_04\","
+"\"an_cougar_04\",\"an_cougar_04\",\"an_cougar_04\",\"an_cougar_04\",\"an_cougar_04\","
+"\"an_cougar_04\",\"an_cougar_04\",\"an_cougar_04\",\"an_cougar_04\",\"an_cougar_04\","
+"\"an_cougar_04\",\"an_cougar_04\",\"an_cougar_04\",\"an_cougar_04\",\"an_cougar_04\"]"
);
}
if (eModel == "anim_falcon") { // FALCON - CR
spawnArray = JsonParse (
"[\"an_falcon_01\",\"an_falcon_01\",\"an_falcon_04\",\"an_falcon_04\",\"an_falcon_07\","
+"\"an_falcon_07\",\"an_falcon_07\",\"an_falcon_11\",\"an_falcon_11\",\"an_falcon_15\","
+"\"an_falcon_15\",\"an_falcon_15\",\"an_falcon_15\",\"an_falcon_15\",\"an_falcon_15\","
+"\"an_falcon_15\",\"an_falcon_15\",\"an_falcon_15\",\"an_falcon_15\",\"an_falcon_15\"]"
);
}
if (eModel == "anim_horse") { // HORSE - Random
spawnArray = JsonParse (
"[\"an_horse_w\",\"an_horse_b\"]"
);
}
if (eModel == "anim_snake") { // SNAKE - CR
spawnArray = JsonParse (
"[\"an_snake_3\",\"an_snake_3\",\"an_snake_5\",\"an_snake_5\",\"an_snake_6\","
+"\"an_snake_6\",\"an_snake_9\",\"an_snake_9\",\"an_snake_12\",\"an_snake_12\","
+"\"an_snake_15\",\"an_snake_15\",\"an_snake_15\",\"an_snake_18\",\"an_snake_18\","
+"\"an_snake_18\",\"an_snake_18\",\"an_snake_18\",\"an_snake_18\",\"an_snake_18\"]"
);
}
if (eModel == "anim_wolf") { // WOLF - CR
spawnArray = JsonParse (
"[\"an_wolf_01\",\"an_wolf_02\",\"an_wolf_03\",\"an_wolf_04\",\"an_wolf_04\","
+"\"an_wolf_dire05\",\"an_wolf_dire05\",\"an_wolf_dire07\",\"an_wolf_dire07\",\"an_wolf_dire07\","
+"\"an_wolf_dire10\",\"an_wolf_dire10\",\"an_wolf_dire12\",\"an_wolf_dire12\",\"an_wolf_dire12\","
+"\"an_wolf_dire12\",\"an_wolf_dire12\",\"an_wolf_dire12\",\"an_wolf_dire12\",\"an_wolf_dire12\"]"
);
}
/****************************/
/****************************/
/********** GIANTS **********/
/****************************/
/****************************/
if (eModel == "ettin_common") { // ETTIN - CR
spawnArray = JsonParse (
"[\"ettin_10\",\"ettin_10\",\"ettin_10\",\"ettin_10\",\"ettin_10\","
+"\"ettin_10\",\"ettin_10\",\"ettin_10\",\"ettin_10\",\"ettin_10\","
+"\"ettin_10\",\"ettin_10\",\"ettin_10\",\"ettin_10\",\"ettin_10\","
+"\"ettin_10\",\"ettin_10\",\"ettin_10\",\"ettin_10\",\"ettin_10\"]"
);
}
if (eModel == "giant_hill_common") { // GIANT HILL - CR
spawnArray = JsonParse (
"[\"gnt_hill_12\",\"gnt_hill_12\",\"gnt_hill_12\",\"gnt_hill_12\",\"gnt_hill_12\","
+"\"gnt_hill_12\",\"gnt_hill_12\",\"gnt_hill_12\",\"gnt_hill_12\",\"gnt_hill_12\","
+"\"gnt_hill_12\",\"gnt_hill_12\",\"gnt_hill_12\",\"gnt_hill_12\",\"gnt_hill_12\","
+"\"gnt_hill_12\",\"gnt_hill_12\",\"gnt_hill_12\",\"gnt_hill_12\",\"gnt_hill_12\"]"
);
}
if (eModel == "ogre_common") { // OGRE - CR
spawnArray = JsonParse (
"[\"ogr_04\",\"ogr_04\",\"ogr_04\",\"ogr_04\",\"ogr_04\","
+"\"ogr_04\",\"ogr_04\",\"ogr_04\",\"ogr_04\",\"ogr_04\","
+"\"ogr_04\",\"ogr_04\",\"ogr_04\",\"ogr_04\",\"ogr_04\","
+"\"ogr_04\",\"ogr_04\",\"ogr_04\",\"ogr_04\",\"ogr_04\"]"
);
}
/****************************/
/****************************/
/******** HUMANOIDS *********/
/****************************/
/****************************/
if (eModel == "kobold") { // KOBOLDS - Sort
switch (10) {
case 0: { eModel = "kobold_caster"; break; }
case 1: { eModel = "kobold_boss"; break; }
case 2: { eModel = "kobold_boss"; break; }
default: { eModel = "kobold_melee"; break; }
}
}
if (eModel == "kobold_boss") { // KOBOLDS - Sort - BOSS
switch (5) {
case 0: { eModel = "kobold_boss_hero"; break; }
case 1: { eModel = "kobold_boss_trap"; break; }
default: { eModel = "kobold_boss_comm"; break; }
}
}
if (eModel == "kobold_boss_comm") { // KOBOLD - BOSS - Commander - CR
spawnArray = JsonParse (
"[\"kob_comm_02\",\"kob_comm_02\",\"kob_comm_02\",\"kob_comm_02\",\"kob_comm_02\","
+"\"kob_comm_07\",\"kob_comm_07\",\"kob_comm_07\",\"kob_comm_07\",\"kob_comm_07\","
+"\"kob_comm_14\",\"kob_comm_14\",\"kob_comm_14\",\"kob_comm_14\",\"kob_comm_14\","
+"\"kob_comm_20\",\"kob_comm_20\",\"kob_comm_20\",\"kob_comm_20\",\"kob_comm_20\"]"
);
}
if (eModel == "kobold_boss_hero") { // KOBOLD - BOSS - Hero - CR
spawnArray = JsonParse (
"[\"kob_comm_02\",\"kob_comm_02\",\"kob_comm_02\",\"kob_comm_02\",\"kob_comm_02\","
+"\"kob_hero_06\",\"kob_hero_06\",\"kob_hero_06\",\"kob_hero_06\",\"kob_hero_06\","
+"\"kob_hero_12\",\"kob_hero_12\",\"kob_hero_12\",\"kob_hero_12\",\"kob_hero_12\","
+"\"kob_hero_18\",\"kob_hero_18\",\"kob_hero_18\",\"kob_hero_18\",\"kob_hero_18\"]"
);
}
if (eModel == "kobold_boss_comm") { // KOBOLD - BOSS - Trapper - CR
spawnArray = JsonParse (
"[\"kob_comm_02\",\"kob_comm_02\",\"kob_comm_02\",\"kob_comm_02\",\"kob_comm_02\","
+"\"kob_trap_08\",\"kob_trap_08\",\"kob_trap_08\",\"kob_trap_08\",\"kob_trap_08\","
+"\"kob_trap_14\",\"kob_trap_14\",\"kob_trap_14\",\"kob_trap_14\",\"kob_trap_14\","
+"\"kob_trap_20\",\"kob_trap_20\",\"kob_trap_20\",\"kob_trap_20\",\"kob_trap_20\"]"
);
}
if (eModel == "kobold_caster") { // KOBOLDS - Sort - CASTER
switch (5) {
case 0: { eModel = "kobold_caster_sham"; break; }
case 1: { eModel = "kobold_caster_rdd"; break; }
default: { eModel = "kobold_caster_sorc"; break; }
}
}
if (eModel == "kobold_caster_rdd") { // KOBOLD - CASTER - Scale Sorcerer - CR
spawnArray = JsonParse (
"[\"kob_sor_05\",\"kob_sor_05\",\"kob_sor_05\",\"kob_rdd_06\",\"kob_rdd_06\","
+"\"kob_rdd_06\",\"kob_rdd_06\",\"kob_rdd_10\",\"kob_rdd_10\",\"kob_rdd_10\","
+"\"kob_rdd_10\",\"kob_rdd_15\",\"kob_rdd_15\",\"kob_rdd_15\",\"kob_rdd_15\","
+"\"kob_rdd_20\",\"kob_rdd_20\",\"kob_rdd_20\",\"kob_rdd_20\",\"kob_rdd_20\"]"
);
}
if (eModel == "kobold_caster_sham") { // KOBOLD - CASTER - Shaman - CR
spawnArray = JsonParse (
"[\"kob_sham_06\",\"kob_sham_06\",\"kob_sham_06\",\"kob_sham_06\",\"kob_sham_06\","
+"\"kob_sham_06\",\"kob_sham_06\",\"kob_sham_06\",\"kob_sham_13\",\"kob_sham_13\","
+"\"kob_sham_13\",\"kob_sham_13\",\"kob_sham_13\",\"kob_sham_13\",\"kob_sham_13\","
+"\"kob_sham_20\",\"kob_sham_20\",\"kob_sham_20\",\"kob_sham_20\",\"kob_sham_20\"]"
);
}
if (eModel == "kobold_caster_sorc") { // KOBOLD - CASTER - Sorcerer - CR
spawnArray = JsonParse (
"[\"kob_sor_05\",\"kob_sor_05\",\"kob_sor_05\",\"kob_sor_05\",\"kob_sor_05\","
+"\"kob_sor_10\",\"kob_sor_10\",\"kob_sor_10\",\"kob_sor_10\",\"kob_sor_10\","
+"\"kob_sor_15\",\"kob_sor_15\",\"kob_sor_15\",\"kob_sor_15\",\"kob_sor_15\","
+"\"kob_sor_20\",\"kob_sor_20\",\"kob_sor_20\",\"kob_sor_20\",\"kob_sor_20\"]"
);
}
if (eModel == "kobold_melee") { // KOBOLDS - Sort - MELEE
switch (5) {
case 0: { eModel = "kobold_melee_dragon"; break; }
case 1: { eModel = "kobold_melee_bully"; break; }
default: { eModel = "kobold_melee_brute"; break; }
}
}
if (eModel == "kobold_melee_brute") { // KOBOLD - MELEE - Brute - CR
spawnArray = JsonParse (
"[\"kob_1\",\"kob_1\",\"kob_1\",\"kob_brute_05\",\"kob_brute_05\","
+"\"kob_brute_05\",\"kob_brute_05\",\"kob_brute_10\",\"kob_brute_10\",\"kob_brute_10\","
+"\"kob_brute_15\",\"kob_brute_15\",\"kob_brute_15\",\"kob_brute_15\",\"kob_brute_15\","
+"\"kob_brute_20\",\"kob_brute_20\",\"kob_brute_20\",\"kob_brute_20\",\"kob_brute_20\"]"
);
}
if (eModel == "kobold_melee_bully") { // KOBOLD - MELEE - Bully - CR
spawnArray = JsonParse (
"[\"kob_1\",\"kob_1\",\"kob_1\",\"kob_1\",\"kob_bully_06\","
+"\"kob_bully_06\",\"kob_bully_06\",\"kob_bully_10\",\"kob_bully_10\",\"kob_bully_10\","
+"\"kob_bully_15\",\"kob_bully_15\",\"kob_bully_15\",\"kob_bully_15\",\"kob_bully_15\","
+"\"kob_bully_20\",\"kob_bully_20\",\"kob_bully_20\",\"kob_bully_20\",\"kob_bully_20\"]"
);
}
if (eModel == "kobold_melee_dragon") { // KOBOLD - MELEE - Dragonshield - CR
spawnArray = JsonParse (
"[\"kob_1\",\"kob_1\",\"kob_1\",\"kob_1\",\"kob_1\","
+"\"kob_1\",\"kob_1\",\"kob_drgs_08\",\"kob_drgs_08\",\"kob_drgs_12\","
+"\"kob_drgs_12\",\"kob_drgs_16\",\"kob_drgs_16\",\"kob_drgs_16\",\"kob_drgs_16\","
+"\"kob_drgs_20\",\"kob_drgs_20\",\"kob_drgs_20\",\"kob_drgs_20\",\"kob_drgs_20\"]"
);
}
/****************************/
/****************************/
/****** MAGICAL BEASTS ******/
/****************************/
/****************************/
if (eModel == "mbst_worg") { // WORG - CR
spawnArray = JsonParse (
"[\"mb_worg_04\",\"mb_worg_04\",\"mb_worg_04\",\"mb_worg_04\",\"mb_worg_06\","
+"\"mb_worg_06\",\"mb_worg_09\",\"mb_worg_09\",\"mb_worg_09\",\"mb_worg_12\","
+"\"mb_worg_12\",\"mb_worg_12\",\"mb_worg_12\",\"mb_worg_12\",\"mb_worg_12\","
+"\"mb_worg_12\",\"mb_worg_12\",\"mb_worg_12\",\"mb_worg_12\",\"mb_worg_12\"]"
);
}
/****************************/
/****************************/
/********* CHURCHES *********/
/****************************/
/****************************/
if (eModel == "chu_ilmater") {
spawnArray = JsonParse (
"[\"ilma_cle_hum04\",\"ilma_cle_huf04\","
+"\"ilma_pal_hum04\",\"ilma_cle_huf04\","
+"\"ilma_cle_hum04\",\"ilma_cle_huf04\"]"
);
}
////////////////////////// Prepare sRetTemplate //////////////////////////
string sRetTemplate;
if (iCRmax == 0) { //////// no CR adjustement
sRetTemplate = JsonGetString(JsonArrayGet(spawnArray,Random(JsonGetLength(spawnArray))));
} else { //////// apply CR adjustement
sRetTemplate = JsonGetString(JsonArrayGet(spawnArray,Random(iCRmax)));
}
return sRetTemplate;
}
Of course the arrays showed are a WIP.