123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- local S = mobs.intllib_monster
- local guard_types = {
- { nodes = {
- "default:snow", "default:snowblock", "default:ice",
- "default:dirt_with_snow"
- },
- skins = {"mobs_land_guard6.png", "mobs_land_guard7.png", "mobs_land_guard8.png"},
- drops = {
- {name = "default:ice", chance = 1, min = 1, max = 4},
- {name = "mobs:leather", chance = 2, min = 0, max = 2},
- {name = "default:diamond", chance = 4, min = 0, max = 2},
- },
- },
- { nodes = {
- "ethereal:dry_dirt", "default:sand", "default:desert_sand",
- "default:dry_dirt_with_dry_grass", "default:dry_dirt"
- },
- skins = {"mobs_land_guard4.png", "mobs_land_guard5.png"},
- drops = {
- {name = "default:sandstone", chance = 1, min = 1, max = 4},
- {name = "mobs:leather", chance = 2, min = 0, max = 2},
- {name = "default:mese_crystal", chance = 4, min = 0, max = 2},
- },
- }
- }
- -- Land Guard
- mobs:register_mob("mobs_monster:land_guard", {
- type = "monster",
- passive = false,
- attack_type = "dogfight",
- group_attack = true,
- reach = 3,
- damage = 15,
- hp_min = 30,
- hp_max = 65,
- armor = 50,
- collisionbox = {-0.5, -1.01, -0.5, 0.5, 1.6, 0.5},
- visual_size = {x = 1, y = 1},
- visual = "mesh",
- mesh = "mobs_dungeon_master.b3d",
- textures = {
- {"mobs_land_guard.png"},
- {"mobs_land_guard2.png"},
- {"mobs_land_guard3.png"}
- },
- makes_footstep_sound = true,
- sounds = {
- random = "mobs_dungeonmaster",
- },
- walk_velocity = 1.5,
- run_velocity = 3.4,
- jump = true,
- jump_height = 2.0,
- floats = 0,
- view_range = 15,
- drops = {
- {name = "mobs:leather", chance = 2, min = 0, max = 2},
- {name = "default:mese_crystal", chance = 3, min = 0, max = 2},
- {name = "default:diamond", chance = 4, min = 0, max = 1},
- },
- water_damage = 0,
- lava_damage = 6,
- light_damage = 0,
- fear_height = 8,
- animation = {
- stand_start = 0,
- stand_end = 19,
- walk_start = 20,
- walk_end = 35,
- punch_start = 36,
- punch_end = 48,
- speed_normal = 15,
- speed_run = 20,
- },
- -- check surrounding nodes and spawn a specific guard
- on_spawn = function(self)
- local pos = self.object:get_pos() ; pos.y = pos.y - 1
- local tmp
- for n = 1, #guard_types do
- tmp = guard_types[n]
- if minetest.find_node_near(pos, 1, tmp.nodes) then
- self.base_texture = { tmp.skins[math.random(#tmp.skins)] }
- self.object:set_properties({textures = self.base_texture})
- self.docile_by_day = tmp.docile
- if tmp.drops then
- self.drops = tmp.drops
- end
- return true
- end
- end
- return true -- run only once, false/nil runs every activation
- end,
- })
- if not mobs.custom_spawn_monster then
- mobs:spawn({
- name = "mobs_monster:land_guard",
- nodes = {
- "default:snow", "default:ice", "default:stone",
- "default:dry_dirt_with_dry_grass", "ethereal:dry_dirt"
- },
- max_light = 7,
- chance = 25000,
- min_height = 0,
- active_object_count = 1,
- })
- end
- mobs:register_egg("mobs_monster:land_guard", S("Land Guard"), "default_ice.png", 1)
|