From ed26bbbe4ce522d9aae3f5187b35901afb1f61f3 Mon Sep 17 00:00:00 2001 From: thunderdog1138 Date: Mon, 20 Jul 2020 17:26:31 +0000 Subject: [PATCH] Upload files to 'mods/mobs_npc' --- mods/mobs_npc/lucky_block.lua | 11 +++ mods/mobs_npc/mod.conf | 1 + mods/mobs_npc/npc.lua | 132 ++++++++++++++++++++++++++++++++++ mods/mobs_npc/readme.md | 15 ++++ mods/mobs_npc/screenshot.png | Bin 0 -> 8003 bytes 5 files changed, 159 insertions(+) create mode 100644 mods/mobs_npc/lucky_block.lua create mode 100644 mods/mobs_npc/mod.conf create mode 100644 mods/mobs_npc/npc.lua create mode 100644 mods/mobs_npc/readme.md create mode 100644 mods/mobs_npc/screenshot.png diff --git a/mods/mobs_npc/lucky_block.lua b/mods/mobs_npc/lucky_block.lua new file mode 100644 index 00000000..98735619 --- /dev/null +++ b/mods/mobs_npc/lucky_block.lua @@ -0,0 +1,11 @@ + +if minetest.get_modpath("lucky_block") then + + lucky_block:add_blocks({ + {"spw", "mobs:npc", 1, true, true}, + {"spw", "mobs:igor", 1, true, true, 5, "Igor"}, + {"spw", "mobs:trader", 1, false, false}, + {"lig", "fire:permanent_flame"}, + }) + +end diff --git a/mods/mobs_npc/mod.conf b/mods/mobs_npc/mod.conf new file mode 100644 index 00000000..9646cf74 --- /dev/null +++ b/mods/mobs_npc/mod.conf @@ -0,0 +1 @@ +name = mobs_npc diff --git a/mods/mobs_npc/npc.lua b/mods/mobs_npc/npc.lua new file mode 100644 index 00000000..071d2b5c --- /dev/null +++ b/mods/mobs_npc/npc.lua @@ -0,0 +1,132 @@ + +local S = mobs.intllib + +-- Npc by TenPlus1 + +mobs.npc_drops = { + "default:pick_steel", "mobs:meat", "default:sword_steel", + "default:shovel_steel", "farming:bread", "bucket:bucket_water" +} + +mobs:register_mob("mobs_npc:npc", { + 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 = "mobs_character.b3d", + drawtype = "front", + textures = { + {"mobs_npc.png"}, + {"mobs_npc2.png"}, -- female by nuttmeg20 + }, + child_texture = { + {"mobs_npc_baby.png"}, -- derpy baby by AmirDerAssassine + }, + makes_footstep_sound = true, + sounds = {}, + walk_velocity = 2, + run_velocity = 3, + jump = true, + drops = { + {name = "default:wood", chance = 1, min = 1, max = 3}, + {name = "default:apple", chance = 2, min = 1, max = 2}, + {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 = 30, + speed_run = 30, + stand_start = 0, + stand_end = 79, + walk_start = 168, + walk_end = 187, + run_start = 168, + run_end = 187, + punch_start = 200, + punch_end = 219, + }, + 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.order = "stand" + + 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:spawn({ + name = "mobs_npc:npc", + nodes = {"default:brick"}, + neighbors = {"default:grass_3"}, + min_light = 10, + chance = 10000, + active_object_count = 1, + min_height = 0, + day_toggle = true, +}) + +mobs:register_egg("mobs_npc:npc", S("Npc"), "default_brick.png", 1) + +-- compatibility +mobs:alias_mob("mobs:npc", "mobs_npc:npc") diff --git a/mods/mobs_npc/readme.md b/mods/mobs_npc/readme.md new file mode 100644 index 00000000..43e0d285 --- /dev/null +++ b/mods/mobs_npc/readme.md @@ -0,0 +1,15 @@ + +NPC MOBS + + +NPC + +- While NPC's don't actually spawn in the world just yet, they do have a spawn egg available to drop him/her into the world and wander around defending himself if attacked. It will also he will help you attack any monsters in the area and will follow you if you hold a diamond. Right-clicking the NPC with a gold lump will make him drop steel tools or food, right-clicking with an empty hand orders the NPC to stay or follow if owned. + +Trader + +- Traders are new and still being tested but can be placed into the world using a spawn egg. Right-clicking on a trader opens his shop and allows you to buy his wares inside. If provoked a trader will attack a player or monster. + +Note: self.npc_drops and self.igor_drops are used for random item list when trading for gold and may be changed within the mob itself, if not found the global mobs.npc_drops and mobs.igor_drops are used instead for a default list. + +Lucky Blocks: 4 diff --git a/mods/mobs_npc/screenshot.png b/mods/mobs_npc/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..631f73b1001912945eaf8477a5b5bb15054dc04d GIT binary patch literal 8003 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