123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- mobs:register_mob("desert_life:ostrich", {
- type = "animal",
- passive = false,
- attack_type = "dogfight",
- group_attack = true,
- reach = 2,
- damage = 2,
- damage_max = 8,
- damage_chance = 80,
- hp_min = 5,
- hp_max = 10,
- armor = 200,
- collisionbox = {-0.4, -0.575, -0.4, 0.4, 0.75, 0.4},
- visual = "mesh",
- mesh = "dl_ostrich.b3d",
- textures = {
- {'dl_ostrich.png'},
- },
- visual_size = {x=11, y=11},
- makes_footstep_sound = true,
- walk_velocity = 1,
- run_velocity = 3,
- jump = true,
- drops = {
- {name = "mobs:chicken_raw", chance = 1, min = 2, max = 6},
- },
- water_damage = 1,
- lava_damage = 5,
- light_damage = 0,
- fall_damage = 0,
- fall_speed = -8,
- fear_height = 5,
- animation = {
- speed_normal = 15,
- speed_run = 30,
- stand_start = 0,
- stand_end = 60,
- walk_start = 180,
- walk_end = 229,
- run_start = 180,
- run_end = 229,
- punch_start = 65,
- punch_end = 90,
- punch2_start = 95,
- punch2_end = 125,
- },
- follow = {"farming:seed_wheat", "farming:seed_cotton"},
- view_range = 5,
- replace_what = {'group:flora', 'group:plant'},
- replace_with = 'air',
- replace_rate = 1,
- do_custom = function(self, dtime)
- -- set needed values if not already present
- if not self.v2 then
- self.v2 = 0
- self.max_speed_forward = 6
- self.max_speed_reverse = 2
- self.accel = 6
- self.terrain_type = 3
- self.driver_attach_at = {x = 0, y = .5, z = -0.25}
- self.driver_eye_offset = {x = 0, y = 3, z = 0}
- self.driver_scale = {x = .09, y = .09}
- end
- -- if driver present allow control of ostrich
- if self.driver then
- mobs.drive(self, "walk", "stand", false, dtime)
- return false -- skip rest of mob functions
- end
- return true
- end,
- on_die = function(self, pos)
- -- drop saddle when ostrich is killed while riding
- -- also detach from ostrich properly
- if self.driver then
- minetest.add_item(pos, "mobs:saddle")
- mobs.detach(self.driver, {x = 1, y = 0, z = 1})
- self.saddle = nil
- end
- -- drop any ostrichshoes added
- if self.shoed then
- minetest.add_item(pos, self.shoed)
- end
- end,
- on_rightclick = function(self, clicker)
- -- make sure player is clicking
- if not clicker or not clicker:is_player() then
- return
- end
- -- feed, tame or heal ostrich
- if mobs:feed_tame(self, clicker, 10, true, true) then
- return
- end
- -- applying protection rune
- if mobs:protect(self, clicker) then
- return
- end
- -- make sure tamed ostrich is being clicked by owner only
- if self.tamed and self.owner == clicker:get_player_name() then
- local inv = clicker:get_inventory()
- local tool = clicker:get_wielded_item()
- local item = tool:get_name()
- -- detatch player already riding ostrich
- if self.driver and clicker == self.driver then
- mobs.detach(clicker, {x = 1, y = 0, z = 1})
- -- add saddle back to inventory
- if inv:room_for_item("main", "mobs:saddle") then
- inv:add_item("main", "mobs:saddle")
- else
- minetest.add_item(clicker:get_pos(), "mobs:saddle")
- end
- self.saddle = nil
- -- attach player to ostrich
- elseif (not self.driver and not self.child
- and clicker:get_wielded_item():get_name() == "mobs:saddle")
- or self.saddle then
- --self.object:set_properties()
- --print(self.object)
- mobs.attach(self, clicker)
- -- take saddle from inventory
- if not self.saddle then
- inv:remove_item("main", "mobs:saddle")
- end
- self.saddle = true
- end
- end
- -- used to capture ostrich with magic lasso
- mobs:capture_mob(self, clicker, 0, 0, 80, false, nil)
- end
- })
- mobs:spawn({
- name = 'desert_life:ostrich',
- nodes = {'default:desert_sand', 'default:desert_stone'},
- min_height = 0,
- max_height = 150,
- interval = 60,
- chance = 10000,
- active_object_count = 5,
- })
- mobs:register_egg("desert_life:ostrich", "Ostrich", "wool.png^[multiply:#40230f", 1)
|