diff --git a/mods/mobs/init.lua b/mods/mobs/init.lua index 95feb2f6..58e25933 100755 --- a/mods/mobs/init.lua +++ b/mods/mobs/init.lua @@ -49,6 +49,7 @@ if minetest.setting_get("log_mods") then minetest.log("action", "Slimes loaded") -- NPC dofile(path.."/npc.lua") -- TenPlus1 +dofile(path.."/npc_female.lua") -- ??? -- Creeper (fast impl by davedevils) dofile(path.."/creeper.lua") @@ -58,4 +59,4 @@ dofile(path.."/crafts.lua") if minetest.setting_get("log_mods") then minetest.log("action", "mobs loaded") -end \ No newline at end of file +end diff --git a/mods/mobs/npc.lua b/mods/mobs/npc.lua index dbdc5bf2..baa0c616 100755 --- a/mods/mobs/npc.lua +++ b/mods/mobs/npc.lua @@ -28,11 +28,15 @@ mobs:register_mob("mobs:npc", { drawtype = "front", textures = { {"mobs_npc.png"}, - {"mobs_npc2.png"}, -- female by nuttmeg20 }, -- sounds makes_footstep_sound = true, - sounds = {}, + sounds = { + random = "mobs_npc", + damage = "mobs_npc_hit", + attack = "mobs_npc_attack", + death = "mobs_npc_death", + }, -- speed and jump walk_velocity = 3, run_velocity = 3, @@ -128,6 +132,6 @@ mobs:register_mob("mobs:npc", { end, }) -- spawning enable for now -mobs:spawn_specific("mobs:npc", {"default:dirt_with_grass", "default:dirt", "default:junglegrass", "default:sand"}, {"air"}, -1, 20, 30, 50000, 1, -31000, 31000, true) +mobs:spawn_specific("mobs:npc", {"default:dirt_with_grass", "default:dirt", "default:junglegrass", "default:sand"}, {"air"}, -1, 20, 30, 100000, 1, -31000, 31000, true) -- register spawn egg mobs:register_egg("mobs:npc", "Npc", "default_brick.png", 1) diff --git a/mods/mobs/npc_female.lua b/mods/mobs/npc_female.lua new file mode 100755 index 00000000..5eb2a961 --- /dev/null +++ b/mods/mobs/npc_female.lua @@ -0,0 +1,136 @@ + +-- Npc by TenPlus1 + +mobs.npc_drops = { "farming:meat", "farming:donut", "farming:bread", "default:apple", "default:sapling", "default:junglesapling", + "shields:shield_enhanced_wood", "3d_armor:chestplate_cactus", "3d_armor:boots_bronze", + "default:sword_steel", "default:pick_steel", "default:shovel_steel", "default:bronze_ingot", + "bucket:bucket_water", "default:stick", "cavestuff:pebble_1", "building_blocks:stick", + "default:cobble", "default:gravel", "default:clay_lump", "default:sand", "default:dirt_with_grass", + "default:dirt", "default:chest", "default:torch"} + +mobs.npc_max_hp = 20 + +mobs:register_mob("mobs:npc_female", { + -- animal, monster, npc + type = "npc", + -- aggressive, deals 6 damage to player/monster when hit + passive = false, + group_attack = true, + damage = 5, -- 3 damages if tamed + attack_type = "dogfight", + attacks_monsters = true, + -- health & armor + hp_min = 20, hp_max = 20, armor = 100, + -- textures and model + collisionbox = {-0.35,-1.0,-0.35, 0.35,0.8,0.35}, + visual = "mesh", + mesh = "character.b3d", + drawtype = "front", + textures = { + {"mobs_npc_female.png"}, -- female by nuttmeg20 + }, + -- sounds + makes_footstep_sound = true, + sounds = {}, + -- speed and jump + walk_velocity = 3, + run_velocity = 3, + jump = true, + -- drops wood and chance of apples when dead + drops = { + {name = "default:wood", + chance = 1, min = 1, max = 3}, + {name = "default:apple", + chance = 2, min = 1, max = 2}, + {name = "flowers:tulip", + chance = 4, min = 1, max = 2}, + {name = "flowers:rose", + chance = 4, min = 1, max = 2}, + {name = "default:axe_stone", + chance = 6, min = 1, max = 1}, + {name = "maptools:silver_coin", + chance = 10, min = 1, max = 1,}, + }, + -- damaged by + water_damage = 0, + lava_damage = 6, + light_damage = 0, + -- follow diamond + follow = "default:diamond", + view_range = 16, + -- set owner and order + owner = "", + order = "follow", + -- model animation + 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, + }, + -- right clicking with "cooked meat" or "bread" will give npc more health + on_rightclick = function(self, clicker) + local item = clicker:get_wielded_item() + local name = clicker:get_player_name() + if not name then return end + -- feed toheal npc + if item:get_name() == "mobs:meat" + or item:get_name() == "farming:bread" then + -- feed and add health + local hp = self.object:get_hp() + -- return if full health + if hp >= self.hp_max then + minetest.chat_send_player(name, "NPC at full health.") + return + end + hp = hp + 4 -- add restorative value + if hp > self.hp_max then hp = self.hp_max end + self.object:set_hp(hp) + -- take item + if not minetest.setting_getbool("creative_mode") then + item:take_item() + clicker:set_wielded_item(item) + end + + -- right clicking with gold lump drops random item from mobs.npc_drops + elseif item:get_name() == "default:gold_lump" then + if not minetest.setting_getbool("creative_mode") then + item:take_item() + clicker:set_wielded_item(item) + end + local pos = self.object:getpos() + pos.y = pos.y + 0.5 + minetest.add_item(pos, {name = mobs.npc_drops[math.random(1,#mobs.npc_drops)]}) + elseif item:get_name() == "default:diamond" then --/MFF (Crabman|07/14/2015) tamed with diamond + if (self.diamond_count or 0) < 4 then + self.diamond_count = (self.diamond_count or 0) + 1 + if not minetest.setting_getbool("creative_mode") then + item:take_item() + clicker:set_wielded_item(item) + end + if self.diamond_count >= 4 then + self.damages = 3 + self.owner = clicker:get_player_name() + end + end + else + -- if owner switch between follow and stand + if self.owner and self.owner == clicker:get_player_name() then + if self.order == "follow" then + self.order = "stand" + else + self.order = "follow" + end + else + self.owner = clicker:get_player_name() + end + end + + mobs:capture_mob(self, clicker, 0, 5, 80, false, nil) + end, +}) +-- spawning enable for now +mobs:spawn_specific("mobs:npc_female", {"default:dirt_with_grass", "default:dirt", "default:junglegrass", "default:sand"}, {"air"}, -1, 20, 30, 100000, 1, -31000, 31000, true) +-- register spawn egg +mobs:register_egg("mobs:npc_female", "Npc", "default_brick.png", 1) diff --git a/mods/mobs/sounds/mobs_npc.1.ogg b/mods/mobs/sounds/mobs_npc.1.ogg new file mode 100755 index 00000000..6758267e Binary files /dev/null and b/mods/mobs/sounds/mobs_npc.1.ogg differ diff --git a/mods/mobs/sounds/mobs_npc.2.ogg b/mods/mobs/sounds/mobs_npc.2.ogg new file mode 100755 index 00000000..332e19cf Binary files /dev/null and b/mods/mobs/sounds/mobs_npc.2.ogg differ diff --git a/mods/mobs/sounds/mobs_npc_attack.ogg b/mods/mobs/sounds/mobs_npc_attack.ogg new file mode 100755 index 00000000..07b987c6 Binary files /dev/null and b/mods/mobs/sounds/mobs_npc_attack.ogg differ diff --git a/mods/mobs/sounds/mobs_npc_death.ogg b/mods/mobs/sounds/mobs_npc_death.ogg new file mode 100755 index 00000000..d63d313d Binary files /dev/null and b/mods/mobs/sounds/mobs_npc_death.ogg differ diff --git a/mods/mobs/sounds/mobs_npc_hit.ogg b/mods/mobs/sounds/mobs_npc_hit.ogg new file mode 100755 index 00000000..1c17403e Binary files /dev/null and b/mods/mobs/sounds/mobs_npc_hit.ogg differ diff --git a/mods/mobs/textures/mobs_npc2.png b/mods/mobs/textures/mobs_npc_female.png similarity index 100% rename from mods/mobs/textures/mobs_npc2.png rename to mods/mobs/textures/mobs_npc_female.png diff --git a/other_things/Tableau-valeurs-MFF.ods b/other_things/Tableau-valeurs-MFF.ods index 9191fad2..67264d1d 100755 Binary files a/other_things/Tableau-valeurs-MFF.ods and b/other_things/Tableau-valeurs-MFF.ods differ