X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=mods%2Fmob%2Fspawning.lua;h=0d66c26be9a8120a19122a555c3eaf62ee18c57a;hb=e98beca706de79126ae6a439a4663081cfd9e47f;hp=d871503ccb8881df3913018b3dbc9c4498d1b408;hpb=03ec60ee2e2e93ed4687d9746f7fa172311e4ce4;p=Crafter.git diff --git a/mods/mob/spawning.lua b/mods/mob/spawning.lua index d871503..0d66c26 100644 --- a/mods/mob/spawning.lua +++ b/mods/mob/spawning.lua @@ -1,7 +1,11 @@ --this is where mob spawning is defined --spawn mob in a square doughnut shaped radius -local chance = 20 +local timer = 6 +--the amount of mobs that the game will try to spawn +local spawn_goal = 10 +--the amount of mobs that the spawner will cap out at +local mob_limit = 100 --inner and outer part of square donut radius local inner = 24 local outer = 80 @@ -11,13 +15,14 @@ local find_node_height = 32 --for debug testing to isolate mobs local spawn = true -local spawn_table = {"pig"} -local dark_spawn_table = {"creeper"} -local nether_spawn_table = {"creeper"} +local spawn_table = {"pig","chicken","sheep"} +local snow_spawn_table = {"snowman","snoider","sneeper",} +local dark_spawn_table = {"creeper","creeper","creeper","spider","spider","spider","big_slime","medium_slime","small_slime"} +local nether_spawn_table = {"nitro_creeper"} local aether_spawn_table = {"phyg"} local function spawn_mobs() - print("---------------------------------------------") + --print("---------------------------------------------") if spawn and global_mob_amount < mob_limit then --check through players for _,player in ipairs(minetest.get_connected_players()) do @@ -50,37 +55,50 @@ local function spawn_mobs() --print(dump(spawner)) if table.getn(spawner) > 0 then local mob_pos = spawner[1] + mob_pos.y = mob_pos.y + 1 --aether spawning if mob_pos.y >= 21000 then - mob_pos.y = mob_pos.y + 1 local mob_spawning = aether_spawn_table[math.random(1,table.getn(aether_spawn_table))] - print("Aether Spawning "..mob_spawning.." at: "..minetest.pos_to_string(mob_pos)) + --print("Aether Spawning "..mob_spawning.." at: "..minetest.pos_to_string(mob_pos)) minetest.add_entity(mob_pos,"mob:"..mob_spawning) elseif mob_pos.y <= -10033 and mob_pos.y >= -20112 then - mob_pos.y = mob_pos.y + 1 local mob_spawning = nether_spawn_table[math.random(1,table.getn(nether_spawn_table))] - print("Nether Spawning "..mob_spawning.." at: "..minetest.pos_to_string(mob_pos)) + --print("Nether Spawning "..mob_spawning.." at: "..minetest.pos_to_string(mob_pos)) minetest.add_entity(mob_pos,"mob:"..mob_spawning) else local light_level = minetest.get_node_light(spawner[1]) - if light_level < 10 then - mob_pos.y = mob_pos.y + 1 + if weather_type == 1 then + local mob_spawning = snow_spawn_table[math.random(1,table.getn(snow_spawn_table))] + --print("Snow Spawning "..mob_spawning.." at: "..minetest.pos_to_string(mob_pos)) + minetest.add_entity(mob_pos,"mob:"..mob_spawning) + elseif light_level < 10 then local mob_spawning = dark_spawn_table[math.random(1,table.getn(dark_spawn_table))] - print("Dark Spawning "..mob_spawning.." at: "..minetest.pos_to_string(mob_pos)) + --print("Dark Spawning "..mob_spawning.." at: "..minetest.pos_to_string(mob_pos)) minetest.add_entity(mob_pos,"mob:"..mob_spawning) else - mob_pos.y = mob_pos.y + 1 local mob_spawning = spawn_table[math.random(1,table.getn(spawn_table))] - print("Light Spawning "..mob_spawning.." at: "..minetest.pos_to_string(mob_pos)) + --print("Light Spawning "..mob_spawning.." at: "..minetest.pos_to_string(mob_pos)) minetest.add_entity(mob_pos,"mob:"..mob_spawning) end end end end end - minetest.after(6, function() + + --fine tune mobs + local after_timer = global_mob_amount/spawn_goal + if after_timer > timer then + after_timer = timer + end + + minetest.after(after_timer, function() spawn_mobs() end) end - -spawn_mobs() \ No newline at end of file +if spawn then + minetest.register_on_mods_loaded(function() + minetest.after(0,function() + spawn_mobs() + end) + end) +end