From 70b08cf37264d939a6bc3539e786f89914550d23 Mon Sep 17 00:00:00 2001 From: thunderdog1138 Date: Fri, 20 Nov 2020 20:00:38 +0000 Subject: [PATCH] Add 'mods/mobs_npc/r2.lua' --- mods/mobs_npc/r2.lua | 106 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 mods/mobs_npc/r2.lua diff --git a/mods/mobs_npc/r2.lua b/mods/mobs_npc/r2.lua new file mode 100644 index 00000000..479963c7 --- /dev/null +++ b/mods/mobs_npc/r2.lua @@ -0,0 +1,106 @@ +mobs:register_mob("mobs_npc:r2", { + type = "npc", + passive = false, + damage = 3, + attack_type = "dogfight", + attacks_monsters = true, + attack_npcs = false, + owner_loyal = true, + pathfinding = true, + hp_min = 10, + hp_max = 20, + armor = 100, + collisionbox = {-0.35,-1.0,-0.35, 0.35,0.8,0.35}, + visual = "mesh", + mesh = "r2.b3d", + drawtype = "front", + textures = { + {"r2-blue.png"}, + }, + makes_footstep_sound = false, + sounds = {}, + walk_velocity = 2, + run_velocity = 3, + jump = true, + drops = { + {name = "default:axe_stone", chance = 5, min = 1, max = 1}, + }, + water_damage = 0, + lava_damage = 2, + light_damage = 0, + follow = {"farming:bread", "mobs:meat", "default:diamond"}, + view_range = 15, + owner = "", + order = "follow", + fear_height = 3, + animation = { + speed_normal = 2, + speed_run = 3, + walk_start = 30, + walk_end = 31, + stand_start = 1, + stand_end = 20, + run_start = 30, + run_end = 31, + + }, + + on_rightclick = function(self, clicker) + + -- feed to heal npc + if mobs:feed_tame(self, clicker, 8, true, true) then return end + + -- capture npc with net or lasso + if mobs:capture_mob(self, clicker, nil, 5, 80, false, nil) then return end + + -- protect npc with mobs:protector + if mobs:protect(self, clicker) then return end + + local item = clicker:get_wielded_item() + local name = clicker:get_player_name() + + -- right clicking with gold lump drops random item from mobs.npc_drops + if item:get_name() == "default:gold_lump" then + + if not mobs.is_creative(name) then + item:take_item() + clicker:set_wielded_item(item) + end + + local pos = self.object:get_pos() + + pos.y = pos.y + 0.5 + + local drops = self.npc_drops or mobs.npc_drops + + minetest.add_item(pos, { + name = drops[math.random(1, #drops)] + }) + + minetest.chat_send_player(name, S("NPC dropped you an item for gold!")) + + return + end + + -- by right-clicking owner can switch npc between follow and stand + if self.owner and self.owner == name then + + if self.order == "follow" then + + self.attack = nil + self.order = "stand" + self.state = "stand" + self:set_animation("stand") + self:set_velocity(0) + + minetest.chat_send_player(name, S("NPC stands still.")) + else + self.order = "follow" + + minetest.chat_send_player(name, S("NPC will follow you.")) + end + end + end, +}) + +mobs:register_egg("mobs_npc:r2", S("R2 Astromech"), "default_brick.png", 1) \ No newline at end of file