diff --git a/deco.lua b/deco.lua index dbcb2f5..29a5864 100644 --- a/deco.lua +++ b/deco.lua @@ -36,7 +36,7 @@ minetest.add_group("default:cactus", {oddly_breakable_by_hand=1}) dofile(fun_caves.path.."/deco_caves.lua") --dofile(fun_caves.path.."/deco_dirt.lua") dofile(fun_caves.path.."/deco_plants.lua") ---dofile(fun_caves.path.."/deco_rocks.lua") +dofile(fun_caves.path.."/deco_rocks.lua") --dofile(fun_caves.path.."/deco_ferns.lua") --dofile(fun_caves.path.."/deco_ferns_tree.lua") dofile(fun_caves.path.."/deco_water.lua") diff --git a/deco_rocks.lua b/deco_rocks.lua new file mode 100644 index 0000000..164bf28 --- /dev/null +++ b/deco_rocks.lua @@ -0,0 +1,99 @@ +-- Place a small nodebox. +local function small_cube(grid, pos, diameters) + local rock = {} + + rock[1] = pos.x + rock[2] = pos.y + rock[3] = pos.z + rock[4] = pos.x + diameters.x + rock[5] = pos.y + diameters.y + rock[6] = pos.z + diameters.z + grid[#grid+1] = rock +end + +-- Create some tiles of small rocks that can be picked up. +local default_grid +local tiles = {"default_stone.png", "default_desert_stone.png", "default_sandstone.png"} + +for grid_count = 1,6 do + local grid = {} + for rock_count = 2, math.random(1,4) + 1 do + local diameter = math.random(5,15)/100 + local x = math.random(1,80)/100 - 0.5 + local z = math.random(1,80)/100 - 0.5 + --step_sphere(grid, {x=x,y=-0.5,z=z}, {x=diameter, y=diameter, z=diameter}) + small_cube(grid, {x=x,y=-0.5,z=z}, {x=diameter, y=diameter, z=diameter}) + end + + --local stone = tiles[math.random(1,#tiles)] + local stone = tiles[(grid_count % #tiles) + 1] + + minetest.register_node("fun_caves:small_rocks"..grid_count, { + description = "Small Rocks", + tiles = {stone}, + is_ground_content = true, + walkable = false, + paramtype = "light", + drawtype = "nodebox", + buildable_to = true, + node_box = { type = "fixed", + fixed = grid }, + selection_box = { type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, + groups = {stone=1, oddly_breakable_by_hand=3}, + drop = "fun_caves:small_rocks", + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_decoration({ + deco_type = "simple", + decoration = "fun_caves:small_rocks"..grid_count, + sidelen = 80, + place_on = {"group:soil", "group:sand"}, + fill_ratio = 0.001, + biomes = {"sandstone_grassland", "tundra", "taiga", "stone_grassland", "coniferous_forest", "deciduous_forest", "desert", "savanna", "rainforest", }, + flags = "place_center_x, place_center_z", + rotation = "random", + }) + + default_grid = grid +end + +-- This is the inventory item, so we don't have six different stacks. +minetest.register_node("fun_caves:small_rocks", { + description = "Small Rocks", + tiles = {"default_stone.png"}, + inventory_image = "fun_caves_small_rocks.png", + is_ground_content = true, + walkable = false, + paramtype = "light", + drawtype = "nodebox", + node_box = { type = "fixed", + fixed = default_grid }, + selection_box = { type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, + groups = {stone=1, oddly_breakable_by_hand=3}, + sounds = default.node_sound_stone_defaults(), +}) + +-- Small rocks can be used to create cobblestone, if you like. +minetest.register_craft({ + output = "default:cobble", + recipe = { + {"", "", ""}, + {"fun_caves:small_rocks", "fun_caves:small_rocks", ""}, + {"fun_caves:small_rocks", "fun_caves:small_rocks", ""}, + }, +}) + +minetest.register_craft({ + output = "default:stick", + recipe = { + {"", "", ""}, + {"default:dry_shrub", "default:dry_shrub", ""}, + {"default:dry_shrub", "default:dry_shrub", ""}, + }, +}) + diff --git a/mobs.lua b/mobs.lua index bd59e8b..55764d2 100644 --- a/mobs.lua +++ b/mobs.lua @@ -50,6 +50,7 @@ end dofile(fun_caves.path .. "/danglers.lua") dofile(fun_caves.path .. "/spider.lua") +dofile(fun_caves.path .. "/tarantula.lua") dofile(fun_caves.path .. "/spider_ice.lua") --dofile(fun_caves.path .. "/dirt_monster.lua") dofile(fun_caves.path .. "/sand_monster.lua") diff --git a/tarantula.lua b/tarantula.lua new file mode 100644 index 0000000..54172f5 --- /dev/null +++ b/tarantula.lua @@ -0,0 +1,60 @@ + +-- Spider by AspireMint (fishyWET (CC-BY-SA 3.0 license for texture) + +mobs:register_mob("fun_caves:tarantula", { + docile_by_day = true, + type = "monster", + passive = false, + attack_type = "dogfight", + reach = 1, + damage = 1, + hp_min = 1, + hp_max = 2, + armor = 200, + collisionbox = {-0.15, -0.01, -0.15, 0.15, 0.1, 0.15}, + visual = "mesh", + mesh = "fun_caves_spider.x", + textures = { + {"fun_caves_tarantula.png"}, + }, + visual_size = {x = 1, y = 1}, + makes_footstep_sound = false, + --sounds = { + -- random = "mobs_spider", + -- attack = "mobs_spider", + --}, + walk_velocity = 1, + run_velocity = 2, + jump = false, + view_range = 15, + floats = 0, + drops = { + {name = "mobs:meat_raw", chance = 1, min = 1, max = 1}, + }, + water_damage = 0, + lava_damage = 5, + light_damage = 0, + animation = { + speed_normal = 15, + speed_run = 15, + stand_start = 1, + stand_end = 1, + walk_start = 20, + walk_end = 40, + run_start = 20, + run_end = 40, + punch_start = 50, + punch_end = 90, + }, + do_custom = function(self) + if not self.fun_caves_damage_timer then + self.fun_caves_damage_timer = 0 + end + + fun_caves.surface_damage(self) + end, +}) + +mobs:register_spawn("fun_caves:tarantula", {"default:desert_sand"}, 99, 0, 2000, 2, 31000) + +--mobs:register_egg("fun_caves:spider", "Deep Spider", "mobs_cobweb.png", 1)