poikilos
6 years ago
committed by
Jacob Gustafson
4 changed files with 271 additions and 4 deletions
@ -0,0 +1,228 @@ |
|||||
|
-- Cow. Descended from Krupnovpavel-JurajVajda version. |
||||
|
|
||||
|
-- =================================================================== |
||||
|
|
||||
|
local lcname = "cow" |
||||
|
local ucname = "Cow" |
||||
|
local msname = "codermobs_" .. lcname |
||||
|
local obj_name = "codermobs:" .. lcname |
||||
|
|
||||
|
-- =================================================================== |
||||
|
|
||||
|
mobs_param = { |
||||
|
lcname = lcname , |
||||
|
ucname = ucname , |
||||
|
obj_name = obj_name , |
||||
|
|
||||
|
aoc = 2 , |
||||
|
obr = 1 , |
||||
|
day_mode = true , |
||||
|
min_light = 10 , |
||||
|
max_light = 20 , |
||||
|
min_height = -31000 , |
||||
|
max_height = 31000 , |
||||
|
scale = 1.25 , |
||||
|
spawn_chance = 40000 , |
||||
|
spawn_type = "animal" , |
||||
|
|
||||
|
spawn_nodes = { |
||||
|
"default:dirt_with_dry_grass" , |
||||
|
"default:dirt_with_grass" , |
||||
|
"earthgen:dirt_with_dry_grass" , |
||||
|
"ethereal:green_dirt" , |
||||
|
"ethereal:green_dirt_top" , |
||||
|
"ethereal:grove_dirt" , |
||||
|
"mg:dirt_with_dry_grass" , |
||||
|
} , |
||||
|
|
||||
|
add_egg = true , |
||||
|
egg_image = "default_grass.png" , |
||||
|
} |
||||
|
|
||||
|
-- =================================================================== |
||||
|
|
||||
|
codermobs.adjust_param() |
||||
|
|
||||
|
-- =================================================================== |
||||
|
|
||||
|
mobs_param.core_param = { |
||||
|
type = mobs_param.spawn_type , |
||||
|
|
||||
|
passive = false, |
||||
|
attack_type = "dogfight", |
||||
|
reach = 2, |
||||
|
damage = 4, |
||||
|
hp_min = 5, |
||||
|
hp_max = 20, |
||||
|
armor = 200, |
||||
|
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, |
||||
|
visual = "mesh", |
||||
|
mesh = msname .. ".x" , |
||||
|
textures = { |
||||
|
{ msname .. "_01.png" } , |
||||
|
{ msname .. "_02.png" } , |
||||
|
}, |
||||
|
makes_footstep_sound = true, |
||||
|
sounds = { |
||||
|
random = msname , |
||||
|
}, |
||||
|
walk_velocity = 1, |
||||
|
run_velocity = 2, |
||||
|
jump = true, |
||||
|
drops = { |
||||
|
{ name = "mobs:meat_raw", chance = 1, min = 1, max = 3}, |
||||
|
{ name = "mobs:leather", chance = 1, min = 1, max = 2}, |
||||
|
}, |
||||
|
water_damage = 1, |
||||
|
lava_damage = 5, |
||||
|
light_damage = 0, |
||||
|
animation = { |
||||
|
speed_normal = 15, |
||||
|
speed_run = 15, |
||||
|
stand_start = 0, |
||||
|
stand_end = 30, |
||||
|
walk_start = 35, |
||||
|
walk_end = 65, |
||||
|
run_start = 105, |
||||
|
run_end = 135, |
||||
|
punch_start = 70, |
||||
|
punch_end = 100, |
||||
|
}, |
||||
|
follow = "farming:wheat", |
||||
|
view_range = 8, |
||||
|
replace_rate = 10, |
||||
|
-- replace_what = {"default:grass_3", "default:grass_4", "default:grass_5", "farming:wheat_8"}, |
||||
|
replace_what = { |
||||
|
{"group:grass", "air", 0}, |
||||
|
{"default:dirt_with_grass", "default:dirt", -1} |
||||
|
}, |
||||
|
replace_with = "air", |
||||
|
fear_height = 2, |
||||
|
on_rightclick = function(self, clicker) |
||||
|
|
||||
|
-- feed or tame |
||||
|
if mobs:feed_tame(self, clicker, 8, true, true) then return end |
||||
|
if mobs:protect(self, clicker) then return end |
||||
|
if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end |
||||
|
|
||||
|
local tool = clicker:get_wielded_item() |
||||
|
local name = clicker:get_player_name() |
||||
|
|
||||
|
-- milk cow with empty bucket |
||||
|
if tool:get_name() == "bucket:bucket_empty" then |
||||
|
|
||||
|
--if self.gotten == true |
||||
|
if self.child == true then |
||||
|
return |
||||
|
end |
||||
|
|
||||
|
if self.gotten == true then |
||||
|
minetest.chat_send_player(name, |
||||
|
"Cow already milked!") |
||||
|
return |
||||
|
end |
||||
|
|
||||
|
local inv = clicker:get_inventory() |
||||
|
|
||||
|
inv:remove_item("main", "bucket:bucket_empty") |
||||
|
|
||||
|
if inv:room_for_item("main", {name = "mobs:bucket_milk"}) then |
||||
|
clicker:get_inventory():add_item("main", "mobs:bucket_milk") |
||||
|
else |
||||
|
local pos = self.object:get_pos() |
||||
|
pos.y = pos.y + 0.5 |
||||
|
minetest.add_item(pos, {name = "mobs:bucket_milk"}) |
||||
|
end |
||||
|
|
||||
|
self.gotten = true -- milked |
||||
|
|
||||
|
return |
||||
|
end |
||||
|
-- milk cow with empty glass |
||||
|
if tool:get_name() == "vessels:drinking_glass" then |
||||
|
|
||||
|
--if self.gotten == true |
||||
|
if self.child == true then |
||||
|
return |
||||
|
end |
||||
|
|
||||
|
if self.gotten == true then |
||||
|
minetest.chat_send_player(name, |
||||
|
"Cow already milked!") |
||||
|
return |
||||
|
end |
||||
|
|
||||
|
local inv = clicker:get_inventory() |
||||
|
|
||||
|
inv:remove_item("main", "vessels:drinking_glass") |
||||
|
|
||||
|
if inv:room_for_item("main", {name = "food:milk"}) then |
||||
|
clicker:get_inventory():add_item("main", "food:milk") |
||||
|
else |
||||
|
local pos = self.object:get_pos() |
||||
|
pos.y = pos.y + 0.5 |
||||
|
minetest.add_item(pos, {name = "food:milk"}) |
||||
|
end |
||||
|
|
||||
|
self.gotten = true -- milked |
||||
|
|
||||
|
return |
||||
|
end |
||||
|
end, |
||||
|
} |
||||
|
|
||||
|
-- bucket of milk |
||||
|
minetest.register_craftitem(":mobs:bucket_milk", { |
||||
|
description = "Bucket of Milk", |
||||
|
inventory_image = "codermobs_bucket_milk.png", |
||||
|
stack_max = 1, |
||||
|
on_use = minetest.item_eat(8, 'bucket:bucket_empty'), |
||||
|
}) |
||||
|
|
||||
|
-- cheese wedge |
||||
|
minetest.register_craftitem(":mobs:cheese", { |
||||
|
description = "Cheese", |
||||
|
inventory_image = "codermobs_cheese.png", |
||||
|
on_use = minetest.item_eat (4) , |
||||
|
}) |
||||
|
|
||||
|
minetest.register_craft ({ |
||||
|
type = "cooking", |
||||
|
output = "mobs:cheese", |
||||
|
recipe = "mobs:bucket_milk", |
||||
|
cooktime = 5, |
||||
|
replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}} |
||||
|
}) |
||||
|
|
||||
|
-- cheese block |
||||
|
minetest.register_node(":mobs:cheeseblock", { |
||||
|
description = "Cheese Block", |
||||
|
tiles = { "codermobs_cheeseblock.png" } , |
||||
|
is_ground_content = false, |
||||
|
groups = {crumbly = 3}, |
||||
|
sounds = default.node_sound_dirt_defaults() |
||||
|
}) |
||||
|
|
||||
|
minetest.register_craft ({ |
||||
|
output = "mobs:cheeseblock" , |
||||
|
recipe = { |
||||
|
{'mobs:cheese', 'mobs:cheese', 'mobs:cheese'}, |
||||
|
{'mobs:cheese', 'mobs:cheese', 'mobs:cheese'}, |
||||
|
{'mobs:cheese', 'mobs:cheese', 'mobs:cheese'}, |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
minetest.register_craft({ |
||||
|
output = "mobs:cheese 9", |
||||
|
recipe = { |
||||
|
{'mobs:cheeseblock'}, |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
-- =================================================================== |
||||
|
|
||||
|
codermobs.setup_mob() |
||||
|
codermobs.log_done() |
||||
|
|
||||
|
-- =================================================================== |
||||
|
-- End of file. |
After Width: | Height: | Size: 34 KiB |
Loading…
Reference in new issue