hamster
|
@ -80,7 +80,7 @@ petz.create_form = function(player_name)
|
|||
local pregnant_text_y
|
||||
local infertile_text_x
|
||||
local infertile_text_y
|
||||
if pet.is_mountable == true or pet.type == "elephant" then
|
||||
if pet.is_mountable == true or pet.give_orders == true then
|
||||
pregnant_icon_x = 3
|
||||
pregnant_icon_y = 5
|
||||
pregnant_text_x = 4
|
||||
|
|
|
@ -12,36 +12,20 @@ petz.set_random_gender = function()
|
|||
end
|
||||
end
|
||||
|
||||
petz.get_second_gen = function(self)
|
||||
return math.random(1, #self.skin_colors-1)
|
||||
petz.get_gen = function(self)
|
||||
local textures_count
|
||||
if self.mutation then
|
||||
textures_count = #self.skin_colors -1
|
||||
else
|
||||
textures_count = #self.skin_colors
|
||||
end
|
||||
return math.random(1, textures_count)
|
||||
end
|
||||
|
||||
petz.genetics_texture = function(self)
|
||||
if self.type == "lamb" then
|
||||
if self.genes["gen1"] == 1 or self.genes["gen2"] == 1 then
|
||||
return 1 --white
|
||||
elseif self.genes["gen1"] == 2 or self.genes["gen2"] == 2 then
|
||||
return 2 --light gray
|
||||
elseif self.genes["gen1"] == 3 or self.genes["gen2"] == 3 then
|
||||
return 3 --dark gray
|
||||
elseif self.genes["gen1"] == 4 or self.genes["gen2"] == 4 then
|
||||
return 4 --brown
|
||||
else
|
||||
return 5 --vanilla mutation
|
||||
end
|
||||
elseif self.type == "elephant" then
|
||||
if self.genes["gen1"] == 1 or self.genes["gen2"] == 1 then
|
||||
return 1 --default
|
||||
else
|
||||
return 2 --white mutation
|
||||
end
|
||||
elseif self.type == "camel" then
|
||||
if self.genes["gen1"] == 1 or self.genes["gen2"] == 1 then
|
||||
return 1 --camel
|
||||
elseif self.genes["gen1"] == 2 or self.genes["gen2"] == 2 then
|
||||
return 2 --camel dark
|
||||
else
|
||||
return 3 --white mutation
|
||||
petz.genetics_texture = function(self, textures_count)
|
||||
for i = 1, textures_count do
|
||||
if self.genes["gen1"] == i or self.genes["gen2"] == i then
|
||||
return i
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -165,13 +149,13 @@ function petz.set_initial_properties(self, staticdata, dtime_s)
|
|||
self.genes = {}
|
||||
if not(self.type == "pony") then
|
||||
local genes_mutation = false
|
||||
if math.random(1, 200) == 1 then
|
||||
if self.mutation and math.random(1, 200) == 1 then
|
||||
genes_mutation = true
|
||||
end
|
||||
if genes_mutation == false then
|
||||
if baby_born == false then
|
||||
self.genes["gen1"] = self.texture_no
|
||||
self.genes["gen2"] = petz.get_second_gen(self)
|
||||
self.genes["gen1"] = petz.get_gen(self)
|
||||
self.genes["gen2"] = petz.get_gen(self)
|
||||
else
|
||||
if math.random(1, 2) == 1 then
|
||||
self.genes["gen1"] = static_data_table["gen1_father"]
|
||||
|
@ -182,8 +166,14 @@ function petz.set_initial_properties(self, staticdata, dtime_s)
|
|||
self.genes["gen2"] = static_data_table["gen1_mother"]
|
||||
else
|
||||
self.genes["gen2"] = static_data_table["gen2_mother"]
|
||||
end
|
||||
self.texture_no = petz.genetics_texture(self)
|
||||
end
|
||||
local textures_count
|
||||
if self.mutation then
|
||||
textures_count = #self.skin_colors - 1
|
||||
else
|
||||
textures_count = #self.skin_colors
|
||||
end
|
||||
self.texture_no = petz.genetics_texture(self, textures_count)
|
||||
end
|
||||
else -- mutation
|
||||
local mutation_gen = #self.skin_colors --the last skin is always the mutation
|
||||
|
|
|
@ -70,41 +70,7 @@ function petz.herbivore_brain(self)
|
|||
petz.ownthing(self)
|
||||
end
|
||||
end
|
||||
|
||||
if prty > 150 then --work in progress
|
||||
local pos_front = mobkit.node_name_in(self, "front")
|
||||
local node_front = minetest.get_node_or_nil(pos_front)
|
||||
local pos_under = mobkit.node_name_in(self, "below")
|
||||
local node_under = minetest.get_node_or_nil(pos_under)
|
||||
local pos_top = mobkit.node_name_in(self, "top")
|
||||
local node_top = minetest.get_node_or_nil(pos_top)
|
||||
if node_front and minetest.registered_nodes[node_front.name]
|
||||
and node_top and minetest.registered_nodes[node_top.name]
|
||||
and node_top.name == "air"
|
||||
and (minetest.registered_nodes[node_front.name].groups.wood
|
||||
or minetest.registered_nodes[node_front.name].groups.leaves
|
||||
or minetest.registered_nodes[node_front.name].groups.tree) then
|
||||
if not(self.mov_status == "arboreal") then
|
||||
petz.set_behaviour(self, "arboreal", "air")
|
||||
end
|
||||
else
|
||||
if self.behaviour == "arboreal" then
|
||||
if node_front and minetest.registered_nodes[node_front.name]
|
||||
and (not(minetest.registered_nodes[node_front.name].groups.wood)
|
||||
or not(minetest.registered_nodes[node_front.name].groups.tree)
|
||||
or not(minetest.registered_nodes[node_front.name].groups.leaves))
|
||||
then
|
||||
self.object:set_acceleration({x = 0, y = 0, z = 0 })
|
||||
petz.set_behaviour(self, "terrestrial", nil)
|
||||
elseif node_top and minetest.registered_nodes[node_top.name]
|
||||
and not(node_top.name == "air") then
|
||||
self.object:set_acceleration({x = 0, y = 0, z = 0 })
|
||||
petz.set_behaviour(self, "terrestrial", nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--Runaway from Player
|
||||
if prty < 14 then
|
||||
if self.tamed == false then --if no tamed
|
||||
|
@ -208,8 +174,16 @@ function petz.herbivore_brain(self)
|
|||
-- Default Random Sound
|
||||
petz.random_mob_sound(self)
|
||||
|
||||
if prty < 3 then
|
||||
--if self.is_arboreal == true then
|
||||
--if petz.check_if_climb(self) then
|
||||
--mobkit.hq_climb(self, 3)
|
||||
--end
|
||||
--end
|
||||
end
|
||||
|
||||
--Roam default
|
||||
if mobkit.is_queue_empty_high(self) and not(self.mov_status == "stand") then
|
||||
if mobkit.is_queue_empty_high(self) and not(self.mov_status == "stand") then
|
||||
if not(self.can_fly) then
|
||||
mobkit.hq_roam(self, 0)
|
||||
else
|
||||
|
@ -220,6 +194,23 @@ function petz.herbivore_brain(self)
|
|||
end
|
||||
end
|
||||
|
||||
petz.check_if_climb = function(self)
|
||||
local node_front_name = mobkit.node_name_in(self, "front")
|
||||
minetest.chat_send_player("singleplayer", node_front_name)
|
||||
local node_top_name= mobkit.node_name_in(self, "top")
|
||||
minetest.chat_send_player("singleplayer", node_top_name)
|
||||
if node_front_name and minetest.registered_nodes[node_front_name]
|
||||
and node_top_name and minetest.registered_nodes[node_top_name]
|
||||
and node_top_name == "air"
|
||||
and (minetest.registered_nodes[node_front_name].groups.wood
|
||||
or minetest.registered_nodes[node_front_name].groups.leaves
|
||||
or minetest.registered_nodes[node_front_name].groups.tree) then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
petz.set_behaviour= function(self, behaviour, fly_in)
|
||||
if behaviour == "aquatic" then
|
||||
self.behaviour = "aquatic"
|
||||
|
@ -499,44 +490,6 @@ petz.pos_front = function(self, pos)
|
|||
return pos_front
|
||||
end
|
||||
|
||||
petz.arboreal_behaviour = function(self)
|
||||
local pos = self.object:get_pos() -- check the mob pos to togle between arboreal-terrestrial
|
||||
---
|
||||
---Change behaviour status
|
||||
---
|
||||
local pos_front = petz.pos_front(self, pos)
|
||||
local node_front = minetest.get_node_or_nil(pos_front)
|
||||
local pos_under = {x = pos.x, y = pos.y - 1.0, z = pos.z, }
|
||||
local node_under = minetest.get_node_or_nil(pos_under)
|
||||
local pos_top = {x = pos.x, y = pos.y + 0.5, z = pos.z,}
|
||||
local node_top = minetest.get_node_or_nil(pos_top)
|
||||
if node_front and minetest.registered_nodes[node_front.name]
|
||||
and node_top and minetest.registered_nodes[node_top.name]
|
||||
and node_top.name == "air"
|
||||
and (minetest.registered_nodes[node_front.name].groups.wood
|
||||
or minetest.registered_nodes[node_front.name].groups.leaves
|
||||
or minetest.registered_nodes[node_front.name].groups.tree) then
|
||||
if not(self.behaviour == "arboreal") then
|
||||
petz.set_behaviour(self, "arboreal", "air")
|
||||
end
|
||||
else
|
||||
if self.behaviour == "arboreal" then
|
||||
if node_front and minetest.registered_nodes[node_front.name]
|
||||
and (not(minetest.registered_nodes[node_front.name].groups.wood)
|
||||
or not(minetest.registered_nodes[node_front.name].groups.tree)
|
||||
or not(minetest.registered_nodes[node_front.name].groups.leaves))
|
||||
then
|
||||
self.object:set_acceleration({x = 0, y = 0, z = 0 })
|
||||
petz.set_behaviour(self, "terrestrial", nil)
|
||||
elseif node_top and minetest.registered_nodes[node_top.name]
|
||||
and not(node_top.name == "air") then
|
||||
self.object:set_acceleration({x = 0, y = 0, z = 0 })
|
||||
petz.set_behaviour(self, "terrestrial", nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---
|
||||
---Aquatic Behaviour
|
||||
---
|
||||
|
|
|
@ -30,6 +30,7 @@ minetest.register_entity("petz:"..pet_name, {
|
|||
has_affinity = true,
|
||||
milkable = true,
|
||||
breed = true,
|
||||
mutation = true,
|
||||
is_wild = false,
|
||||
give_orders = true,
|
||||
can_be_brushed = true,
|
||||
|
@ -56,7 +57,6 @@ minetest.register_entity("petz:"..pet_name, {
|
|||
mesh = mesh,
|
||||
textures = textures,
|
||||
skin_colors = skin_colors,
|
||||
skin_color_mutation = {"vanilla"},
|
||||
visual_size = visual_size,
|
||||
visual_size_baby = visual_size_baby,
|
||||
static_save = true,
|
||||
|
|
|
@ -16,12 +16,12 @@ minetest.register_entity("petz:"..pet_name,{
|
|||
init_tamagochi_timer = true,
|
||||
is_pet = true,
|
||||
has_affinity = true,
|
||||
arboreal = true,
|
||||
is_arboreal = true,
|
||||
is_wild = false,
|
||||
give_orders = true,
|
||||
can_be_brushed = true,
|
||||
capture_item = "lasso",
|
||||
follow = petz.settings.calf_follow,
|
||||
follow = petz.settings.chimp_follow,
|
||||
rotate = petz.settings.rotate,
|
||||
physical = true,
|
||||
stepheight = 0.1, --EVIL!
|
||||
|
|
|
@ -48,6 +48,7 @@ for i=1, 2 do
|
|||
attack_player = true,
|
||||
give_orders = true,
|
||||
can_be_brushed = true,
|
||||
mutation = true,
|
||||
--breed = true,
|
||||
capture_item = "lasso",
|
||||
follow = petz.settings.elephant_follow,
|
||||
|
|
|
@ -0,0 +1,97 @@
|
|||
--
|
||||
--HAMSTER
|
||||
--
|
||||
local S = ...
|
||||
|
||||
local pet_name = "hamster"
|
||||
local scale_model = 0.75
|
||||
local scale_baby = 0.5
|
||||
local visual_size = {x=petz.settings.visual_size.x*scale_model, y=petz.settings.visual_size.y*scale_model}
|
||||
local visual_size_baby = {x=petz.settings.visual_size.x*scale_model*scale_baby, y=petz.settings.visual_size.y*scale_model*scale_baby}
|
||||
petz.hamster = {}
|
||||
local mesh = 'petz_hamster.b3d'
|
||||
local skin_colors = {"golden", "dark_brown", "light_brown", "dark_gray", "light_gray", "white", "pink"}
|
||||
local textures = {}
|
||||
for n = 1, #skin_colors do
|
||||
textures[n] = "petz_"..pet_name.."_"..skin_colors[n]..".png"
|
||||
end
|
||||
local collisionbox = {-0.35, -0.75*scale_model, -0.28, 0.35, -0.0625, 0.28}
|
||||
local collisionbox_baby = {-0.35*scale_baby, -0.75*scale_model*scale_baby, -0.28, 0.35, -0.0625, 0.28}
|
||||
|
||||
|
||||
minetest.register_entity("petz:"..pet_name,{
|
||||
--Petz specifics
|
||||
type = "hamster",
|
||||
init_tamagochi_timer = true,
|
||||
is_pet = true,
|
||||
has_affinity = true,
|
||||
is_wild = false,
|
||||
give_orders = true,
|
||||
can_be_brushed = true,
|
||||
capture_item = "net",
|
||||
breed = true,
|
||||
mutation = true,
|
||||
follow = petz.settings.hamster_follow,
|
||||
rotate = petz.settings.rotate,
|
||||
physical = true,
|
||||
stepheight = 0.1, --EVIL!
|
||||
collide_with_objects = true,
|
||||
collisionbox = collisionbox,
|
||||
collisionbox_baby = collisionbox_baby,
|
||||
visual = petz.settings.visual,
|
||||
mesh = mesh,
|
||||
textures = textures,
|
||||
skin_colors = skin_colors,
|
||||
visual_size = visual_size,
|
||||
visual_size_baby = visual_size_baby,
|
||||
static_save = true,
|
||||
get_staticdata = mobkit.statfunc,
|
||||
-- api props
|
||||
springiness= 0,
|
||||
buoyancy = 0.5, -- portion of hitbox submerged
|
||||
max_speed = 2,
|
||||
jump_height = 1.5,
|
||||
view_range = 10,
|
||||
lung_capacity = 10, -- seconds
|
||||
max_hp = 10,
|
||||
makes_footstep_sound = true,
|
||||
|
||||
attack={range=0.5, damage_groups={fleshy=3}},
|
||||
animation = {
|
||||
walk={range={x=1, y=12}, speed=20, loop=true},
|
||||
run={range={x=13, y=25}, speed=20, loop=true},
|
||||
stand={
|
||||
{range={x=26, y=46}, speed=5, loop=true},
|
||||
{range={x=47, y=59}, speed=5, loop=true},
|
||||
},
|
||||
sit={range={x=60, y=65}, speed=20, loop=false},
|
||||
},
|
||||
sounds = {
|
||||
misc = "petz_hamster_squeak",
|
||||
moaning = "petz_hamster_moaning",
|
||||
},
|
||||
|
||||
brainfunc = petz.herbivore_brain,
|
||||
|
||||
on_activate = function(self, staticdata, dtime_s) --on_activate, required
|
||||
mobkit.actfunc(self, staticdata, dtime_s)
|
||||
petz.set_initial_properties(self, staticdata, dtime_s)
|
||||
end,
|
||||
|
||||
on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir)
|
||||
petz.on_punch(self, puncher, time_from_last_punch, tool_capabilities, dir)
|
||||
end,
|
||||
|
||||
on_rightclick = function(self, clicker)
|
||||
petz.on_rightclick(self, clicker)
|
||||
end,
|
||||
|
||||
on_step = function(self, dtime)
|
||||
mobkit.stepfunc(self, dtime) -- required
|
||||
if self.init_tamagochi_timer == true then
|
||||
petz.init_tamagochi_timer(self)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
petz:register_egg("petz:hamster", S("Hamster"), "petz_spawnegg_hamster.png", 0)
|
|
@ -29,6 +29,7 @@ minetest.register_entity("petz:"..pet_name,{
|
|||
give_orders = false,
|
||||
can_be_brushed = true,
|
||||
capture_item = "lasso",
|
||||
mutation = true,
|
||||
follow = petz.settings.lamb_follow,
|
||||
drops = {
|
||||
{name = "petz:mini_lamb_chop", chance = 1, min = 1, max = 1,},
|
||||
|
|
|
@ -89,7 +89,6 @@ function mobkit.hq_wanderfly(self, prty)
|
|||
end
|
||||
|
||||
function mobkit.dumbstepfly(self)
|
||||
--mobkit.set_velocity(self, {x=1, y=0, z=1})
|
||||
if mobkit.node_name_in(self, "front") ~= "air" then
|
||||
local yaw = self.object:get_yaw()
|
||||
if yaw then
|
||||
|
@ -254,6 +253,27 @@ function mobkit.lq_alight(self)
|
|||
mobkit.queue_low(self, func)
|
||||
end
|
||||
|
||||
--
|
||||
-- ARBOREAL BRAIN
|
||||
--
|
||||
|
||||
function mobkit.hq_climb(self, prty)
|
||||
local func=function(self)
|
||||
if not(petz.check_if_climb) then
|
||||
self.object:set_acceleration({x = 0, y = 0, z = 0 })
|
||||
mobkit.clear_queue_low(self)
|
||||
mobkit.clear_queue_high(self)
|
||||
return true
|
||||
else
|
||||
mobkit.animate(self, 'climb')
|
||||
self.object:set_acceleration({x = 0, y = 0.25, z = 0 })
|
||||
end
|
||||
end
|
||||
mobkit.queue_high(self,func,prty)
|
||||
end
|
||||
|
||||
|
||||
|
||||
--
|
||||
-- AQUATIC BRAIN
|
||||
--
|
||||
|
|
|
@ -0,0 +1,214 @@
|
|||
mtllib petz_hamster.mtl
|
||||
o converted_out
|
||||
v 0.1875 -0.4375 -0.25
|
||||
v 0.1875 -0.4375 0.1875
|
||||
v 0.1875 -0.3125 0.1875
|
||||
v 0.1875 -0.3125 -0.25
|
||||
v -0.1875 -0.4375 -0.25
|
||||
v -0.1875 -0.4375 0.1875
|
||||
v -0.1875 -0.3125 0.1875
|
||||
v -0.1875 -0.3125 -0.25
|
||||
v 0.1875 -0.3125 -0.1875
|
||||
v 0.1875 -0.3125 0.1875
|
||||
v 0.1875 -0.1875 0.1875
|
||||
v 0.1875 -0.1875 -0.1875
|
||||
v -0.1875 -0.3125 -0.1875
|
||||
v -0.1875 -0.3125 0.1875
|
||||
v -0.1875 -0.1875 0.1875
|
||||
v -0.1875 -0.1875 -0.1875
|
||||
v 0.125 -0.3125 -0.25
|
||||
v 0.125 -0.3125 -0.1875
|
||||
v 0.125 -0.1875 -0.1875
|
||||
v 0.125 -0.1875 -0.25
|
||||
v -0.125 -0.3125 -0.25
|
||||
v -0.125 -0.3125 -0.1875
|
||||
v -0.125 -0.1875 -0.1875
|
||||
v -0.125 -0.1875 -0.25
|
||||
v 0.1875 -0.3125 -0.25
|
||||
v 0.1875 -0.3125 -0.1875
|
||||
v 0.1875 -0.25 -0.1875
|
||||
v 0.1875 -0.25 -0.25
|
||||
v 0.125 -0.3125 -0.25
|
||||
v 0.125 -0.3125 -0.1875
|
||||
v 0.125 -0.25 -0.1875
|
||||
v 0.125 -0.25 -0.25
|
||||
v -0.125 -0.3125 -0.25
|
||||
v -0.125 -0.3125 -0.1875
|
||||
v -0.125 -0.25 -0.1875
|
||||
v -0.125 -0.25 -0.25
|
||||
v -0.1875 -0.3125 -0.25
|
||||
v -0.1875 -0.3125 -0.1875
|
||||
v -0.1875 -0.25 -0.1875
|
||||
v -0.1875 -0.25 -0.25
|
||||
v 0.1875 -0.5 -0.25
|
||||
v 0.1875 -0.5 -0.1875
|
||||
v 0.1875 -0.4375 -0.1875
|
||||
v 0.1875 -0.4375 -0.25
|
||||
v 0.125 -0.5 -0.25
|
||||
v 0.125 -0.5 -0.1875
|
||||
v 0.125 -0.4375 -0.1875
|
||||
v 0.125 -0.4375 -0.25
|
||||
v -0.125 -0.5 -0.25
|
||||
v -0.125 -0.5 -0.1875
|
||||
v -0.125 -0.4375 -0.1875
|
||||
v -0.125 -0.4375 -0.25
|
||||
v -0.1875 -0.5 -0.25
|
||||
v -0.1875 -0.5 -0.1875
|
||||
v -0.1875 -0.4375 -0.1875
|
||||
v -0.1875 -0.4375 -0.25
|
||||
v 0.25 -0.1875 -0.1875
|
||||
v 0.25 -0.1875 -0.125
|
||||
v 0.25 -0.0625 -0.125
|
||||
v 0.25 -0.0625 -0.1875
|
||||
v 0.125 -0.1875 -0.1875
|
||||
v 0.125 -0.1875 -0.125
|
||||
v 0.125 -0.0625 -0.125
|
||||
v 0.125 -0.0625 -0.1875
|
||||
v -0.125 -0.1875 -0.1875
|
||||
v -0.125 -0.1875 -0.125
|
||||
v -0.125 -0.0625 -0.125
|
||||
v -0.125 -0.0625 -0.1875
|
||||
v -0.25 -0.1875 -0.1875
|
||||
v -0.25 -0.1875 -0.125
|
||||
v -0.25 -0.0625 -0.125
|
||||
v -0.25 -0.0625 -0.1875
|
||||
v -0.1875 -0.5 0.0625
|
||||
v -0.1875 -0.5 0.1875
|
||||
v -0.1875 -0.375 0.1875
|
||||
v -0.1875 -0.375 0.0625
|
||||
v -0.25 -0.5 0.0625
|
||||
v -0.25 -0.5 0.1875
|
||||
v -0.25 -0.375 0.1875
|
||||
v -0.25 -0.375 0.0625
|
||||
v -0.1875 -0.5 0
|
||||
v -0.1875 -0.5 0.0625
|
||||
v -0.1875 -0.4375 0.0625
|
||||
v -0.1875 -0.4375 0
|
||||
v -0.25 -0.5 0
|
||||
v -0.25 -0.5 0.0625
|
||||
v -0.25 -0.4375 0.0625
|
||||
v -0.25 -0.4375 0
|
||||
v 0.25 -0.5 0.0625
|
||||
v 0.25 -0.5 0.1875
|
||||
v 0.25 -0.375 0.1875
|
||||
v 0.25 -0.375 0.0625
|
||||
v 0.1875 -0.5 0.0625
|
||||
v 0.1875 -0.5 0.1875
|
||||
v 0.1875 -0.375 0.1875
|
||||
v 0.1875 -0.375 0.0625
|
||||
v 0.0625 -0.375 0.1875
|
||||
v 0.0625 -0.375 0.25
|
||||
v 0.0625 -0.25 0.25
|
||||
v 0.0625 -0.25 0.1875
|
||||
v -0.0625 -0.375 0.1875
|
||||
v -0.0625 -0.375 0.25
|
||||
v -0.0625 -0.25 0.25
|
||||
v -0.0625 -0.25 0.1875
|
||||
v 0.25 -0.5 0
|
||||
v 0.25 -0.5 0.0625
|
||||
v 0.25 -0.4375 0.0625
|
||||
v 0.25 -0.4375 0
|
||||
v 0.1875 -0.5 0
|
||||
v 0.1875 -0.5 0.0625
|
||||
v 0.1875 -0.4375 0.0625
|
||||
v 0.1875 -0.4375 0
|
||||
usemtl none
|
||||
s off
|
||||
g bottom_body
|
||||
f 1 2 3 4
|
||||
f 5 6 7 8
|
||||
f 1 4 8 5
|
||||
f 2 3 7 6
|
||||
f 1 2 6 5
|
||||
f 4 3 7 8
|
||||
g top_body
|
||||
f 9 10 11 12
|
||||
f 13 14 15 16
|
||||
f 9 12 16 13
|
||||
f 10 11 15 14
|
||||
f 9 10 14 13
|
||||
f 12 11 15 16
|
||||
g front
|
||||
f 17 18 19 20
|
||||
f 21 22 23 24
|
||||
f 17 20 24 21
|
||||
f 18 19 23 22
|
||||
f 17 18 22 21
|
||||
f 20 19 23 24
|
||||
g right_eye
|
||||
f 25 26 27 28
|
||||
f 29 30 31 32
|
||||
f 25 28 32 29
|
||||
f 26 27 31 30
|
||||
f 25 26 30 29
|
||||
f 28 27 31 32
|
||||
g left_eye
|
||||
f 33 34 35 36
|
||||
f 37 38 39 40
|
||||
f 33 36 40 37
|
||||
f 34 35 39 38
|
||||
f 33 34 38 37
|
||||
f 36 35 39 40
|
||||
g front_right_leg
|
||||
f 41 42 43 44
|
||||
f 45 46 47 48
|
||||
f 41 44 48 45
|
||||
f 42 43 47 46
|
||||
f 41 42 46 45
|
||||
f 44 43 47 48
|
||||
g front_left_eye
|
||||
f 49 50 51 52
|
||||
f 53 54 55 56
|
||||
f 49 52 56 53
|
||||
f 50 51 55 54
|
||||
f 49 50 54 53
|
||||
f 52 51 55 56
|
||||
g right_ear
|
||||
f 57 58 59 60
|
||||
f 61 62 63 64
|
||||
f 57 60 64 61
|
||||
f 58 59 63 62
|
||||
f 57 58 62 61
|
||||
f 60 59 63 64
|
||||
g left_ear
|
||||
f 65 66 67 68
|
||||
f 69 70 71 72
|
||||
f 65 68 72 69
|
||||
f 66 67 71 70
|
||||
f 65 66 70 69
|
||||
f 68 67 71 72
|
||||
g left_thigh
|
||||
f 73 74 75 76
|
||||
f 77 78 79 80
|
||||
f 73 76 80 77
|
||||
f 74 75 79 78
|
||||
f 73 74 78 77
|
||||
f 76 75 79 80
|
||||
g back_left_leg
|
||||
f 81 82 83 84
|
||||
f 85 86 87 88
|
||||
f 81 84 88 85
|
||||
f 82 83 87 86
|
||||
f 81 82 86 85
|
||||
f 84 83 87 88
|
||||
g right_thigh
|
||||
f 89 90 91 92
|
||||
f 93 94 95 96
|
||||
f 89 92 96 93
|
||||
f 90 91 95 94
|
||||
f 89 90 94 93
|
||||
f 92 91 95 96
|
||||
g tail
|
||||
f 97 98 99 100
|
||||
f 101 102 103 104
|
||||
f 97 100 104 101
|
||||
f 98 99 103 102
|
||||
f 97 98 102 101
|
||||
f 100 99 103 104
|
||||
g back_right_legaw
|
||||
f 105 106 107 108
|
||||
f 109 110 111 112
|
||||
f 105 108 112 109
|
||||
f 106 107 111 110
|
||||
f 105 106 110 109
|
||||
f 108 107 111 112
|
|
@ -3,7 +3,7 @@
|
|||
##Important: All the values separated by commas have to be without spaces.
|
||||
##
|
||||
|
||||
petz_list = kitty,puppy,ducky,lamb,lion,calf,panda,grizzly,pony,parrot,chicken,piggy,wolf,elephant,elephant_female,pigeon,moth,camel,clownfish,bat,silkworm,chimp
|
||||
petz_list = kitty,puppy,ducky,lamb,lion,calf,panda,grizzly,pony,parrot,chicken,piggy,wolf,elephant,elephant_female,pigeon,moth,camel,clownfish,bat,silkworm,chimp,hamster
|
||||
|
||||
##Type of model [mesh -or- cubic]
|
||||
type_model = mesh
|
||||
|
@ -72,6 +72,7 @@ camel_spawn = true
|
|||
bat_spawn = true
|
||||
silkworm_spawn = true
|
||||
chimp_spawn = true
|
||||
hamster_spawn = true
|
||||
|
||||
##Air Damage
|
||||
air_damage = 1
|
||||
|
@ -251,3 +252,11 @@ chimp_follow = default:blueberries
|
|||
chimp_spawn_chance = 1.0
|
||||
chimp_spawn_nodes = default:dirt_with_rainforest_litter
|
||||
chimp_spawn_biome = default
|
||||
|
||||
#Hamster Specific
|
||||
hamster_follow = farming:seed_wheat
|
||||
hamster_spawn_chance = 1.0
|
||||
hamster_spawn_nodes = default:desert_sand
|
||||
hamster_spawn_biome = default
|
||||
hamster_breed = default:blueberries
|
||||
hamster_copulation_distance = 2
|
||||
|
|
|
@ -20,7 +20,7 @@ minetest.register_entity("petz:"..pet_name,{
|
|||
give_orders = false,
|
||||
can_be_brushed = false,
|
||||
capture_item = "lasso",
|
||||
follow = petz.settings.calf_follow,
|
||||
follow = petz.settings.piggy_follow,
|
||||
drops = {
|
||||
{name = "petz:raw_porkchop", chance = 2, min = 1, max = 1,},
|
||||
{name = "petz:bone", chance = 5, min = 1, max = 1,},
|
||||
|
|
|
@ -32,6 +32,7 @@ minetest.register_entity("petz:"..pet_name, {
|
|||
give_orders = true,
|
||||
can_be_brushed = true,
|
||||
capture_item = "lasso",
|
||||
mutation = true,
|
||||
--Pony specific
|
||||
terrain_type = 3,
|
||||
scale_model = scale_model,
|
||||
|
|
|
@ -187,6 +187,13 @@ petz.settings.chimp_spawn_chance = tonumber(settings:get("chimp_spawn_chance"))
|
|||
petz.settings.chimp_spawn_nodes = settings:get("chimp_spawn_nodes", "")
|
||||
petz.settings.chimp_spawn_biome = settings:get("chimp_spawn_biome", "default")
|
||||
petz.settings.chimp_follow = settings:get("chimp_follow", "")
|
||||
petz.settings.hamster_spawn = settings:get_bool("hamster_spawn", true)
|
||||
petz.settings.hamster_spawn_chance = tonumber(settings:get("hamster_spawn_chance"))
|
||||
petz.settings.hamster_spawn_nodes = settings:get("hamster_spawn_nodes", "")
|
||||
petz.settings.hamster_spawn_biome = settings:get("hamster_spawn_biome", "default")
|
||||
petz.settings.hamster_follow = settings:get("hamster_follow", "")
|
||||
petz.settings.hamster_breed = settings:get("hamster_breed", "")
|
||||
petz.settings.hamster_copulation_distance = tonumber(settings:get("hamster_copulation_distance"))
|
||||
|
||||
if petz.settings.type_model == "mesh" then
|
||||
petz.settings.visual = "mesh"
|
||||
|
|
|
@ -185,3 +185,8 @@ Author: Alexander
|
|||
http://www.orangefreesounds.com/whistle-noise/
|
||||
License: The sound effect is permitted for non-commercial use
|
||||
under license “Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)”
|
||||
--------------------------------------------
|
||||
filenames: petz_hamster_squeak.ogg & petz_hamster_moaning.ogg
|
||||
Author: Daniel Simon
|
||||
http://soundbible.com/2144-Guinea-Pig.html
|
||||
License: Attribution 3.0
|
||||
|
|
After Width: | Height: | Size: 261 B |
After Width: | Height: | Size: 281 B |
After Width: | Height: | Size: 755 B |
After Width: | Height: | Size: 763 B |
After Width: | Height: | Size: 311 B |
After Width: | Height: | Size: 742 B |
After Width: | Height: | Size: 252 B |
After Width: | Height: | Size: 756 B |
After Width: | Height: | Size: 726 B |
After Width: | Height: | Size: 741 B |
After Width: | Height: | Size: 648 B |
After Width: | Height: | Size: 254 B |
After Width: | Height: | Size: 334 B |
After Width: | Height: | Size: 747 B |
After Width: | Height: | Size: 381 B |