forked from thunderdog1138/star_wars
Upload files to 'mods/mobs_npc'
This commit is contained in:
parent
aabf5bd705
commit
ed26bbbe4c
|
@ -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
|
|
@ -0,0 +1 @@
|
||||||
|
name = mobs_npc
|
|
@ -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")
|
|
@ -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
|
Binary file not shown.
After Width: | Height: | Size: 7.8 KiB |
Loading…
Reference in New Issue