123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444 |
- dofile(minetest.get_modpath("mobs").."/api.lua")
- mobs:register_mob("mobs:dirt_monster", {
- type = "monster",
- hp_max = 5,
- collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.9, 0.4},
- visual = "mesh",
- mesh = "mobs_stone_monster.x",
- textures = {"mobs_dirt_monster.png"},
- visual_size = {x=3, y=2.6},
- makes_footstep_sound = true,
- view_range = 15,
- walk_velocity = 1,
- run_velocity = 3,
- damage = 2,
- drops = {
- {name = "default:dirt",
- chance = 1,
- min = 3,
- max = 5,},
- },
- armor = 100,
- drawtype = "front",
- water_damage = 1,
- lava_damage = 5,
- light_damage = 2,
- on_rightclick = nil,
- attack_type = "dogfight",
- animation = {
- speed_normal = 15,
- speed_run = 15,
- stand_start = 0,
- stand_end = 14,
- walk_start = 15,
- walk_end = 38,
- run_start = 40,
- run_end = 63,
- punch_start = 40,
- punch_end = 63,
- }
- })
- mobs:register_spawn("mobs:dirt_monster", {"default:dirt_with_grass"}, 3, -1, 7000, 3, 31000)
- mobs:register_mob("mobs:stone_monster", {
- type = "monster",
- hp_max = 10,
- collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.9, 0.4},
- visual = "mesh",
- mesh = "mobs_stone_monster.x",
- textures = {"mobs_stone_monster.png"},
- visual_size = {x=3, y=2.6},
- makes_footstep_sound = true,
- view_range = 10,
- walk_velocity = 0.5,
- run_velocity = 2,
- damage = 3,
- drops = {
- {name = "default:mossycobble",
- chance = 1,
- min = 3,
- max = 5,},
- },
- light_resistant = true,
- armor = 80,
- drawtype = "front",
- water_damage = 0,
- lava_damage = 0,
- light_damage = 0,
- attack_type = "dogfight",
- animation = {
- speed_normal = 15,
- speed_run = 15,
- stand_start = 0,
- stand_end = 14,
- walk_start = 15,
- walk_end = 38,
- run_start = 40,
- run_end = 63,
- punch_start = 40,
- punch_end = 63,
- }
- })
- mobs:register_spawn("mobs:stone_monster", {"default:stone"}, 3, -1, 7000, 3, 0)
- mobs:register_mob("mobs:sand_monster", {
- type = "monster",
- hp_max = 3,
- collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.9, 0.4},
- visual = "mesh",
- mesh = "mobs_sand_monster.x",
- textures = {"mobs_sand_monster.png"},
- visual_size = {x=8,y=8},
- makes_footstep_sound = true,
- view_range = 15,
- walk_velocity = 1.5,
- run_velocity = 4,
- damage = 1,
- drops = {
- {name = "default:sand",
- chance = 1,
- min = 3,
- max = 5,},
- },
- light_resistant = true,
- armor = 100,
- drawtype = "front",
- water_damage = 3,
- lava_damage = 1,
- light_damage = 0,
- attack_type = "dogfight",
- animation = {
- speed_normal = 15,
- speed_run = 15,
- stand_start = 0,
- stand_end = 39,
- walk_start = 41,
- walk_end = 72,
- run_start = 74,
- run_end = 105,
- punch_start = 74,
- punch_end = 105,
- },
- })
- mobs:register_spawn("mobs:sand_monster", {"default:desert_sand"}, 20, -1, 7000, 3, 31000)
- mobs:register_mob("mobs:tree_monster", {
- type = "monster",
- hp_max = 5,
- collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.9, 0.4},
- visual = "mesh",
- mesh = "mobs_tree_monster.x",
- textures = {"mobs_tree_monster.png"},
- visual_size = {x=4.5,y=4.5},
- makes_footstep_sound = true,
- view_range = 15,
- walk_velocity = 1,
- run_velocity = 3,
- damage = 2,
- drops = {
- {name = "default:sapling",
- chance = 3,
- min = 1,
- max = 2,},
- {name = "default:junglesapling",
- chance = 3,
- min = 1,
- max = 2,},
- },
- light_resistant = true,
- armor = 100,
- drawtype = "front",
- water_damage = 1,
- lava_damage = 5,
- light_damage = 2,
- disable_fall_damage = true,
- attack_type = "dogfight",
- animation = {
- speed_normal = 15,
- speed_run = 15,
- stand_start = 0,
- stand_end = 24,
- walk_start = 25,
- walk_end = 47,
- run_start = 48,
- run_end = 62,
- punch_start = 48,
- punch_end = 62,
- },
- })
- mobs:register_spawn("mobs:tree_monster", {"default:leaves", "default:jungleleaves"}, 3, -1, 7000, 3, 31000)
- mobs:register_mob("mobs:sheep", {
- type = "animal",
- hp_max = 5,
- collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
- textures = {"mobs_sheep.png"},
- visual = "mesh",
- mesh = "mobs_sheep.x",
- makes_footstep_sound = true,
- walk_velocity = 1,
- armor = 200,
- drops = {
- {name = "mobs:meat_raw",
- chance = 1,
- min = 2,
- max = 3,},
- },
- drawtype = "front",
- water_damage = 1,
- lava_damage = 5,
- light_damage = 0,
- sounds = {
- random = "mobs_sheep",
- },
- animation = {
- speed_normal = 15,
- stand_start = 0,
- stand_end = 80,
- walk_start = 81,
- walk_end = 100,
- },
- follow = "farming:wheat",
- view_range = 5,
-
- on_rightclick = function(self, clicker)
- local item = clicker:get_wielded_item()
- if item:get_name() == "farming:wheat" then
- if not self.tamed then
- if not minetest.setting_getbool("creative_mode") then
- item:take_item()
- clicker:set_wielded_item(item)
- end
- self.tamed = true
- elseif self.naked then
- if not minetest.setting_getbool("creative_mode") then
- item:take_item()
- clicker:set_wielded_item(item)
- end
- self.food = (self.food or 0) + 1
- if self.food >= 8 then
- self.food = 0
- self.naked = false
- self.object:set_properties({
- textures = {"mobs_sheep.png"},
- mesh = "mobs_sheep.x",
- })
- end
- end
- return
- end
- if clicker:get_inventory() and not self.naked then
- self.naked = true
- if minetest.registered_items["wool:white"] then
- clicker:get_inventory():add_item("main", ItemStack("wool:white "..math.random(1,3)))
- end
- self.object:set_properties({
- textures = {"mobs_sheep_shaved.png"},
- mesh = "mobs_sheep_shaved.x",
- })
- end
- end,
- })
- mobs:register_spawn("mobs:sheep", {"default:dirt_with_grass"}, 20, 8, 9000, 1, 31000)
- minetest.register_craftitem("mobs:meat_raw", {
- description = "Raw Meat",
- inventory_image = "mobs_meat_raw.png",
- })
- minetest.register_craftitem("mobs:meat", {
- description = "Meat",
- inventory_image = "mobs_meat.png",
- on_use = minetest.item_eat(8),
- })
- minetest.register_craft({
- type = "cooking",
- output = "mobs:meat",
- recipe = "mobs:meat_raw",
- cooktime = 5,
- })
- mobs:register_mob("mobs:rat", {
- type = "animal",
- hp_max = 1,
- collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.2, 0.2},
- visual = "mesh",
- mesh = "mobs_rat.x",
- textures = {"mobs_rat.png"},
- makes_footstep_sound = false,
- walk_velocity = 1,
- armor = 200,
- drops = {},
- drawtype = "front",
- water_damage = 0,
- lava_damage = 1,
- light_damage = 0,
-
- on_rightclick = function(self, clicker)
- if clicker:is_player() and clicker:get_inventory() then
- clicker:get_inventory():add_item("main", "mobs:rat")
- self.object:remove()
- end
- end,
- })
- mobs:register_spawn("mobs:rat", {"default:dirt_with_grass", "default:stone"}, 20, -1, 7000, 1, 31000)
- minetest.register_craftitem("mobs:rat", {
- description = "Rat",
- inventory_image = "mobs_rat_inventory.png",
-
- on_place = function(itemstack, placer, pointed_thing)
- if pointed_thing.above then
- minetest.env:add_entity(pointed_thing.above, "mobs:rat")
- itemstack:take_item()
- end
- return itemstack
- end,
- })
-
- minetest.register_craftitem("mobs:rat_cooked", {
- description = "Cooked Rat",
- inventory_image = "mobs_cooked_rat.png",
-
- on_use = minetest.item_eat(3),
- })
- minetest.register_craft({
- type = "cooking",
- output = "mobs:rat_cooked",
- recipe = "mobs:rat",
- cooktime = 5,
- })
- mobs:register_mob("mobs:oerkki", {
- type = "monster",
- hp_max = 8,
- collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.9, 0.4},
- visual = "mesh",
- mesh = "mobs_oerkki.x",
- textures = {"mobs_oerkki.png"},
- visual_size = {x=5, y=5},
- makes_footstep_sound = false,
- view_range = 15,
- walk_velocity = 1,
- run_velocity = 3,
- damage = 4,
- drops = {},
- armor = 100,
- drawtype = "front",
- light_resistant = true,
- water_damage = 1,
- lava_damage = 1,
- light_damage = 0,
- attack_type = "dogfight",
- animation = {
- stand_start = 0,
- stand_end = 23,
- walk_start = 24,
- walk_end = 36,
- run_start = 37,
- run_end = 49,
- punch_start = 37,
- punch_end = 49,
- speed_normal = 15,
- speed_run = 15,
- },
- })
- mobs:register_spawn("mobs:oerkki", {"default:stone"}, 2, -1, 7000, 3, -10)
- mobs:register_mob("mobs:dungeon_master", {
- type = "monster",
- hp_max = 10,
- collisionbox = {-0.7, -0.01, -0.7, 0.7, 2.6, 0.7},
- visual = "mesh",
- mesh = "mobs_dungeon_master.x",
- textures = {"mobs_dungeon_master.png"},
- visual_size = {x=8, y=8},
- makes_footstep_sound = true,
- view_range = 15,
- walk_velocity = 1,
- run_velocity = 3,
- damage = 4,
- drops = {
- {name = "default:mese",
- chance = 100,
- min = 1,
- max = 2,},
- },
- armor = 60,
- drawtype = "front",
- water_damage = 1,
- lava_damage = 1,
- light_damage = 0,
- on_rightclick = nil,
- attack_type = "shoot",
- arrow = "mobs:fireball",
- shoot_interval = 2.5,
- sounds = {
- attack = "mobs_fireball",
- },
- animation = {
- stand_start = 0,
- stand_end = 19,
- walk_start = 20,
- walk_end = 35,
- punch_start = 36,
- punch_end = 48,
- speed_normal = 15,
- speed_run = 15,
- },
- })
- mobs:register_spawn("mobs:dungeon_master", {"default:stone"}, 2, -1, 7000, 1, -50)
- mobs:register_arrow("mobs:fireball", {
- visual = "sprite",
- visual_size = {x=1, y=1},
- --textures = {{name="mobs_fireball.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=0.5}}}, FIXME
- textures = {"mobs_fireball.png"},
- velocity = 5,
- hit_player = function(self, player)
- local s = self.object:getpos()
- local p = player:getpos()
- local vec = {x=s.x-p.x, y=s.y-p.y, z=s.z-p.z}
- player:punch(self.object, 1.0, {
- full_punch_interval=1.0,
- damage_groups = {fleshy=4},
- }, vec)
- local pos = self.object:getpos()
- for dx=-1,1 do
- for dy=-1,1 do
- for dz=-1,1 do
- local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
- local n = minetest.env:get_node(pos).name
- if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <= 30 then
- minetest.env:set_node(p, {name="fire:basic_flame"})
- else
- minetest.env:remove_node(p)
- end
- end
- end
- end
- end,
- hit_node = function(self, pos, node)
- for dx=-1,1 do
- for dy=-2,1 do
- for dz=-1,1 do
- local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
- local n = minetest.env:get_node(pos).name
- if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <= 30 then
- minetest.env:set_node(p, {name="fire:basic_flame"})
- else
- minetest.env:remove_node(p)
- end
- end
- end
- end
- end
- })
- if minetest.setting_get("log_mods") then
- minetest.log("action", "mobs loaded")
- end
|