Mehr Mods hinzugefügt
This commit is contained in:
parent
92a55732cf
commit
9e345a25fb
2805 changed files with 2096013 additions and 0 deletions
28
mods/ambience/README.md
Normal file
28
mods/ambience/README.md
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
Ambience Redo mod for Minetest
|
||||||
|
by TenPlus1
|
||||||
|
|
||||||
|
Based on Immersive Sounds .36 mod by Neuromancer and optimized to run on servers with new fire sounds added when Fire Redo mod is detected...
|
||||||
|
|
||||||
|
- 0.1 - Initial release
|
||||||
|
- 0.2 - Code change and new water sounds added
|
||||||
|
- 0.3 - Works with Fire Redo mod to provide fire sounds
|
||||||
|
- 0.4 - Code optimized
|
||||||
|
- 0.5 - Changed to kilbiths smaller sound files and removed canadianloon1, adjusted timings
|
||||||
|
- 0.6 - Using new find_nodes_in_area features to count nodes and speed up execution (thanks everamzah)
|
||||||
|
- 0.7 - Code tweaks and added Jungle sounds for day and night time
|
||||||
|
- 0.8 - Override default water sounds for 0.4.14 dev and above, add separate gain for each sound
|
||||||
|
- 0.9 - Plays music files on server or local client when found at midnight, files to be named "ambience_music.1.ogg" changing number each up to 9.
|
||||||
|
- 1.0 - Added icecrack sound when walking on snow/ice flows, also tidied code
|
||||||
|
- 1.1 - Using newer functions, Minetest 0.4.16 and above needed to run
|
||||||
|
- 1.2 - Added PlayerPlus compatibility, removed fire sounds, added volume changes
|
||||||
|
- 1.3 - Added API for use with other mods, code rewrite
|
||||||
|
- 1.4 - Re-ordered water sets to come before fire and lava, day/night sounds play when leaves around and above ground
|
||||||
|
- 1.5 - Added 'flame_sound' and fire redo check, code tidy and tweak, added ephemeral flag for background sounds.
|
||||||
|
- 1.6 - Finding env_sounds disables water and lava sets, added 'ambience_water_move' flag to override water walking sounds, use eye level for head node.
|
||||||
|
- 1.7 - Music will play every 20-30 minutes if found, use '/mvol 0' to stop playing music or disable in-game.
|
||||||
|
- 1.8 - Players can set induvidual volume for sound and music which is saved.
|
||||||
|
- 1.9 - Tidy code, refactor music playing, add biome name to sound_check.
|
||||||
|
- 2.0 - Add Mineclone support, add ethereal leaf check, remove minetest.after for custom timer, add Polish translation, tweak & tidy code.
|
||||||
|
- 2.1 - Add ambience.group_total() function for easy counting of group: nodes inside a set.
|
||||||
|
|
||||||
|
Code license: MIT
|
101
mods/ambience/api.txt
Normal file
101
mods/ambience/api.txt
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
|
||||||
|
Ambience Lite API
|
||||||
|
=================
|
||||||
|
|
||||||
|
This short guide will show you how to add sound sets into ambience mod for the
|
||||||
|
api to use and play sounds accordingly. Please note that the order they are
|
||||||
|
added will affect sound checks, so high priority sets first.
|
||||||
|
|
||||||
|
|
||||||
|
Function Usage
|
||||||
|
==============
|
||||||
|
|
||||||
|
|
||||||
|
Adding Sound Set
|
||||||
|
----------------
|
||||||
|
|
||||||
|
ambience.add_set(set_name, def)
|
||||||
|
'set_name' contains the name of the sound set to add
|
||||||
|
'def' contains the following:
|
||||||
|
'frequency' how often the sound set is played (1 to 1000) higher is more
|
||||||
|
'nodes' contains a table of nodes needed for checks
|
||||||
|
'sound_check(def)' function to check if sounds can be played, def contains:
|
||||||
|
'player' player userdata
|
||||||
|
'pos' position of player
|
||||||
|
'tod' time of day
|
||||||
|
'totals' totals for each node e.g. def.totals["default:sand"]
|
||||||
|
'positions' position data for every node found
|
||||||
|
'head_node' name of node at player head level
|
||||||
|
'feet_node' nameof node at player foot level
|
||||||
|
'biome' name of biome at current position
|
||||||
|
|
||||||
|
This will let you add a set or sounds with the frequency it's used and check
|
||||||
|
function for it to play. If ephemeral is true then no handler will be used and sound will be played in background alongside other sounds.
|
||||||
|
|
||||||
|
e.g.
|
||||||
|
|
||||||
|
ambience.add_set("windy", {
|
||||||
|
frequency = 500,
|
||||||
|
nodes = {"default:sand"},
|
||||||
|
sounds = {
|
||||||
|
{name = "wind", length = 9, gain = 0.3},
|
||||||
|
{name = "desertwind", length = 8, gain = 0.3},
|
||||||
|
{name = "crow", length = 3, ephemeral = true},
|
||||||
|
},
|
||||||
|
sound_check = function(def)
|
||||||
|
local number = def.totals["default:sand"] or 0 -- yep, can also be nil
|
||||||
|
if number > 20 then
|
||||||
|
return "windy", 0.2 -- return set to play and optional gain volume
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
Counting group: nodes
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Instead of counting each node total for things like leaves within the sound_check function, you could use the following helper function to return their total instead e.g.
|
||||||
|
|
||||||
|
local number = ambience.group_totals(def.totals, "leaves") -- count all group:leaves
|
||||||
|
|
||||||
|
|
||||||
|
Getting Sound Set
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
ambience.get_set(set_name)
|
||||||
|
|
||||||
|
This returns a table containing all of the set information like example above.
|
||||||
|
|
||||||
|
e.g.
|
||||||
|
|
||||||
|
local myset = ambience.get_set("windy") -- returns everything inside {} above.
|
||||||
|
|
||||||
|
|
||||||
|
Deleting Sound Set
|
||||||
|
------------------
|
||||||
|
|
||||||
|
ambience.del_set(set_name)
|
||||||
|
|
||||||
|
This will remove a sound set from the list.
|
||||||
|
|
||||||
|
e.g.
|
||||||
|
|
||||||
|
ambience.del_set("windy")
|
||||||
|
|
||||||
|
|
||||||
|
Additional Commands
|
||||||
|
===================
|
||||||
|
|
||||||
|
Two volume commands have been added to set sound and music volume:
|
||||||
|
|
||||||
|
/svol (0.1 to 1.0)
|
||||||
|
/mvol (0.1 to 1.0) -- 0 can be used to stop music curently playing
|
||||||
|
|
||||||
|
|
||||||
|
Music
|
||||||
|
=====
|
||||||
|
|
||||||
|
Music can be stored in the sounds folder either on server or locally and so long
|
||||||
|
as it is named 'ambience_music.1', 'ambience_music.2' etc. then it will select
|
||||||
|
a song randomly to play every 20 minutes.
|
||||||
|
|
367
mods/ambience/init.lua
Normal file
367
mods/ambience/init.lua
Normal file
|
@ -0,0 +1,367 @@
|
||||||
|
|
||||||
|
-- global
|
||||||
|
|
||||||
|
ambience = {}
|
||||||
|
|
||||||
|
-- settings
|
||||||
|
|
||||||
|
local SOUNDVOLUME = 1.0
|
||||||
|
local MUSICVOLUME = 0.6
|
||||||
|
local MUSICINTERVAL = 60 * 20
|
||||||
|
local play_music = core.settings:get_bool("ambience_music") ~= false
|
||||||
|
local radius = 6
|
||||||
|
local playing = {} -- user settings, timers and current set playing
|
||||||
|
local sound_sets = {} -- all the sounds and their settings
|
||||||
|
local sound_set_order = {} -- needed because pairs loops randomly through tables
|
||||||
|
local set_nodes = {} -- all the nodes needed for sets
|
||||||
|
|
||||||
|
-- translation
|
||||||
|
|
||||||
|
local S = core.get_translator("ambience")
|
||||||
|
|
||||||
|
-- add set to list
|
||||||
|
|
||||||
|
function ambience.add_set(set_name, def)
|
||||||
|
|
||||||
|
if not set_name or not def then return end
|
||||||
|
|
||||||
|
sound_sets[set_name] = {
|
||||||
|
frequency = def.frequency or 50,
|
||||||
|
sounds = def.sounds,
|
||||||
|
sound_check = def.sound_check,
|
||||||
|
nodes = def.nodes
|
||||||
|
}
|
||||||
|
|
||||||
|
-- add set name to the sound_set_order table
|
||||||
|
local can_add = true
|
||||||
|
|
||||||
|
for i = 1, #sound_set_order do
|
||||||
|
|
||||||
|
if sound_set_order[i] == set_name then can_add = false end
|
||||||
|
end
|
||||||
|
|
||||||
|
if can_add then table.insert(sound_set_order, set_name) end
|
||||||
|
|
||||||
|
-- add any missing nodes to the set_nodes table
|
||||||
|
if def.nodes then
|
||||||
|
|
||||||
|
for i = 1, #def.nodes do
|
||||||
|
|
||||||
|
can_add = def.nodes[i]
|
||||||
|
|
||||||
|
for j = 1, #set_nodes do
|
||||||
|
|
||||||
|
if def.nodes[i] == set_nodes[j] then can_add = false end
|
||||||
|
end
|
||||||
|
|
||||||
|
if can_add then table.insert(set_nodes, can_add) end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- return set from list using name
|
||||||
|
|
||||||
|
function ambience.get_set(set_name)
|
||||||
|
return sound_sets[set_name]
|
||||||
|
end
|
||||||
|
|
||||||
|
-- remove set from list
|
||||||
|
|
||||||
|
function ambience.del_set(set_name)
|
||||||
|
|
||||||
|
sound_sets[set_name] = nil
|
||||||
|
|
||||||
|
local can_del = false
|
||||||
|
|
||||||
|
for i = 1, #sound_set_order do
|
||||||
|
|
||||||
|
if sound_set_order[i] == set_name then can_del = i end
|
||||||
|
end
|
||||||
|
|
||||||
|
if can_del then table.remove(sound_set_order, can_del) end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- return node total belonging to a specific group:
|
||||||
|
|
||||||
|
function ambience.group_total(ntab, ngrp)
|
||||||
|
|
||||||
|
local tot = 0
|
||||||
|
local def, grp
|
||||||
|
|
||||||
|
for _,n in pairs(ntab) do
|
||||||
|
|
||||||
|
def = core.registered_nodes[_]
|
||||||
|
grp = def and def.groups and def.groups[ngrp]
|
||||||
|
|
||||||
|
if grp and grp > 0 then
|
||||||
|
tot = tot + n
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return tot
|
||||||
|
end
|
||||||
|
|
||||||
|
-- setup table when player joins
|
||||||
|
|
||||||
|
core.register_on_joinplayer(function(player)
|
||||||
|
|
||||||
|
if player then
|
||||||
|
|
||||||
|
local name = player:get_player_name()
|
||||||
|
local meta = player:get_meta()
|
||||||
|
|
||||||
|
playing[name] = {
|
||||||
|
mvol = tonumber(meta:get_string("ambience.mvol")) or MUSICVOLUME,
|
||||||
|
svol = tonumber(meta:get_string("ambience.svol")) or SOUNDVOLUME,
|
||||||
|
timer = 0,
|
||||||
|
music = 0,
|
||||||
|
music_handler = nil
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- remove table when player leaves
|
||||||
|
|
||||||
|
core.register_on_leaveplayer(function(player)
|
||||||
|
|
||||||
|
if player then playing[player:get_player_name()] = nil end
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- plays music and selects sound set
|
||||||
|
|
||||||
|
local function get_ambience(player, tod, name)
|
||||||
|
|
||||||
|
-- if enabled and not already playing, play local/server music on interval check
|
||||||
|
if play_music and playing[name] and playing[name].mvol > 0 then
|
||||||
|
|
||||||
|
-- increase music time interval
|
||||||
|
playing[name].music = playing[name].music + 1
|
||||||
|
|
||||||
|
-- play music on interval check
|
||||||
|
if playing[name].music > MUSICINTERVAL and playing[name].music_handler == nil then
|
||||||
|
|
||||||
|
playing[name].music_handler = core.sound_play("ambience_music", {
|
||||||
|
to_player = name,
|
||||||
|
gain = playing[name].mvol
|
||||||
|
})
|
||||||
|
|
||||||
|
playing[name].music = 0 -- reset interval
|
||||||
|
end
|
||||||
|
--print("-- music timer", playing[name].music .. "/" .. MUSICINTERVAL)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- get foot and head level nodes at player position
|
||||||
|
local pos = player:get_pos() ; if not pos then return end
|
||||||
|
local prop = player:get_properties()
|
||||||
|
local eyeh = prop.eye_height or 1.47 -- eye level with fallback
|
||||||
|
|
||||||
|
pos.y = pos.y + eyeh -- head level
|
||||||
|
|
||||||
|
local nod_head = core.get_node(pos).name
|
||||||
|
|
||||||
|
pos.y = (pos.y - eyeh) + 0.2 -- foot level
|
||||||
|
|
||||||
|
local nod_feet = core.get_node(pos).name
|
||||||
|
|
||||||
|
pos.y = pos.y - 0.2 -- reset pos
|
||||||
|
|
||||||
|
-- get all set nodes around player
|
||||||
|
local ps, cn = core.find_nodes_in_area(
|
||||||
|
{x = pos.x - radius, y = pos.y - radius, z = pos.z - radius},
|
||||||
|
{x = pos.x + radius, y = pos.y + radius, z = pos.z + radius}, set_nodes)
|
||||||
|
|
||||||
|
-- loop through sets in order and choose first that meets conditions set
|
||||||
|
for n = 1, #sound_set_order do
|
||||||
|
|
||||||
|
local set = sound_sets[ sound_set_order[n] ]
|
||||||
|
|
||||||
|
if set and set.sound_check then
|
||||||
|
|
||||||
|
-- get biome data
|
||||||
|
local bdata = core.get_biome_data(pos)
|
||||||
|
local biome = bdata and core.get_biome_name(bdata.biome) or ""
|
||||||
|
|
||||||
|
-- pass settings to set function for condition check
|
||||||
|
local set_name, gain = set.sound_check({
|
||||||
|
player = player,
|
||||||
|
pos = pos,
|
||||||
|
tod = tod,
|
||||||
|
totals = cn,
|
||||||
|
positions = ps,
|
||||||
|
head_node = nod_head,
|
||||||
|
feet_node = nod_feet,
|
||||||
|
biome = biome
|
||||||
|
})
|
||||||
|
|
||||||
|
-- if conditions met return set name and gain value
|
||||||
|
if set_name then return set_name, gain end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return nil, nil
|
||||||
|
end
|
||||||
|
|
||||||
|
-- players routine
|
||||||
|
|
||||||
|
local timer = 0
|
||||||
|
local random = math.random
|
||||||
|
|
||||||
|
core.register_globalstep(function(dtime)
|
||||||
|
|
||||||
|
local players = core.get_connected_players()
|
||||||
|
local pname
|
||||||
|
|
||||||
|
-- reduce sound timer for each player and stop/reset when needed
|
||||||
|
for _, player in pairs(players) do
|
||||||
|
|
||||||
|
pname = player:get_player_name()
|
||||||
|
|
||||||
|
if playing[pname] and playing[pname].timer > 0 then
|
||||||
|
|
||||||
|
playing[pname].timer = playing[pname].timer - dtime
|
||||||
|
|
||||||
|
if playing[pname].timer <= 0 then
|
||||||
|
|
||||||
|
if playing[pname].handler then
|
||||||
|
core.sound_stop(playing[pname].handler)
|
||||||
|
end
|
||||||
|
|
||||||
|
playing[pname].set = nil
|
||||||
|
playing[pname].gain = nil
|
||||||
|
playing[pname].handler = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- one second timer
|
||||||
|
timer = timer + dtime ; if timer < 1 then return end ; timer = 0
|
||||||
|
|
||||||
|
local number, chance, ambience, handler, ok
|
||||||
|
local tod = core.get_timeofday()
|
||||||
|
|
||||||
|
-- loop through players
|
||||||
|
for _, player in pairs(players) do
|
||||||
|
|
||||||
|
pname = player:get_player_name()
|
||||||
|
|
||||||
|
local set_name, MORE_GAIN = get_ambience(player, tod, pname)
|
||||||
|
|
||||||
|
ok = playing[pname] -- everything starts off ok if player found
|
||||||
|
|
||||||
|
-- are we playing something already?
|
||||||
|
if ok and playing[pname].handler then
|
||||||
|
|
||||||
|
-- stop current sound if another set active or gain changed
|
||||||
|
if playing[pname].set ~= set_name
|
||||||
|
or playing[pname].gain ~= MORE_GAIN then
|
||||||
|
|
||||||
|
--print ("-- change stop", set_name, playing[pname].handler)
|
||||||
|
|
||||||
|
core.sound_stop(playing[pname].handler)
|
||||||
|
|
||||||
|
playing[pname].set = nil
|
||||||
|
playing[pname].gain = nil
|
||||||
|
playing[pname].handler = nil
|
||||||
|
playing[pname].timer = 0
|
||||||
|
else
|
||||||
|
ok = false -- sound set still playing, skip new sound
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- set random chance
|
||||||
|
chance = random(1000)
|
||||||
|
|
||||||
|
-- if chance is lower than set frequency then select set
|
||||||
|
if ok and set_name and chance < sound_sets[set_name].frequency then
|
||||||
|
|
||||||
|
number = random(#sound_sets[set_name].sounds) -- choose random sound from set
|
||||||
|
ambience = sound_sets[set_name].sounds[number] -- grab sound information
|
||||||
|
|
||||||
|
-- play sound
|
||||||
|
handler = core.sound_play(ambience.name, {
|
||||||
|
to_player = pname,
|
||||||
|
gain = ((ambience.gain or 0.3) + (MORE_GAIN or 0)) * playing[pname].svol,
|
||||||
|
pitch = ambience.pitch or 1.0
|
||||||
|
}, ambience.ephemeral)
|
||||||
|
|
||||||
|
--print ("playing... " .. ambience.name .. " (" .. chance .. " < "
|
||||||
|
-- .. sound_sets[set_name].frequency .. ") @ ", MORE_GAIN, handler)
|
||||||
|
|
||||||
|
if handler then
|
||||||
|
|
||||||
|
-- set what player is currently listening to if handler found
|
||||||
|
playing[pname].set = set_name
|
||||||
|
playing[pname].gain = MORE_GAIN
|
||||||
|
playing[pname].handler = handler
|
||||||
|
playing[pname].timer = ambience.length
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- sound volume command
|
||||||
|
|
||||||
|
core.register_chatcommand("svol", {
|
||||||
|
params = S("<svol>"),
|
||||||
|
description = S("set sound volume (0.1 to 1.0)"),
|
||||||
|
privs = {},
|
||||||
|
|
||||||
|
func = function(name, param)
|
||||||
|
|
||||||
|
local svol = tonumber(param) or playing[name].svol
|
||||||
|
|
||||||
|
if svol < 0.1 then svol = 0.1 end
|
||||||
|
if svol > 1.0 then svol = 1.0 end
|
||||||
|
|
||||||
|
local player = core.get_player_by_name(name)
|
||||||
|
local meta = player:get_meta()
|
||||||
|
|
||||||
|
meta:set_string("ambience.svol", svol)
|
||||||
|
|
||||||
|
playing[name].svol = svol
|
||||||
|
|
||||||
|
return true, S("Sound volume set to @1", svol)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- music volume command (0 stops music)
|
||||||
|
|
||||||
|
core.register_chatcommand("mvol", {
|
||||||
|
params = S("<mvol>"),
|
||||||
|
description = S("set music volume (0.1 to 1.0, 0 to stop music)"),
|
||||||
|
privs = {},
|
||||||
|
|
||||||
|
func = function(name, param)
|
||||||
|
|
||||||
|
local mvol = tonumber(param) or playing[name].mvol
|
||||||
|
|
||||||
|
-- stop music currently playing by setting volume to 0
|
||||||
|
if mvol == 0 and playing[name].music_handler then
|
||||||
|
|
||||||
|
core.sound_stop(playing[name].music_handler)
|
||||||
|
|
||||||
|
playing[name].music_handler = nil
|
||||||
|
|
||||||
|
core.chat_send_player(name, S("Music stopped!"))
|
||||||
|
end
|
||||||
|
|
||||||
|
if mvol < 0 then mvol = 0 end
|
||||||
|
if mvol > 1.0 then mvol = 1.0 end
|
||||||
|
|
||||||
|
local player = core.get_player_by_name(name)
|
||||||
|
local meta = player:get_meta()
|
||||||
|
|
||||||
|
meta:set_string("ambience.mvol", mvol)
|
||||||
|
|
||||||
|
playing[name].mvol = mvol
|
||||||
|
|
||||||
|
return true, S("Music volume set to @1", mvol)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- load default sound sets
|
||||||
|
|
||||||
|
dofile(core.get_modpath("ambience") .. "/soundsets.lua")
|
||||||
|
|
||||||
|
|
||||||
|
print("[MOD] Ambience Lite loaded")
|
88
mods/ambience/license.txt
Normal file
88
mods/ambience/license.txt
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2022 TenPlus1
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
|
Sound licenses:
|
||||||
|
|
||||||
|
--Nightime Sound, Recorded by Mike Koenig, License: Attribution 3.0 http://soundbible.com/951-Nightime.html
|
||||||
|
|
||||||
|
--Crickets At Night Sound, License: Attribution 3.0 | Recorded by Mike Koenig |http://soundbible.com/365-Crickets-At-Night.html
|
||||||
|
|
||||||
|
--Medium Pack Of Wolves Howling, License: Public Domain | Recorded by fws.gov, http://soundbible.com/277-Medium-Pack-Of-Wolves-Howling.html
|
||||||
|
|
||||||
|
--Horned Owl Sound, License: Attribution 3.0 | Recorded by Mike Koenig , http://soundbible.com/1851-Horned-Owl.html
|
||||||
|
|
||||||
|
--Bats In Cave Sound, License: CC0 | Recorded by SaloSensei , https://freesound.org/people/SaloSensei/sounds/616219/
|
||||||
|
|
||||||
|
--Spooky Water Drops Sound, License: Attribution 3.0 | Recorded by Mike Koenig, http://soundbible.com/380-Spooky-Water-Drops.html
|
||||||
|
|
||||||
|
-- Single Water Droplet Sound, License: Attribution 3.0 | Recorded by Mike Koenig, http://soundbible.com/384-Single-Water-Droplet.html
|
||||||
|
|
||||||
|
--HollowWind, Black Boe, Creative Commons 0 License, http://www.freesound.org/people/Black%20Boe/sounds/22331/
|
||||||
|
|
||||||
|
--drippingwater*.ogg sounds: CC0, Dripping Water Mod, by kddekadenz, http://minetest.net/forum/viewtopic.php?id=1688
|
||||||
|
|
||||||
|
--best cardinal bird: License: Attribution 3.0 | Recorded by PsychoBird, http://soundbible.com/1515-Best-Cardinal-Bird.html
|
||||||
|
|
||||||
|
--birdsongnl: the Attribution License, HerbertBoland, http://www.freesound.org/people/HerbertBoland/sounds/28312/ (end)
|
||||||
|
|
||||||
|
--robin2: Attribution License, reinsamba, http://www.freesound.org/people/reinsamba/sounds/32479/ (end)
|
||||||
|
|
||||||
|
--Craw.WAV, Attribution License, inchadney, http://www.freesound.org/people/inchadney/sounds/52450/
|
||||||
|
|
||||||
|
--bluejay.wav, Creative Commons 0 License, UncleSigmund, http://www.freesound.org/people/UncleSigmund/sounds/42382/
|
||||||
|
|
||||||
|
--scuba1*.ogg- digifishmusic, Attribution License, http://www.freesound.org/people/digifishmusic/sounds/45521/
|
||||||
|
|
||||||
|
--dolphin_screaming - Creative Commons 0 License, felix.blume, http://www.freesound.org/people/felix.blume/sounds/161691/
|
||||||
|
|
||||||
|
ComboWind uses:
|
||||||
|
--wind-in-the-trees -Attribution License, laurent, http://www.freesound.org/people/laurent/sounds/16995/
|
||||||
|
--drygrassInWind- Creative Commons 0 License, felix.blume, http://www.freesound.org/people/felix.blume/sounds/146436/
|
||||||
|
|
||||||
|
--Splash: Attribution 3.0 | Recorded by BlastwaveFx.com, http://soundbible.com/546-Fish-Splashing.html
|
||||||
|
|
||||||
|
--small_waterfall Attribution License, volivieri, http://www.freesound.org/people/volivieri/sounds/38390/
|
||||||
|
|
||||||
|
--Lake_Waves_2*, Attribution License, Benboncan, http://www.freesound.org/people/Benboncan/sounds/67884/
|
||||||
|
|
||||||
|
--earth01a, Creative Commons 0 License., Halion , http://www.freesound.org/people/Halion/sounds/17785
|
||||||
|
|
||||||
|
--fiji_beach, Creative Commons 0 License, c97059890, http://www.freesound.org/people/c97059890/sounds/21754/
|
||||||
|
|
||||||
|
--seagull, Attribution 3.0 License., hazure, http://www.freesound.org/people/hazure/sounds/23707/,
|
||||||
|
|
||||||
|
desert:
|
||||||
|
coyote2, Attribution License, rogerforeman, http://www.freesound.org/people/rogerforeman/sounds/68068/
|
||||||
|
http://www.freesound.org/people/Proxima4/sounds/104319/
|
||||||
|
Desert Monolith.wav, Creative Commons 0 License, Proxima4, http://www.freesound.org/people/Proxima4/sounds/104319/
|
||||||
|
Rattlesnake Rattle, Public Domain, fws.gov, http://soundbible.com/237-Rattlesnake-Rattle.html
|
||||||
|
|
||||||
|
flying:
|
||||||
|
crystal_airlines: Attribution License, suonho, http://www.freesound.org/people/suonho/sounds/56364/
|
||||||
|
|
||||||
|
desert wind:
|
||||||
|
Desert Simple.wav, Creative Commons 0 License, Proxima4, http://www.freesound.org/people/Proxima4/sounds/104320/
|
||||||
|
|
||||||
|
http://www.freesfx.co.uk/soundeffects/forests-jungles/
|
||||||
|
|
||||||
|
icecrack.ogg by ecfike, Creative Commons 0 license (https://freesound.org/people/ecfike/sounds/177212/)
|
7
mods/ambience/locale/ambience.eo.tr
Normal file
7
mods/ambience/locale/ambience.eo.tr
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# textdomain: ambience
|
||||||
|
<svol>=<slaŭtec>
|
||||||
|
set sound volume (0.1 to 1.0)=agordi sonlaŭtecon (0.1 ĝis 1.0)
|
||||||
|
Sound volume set to @1=Sonlaŭteco agordita al @1
|
||||||
|
<mvol>=<mlaŭtec>
|
||||||
|
set music volume (0.1 to 1.0, 0 to stop music)=agordi muziklaŭtecon (0.1 ĝis 1.0; malŝalti muzikon per 0)
|
||||||
|
Music volume set to @1=Muziklaŭteco agordita al @1
|
7
mods/ambience/locale/ambience.es.tr
Normal file
7
mods/ambience/locale/ambience.es.tr
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# textdomain: ambience
|
||||||
|
<svol>=<volumen de sonido>
|
||||||
|
set sound volume (0.1 to 1.0)=establecer volumen de sonido (0.1 a 1.0)
|
||||||
|
Sound volume set to @1=Volumen de sonido establecido a @1
|
||||||
|
<mvol>=<volumen de música>
|
||||||
|
set music volume (0.1 to 1.0, 0 to stop music)=establecer volumen de música (0.1 a 1.0, 0 para detener la música)
|
||||||
|
Music volume set to @1=Volumen de música establecido a @1
|
7
mods/ambience/locale/ambience.pl.tr
Normal file
7
mods/ambience/locale/ambience.pl.tr
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# textdomain: ambience
|
||||||
|
<svol>=<sgłośność>
|
||||||
|
set sound volume (0.1 to 1.0)=ustaw głośność dźwięku (0.1 do 1.0)
|
||||||
|
Sound volume set to @1=Głośność dźwięku ustawiona na @1
|
||||||
|
<mvol>=<mgłośność>
|
||||||
|
set music volume (0.1 to 1.0, 0 to stop music)=ustaw głośność muzyki (0.1 do 1.0, 0 aby zatrzymać muzykę)
|
||||||
|
Music volume set to @1=Głośność muzyki ustawiona na @1
|
7
mods/ambience/locale/template.txt
Normal file
7
mods/ambience/locale/template.txt
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# textdomain: ambience
|
||||||
|
<svol>=
|
||||||
|
set sound volume (0.1 to 1.0)=
|
||||||
|
Sound volume set to @1=
|
||||||
|
<mvol>=
|
||||||
|
set music volume (0.1 to 1.0, 0 to stop music)=
|
||||||
|
Music volume set to @1=
|
7
mods/ambience/mod.conf
Normal file
7
mods/ambience/mod.conf
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
name = ambience
|
||||||
|
description = Adds realistic sound effects into your world.
|
||||||
|
optional_depends = default, mcl_core, mclx_core
|
||||||
|
min_minetest_version = 5.0
|
||||||
|
release = 30923
|
||||||
|
author = TenPlus1
|
||||||
|
title = Ambience
|
BIN
mods/ambience/screenshot.jpg
Normal file
BIN
mods/ambience/screenshot.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 96 KiB |
5
mods/ambience/settingtypes.txt
Normal file
5
mods/ambience/settingtypes.txt
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# If enabled will play a random music file from ./minetest/sounds at midnight
|
||||||
|
ambience_music (Ambience music) bool true
|
||||||
|
|
||||||
|
# If enabled then ambience will take over sounds when moving in water
|
||||||
|
ambience_water_move (Ambience water movement) bool true
|
BIN
mods/ambience/sounds/bats.ogg
Normal file
BIN
mods/ambience/sounds/bats.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/beach.ogg
Normal file
BIN
mods/ambience/sounds/beach.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/beach_2.ogg
Normal file
BIN
mods/ambience/sounds/beach_2.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/bird1.ogg
Normal file
BIN
mods/ambience/sounds/bird1.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/bird2.ogg
Normal file
BIN
mods/ambience/sounds/bird2.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/bluejay.ogg
Normal file
BIN
mods/ambience/sounds/bluejay.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/canadianloon2.ogg
Normal file
BIN
mods/ambience/sounds/canadianloon2.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/cardinal.ogg
Normal file
BIN
mods/ambience/sounds/cardinal.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/coyote.ogg
Normal file
BIN
mods/ambience/sounds/coyote.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/craw.ogg
Normal file
BIN
mods/ambience/sounds/craw.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/crestedlark.ogg
Normal file
BIN
mods/ambience/sounds/crestedlark.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/cricket.ogg
Normal file
BIN
mods/ambience/sounds/cricket.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/deer.ogg
Normal file
BIN
mods/ambience/sounds/deer.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/desertwind.ogg
Normal file
BIN
mods/ambience/sounds/desertwind.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/drippingwater1.ogg
Normal file
BIN
mods/ambience/sounds/drippingwater1.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/drippingwater2.ogg
Normal file
BIN
mods/ambience/sounds/drippingwater2.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/frog.ogg
Normal file
BIN
mods/ambience/sounds/frog.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/gull.ogg
Normal file
BIN
mods/ambience/sounds/gull.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/hornedowl.ogg
Normal file
BIN
mods/ambience/sounds/hornedowl.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/icecrack.ogg
Normal file
BIN
mods/ambience/sounds/icecrack.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/jungle_day_1.ogg
Normal file
BIN
mods/ambience/sounds/jungle_day_1.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/jungle_night_1.ogg
Normal file
BIN
mods/ambience/sounds/jungle_night_1.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/jungle_night_2.ogg
Normal file
BIN
mods/ambience/sounds/jungle_night_2.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/lava.ogg
Normal file
BIN
mods/ambience/sounds/lava.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/peacock.ogg
Normal file
BIN
mods/ambience/sounds/peacock.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/river.ogg
Normal file
BIN
mods/ambience/sounds/river.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/robin.ogg
Normal file
BIN
mods/ambience/sounds/robin.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/scuba.ogg
Normal file
BIN
mods/ambience/sounds/scuba.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/seagull.ogg
Normal file
BIN
mods/ambience/sounds/seagull.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/waterfall.ogg
Normal file
BIN
mods/ambience/sounds/waterfall.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/wind.ogg
Normal file
BIN
mods/ambience/sounds/wind.ogg
Normal file
Binary file not shown.
BIN
mods/ambience/sounds/wolves.ogg
Normal file
BIN
mods/ambience/sounds/wolves.ogg
Normal file
Binary file not shown.
385
mods/ambience/soundsets.lua
Normal file
385
mods/ambience/soundsets.lua
Normal file
|
@ -0,0 +1,385 @@
|
||||||
|
--[[
|
||||||
|
Default Sound Sets
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Order is very important when adding a sound set so it will play
|
||||||
|
certain sound sets before any another.
|
||||||
|
--]]
|
||||||
|
|
||||||
|
-- mod support
|
||||||
|
|
||||||
|
local mod_def = core.get_modpath("default")
|
||||||
|
local mod_mcl = core.get_modpath("mcl_core")
|
||||||
|
|
||||||
|
-- Underwater sounds play when player head is submerged
|
||||||
|
|
||||||
|
ambience.add_set("underwater", {
|
||||||
|
|
||||||
|
frequency = 1000,
|
||||||
|
|
||||||
|
sounds = {
|
||||||
|
{name = "scuba", length = 8}
|
||||||
|
},
|
||||||
|
|
||||||
|
sound_check = function(def)
|
||||||
|
|
||||||
|
local nodef = core.registered_nodes[def.head_node]
|
||||||
|
|
||||||
|
if nodef and nodef.groups and nodef.groups.water then
|
||||||
|
return "underwater"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Splashing sound plays when player walks inside water nodes (if enabled)
|
||||||
|
|
||||||
|
if core.settings:get_bool("ambience_water_move") ~= false then
|
||||||
|
|
||||||
|
-- override default water sounds
|
||||||
|
|
||||||
|
if mod_def then
|
||||||
|
core.override_item("default:water_source", { sounds = {} })
|
||||||
|
core.override_item("default:water_flowing", { sounds = {} })
|
||||||
|
core.override_item("default:river_water_source", { sounds = {} })
|
||||||
|
core.override_item("default:river_water_flowing", { sounds = {} })
|
||||||
|
elseif mod_mcl then
|
||||||
|
core.override_item("mcl_core:water_source", { sounds = {} })
|
||||||
|
core.override_item("mcl_core:water_flowing", { sounds = {} })
|
||||||
|
core.override_item("mclx_core:river_water_source", { sounds = {} })
|
||||||
|
core.override_item("mclx_core:river_water_flowing", { sounds = {} })
|
||||||
|
end
|
||||||
|
|
||||||
|
ambience.add_set("splash", {
|
||||||
|
|
||||||
|
frequency = 1000,
|
||||||
|
|
||||||
|
sounds = {
|
||||||
|
{name = "default_water_footstep", length = 2}
|
||||||
|
},
|
||||||
|
|
||||||
|
sound_check = function(def)
|
||||||
|
|
||||||
|
local nodef = core.registered_nodes[def.feet_node]
|
||||||
|
|
||||||
|
if nodef and nodef.groups and nodef.groups.water then
|
||||||
|
|
||||||
|
local control = def.player:get_player_control()
|
||||||
|
|
||||||
|
if control.up or control.down or control.left or control.right then
|
||||||
|
return "splash"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- check for env_sounds mod, if not found enable water flowing and lava sounds
|
||||||
|
if not core.get_modpath("env_sounds") then
|
||||||
|
|
||||||
|
-- Water sound plays when near flowing water
|
||||||
|
|
||||||
|
ambience.add_set("flowing_water", {
|
||||||
|
|
||||||
|
frequency = 1000,
|
||||||
|
|
||||||
|
sounds = {
|
||||||
|
{name = "waterfall", length = 6}
|
||||||
|
},
|
||||||
|
|
||||||
|
nodes = {"group:water"},
|
||||||
|
|
||||||
|
sound_check = function(def)
|
||||||
|
|
||||||
|
local c = (def.totals["default:water_flowing"] or 0)
|
||||||
|
+ (def.totals["mcl_core:water_flowing"] or 0)
|
||||||
|
|
||||||
|
if c > 40 then return "flowing_water", 0.5
|
||||||
|
|
||||||
|
elseif c > 5 then return "flowing_water" end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- River sound plays when near flowing river
|
||||||
|
|
||||||
|
ambience.add_set("river", {
|
||||||
|
|
||||||
|
frequency = 1000,
|
||||||
|
|
||||||
|
sounds = {
|
||||||
|
{name = "river", length = 4, gain = 0.1}
|
||||||
|
},
|
||||||
|
|
||||||
|
sound_check = function(def)
|
||||||
|
|
||||||
|
local c = (def.totals["default:river_water_flowing"] or 0)
|
||||||
|
+ (def.totals["mclx_core:river_water_flowing"] or 0)
|
||||||
|
|
||||||
|
if c > 20 then return "river", 0.5
|
||||||
|
|
||||||
|
elseif c > 5 then return "river" end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Lava sound plays when near lava
|
||||||
|
|
||||||
|
ambience.add_set("lava", {
|
||||||
|
|
||||||
|
frequency = 1000,
|
||||||
|
|
||||||
|
sounds = {
|
||||||
|
{name = "lava", length = 7}
|
||||||
|
},
|
||||||
|
|
||||||
|
nodes = {"group:lava"},
|
||||||
|
|
||||||
|
sound_check = function(def)
|
||||||
|
|
||||||
|
local c = (def.totals["default:lava_source"] or 0)
|
||||||
|
+ (def.totals["default:lava_flowing"] or 0)
|
||||||
|
+ (def.totals["mcl_core:lava_source"] or 0)
|
||||||
|
+ (def.totals["mcl_core:lava_flowing"] or 0)
|
||||||
|
|
||||||
|
if c > 20 then return "lava", 0.5
|
||||||
|
|
||||||
|
elseif c > 5 then return "lava" end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
else
|
||||||
|
print ("[MOD] Ambience - found env_sounds, using for water and lava sounds.")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Beach sounds play when below y-pos 6 and 150+ water source found
|
||||||
|
|
||||||
|
ambience.add_set("beach", {
|
||||||
|
|
||||||
|
frequency = 40,
|
||||||
|
|
||||||
|
sounds = {
|
||||||
|
{name = "seagull", length = 4.5, ephemeral = true},
|
||||||
|
{name = "seagull", length = 4.5, pitch = 1.2, ephemeral = true},
|
||||||
|
{name = "beach", length = 13},
|
||||||
|
{name = "gull", length = 1, ephemeral = true},
|
||||||
|
{name = "beach_2", length = 6}
|
||||||
|
},
|
||||||
|
|
||||||
|
sound_check = function(def)
|
||||||
|
|
||||||
|
local c = (def.totals["default:water_source"] or 0)
|
||||||
|
+ (def.totals["mcl_core:water_source"] or 0)
|
||||||
|
|
||||||
|
if def.pos.y < 6 and def.pos.y > 0 and c > 150 then
|
||||||
|
return "beach"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Ice sounds play when 100 or more ice are nearby
|
||||||
|
|
||||||
|
ambience.add_set("ice", {
|
||||||
|
|
||||||
|
frequency = 80,
|
||||||
|
|
||||||
|
sounds = {
|
||||||
|
{name = "icecrack", length = 5, gain = 1.1},
|
||||||
|
{name = "desertwind", length = 8},
|
||||||
|
{name = "wind", length = 9}
|
||||||
|
},
|
||||||
|
|
||||||
|
nodes = (mod_mcl and {"mcl_core:ice", "mcl_core:packed_ice"} or {"default:ice"}),
|
||||||
|
|
||||||
|
sound_check = function(def)
|
||||||
|
|
||||||
|
local c = (def.totals["default:ice"] or 0)
|
||||||
|
+(def.totals["mcl_core:ice"] or 0)
|
||||||
|
+ (def.totals["mcl_core:packed_ice"] or 0)
|
||||||
|
|
||||||
|
if c > 400 then return "ice" end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Desert sounds play when near 150+ desert or normal sand
|
||||||
|
|
||||||
|
ambience.add_set("desert", {
|
||||||
|
|
||||||
|
frequency = 20,
|
||||||
|
|
||||||
|
sounds = {
|
||||||
|
{name = "coyote", length = 2.5, ephemeral = true},
|
||||||
|
{name = "wind", length = 9},
|
||||||
|
{name = "desertwind", length = 8}
|
||||||
|
},
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
(mod_mcl and "mcl_core:redsand" or "default:desert_sand"),
|
||||||
|
(mod_mcl and "mcl_core:sand" or "default:sand")
|
||||||
|
},
|
||||||
|
|
||||||
|
sound_check = function(def)
|
||||||
|
|
||||||
|
local c = (def.totals["default:desert_sand"] or 0)
|
||||||
|
+ (def.totals["default:sand"] or 0)
|
||||||
|
+ (def.totals["mcl_core:sand"] or 0)
|
||||||
|
+ (def.totals["mcl_core:redsand"] or 0)
|
||||||
|
|
||||||
|
if c > 150 and def.pos.y > 10 then return "desert" end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Cave sounds play when below player position Y -25 and water nearby
|
||||||
|
|
||||||
|
ambience.add_set("cave", {
|
||||||
|
|
||||||
|
frequency = 60,
|
||||||
|
|
||||||
|
sounds = {
|
||||||
|
{name = "drippingwater1", length = 1.5, ephemeral = true},
|
||||||
|
{name = "drippingwater2", length = 1.5, ephemeral = true},
|
||||||
|
{name = "drippingwater2", length = 1.5, pitch = 1.2, ephemeral = true},
|
||||||
|
{name = "drippingwater2", length = 1.5, pitch = 1.4, ephemeral = true},
|
||||||
|
{name = "bats", length = 5, ephemeral = true}
|
||||||
|
},
|
||||||
|
|
||||||
|
sound_check = function(def)
|
||||||
|
|
||||||
|
local c = (def.totals["default:water_source"] or 0)
|
||||||
|
+ (def.totals["mcl_core:water_source"] or 0)
|
||||||
|
|
||||||
|
if c > 0 and def.pos.y < -25 then return "cave" end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Jungle sounds play during day and when around 90 jungletree trunks
|
||||||
|
|
||||||
|
ambience.add_set("jungle", {
|
||||||
|
|
||||||
|
frequency = 200,
|
||||||
|
|
||||||
|
sounds = {
|
||||||
|
{name = "jungle_day_1", length = 7},
|
||||||
|
{name = "deer", length = 7, ephemeral = true},
|
||||||
|
{name = "canadianloon2", length = 14},
|
||||||
|
{name = "bird1", length = 11},
|
||||||
|
{name = "peacock", length = 2, ephemeral = true},
|
||||||
|
{name = "peacock", length = 2, pitch = 1.2, ephemeral = true}
|
||||||
|
},
|
||||||
|
|
||||||
|
nodes = {(mod_mcl and "mcl_trees:tree_jungle" or "default:jungletree")},
|
||||||
|
|
||||||
|
sound_check = function(def)
|
||||||
|
|
||||||
|
local c = (def.totals["default:jungletree"] or 0)
|
||||||
|
+ (def.totals["mcl_trees:tree_jungle"] or 0)
|
||||||
|
|
||||||
|
if def.tod > 0.2 and def.tod < 0.8 and c > 79 then return "jungle" end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Jungle sounds play during night and when around 90 jungletree trunks
|
||||||
|
|
||||||
|
ambience.add_set("jungle_night", {
|
||||||
|
|
||||||
|
frequency = 200,
|
||||||
|
|
||||||
|
sounds = {
|
||||||
|
{name = "jungle_night_1", length = 4, ephemeral = true},
|
||||||
|
{name = "jungle_night_2", length = 4, ephemeral = true},
|
||||||
|
{name = "deer", length = 7, ephemeral = true},
|
||||||
|
{name = "frog", length = 1, ephemeral = true},
|
||||||
|
{name = "frog", length = 1, pitch = 1.3, ephemeral = true}
|
||||||
|
},
|
||||||
|
|
||||||
|
sound_check = function(def)
|
||||||
|
|
||||||
|
-- jungle tree was added in last set, so doesnt need to be added in this one
|
||||||
|
local c = (def.totals["default:jungletree"] or 0)
|
||||||
|
+ (def.totals["mcl_trees:tree_jungle"] or 0)
|
||||||
|
|
||||||
|
if (def.tod < 0.2 or def.tod > 0.8) and c > 79 then return "jungle_night" end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Daytime sounds play during day when around leaves and above ground
|
||||||
|
|
||||||
|
ambience.add_set("day", {
|
||||||
|
|
||||||
|
frequency = 40,
|
||||||
|
|
||||||
|
sounds = {
|
||||||
|
{name = "cardinal", length = 3, ephemeral = true},
|
||||||
|
{name = "craw", length = 3, ephemeral = true},
|
||||||
|
{name = "bluejay", length = 6, ephemeral = true},
|
||||||
|
{name = "robin", length = 4, ephemeral = true},
|
||||||
|
{name = "robin", length = 4, pitch = 1.2, ephemeral = true},
|
||||||
|
{name = "bird1", length = 11},
|
||||||
|
{name = "bird2", length = 6, ephemeral = true},
|
||||||
|
{name = "crestedlark", length = 6, ephemeral = true},
|
||||||
|
{name = "crestedlark", length = 6, pitch = 1.1, ephemeral = true},
|
||||||
|
{name = "peacock", length = 2, ephemeral = true},
|
||||||
|
{name = "peacock", length = 2, pitch = 1.2, ephemeral = true},
|
||||||
|
{name = "wind", length = 9}
|
||||||
|
},
|
||||||
|
|
||||||
|
nodes = {"group:leaves"},
|
||||||
|
|
||||||
|
sound_check = function(def)
|
||||||
|
|
||||||
|
-- use handy function to count all nodes in group:leaves
|
||||||
|
local c = ambience.group_total(def.totals, "leaves")
|
||||||
|
|
||||||
|
if (def.tod > 0.2 and def.tod < 0.8) and def.pos.y > 0 and c > 50 then
|
||||||
|
return "day"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Nighttime sounds play at night when above ground near leaves
|
||||||
|
|
||||||
|
ambience.add_set("night", {
|
||||||
|
|
||||||
|
frequency = 40,
|
||||||
|
|
||||||
|
sounds = {
|
||||||
|
{name = "hornedowl", length = 2, ephemeral = true},
|
||||||
|
{name = "hornedowl", length = 2, pitch = 1.1, ephemeral = true},
|
||||||
|
{name = "wolves", length = 4, gain = 0.4, ephemeral = true},
|
||||||
|
{name = "cricket", length = 6, ephemeral = true},
|
||||||
|
{name = "deer", length = 7, ephemeral = true},
|
||||||
|
{name = "frog", length = 1, ephemeral = true},
|
||||||
|
{name = "frog", length = 1, pitch = 1.2, ephemeral = true},
|
||||||
|
{name = "wind", length = 9}
|
||||||
|
},
|
||||||
|
|
||||||
|
sound_check = function(def)
|
||||||
|
|
||||||
|
-- use handy function to count all nodes in group:leaves
|
||||||
|
local c = ambience.group_total(def.totals, "leaves")
|
||||||
|
|
||||||
|
if (def.tod < 0.2 or def.tod > 0.8) and def.pos.y > 0 and c > 50 then
|
||||||
|
return "night"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Winds play when player is above 50 y-pos or near 150+ snow blocks
|
||||||
|
|
||||||
|
ambience.add_set("high_up", {
|
||||||
|
|
||||||
|
frequency = 40,
|
||||||
|
|
||||||
|
sounds = {
|
||||||
|
{name = "desertwind", length = 8},
|
||||||
|
{name = "desertwind", length = 8, pitch = 1.3},
|
||||||
|
{name = "wind", length = 9},
|
||||||
|
{name = "wind", length = 9, pitch = 1.4}
|
||||||
|
},
|
||||||
|
|
||||||
|
nodes = {(mod_mcl and "mcl_core:snowblock" or "default:snowblock")},
|
||||||
|
|
||||||
|
sound_check = function(def)
|
||||||
|
|
||||||
|
local c = (def.totals["default:snowblock"] or 0)
|
||||||
|
+ (def.totals["mcl_core:snowblock"] or 0)
|
||||||
|
|
||||||
|
if def.pos.y > 50 or c > 100 then return "high_up" end
|
||||||
|
end
|
||||||
|
})
|
41
mods/animalworld/LICENSE
Normal file
41
mods/animalworld/LICENSE
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2021 Skandarella
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
|
Lincense for original Code (mobs redo + mobs_animal): (MIT) Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1
|
||||||
|
|
||||||
|
Modified Code by Liil/Wilhelmine/Liil (c) 2022
|
||||||
|
Textures, Models and Animation by Liil/Wilhelmine/Liil under (MIT) License (c) 2022
|
||||||
|
|
||||||
|
Thanks to davidflavigne from Github for French Translation!
|
||||||
|
Thanks to nonfreegithub from Github for Mineclone + Mineclonia support!
|
||||||
|
Thanks to Cpyte-Engine-Developer from Guthub for Russian Translation!
|
||||||
|
|
||||||
|
Beluga and Leopard Seal sound by Liil/Wilhelmine/Liil.
|
||||||
|
Other sounds are from freesound.org under Creative Commons License. Thanks to Lauramel, Gleith, Theveomammoth11, Vataa, D-Jones, Pol, Robinhood76,
|
||||||
|
sesmo42, Missburusdeer2011, Hazure, Inspectorj, Benboncan, Spookymodem, Drobiumdesign, J-zazvurek, Benboncan, Felix-blume, Sihil, Kabit, Roubignolle,
|
||||||
|
Egomassive, Florianreichelt, Fxasc, Extrafon, Cognito-perceptu, Jjbubo, Blessedcup, Jaegrover, Yks, Pillonoise, Traade, Tilano408, j0ck0, Mings, Befig,
|
||||||
|
Stackpool, vilatzara, viorelvio, newagesoup, slunali, fr0608bg, reinsamba, kangaroovindaloo, breviceps, guyburns, tyler7687, navadaux, fairhavencollection, acclivity and sarena6487528 for the sounds!
|
||||||
|
Thanks to Nagaty Studio for the Hyena Sounds! Source: https://www.youtube.com/c/NagatyStudio/about
|
||||||
|
Also thanks to Ian Fairley (https://www.youtube.com/channel/UChVk1Pvn-JMWkepnQLK-gCg) for the Zebra sounds.
|
||||||
|
Thanks to Lars Edenius for the Black Grouse sounds.
|
||||||
|
Thanks to SOS Orangutans for the Orang Utan sounds! https://www.youtube.com/@SOSorangutans (The Sumatran Orangutan Society. Visit www.orangutans-sos.org)
|
150
mods/animalworld/ant.lua
Normal file
150
mods/animalworld/ant.lua
Normal file
|
@ -0,0 +1,150 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:ant", {
|
||||||
|
type = "monster",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
reach = 1,
|
||||||
|
damage = 1,
|
||||||
|
hp_min = 1,
|
||||||
|
hp_max = 10,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.1, -0.01, -0.1, 0.1, 0.1, 0.1},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Ant.b3d",
|
||||||
|
visual_size = {x = 1, y = 1},
|
||||||
|
textures = {
|
||||||
|
{"textureant.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_ant",
|
||||||
|
attack = "animalworld_ant",
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
stay_near = {"animalworld:anthill", 3},
|
||||||
|
view_range = 3,
|
||||||
|
walk_velocity = 0.5,
|
||||||
|
walk_chance = 70,
|
||||||
|
run_velocity = 0.7,
|
||||||
|
runaway = false,
|
||||||
|
jump = false,
|
||||||
|
jump_height = 0,
|
||||||
|
stepheight = 3,
|
||||||
|
stay_near = {{"animalworld:anthill"}, 4},
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:ant", chance = 1, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 1,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 3,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 200,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 0,
|
||||||
|
walk_start = 0,
|
||||||
|
walk_end = 100,
|
||||||
|
punch_start = 100,
|
||||||
|
punch_end = 200,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:ant",
|
||||||
|
nodes = {"mcl_core:podzol", "mcl_core:dirt_with_grass", "default:dirt_with_conifrous_litter"},
|
||||||
|
neighbors = {"animalworld:anthill"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 30,
|
||||||
|
chance = 1, -- 15000
|
||||||
|
active_object_count = 7,
|
||||||
|
min_height = 0,
|
||||||
|
max_height = 50,
|
||||||
|
day_toggle = true
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:ant", S("Ant"), "aant.png")
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:ant", "animalworld:ant")
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craftitem(":animalworld:anteggs_raw", {
|
||||||
|
description = S("Raw Ant Eggs"),
|
||||||
|
inventory_image = "animalworld_anteggs_raw.png",
|
||||||
|
on_use = minetest.item_eat(2),
|
||||||
|
groups = {food_meat_raw = 1, flammable = 2},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craftitem(":animalworld:anteggs_cooked", {
|
||||||
|
description = S("Cooked Ant Eggs"),
|
||||||
|
inventory_image = "animalworld_anteggs_cooked.png",
|
||||||
|
on_use = minetest.item_eat(6),
|
||||||
|
groups = {food_meat = 1, flammable = 2},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "cooking",
|
||||||
|
output = "animalworld:anteggs_cooked",
|
||||||
|
recipe = "animalworld:anteggs_raw",
|
||||||
|
cooktime = 5,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_decoration({
|
||||||
|
deco_type = "simple",
|
||||||
|
place_on = {"default:dirt_with_coniferous_litter", "mcl_core:podzol"},
|
||||||
|
sidelen = 16,
|
||||||
|
noise_params = {
|
||||||
|
offset = 0.0012,
|
||||||
|
scale = 0.0007,
|
||||||
|
spread = {x = 250, y = 250, z = 250},
|
||||||
|
seed = 2,
|
||||||
|
octaves = 3,
|
||||||
|
persist = 0.66
|
||||||
|
},
|
||||||
|
y_max = 50,
|
||||||
|
y_min = 0,
|
||||||
|
decoration = "animalworld:anthill"
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_node("animalworld:anthill", {
|
||||||
|
description = S"Anthill",
|
||||||
|
visual_scale = 0.5,
|
||||||
|
mesh = "Anthil.b3d",
|
||||||
|
tiles = {"textureanthil.png"},
|
||||||
|
inventory_image = "aanthil.png",
|
||||||
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
walkable = false,
|
||||||
|
groups = {crumbly = 3, shovely = 1, handy = 1, sand = 2},
|
||||||
|
drawtype = "mesh",
|
||||||
|
collision_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-0.5, -0.5, -0.5, 0.5, 0.1, 0.5},
|
||||||
|
--[[{-0.5, -0.5, -0.5, 0.5, 0.1, 0.5},
|
||||||
|
{-0.5, -0.5, -0.5, 0.5, 0.1, 0.5}]]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{-0.5, -0.5, -0.5, 0.5, 0.1, 0.5}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
drop = "animalworld:anteggs_raw",
|
||||||
|
sounds = animalworld.sounds.node_sound_dirt_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "fuel",
|
||||||
|
recipe = "animalworld:anthill",
|
||||||
|
burntime = 1,
|
||||||
|
})
|
97
mods/animalworld/anteater.lua
Normal file
97
mods/animalworld/anteater.lua
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:anteater", {
|
||||||
|
stepheight = 1,
|
||||||
|
type = "animal",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
group_attack = true,
|
||||||
|
owner_loyal = true,
|
||||||
|
attack_npcs = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 10,
|
||||||
|
hp_min = 25,
|
||||||
|
hp_max = 65,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.5, -0.01, -0.5, 0.5, 0.95, 0.5},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Anteater.b3d",
|
||||||
|
textures = {
|
||||||
|
{"textureanteater.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {
|
||||||
|
|
||||||
|
},
|
||||||
|
walk_velocity = 0.7,
|
||||||
|
run_velocity = 2,
|
||||||
|
runaway = false,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = false,
|
||||||
|
jump_height = 3,
|
||||||
|
pushable = true,
|
||||||
|
follow = {"fishing:bait:worm", "bees:frame_full", "ethereal:worm", "animalworld:ant", "animalworld:termitequeen", "animalworld:termite", "animalworld:anteggs_raw"},
|
||||||
|
view_range = 10,
|
||||||
|
stay_near = {{"default:jungletree", "default:junglegrass", "livingjungle::grass2", "livingjungle::grass1", "livingjungle:alocasia", "livingjungle:flamingoflower"}, 6},
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "mobs:leather", chance = 1, min = 0, max = 2},
|
||||||
|
{name = "animalworld:anteatercorpse", chance = 7, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 5,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 75,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 100,
|
||||||
|
walk_end = 200,
|
||||||
|
punch_start = 250,
|
||||||
|
punch_end = 350,
|
||||||
|
|
||||||
|
die_start = 250,
|
||||||
|
die_end = 350,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local spawn_on = {"mcl_core:podzol", "default:dirt_withforest_litter"}
|
||||||
|
|
||||||
|
if minetest.get_mapgen_setting("mg_name") ~= "v6" then
|
||||||
|
spawn_on = {"mcl_core:podzol", "default:dirt_withforest_litter", "default:dry_dirt_with_dry_grass"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"ethereal:grass_grove", "ethereal:green_dirt", "default:dirt_with_rainforest_litter", "livingjungle:jungleground", "livingjungle:leafyjungleground"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:anteater",
|
||||||
|
nodes = {"mcl_core:podzol", "default:dirt_with_rainforest_litter", "mcl_core:dirt_with_gras"},
|
||||||
|
neighbors = {"default:jungletree", "mcl_core:jungletree"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 1,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 1,
|
||||||
|
max_height = 50,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:anteater", S("Anteater"), "aanteater.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:manteater", "animalworld:anteater") -- compatibility
|
||||||
|
|
90
mods/animalworld/bat.lua
Normal file
90
mods/animalworld/bat.lua
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:bat", {
|
||||||
|
stepheight = 3,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 2,
|
||||||
|
hp_min = 5,
|
||||||
|
hp_max = 35,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.5, 0.2},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Bat.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"texturebat.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_bat",
|
||||||
|
},
|
||||||
|
makes_footstep_sound = false,
|
||||||
|
walk_velocity = 5,
|
||||||
|
run_velocity = 6,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
fall_speed = 0,
|
||||||
|
jump = true,
|
||||||
|
jump_height = 6,
|
||||||
|
fly = true,
|
||||||
|
stepheight = 3,
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:leather", chance = 1, min = 0, max = 2},
|
||||||
|
|
||||||
|
},
|
||||||
|
water_damage = 1,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 0,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 130,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
fly_start = 150, -- swim animation
|
||||||
|
fly_end = 250,
|
||||||
|
die_start = 0,
|
||||||
|
die_end = 100,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
fly_in = {"air"},
|
||||||
|
floats = 0,
|
||||||
|
follow = {
|
||||||
|
"animalworld:rawfish", "mcl_fishing:pufferfish_raw", "ethereal:worm", "ethereal:fish_raw", "fishing:fish_raw", "xocean:fish_edible", "livingdesert:date_palm_fruits", "livingdesert:figcactus_fruit"
|
||||||
|
},
|
||||||
|
|
||||||
|
view_range = 4,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 0, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"mcl_core:dirt_with_grass", "default:dirt_with_grass", "default:dry_dirt_with_dry_grass", "default:dirt_with_rainforest_litter", "default:dirt_with_coniferous_litter", "ethereal:gray_dirt", "ethereal:mushroom_dirt", "ethereal:grove_dirt"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:bat",
|
||||||
|
nodes = {"mcl_core:dirt_with_grass", "default:dirt_with_grass", "default:dry_dirt_with_dry_grass", "default:dirt_with_rainforest_litter", "default:dirt_with_coniferous_litter", "naturalbiomes:mediterran_litter", "livingjungle:jungleground", "livingjungle:leafyjungleground", "naturalbiomes:bushland_bushlandlitter"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 8000, -- 15000
|
||||||
|
active_object_count = 5,
|
||||||
|
min_height = -100,
|
||||||
|
max_height = 50,
|
||||||
|
day_toggle = false,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:bat", S("Bat"), "abat.png")
|
87
mods/animalworld/bear.lua
Normal file
87
mods/animalworld/bear.lua
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:bear", {
|
||||||
|
stepheight = 1,
|
||||||
|
type = "monster",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = true,
|
||||||
|
reach = 2,
|
||||||
|
damage = 8,
|
||||||
|
hp_min = 15,
|
||||||
|
hp_max = 60,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.6, -0.01, -0.6, 0.6, 0.95, 0.6},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Bear.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"texturebear.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_bear",
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
walk_velocity = 1,
|
||||||
|
run_velocity = 3,
|
||||||
|
runaway = false,
|
||||||
|
jump = false,
|
||||||
|
jump_height = 6,
|
||||||
|
stay_near = {{"people:feeder", "default:fern_1", "default:fern_2", "marinara:reed_bundle", "naturalbiomes:reed_bundle", "farming:straw"}, 6},
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "animalworld:bearcorpse", chance = 7, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 50,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 100,
|
||||||
|
walk_end = 200,
|
||||||
|
punch_start = 200,
|
||||||
|
punch_end = 300,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
follow = {
|
||||||
|
"ethereal:fish_raw", "animalworld:whalemeat_raw", "animalworld:rawfish", "mobs_fish:tropical",
|
||||||
|
"mobs:meat_raw", "animalworld:rabbit_raw", "xocean:fish_edible", "farming:melon_slice", "farming:melon_slice", "water_life:meat_raw", "water_life:meat_raw", "fishing:fish_raw", "mcl_mobitems:chicken", "mcl_fishing:pufferfish_raw", "mcl_mobitems:rotten_flesh", "mcl_mobitems:mutton", "mcl_mobitems:beef", "mcl_mobitems:porkchop", "mcl_mobitems:rabbit", "animalworld:chicken_raw"
|
||||||
|
},
|
||||||
|
view_range = 8,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 0, 0, 25, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"mcl_core:dirt_with_grass", "default:dirt_with_coniferous_litter", "default:permafrost_with_moss", "ethereal:bamboo_dirt", "ethereal:gray_dirt"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:bear",
|
||||||
|
nodes = {"mcl_core:podzol", "mcl_core:dirt_with_grass", "default:dirt_with_conifrous_litter"}, {"default:permafrost_with_moss"}, {"livingdesert:coldsteppe_ground3"},
|
||||||
|
neighbors = {"livingdesert:pine_leaves", "livingdesert:pine_leaves2", "livingdesert:pine_leaves3", "animalworld:animalworld_tundrashrub1", "animalworld:animalworld_tundrashrub2", "animalworld:animalworld_tundrashrub3", "animalworld:animalworld_tundrashrub4", "default:fern_1", "default:fern_2", "mcl_core:sprucetree", "mcl_trees:tree_spruce", "mcl_trees:leaves_spruce"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 1000, -- 15000
|
||||||
|
min_height = -15,
|
||||||
|
max_height = 120,
|
||||||
|
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:bear", S("Bear"), "abear.png")
|
122
mods/animalworld/beaver.lua
Normal file
122
mods/animalworld/beaver.lua
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:beaver", {
|
||||||
|
stepheight = 1,
|
||||||
|
type = "monster",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = false,
|
||||||
|
attack_npcs = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 6,
|
||||||
|
hp_min = 35,
|
||||||
|
hp_max = 65,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.6, -0.01, -0.6, 0.6, 0.95, 0.6},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Beaver.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"texturebeaver.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
walk_velocity = 1,
|
||||||
|
run_velocity = 2,
|
||||||
|
runaway = false,
|
||||||
|
jump = true,
|
||||||
|
jump_height = 6,
|
||||||
|
stepheight = 2,
|
||||||
|
stay_near = {{"animalworld:beaver_nest"}, 4},
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 3,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 75,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
stand1_start = 100,
|
||||||
|
stand1_end = 200,
|
||||||
|
walk_start = 200,
|
||||||
|
walk_end = 300,
|
||||||
|
fly_start = 450, -- swim animation
|
||||||
|
fly_end = 550,
|
||||||
|
punch_start = 300,
|
||||||
|
punch_end = 400,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
fly_in = {"default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
floats = 1,
|
||||||
|
follow = {
|
||||||
|
"naturalbiomes:alder_sapling", "naturalbiomes:alppine1_sapling", "naturalbiomes:alppine2_sapling",
|
||||||
|
"naturalbiomes:alpine_bush_sapling", "default:sapling", "default:junglesapling", "default:pine_sapling", "default:acacia_sapling", "default:aspen_sapling", "naturalbiomes:olive_sapling", "naturalbiomes:pine_sapling", "naturalbiomes:acacia_sapling", "naturalbiomes:bamboo_sapling", "ethereal:bamboo_sprout", "ethereal:yellow_tree_sapling", "ethereal:willow_sapling", "ethereal:birch_sapling", "ethereal:olive_tree_sapling"
|
||||||
|
},
|
||||||
|
view_range = 5,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 15, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"ethereal:grove_dirt", "default:dry_dirt_with_dry_grass", "default:dirt_with_rainforest_litter"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:beaver",
|
||||||
|
nodes = {"mcl_core:water_source", "default:water_source", "default:river_water_source", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
neighbors = {"animalworld:beaver_nest"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 1, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 0,
|
||||||
|
max_height = 6,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:beaver", S("Beaver"), "abeaver.png")
|
||||||
|
|
||||||
|
-- beaver nest
|
||||||
|
minetest.register_node("animalworld:beaver_nest", {
|
||||||
|
description = S("Beaver Nest"),
|
||||||
|
tiles = {"animalworld_beaver_nest.png"},
|
||||||
|
is_ground_content = false,
|
||||||
|
groups = {wood = 1, choppy = 2, axey = 2, handy = 1, oddly_breakable_by_hand = 1, flammable = 3},
|
||||||
|
_mcl_hardness = 1,
|
||||||
|
_mcl_blast_resistance = 1,
|
||||||
|
sounds = animalworld.sounds.node_sound_wood_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_decoration({
|
||||||
|
name = "animalworld:beavernest",
|
||||||
|
deco_type = "schematic",
|
||||||
|
place_on = {"naturalbiomes:alderswamp_litter"},
|
||||||
|
place_offset_y = -2,
|
||||||
|
sidelen = 16,
|
||||||
|
fill_ratio = 0.00018,
|
||||||
|
biomes = {"naturalbiomes:alderswamp"},
|
||||||
|
y_max = 1,
|
||||||
|
y_min = 0,
|
||||||
|
schematic = minetest.get_modpath("animalworld") .. "/schematics/animalworld_beavernest.mts",
|
||||||
|
flags = "place_center_x",
|
||||||
|
flags = "force_placement",
|
||||||
|
rotation = "random",
|
||||||
|
spawn_by = "naturalbiomes:alderswamp_litter",
|
||||||
|
num_spawn_by = 8,
|
||||||
|
})
|
159
mods/animalworld/beluga.lua
Normal file
159
mods/animalworld/beluga.lua
Normal file
|
@ -0,0 +1,159 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
local random = math.random
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:beluga", {
|
||||||
|
stepheight = 1,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
group_attack = true,
|
||||||
|
owner_loyal = true,
|
||||||
|
attack_npcs = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 1,
|
||||||
|
hp_min = 250,
|
||||||
|
hp_max = 455,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.8, -0.01, -0.8, 0.8, 1.2, 0.8},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Beluga.b3d",
|
||||||
|
textures = {
|
||||||
|
{"texturebeluga.png"},
|
||||||
|
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_beluga",
|
||||||
|
attack = "animalworld_beluga2",
|
||||||
|
damage = "animalworld_beluga3",
|
||||||
|
death = "animalworld_beluga4",
|
||||||
|
},
|
||||||
|
walk_velocity = 2,
|
||||||
|
run_velocity = 5,
|
||||||
|
fly = true,
|
||||||
|
fly_in = "default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing", "mcl_core:water_source", "mcl_core:water_flowing",
|
||||||
|
fall_speed = 0,
|
||||||
|
jump = true,
|
||||||
|
jump_height = 0,
|
||||||
|
stay_near = {{"default:clay", "marinara:sand_with_seagrass", "marinara:coastrock_with:brownalage", "marinara:sand_with_seagrass2", "mcl_ocean:seagrass:sand", "mcl_ocean:tube_coral", "mcl_ocean:fire_coral", "mcl_ocean:brain_coral", "mcl_ocean:seagrass_gravel"}, 5},
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
pushable = true,
|
||||||
|
follow = {
|
||||||
|
"animalworld:rawmollusk", "mcl_fishing:pufferfish_raw", "marinaramobs:octopus_raw", "marinara:raw_oisters", "marinara:raw_athropod", "animalworld:rawfish", "fishing:fish_raw", "fishing:pike_raw", "marinaramobs:raw_exotic_fish", "nativevillages:catfish_raw", "xocean:fish_edible", "ethereal:fish_raw", "mobs:clownfish_raw", "fishing:bluewhite_raw", "fishing:exoticfish_raw", "fishing:fish_raw", "fishing:carp_raw", "fishing:perch_raw", "water_life:meat_raw", "fishing:shark_raw", "fishing:pike_raw"
|
||||||
|
},
|
||||||
|
view_range = 20,
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:whaleblubber", chance = 1, min = 3, max = 10},
|
||||||
|
{name = "animalworld:whalemeat_raw", chance = 1, min = 3, max = 10},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
air_damage = 1,
|
||||||
|
lava_damage = 5,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 0,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 50,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
fly_start = 150,
|
||||||
|
fly_end = 250,
|
||||||
|
fly2_start = 250,
|
||||||
|
fly2_end = 350,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 0, 25, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:beluga",
|
||||||
|
nodes = {"mcl_core:water_source", "default:water_source"},
|
||||||
|
neighbors = {"default:ice", "default:snowblock", "mcl_core:ice", "mcl_core:snow"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 30,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 3,
|
||||||
|
min_height = -20,
|
||||||
|
max_height = 0,
|
||||||
|
|
||||||
|
on_spawn = function(self, pos)
|
||||||
|
|
||||||
|
local nods = minetest.find_nodes_in_area_under_air(
|
||||||
|
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
|
||||||
|
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
|
||||||
|
{"default:water_source"})
|
||||||
|
|
||||||
|
if nods and #nods > 0 then
|
||||||
|
|
||||||
|
-- min herd of 3
|
||||||
|
local iter = math.min(#nods, 3)
|
||||||
|
|
||||||
|
-- print("--- beluga at", minetest.pos_to_string(pos), iter)
|
||||||
|
|
||||||
|
for n = 1, iter do
|
||||||
|
|
||||||
|
local pos2 = nods[random(#nods)]
|
||||||
|
local kid = random(4) == 1 and true or nil
|
||||||
|
|
||||||
|
pos2.y = pos2.y + 2
|
||||||
|
|
||||||
|
if minetest.get_node(pos2).name == "air" then
|
||||||
|
|
||||||
|
mobs:add_mob(pos2, {
|
||||||
|
name = "animalworld:beluga", child = kid})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:beluga", S("Beluga Whale"), "abeluga.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:beluga", "animalworld:beluga") -- compatibility
|
||||||
|
|
||||||
|
|
||||||
|
-- raw whale
|
||||||
|
minetest.register_craftitem(":animalworld:whalemeat_raw", {
|
||||||
|
description = S("Raw Whale Meat"),
|
||||||
|
inventory_image = "animalworld_whalemeat_raw.png",
|
||||||
|
on_use = minetest.item_eat(4),
|
||||||
|
groups = {food_meat_raw = 1, flammable = 2},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- cooked whale
|
||||||
|
minetest.register_craftitem(":animalworld:whalemeat_cooked", {
|
||||||
|
description = S("Cooked Whale Meat"),
|
||||||
|
inventory_image = "animalworld_whalemeat_cooked.png",
|
||||||
|
on_use = minetest.item_eat(8),
|
||||||
|
groups = {food_meat = 1, flammable = 2},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "cooking",
|
||||||
|
output = "animalworld:whalemeat_cooked",
|
||||||
|
recipe = "animalworld:whalemeat_raw",
|
||||||
|
cooktime = 2,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "fuel",
|
||||||
|
recipe = "animalworld:whaleblubber",
|
||||||
|
burntime = 10,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("animalworld:whaleblubber", {
|
||||||
|
description = S("Whale Blubber"),
|
||||||
|
inventory_image = "animalworld_whaleblubber.png",
|
||||||
|
})
|
94
mods/animalworld/blackbird.lua
Normal file
94
mods/animalworld/blackbird.lua
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:blackbird", {
|
||||||
|
stepheight = 3,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 2,
|
||||||
|
hp_min = 5,
|
||||||
|
hp_max = 30,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.3, -0.01, -0.3, 0.3, 0.5, 0.3},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Blackbird.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"textureblackbird.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_blackbird",
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
walk_velocity = 2,
|
||||||
|
run_velocity = 4,
|
||||||
|
runaway = true,
|
||||||
|
fall_speed = -1,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = true,
|
||||||
|
jump_height = 4,
|
||||||
|
stay_near = {{"default:tree", "default:leaves", "flowers_dandelion_yellow", "default:bush_leaves", "default:grass_1", "naturalbiomes:heath_grass", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:heatherflower", "naturalbiomes:heatherflower2", "naturalbiomes:heatherflower3"}, 6},
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:chicken_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "animalworld:chicken_feather", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "animalworld:blackbirdcorpse", chance = 7, min = 1, max = 1},
|
||||||
|
|
||||||
|
},
|
||||||
|
water_damage = 1,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 4,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 100,
|
||||||
|
stand_start = 100,
|
||||||
|
stand_end = 200,
|
||||||
|
walk_start = 0,
|
||||||
|
walk_end = 100,
|
||||||
|
fly_start = 250,
|
||||||
|
fly_end = 350,
|
||||||
|
jump_start = 250,
|
||||||
|
jump_end = 350,
|
||||||
|
punch_start = 100,
|
||||||
|
punch_end = 200,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
fly_in = {"air"},
|
||||||
|
floats = 0,
|
||||||
|
follow = {
|
||||||
|
"fishing:bait:worm", "farming:seed_wheat", "farming:seed_rice", "farming:seed_oat", "ethereal:pine_nuts", "ethereal:worm", "naturalbiomes:blackberry", "animalworld:bugice", "animalworld:termitequeen", "animalworld:notoptera", "animalworld:anteggs_raw", "farming:seed_hemp", "farming:seed_barley", "farming:seed_oat", "farming:seed_cotton", "farming:seed_sunflower", "farming:seed_wheat", "farming:seed_rye"
|
||||||
|
},
|
||||||
|
|
||||||
|
view_range = 4,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 15, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:blackbird",
|
||||||
|
nodes = {"mcl_core:dirt_with_grass", "default:dirt_with_grass", "naturalbiomes:heath_litter"},
|
||||||
|
neighbors = {"group:grass", "group:normal_grass", "naturalbiomes:heath_grass", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:heatherflower"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 0,
|
||||||
|
max_height = 100,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:blackbird", S("Blackbird"), "ablackbird.png")
|
122
mods/animalworld/blackgrouse.lua
Normal file
122
mods/animalworld/blackgrouse.lua
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:blackgrouse", {
|
||||||
|
stepheight = 2,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
group_attack = false,
|
||||||
|
owner_loyal = true,
|
||||||
|
attack_npcs = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 1,
|
||||||
|
hp_min = 10,
|
||||||
|
hp_max = 25,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.4, -0.01, -0.3, 0.4, 0.8, 0.4},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Blackgrouse.b3d",
|
||||||
|
textures = {
|
||||||
|
{"textureblackgrouse.png"},
|
||||||
|
{"textureblackgrouse2.png"},
|
||||||
|
|
||||||
|
},
|
||||||
|
child_texture = {
|
||||||
|
{"textureblackgrousechick.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_blackgrouse3",
|
||||||
|
damage = "animalworld_blackgrouse2",
|
||||||
|
death = "animalworld_blackgrouse",
|
||||||
|
},
|
||||||
|
walk_velocity = 1,
|
||||||
|
run_velocity = 3,
|
||||||
|
jumps = true,
|
||||||
|
jump_height = 3,
|
||||||
|
fall_speed = -1,
|
||||||
|
fall_damage = 0,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:chicken_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "animalworld:chicken_feather", chance = 1, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 1,
|
||||||
|
lava_damage = 5,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 3,
|
||||||
|
stay_near = {{"naturalbiomes:heath_grass", "mcl_flowers:double:fern", "mcl_flowers:fern", "mcl_flowers:tallgrass", "mcl_farming:sweet_berry_bush_3", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:heatherflower", "naturalbiomes:heatherflower2", "naturalbiomes:heatherflower3"}, 5},
|
||||||
|
animation = {
|
||||||
|
speed_normal = 75,
|
||||||
|
stand_speed = 40,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
stand1_start = 100,
|
||||||
|
stand1_end = 200,
|
||||||
|
stand2_start = 200,
|
||||||
|
stand2_end = 300,
|
||||||
|
jump_start = 400,
|
||||||
|
jump_end = 500,
|
||||||
|
walk_start = 300,
|
||||||
|
walk_end = 400,
|
||||||
|
die_start = 400,
|
||||||
|
die_end = 500,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
follow = {
|
||||||
|
"naturalbiomes:bamboo_sapling", "mcl_flowers:tallgrass", "mcl_core:deadbush", "mcl_bamboo:bamboo", "livingfloatlands:coldsteppe_pine3_sapling", "livingfloatlands:coldsteppe_pine2_sapling", "livingfloatlands:coldsteppe_pine_sapling", "naturalbiomes:alppine1_sapling", "naturalbiomes:alpine_cowberrybush_sapling", "naturalbiomes:alppine2_sapling", "livingfloatlands:giantforest_paleoredwood_sapling", "naturalbiomes:juniper_sapling", "default:pine_sapling", "livingdesert:pine_sapling3", "livingdesert:pine_sapling2", "livingdesert:pine_sapling"
|
||||||
|
},
|
||||||
|
view_range = 10,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 15, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
|
||||||
|
do_custom = function(self, dtime)
|
||||||
|
|
||||||
|
self.egg_timer = (self.egg_timer or 0) + dtime
|
||||||
|
if self.egg_timer < 10 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
self.egg_timer = 0
|
||||||
|
|
||||||
|
if self.child
|
||||||
|
or math.random(1, 100) > 1 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local pos = self.object:get_pos()
|
||||||
|
|
||||||
|
minetest.add_item(pos, "mobs:egg")
|
||||||
|
|
||||||
|
minetest.sound_play("default_place_node_hard", {
|
||||||
|
pos = pos,
|
||||||
|
gain = 1.0,
|
||||||
|
max_hear_distance = 5,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:blackgrouse",
|
||||||
|
nodes = {"naturalbiomes:heath_litter", "mcl_core:dirt_with_grass", "mcl_core:podzol"},
|
||||||
|
neighbors = {"mcl_flowers:double:fern", "mcl_flowers:fern", "naturalbiomes:heath_grass", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:heatherflower", "naturalbiomes:heatherflower2", "naturalbiomes:heatherflower3"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 5,
|
||||||
|
max_height = 60,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:blackgrouse", S("Black Grouse"), "ablackgrouse.png")
|
152
mods/animalworld/boar.lua
Normal file
152
mods/animalworld/boar.lua
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
local random = math.random
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:boar", {
|
||||||
|
stepheight = 1,
|
||||||
|
type = "animal",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
group_attack = true,
|
||||||
|
owner_loyal = true,
|
||||||
|
attack_npcs = true,
|
||||||
|
reach = 2,
|
||||||
|
damage = 5,
|
||||||
|
hp_min = 5,
|
||||||
|
hp_max = 55,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.5, -0.01, -0.5, 0.5, 0.95, 0.5},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Boar.b3d",
|
||||||
|
textures = {
|
||||||
|
{"textureboar.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_boar",
|
||||||
|
attack = "animalworld_boar",
|
||||||
|
},
|
||||||
|
walk_velocity = 1,
|
||||||
|
run_velocity = 2,
|
||||||
|
jump = false,
|
||||||
|
pushable = true,
|
||||||
|
stay_near = {{"people:feeder", "default:fern_1", "default:fern_2", "marinara:reed_bundle", "naturalbiomes:reed_bundle", "farming:straw"}, 5},
|
||||||
|
follow = {"default:apple", "mcl_farming:beetroot_item", "mcl_farming:carrot_item", "mcl_farming:melon_item", "mcl_farming:potato_item", "mcl_farming:pumpkin_item", "mcl_farming:wheat_item", "mcl_farming:sweet_berry", "mcl_farming:mushroom_red", "mcl_farming:mushroom_brown", "farming:potato", "ethereal:banana_bread", "farming:melon_slice", "farming:carrot", "farming:seed_rice", "farming:corn", "naturalbiomes:hazelnut", "livingfloatlands:giantforest_oaknut", "farming:corn_cob", "farming:seed_barley", "farming:seed_oat", "farming:pumpkin_8", "livingfloatlands:giantforest_oaknut", "farming:baked_potato", "farming:sunflower_bread", "farming:pumpkin_bread", "farming:bread_multigrain", "farming:spanish_potatoes"},
|
||||||
|
view_range = 6,
|
||||||
|
replace_rate = 10,
|
||||||
|
replace_what = {"farming:soil", "farming:soil_wet"},
|
||||||
|
replace_with = "default:dirt",
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:pork_raw", chance = 1, min = 2, max = 5},
|
||||||
|
{name = "animalworld:boarcorpse", chance = 7, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 5,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 100,
|
||||||
|
stand_speed = 50,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 100,
|
||||||
|
walk_end = 200,
|
||||||
|
punch_start = 200,
|
||||||
|
punch_end = 300,
|
||||||
|
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 15, 25, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local spawn_on = {"mcl_core:dirt_with_grass", "default:dirt_with_coniferous_litter"}
|
||||||
|
|
||||||
|
if minetest.get_mapgen_setting("mg_name") ~= "v6" then
|
||||||
|
spawn_on = {"mcl_core:dirt_with_grass", "default:dirt_with_dry_grass", "default:dirt_with_coniferous_litter"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"ethereal:mushroom_dirt", "ethereal:bamboo_dirt", "ethereal:green_dirt", "ethereal:mushroom"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animal then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:boar",
|
||||||
|
nodes = {"mcl_core:podzol", "default:dirt_with_conifrous_litter", "default:dirt_gray", "mcl_core:dirt_with_grass"},
|
||||||
|
neighbors = {"default:fern_1", "default:fern_2", "mcl_flowers:double:fern", "mcl_flowers:fern"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 1,
|
||||||
|
max_height = 80,
|
||||||
|
day_toggle = true,
|
||||||
|
|
||||||
|
on_spawn = function(self, pos)
|
||||||
|
|
||||||
|
local nods = minetest.find_nodes_in_area_under_air(
|
||||||
|
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
|
||||||
|
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
|
||||||
|
{"default:dirt_with_coniferous_litter", "default:dirt_gray"})
|
||||||
|
|
||||||
|
if nods and #nods > 0 then
|
||||||
|
|
||||||
|
-- min herd of 2
|
||||||
|
local iter = math.min(#nods, 2)
|
||||||
|
|
||||||
|
-- print("--- boar at", minetest.pos_to_string(pos), iter)
|
||||||
|
|
||||||
|
for n = 1, iter do
|
||||||
|
|
||||||
|
local pos2 = nods[random(#nods)]
|
||||||
|
local kid = random(4) == 1 and true or nil
|
||||||
|
|
||||||
|
pos2.y = pos2.y + 2
|
||||||
|
|
||||||
|
if minetest.get_node(pos2).name == "air" then
|
||||||
|
|
||||||
|
mobs:add_mob(pos2, {
|
||||||
|
name = "animalworld:boar", child = kid})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:boar", S("Boar"), "aboar.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:boar", "animalworld:boar") -- compatibility
|
||||||
|
|
||||||
|
|
||||||
|
-- raw porkchop
|
||||||
|
minetest.register_craftitem(":animalworld:pork_raw", {
|
||||||
|
description = S("Raw Pork"),
|
||||||
|
inventory_image = "animalworld_pork_raw.png",
|
||||||
|
on_use = minetest.item_eat(4),
|
||||||
|
groups = {food_meat_raw = 1, food_pork_raw = 1, flammable = 2},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- cooked porkchop
|
||||||
|
minetest.register_craftitem(":animalworld:pork_cooked", {
|
||||||
|
description = S("Cooked Pork"),
|
||||||
|
inventory_image = "animalworld_pork_cooked.png",
|
||||||
|
on_use = minetest.item_eat(8),
|
||||||
|
groups = {food_meat = 1, food_pork = 1, flammable = 2},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "cooking",
|
||||||
|
output = "animalworld:pork_cooked",
|
||||||
|
recipe = "animalworld:pork_raw",
|
||||||
|
cooktime = 5,
|
||||||
|
})
|
127
mods/animalworld/camel.lua
Normal file
127
mods/animalworld/camel.lua
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
local random = math.random
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:camel", {
|
||||||
|
stepheight = 1,
|
||||||
|
type = "animal",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
group_attack = true,
|
||||||
|
owner_loyal = true,
|
||||||
|
attack_npcs = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 5,
|
||||||
|
hp_min = 20,
|
||||||
|
hp_max = 60,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.7, -0.01, -0.7, 0.7, 2, 0.7},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Camel.b3d",
|
||||||
|
textures = {
|
||||||
|
{"texturecamel.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_camel",
|
||||||
|
attack = "animalworld_camel",
|
||||||
|
},
|
||||||
|
walk_velocity = 2,
|
||||||
|
run_velocity = 5,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = false,
|
||||||
|
jump_height = 3,
|
||||||
|
pushable = true,
|
||||||
|
follow = {"default:dry_shrub", "default:grass_1", "ethereal:dry_shrub", "farming:seed_wheat", "farming:seed_rye", "default:junglegrass", "farming:melon_8", "farming:pumpkin_8", "ethereal:strawberry", "farming:blackberry", "naturalbiomes:blackberry", "naturalbiomes:cowberry", "naturalbiomes:banana", "naturalbiomes:banana_bunch", "farming:blueberries", "ethereal:orange", "livingdesert:figcactus_fruit", "livingfloatlands:paleojungle_clubmoss_fruit", "ethereal:banana", "livingdesert:date_palm_fruits", "farming:melon_slice", "naturalbiomes:wildrose", "naturalbiomes:banana", "default:dry_grass_1", "default:dry_grass_2", "default:dry_grass_3", "default:grass_1", "default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5", "default:marram_grass_1", "default:marram_grass_2", "default:marram_grass_3", "default:coldsteppe_grass_1", "default:coldsteppe_grass_2", "default:coldsteppe_grass_3", "default:coldsteppe_grass_4", "default:coldsteppe_grass_5", "default:coldsteppe_grass_6", "naturalbiomes:savanna_grass1", "naturalbiomes:savanna_grass2", "mcl_flowers:tallgrass", "mcl_core:deadbush", "mcl_bamboo:bamboo", "naturalbiomes:savanna_grass3", "naturalbiomes:outback_grass1", "naturalbiomes:outback_grass2", "naturalbiomes:outback_grass3", "naturalbiomes:outback_grass4", "naturalbiomes:outback_grass5", "naturalbiomes:outback_grass6", "naturalbiomes:med_grass1", "naturalbiomes:med_grass2", "naturalbiomes:heath_grass1", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:alpine_grass1", "naturalbiomes:alpine_grass2", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:", "naturalbiomes:", "naturalbiomes:bushland_grass", "naturalbiomes:bushland_grass2", "naturalbiomes:bushland_grass3", "naturalbiomes:bushland_grass4", "naturalbiomes:bushland_grass5", "naturalbiomes:bushland_grass6", "naturalbiomes:bushland_grass7", "group:grass", "group:normal_grass"},
|
||||||
|
view_range = 7,
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "animalworld:camelcorpse", chance = 7, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 5,
|
||||||
|
light_damage = 0,
|
||||||
|
knock_back = false,
|
||||||
|
fear_height = 2,
|
||||||
|
stay_near = {{"livingdesert:date_palm_leaves", "mcl_flowers:tallgrass", "mcl_core:deadbush", "livingdesert:yucca", "default:dry_shrub", "livingdesert:figcactus_trunk", "livingdesert:coldsteppe_grass1", "livingdesert:cactus", "livingdesert:cactus3", "livingdesert:cactus2", "livingdesert:cactus4"}, 5},
|
||||||
|
animation = {
|
||||||
|
speed_normal = 35,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 200,
|
||||||
|
walk_end = 300,
|
||||||
|
punch_start = 100,
|
||||||
|
punch_end = 200,
|
||||||
|
die_start = 100,
|
||||||
|
die_end = 200,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 0, 25, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local spawn_on = {"default:desert_sand", "default:sandstone"}
|
||||||
|
|
||||||
|
if minetest.get_mapgen_setting("mg_name") ~= "v6" then
|
||||||
|
spawn_on = {"default:desert_sand", "default:sandstone"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"default:desert_sand", "ethereal:dry_dirt"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:camel",
|
||||||
|
nodes = {"default:desert_sand", "default:sandstone", "mcl_core:sand", "mcl_core:redsand"},
|
||||||
|
neighbors = {"livingdesert:date_palm_leaves", "mcl_core:deadbush", "mcl_core:cactus", "livingdesert:yucca", "default:dry_shrub", "livingdesert:figcactus_trunk", "livingdesert:coldsteppe_grass1", "livingdesert:cactus", "livingdesert:cactus3", "livingdesert:cactus2", "livingdesert:cactus4", "default:cactus"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 3,
|
||||||
|
min_height = 0,
|
||||||
|
max_height = 40,
|
||||||
|
|
||||||
|
on_spawn = function(self, pos)
|
||||||
|
|
||||||
|
local nods = minetest.find_nodes_in_area_under_air(
|
||||||
|
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
|
||||||
|
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
|
||||||
|
{"default:desert_sand", "default:sandstone"})
|
||||||
|
|
||||||
|
if nods and #nods > 0 then
|
||||||
|
|
||||||
|
-- min herd of 3
|
||||||
|
local iter = math.min(#nods, 3)
|
||||||
|
|
||||||
|
-- print("--- camel at", minetest.pos_to_string(pos), iter)
|
||||||
|
|
||||||
|
for n = 1, iter do
|
||||||
|
|
||||||
|
local pos2 = nods[random(#nods)]
|
||||||
|
local kid = random(4) == 1 and true or nil
|
||||||
|
|
||||||
|
pos2.y = pos2.y + 2
|
||||||
|
|
||||||
|
if minetest.get_node(pos2).name == "air" then
|
||||||
|
|
||||||
|
mobs:add_mob(pos2, {
|
||||||
|
name = "animalworld:camel", child = kid})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:camel", S("Camel"), "acamel.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:camel", "animalworld:camel") -- compatibility
|
||||||
|
|
110
mods/animalworld/carp.lua
Normal file
110
mods/animalworld/carp.lua
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:carp", {
|
||||||
|
stepheight = 0.0,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = false,
|
||||||
|
reach = 1,
|
||||||
|
damage = 1,
|
||||||
|
hp_min = 5,
|
||||||
|
hp_max = 25,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.4, -0.01, -0.4, 0.4, 0.5, 0.4},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Carp.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"texturecarp.png"},
|
||||||
|
},
|
||||||
|
sounds = {},
|
||||||
|
makes_footstep_sound = false,
|
||||||
|
walk_velocity = 2,
|
||||||
|
run_velocity = 3,
|
||||||
|
fly = true,
|
||||||
|
fly_in = "default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing", "mcl_core:water_source", "mcl_core:water_flowing",
|
||||||
|
fall_speed = 0,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = false,
|
||||||
|
stay_near = {{"marinara:sand_with_alage", "mcl_flowers:waterlily", "mcl_ocean:seagrass:sand", "mcl_core:reeds", "mcl_ocean:bubble_coral", "mcl_ocean:tube_coral", "mcl_ocean:fire_coral", "mcl_ocean:brain_coral", "mcl_ocean:seagrass_gravel", "marinara:sand_with_seagrass", "default:sand_with_kelp", "marinara:sand_with_kelp", "marinara:reed_root", "flowers:waterlily_waving", "naturalbiomes:waterlily", "default:clay"}, 5},
|
||||||
|
stepheight = 0.0,
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:rawfish", chance = 1, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
air_damage = 1,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 100,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
fly_start = 150, -- swim animation
|
||||||
|
fly_end = 250,
|
||||||
|
punch_start = 100,
|
||||||
|
punch_end = 200,
|
||||||
|
die_start = 100,
|
||||||
|
die_end = 200,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
fly_in = {"default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
floats = 0,
|
||||||
|
follow = {
|
||||||
|
"ethereal:worm", "marinara:sand_with_seagrass", "marinara:sand_with_seagrass2", "seaweed", "fishing:bait_worm",
|
||||||
|
"default:grass", "farming:cucumber", "farming:cabbage", "animalworld:ant", "animalworld:termite", "animalworld:fishfood", "animalworld:cockroach", "animalworld:anteggs_raw", "group:grass", "group:normal_grass"
|
||||||
|
},
|
||||||
|
view_range = 10,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 5, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:carp",
|
||||||
|
nodes = {"mcl_core:water_source", "default:water_source"}, {"default:river_water_source"},
|
||||||
|
neighbors = {"marinara:sand_with_alage", "mcl_flowers:waterlily", "mcl_ocean:seagrass:sand", "mcl_core:reeds", "marinara:sand_with_seagrass", "default:sand_with_kelp", "marinara:sand_with_kelp", "marinara:reed_root", "flowers:waterlily_waving", "naturalbiomes:waterlily", "default:clay"},
|
||||||
|
min_light = 14,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 3,
|
||||||
|
min_height = -10,
|
||||||
|
max_height = 30,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:carp", S("Carp"), "acarp.png")
|
||||||
|
|
||||||
|
-- raw fish
|
||||||
|
minetest.register_craftitem(":animalworld:rawfish", {
|
||||||
|
description = S("Raw Fish"),
|
||||||
|
inventory_image = "animalworld_rawfish.png",
|
||||||
|
on_use = minetest.item_eat(3),
|
||||||
|
groups = {food_meat_raw = 1, flammable = 2},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- cooked fish
|
||||||
|
minetest.register_craftitem(":animalworld:cookedfish", {
|
||||||
|
description = S("Cooked Fish"),
|
||||||
|
inventory_image = "animalworld_cookedfish.png",
|
||||||
|
on_use = minetest.item_eat(5),
|
||||||
|
groups = {food_meat = 1, flammable = 2},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "cooking",
|
||||||
|
output = "animalworld:cookedfish",
|
||||||
|
recipe = "animalworld:rawfish",
|
||||||
|
cooktime = 5,
|
||||||
|
})
|
95
mods/animalworld/clamydosaurus.lua
Normal file
95
mods/animalworld/clamydosaurus.lua
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:clamydosaurus", {
|
||||||
|
stepheight = 3,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
reach = 1,
|
||||||
|
attack_npcs = false,
|
||||||
|
damage = 1,
|
||||||
|
hp_min = 10,
|
||||||
|
hp_max = 35,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.268, -0.01, -0.268, 0.268, 0.25, 0.268},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Clamydosaurus.b3d",
|
||||||
|
drawtype = "front",
|
||||||
|
textures = {
|
||||||
|
{"textureclamydosaurus.png"},
|
||||||
|
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_monitor",},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
walk_velocity = 2,
|
||||||
|
run_velocity = 4,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = true,
|
||||||
|
jump_height = 6,
|
||||||
|
stepheight = 5,
|
||||||
|
stay_near = {{"naturalbiomes:outback_rock", "mcl_core:deadbush", "mcl_core:cactus", "naturalbiomes:outback_trunk", "naturalbiomes:outback_bush_leaves", "livingdesert:cactus", "livingdesert:cactus3", "livingdesert:cactus2", "livingdesert:cactus4"}, 5},
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "mobs:leather", chance = 1, min = 0, max = 2},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 6,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 50,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
stand1_start = 100,
|
||||||
|
stand1_end = 200,
|
||||||
|
walk_speed = 150,
|
||||||
|
walk_start = 250,
|
||||||
|
walk_end = 350,
|
||||||
|
fly_start = 250, -- swim animation
|
||||||
|
fly_end = 350,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
fly_in = {"default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
floats = 0,
|
||||||
|
follow = {"animalworld:cockroach", "bees:frame_full", "animalworld:fishfood", "animalworld:ant", "animalworld:termite", "animalworld:bugice", "animalworld:termitequeen", "animalworld:notoptera", "animalworld:anteggs_raw"},
|
||||||
|
view_range = 6,
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 15, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
local spawn_on = "default:sand"
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = "ethereal:prairie_dirt", "default:dirt_with_grass", "ethereal:green_dirt"
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:clamydosaurus",
|
||||||
|
nodes = {"naturalbiomes:outback_litter", "mcl_core:sand", "mcl_core:redsand"},
|
||||||
|
neighbors = {"naturalbiomes:outback_rock", "naturalbiomes:outback_trunk", "naturalbiomes:outback_bush_leaves", "mcl_core:deadbush", "mcl_core:cactus"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 2,
|
||||||
|
max_height = 50,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:clamydosaurus", S("Clamydosaurus"), "aclamydosaurus.png", 0)
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:clamydosaurus", "animalworld:clamdydosaurus") -- compatibility
|
||||||
|
|
95
mods/animalworld/cockatoo.lua
Normal file
95
mods/animalworld/cockatoo.lua
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:cockatoo", {
|
||||||
|
stepheight = 3,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 2,
|
||||||
|
hp_min = 10,
|
||||||
|
hp_max = 35,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.3, -0.01, -0.3, 0.3, 0.3, 0.3},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Cockatoo.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"texturecockatoo.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
attack = "animalworld_cockatoo3",
|
||||||
|
random = "animalworld_cockatoo",
|
||||||
|
damage = "animalworld_cockatoo2",
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
walk_velocity = 2,
|
||||||
|
run_velocity = 4,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = true,
|
||||||
|
jump_height = 6,
|
||||||
|
stepheight = 3,
|
||||||
|
stay_near = {{"naturalbiomes:outback_leaves", "naturalbiomes:outback_trunk", "naturalbiomes:outback_bush_leaves", "livingdesert:cactus", "livingdesert:cactus3", "livingdesert:cactus2", "livingdesert:cactus4"}, 5},
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:chicken_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "animalworld:chicken_feather", chance = 1, min = 1, max = 1},
|
||||||
|
|
||||||
|
},
|
||||||
|
water_damage = 1,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 10,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 100,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
stand1_start = 100,
|
||||||
|
stand1_end = 200,
|
||||||
|
walk_start = 200,
|
||||||
|
walk_end = 300,
|
||||||
|
fly_start = 350, -- swim animation
|
||||||
|
fly_end = 450,
|
||||||
|
punch_start = 100,
|
||||||
|
punch_end = 200,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
fly_in = {"air"},
|
||||||
|
floats = 0,
|
||||||
|
follow = {
|
||||||
|
"farming:melon_slice", "mcl_farming:beetroot_item", "mcl_farming:carrot_item", "mcl_farming:melon_item", "mcl_farming:potato_item", "mcl_farming:pumpkin_item", "mcl_farming:wheat_item", "mcl_farming:sweet_berry", "farming:pineapple", "ethereal:banana", "ethereal:orange", "farming:grapes", "default:apple", "farming:potato", "ethereal:banana_bread", "farming:carrot", "farming:seed_rice", "farming:corn", "farming:wheat", "farming:beans", "farming:barley", "farming:oat", "farming:rye", "mobs:cheese", "farming:bread", "ethereal:banana_bread", "ethereal:banana", "farming:cabbage", "farming:lettuce", "farming:melon_slice", "naturalbiomes:coconut", "naturalbiomes:banana", "livingdesert:date_palm_fruits", "livingdesert:figcactus_fruit"
|
||||||
|
},
|
||||||
|
|
||||||
|
view_range = 4,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 15, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:cockatoo",
|
||||||
|
nodes = {"naturalbiomes:outback_litter", "mcl_core:dirt_with_grass", "mcl_core:acaciatree", "mcl_trees:tree_acacia"},
|
||||||
|
neighbors = {"naturalbiomes:outback_trunk", "naturalbiomes:outback_bush_leaves", "naturalbiomes:outback_leaves", "mcl_trees:leaves_acacia", "mcl_core:acacialeaves"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 800, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 5,
|
||||||
|
max_height = 31000,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:cockatoo", S("Cockatoo"), "acockatoo.png")
|
105
mods/animalworld/cockroach.lua
Normal file
105
mods/animalworld/cockroach.lua
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:cockroach", {
|
||||||
|
stepheight = 3,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
group_attack = false,
|
||||||
|
owner_loyal = true,
|
||||||
|
reach = 2,
|
||||||
|
damage = 1,
|
||||||
|
hp_min = 5,
|
||||||
|
hp_max = 10,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.3, -0.01, -0.2, 0.3, 0.3, 0.2},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Cockroach.b3d",
|
||||||
|
textures = {
|
||||||
|
{"texturecockroach.png"},
|
||||||
|
},
|
||||||
|
child_texture = {
|
||||||
|
{"texturecockroachbaby.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_ant",
|
||||||
|
damage = "animalworld_ant",
|
||||||
|
},
|
||||||
|
walk_velocity = 1,
|
||||||
|
run_velocity = 2,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = true,
|
||||||
|
jump_height = 8,
|
||||||
|
pushable = true,
|
||||||
|
follow = {"farming:melon_slice", "mcl_farming:beetroot_item", "mcl_farming:carrot_item", "mcl_farming:melon_item", "mcl_farming:potato_item", "mcl_farming:pumpkin_item", "mcl_farming:wheat_item", "mcl_farming:sweet_berry", "farming:pineapple", "ethereal:banana", "ethereal:orange", "farming:grapes", "default:apple", "farming:potato", "ethereal:banana_bread", "farming:carrot", "farming:seed_rice", "farming:corn", "farming:wheat", "farming:beans", "farming:barley", "farming:oat", "farming:rye", "mobs:cheese", "farming:bread", "ethereal:banana_bread", "ethereal:banana", "farming:cabbage", "farming:lettuce", "farming:melon_slice", "naturalbiomes:coconut", "naturalbiomes:banana", "mobs:meatblock_raw", "animalworld:chicken_raw", "livingfloatlands:ornithischiaraw", "livingfloatlands:largemammalraw", "livingfloatlands:theropodraw", "livingfloatlands:sauropodraw", "animalworld:raw_athropod", "animalworld:whalemeat_raw", "animalworld:rabbit_raw", "nativevillages:chicken_raw", "mobs:meat_raw", "animalworld:pork_raw", "people:mutton:raw"},
|
||||||
|
view_range = 2,
|
||||||
|
stay_near = {{"default:jungletree", "default:junglegrass", "livingjungle::grass2", "livingjungle::grass1", "livingjungle:alocasia", "livingjungle:flamingoflower"}, 5},
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:cockroach", chance = 1, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 2,
|
||||||
|
lava_damage = 5,
|
||||||
|
air_damage = 0,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 4,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 100,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 100,
|
||||||
|
walk_end = 200,
|
||||||
|
jump_start = 220,
|
||||||
|
jump_end = 330,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 25, 0, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:cockroach",
|
||||||
|
nodes = {"livingjungle:jungleground", "livingjungle:leafyjungleground", "mcl_core:dirt_with_gras"},
|
||||||
|
neighbors = {"livingjungle:samauma_trunk", "mcl_trees:tree_jungle", "livingjungle:liana_stem", "livingjungle:alocasia", "livingjungle:flamingoflower", "mcl_core:jungletree", "mcl_core:jungleleaves", "mcl_trees:leaves_jungle", "mcl_trees:leaves_mangrove"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 30,
|
||||||
|
chance = 1000, -- 15000
|
||||||
|
active_object_count = 3,
|
||||||
|
min_height = 5,
|
||||||
|
max_height = 31000,
|
||||||
|
day_toggle = false,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:cockroach", S("Cockroach"), "acockroach.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:cockroach", "animalworld:cockroach") -- compatibility
|
||||||
|
|
||||||
|
minetest.register_craftitem(":animalworld:roastroach", {
|
||||||
|
description = S("Roasted Cockroach"),
|
||||||
|
inventory_image = "animalworld_roastroach.png",
|
||||||
|
on_use = minetest.item_eat(2),
|
||||||
|
groups = {food_meat_raw = 1, flammable = 2},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:roastroach",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:cockroach", "default:torch"}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
332
mods/animalworld/concretecrafting.lua
Normal file
332
mods/animalworld/concretecrafting.lua
Normal file
|
@ -0,0 +1,332 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
walls.register(":animalworld:termiteconcrete_wall", S"Termite Concrete Wall", "termiteconcrete.png",
|
||||||
|
"animalworld:termiteconcrete_wall", animalworld.sounds.node_sound_stone_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"termiteconcrete",
|
||||||
|
"animalworld:termiteconcrete",
|
||||||
|
{cracky = 2, oddly_breakable_by_hand = 0, flammable = 0},
|
||||||
|
{"termiteconcrete.png"},
|
||||||
|
S("Termite Concrete Stair"),
|
||||||
|
S("Termite Concrete Slab"),
|
||||||
|
animalworld.sounds.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:termiteconcrete_wall",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:termiteconcrete", "animalworld:termiteconcrete", "animalworld:termiteconcrete", "animalworld:termiteconcrete", "animalworld:termiteconcrete", "animalworld:termiteconcrete"}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
walls.register(":animalworld:termiteconcretewhite_wall", S"Termite Concrete White Wall", "termiteconcretewhite.png",
|
||||||
|
"animalworld:termiteconcretewhite_wall", animalworld.sounds.node_sound_stone_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"termiteconcretewhite",
|
||||||
|
"animalworld:termiteconcretewhite",
|
||||||
|
{cracky = 2, oddly_breakable_by_hand = 0, flammable = 0},
|
||||||
|
{"termiteconcretewhite.png"},
|
||||||
|
S("Termite Concrete White Stair"),
|
||||||
|
S("Termite Concrete White Slab"),
|
||||||
|
animalworld.sounds.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:termiteconcretewhite_wall",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:termiteconcretewhite", "animalworld:termiteconcretewhite", "animalworld:termiteconcretewhite", "animalworld:termiteconcretewhite", "animalworld:termiteconcretewhite", "animalworld:termiteconcretewhite"}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
walls.register(":animalworld:termiteconcretegrey_wall", S"Termite Concrete Grey Wall", "termiteconcretegrey.png",
|
||||||
|
"animalworld:termiteconcretegrey_wall", animalworld.sounds.node_sound_stone_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"termiteconcretegrey",
|
||||||
|
"animalworld:termiteconcretegrey",
|
||||||
|
{cracky = 2, oddly_breakable_by_hand = 0, flammable = 0},
|
||||||
|
{"termiteconcretegrey.png"},
|
||||||
|
S("Termite Concrete Grey Stair"),
|
||||||
|
S("Termite Concrete Grey Slab"),
|
||||||
|
animalworld.sounds.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:termiteconcretegrey_wall",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:termiteconcretegrey", "animalworld:termiteconcretegrey", "animalworld:termiteconcretegrey", "animalworld:termiteconcretegrey", "animalworld:termiteconcretegrey", "animalworld:termiteconcretegrey"}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
walls.register(":animalworld:termiteconcreteblack_wall", S"Termite Concrete Black Wall", "termiteconcreteblack.png",
|
||||||
|
"animalworld:termiteconcreteblack_wall", default.node_sound_stone_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"termiteconcreteblack",
|
||||||
|
"animalworld:termiteconcreteblack",
|
||||||
|
{cracky = 2, oddly_breakable_by_hand = 0, flammable = 0},
|
||||||
|
{"termiteconcreteblack.png"},
|
||||||
|
S("Termite Concrete Black Stair"),
|
||||||
|
S("Termite Concrete Black Slab"),
|
||||||
|
animalworld.sounds.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:termiteconcreteblack_wall",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:termiteconcreteblack", "animalworld:termiteconcreteblack", "animalworld:termiteconcreteblack", "animalworld:termiteconcreteblack", "animalworld:termiteconcreteblack", "animalworld:termiteconcreteblack"}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
walls.register(":animalworld:termiteconcreteblue_wall", S"Termite Concrete Blue Wall", "termiteconcreteblue.png",
|
||||||
|
"animalworld:termiteconcreteblue_wall", animalworld.sounds.node_sound_stone_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"termiteconcreteblue",
|
||||||
|
"animalworld:termiteconcreteblue",
|
||||||
|
{cracky = 2, oddly_breakable_by_hand = 0, flammable = 0},
|
||||||
|
{"termiteconcreteblue.png"},
|
||||||
|
S("Termite Concrete Blue Stair"),
|
||||||
|
S("Termite Concrete Blue Slab"),
|
||||||
|
animalworld.sounds.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:termiteconcreteblue_wall",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:termiteconcreteblue", "animalworld:termiteconcreteblue", "animalworld:termiteconcreteblue", "animalworld:termiteconcreteblue", "animalworld:termiteconcreteblue", "animalworld:termiteconcreteblue"}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
walls.register(":animalworld:termiteconcretecyan_wall", S"Termite Concrete Cyan Wall", "termiteconcretecyan.png",
|
||||||
|
"animalworld:termiteconcretecyan_wall", animalworld.sounds.node_sound_stone_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"termiteconcretecyan",
|
||||||
|
"animalworld:termiteconcretecyan",
|
||||||
|
{cracky = 2, oddly_breakable_by_hand = 0, flammable = 0},
|
||||||
|
{"termiteconcretecyan.png"},
|
||||||
|
S("Termite Concrete Cyan Stair"),
|
||||||
|
S("Termite Concrete Cyan Slab"),
|
||||||
|
animalworld.sounds.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:termiteconcretecyan_wall",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:termiteconcretecyan", "animalworld:termiteconcretecyan", "animalworld:termiteconcretecyan", "animalworld:termiteconcretecyan", "animalworld:termiteconcretecyan", "animalworld:termiteconcretecyan"}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
walls.register(":animalworld:termiteconcretegreen_wall", S"Termite Concrete Green Wall", "termiteconcretegreen.png",
|
||||||
|
"animalworld:termiteconcretegreen_wall", animalworld.sounds.node_sound_stone_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"termiteconcretegreen",
|
||||||
|
"animalworld:termiteconcretegreen",
|
||||||
|
{cracky = 2, oddly_breakable_by_hand = 0, flammable = 0},
|
||||||
|
{"termiteconcretegreen.png"},
|
||||||
|
S("Termite Concrete Green Stair"),
|
||||||
|
S("Termite Concrete Green Slab"),
|
||||||
|
animalworld.sounds.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:termiteconcretegreen_wall",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:termiteconcretegreen", "animalworld:termiteconcretegreen", "animalworld:termiteconcretegreen", "animalworld:termiteconcretegreen", "animalworld:termiteconcretegreen", "animalworld:termiteconcretegreen"}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
walls.register(":animalworld:termiteconcretedarkgreen_wall", S"Termite Concrete Dark Green Wall", "termiteconcretedarkgreen.png",
|
||||||
|
"animalworld:termiteconcretedarkgreen_wall", animalworld.sounds.node_sound_stone_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"termiteconcretedarkgreen",
|
||||||
|
"animalworld:termiteconcretedarkgreen",
|
||||||
|
{cracky = 2, oddly_breakable_by_hand = 0, flammable = 0},
|
||||||
|
{"termiteconcretedarkgreen.png"},
|
||||||
|
S("Termite Concrete Dark Green Stair"),
|
||||||
|
S("Termite Concrete Dark Green Slab"),
|
||||||
|
animalworld.sounds.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:termiteconcretedarkgreen_wall",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:termiteconcretedarkgreen", "animalworld:termiteconcretedarkgreen", "animalworld:termiteconcretedarkgreen", "animalworld:termiteconcretedarkgreen", "animalworld:termiteconcretedarkgreen", "animalworld:termiteconcretedarkgreen"}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
walls.register(":animalworld:termiteconcreteyellow_wall", S"Termite Concrete Yellow Wall", "termiteconcreteyellow.png",
|
||||||
|
"animalworld:termiteconcreteyellow_wall", animalworld.sounds.node_sound_stone_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"termiteconcreteyellow",
|
||||||
|
"animalworld:termiteconcreteyellow",
|
||||||
|
{cracky = 2, oddly_breakable_by_hand = 0, flammable = 0},
|
||||||
|
{"termiteconcreteyellow.png"},
|
||||||
|
S("Termite Concrete Yellow Stair"),
|
||||||
|
S("Termite Concrete Yellow Slab"),
|
||||||
|
animalworld.sounds.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:termiteconcreteyellow_wall",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:termiteconcreteyellow", "animalworld:termiteconcreteyellow", "animalworld:termiteconcreteyellow", "animalworld:termiteconcreteyellow", "animalworld:termiteconcreteyellow", "animalworld:termiteconcreteyellow"}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
walls.register(":animalworld:termiteconcreteorange_wall", S"Termite Concrete Orange Wall", "termiteconcreteorange.png",
|
||||||
|
"animalworld:termiteconcreteorange_wall", animalworld.sounds.node_sound_stone_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"termiteconcreteorange",
|
||||||
|
"animalworld:termiteconcreteorange",
|
||||||
|
{cracky = 2, oddly_breakable_by_hand = 0, flammable = 0},
|
||||||
|
{"termiteconcreteorange.png"},
|
||||||
|
S("Termite Concrete Orange Stair"),
|
||||||
|
S("Termite Concrete Orange Slab"),
|
||||||
|
animalworld.sounds.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:termiteconcreteorange_wall",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:termiteconcreteorange", "animalworld:termiteconcreteorange", "animalworld:termiteconcreteorange", "animalworld:termiteconcreteorange", "animalworld:termiteconcreteorange", "animalworld:termiteconcreteorange"}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
walls.register(":animalworld:termiteconcretebrown_wall", S"Termite Concrete Brown Wall", "termiteconcretebrown.png",
|
||||||
|
"animalworld:termiteconcretebrown_wall", animalworld.sounds.node_sound_stone_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"termiteconcretebrown",
|
||||||
|
"animalworld:termiteconcretebrown",
|
||||||
|
{cracky = 2, oddly_breakable_by_hand = 0, flammable = 0},
|
||||||
|
{"termiteconcretebrown.png"},
|
||||||
|
S("Termite Concrete Brown Stair"),
|
||||||
|
S("Termite Concrete Brown Slab"),
|
||||||
|
animalworld.sounds.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:termiteconcretebrown_wall",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:termiteconcretebrown", "animalworld:termiteconcretebrown", "animalworld:termiteconcretebrown", "animalworld:termiteconcretebrown", "animalworld:termiteconcretebrown", "animalworld:termiteconcretebrown"}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
walls.register(":animalworld:termiteconcretered_wall", S"Termite Concrete Red Wall", "termiteconcretered.png",
|
||||||
|
"animalworld:termiteconcretered_wall", animalworld.sounds.node_sound_stone_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"termiteconcretered",
|
||||||
|
"animalworld:termiteconcretered",
|
||||||
|
{cracky = 2, oddly_breakable_by_hand = 0, flammable = 0},
|
||||||
|
{"termiteconcretered.png"},
|
||||||
|
S("Termite Concrete Red Stair"),
|
||||||
|
S("Termite Concrete Red Slab"),
|
||||||
|
animalworld.sounds.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:termiteconcretered_wall",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:termiteconcretered", "animalworld:termiteconcretered", "animalworld:termiteconcretered", "animalworld:termiteconcretered", "animalworld:termiteconcretered", "animalworld:termiteconcretered"}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
walls.register(":animalworld:termiteconcretepink_wall", S"Termite Concrete Pink Wall", "termiteconcretepink.png",
|
||||||
|
"animalworld:termiteconcretepink_wall", animalworld.sounds.node_sound_stone_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"termiteconcretepink",
|
||||||
|
"animalworld:termiteconcretepink",
|
||||||
|
{cracky = 2, oddly_breakable_by_hand = 0, flammable = 0},
|
||||||
|
{"termiteconcretepink.png"},
|
||||||
|
S("Termite Concrete Pink Stair"),
|
||||||
|
S("Termite Concrete Pink Slab"),
|
||||||
|
animalworld.sounds.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:termiteconcretepink_wall",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:termiteconcretepink", "animalworld:termiteconcretepink", "animalworld:termiteconcretepink", "animalworld:termiteconcretepink", "animalworld:termiteconcretepink", "animalworld:termiteconcretepink"}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
walls.register(":animalworld:termiteconcretemagenta_wall", S"Termite Concrete Magenta Wall", "termiteconcretemagenta.png",
|
||||||
|
"animalworld:termiteconcretemagenta_wall", animalworld.sounds.node_sound_stone_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"termiteconcretemagenta",
|
||||||
|
"animalworld:termiteconcretemagenta",
|
||||||
|
{cracky = 2, oddly_breakable_by_hand = 0, flammable = 0},
|
||||||
|
{"termiteconcretemagenta.png"},
|
||||||
|
S("Termite Concrete Magenta Stair"),
|
||||||
|
S("Termite Concrete Magenta Slab"),
|
||||||
|
animalworld.sounds.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:termiteconcretemagenta_wall",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:termiteconcretemagenta", "animalworld:termiteconcretemagenta", "animalworld:termiteconcretemagenta", "animalworld:termiteconcretemagenta", "animalworld:termiteconcretemagenta", "animalworld:termiteconcretemagenta"}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
walls.register(":animalworld:termiteconcreteviolet_wall", S"Termite Concrete Violet Wall", "termiteconcreteviolet.png",
|
||||||
|
"animalworld:termiteconcreteviolet_wall", animalworld.sounds.node_sound_stone_defaults())
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"termiteconcreteviolet",
|
||||||
|
"animalworld:termiteconcreteviolet",
|
||||||
|
{cracky = 2, oddly_breakable_by_hand = 0, flammable = 0},
|
||||||
|
{"termiteconcreteviolet.png"},
|
||||||
|
S("Termite Concrete Violet Stair"),
|
||||||
|
S("Termite Concrete Violet Slab"),
|
||||||
|
animalworld.sounds.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "animalworld:termiteconcreteviolet_wall",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe =
|
||||||
|
{"animalworld:termiteconcreteviolet", "animalworld:termiteconcreteviolet", "animalworld:termiteconcreteviolet", "animalworld:termiteconcreteviolet", "animalworld:termiteconcreteviolet", "animalworld:termiteconcreteviolet"}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
97
mods/animalworld/crab.lua
Normal file
97
mods/animalworld/crab.lua
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:crab", {
|
||||||
|
stepheight = 1,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
reach = 1,
|
||||||
|
attack_npcs = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 0,
|
||||||
|
hp_min = 10,
|
||||||
|
hp_max = 40,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.4, -0.01, -0.4, 0.4, 0.4, 0.4},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Crab.b3d",
|
||||||
|
drawtype = "front",
|
||||||
|
textures = {
|
||||||
|
{"texturecrab.png"},
|
||||||
|
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_crab",
|
||||||
|
attack = "animalworld_crab",
|
||||||
|
},
|
||||||
|
makes_footstep_sound = false,
|
||||||
|
walk_velocity = 0.7,
|
||||||
|
run_velocity = 1,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = false,
|
||||||
|
jump_height = 6,
|
||||||
|
stay_near = {{"default:marram_grass_1", "default:marram_grass_2", "default:marram_grass_3", "livingdesert:date_palm_leaves", "livingdesert:yucca", "default:dry_shrub", "livingdesert:figcactus_trunk", "livingdesert:coldsteppe_grass1", "naturalbiomes:bushland_grass", "naturalbiomes:bushland_grass2", "naturalbiomes:bushland_grass3", "naturalbiomes:bushland_grass4", "marinara:sand_with_seashells"}, 5},
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:raw_athropod", chance = 1, min = 0, max = 2},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 75,
|
||||||
|
stand_start = 1,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 100,
|
||||||
|
walk_end = 200,
|
||||||
|
punch_start = 200,
|
||||||
|
punch_end = 400,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
fly_in = {"default:water_source", "default:water_flowing"},
|
||||||
|
floats = 0,
|
||||||
|
follow = {"animalworld:rawfish", "mcl_mobitems:chicken", "mcl_fishing:pufferfish_raw", "mcl_mobitems:rotten_flesh", "mcl_mobitems:mutton", "mcl_mobitems:beef", "mcl_mobitems:porkchop", "mcl_mobitems:rabbit", "default:marram_grass_2", "default:dry_grass_1", "default:dry_grass_2", "default:dry_grass_3", "default:grass_1", "default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5", "default:marram_grass_1", "default:marram_grass_2", "default:marram_grass_3", "default:coldsteppe_grass_1", "default:coldsteppe_grass_2", "default:coldsteppe_grass_3", "default:coldsteppe_grass_4", "default:coldsteppe_grass_5", "default:coldsteppe_grass_6", "naturalbiomes:savanna_grass1", "naturalbiomes:savanna_grass2", "naturalbiomes:savanna_grass3", "naturalbiomes:outback_grass1", "naturalbiomes:outback_grass2", "naturalbiomes:outback_grass3", "naturalbiomes:outback_grass4", "naturalbiomes:outback_grass5", "naturalbiomes:outback_grass6", "naturalbiomes:med_grass1", "naturalbiomes:med_grass2", "naturalbiomes:heath_grass1", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:alpine_grass1", "naturalbiomes:alpine_grass2", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:", "naturalbiomes:", "naturalbiomes:bushland_grass", "naturalbiomes:bushland_grass2", "naturalbiomes:bushland_grass3", "naturalbiomes:bushland_grass4", "naturalbiomes:bushland_grass5", "naturalbiomes:bushland_grass6", "naturalbiomes:bushland_grass7", "mobs:meatblock_raw", "animalworld:chicken_raw", "livingfloatlands:ornithischiaraw", "livingfloatlands:largemammalraw", "livingfloatlands:theropodraw", "livingfloatlands:sauropodraw", "animalworld:raw_athropod", "animalworld:whalemeat_raw", "animalworld:rabbit_raw", "nativevillages:chicken_raw", "mobs:meat_raw", "animalworld:pork_raw", "people:mutton:raw", "animalworld:rawmollusk", "marinaramobs:octopus_raw", "marinara:raw_oisters", "marinara:raw_athropod", "animalworld:rawfish", "fishing:fish_raw", "fishing:pike_raw", "marinaramobs:raw_exotic_fish", "nativevillages:catfish_raw", "xocean:fish_edible", "ethereal:fish_raw", "mobs:clownfish_raw", "fishing:bluewhite_raw", "fishing:exoticfish_raw", "fishing:fish_raw", "fishing:carp_raw", "fishing:perch_raw", "water_life:meat_raw", "fishing:shark_raw", "fishing:pike_raw", "animalworld:cockroach", "bees:frame_full", "animalworld:fishfood", "animalworld:ant", "animalworld:termite", "animalworld:bugice", "animalworld:termitequeen", "animalworld:notoptera", "animalworld:anteggs_raw"},
|
||||||
|
view_range = 5,
|
||||||
|
replace_rate = 10,
|
||||||
|
replace_what = {"default:marram_grass_2", "ethereal:fish_raw", "fishing:fish_raw", "xocean:fish_edible", "water_life:meat_raw", "mobs:clownfish_raw"},
|
||||||
|
replace_with = "air",
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 15, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
local spawn_on = "default:sand"
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = "default:sand"
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:crab",
|
||||||
|
nodes = {"default:sand", "mcl_core:sand", "mcl_core:gravel"},
|
||||||
|
neighbors = {"group:grass", "mcl_core:reeds", "group:normal_grass", "mcl_core:dirt_with_grass", "marinara:sand_with_seashells", "marinara:sand_with_seashells_pink", "marinara:sand_with_seashells_orange", "marinara:sand_with_seashells_yellow", "marinara:sand_with_seashells_brown", "marinara:sand_with_seashells_white"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 500, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 0,
|
||||||
|
max_height = 4,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:crab", S("Crab"), "acrab.png", 0)
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:crab", "animalworld:crab") -- compatibility
|
||||||
|
|
||||||
|
|
93
mods/animalworld/crocodile.lua
Normal file
93
mods/animalworld/crocodile.lua
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:crocodile", {
|
||||||
|
stepheight = 1,
|
||||||
|
type = "monster",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = true,
|
||||||
|
reach = 2,
|
||||||
|
damage = 12,
|
||||||
|
hp_min = 50,
|
||||||
|
hp_max = 95,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.6, -0.01, -0.6, 0.6, 0.95, 0.6},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Crocodile.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"texturecrocodile.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_crocodile",
|
||||||
|
attack = "animalworld_crocodile",
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
walk_velocity = 1,
|
||||||
|
run_velocity = 2,
|
||||||
|
runaway = false,
|
||||||
|
jump = true,
|
||||||
|
jump_height = 0.5,
|
||||||
|
stepheight = 1,
|
||||||
|
stay_near = {{"default:dry_grass_1", "default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4", "livingjungle::grass2", "livingjungle::grass1", "livingjungle:alocasia", "livingjungle:flamingoflower", "naturalbiomes:ourback_grass", "naturalbiomes:ourback_grass3", "naturalbiomes:ourback_grass2", "naturalbiomes:ourback_grass4", "naturalbiomes:ourback_grass5"}, 6},
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "animalworld:crocodilecorpse", chance = 7, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 75,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 250,
|
||||||
|
walk_end = 350,
|
||||||
|
fly_start = 400, -- swim animation
|
||||||
|
fly_end = 500,
|
||||||
|
punch_start = 100,
|
||||||
|
punch_end = 200,
|
||||||
|
die_start = 100,
|
||||||
|
die_end = 200,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
fly_in = {"default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
floats = 0,
|
||||||
|
follow = {
|
||||||
|
"ethereal:fish_raw", "mcl_mobitems:chicken", "mcl_fishing:pufferfish_raw", "mcl_mobitems:rotten_flesh", "mcl_mobitems:mutton", "mcl_mobitems:beef", "mcl_mobitems:porkchop", "mcl_mobitems:rabbit", "animalworld:rawfish", "mobs_fish:tropical",
|
||||||
|
"mobs:meat_raw", "animalworld:rabbit_raw", "xocean:fish_edible", "fishing:fish_raw", "water_life:meat_raw", "fishing:carp_raw", "animalworld:chicken_raw", "mobs:meatblock_raw", "animalworld:chicken_raw", "livingfloatlands:ornithischiaraw", "livingfloatlands:largemammalraw", "livingfloatlands:theropodraw", "livingfloatlands:sauropodraw", "animalworld:raw_athropod", "animalworld:whalemeat_raw", "animalworld:rabbit_raw", "nativevillages:chicken_raw", "mobs:meat_raw", "animalworld:pork_raw", "people:mutton:raw", "mobs:meatblock_raw", "animalworld:chicken_raw", "livingfloatlands:ornithischiaraw", "livingfloatlands:largemammalraw", "livingfloatlands:theropodraw", "livingfloatlands:sauropodraw", "animalworld:raw_athropod", "animalworld:whalemeat_raw", "animalworld:rabbit_raw", "nativevillages:chicken_raw", "mobs:meat_raw", "animalworld:pork_raw", "people:mutton:raw", "animalworld:rawmollusk", "marinaramobs:octopus_raw", "marinara:raw_oisters", "marinara:raw_athropod", "animalworld:rawfish", "fishing:fish_raw", "fishing:pike_raw", "marinaramobs:raw_exotic_fish", "nativevillages:catfish_raw", "xocean:fish_edible", "ethereal:fish_raw", "mobs:clownfish_raw", "fishing:bluewhite_raw", "fishing:exoticfish_raw", "fishing:fish_raw", "fishing:carp_raw", "fishing:perch_raw", "water_life:meat_raw", "fishing:shark_raw", "fishing:pike_raw"
|
||||||
|
},
|
||||||
|
view_range = 12,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 0, 0, 25, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"ethereal:grove_dirt", "default:dry_dirt_with_dry_grass", "default:dirt_with_rainforest_litter"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:crocodile",
|
||||||
|
nodes = {"default:dry_dirt_with_dry_grass", "mcl_core:acaciatree", "mcl_trees:tree_acacia", "default:dirt_with_rainforest_litter", "naturalbiomes:outback_litter", "livingjungle:jungleground", "livingjungle:leafyjungleground"},
|
||||||
|
neighbors = {"group:grass", "group:normal_grass"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 3,
|
||||||
|
min_height = 0,
|
||||||
|
max_height = 3,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:crocodile", S("Crocodile"), "acrocodile.png")
|
11
mods/animalworld/depends.txt
Normal file
11
mods/animalworld/depends.txt
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
mobs
|
||||||
|
default?
|
||||||
|
mcl_core?
|
||||||
|
mcl_sounds?
|
||||||
|
bucket?
|
||||||
|
ethereal?
|
||||||
|
xocean?
|
||||||
|
farming?
|
||||||
|
fishing?
|
||||||
|
hunger_ng?
|
||||||
|
livingcaves?
|
1
mods/animalworld/description.txt
Normal file
1
mods/animalworld/description.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Adds various wild animals to your Minetest Game world.
|
84
mods/animalworld/divingbeetle.lua
Normal file
84
mods/animalworld/divingbeetle.lua
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:divingbeetle", {
|
||||||
|
stepheight = 1,
|
||||||
|
type = "monster",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_npcs = true,
|
||||||
|
reach = 2,
|
||||||
|
damage = 1,
|
||||||
|
hp_min = 5,
|
||||||
|
hp_max = 25,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.3, -0.01, -0.3, 0.3, 0.3, 0.3},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Divingbeetle.b3d",
|
||||||
|
textures = {
|
||||||
|
{"texturedivingbeetle.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = false,
|
||||||
|
sounds = {
|
||||||
|
},
|
||||||
|
walk_velocity = 1,
|
||||||
|
run_velocity = 2,
|
||||||
|
runaway = false,
|
||||||
|
jump = false,
|
||||||
|
jump_height = 3,
|
||||||
|
pushable = true,
|
||||||
|
view_range = 6,
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:fishfood", chance = 1, min = 0, max = 2},
|
||||||
|
},
|
||||||
|
fly_in = {"default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
floats = 0,
|
||||||
|
fly = true,
|
||||||
|
follow = {
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 5,
|
||||||
|
air_damage = 1,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
stay_near = {{"marinara:sand_with_alage", "mcl_flowers:waterlily", "mcl_ocean:seagrass:sand", "mcl_core:reeds", "marinara:sand_with_seagrass", "default:sand_with_kelp", "marinara:sand_with_kelp", "marinara:reed_root", "flowers:waterlily_waving", "naturalbiomes:waterlily", "default:clay"}, 4},
|
||||||
|
animation = {
|
||||||
|
speed_normal = 100,
|
||||||
|
stand_speed = 50,
|
||||||
|
stand_start = 100,
|
||||||
|
stand_end = 300,
|
||||||
|
walk_start = 0,
|
||||||
|
walk_end = 100,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 5, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:divingbeetle",
|
||||||
|
nodes = {"mcl_core:water_source", "default:water_source", "default:river_water_source", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
neighbors = {"default:papyrus", "mcl_core:reeds"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 30,
|
||||||
|
active_object_count = 2,
|
||||||
|
chance = 500, -- 15000
|
||||||
|
min_height = -10,
|
||||||
|
max_height = 30,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:divingbeetle", S("Diving Beetle"), "adivingbeetle.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:divingbeetle", "animalworld:divingbeetle") -- compatibility
|
||||||
|
|
88
mods/animalworld/dragonfly.lua
Normal file
88
mods/animalworld/dragonfly.lua
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:dragonfly", {
|
||||||
|
stepheight = 3,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = true,
|
||||||
|
owner_loyal = true,
|
||||||
|
reach = 2,
|
||||||
|
damage = 1,
|
||||||
|
hp_min = 5,
|
||||||
|
hp_max = 25,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.1, -0.01, -0.1, 0.1, 0.2, 0.1},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Dragonfly.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"texturedragonfly.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_dragonfly",
|
||||||
|
},
|
||||||
|
makes_footstep_sound = false,
|
||||||
|
walk_velocity = 5,
|
||||||
|
run_velocity = 7,
|
||||||
|
walk_chance = 15,
|
||||||
|
fall_speed = 0,
|
||||||
|
jump = true,
|
||||||
|
jump_height = 6,
|
||||||
|
stepheight = 3,
|
||||||
|
fly = true,
|
||||||
|
stay_near = {{"naturalbiomes:alderswamp_reed3", "mcl_core:reeds", "naturalbiomes:alderswamp_reed2", "naturalbiomes:alderswamp_reed", "naturalbiomes:alderswamp_yellowflower", "naturalbiomes:waterlily", "marinara:reed_root"}, 4},
|
||||||
|
drops = {
|
||||||
|
|
||||||
|
},
|
||||||
|
water_damage = 4,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 0,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 150,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
fly_start = 100, -- swim animation
|
||||||
|
fly_end = 200,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
fly_in = {"air"},
|
||||||
|
floats = 0,
|
||||||
|
follow = {
|
||||||
|
"animalworld:termitequeen", "animalworld:ant", "animalworld:termite"
|
||||||
|
},
|
||||||
|
|
||||||
|
view_range = 5,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 0, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:dragonfly",
|
||||||
|
nodes = {"air"},
|
||||||
|
neighbors = {"flowers:waterlily_waving", "mcl_core:reeds", "mcl_flowers:waterlily"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 30,
|
||||||
|
active_object_count = 2,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
min_height = 0,
|
||||||
|
max_height = 40,
|
||||||
|
day_toggle = true
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:dragonfly", S("Dragonfly"), "adragonfly.png")
|
99
mods/animalworld/echidna.lua
Normal file
99
mods/animalworld/echidna.lua
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:echidna", {
|
||||||
|
stepheight = 1,
|
||||||
|
type = "animal",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
group_attack = true,
|
||||||
|
owner_loyal = true,
|
||||||
|
attack_npcs = true,
|
||||||
|
reach = 3,
|
||||||
|
damage = 15,
|
||||||
|
hp_min = 25,
|
||||||
|
hp_max = 65,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.95, 0.2},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Echidna.b3d",
|
||||||
|
textures = {
|
||||||
|
{"textureechidna.png"},
|
||||||
|
},
|
||||||
|
child_texture = {
|
||||||
|
{"textureechidnababy.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {
|
||||||
|
|
||||||
|
},
|
||||||
|
walk_velocity = 0.5,
|
||||||
|
run_velocity = 0.5,
|
||||||
|
runaway = false,
|
||||||
|
jump = false,
|
||||||
|
jump_height = 3,
|
||||||
|
pushable = true,
|
||||||
|
stay_near = {{"animalworld:termitemould", "naturalbiomes:outback_grass", "naturalbiomes:outback_grass3", "naturalbiomes:outback_grass2", "naturalbiomes:outback_grass4", "naturalbiomes:outback_grass5", "livingdesert:cactus", "livingdesert:cactus3", "livingdesert:cactus2", "livingdesert:cactus4"}, 6},
|
||||||
|
follow = {"fishing:bait:worm", "bees:frame_full", "ethereal:worm", "animalworld:ant", "animalworld:termite"},
|
||||||
|
view_range = 3,
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "mobs:leather", chance = 1, min = 0, max = 2},
|
||||||
|
},
|
||||||
|
water_damage = 1,
|
||||||
|
lava_damage = 5,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 70,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
stand1_start = 100,
|
||||||
|
stand1_end = 200,
|
||||||
|
walk_start = 200,
|
||||||
|
walk_end = 300,
|
||||||
|
punch_start = 300,
|
||||||
|
punch_end = 400,
|
||||||
|
die_start = 300,
|
||||||
|
die_end = 400,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 15, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local spawn_on = {"mcl_core:podzol", "default:dirt_withforest_litter"}
|
||||||
|
|
||||||
|
if minetest.get_mapgen_setting("mg_name") ~= "v6" then
|
||||||
|
spawn_on = {"mcl_core:podzol", "default:dirt_withforest_litter", "default:dry_dirt_with_dry_grass"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"ethereal:grass_grove", "ethereal:green_dirt", "default:dirt_with_rainforest_litter"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:echidna",
|
||||||
|
nodes = {"naturalbiomes:outback_litter", "mcl_core:sand", "mcl_core:redsand"},
|
||||||
|
neighbors = {"group:grass", "mcl_core:deadbush", "mcl_core:cactus", "group:normal_grass", "naturalbiomes:outback_grass", "naturalbiomes:outback_grass3", "naturalbiomes:outback_grass2", "naturalbiomes:outback_grass4", "naturalbiomes:outback_grass5"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 30,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 5,
|
||||||
|
max_height = 50,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:echidna", S("Echidna"), "aechidna.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:echidna", "animalworld:echidna") -- compatibility
|
||||||
|
|
125
mods/animalworld/elephant.lua
Normal file
125
mods/animalworld/elephant.lua
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
local random = math.random
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:elephant", {
|
||||||
|
stepheight = 2,
|
||||||
|
type = "monster",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = true,
|
||||||
|
reach = 3,
|
||||||
|
damage = 16,
|
||||||
|
hp_min = 75,
|
||||||
|
hp_max = 120,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-1.0, -0.01, -1.0, 1.0, 2, 1.0},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Elephant.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"textureelephant.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_elephant",
|
||||||
|
attack = "animalworld_elephant",
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
walk_velocity = 2,
|
||||||
|
run_velocity = 4,
|
||||||
|
runaway = false,
|
||||||
|
jump = false,
|
||||||
|
jump_height = 6,
|
||||||
|
stepheight = 2,
|
||||||
|
knock_back = false,
|
||||||
|
stay_near = {{"default:dry_grass_1", "default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4"}, 6},
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "animalworld:elephantcorpse", chance = 7, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 4,
|
||||||
|
pathfinding = true,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 80,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 300,
|
||||||
|
walk_end = 450,
|
||||||
|
punch_start = 100,
|
||||||
|
punch_end = 300,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
follow = {
|
||||||
|
"ethereal:banana_single", "mcl_farming:beetroot_item", "mcl_farming:carrot_item", "mcl_farming:melon_item", "mcl_farming:potato_item", "mcl_farming:pumpkin_item", "mcl_farming:wheat_item", "mcl_farming:sweet_berry", "farming:corn_cob", "farming:cabbage",
|
||||||
|
"default:apple", "farming:cabbage", "farming:carrot", "farming:cucumber", "farming:grapes", "farming:pineapple", "ethereal:orange", "ethereal:coconut", "ethereal:coconut_slice", "livingdesert:date_palm_fruits", "livingdesert:figcactus_fruit", "default:dry_grass_1", "default:dry_grass_2", "default:dry_grass_3", "default:grass_1", "default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5", "default:marram_grass_1", "default:marram_grass_2", "default:marram_grass_3", "default:coldsteppe_grass_1", "default:coldsteppe_grass_2", "default:coldsteppe_grass_3", "default:coldsteppe_grass_4", "default:coldsteppe_grass_5", "default:coldsteppe_grass_6", "naturalbiomes:savanna_grass1", "naturalbiomes:savanna_grass2", "naturalbiomes:savanna_grass3", "naturalbiomes:outback_grass1", "naturalbiomes:outback_grass2", "naturalbiomes:outback_grass3", "naturalbiomes:outback_grass4", "naturalbiomes:outback_grass5", "naturalbiomes:outback_grass6", "naturalbiomes:med_grass1", "naturalbiomes:med_grass2", "naturalbiomes:heath_grass1", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:alpine_grass1", "naturalbiomes:alpine_grass2", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:", "naturalbiomes:", "naturalbiomes:bushland_grass", "naturalbiomes:bushland_grass2", "naturalbiomes:bushland_grass3", "naturalbiomes:bushland_grass4", "naturalbiomes:bushland_grass5", "naturalbiomes:bushland_grass6", "naturalbiomes:bushland_grass7", "farming:melon_8", "farming:pumpkin_8", "ethereal:strawberry", "farming:blackberry", "naturalbiomes:blackberry", "naturalbiomes:cowberry", "naturalbiomes:banana", "naturalbiomes:banana_bunch", "farming:blueberries", "ethereal:orange", "livingdesert:figcactus_fruit", "livingfloatlands:paleojungle_clubmoss_fruit", "ethereal:banana", "livingdesert:date_palm_fruits", "farming:melon_slice", "naturalbiomes:wildrose", "naturalbiomes:banana", "group:grass", "group:normal_grass"
|
||||||
|
},
|
||||||
|
view_range = 6,
|
||||||
|
replace_rate = 10,
|
||||||
|
replace_what = {"farming:soil", "farming:soil_wet"},
|
||||||
|
replace_with = "default:dirt",
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 0, 0, 25, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"default:dry_dirt_with_dry_grass"}, {"default:dirt_with_rainforest_litter"}, {"ethereal:grove_dirt"}, {"ethereal:bamboo_dirt"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:elephant",
|
||||||
|
nodes = {"default:dry_dirt_with_dry_grass", "mcl_core:dirt_with_grass", "mcl_core:dirt_with_grass"},
|
||||||
|
neighbors = {"group:grass", "group:normal_grass", "mcl_trees:leaves_acacia", "mcl_core:acacialeaves"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 3,
|
||||||
|
min_height = 0,
|
||||||
|
max_height = 65,
|
||||||
|
day_toggle = true,
|
||||||
|
|
||||||
|
on_spawn = function(self, pos)
|
||||||
|
|
||||||
|
local nods = minetest.find_nodes_in_area_under_air(
|
||||||
|
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
|
||||||
|
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
|
||||||
|
{"default:dry_dirt_with_dry_grass"})
|
||||||
|
|
||||||
|
if nods and #nods > 0 then
|
||||||
|
|
||||||
|
-- min herd of 3
|
||||||
|
local iter = math.min(#nods, 3)
|
||||||
|
|
||||||
|
-- print("--- elephant at", minetest.pos_to_string(pos), iter)
|
||||||
|
|
||||||
|
for n = 1, iter do
|
||||||
|
|
||||||
|
local pos2 = nods[random(#nods)]
|
||||||
|
local kid = random(4) == 1 and true or nil
|
||||||
|
|
||||||
|
pos2.y = pos2.y + 2
|
||||||
|
|
||||||
|
if minetest.get_node(pos2).name == "air" then
|
||||||
|
|
||||||
|
mobs:add_mob(pos2, {
|
||||||
|
name = "animalworld:elephant", child = kid})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:elephant", S("Elephant"), "aelephant.png")
|
91
mods/animalworld/fox.lua
Normal file
91
mods/animalworld/fox.lua
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:fox", {
|
||||||
|
stepheight = 1,
|
||||||
|
type = "animal",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
group_attack = true,
|
||||||
|
owner_loyal = true,
|
||||||
|
attack_npcs = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 3,
|
||||||
|
hp_min = 10,
|
||||||
|
hp_max = 25,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.5, -0.01, -0.5, 0.5, 0.95, 0.5},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Fox.b3d",
|
||||||
|
textures = {
|
||||||
|
{"texturefox.png"},
|
||||||
|
{"texturefox2.png"},
|
||||||
|
{"texturefox3.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_fox3",
|
||||||
|
attack = "animalworld_fox",
|
||||||
|
damage = "animalworld_fox2",
|
||||||
|
},
|
||||||
|
walk_velocity = 2,
|
||||||
|
run_velocity = 3,
|
||||||
|
jump = true,
|
||||||
|
jump_height = 6,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
pushable = true,
|
||||||
|
stay_near = {{"default:pine_needles", "animalworld:animalworld_tundrashrub5", "animalworld:animalworld_tundrashrub1", "animalworld:animalworld_tundrashrub2", "animalworld:animalworld_tundrashrub3", "animalworld:animalworld_tundrashrub4"}, 6},
|
||||||
|
follow = {"default:apple", "farming:potato", "ethereal:banana_bread", "farming:melon_slice", "farming:carrot", "farming:seed_rice", "farming:corn", "ethereal:fish_raw", "animalworld:rawfish", "mobs_fish:tropical",
|
||||||
|
"mobs:meat_raw", "animalworld:rabbit_raw", "xocean:fish_edible", "fishing:fish_raw", "water_life:meat_raw", "fishing:carp_raw", "animalworld:chicken_raw", "naturalbiomes:blackberry", "mobs:meatblock_raw", "animalworld:chicken_raw", "livingfloatlands:ornithischiaraw", "livingfloatlands:largemammalraw", "livingfloatlands:theropodraw", "livingfloatlands:sauropodraw", "animalworld:raw_athropod", "animalworld:whalemeat_raw", "animalworld:rabbit_raw", "nativevillages:chicken_raw", "mobs:meat_raw", "animalworld:pork_raw", "people:mutton:raw"},
|
||||||
|
view_range = 12,
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:leather", chance = 7, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 1,
|
||||||
|
lava_damage = 5,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 120,
|
||||||
|
stand_speed = 50,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
stand2_start = 100,
|
||||||
|
stand2_end = 200,
|
||||||
|
walk_start = 200,
|
||||||
|
walk_end = 300,
|
||||||
|
punch_start = 300,
|
||||||
|
punch_end = 400,
|
||||||
|
die_start = 300,
|
||||||
|
die_end = 400,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:fox",
|
||||||
|
nodes = {"default:permafrost", "mcl_core:snow", "default:permafrost_with_moss", "default:permafrost_with_stones"},
|
||||||
|
neighbors = {"animalworld:animalworld_tundrashrub1", "mcl_core:sprucetree", "animalworld:animalworld_tundrashrub2", "animalworld:animalworld_tundrashrub1", "animalworld:animalworld_tundrashrub2", "animalworld:animalworld_tundrashrub3", "animalworld:animalworld_tundrashrub4"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 1000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 1,
|
||||||
|
max_height = 80,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:fox", S("Fox"), "afox.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:fox", "animalworld:fox") -- compatibility
|
||||||
|
|
91
mods/animalworld/frog.lua
Normal file
91
mods/animalworld/frog.lua
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:frog", {
|
||||||
|
stepheight = 3,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
reach = 1,
|
||||||
|
attack_npcs = false,
|
||||||
|
damage = 1,
|
||||||
|
hp_min = 5,
|
||||||
|
hp_max = 25,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.268, -0.01, -0.268, 0.268, 0.25, 0.268},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Frog.b3d",
|
||||||
|
drawtype = "front",
|
||||||
|
textures = {
|
||||||
|
{"texturefrog.png"},
|
||||||
|
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_frog",},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
walk_velocity = 2,
|
||||||
|
run_velocity = 3,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = true,
|
||||||
|
jump_height = 6,
|
||||||
|
stay_near = {{"mcl_flowers:waterlily", "naturalbiomes:alderswamp_reed3", "mcl_core:reeds", "naturalbiomes:alderswamp_reed2", "naturalbiomes:alderswamp_reed", "naturalbiomes:alderswamp_yellowflower", "default:grass", "default:grass_2", "default:grass_3"}, 5},
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 6,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 100,
|
||||||
|
stand_start = 1,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 100,
|
||||||
|
walk_end = 200,
|
||||||
|
fly_start = 250, -- swim animation
|
||||||
|
fly_end = 350,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
fly_in = {"default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
floats = 0,
|
||||||
|
follow = {"fishing:bait:worm", "ethereal:worm", "animalworld:ant", "animalworld:termite", "animalworld:cockroach"},
|
||||||
|
view_range = 6,
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 15, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
local spawn_on = "default:sand"
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = "ethereal:prairie_dirt", "default:dirt_with_grass", "ethereal:green_dirt"
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:frog",
|
||||||
|
nodes = {"mcl_core:dirt_with_grass", "default:dirt_with_grass", "default:dirt_with_rainforest_litter", "naturalbiomes:alderswamp_litter", "naturalbiomes:heath_litter"},
|
||||||
|
neighbors = {"naturalbiomes:alderswamp_reed3", "naturalbiomes:alderswamp_reed2", "naturalbiomes:alderswamp_reed", "naturalbiomes:alderswamp_yellowflower", "group:grass", "group:normal_grass", "mcl_flowers:tallgrass", "mcl_flowers:tulip_red", "mcl_flowers:sunflower", "mcl_flowers:poppy", "mcl_core:birchtree", "mcl_trees:tree_birch", "mcl_trees:tree_oak", "mcl_trees:tree_dark_oak", "mcl_core:tree", "mcl_trees:leaves_oak", "mcl_trees:leaves_dark_oak", "mcl_core:leaves", "mcl_core:birchleaves", "mcl_core:darkleaves", "mcl_core:spruceleaves"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 1000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = -10,
|
||||||
|
max_height = 2,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:frog", S("Frog"), "afrog.png", 0)
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:frog", "animalworld:frog") -- compatibility
|
||||||
|
|
||||||
|
|
132
mods/animalworld/giraffe.lua
Normal file
132
mods/animalworld/giraffe.lua
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
local random = math.random
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:giraffe", {
|
||||||
|
type = "animal",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = false,
|
||||||
|
attack_monsters = true,
|
||||||
|
group_attack = true,
|
||||||
|
reach = 3,
|
||||||
|
damage = 18,
|
||||||
|
hp_min = 100,
|
||||||
|
hp_max = 160,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-1, -0.01, -1, 1, 2.0, 1},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Giraffe.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"texturegiraffe.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_giraffe",
|
||||||
|
attack = "animalworld_giraffe2",
|
||||||
|
distance = 13,
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
walk_velocity = 1.0,
|
||||||
|
run_velocity = 2,
|
||||||
|
walk_chance = 30,
|
||||||
|
runaway = false,
|
||||||
|
jump = false,
|
||||||
|
jump_height = 6,
|
||||||
|
stepheight = 1,
|
||||||
|
stay_near = {{"naturalbiomes:savanna_flowergrass", "naturalbiomes:savanna_grass", "naturalbiomes:savanna_grass2", "naturalbiomes:savanna_grass3", "naturalbiomes:savannagrass"}, 6},
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "mobs:leather", chance = 1, min = 0, max = 2},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
knock_back = false,
|
||||||
|
pathfinding = true,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 50,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
stand1_start = 100,
|
||||||
|
stand1_end = 200,
|
||||||
|
stand2_start = 0,
|
||||||
|
stand2_end = 100,
|
||||||
|
stand3_start = 0,
|
||||||
|
stand3_end = 100,
|
||||||
|
walk_start = 200,
|
||||||
|
walk_end = 300,
|
||||||
|
punch_start = 300,
|
||||||
|
punch_end = 400,
|
||||||
|
die_start = 300,
|
||||||
|
die_end = 400,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
follow = {"default:apple", "mcl_trees:leaves_oak", "mcl_trees:leaves_dark_oak", "mcl_core:leaves", "mcl_core:birchleaves", "mcl_core:darkleaves", "mcl_core:spruceleaves", "default:dry_dirt_with_dry_grass", "mcl_trees:leaves_oak", "mcl_trees:leaves_dark_oak", "farming:seed_wheat", "default:junglegrass", "farming:seed_oat", "naturalbiomes:savannagrass", "naturalbiomes:savannagrassmall", "naturalbiomes:savanna_flowergrass", "default:acacia_leaves", "naturalbiomes:acacia_leaves"},
|
||||||
|
view_range = 10,
|
||||||
|
replace_rate = 10,
|
||||||
|
replace_what = {"farming:soil", "farming:soil_wet"},
|
||||||
|
replace_with = "default:dirt",
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 0, 0, 15, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"mcl_core:podzol", "default:dirt_withforest_litter", "ethereal:green_dirt", "ethereal:grass_grove"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:giraffe",
|
||||||
|
nodes = {"naturalbiomes:savannalitter", "mcl_core:dirt_with_grass"},
|
||||||
|
neighbors = {"naturalbiomes:acacia_trunk", "mcl_core:acaciatree", "mcl_trees:tree_acacia"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 3,
|
||||||
|
min_height = 5,
|
||||||
|
max_height = 100,
|
||||||
|
day_toggle = true,
|
||||||
|
|
||||||
|
on_spawn = function(self, pos)
|
||||||
|
|
||||||
|
local nods = minetest.find_nodes_in_area_under_air(
|
||||||
|
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
|
||||||
|
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
|
||||||
|
{"naturalbiomes:savannalitter"})
|
||||||
|
|
||||||
|
if nods and #nods > 0 then
|
||||||
|
|
||||||
|
-- min herd of 3
|
||||||
|
local iter = math.min(#nods, 3)
|
||||||
|
|
||||||
|
-- print("--- boar at", minetest.pos_to_string(pos), iter)
|
||||||
|
|
||||||
|
for n = 1, iter do
|
||||||
|
|
||||||
|
local pos2 = nods[random(#nods)]
|
||||||
|
local kid = random(4) == 1 and true or nil
|
||||||
|
|
||||||
|
pos2.y = pos2.y + 2
|
||||||
|
|
||||||
|
if minetest.get_node(pos2).name == "air" then
|
||||||
|
|
||||||
|
mobs:add_mob(pos2, {
|
||||||
|
name = "animalworld:giraffe", child = kid})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:giraffe", ("Giraffe"), "agiraffe.png")
|
128
mods/animalworld/gnu.lua
Normal file
128
mods/animalworld/gnu.lua
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
local random = math.random
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:gnu", {
|
||||||
|
stepheight = 2,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
group_attack = true,
|
||||||
|
owner_loyal = true,
|
||||||
|
attack_npcs = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 2,
|
||||||
|
hp_min = 30,
|
||||||
|
hp_max = 60,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.6, -0.01, -0.6, 0.6, 0.95, 0.6},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Gnu.b3d",
|
||||||
|
textures = {
|
||||||
|
{"texturegnu.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_gnu",
|
||||||
|
|
||||||
|
},
|
||||||
|
walk_velocity = 1,
|
||||||
|
run_velocity = 4,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = false,
|
||||||
|
jump_height = 3,
|
||||||
|
pushable = true,
|
||||||
|
stay_near = {{"default:dry_grass_1", "mcl_flowers:tallgrass", "mcl_core:deadbush", "mcl_bamboo:bamboo", "default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4"}, 6},
|
||||||
|
follow = {"default:apple", "mcl_flowers:tallgrass", "mcl_core:deadbush", "mcl_bamboo:bamboo", "default:dry_dirt_with_dry_grass", "farming:seed_wheat", "default:junglegrass", "farming:seed_oat", "default:dry_grass_1", "default:dry_grass_2", "default:dry_grass_3", "default:grass_1", "default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5", "default:marram_grass_1", "default:marram_grass_2", "default:marram_grass_3", "default:coldsteppe_grass_1", "default:coldsteppe_grass_2", "default:coldsteppe_grass_3", "default:coldsteppe_grass_4", "default:coldsteppe_grass_5", "default:coldsteppe_grass_6", "naturalbiomes:savanna_grass1", "naturalbiomes:savanna_grass2", "naturalbiomes:savanna_grass3", "naturalbiomes:outback_grass1", "naturalbiomes:outback_grass2", "naturalbiomes:outback_grass3", "naturalbiomes:outback_grass4", "naturalbiomes:outback_grass5", "naturalbiomes:outback_grass6", "naturalbiomes:med_grass1", "naturalbiomes:med_grass2", "naturalbiomes:heath_grass1", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:alpine_grass1", "naturalbiomes:alpine_grass2", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:", "naturalbiomes:", "naturalbiomes:bushland_grass", "naturalbiomes:bushland_grass2", "naturalbiomes:bushland_grass3", "naturalbiomes:bushland_grass4", "naturalbiomes:bushland_grass5", "naturalbiomes:bushland_grass6", "naturalbiomes:bushland_grass7", "group:grass", "group:normal_grass"},
|
||||||
|
view_range = 10,
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "animalworld:gnucorpse", chance = 7, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 5,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 3,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 60,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 100,
|
||||||
|
walk_end = 200,
|
||||||
|
run_speed = 100,
|
||||||
|
run_start = 200,
|
||||||
|
run_end = 300,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 0, 15, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local spawn_on = {"default:dry_dirt_with_dry_grass"}
|
||||||
|
|
||||||
|
if minetest.get_mapgen_setting("mg_name") ~= "v6" then
|
||||||
|
spawn_on = {"default:dry_dirt_with_dry_grass"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"default:dry_dirt_with_dry_grass", "ethereal:prairie_dirt"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:gnu",
|
||||||
|
nodes = {"default:dry_dirt_with_dry_grass", "mcl_core:dirt_with_grass", "mcl_core:dirt_with_grass"},
|
||||||
|
neighbors = {"group:grass", "group:normal_grass", "mcl_trees:leaves_acacia", "mcl_core:acacialeaves"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 3,
|
||||||
|
min_height = 20,
|
||||||
|
max_height = 50,
|
||||||
|
day_toggle = true,
|
||||||
|
|
||||||
|
on_spawn = function(self, pos)
|
||||||
|
|
||||||
|
local nods = minetest.find_nodes_in_area_under_air(
|
||||||
|
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
|
||||||
|
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
|
||||||
|
{"default:dry_dirt_with_dry_grass"})
|
||||||
|
|
||||||
|
if nods and #nods > 0 then
|
||||||
|
|
||||||
|
-- min herd of 3
|
||||||
|
local iter = math.min(#nods, 3)
|
||||||
|
|
||||||
|
-- print("--- gnu at", minetest.pos_to_string(pos), iter)
|
||||||
|
|
||||||
|
for n = 1, iter do
|
||||||
|
|
||||||
|
local pos2 = nods[random(#nods)]
|
||||||
|
local kid = random(4) == 1 and true or nil
|
||||||
|
|
||||||
|
pos2.y = pos2.y + 2
|
||||||
|
|
||||||
|
if minetest.get_node(pos2).name == "air" then
|
||||||
|
|
||||||
|
mobs:add_mob(pos2, {
|
||||||
|
name = "animalworld:gnu", child = kid})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:gnu", ("Gnu"), "agnu.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:gnu", "animalworld:gnu") -- compatibility
|
||||||
|
|
86
mods/animalworld/goby.lua
Normal file
86
mods/animalworld/goby.lua
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:goby", {
|
||||||
|
stepheight = 0.0,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = false,
|
||||||
|
reach = 1,
|
||||||
|
damage = 0,
|
||||||
|
hp_min = 5,
|
||||||
|
hp_max = 5,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.2, 0.2},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Goby.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"texturegoby.png"},
|
||||||
|
},
|
||||||
|
sounds = {},
|
||||||
|
makes_footstep_sound = false,
|
||||||
|
walk_velocity = 0.5,
|
||||||
|
run_velocity = 1,
|
||||||
|
fly = true,
|
||||||
|
fly_in = "default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing", "mcl_core:water_source", "mcl_core:water_flowing",
|
||||||
|
fall_speed = 0,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = false,
|
||||||
|
stepheight = 0.0,
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:rawfish", chance = 1, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
air_damage = 1,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
stay_near = {{"marinara:sand_with_alage", "marinara:sand_with_seagrass", "mcl_ocean:bubble_coral", "mcl_ocean:tube_coral", "mcl_ocean:fire_coral", "mcl_ocean:brain_coral", "mcl_ocean:seagrass_gravel", "default:sand_with_kelp", "marinara:sand_with_kelp", "marinara:reed_root", "flowers:waterlily_waving", "naturalbiomes:waterlily", "default:clay", "marinara:softcoral_red", "marinara:softcoral_white", "marinara:softcoral_green", "marinara:softcoral_white", "marinara:softcoral_green", "default:coral_cyan", "default:coral_pink", "default:coral_green"}, 4},
|
||||||
|
animation = {
|
||||||
|
speed_normal = 200,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 100,
|
||||||
|
walk_end = 200,
|
||||||
|
fly_start = 100, -- swim animation
|
||||||
|
fly_end = 200,
|
||||||
|
die_start = 100,
|
||||||
|
die_end = 200,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
fly_in = {"default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
floats = 0,
|
||||||
|
follow = {
|
||||||
|
"ethereal:worm", "seaweed", "fishing:bait_worm",
|
||||||
|
"animalworld:ant", "animalworld:termite", "animalworld:fishfood"
|
||||||
|
},
|
||||||
|
view_range = 5,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 0, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:goby",
|
||||||
|
nodes = {"mcl_core:water_source", "default:water_source", "default:river_water_source"},
|
||||||
|
neighbors = {"default:coral_cyan", "default:coral_green", "default:coral_pink", "mcl_ocean:bubble_coral", "mcl_ocean:tube_coral", "mcl_ocean:fire_coral", "mcl_ocean:brain_coral", "mcl_ocean:seagrass_gravel"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 30,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 4,
|
||||||
|
min_height = -15,
|
||||||
|
max_height = 30,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:goby", S("Goby"), "agoby.png")
|
80
mods/animalworld/goldenmole.lua
Normal file
80
mods/animalworld/goldenmole.lua
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:goldenmole", {
|
||||||
|
type = "animal",
|
||||||
|
stepheight = 1,
|
||||||
|
passive = true,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_npcs = false,
|
||||||
|
group_attack = true,
|
||||||
|
reach = 1,
|
||||||
|
damage = 0,
|
||||||
|
hp_min = 35,
|
||||||
|
hp_max = 135,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.3, -0.01, -0.3, 0.3, 0.3, 0.3},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Goldenmole.b3d",
|
||||||
|
textures = {
|
||||||
|
{"texturegoldenmole.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_goldenmole",
|
||||||
|
},
|
||||||
|
walk_velocity = 1,
|
||||||
|
run_velocity = 3,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = false,
|
||||||
|
jump_height = 6,
|
||||||
|
stay_near = {{"livingdesert:date_palm_leaves", "mcl_core:deadbush", "mcl_core:cactus", "livingdesert:yucca", "default:dry_shrub", "livingdesert:figcactus_trunk", "livingdesert:coldsteppe_grass1", "livingdesert:cactus", "livingdesert:cactus3", "livingdesert:cactus2", "livingdesert:cactus4"}, 5},
|
||||||
|
pushable = true,
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 3},
|
||||||
|
|
||||||
|
},
|
||||||
|
water_damage = 5,
|
||||||
|
lava_damage = 5,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
animation = {
|
||||||
|
stand_start = 100,
|
||||||
|
stand_end = 300,
|
||||||
|
stand_speed = 100,
|
||||||
|
walk_start = 0,
|
||||||
|
walk_end = 100,
|
||||||
|
walk_speed = 300,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
follow = {"fishing:bait:worm", "bees:frame_full", "ethereal:worm", "animalworld:ant", "animalworld:termite", "animalworld:cockroach"},
|
||||||
|
view_range = 10,
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:goldenmole",
|
||||||
|
nodes = {"default:desert_sand", "mcl_core:sand", "mcl_core:redsand"},
|
||||||
|
neighbors = {"livingdesert:date_palm_leaves", "mcl_core:deadbush", "mcl_core:cactus", "livingdesert:yucca", "default:dry_shrub", "livingdesert:figcactus_trunk", "livingdesert:coldsteppe_grass1", "livingdesert:cactus", "livingdesert:cactus3", "livingdesert:cactus2", "livingdesert:cactus4", "default:cactus"},
|
||||||
|
min_light = 14,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 10,
|
||||||
|
max_height = 55,
|
||||||
|
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:goldenmole", S("Golden Mole"), "agoldenmole.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:goldenmole", "animalworld:goldenmole") -- compatibility
|
||||||
|
|
104
mods/animalworld/goose.lua
Normal file
104
mods/animalworld/goose.lua
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
local random = math.random
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:goose", {
|
||||||
|
stepheight = 6,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = false,
|
||||||
|
owner_loyal = true,
|
||||||
|
reach = 2,
|
||||||
|
damage = 1,
|
||||||
|
hp_min = 15,
|
||||||
|
hp_max = 30,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.3, -0.01, -0.3, 0.3, 0.5, 0.3},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Goose.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"texturegoose.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
attack = "animalworld_goose2",
|
||||||
|
random = "animalworld_goose",
|
||||||
|
damage = "animalworld_goose3",
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
walk_velocity = 1,
|
||||||
|
run_velocity = 3,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = true,
|
||||||
|
jump_height = 6,
|
||||||
|
stepheight = 1,
|
||||||
|
stay_near = {{"naturalbiomes:alderswamp_reed3", "naturalbiomes:alderswamp_reed2", "naturalbiomes:alderswamp_reed", "naturalbiomes:alderswamp_yellowflower", "naturalbiomes:waterlily"}, 5},
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:chicken_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "animalworld:chicken_feather", chance = 1, min = 1, max = 1},
|
||||||
|
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 60,
|
||||||
|
stand_speed = 30,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
stand1_start = 100,
|
||||||
|
stand1_end = 200,
|
||||||
|
stand2_start = 200,
|
||||||
|
stand2_end = 300,
|
||||||
|
walk_start = 300,
|
||||||
|
walk_end = 400,
|
||||||
|
fly_start = 450, -- swim animation
|
||||||
|
fly_end = 550,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
fly_in = {"default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
floats = 1,
|
||||||
|
follow = {
|
||||||
|
"default:dry_dirt_with_dry_grass", "mcl_flowers:tallgrass", "mcl_core:deadbush", "mcl_bamboo:bamboo", "farming:seed_wheat", "default:junglegrass", "farming:seed_oat", "naturalbiomes:savannagrass", "naturalbiomes:savannagrassmall", "naturalbiomes:alderswamp_reed", "naturalbiomes:alderswamp_reed2", "naturalbiomes:alderswamp_reed3", "farming:lettuce", "farming:cabbage", "ethereal:snowygrass", "default:dry_grass_1", "default:dry_grass_2", "default:dry_grass_3", "default:grass_1", "default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5", "default:marram_grass_1", "default:marram_grass_2", "default:marram_grass_3", "default:coldsteppe_grass_1", "default:coldsteppe_grass_2", "default:coldsteppe_grass_3", "default:coldsteppe_grass_4", "default:coldsteppe_grass_5", "default:coldsteppe_grass_6", "naturalbiomes:savanna_grass1", "naturalbiomes:savanna_grass2", "naturalbiomes:savanna_grass3", "naturalbiomes:outback_grass1", "naturalbiomes:outback_grass2", "naturalbiomes:outback_grass3", "naturalbiomes:outback_grass4", "naturalbiomes:outback_grass5", "naturalbiomes:outback_grass6", "naturalbiomes:med_grass1", "naturalbiomes:med_grass2", "naturalbiomes:heath_grass1", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:alpine_grass1", "naturalbiomes:alpine_grass2", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:", "naturalbiomes:", "naturalbiomes:bushland_grass", "naturalbiomes:bushland_grass2", "naturalbiomes:bushland_grass3", "naturalbiomes:bushland_grass4", "naturalbiomes:bushland_grass5", "naturalbiomes:bushland_grass6", "naturalbiomes:bushland_grass7", "group:grass", "group:normal_grass"
|
||||||
|
},
|
||||||
|
|
||||||
|
view_range = 5,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 15, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"mcl_core:podzol", "default:dirt_withforest_litter", "ethereal:grove_dirt"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:goose",
|
||||||
|
nodes = {"naturalbiomes:alderswamp_litter", "default:permafrost", "mcl_core:dirt_with_grass"},
|
||||||
|
neighbors = {"naturalbiomes:alderswamp_reed3", "naturalbiomes:alderswamp_reed2", "naturalbiomes:alderswamp_reed", "mcl_flowers:waterlily", "mcl_ocean:seagrass:sand", "mcl_core:reeds", "naturalbiomes:alderswamp_yellowflower", "group:grass", "group:normal_grass", "animalworld:animalworld_tundrashrub1", "animalworld:animalworld_tundrashrub2"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 1000, -- 15000
|
||||||
|
active_object_count = 4,
|
||||||
|
min_height = -1,
|
||||||
|
max_height = 3,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:goose", S("Goose"), "agoose.png")
|
||||||
|
|
182
mods/animalworld/hare.lua
Normal file
182
mods/animalworld/hare.lua
Normal file
|
@ -0,0 +1,182 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:hare", {
|
||||||
|
stepheight = 1,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
reach = 1,
|
||||||
|
hp_min = 15,
|
||||||
|
hp_max = 40,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.268, -0.01, -0.268, 0.268, 0.5, 0.268},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Hare.b3d",
|
||||||
|
drawtype = "front",
|
||||||
|
textures = {
|
||||||
|
{"texturehare.png"},
|
||||||
|
{"texturehare.png"},
|
||||||
|
{"texturehare.png"},
|
||||||
|
},
|
||||||
|
sounds = {},
|
||||||
|
makes_footstep_sound = false,
|
||||||
|
walk_velocity = 3,
|
||||||
|
run_velocity = 6,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = true,
|
||||||
|
jump_height = 6,
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:rabbit_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "animalworld:rabbit_hide", chance = 1, min = 0, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 100,
|
||||||
|
stand_start = 1,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 100,
|
||||||
|
walk_end = 200,
|
||||||
|
punch_start = 100,
|
||||||
|
punch_end = 200,
|
||||||
|
die_start = 100,
|
||||||
|
die_end = 200,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
follow = {"farming:carrot", "mcl_farming:beetroot_item", "mcl_farming:carrot_item", "farming_plus:carrot_item", "default:grass_1", "farming:carrot_7", "farming:carrot_8", "farming_plus:carrot", "farming:lettuce", "farming:cabbage", "ethereal:snowygrass", "default:dry_grass_1", "default:dry_grass_2", "default:dry_grass_3", "default:grass_1", "default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5", "default:marram_grass_1", "default:marram_grass_2", "default:marram_grass_3", "default:coldsteppe_grass_1", "default:coldsteppe_grass_2", "default:coldsteppe_grass_3", "default:coldsteppe_grass_4", "default:coldsteppe_grass_5", "default:coldsteppe_grass_6", "naturalbiomes:savanna_grass1", "naturalbiomes:savanna_grass2", "naturalbiomes:savanna_grass3", "naturalbiomes:outback_grass1", "naturalbiomes:outback_grass2", "naturalbiomes:outback_grass3", "naturalbiomes:outback_grass4", "naturalbiomes:outback_grass5", "naturalbiomes:outback_grass6", "naturalbiomes:med_grass1", "naturalbiomes:med_grass2", "naturalbiomes:heath_grass1", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:alpine_grass1", "naturalbiomes:alpine_grass2", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:", "naturalbiomes:", "naturalbiomes:bushland_grass", "naturalbiomes:bushland_grass2", "naturalbiomes:bushland_grass3", "naturalbiomes:bushland_grass4", "naturalbiomes:bushland_grass5", "naturalbiomes:bushland_grass6", "naturalbiomes:bushland_grass7", "group:grass", "group:normal_grass"},
|
||||||
|
view_range = 8,
|
||||||
|
replace_rate = 10,
|
||||||
|
replace_what = {"farming:carrot_7", "farming:carrot_8", "farming_plus:carrot", "farming:lettuce", "farming:cabbage", "ethereal:snowygrass", "flowers:geranium", "flowers:rose"},
|
||||||
|
replace_with = "air",
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, true, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 0, 5, 0, false, nil) then return end
|
||||||
|
|
||||||
|
-- Monty Python tribute
|
||||||
|
local item = clicker:get_wielded_item()
|
||||||
|
|
||||||
|
if item:get_name() == "mobs:lava_orb" then
|
||||||
|
|
||||||
|
if not mobs.is_creative(clicker:get_player_name()) then
|
||||||
|
item:take_item()
|
||||||
|
clicker:set_wielded_item(item)
|
||||||
|
end
|
||||||
|
|
||||||
|
self.object:set_properties({
|
||||||
|
textures = {"texturehare.png"},
|
||||||
|
})
|
||||||
|
|
||||||
|
self.type = "monster"
|
||||||
|
self.health = 20
|
||||||
|
self.passive = false
|
||||||
|
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
on_spawn = function(self)
|
||||||
|
|
||||||
|
local pos = self.object:get_pos() ; pos.y = pos.y - 1
|
||||||
|
|
||||||
|
-- white snowy bunny
|
||||||
|
if minetest.find_node_near(pos, 1,
|
||||||
|
{"default:snow", "default:snowblock", "default:dirt_with_snow"}) then
|
||||||
|
self.base_texture = {"texturehare.png"}
|
||||||
|
self.object:set_properties({textures = self.base_texture})
|
||||||
|
-- brown desert bunny
|
||||||
|
elseif minetest.find_node_near(pos, 1,
|
||||||
|
{"default:desert_sand", "default:desert_stone"}) then
|
||||||
|
self.base_texture = {"texturehare.png"}
|
||||||
|
self.object:set_properties({textures = self.base_texture})
|
||||||
|
-- grey stone bunny
|
||||||
|
elseif minetest.find_node_near(pos, 1,
|
||||||
|
{"default:stone", "default:gravel"}) then
|
||||||
|
self.base_texture = {"texturehare.png"}
|
||||||
|
self.object:set_properties({textures = self.base_texture})
|
||||||
|
end
|
||||||
|
|
||||||
|
return true -- run only once, false/nil runs every activation
|
||||||
|
end,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
damage = 5,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
local spawn_on = "default:dirt_with_grass"
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = "ethereal:prairie_dirt", "default:dirt_with_grass"
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:hare",
|
||||||
|
nodes = {"mcl_core:dirt_with_grass", "default:dirt_with_grass", "naturalbiomes:mediterran_litter", "naturalbiomes:heath_litter", "naturalbiomes:bushland_bushlandlitter"},
|
||||||
|
neighbors = {"naturalbiomes:heath_grass", "mcl_flowers:tallgrass", "mcl_flowers:tulip_red", "mcl_flowers:sunflower", "mcl_flowers:poppy", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:heatherflower", "naturalbiomes:heatherflower2", "naturalbiomes:heatherflower3", "group:grass", "group:normal_grass", "naturalbiomes:med_flower2", "naturalbiomes:med_grass1", "naturalbiomes:med_grass2", "naturalbiomes:med_flower3", "naturalbiomes:bushland_grass4", "naturalbiomes:bushland_grass5", "naturalbiomes:bushland_grass6"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 5,
|
||||||
|
max_height = 100,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:hare", S("Hare"), "ahare.png", 0)
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:hare", "animalworld:hare") -- compatibility
|
||||||
|
|
||||||
|
|
||||||
|
-- raw rabbit
|
||||||
|
minetest.register_craftitem(":animalworld:rabbit_raw", {
|
||||||
|
description = S("Raw Hare"),
|
||||||
|
inventory_image = "animalworld_rabbit_raw.png",
|
||||||
|
on_use = minetest.item_eat(3),
|
||||||
|
groups = {food_meat_raw = 1, food_rabbit_raw = 1, flammable = 2},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- cooked rabbit
|
||||||
|
minetest.register_craftitem(":animalworld:rabbit_cooked", {
|
||||||
|
description = S("Cooked Hare"),
|
||||||
|
inventory_image = "animalworld_rabbit_cooked.png",
|
||||||
|
on_use = minetest.item_eat(5),
|
||||||
|
groups = {food_meat = 1, food_rabbit = 1, flammable = 2},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "cooking",
|
||||||
|
output = "animalworld:rabbit_cooked",
|
||||||
|
recipe = "animalworld:rabbit_raw",
|
||||||
|
cooktime = 5,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- rabbit hide
|
||||||
|
minetest.register_craftitem(":animalworld:rabbit_hide", {
|
||||||
|
description = S("Hare Hide"),
|
||||||
|
inventory_image = "animalworld_rabbit_hide.png",
|
||||||
|
groups = {flammable = 2},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "fuel",
|
||||||
|
recipe = "animalworld:rabbit_hide",
|
||||||
|
burntime = 2,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "mobs:leather",
|
||||||
|
type = "shapeless",
|
||||||
|
recipe = {
|
||||||
|
"animalworld:rabbit_hide", "animalworld:rabbit_hide",
|
||||||
|
"animalworld:rabbit_hide", "animalworld:rabbit_hide"
|
||||||
|
}
|
||||||
|
})
|
93
mods/animalworld/hermitcrab.lua
Normal file
93
mods/animalworld/hermitcrab.lua
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:hermitcrab", {
|
||||||
|
stepheight = 3,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
group_attack = true,
|
||||||
|
owner_loyal = true,
|
||||||
|
attack_npcs = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 0,
|
||||||
|
hp_min = 60,
|
||||||
|
hp_max = 120,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.3, 0.2},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Hermitcrab.b3d",
|
||||||
|
textures = {
|
||||||
|
{"texturehermitcrab.png"},
|
||||||
|
{"texturehermitcrab2.png"},
|
||||||
|
{"texturehermitcrab3.png"},
|
||||||
|
{"texturehermitcrab4.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_crab",
|
||||||
|
attack = "animalworld_crab",
|
||||||
|
random = "animalworld_crab",
|
||||||
|
},
|
||||||
|
walk_velocity = 0.4,
|
||||||
|
run_velocity = 0.6,
|
||||||
|
runaway = true,
|
||||||
|
stay_near = {{"naturalbiomes:palmbeach_grass1", "naturalbiomes:palmbeach_grass2", "naturalbiomes:palm_trunk", "naturalbiomes:beach_bush_leaves"}, 5},
|
||||||
|
jump = false,
|
||||||
|
jump_height = 3,
|
||||||
|
floats = 0,
|
||||||
|
pushable = true,
|
||||||
|
follow = {"default:apple", "mcl_flowers:tallgrass", "mcl_mobitems:chicken", "mcl_fishing:pufferfish_raw", "mcl_mobitems:rotten_flesh", "mcl_mobitems:mutton", "mcl_mobitems:beef", "mcl_mobitems:porkchop", "mcl_mobitems:rabbit", "mcl_core:deadbush", "mcl_bamboo:bamboo", "default:dry_dirt_with_dry_grass", "farming:seed_wheat", "default:junglegrass", "farming:seed_oat", "default:kelp", "seaweed", "xocean:kelp",
|
||||||
|
"default:grass", "farming:cucumber", "farming:cabbage", "xocean:seagrass", "farming:lettuce", "default:junglegrass", "animalworld:rawfish", "mobs_fish:tropical", "mobs:clownfish_raw",
|
||||||
|
"mobs:bluefish_raw", "fishing:bait_worm", "fishing:clownfish_raw", "fishing:bluewhite_raw", "fishing:exoticfish_raw", "fishing:fish_raw", "fishing:carp_raw", "fishing:perch_raw", "water_life:meat_raw", "fishing:shark_raw", "fishing:pike_raw", "naturalbiomes:coconut", "naturalbiomes:banana"},
|
||||||
|
view_range = 5,
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:raw_athropod", chance = 1, min = 0, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 5,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 3,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 50,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
stand1_start = 100,
|
||||||
|
stand1_end = 200,
|
||||||
|
stand2_start = 300,
|
||||||
|
stand2_end = 400,
|
||||||
|
walk_start = 200,
|
||||||
|
walk_end = 300,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 35, 35, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:hermitcrab",
|
||||||
|
nodes = {"naturalbiomes:palmbeach_sand", "mcl_core:sand"},
|
||||||
|
neighbors = {"naturalbiomes:palmbeach_grass1", "naturalbiomes:palmbeach_grass2", "naturalbiomes:palmbeach_grass3", "mcl_core:deadbush", "mcl_core:cactus", "mcl_core:jungletree", "mcl_core:jungleleaves", "mcl_trees:leaves_jungle", "mcl_trees:leaves_mangrove"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 30,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 4,
|
||||||
|
min_height = 2,
|
||||||
|
max_height = 6,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:hermitcrab", S("Hermit Crab"), "ahermitcrab.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:hermitcrab", "animalworld:hermitcrab") -- compatibility
|
||||||
|
|
99
mods/animalworld/hippo.lua
Normal file
99
mods/animalworld/hippo.lua
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:hippo", {
|
||||||
|
stepheight = 2,
|
||||||
|
type = "monster",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = true,
|
||||||
|
reach = 3,
|
||||||
|
damage = 12,
|
||||||
|
hp_min = 65,
|
||||||
|
hp_max = 100,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.8, -0.01, -0.8, 0.8, 1.2, 0.8},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "HippoNEW.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"texturehippoNEW.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_hippo",
|
||||||
|
attack = "animalworld_hippo",
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
walk_velocity = 1,
|
||||||
|
run_velocity = 2,
|
||||||
|
runaway = false,
|
||||||
|
jump = true,
|
||||||
|
jump_height = 0.5,
|
||||||
|
stepheight = 2,
|
||||||
|
knock_back = false,
|
||||||
|
stay_near = {{"default:dry_grass_1", "default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4", "mcl_core:dirt_with_grass", "mcl_core:acaciatree", "mcl_trees:tree_acacia"}, 6},
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "animalworld:hippocorpse", chance = 7, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 3,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 50,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
stand_start = 100,
|
||||||
|
stand_end = 200,
|
||||||
|
walk_start = 300,
|
||||||
|
walk_end = 400,
|
||||||
|
fly_start = 300, -- swim animation
|
||||||
|
fly_end = 4000,
|
||||||
|
punch_speed = 100,
|
||||||
|
punch_start = 200,
|
||||||
|
punch_end = 300,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
fly_in = {"default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
floats = 0,
|
||||||
|
follow = {
|
||||||
|
"ethereal:banana_single", "mcl_farming:beetroot_item", "mcl_farming:carrot_item", "mcl_farming:melon_item", "mcl_farming:potato_item", "mcl_farming:pumpkin_item", "mcl_farming:wheat_item", "mcl_farming:sweet_berry", "farming:corn_cob", "farming:cabbage",
|
||||||
|
"default:apple", "water_life:meat_raw", "xocean:fish_edible", "ethereal:fish_raw", "ethereal:banana", "farming:cabbage", "farming:lettuce", "farming:melon_slice", "group:grass", "group:normal_grass"
|
||||||
|
},
|
||||||
|
|
||||||
|
view_range = 6,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 0, 0, 25, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"default:dry_dirt_with_dry_grass"}, {"default:dirt_with_rainforest_litter"}, {"ethereal:grove_dirt"}, {"ethereal:prairie_dirt"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:hippo",
|
||||||
|
nodes = {"default:dry_dirt_with_dry_grass", "mcl_core:dirt_with_grass"},
|
||||||
|
neighbors = {"group:grass", "group:normal_grass", "mcl_trees:leaves_acacia", "mcl_core:acacialeaves", "mcl_core:acaciatree", "mcl_trees:tree_acacia"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 0,
|
||||||
|
max_height = 5,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:hippo", S("Hippo"), "ahippo.png")
|
81
mods/animalworld/hunger.lua
Normal file
81
mods/animalworld/hunger.lua
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
hunger_ng.add_hunger_data('animalworld:egg', {
|
||||||
|
satiates = 1.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:chicken_egg_fried', {
|
||||||
|
satiates = 2.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:chicken_raw', {
|
||||||
|
satiates = 1.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:chicken_cooked', {
|
||||||
|
satiates = 3.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:pork_raw', {
|
||||||
|
satiates = 1.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:pork_cooked', {
|
||||||
|
satiates = 4.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:rawfish', {
|
||||||
|
satiates = 1.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:cookedfish', {
|
||||||
|
satiates = 2.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:rabbit_raw', {
|
||||||
|
satiates = 1.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:rabbit_cooked', {
|
||||||
|
satiates = 3.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:rat_cooked', {
|
||||||
|
satiates = 2.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:raw_athropod', {
|
||||||
|
satiates = 1.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:cooked_athropod', {
|
||||||
|
satiates = 2.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:rawmollusk', {
|
||||||
|
satiates = 1.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:cookedmollusk', {
|
||||||
|
satiates = 2.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:butter', {
|
||||||
|
satiates = 1.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:bucket_milk', {
|
||||||
|
satiates = 1.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:cheese', {
|
||||||
|
satiates = 2.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:anteggs_raw', {
|
||||||
|
satiates = 1.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:anteggs_cooked', {
|
||||||
|
satiates = 2.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:termitequeen', {
|
||||||
|
satiates = 1.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:escargots', {
|
||||||
|
satiates = 5.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:locust_roasted', {
|
||||||
|
satiates = 1.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:bugice', {
|
||||||
|
satiates = 1.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:whalemeat_raw', {
|
||||||
|
satiates = 5.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:whalemeat_cooked', {
|
||||||
|
satiates = 15.0,
|
||||||
|
})
|
||||||
|
hunger_ng.add_hunger_data('animalworld:roastroach', {
|
||||||
|
satiates = 1.0,
|
||||||
|
})
|
120
mods/animalworld/hyena.lua
Normal file
120
mods/animalworld/hyena.lua
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
local random = math.random
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:hyena", {
|
||||||
|
stepheight = 2,
|
||||||
|
type = "monster",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = true,
|
||||||
|
reach = 2,
|
||||||
|
damage = 16,
|
||||||
|
hp_min = 35,
|
||||||
|
hp_max = 65,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.5, -0.01, -0.5, 0.5, 0.95, 0.5},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Hyena.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"texturehyena.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_hyena",
|
||||||
|
attack = "animalworld_hyena",
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
walk_velocity = 1,
|
||||||
|
run_velocity = 3,
|
||||||
|
runaway = false,
|
||||||
|
jump = true,
|
||||||
|
jump_height = 6,
|
||||||
|
stepheight = 2,
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "animalworld:hyenacorpse", chance = 7, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 4,
|
||||||
|
stay_near = {{"naturalbiomes:savanna_flowergrass", "mcl_trees:leaves_acacia", "mcl_core:acacialeaves", "naturalbiomes:savanna_grass", "naturalbiomes:savanna_grass2", "naturalbiomes:savanna_grass3", "naturalbiomes:savannagrass"}, 6},
|
||||||
|
animation = {
|
||||||
|
speed_normal = 75,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 150,
|
||||||
|
walk_end = 250,
|
||||||
|
punch_start = 250,
|
||||||
|
punch_end = 350,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
follow = {
|
||||||
|
"ethereal:fish_raw", "mcl_mobitems:chicken", "mcl_fishing:pufferfish_raw", "mcl_mobitems:rotten_flesh", "mcl_mobitems:mutton", "mcl_mobitems:beef", "mcl_mobitems:porkchop", "mcl_mobitems:rabbit", "animalworld:rawfish", "mobs_fish:tropical",
|
||||||
|
"mobs:meat_raw", "animalworld:rabbit_raw", "animalworld:pork_raw", "water_life:meat_raw", "xocean:fish_edible", "animalworld:chicken_raw", "mobs:meatblock_raw", "animalworld:chicken_raw", "livingfloatlands:ornithischiaraw", "livingfloatlands:largemammalraw", "livingfloatlands:theropodraw", "livingfloatlands:sauropodraw", "animalworld:raw_athropod", "animalworld:whalemeat_raw", "animalworld:rabbit_raw", "nativevillages:chicken_raw", "mobs:meat_raw", "animalworld:pork_raw", "people:mutton:raw"
|
||||||
|
},
|
||||||
|
view_range = 10,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 0, 15, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"default:dry_dirt_with_dry_grass"}, {"ethereal:dry_dirt"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:hyena",
|
||||||
|
nodes = {"default:dry_dirt_with_dry_grass", "naturalbiomes:savannalitter", "mcl_core:dirt_with_grass"},
|
||||||
|
neighbors = {"group:grass", "group:normal_grass", "naturalbiomes:savanna_grass2", "naturalbiomes:savanna_grass3", "mcl_trees:leaves_acacia", "mcl_core:acacialeaves", "mcl_core:acaciatree", "mcl_trees:tree_acacia"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 3,
|
||||||
|
min_height = 20,
|
||||||
|
max_height = 60,
|
||||||
|
|
||||||
|
on_spawn = function(self, pos)
|
||||||
|
|
||||||
|
local nods = minetest.find_nodes_in_area_under_air(
|
||||||
|
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
|
||||||
|
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
|
||||||
|
{"default:dry_dirt_with_dry_grass", "naturalbiomes:savannalitter"})
|
||||||
|
|
||||||
|
if nods and #nods > 0 then
|
||||||
|
|
||||||
|
-- min herd of 3
|
||||||
|
local iter = math.min(#nods, 3)
|
||||||
|
|
||||||
|
-- print("--- hyena at", minetest.pos_to_string(pos), iter)
|
||||||
|
|
||||||
|
for n = 1, iter do
|
||||||
|
|
||||||
|
local pos2 = nods[random(#nods)]
|
||||||
|
local kid = random(4) == 1 and true or nil
|
||||||
|
|
||||||
|
pos2.y = pos2.y + 2
|
||||||
|
|
||||||
|
if minetest.get_node(pos2).name == "air" then
|
||||||
|
|
||||||
|
mobs:add_mob(pos2, {
|
||||||
|
name = "animalworld:hyena", child = kid})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:hyena", S("Hyena"), "ahyena.png")
|
126
mods/animalworld/ibex.lua
Normal file
126
mods/animalworld/ibex.lua
Normal file
|
@ -0,0 +1,126 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
local random = math.random
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:ibex", {
|
||||||
|
type = "animal",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = false,
|
||||||
|
attack_npcs = false,
|
||||||
|
group_attack = true,
|
||||||
|
reach = 3,
|
||||||
|
damage = 9,
|
||||||
|
hp_min = 45,
|
||||||
|
hp_max = 60,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.4, -0.01, -0.4, 0.4, 0.5, 0.4},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Ibex.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"textureibex.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_ibex",
|
||||||
|
damage = "animalworld_ibex",
|
||||||
|
distance = 13,
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
walk_velocity = 1.5,
|
||||||
|
run_velocity = 3,
|
||||||
|
walk_chance = 20,
|
||||||
|
runaway = false,
|
||||||
|
jump = true,
|
||||||
|
jump_height = 6,
|
||||||
|
stepheight = 3,
|
||||||
|
stay_near = {{"naturalbiomes:alpine_grass1", "naturalbiomes:alpine_grass2", "naturalbiomes:alpine_grass3", "naturalbiomes:alpine_dandelion", "naturalbiomes:alpine_edelweiss", "naturalbiomes:med_flower2", "naturalbiomes:med_grass1", "naturalbiomes:med_grass2", "naturalbiomes:med_flower3"}, 6},
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 4,
|
||||||
|
pathfinding = true,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 50,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
stand1_start = 100,
|
||||||
|
stand1_end = 200,
|
||||||
|
walk_start = 200,
|
||||||
|
walk_end = 300,
|
||||||
|
punch_start = 300,
|
||||||
|
punch_end = 400,
|
||||||
|
die_start = 300,
|
||||||
|
die_end = 400,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
follow = {"default:apple", "mcl_flowers:tallgrass", "mcl_core:deadbush", "mcl_bamboo:bamboo", "default:dry_dirt_with_dry_grass", "farming:seed_wheat", "default:junglegrass", "farming:seed_oat", "naturalbiomes:savannagrass", "naturalbiomes:savannagrassmall", "naturalbiomes:savanna_flowergrass", "naturalbiomes:alpine_grass1", "naturalbiomes:alpine_grass2", "naturalbiomes:alpine_grass3", "naturalbiomes:alpine_dandelion", "naturalbiomes:med_flower1", "naturalbiomes:med_flower3", "naturalbiomes:med_flower2", "naturalbiomes:med_grass1", "naturalbiomes:med_grass2"},
|
||||||
|
view_range = 10,
|
||||||
|
replace_rate = 10,
|
||||||
|
replace_what = {"farming:soil", "farming:soil_wet"},
|
||||||
|
replace_with = "default:dirt",
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 5, 0, 25, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"mcl_core:podzol", "default:dirt_withforest_litter", "ethereal:green_dirt", "ethereal:grass_grove"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:ibex",
|
||||||
|
nodes = {"naturalbiomes:alpine_litter", "naturalbiomes:mediterran_litter", "mcl_core:stone", "mcl_core:granite", "mcl_core:dirt_with_grass"},
|
||||||
|
neighbors = {"naturalbiomes:med_grass1", "mcl_farming:sweet_berry_bush_3", "mcl_core:sprucetree", "mcl_trees:tree_spruce", "mcl_trees:leaves_spruce", "mcl_core:tree", "mcl_trees:leaves_oak", "mcl_trees:leaves_dark_oak", "mcl_core:leaves", "mcl_core:birchleaves", "mcl_core:darkleaves", "mcl_core:spruceleaves", "naturalbiomes:med_grass2", "naturalbiomes:med_grass3", "naturalbiomes:med_grass4", "naturalbiomes:med_flower1", "naturalbiomes:med_flower3", "naturalbiomes:alpine_grass1", "naturalbiomes:alpine_grass2", "naturalbiomes:alpine_grass3"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 3,
|
||||||
|
min_height = 30,
|
||||||
|
max_height = 31000,
|
||||||
|
day_toggle = true,
|
||||||
|
|
||||||
|
on_spawn = function(self, pos)
|
||||||
|
|
||||||
|
local nods = minetest.find_nodes_in_area_under_air(
|
||||||
|
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
|
||||||
|
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
|
||||||
|
{"naturalbiomes:alpine_litter", "naturalbiomes:mediterran_litter"})
|
||||||
|
|
||||||
|
if nods and #nods > 0 then
|
||||||
|
|
||||||
|
-- min herd of 3
|
||||||
|
local iter = math.min(#nods, 3)
|
||||||
|
|
||||||
|
-- print("--- ibex at", minetest.pos_to_string(pos), iter)
|
||||||
|
|
||||||
|
for n = 1, iter do
|
||||||
|
|
||||||
|
local pos2 = nods[random(#nods)]
|
||||||
|
local kid = random(4) == 1 and true or nil
|
||||||
|
|
||||||
|
pos2.y = pos2.y + 2
|
||||||
|
|
||||||
|
if minetest.get_node(pos2).name == "air" then
|
||||||
|
|
||||||
|
mobs:add_mob(pos2, {
|
||||||
|
name = "animalworld:ibex", child = kid})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:ibex", S("Ibex"), "aibex.png")
|
108
mods/animalworld/iguana.lua
Normal file
108
mods/animalworld/iguana.lua
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:iguana", {
|
||||||
|
stepheight = 2,
|
||||||
|
type = "animal",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
group_attack = true,
|
||||||
|
owner_loyal = true,
|
||||||
|
attack_npcs = true,
|
||||||
|
reach = 2,
|
||||||
|
damage = 2,
|
||||||
|
hp_min = 15,
|
||||||
|
hp_max = 25,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.5, -0.01, -0.5, 0.5, 0.95, 0.5},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Iguana.b3d",
|
||||||
|
textures = {
|
||||||
|
{"textureiguana.png"},
|
||||||
|
{"textureiguana2.png"},
|
||||||
|
{"textureiguana3.png"},
|
||||||
|
{"textureiguana4.png"},
|
||||||
|
{"textureiguana5.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {
|
||||||
|
},
|
||||||
|
walk_velocity = 1,
|
||||||
|
run_velocity = 2,
|
||||||
|
jump = false,
|
||||||
|
pushable = true,
|
||||||
|
follow = {"ethereal:banana_single", "mcl_farming:beetroot_item", "mcl_farming:carrot_item", "mcl_farming:melon_item", "mcl_farming:potato_item", "mcl_farming:pumpkin_item", "mcl_farming:wheat_item", "mcl_farming:sweet_berry", "farming:corn_cob", "farming:cabbage",
|
||||||
|
"default:apple", "farming:cabbage", "farming:carrot", "farming:cucumber", "farming:grapes", "farming:pineapple", "ethereal:orange", "ethereal:coconut", "ethereal:coconut_slice", "livingdesert:date_palm_fruits", "livingdesert:figcactus_fruit", "farming:melon_8", "farming:pumpkin_8", "ethereal:strawberry", "farming:blackberry", "naturalbiomes:blackberry", "naturalbiomes:cowberry", "naturalbiomes:banana", "naturalbiomes:banana_bunch", "farming:blueberries", "ethereal:orange", "livingdesert:figcactus_fruit", "livingfloatlands:paleojungle_clubmoss_fruit", "ethereal:banana", "livingdesert:date_palm_fruits", "farming:melon_slice", "naturalbiomes:wildrose", "naturalbiomes:banana"},
|
||||||
|
view_range = 10,
|
||||||
|
replace_rate = 10,
|
||||||
|
replace_what = {"farming:soil", "farming:soil_wet"},
|
||||||
|
replace_with = "default:dirt",
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "mobs:leather", chance = 1, min = 0, max = 2},
|
||||||
|
},
|
||||||
|
fly_in = {"default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
floats = 0,
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 5,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 3,
|
||||||
|
stay_near = {{"default:jungletree", "mcl_core:jungletree", "mcl_core:jungleleaves", "mcl_trees:leaves_jungle", "mcl_trees:leaves_mangrove", "default:junglegrass", "naturalbiomes:bambooforest_groundgrass", "livingjungle:grass2", "livingjungle::grass1", "livingjungle:alocasia", "livingjungle:flamingoflower"}, 5},
|
||||||
|
animation = {
|
||||||
|
speed_normal = 80,
|
||||||
|
stand_speed = 30,
|
||||||
|
stand1_speed = 30,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
stand1_start = 100,
|
||||||
|
stand1_end = 200,
|
||||||
|
walk_start = 220,
|
||||||
|
walk_end = 320,
|
||||||
|
punch_start = 320,
|
||||||
|
punch_end = 420,
|
||||||
|
fly_start = 440,
|
||||||
|
fly_end = 540,
|
||||||
|
die_start = 300,
|
||||||
|
die_end = 400,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 15, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local spawn_on = {"mcl_core:dirt_with_grass", "default:dirt_with_coniferous_litter"}
|
||||||
|
|
||||||
|
if minetest.get_mapgen_setting("mg_name") ~= "v6" then
|
||||||
|
spawn_on = {"mcl_core:dirt_with_grass", "default:dirt_with_dry_grass", "default:dirt_with_coniferous_litter"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"ethereal:mushroom_dirt", "ethereal:bamboo_dirt", "ethereal:green_dirt", "ethereal:mushroom_dirt", "default:dirt_with_coniferous_litter", "default:dirt_gray"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:iguana",
|
||||||
|
nodes = {"livingjungle:jungleground", "livingjungle:leafyjungleground", "mcl_core:dirt_with_gras"},
|
||||||
|
neighbors = {"default:jungletree", "livingjungle:alocasia", "livingjungle:flamingoflower", "livingjungle:samauma_trunk", "mcl_core:jungletree", "mcl_core:jungleleaves", "mcl_trees:leaves_jungle", "mcl_trees:leaves_mangrove"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 1,
|
||||||
|
max_height = 31000,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:iguana", S("Iguana"), "aiguana.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:iguana", "animalworld:iguana") -- compatibility
|
||||||
|
|
||||||
|
|
97
mods/animalworld/indianrhino.lua
Normal file
97
mods/animalworld/indianrhino.lua
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:indianrhino", {
|
||||||
|
type = "animal",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = false,
|
||||||
|
attack_monsters = true,
|
||||||
|
group_attack = true,
|
||||||
|
reach = 3,
|
||||||
|
damage = 14,
|
||||||
|
hp_min = 90,
|
||||||
|
hp_max = 140,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.8, -0.01, -0.8, 0.8, 1.5, 0.8},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Indianrhino.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"textureindianrhino.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_rhino",
|
||||||
|
attack = "animalworld_rhino2",
|
||||||
|
distance = 13,
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
walk_velocity = 1.5,
|
||||||
|
run_velocity = 3,
|
||||||
|
walk_chance = 20,
|
||||||
|
runaway = false,
|
||||||
|
knock_back = false,
|
||||||
|
jump = true,
|
||||||
|
jump_height = 6,
|
||||||
|
stepheight = 2,
|
||||||
|
stay_near = {{"naturalbiomes:savanna_flowergrass", "naturalbiomes:savanna_grass", "naturalbiomes:savanna_grass2", "naturalbiomes:savanna_grass3", "naturalbiomes:savannagrass"}, 6},
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "mobs:leather", chance = 1, min = 0, max = 2},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 3,
|
||||||
|
pathfinding = true,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 70,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
stand1_start = 100,
|
||||||
|
stand1_end = 200,
|
||||||
|
walk_start = 200,
|
||||||
|
walk_end = 300,
|
||||||
|
punch_start = 300,
|
||||||
|
punch_end = 400,
|
||||||
|
die_start = 300,
|
||||||
|
die_end = 400,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
follow = {"default:apple", "mcl_flowers:tallgrass", "mcl_core:deadbush", "mcl_bamboo:bamboo", "default:dry_dirt_with_dry_grass", "farming:seed_wheat", "default:junglegrass", "farming:seed_oat", "naturalbiomes:savannagrass", "naturalbiomes:savannagrassmall", "naturalbiomes:savanna_flowergrass", "default:dry_grass_1", "default:dry_grass_2", "default:dry_grass_3", "default:grass_1", "default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5", "default:marram_grass_1", "default:marram_grass_2", "default:marram_grass_3", "default:coldsteppe_grass_1", "default:coldsteppe_grass_2", "default:coldsteppe_grass_3", "default:coldsteppe_grass_4", "default:coldsteppe_grass_5", "default:coldsteppe_grass_6", "naturalbiomes:savanna_grass1", "naturalbiomes:savanna_grass2", "naturalbiomes:savanna_grass3", "naturalbiomes:outback_grass1", "naturalbiomes:outback_grass2", "naturalbiomes:outback_grass3", "naturalbiomes:outback_grass4", "naturalbiomes:outback_grass5", "naturalbiomes:outback_grass6", "naturalbiomes:med_grass1", "naturalbiomes:med_grass2", "naturalbiomes:heath_grass1", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:alpine_grass1", "naturalbiomes:alpine_grass2", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:", "naturalbiomes:", "naturalbiomes:bushland_grass", "naturalbiomes:bushland_grass2", "naturalbiomes:bushland_grass3", "naturalbiomes:bushland_grass4", "naturalbiomes:bushland_grass5", "naturalbiomes:bushland_grass6", "naturalbiomes:bushland_grass7", "group:grass", "group:normal_grass"},
|
||||||
|
view_range = 10,
|
||||||
|
replace_rate = 10,
|
||||||
|
replace_what = {"farming:soil", "farming:soil_wet"},
|
||||||
|
replace_with = "default:dirt",
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 0, 0, 25, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"mcl_core:podzol", "default:dirt_withforest_litter", "ethereal:green_dirt", "ethereal:grass_grove"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:indianrhino",
|
||||||
|
nodes = {"naturalbiomes:savannalitter", "mcl_core:dirt_with_grass"},
|
||||||
|
neighbors = {"naturalbiomes:savanna_grass1", "naturalbiomes:savanna_grass2", "naturalbiomes:savanna_grass3", "mcl_core:acaciatree", "mcl_trees:tree_acacia", "mcl_trees:leaves_acacia", "mcl_core:acacialeaves"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 5,
|
||||||
|
max_height = 50,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:indianrhino", S("Indian Rhino"), "aindianrhino.png")
|
146
mods/animalworld/init.lua
Normal file
146
mods/animalworld/init.lua
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
local modname = minetest.get_current_modname()
|
||||||
|
|
||||||
|
local path = minetest.get_modpath(modname) .. "/"
|
||||||
|
|
||||||
|
local S = minetest.get_translator and minetest.get_translator(modname) or
|
||||||
|
dofile(path .. "intllib.lua")
|
||||||
|
|
||||||
|
animalworld = {}
|
||||||
|
|
||||||
|
-- Check for custom mob spawn file
|
||||||
|
local input = io.open(path .. "spawn.lua", "r")
|
||||||
|
if input then
|
||||||
|
mobs.custom_spawn_animalworld = true
|
||||||
|
input:close()
|
||||||
|
input = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Sounds
|
||||||
|
animalworld.sounds = {}
|
||||||
|
if minetest.get_modpath("default") then animalworld.sounds = default end
|
||||||
|
if minetest.get_modpath("mcl_sounds") then animalworld.sounds = mcl_sounds end
|
||||||
|
|
||||||
|
|
||||||
|
-- Animals
|
||||||
|
dofile(path .. "seal.lua") --
|
||||||
|
dofile(path .. "hare.lua") --
|
||||||
|
dofile(path .. "moose.lua") --
|
||||||
|
dofile(path .. "crocodile.lua") --
|
||||||
|
dofile(path .. "manatee.lua") --
|
||||||
|
dofile(path .. "tiger.lua") --
|
||||||
|
dofile(path .. "camel.lua") --
|
||||||
|
dofile(path .. "elephant.lua") --
|
||||||
|
dofile(path .. "carp.lua") --
|
||||||
|
dofile(path .. "trout.lua") --
|
||||||
|
dofile(path .. "blackbird.lua") --
|
||||||
|
dofile(path .. "bear.lua") --
|
||||||
|
dofile(path .. "boar.lua") --
|
||||||
|
dofile(path .. "kangaroo.lua") --
|
||||||
|
dofile(path .. "tortoise.lua") --
|
||||||
|
dofile(path .. "hippo.lua") --
|
||||||
|
dofile(path .. "shark.lua") --
|
||||||
|
dofile(path .. "nandu.lua") --
|
||||||
|
dofile(path .. "yak.lua") --
|
||||||
|
dofile(path .. "spider.lua") --
|
||||||
|
dofile(path .. "spidermale.lua") --
|
||||||
|
dofile(path .. "crab.lua") --
|
||||||
|
dofile(path .. "reindeer.lua") --
|
||||||
|
dofile(path .. "volverine.lua") --
|
||||||
|
dofile(path .. "owl.lua") --
|
||||||
|
dofile(path .. "frog.lua") --
|
||||||
|
dofile(path .. "monitor.lua") --
|
||||||
|
dofile(path .. "gnu.lua") --
|
||||||
|
dofile(path .. "puffin.lua") --
|
||||||
|
dofile(path .. "anteater.lua") --
|
||||||
|
dofile(path .. "hyena.lua") --
|
||||||
|
dofile(path .. "rat.lua") --
|
||||||
|
dofile(path .. "vulture.lua") --
|
||||||
|
dofile(path .. "toucan.lua") --
|
||||||
|
dofile(path .. "snowleopard.lua") --
|
||||||
|
dofile(path .. "lobster.lua") --
|
||||||
|
dofile(path .. "squid.lua") --
|
||||||
|
dofile(path .. "kobra.lua") --
|
||||||
|
dofile(path .. "bat.lua") --
|
||||||
|
dofile(path .. "ant.lua") --
|
||||||
|
dofile(path .. "termite.lua") --
|
||||||
|
dofile(path .. "wasp.lua") --
|
||||||
|
dofile(path .. "snail.lua") --
|
||||||
|
dofile(path .. "locust.lua") --
|
||||||
|
dofile(path .. "dragonfly.lua") --
|
||||||
|
dofile(path .. "nymph.lua") --
|
||||||
|
dofile(path .. "divingbeetle.lua") --
|
||||||
|
dofile(path .. "olm.lua") --
|
||||||
|
dofile(path .. "goldenmole.lua") --
|
||||||
|
dofile(path .. "scorpion.lua") --
|
||||||
|
dofile(path .. "goby.lua") --
|
||||||
|
dofile(path .. "treelobster.lua") --
|
||||||
|
dofile(path .. "notoptera.lua") --
|
||||||
|
dofile(path .. "seahorse.lua") --
|
||||||
|
dofile(path .. "polarbear.lua") --
|
||||||
|
dofile(path .. "muskox.lua") --
|
||||||
|
dofile(path .. "fox.lua") --
|
||||||
|
dofile(path .. "beluga.lua") --
|
||||||
|
dofile(path .. "leopardseal.lua") --
|
||||||
|
dofile(path .. "stellerseagle.lua") --
|
||||||
|
dofile(path .. "otter.lua") --
|
||||||
|
dofile(path .. "monkey.lua") --
|
||||||
|
dofile(path .. "zebra.lua") --
|
||||||
|
dofile(path .. "indianrhino.lua") --
|
||||||
|
dofile(path .. "giraffe.lua") --
|
||||||
|
dofile(path .. "koala.lua") --
|
||||||
|
dofile(path .. "clamydosaurus.lua") --
|
||||||
|
dofile(path .. "echidna.lua") --
|
||||||
|
dofile(path .. "mosquito.lua") --
|
||||||
|
dofile(path .. "beaver.lua") --
|
||||||
|
dofile(path .. "goose.lua") --
|
||||||
|
dofile(path .. "ibex.lua") --
|
||||||
|
dofile(path .. "marmot.lua") --
|
||||||
|
dofile(path .. "wolf.lua") --
|
||||||
|
dofile(path .. "panda.lua") --
|
||||||
|
dofile(path .. "hermitcrab.lua") --
|
||||||
|
dofile(path .. "cockatoo.lua") --
|
||||||
|
dofile(path .. "parrot.lua") --
|
||||||
|
dofile(path .. "parrotflying.lua") --
|
||||||
|
dofile(path .. "stingray.lua") --
|
||||||
|
dofile(path .. "blackgrouse.lua") --
|
||||||
|
dofile(path .. "viper.lua") --
|
||||||
|
dofile(path .. "wildboar.lua") --
|
||||||
|
dofile(path .. "tapir.lua") --
|
||||||
|
dofile(path .. "iguana.lua") --
|
||||||
|
dofile(path .. "oryx.lua") --
|
||||||
|
dofile(path .. "roadrunner.lua") --
|
||||||
|
dofile(path .. "cockroach.lua") --
|
||||||
|
dofile(path .. "robin.lua") --
|
||||||
|
dofile(path .. "orangutan.lua") --
|
||||||
|
|
||||||
|
-- Load tundravegetation
|
||||||
|
local load_tundra_vegetation = minetest.settings:get_bool("animalworld.tundravegetation") ~= false
|
||||||
|
if load_tundra_vegetation then
|
||||||
|
dofile(path .. "tundravegetation.lua") --
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Load trophies
|
||||||
|
local load_trophies = minetest.settings:get_bool("animalworld.trophies") ~= false
|
||||||
|
if load_trophies then
|
||||||
|
dofile(path .. "trophies.lua") --
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Load hunger
|
||||||
|
if minetest.get_modpath("hunger_ng") then
|
||||||
|
dofile(path .. "hunger.lua") --
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Load concretecrafting
|
||||||
|
if minetest.get_modpath("default") then
|
||||||
|
dofile(path .. "concretecrafting.lua") --
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Load custom spawning
|
||||||
|
if mobs.custom_spawn_animalworld then
|
||||||
|
dofile(path .. "spawn.lua")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
print (S("[MOD] Mobs Redo Animals loaded"))
|
3
mods/animalworld/intllib.lua
Normal file
3
mods/animalworld/intllib.lua
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
-- Support for the old multi-load method
|
||||||
|
dofile(minetest.get_modpath("intllib").."/init.lua")
|
||||||
|
|
125
mods/animalworld/kangaroo.lua
Normal file
125
mods/animalworld/kangaroo.lua
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
local random = math.random
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:kangaroo", {
|
||||||
|
stepheight = 2,
|
||||||
|
type = "animal",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
group_attack = true,
|
||||||
|
owner_loyal = true,
|
||||||
|
attack_npcs = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 2,
|
||||||
|
hp_min = 25,
|
||||||
|
hp_max = 55,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.5, -0.01, -0.5, 0.5, 0.95, 0.5},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Kangaroo.b3d",
|
||||||
|
textures = {
|
||||||
|
{"texturekangaroo.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {},
|
||||||
|
walk_velocity = 5,
|
||||||
|
run_velocity = 5,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = true,
|
||||||
|
jump_height = 8,
|
||||||
|
pushable = true,
|
||||||
|
stay_near = {{"naturalbiomes:outback_grass", "mcl_core:deadbush", "mcl_core:cactus", "naturalbiomes:outback_grass3", "naturalbiomes:outback_grass2", "naturalbiomes:outback_grass4", "naturalbiomes:outback_grass5", "livingdesert:cactus", "livingdesert:cactus3", "livingdesert:cactus2", "livingdesert:cactus4", "default:dry_shrub"}, 5},
|
||||||
|
follow = {"default:grass_3", "default:dry_grass_3", "ethereal:dry_shrub", "farming:lettuce", "farming:seed_wheat", "default:junglegrass", "default:dry_grass_1", "default:dry_grass_2", "default:dry_grass_3", "default:grass_1", "default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5", "default:marram_grass_1", "default:marram_grass_2", "default:marram_grass_3", "default:coldsteppe_grass_1", "default:coldsteppe_grass_2", "default:coldsteppe_grass_3", "default:coldsteppe_grass_4", "default:coldsteppe_grass_5", "default:coldsteppe_grass_6", "naturalbiomes:savanna_grass1", "naturalbiomes:savanna_grass2", "naturalbiomes:savanna_grass3", "naturalbiomes:outback_grass1", "naturalbiomes:outback_grass2", "naturalbiomes:outback_grass3", "naturalbiomes:outback_grass4", "naturalbiomes:outback_grass5", "naturalbiomes:outback_grass6", "naturalbiomes:med_grass1", "naturalbiomes:med_grass2", "naturalbiomes:heath_grass1", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:alpine_grass1", "naturalbiomes:alpine_grass2", "mcl_core:deadbush", "mcl_core:cactus", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:", "naturalbiomes:", "naturalbiomes:bushland_grass", "naturalbiomes:bushland_grass2", "naturalbiomes:bushland_grass3", "naturalbiomes:bushland_grass4", "naturalbiomes:bushland_grass5", "naturalbiomes:bushland_grass6", "naturalbiomes:bushland_grass7", "group:grass", "group:normal_grass"},
|
||||||
|
view_range = 10,
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "animalworld:kangaroocorpse", chance = 7, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 5,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 4,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 100,
|
||||||
|
stand_speed = 40,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 100,
|
||||||
|
walk_end = 200,
|
||||||
|
punch_start = 200,
|
||||||
|
punch_end = 300,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 15, 25, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local spawn_on = {"default:desert_sand", "default:dry_dirt_with_dry_grass"}
|
||||||
|
|
||||||
|
if minetest.get_mapgen_setting("mg_name") ~= "v6" then
|
||||||
|
spawn_on = {"default:desert_sand", "default:dry_dirt_with_dry_grass"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"ethereal:grass_grove", "default:desert_sand", "ethereal:dry_dirt"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:kangaroo",
|
||||||
|
nodes = {"default:desert_sand", "naturalbiomes:outback_litter", "mcl_core:sand", "mcl_core:redsand"},
|
||||||
|
neighbors = {"group:grass", "mcl_core:deadbush", "mcl_core:cactus", "group:normal_grass", "naturalbiomes:outback_grass", "naturalbiomes:outback_grass3", "naturalbiomes:outback_grass2", "naturalbiomes:outback_grass4", "naturalbiomes:outback_grass5", "default:dry_shrub"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2500, -- 15000
|
||||||
|
active_object_count = 3,
|
||||||
|
min_height = 5,
|
||||||
|
max_height = 45,
|
||||||
|
day_toggle = true,
|
||||||
|
|
||||||
|
on_spawn = function(self, pos)
|
||||||
|
|
||||||
|
local nods = minetest.find_nodes_in_area_under_air(
|
||||||
|
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
|
||||||
|
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
|
||||||
|
{"default:desert_sand", "naturalbiomes:outback_litter"})
|
||||||
|
|
||||||
|
if nods and #nods > 0 then
|
||||||
|
|
||||||
|
-- min herd of 3
|
||||||
|
local iter = math.min(#nods, 3)
|
||||||
|
|
||||||
|
-- print("--- kangaroo at", minetest.pos_to_string(pos), iter)
|
||||||
|
|
||||||
|
for n = 1, iter do
|
||||||
|
|
||||||
|
local pos2 = nods[random(#nods)]
|
||||||
|
local kid = random(4) == 1 and true or nil
|
||||||
|
|
||||||
|
pos2.y = pos2.y + 2
|
||||||
|
|
||||||
|
if minetest.get_node(pos2).name == "air" then
|
||||||
|
|
||||||
|
mobs:add_mob(pos2, {
|
||||||
|
name = "animalworld:kangaroo", child = kid})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:kangaroo", S("Kangaroo"), "akangaroo.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:kangaroo", "animalworld:kangaroo") -- compatibility
|
||||||
|
|
99
mods/animalworld/koala.lua
Normal file
99
mods/animalworld/koala.lua
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:koala", {
|
||||||
|
stepheight = 1,
|
||||||
|
type = "animal",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
group_attack = true,
|
||||||
|
owner_loyal = true,
|
||||||
|
attack_npcs = true,
|
||||||
|
reach = 2,
|
||||||
|
damage = 1,
|
||||||
|
hp_min = 5,
|
||||||
|
hp_max = 30,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.3, -0.01, -0.3, 0.3, 0.2, 0.3},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Koala.b3d",
|
||||||
|
textures = {
|
||||||
|
{"texturekoala.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_koala",
|
||||||
|
attack = "animalworld_koala2",
|
||||||
|
damage = "animalworld_koala2",
|
||||||
|
},
|
||||||
|
walk_velocity = 0.5,
|
||||||
|
walk_chance = 25,
|
||||||
|
run_velocity = 1,
|
||||||
|
jump = false,
|
||||||
|
jump_height = 8,
|
||||||
|
stepheight = 8,
|
||||||
|
pushable = true,
|
||||||
|
follow = {"naturalbiomes:outback_leaves", "mcl_core:leaves"},
|
||||||
|
view_range = 6,
|
||||||
|
stay_near = {{"naturalbiomes:outback_leaves", "naturalbiomes:outback_trunk", "naturalbiomes:outback_bush_leaves", "mcl_trees:leaves_acacia", "mcl_core:acacialeaves"}, 5},
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 1,
|
||||||
|
lava_damage = 5,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 9,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 50,
|
||||||
|
stand_speed = 25,
|
||||||
|
stand_start = 100,
|
||||||
|
stand_end = 200,
|
||||||
|
stand1_start = 200,
|
||||||
|
stand1_end = 300,
|
||||||
|
walk_start = 0,
|
||||||
|
walk_end = 100,
|
||||||
|
punch_speed = 100,
|
||||||
|
punch_start = 300,
|
||||||
|
punch_end = 400,
|
||||||
|
die_start = 300,
|
||||||
|
die_end = 400,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 15, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local spawn_on = {"mcl_core:dirt_with_grass", "default:dirt_with_coniferous_litter"}
|
||||||
|
|
||||||
|
if minetest.get_mapgen_setting("mg_name") ~= "v6" then
|
||||||
|
spawn_on = {"naturalbiomes:outback_litter"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"ethereal:mushroom_dirt", "ethereal:bamboo_dirt", "ethereal:green_dirt", "ethereal:mushroom_dirt", "default:dirt_with_coniferous_litter", "default:dirt_gray"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:koala",
|
||||||
|
nodes = {"naturalbiomes:outback_litter", "mcl_core:dirt_with_grass"},
|
||||||
|
neighbors = {"naturalbiomes:outback_trunk", "naturalbiomes:outback_bush_leaves", "naturalbiomes:outback_leaves", "mcl_trees:leaves_acacia", "mcl_core:acacialeaves"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 3,
|
||||||
|
min_height = 1,
|
||||||
|
max_height = 500,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:koala", ("Koala"), "akoala.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:koala", "animalworld:koala") -- compatibility
|
120
mods/animalworld/kobra.lua
Normal file
120
mods/animalworld/kobra.lua
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:kobra", {
|
||||||
|
stepheight = 2,
|
||||||
|
type = "monster",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogshoot",
|
||||||
|
dogshoot_switch = 1,
|
||||||
|
dogshoot_count_max = 12, -- shoot for 10 seconds
|
||||||
|
dogshoot_count2_max = 3, -- dogfight for 3 seconds
|
||||||
|
reach = 3,
|
||||||
|
shoot_interval = 2.2,
|
||||||
|
arrow = "animalworld:snakepoison",
|
||||||
|
shoot_offset = 1,
|
||||||
|
attack_animals = true,
|
||||||
|
reach = 2,
|
||||||
|
damage = 8,
|
||||||
|
hp_min = 20,
|
||||||
|
hp_max = 60,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.5, -0.01, -0.5, 0.5, 0.95, 0.5},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Kobra.b3d",
|
||||||
|
visual_size = {x = 0.3, y = 0.3},
|
||||||
|
textures = {
|
||||||
|
{"texturekobra.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_kobra",
|
||||||
|
attack = "animalworld_kobra",
|
||||||
|
},
|
||||||
|
makes_footstep_sound = false,
|
||||||
|
view_range = 6,
|
||||||
|
walk_velocity = 1,
|
||||||
|
run_velocity = 2,
|
||||||
|
runaway = false,
|
||||||
|
jump = false,
|
||||||
|
jump_height = 0,
|
||||||
|
stepheight = 2,
|
||||||
|
stay_near = {{"default:jungletree", "default:junglegrass", "naturalbiomes:bamboo_leaves", "naturalbiomes:bambooforest_groundgrass", "livingjungle::grass2", "livingjungle::grass1", "livingjungle:alocasia", "livingjungle:flamingoflower"}, 5},
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "mobs:leather", chance = 1, min = 0, max = 2},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 3,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 60,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 250,
|
||||||
|
walk_end = 350,
|
||||||
|
punch_start = 150,
|
||||||
|
punch_end = 200,
|
||||||
|
shoot_start = 150,
|
||||||
|
shoot_end = 200,
|
||||||
|
die_start = 100,
|
||||||
|
die_end = 200,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
fly_in = {"default:water_source", "default:river_water_source", "default:water_flowing", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
floats = 0,
|
||||||
|
})
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"default:desert_sandstone", "default:desert_stone", "default:sandstone", "default:dirt_with_rainforest_litter", "ethereal:grove_dirt"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:kobra",
|
||||||
|
nodes = {"default:desert_sandstone", "default:desert_stone", "default:sandstone", "default:dirt_with_rainforest_litter", "naturalbiomes:bambooforest_litter", "mcl_core:dirt_with_gras"},
|
||||||
|
neighbors = {"mcl_flowers:tallgrass", "mcl_core:jungletree", "mcl_core:jungleleaves", "mcl_trees:leaves_jungle", "mcl_trees:leaves_mangrove", "default:junglegrass", "livingdesert:date_palm_leaves", "livingdesert:yucca", "default:dry_shrub", "livingdesert:coldsteppe_grass1", "livingdesert:cactus", "livingdesert:cactus3", "livingdesert:cactus2", "livingdesert:cactus4", "naturalbiomes:bambooforest_groundgrass", "naturalbiomes:bambooforest_groundgrass2"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 1000, -- 15000
|
||||||
|
min_height = -30,
|
||||||
|
max_height = 10,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:kobra", S("Cobra"), "akobra.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:kobra", "animalworld:kobra") -- compatiblity
|
||||||
|
|
||||||
|
-- mese arrow (weapon)
|
||||||
|
mobs:register_arrow("animalworld:snakepoison", {
|
||||||
|
visual = "sprite",
|
||||||
|
-- visual = "wielditem",
|
||||||
|
visual_size = {x = 0.5, y = 0.5},
|
||||||
|
textures = {"animalworld_snakepoison.png"},
|
||||||
|
--textures = {""animalworld_snakepoison.png""},
|
||||||
|
velocity = 6,
|
||||||
|
-- rotate = 180,
|
||||||
|
|
||||||
|
hit_player = function(self, player)
|
||||||
|
player:punch(self.object, 1.0, {
|
||||||
|
full_punch_interval = 1.0,
|
||||||
|
damage_groups = {fleshy = 2},
|
||||||
|
}, nil)
|
||||||
|
end,
|
||||||
|
|
||||||
|
hit_mob = function(self, player)
|
||||||
|
player:punch(self.object, 1.0, {
|
||||||
|
full_punch_interval = 1.0,
|
||||||
|
damage_groups = {fleshy = 2},
|
||||||
|
}, nil)
|
||||||
|
end,
|
||||||
|
|
||||||
|
hit_node = function(self, pos, node)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
88
mods/animalworld/leopardseal.lua
Normal file
88
mods/animalworld/leopardseal.lua
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:leopardseal", {
|
||||||
|
stepheight = 1,
|
||||||
|
type = "monster",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = true,
|
||||||
|
reach = 2,
|
||||||
|
damage = 5,
|
||||||
|
hp_min = 20,
|
||||||
|
hp_max = 55,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.5, -0.01, -0.5, 0.5, 0.6, 0.5},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Leopardseal.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"textureleopardseal.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_leopardseal",
|
||||||
|
attack = "animalworld_leopardseal2",
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
walk_velocity = 1,
|
||||||
|
run_velocity = 3,
|
||||||
|
runaway = false,
|
||||||
|
jump = false,
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 100,
|
||||||
|
stand_speed = 50,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 100,
|
||||||
|
walk_end = 200,
|
||||||
|
punch_start = 200,
|
||||||
|
punch_end = 300,
|
||||||
|
fly_speed = 50,
|
||||||
|
fly_start = 350, -- swim animation
|
||||||
|
fly_end = 450,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
fly_in = {"default:water_source", "default:water_flowing", "default:river_water_flowing", "default:river_water", "mcl_core:water_source", "mcl_core:water_flowing",},
|
||||||
|
floats = 0,
|
||||||
|
follow = {
|
||||||
|
"ethereal:fish_raw", "mcl_mobitems:chicken", "mcl_fishing:pufferfish_raw", "mcl_mobitems:rotten_flesh", "mcl_mobitems:mutton", "mcl_mobitems:beef", "mcl_mobitems:porkchop", "mcl_mobitems:rabbit", "animalworld:rawfish", "mobs_fish:tropical",
|
||||||
|
"mobs_fish:clownfish_set", "mobs_fish:tropical_set", "xocean:fish_edible", "mobs:bluefish_raw", "animalworld:rawmollusk", "nativevillages:catfish_raw", "mobs:meatblock_raw", "animalworld:chicken_raw", "livingfloatlands:ornithischiaraw", "livingfloatlands:largemammalraw", "livingfloatlands:theropodraw", "livingfloatlands:sauropodraw", "animalworld:raw_athropod", "animalworld:whalemeat_raw", "animalworld:rabbit_raw", "nativevillages:chicken_raw", "mobs:meat_raw", "animalworld:pork_raw", "people:mutton:raw", "animalworld:rawmollusk", "marinaramobs:octopus_raw", "marinara:raw_oisters", "marinara:raw_athropod", "animalworld:rawfish", "fishing:fish_raw", "fishing:pike_raw", "marinaramobs:raw_exotic_fish", "nativevillages:catfish_raw", "xocean:fish_edible", "ethereal:fish_raw", "mobs:clownfish_raw", "fishing:bluewhite_raw", "fishing:exoticfish_raw", "fishing:fish_raw", "fishing:carp_raw", "fishing:perch_raw", "water_life:meat_raw", "fishing:shark_raw", "fishing:pike_raw"
|
||||||
|
},
|
||||||
|
view_range = 10,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 0, 15, 25, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:leopardseal",
|
||||||
|
nodes = {"default:ice", "default:snowblock", "mcl_core:ice", "mcl_core:snow"},
|
||||||
|
neighbors = {"default:water_source", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 1,
|
||||||
|
min_height = -10,
|
||||||
|
max_height = 10,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:leopardseal", S("Leopard Seal"), "aleopardseal.png")
|
101
mods/animalworld/lobster.lua
Normal file
101
mods/animalworld/lobster.lua
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:lobster", {
|
||||||
|
stepheight = 1,
|
||||||
|
type = "animal",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
group_attack = true,
|
||||||
|
owner_loyal = true,
|
||||||
|
attack_npcs = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 5,
|
||||||
|
hp_min = 25,
|
||||||
|
hp_max = 70,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.5, -0.01, -0.5, 0.5, 0.5, 0.5},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Lobster.b3d",
|
||||||
|
textures = {
|
||||||
|
{"texturelobster.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {
|
||||||
|
},
|
||||||
|
walk_velocity = 0.5,
|
||||||
|
run_velocity = 1,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = false,
|
||||||
|
jump_height = 3,
|
||||||
|
pushable = true,
|
||||||
|
stay_near = {{"marinara:sand_with_alage", "mcl_flowers:waterlily", "mcl_ocean:seagrass:sand", "mcl_core:reeds", "mcl_ocean:bubble_coral", "mcl_ocean:tube_coral", "mcl_ocean:fire_coral", "mcl_ocean:brain_coral", "mcl_ocean:seagrass_gravel", "marinara:sand_with_seagrass", "default:sand_with_kelp", "marinara:sand_with_kelp", "marinara:reed_root", "flowers:waterlily_waving", "naturalbiomes:waterlily", "default:clay"}, 4},
|
||||||
|
follow = {"animalworld:rawfish", "mcl_fishing:pufferfish_raw", "mobs_fish:tropical", "mobs:clownfish_raw",
|
||||||
|
"mobs:bluefish_raw", "fishing:bait_worm", "fishing:clownfish_raw", "fishing:bluewhite_raw", "fishing:exoticfish_raw", "fishing:fish_raw", "fishing:carp_raw", "fishing:perch_raw", "water_life:meat_raw", "fishing:shark_raw", "fishing:pike_raw", "animalworld:rawmollusk", "marinaramobs:octopus_raw", "marinara:raw_oisters", "marinara:raw_athropod", "animalworld:rawfish", "fishing:fish_raw", "fishing:pike_raw", "marinaramobs:raw_exotic_fish", "nativevillages:catfish_raw", "xocean:fish_edible", "ethereal:fish_raw", "mobs:clownfish_raw", "fishing:bluewhite_raw", "fishing:exoticfish_raw", "fishing:fish_raw", "fishing:carp_raw", "fishing:perch_raw", "water_life:meat_raw", "fishing:shark_raw", "fishing:pike_raw"},
|
||||||
|
view_range = 10,
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:raw_athropod", chance = 1, min = 0, max = 2},
|
||||||
|
},
|
||||||
|
fly_in = {"default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
floats = 0,
|
||||||
|
follow = {
|
||||||
|
"ethereal:fish_raw", "animalworld:rawfish", "mobs_fish:tropical",
|
||||||
|
"mobs:meat_raw", "animalworld:rabbit_raw", "xocean:fish_edible", "animalworld:cockroach"
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 5,
|
||||||
|
air_damage = 1,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 50,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
walk_start = 100,
|
||||||
|
walk_end = 200,
|
||||||
|
punch_start = 200,
|
||||||
|
punch_end = 300,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 15, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local spawn_on = {"default:water_source"}
|
||||||
|
|
||||||
|
if minetest.get_mapgen_setting("mg_name") ~= "v6" then
|
||||||
|
spawn_on = {"default:water_source"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"default:water_source"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:lobster",
|
||||||
|
nodes = {"mcl_core:water_source", "default:water_source", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
neighbors = {"marinara:sand_with_alage", "marinara:sand_with_seagrass", "mcl_ocean:bubble_coral", "mcl_ocean:tube_coral", "mcl_ocean:fire_coral", "mcl_ocean:brain_coral", "mcl_ocean:seagrass_gravel", "default:sand_with_kelp", "marinara:sand_with_kelp", "marinara:reed_root", "flowers:waterlily_waving", "naturalbiomes:waterlily", "default:clay"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = -30,
|
||||||
|
max_height = 10,
|
||||||
|
day_toggle = false,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:lobster", S("Lobster"), "alobster.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:lobster", "animalworld:lobster") -- compatibility
|
||||||
|
|
292
mods/animalworld/locale/animalworld.de.tr
Normal file
292
mods/animalworld/locale/animalworld.de.tr
Normal file
|
@ -0,0 +1,292 @@
|
||||||
|
# textdomain: animalworld
|
||||||
|
|
||||||
|
Ant=Ameise
|
||||||
|
Raw Ant Eggs=Rohe Ameiseneier
|
||||||
|
Cooked Ant Eggs=Gekochte Ameiseneier
|
||||||
|
Anthill=Ameisenhaufen
|
||||||
|
Anteater=Ameisenbär
|
||||||
|
Bat=Fledermaus
|
||||||
|
Bear=Bär
|
||||||
|
Beaver=Biber
|
||||||
|
Beaver Nest=Biberbau
|
||||||
|
Beluga Whale=Belugawal
|
||||||
|
Raw Whale Meat=Rohes Walfleisch
|
||||||
|
Cooked Whale Meat=Gekochtes Walfleisch
|
||||||
|
Whale Blubber=Walfett
|
||||||
|
Blackbird=Amsel
|
||||||
|
Black Grouse=Birkhuhn
|
||||||
|
Boar=Verwildertes Schwein
|
||||||
|
Raw Pork=Rohes Schweinefleisch
|
||||||
|
Cooked Pork=Gekochtes Schweienfleisch
|
||||||
|
Camel=Dromedar
|
||||||
|
Carp=Karpfen
|
||||||
|
Clamydosaurus=Kragenechse
|
||||||
|
Cockatoo=Kakadu
|
||||||
|
Cockroach=Schabe
|
||||||
|
Roasted Cockroach=Geröstete Schabe
|
||||||
|
Termite Concrete Wall=Termitenbeton Mauer
|
||||||
|
Termite Concrete Stair=Termitenbeton Treppe
|
||||||
|
Termite Concrete Slab=Termitenbeton Platte
|
||||||
|
Termite Concrete White Wall=Weiße Termitenbeton Mauer
|
||||||
|
Termite Concrete White Stair=Weiße Termitenbeton Treppe
|
||||||
|
Termite Concrete White Slab=Weiße Termitenbeton Platte
|
||||||
|
Termite Concrete Grey Wall=Graue Termitenbeton Mauer
|
||||||
|
Termite Concrete Grey Stair=Graue Termitenbeton Treppe
|
||||||
|
Termite Concrete Grey Slab=Graue Termitenbeton Platte
|
||||||
|
Termite Concrete Black Wall=Schwarze Termitenbeton Mauer
|
||||||
|
Termite Concrete Black Stair=Schwarze Termitenbeton Treppe
|
||||||
|
Termite Concrete Black Slab=Schwarze Termitenbeton Platte
|
||||||
|
Termite Concrete Blue Wall=Blaue Termitenbeton Mauer
|
||||||
|
Termite Concrete Blue Stair=Blaue Termitenbeton Treppe
|
||||||
|
Termite Concrete Blue Slab=Blaue Termitenbeton Platte
|
||||||
|
Termite Concrete Cyan Wall=Cyan Termitenbeton Mauer
|
||||||
|
Termite Concrete Cyan Stair=Cyan Termitenbeton Treppe
|
||||||
|
Termite Concrete Cyan Slab=Cyan Termitenbeton Platte
|
||||||
|
Termite Concrete Green Wall=Grüne Termitenbeton Mauer
|
||||||
|
Termite Concrete Green Stair=Grüne Termitenbeton Treppe
|
||||||
|
Termite Concrete Green Slab=Grüne Termitenbeton Platte
|
||||||
|
Termite Concrete Dark Green Wall=Dunkelgrüne Termitenbeton Mauer
|
||||||
|
Termite Concrete Dark Green Stair=Dunkelgrüne Termitenbeton Treppe
|
||||||
|
Termite Concrete Dark Green Slab=Duneklgrüne Termitenbeton Platte
|
||||||
|
Termite Concrete Yellow Wall=Gelbe Termitenbeton Mauer
|
||||||
|
Termite Concrete Yellow Stair=Gelbe Termitenbeton Treppe
|
||||||
|
Termite Concrete Yellow Slab=Gelbe Termitenbeton Platte
|
||||||
|
Termite Concrete Orange Wall=Orange Termitenbeton Mauer
|
||||||
|
Termite Concrete Orange Stair=Orange Termitenbeton Treppe
|
||||||
|
Termite Concrete Orange Slab=Orange Termitenbeton Platte
|
||||||
|
Termite Concrete Brown Wall=Braune Termitenbeton Mauer
|
||||||
|
Termite Concrete Brown Stair=Braune Termitenbeton Treppe
|
||||||
|
Termite Concrete Brown Slab=Braune Termitenbeton Platte
|
||||||
|
Termite Concrete Red Wall=Rote Termitenbeton Mauer
|
||||||
|
Termite Concrete Red Stair=Rote Termitenbeton Treppe
|
||||||
|
Termite Concrete Red Slab=Rote Termitenbeton Platte
|
||||||
|
Termite Concrete Pink Wall=Pinke Termitenbeton Mauer
|
||||||
|
Termite Concrete Pink Stair=Pinke Termitenbeton Treppe
|
||||||
|
Termite Concrete Pink Slab=Pinke Termitenbeton Platte
|
||||||
|
Termite Concrete Magenta Wall=Magenta Termitenbeton Mauer
|
||||||
|
Termite Concrete Magenta Stair=Magenta Termitenbeton Treppe
|
||||||
|
Termite Concrete Magenta Slab=Magenta Termitenbeton Platte
|
||||||
|
Termite Concrete Violet Wall=Violette Termitenbeton Mauer
|
||||||
|
Termite Concrete Violet Stair=Violette Termitenbeton Treppe
|
||||||
|
Termite Concrete Violet Slab=Violette Termitenbeton Platte
|
||||||
|
Crab=Krabbe
|
||||||
|
Crocodile=Krokodil
|
||||||
|
Diving Beetle=Gelbrandkäfer
|
||||||
|
Dragonfly=Libelle
|
||||||
|
Echidna=Schnabeligel
|
||||||
|
Elephant=Elefant
|
||||||
|
Fox=Fuchs
|
||||||
|
Frog=Frosch
|
||||||
|
Goby=Grundel
|
||||||
|
Golden Mole=Goldmull
|
||||||
|
Goose=Wildgans
|
||||||
|
Hare=Hase
|
||||||
|
Raw Hare=Rohes Hasenfleisch
|
||||||
|
Cooked Hare=Gekochtes Hasenfleisch
|
||||||
|
Hare Hide=Hasenfell
|
||||||
|
Hermit Crab=Einsiedlerkrebs
|
||||||
|
Hippo=Nilpferd
|
||||||
|
Hyena=Hyäne
|
||||||
|
Ibex=Steinbock
|
||||||
|
Iguana=Leguan
|
||||||
|
Indian Rhino=Panzernashorn
|
||||||
|
Kangaroo=Känguru
|
||||||
|
Cobra=Köningskobra
|
||||||
|
Leopard Seal=Seeleopard
|
||||||
|
Lobster=Hummer
|
||||||
|
Locust=Heuschrecke
|
||||||
|
Roasted Locust=Geröstete Heuschrecke
|
||||||
|
Manatee=Seekuh
|
||||||
|
Marmot=Murmeltier
|
||||||
|
Monitor Lizard=Waran
|
||||||
|
Monkey=Affe
|
||||||
|
Moose=Elch
|
||||||
|
Mosquito=Mücke
|
||||||
|
Musk Ox=Moschusochse
|
||||||
|
Bird Egg=Vogelei
|
||||||
|
Fried Egg=Spiegelei
|
||||||
|
Raw Birdmeat=Rohes Geflügelfleisch
|
||||||
|
Cooked Birdmeat=Gekochtes Geflügelfleisch
|
||||||
|
Feather=Feder
|
||||||
|
Notoptera=Grillenschabe
|
||||||
|
Bug on Ice=Käfereis
|
||||||
|
Dragonfly Nymph=Libellenlarve
|
||||||
|
Oryx=Spießbock
|
||||||
|
Otter=Fischotter
|
||||||
|
Owl=Eule
|
||||||
|
Panda=Riesenpanda
|
||||||
|
Parrot=Papagei
|
||||||
|
Flying Parrot=Fliegender Papagei
|
||||||
|
Polar Bear=Eisbär
|
||||||
|
Puffin=Papageitaucher
|
||||||
|
Rat=Ratte
|
||||||
|
Cooked Rodent Meat=Gekochtes Nagetier
|
||||||
|
Stingray=Stachelrochen
|
||||||
|
Termite Queen=Termitenkönigin
|
||||||
|
Termite Mound=Termitenhügel
|
||||||
|
Termite Concrete=Termitenbeton
|
||||||
|
Termite Concrete Blue=Blauer Termitenbeton
|
||||||
|
Termite Concrete Green=Grüner Termitenbeton
|
||||||
|
Termite Concrete Yellow=Gelber Termitenbeton
|
||||||
|
Termite Concrete Red=Roter Termitenbeton
|
||||||
|
Termite Concrete Orange=Oranger Termitenbeton
|
||||||
|
Termite Concrete Violet=Violetter Termitenbeton
|
||||||
|
Termite Concrete White=Weißer Termitenbeton
|
||||||
|
Termite Concrete Black=Schwarzer Termitenbeton
|
||||||
|
Termite Concrete Grey=Grauer Termitenbeton
|
||||||
|
Termite Concrete Dark Green=Dunkelgrüner Termitenbeton
|
||||||
|
Termite Concrete Brown=Brauner Termitenbeton
|
||||||
|
Termite Concrete Pink=Pinker Termitenbeton
|
||||||
|
Termite Concrete Magenta=Magenta Termitenbeton
|
||||||
|
Termite Concrete Cyan=Cyan Termitenbeton
|
||||||
|
Tortoise=Landschildkröte
|
||||||
|
Toucan=Tukan
|
||||||
|
Tree Lobster=Baumhummer
|
||||||
|
Anteater Pillow=Ameisenbär Kissen
|
||||||
|
Anteater Pillow Left=Linkes Ameisenbär Kissen
|
||||||
|
Anteater Pillow Right=Rechtes Ameisenbärkissen
|
||||||
|
Anteater Corpse=Erlegter Ameisenbär
|
||||||
|
Bear Trophy=Bärentropähe
|
||||||
|
Bear Pelt=Bärenpelz
|
||||||
|
Bear Pelt hanging=Hängender Bärenpelz
|
||||||
|
Bear Corpse=Erlegter Bär
|
||||||
|
Bear Stool=Bärenhocker
|
||||||
|
Blackbird Pillow=Amselkissen
|
||||||
|
Blackbird Pillow Left=Linkes Amselkissen
|
||||||
|
Blackbird Pillow Right=Rechtes Amselkissen
|
||||||
|
Blackbird Corpse=Erlegte Amsel
|
||||||
|
Blackbird Curtain=Amselvorhang
|
||||||
|
Boar Trophy=Verwilderte Schweinetropähe
|
||||||
|
Boar Pelt=Verwildertes Schweinefell
|
||||||
|
Boar Pelt hanging=Hängendes Verwildertes Schweinefell
|
||||||
|
Boar Corpse=Erlegtes Verwildertes Schwein
|
||||||
|
Camel Pillow=Dromedarkissen
|
||||||
|
Camel Pillow Left=Linkes Dromedarkissen
|
||||||
|
Camel Pillow Right=Rechtes Dromedarkissen
|
||||||
|
Camel Corpse=Erlegtes Dromedar
|
||||||
|
Camel Pelt=Dromedarfell
|
||||||
|
Camel Pelt hanging=Hängendes Dromedarfell
|
||||||
|
Camel Curtain=Dromedarvorhang
|
||||||
|
Crocodile Trophy=Krokodiltrophähe
|
||||||
|
Crocodile Corpse=Erlegtes Krokodil
|
||||||
|
Crocodile Stool=Krokodilhocker
|
||||||
|
Crocodile Curtain=Krokodilhaut Vorhang
|
||||||
|
Crocodile Skin=Krokodilhaut
|
||||||
|
Crocodile Skin hanging=Hängende Krokodilhaut
|
||||||
|
Elephant Trophy=Elefantentrophähe
|
||||||
|
Elephant Corpse=Erlegter Elefant
|
||||||
|
Ivory Table=Elfenbeintisch
|
||||||
|
Ivory Chair=Elfenbeinstuhl
|
||||||
|
Ivory Vase=Elfenbeinvase
|
||||||
|
Elephant Stool=Elefantenhocker
|
||||||
|
Gnu Pelt=Gnupelz
|
||||||
|
Gnu Pelt hanging=Hängender Gnupelz
|
||||||
|
Gnu Corpse=Erlegtes Gnu
|
||||||
|
Gnu Trophy=Gnutrophähe
|
||||||
|
Gnu Stool=Gnu Hocker
|
||||||
|
Gnu Curtain=Gnu Vorhang
|
||||||
|
Hippo Stool=Nilpferdhocker
|
||||||
|
Hippo Curtain=Nilpferdvorhang
|
||||||
|
Hippo Corpse=Erlegtes Nilpferd
|
||||||
|
Hyena Trophy=Hyänentrophähe
|
||||||
|
Hyena Corpse=Erlegte Hyäne
|
||||||
|
Hyena Pillow=Hyänenkissen
|
||||||
|
Hyea Pillow Left=Linkes Hyänenkissen
|
||||||
|
Hyena Pillow Right=Rechtes Hyänenkissen
|
||||||
|
Kangaroo Corpse=Erlegtes Känguru
|
||||||
|
Kangaroo Pillow=Känguru Kissen
|
||||||
|
Kangaroo Pillow Left=Linkes Kängurukissen
|
||||||
|
Kangaroo Pillow Right=Rechtes Kängurukissen
|
||||||
|
Kangaroo Curtain=Känguruvorhang
|
||||||
|
Monitor Lizard Trophy=Warantrophähe
|
||||||
|
Monitor Lizard Corpse=Erlegter Waran
|
||||||
|
Monitor Lizard Stool=Waranhocker
|
||||||
|
Monitor Curtain=Waranhaut Vorhang
|
||||||
|
Moose Trophy=Elchtrophähe
|
||||||
|
Moose Pelt=Elchfell
|
||||||
|
Moose Pelt hanging=Hängendes Elchfell
|
||||||
|
Moose Corpse=Erlegter Elch
|
||||||
|
Owl Trophy=Eulentrophähe
|
||||||
|
Owl Corpse=Erlegte Eule
|
||||||
|
Reindeer=Rentier
|
||||||
|
Reindeer Trophy=Rentiertrophähe
|
||||||
|
Reindeer Pelt=Rentierfell
|
||||||
|
Reindeer Pelt hanging=Hängendes Rentierfell
|
||||||
|
Reindeer Corpse=Erlegtes Rentier
|
||||||
|
Seal Pillow=Robbenkissen
|
||||||
|
Seal Pillow Left=Linkes Robbenkissen
|
||||||
|
Seal Pillow Right=Rechtes Robbenkissen
|
||||||
|
Seal Corpse=Erlegte Robbe
|
||||||
|
Seal Stool=Robbenhocker
|
||||||
|
Seal Curtain=Robbenvorhang
|
||||||
|
Seal=Robbe
|
||||||
|
Shark Trophy=Haitrophähe
|
||||||
|
Shark Corpse=Erlegter Hai
|
||||||
|
Vulture Pillow=Geierkissen
|
||||||
|
Vulture Pillow Left=Linkes Geierkissen
|
||||||
|
Vulture Pillow Right=Rechtes Geierkissen
|
||||||
|
Vulture Corpse=Erlegter Geier
|
||||||
|
Yak Trophy=Yak Trophähe
|
||||||
|
Yak Pelt=Yakfell
|
||||||
|
Yak Pelt hanging=Hängendes Yakfell
|
||||||
|
Yak Corpse=Erlegtes Yak
|
||||||
|
Yak Stool=Yakhocker
|
||||||
|
Yak Curtain=Yakvorhang
|
||||||
|
Snow Leopard Trophy=Schneeleopardentrophähe
|
||||||
|
Snow Leopard Pillow=Schneeleoparden Kissen
|
||||||
|
Snow Leopard Pillow Left=Linkes Schneeleopardenkissen
|
||||||
|
Snow Leopard Pillow Right=Rechtes Schneeleopardenkissen
|
||||||
|
Snowleopard Corpse=Erlegter Schneeleopard
|
||||||
|
Tiger Trophy=Tigertrophähe
|
||||||
|
Tiger Pillow=Tigerkissen
|
||||||
|
Tiger Pillow Left=Linkes Tigerkissen
|
||||||
|
Tiger Pillow Right=Rechtes Tigerkissen
|
||||||
|
Tiger Corpse=Erlegter Tiger
|
||||||
|
Tiger Stool=Tigerhocker
|
||||||
|
Tiger Curtain=Tigervorhang
|
||||||
|
Tiger Pelt=Tigerpelz
|
||||||
|
Tiger Pelt hanging=Hängender Tigerpelz
|
||||||
|
Wolverine Trophy=Vielfrasstrophähe
|
||||||
|
Wolverine Corpse=Erlegter Vielfrass
|
||||||
|
Polar Bear Trophy=Eisbärentrophähe
|
||||||
|
Polar Bear Pelt=Eisbärfell
|
||||||
|
Polar Bear Pelt hanging=Hängendes Eisbärfell
|
||||||
|
Polar Bear Corpse=Erlegter Eisbär
|
||||||
|
Muskox Trophy=Moschusochsentrophähe
|
||||||
|
Muskox Pelt=Moschusochsenfell
|
||||||
|
Muskox Pelt hanging=Hängendes Moschusochsenfell
|
||||||
|
Muskox Corpse=Erlegter Moschusochse
|
||||||
|
Muskox Stool=Moschusochsenhocker
|
||||||
|
Trout=Forelle
|
||||||
|
Tundra Shrub=Tundrabusch
|
||||||
|
Viper=Kreuzotter
|
||||||
|
Wolverine=Vielfrass
|
||||||
|
Vulture=Geier
|
||||||
|
Wasp=Wespe
|
||||||
|
Wasp Nest=Wespennest
|
||||||
|
Wild Boar=Wildschwein
|
||||||
|
Bucket of Milk"=Milcheimer
|
||||||
|
Glass of Milk=Milchglas
|
||||||
|
Cheese=Käse
|
||||||
|
Cheese Block=Käseblock
|
||||||
|
Yak already milked!=Yak wurde bereits gemolken!
|
||||||
|
Bucket of Milk=Milcheimer
|
||||||
|
Raw Mollusk=Rohes Molluskenfleisch
|
||||||
|
Fried Mollusk=Geröstetes Molluskenfleisch
|
||||||
|
Squid=Tintenfisch
|
||||||
|
Spider=Spinne
|
||||||
|
Cooked Athropod=Gekochter Athropode
|
||||||
|
Raw Athropod=Roher Athropode
|
||||||
|
Raw Fish=Roher Fisch
|
||||||
|
Cooked Fish=Gekochter Fisch
|
||||||
|
Fish Food=Fischfutter
|
||||||
|
Snail=Schnecke
|
||||||
|
Escargots=Schneckenmenü
|
||||||
|
Stellers Sea Eagle=Seeadler
|
||||||
|
Spider Male=Männliche Spinne
|
||||||
|
Scorpion=Skorpion
|
||||||
|
Seahorse=Seepferdchen
|
||||||
|
Roadrunner=Rennkuckuck
|
||||||
|
Shark=Hai
|
||||||
|
Snow Leopard=Schneeleopard
|
||||||
|
Robin=Rotkehlchen
|
291
mods/animalworld/locale/animalworld.fr.tr
Normal file
291
mods/animalworld/locale/animalworld.fr.tr
Normal file
|
@ -0,0 +1,291 @@
|
||||||
|
# textdomain: animalworld
|
||||||
|
|
||||||
|
Ant=Fourmi
|
||||||
|
Raw Ant Eggs=Oeufs de Fourmi Crus
|
||||||
|
Cooked Ant Eggs=Oeufs de Fourmi Cuits
|
||||||
|
Anthill=Fourmillière
|
||||||
|
Anteater=Fourmilier
|
||||||
|
Bat=Chauve-Souris
|
||||||
|
Bear=Ours
|
||||||
|
Beaver=Castor
|
||||||
|
Beaver Nest=Nid de Castor
|
||||||
|
Beluga Whale=Beluga
|
||||||
|
Raw Whale Meat=Viande de Baleine Crue
|
||||||
|
Cooked Whale Meat=Viande de Baleine Cuite
|
||||||
|
Whale Blubber=Graisse de Baleine
|
||||||
|
Blackbird=Merle
|
||||||
|
Black Grouse=Tétras-Lyre
|
||||||
|
Boar=Sanglier
|
||||||
|
Raw Pork=Porc cru
|
||||||
|
Cooked Pork=Porc cuit
|
||||||
|
Camel=Chameau
|
||||||
|
Carp=Carpe
|
||||||
|
Clamydosaurus=Lézard à Collerette
|
||||||
|
Cockatoo=Cacatoès
|
||||||
|
Cockroach=Cafard
|
||||||
|
Roasted Cockroach=Cafard rôti
|
||||||
|
Termite Concrete Wall=Mur en Béton Termite
|
||||||
|
Termite Concrete Stair=Escalier en Béton Termite
|
||||||
|
Termite Concrete Slab=Plaque de Béton Termite
|
||||||
|
Termite Concrete White Wall=Mur en Béton Termite Blanc
|
||||||
|
Termite Concrete White Stair=Escalier en Béton Termite Blanc
|
||||||
|
Termite Concrete White Slab=Plaque de Béton Termite Blanc
|
||||||
|
Termite Concrete Grey Wall=Mur en Béton Termite Gris
|
||||||
|
Termite Concrete Grey Stair=Escalier en Béton Termite Gris
|
||||||
|
Termite Concrete Grey Slab=Plaque de Béton Termite Gris
|
||||||
|
Termite Concrete Black Wall=Mur en Béton Termite Noir
|
||||||
|
Termite Concrete Black Stair=Escalier en Béton Termite Noir
|
||||||
|
Termite Concrete Black Slab=Plaque de Béton Termite Noir
|
||||||
|
Termite Concrete Blue Wall=Mur en Béton Termite Bleu
|
||||||
|
Termite Concrete Blue Stair=Escalier en Béton Termite Bleu
|
||||||
|
Termite Concrete Blue Slab=Plaque de Béton Termite Bleu
|
||||||
|
Termite Concrete Cyan Wall=Mur en Béton Termite Cyan
|
||||||
|
Termite Concrete Cyan Stair=Escalier en Béton Termite Cyan
|
||||||
|
Termite Concrete Cyan Slab=Plaque de Béton Termite Cyan
|
||||||
|
Termite Concrete Green Wall=Mur en Béton Termite Vert
|
||||||
|
Termite Concrete Green Stair=Escalier en Béton Termite Vert
|
||||||
|
Termite Concrete Green Slab=Plaque de Béton Termite Vert
|
||||||
|
Termite Concrete Dark Green Wall=Mur en Béton Termite Vert Foncé
|
||||||
|
Termite Concrete Dark Green Stair=Escalier en Béton Termite Vert Foncé
|
||||||
|
Termite Concrete Dark Green Slab=Béton Termite Vert Foncé
|
||||||
|
Termite Concrete Yellow Wall=Mur en Béton Termite Jaune
|
||||||
|
Termite Concrete Yellow Stair=Escalier en Béton Termite Jaune
|
||||||
|
Termite Concrete Yellow Slab=Plaque de Béton Termite Jaune
|
||||||
|
Termite Concrete Orange Wall=Mur en Béton Termite Orange
|
||||||
|
Termite Concrete Orange Stair=Escalier en Béton Termite Orange
|
||||||
|
Termite Concrete Orange Slab=Plaque de Béton Termite Orange
|
||||||
|
Termite Concrete Brown Wall=Mur en Béton Termite Marron
|
||||||
|
Termite Concrete Brown Stair=Escalier en Béton Termite Marron
|
||||||
|
Termite Concrete Brown Slab=Plaque de Béton Termite Marron
|
||||||
|
Termite Concrete Red Wall=Mur en Béton Termite Rouge
|
||||||
|
Termite Concrete Red Stair=Escalier en Béton Termite Rouge
|
||||||
|
Termite Concrete Red Slab=Plaque de Béton Termite Rouge
|
||||||
|
Termite Concrete Pink Wall=Mur en Béton Termite Rose
|
||||||
|
Termite Concrete Pink Stair=Escalier en Béton Termite Rose
|
||||||
|
Termite Concrete Pink Slab=Plaque de Béton Termite Rose
|
||||||
|
Termite Concrete Magenta Wall=Mur en Béton Termite Magenta
|
||||||
|
Termite Concrete Magenta Stair=Escalier en Béton Termite Magenta
|
||||||
|
Termite Concrete Magenta Slab=Plaque de Béton Termite Magenta
|
||||||
|
Termite Concrete Violet Wall=Mur en Béton Termite Violet
|
||||||
|
Termite Concrete Violet Stair=Escalier en Béton Termite Violet
|
||||||
|
Termite Concrete Violet Slab=Plaque de Béton Termite Violet
|
||||||
|
Crab=Crabe
|
||||||
|
Crocodile=Crocodile
|
||||||
|
Diving Beetle=Scarabée d'eau
|
||||||
|
Dragonfly=Libellule
|
||||||
|
Echidna=Echidné
|
||||||
|
Elephant=Elephant
|
||||||
|
Fox=Renard
|
||||||
|
Frog=Grenouille
|
||||||
|
Goby=Gobie
|
||||||
|
Golden Mole=Taupe Dorée
|
||||||
|
Goose=Oie
|
||||||
|
Hare=Lièvre
|
||||||
|
Raw Hare=Lièvre Cru
|
||||||
|
Cooked Hare=Lièvre Cuit
|
||||||
|
Hare Hide=Peau de Lièvre
|
||||||
|
Hermit Crab=Bernard L'Ermite
|
||||||
|
Hippo=Hippopotame
|
||||||
|
Hyena=Hyène
|
||||||
|
Ibex=Bouquetin
|
||||||
|
Iguana=Iguane
|
||||||
|
Indian Rhino=Rhinocéros d'Inde
|
||||||
|
Kangaroo=Kangourou
|
||||||
|
Cobra=Cobra
|
||||||
|
Leopard Seal=Léopard de mer
|
||||||
|
Lobster=Homard
|
||||||
|
Locust=Criquet
|
||||||
|
Roasted Locust=Criquet Rôti
|
||||||
|
Manatee=Lamantin
|
||||||
|
Marmot=Marmotte
|
||||||
|
Monitor Lizard=Varan
|
||||||
|
Monkey=Singe
|
||||||
|
Moose=Élan
|
||||||
|
Mosquito=Moustique
|
||||||
|
Musk Ox=Boeuf Musqué
|
||||||
|
Bird Egg=Oeuf d'oiseau
|
||||||
|
Fried Egg=Oeuf au plat
|
||||||
|
Raw Birdmeat=Viande d'Oiseau Crue
|
||||||
|
Cooked Birdmeat=Viande d'Oiseau Cuite
|
||||||
|
Feather=Plume
|
||||||
|
Notoptera=Notoptère
|
||||||
|
Bug on Ice=Grylloblatte
|
||||||
|
Dragonfly Nymph=Nymphe de Libellule
|
||||||
|
Oryx=Oryx
|
||||||
|
Otter=Loutre
|
||||||
|
Owl=Hibou
|
||||||
|
Panda=Panda
|
||||||
|
Parrot=Perroquet
|
||||||
|
Flying Parrot=Perroquet Volant
|
||||||
|
Polar Bear=Ours Polaire
|
||||||
|
Puffin=Macareux
|
||||||
|
Rat=Rat
|
||||||
|
Cooked Rodent Meat=Viande de Rongeur Cuite
|
||||||
|
Stingray=Raie
|
||||||
|
Termite Queen=Reine Termite
|
||||||
|
Termite Mound=Termitière
|
||||||
|
Termite Concrete=Béton Termite
|
||||||
|
Termite Concrete Blue=Béton Termite Bleu
|
||||||
|
Termite Concrete Green=Béton Termite Vert
|
||||||
|
Termite Concrete Yellow=Béton Termite Jaune
|
||||||
|
Termite Concrete Red=Béton Termite Rouge
|
||||||
|
Termite Concrete Orange=Béton Termite Orange
|
||||||
|
Termite Concrete Violet=Béton Termite Violet
|
||||||
|
Termite Concrete White=Béton Termite Blanc
|
||||||
|
Termite Concrete Black=Béton Termite Noir
|
||||||
|
Termite Concrete Grey=Béton Termite Gris
|
||||||
|
Termite Concrete Dark Green=Béton Termite Vert Foncé
|
||||||
|
Termite Concrete Brown=Béton Termite Marron
|
||||||
|
Termite Concrete Pink=Béton Termite Rose
|
||||||
|
Termite Concrete Magenta=Béton Termite Magenta
|
||||||
|
Termite Concrete Cyan=Béton Termite Cyan
|
||||||
|
Tortoise=Tortue de terre
|
||||||
|
Toucan=Toucan
|
||||||
|
Tree Lobster=Homard des Arbres
|
||||||
|
Anteater Pillow=Oreiller en Fourmilier
|
||||||
|
Anteater Pillow Left=Oreiller en Fourmilier (à Gauche)
|
||||||
|
Anteater Pillow Right=Oreiller en Fourmilier (à Droite)
|
||||||
|
Anteater Corpse=Cadavre de Fourmilier
|
||||||
|
Bear Trophy=Trophée d'Ours
|
||||||
|
Bear Pelt=Fourrure d'Ours
|
||||||
|
Bear Pelt hanging=Fourrure d'Ours Suspendue
|
||||||
|
Bear Corpse=Cadavre d'Ours
|
||||||
|
Bear Stool=Excréments d'Ours
|
||||||
|
Blackbird Pillow=Oreiller en Merle
|
||||||
|
Blackbird Pillow Left=Oreiller en Merle (à Gauche)
|
||||||
|
Blackbird Pillow Right=Oreiller en Merle (à Droite)
|
||||||
|
Blackbird Corpse=Cadavre de Merle
|
||||||
|
Blackbird Curtain=Rideaux en Merle
|
||||||
|
Boar Trophy=Trophée de Sanglier
|
||||||
|
Boar Pelt=Fourrure de Sanglier
|
||||||
|
Boar Pelt hanging=Fourrure de Sanglier Suspendue
|
||||||
|
Boar Corpse=Cadavre de Sanglier
|
||||||
|
Camel Pillow=Oreiller en Chameau
|
||||||
|
Camel Pillow Left=Oreiller en Chameau (à Gauche)
|
||||||
|
Camel Pillow Right=Oreiller en Chameau (à Droite)
|
||||||
|
Camel Corpse=Cadavre de Chameau
|
||||||
|
Camel Pelt=Fourrure de Chameau
|
||||||
|
Camel Pelt hanging=Fourrure de Chameau Suspendue
|
||||||
|
Camel Curtain=Rideau en Chameau
|
||||||
|
Crocodile Trophy=Trophée de Crocodile
|
||||||
|
Crocodile Corpse=Cadavre de Crocodile
|
||||||
|
Crocodile Stool=Excréments de Crocodile
|
||||||
|
Crocodile Curtain=Rideau en Crocodile
|
||||||
|
Crocodile Skin=Peau de Crocodile
|
||||||
|
Crocodile Skin hanging=Peau de Crocodile Skin Suspendue
|
||||||
|
Elephant Trophy=Trophée d'Élephant
|
||||||
|
Elephant Corpse=Cadavre d'Élephant
|
||||||
|
Ivory Table=Table en Ivoire
|
||||||
|
Ivory Chair=Chaise en Ivoire
|
||||||
|
Ivory Vase=Vase en Ivoire
|
||||||
|
Elephant Stool=Excréments d'Élephant
|
||||||
|
Gnu Pelt=Fourrure de Gnou
|
||||||
|
Gnu Pelt hanging=Fourrure de Gnou Suspendue
|
||||||
|
Gnu Corpse=Cadavre de Gnou
|
||||||
|
Gnu Trophy=Trophée de Gnou
|
||||||
|
Gnu Stool=Excréments de Gnou
|
||||||
|
Gnu Curtain=Rideau en Gnou
|
||||||
|
Hippo Stool=Excréments d'Hippopotame
|
||||||
|
Hippo Curtain=Rideau en Hippopotame
|
||||||
|
Hippo Corpse=Cadavre d'Hippopotame
|
||||||
|
Hyena Trophy=Trophée de Hyène
|
||||||
|
Hyena Corpse=Cadavre de Hyène
|
||||||
|
Hyena Pillow=Oreiller en Hyène
|
||||||
|
Hyea Pillow Left=Oreiller en Hyène (à Gauche)
|
||||||
|
Hyena Pillow Right=Oreiller en Hyène (à Droite)
|
||||||
|
Kangaroo Corpse=Cadavre de Kangourou
|
||||||
|
Kangaroo Pillow=Oreiller en Kangourou
|
||||||
|
Kangaroo Pillow Left=Oreiller en Kangourou (à Gauche)
|
||||||
|
Kangaroo Pillow Right=Oreiller en Kangourou (à Droite)
|
||||||
|
Kangaroo Curtain=Rideau en Kangourou
|
||||||
|
Monitor Lizard Trophy=Trophée de Varan
|
||||||
|
Monitor Lizard Corpse=Cadavre de Varan
|
||||||
|
Monitor Lizard Stool=Excréments de Varan
|
||||||
|
Monitor Curtain=Rideau en Varan
|
||||||
|
Moose Trophy=Trophée d'Élan
|
||||||
|
Moose Pelt=Fourrure d'Élan
|
||||||
|
Moose Pelt hanging=Fourrure d'Élan Suspendue
|
||||||
|
Moose Corpse=Cadavre d'Élan
|
||||||
|
Owl Trophy=Trophée de Hibou
|
||||||
|
Owl Corpse=Cadavre de Hibou
|
||||||
|
Reindeer=Renne
|
||||||
|
Reindeer Trophy=Trophée de Renne
|
||||||
|
Reindeer Pelt=Fourrure de Renne
|
||||||
|
Reindeer Pelt hanging=Fourrure de Renne Suspendue
|
||||||
|
Reindeer Corpse=Cadavre de Renne
|
||||||
|
Seal Pillow=Oreiller en Phoque
|
||||||
|
Seal Pillow Left=Oreiller en Phoque (à Gauche)
|
||||||
|
Seal Pillow Right=Oreiller en Phoque (à Droite)
|
||||||
|
Seal Corpse=Cadavre de Phoque
|
||||||
|
Seal Stool=Excréments de Phoque
|
||||||
|
Seal Curtain=Rideau en Phoque
|
||||||
|
Seal=Phoque
|
||||||
|
Shark Trophy=Trophée de Requin
|
||||||
|
Shark Corpse=Cadavre de Requin
|
||||||
|
Vulture Pillow=Oreiller en Vautour
|
||||||
|
Vulture Pillow Left=Oreiller en Vautour (à Gauche)
|
||||||
|
Vulture Pillow Right=Oreiller en Vautour (à Droite)
|
||||||
|
Vulture Corpse=Cadavre de Vautour
|
||||||
|
Yak Trophy=Trophée de Yak
|
||||||
|
Yak Pelt=Fourrure de Yak
|
||||||
|
Yak Pelt hanging=Fourrure de Yak Suspendue
|
||||||
|
Yak Corpse=Cadavre de Yak
|
||||||
|
Yak Stool=Excréments de Yak
|
||||||
|
Yak Curtain=Rideau en Yak
|
||||||
|
Snow Leopard Trophy=Trophée de Léopard des Neiges
|
||||||
|
Snow Leopard Pillow=Oreiller en Léopard des Neiges
|
||||||
|
Snow Leopard Pillow Left=Oreiller en Léopard des Neiges (à Gauche)
|
||||||
|
Snow Leopard Pillow Right=Oreiller en Léopard des Neiges (à Droite)
|
||||||
|
Snowleopard Corpse=Cadavre de Léopard des Neiges
|
||||||
|
Tiger Trophy=Trophée de Tigre
|
||||||
|
Tiger Pillow=Oreiller en Tigre
|
||||||
|
Tiger Pillow Left=Oreiller en Tigre (à Gauche)
|
||||||
|
Tiger Pillow Right=Oreiller en Tigre (à Droite)
|
||||||
|
Tiger Corpse=Cadavre de Tigre
|
||||||
|
Tiger Stool=Excréments de Tigre
|
||||||
|
Tiger Curtain=Rideau en Tiger
|
||||||
|
Tiger Pelt=Fourrure de Tigre
|
||||||
|
Tiger Pelt hanging=Fourrure de Tigre Suspendue
|
||||||
|
Wolverine Trophy=Trophée de Carcajou
|
||||||
|
Wolverine Corpse=Cadavre de Carcajou
|
||||||
|
Polar Bear Trophy=Trophée d'Ours Polaire
|
||||||
|
Polar Bear Pelt=Fourrure d'Ours Polaire
|
||||||
|
Polar Bear Pelt hanging=Fourrure d'Ours Polaire Suspendue
|
||||||
|
Polar Bear Corpse=Cadavre d'Ours Polaire
|
||||||
|
Muskox Trophy=Trophée de Boeuf Musqué
|
||||||
|
Muskox Pelt=Fourrure de Boeuf Musqué
|
||||||
|
Muskox Pelt hanging=Fourrure de Boeuf Musqué Suspendue
|
||||||
|
Muskox Corpse=Cadavre de Boeuf Musqué
|
||||||
|
Muskox Stool=Excréments de Boeuf Musqué
|
||||||
|
Trout=Truite
|
||||||
|
Tundra Shrub=Arbuste de la Toundra
|
||||||
|
Viper=Vipère
|
||||||
|
Wolverine=Carcajou
|
||||||
|
Vulture=Vautour
|
||||||
|
Wasp=Guêpe
|
||||||
|
Wasp Nest=Nid de Guêpe
|
||||||
|
Wild Boar=Sanglier Sauvage
|
||||||
|
Glass of Milk=Verre de Lait
|
||||||
|
Cheese=Fromage
|
||||||
|
Cheese Block=Bloc de Fromage
|
||||||
|
Yak already milked!=Yak déjà trait!
|
||||||
|
Bucket of Milk=Seau de Lait
|
||||||
|
Raw Mollusk=Mollusque Cru
|
||||||
|
Fried Mollusk=Mollusque Frit
|
||||||
|
Squid=Calamar
|
||||||
|
Spider=Araignée
|
||||||
|
Cooked Athropod=Arthropode Cuit
|
||||||
|
Raw Athropod=Arthropode Cru
|
||||||
|
Raw Fish=Poisson Cru
|
||||||
|
Cooked Fish=Poisson Cuit
|
||||||
|
Fish Food=Nourriture pour Poisson
|
||||||
|
Snail=Escargot
|
||||||
|
Escargots=Escargots
|
||||||
|
Stellers Sea Eagle=Pygargue de Steller
|
||||||
|
Spider Male=Araignée Mâle
|
||||||
|
Scorpion=Scorpion
|
||||||
|
Seahorse=Hippocampe
|
||||||
|
Roadrunner=Géocoucou
|
||||||
|
Shark=Requin
|
||||||
|
Snow Leopard=Léopard des Neiges
|
||||||
|
Robin=Rouge-gorge
|
291
mods/animalworld/locale/animalworld.ru.tr
Normal file
291
mods/animalworld/locale/animalworld.ru.tr
Normal file
|
@ -0,0 +1,291 @@
|
||||||
|
# textdomain: animalworld
|
||||||
|
|
||||||
|
Ant=Муравей
|
||||||
|
Raw Ant Eggs=Сырые муравьиные яйца
|
||||||
|
Cooked Ant Eggs=Жаренные муравьиные яйца
|
||||||
|
Anthill=Муравейник
|
||||||
|
Anteater=Муравьед
|
||||||
|
Bat=Летучая мышь
|
||||||
|
Bear=Медведь
|
||||||
|
Beaver=Бобер
|
||||||
|
Beaver Nest=Бобриная нора
|
||||||
|
Beluga Whale=Белуга
|
||||||
|
Raw Whale Meat=Сырое китовое мясо
|
||||||
|
Cooked Whale Meat=Жаренное китовое мясо
|
||||||
|
Whale Blubber=Китовый жир
|
||||||
|
Blackbird=Черный дрозд
|
||||||
|
Black Grouse=Тетерев-косач
|
||||||
|
Boar=Кабан
|
||||||
|
Raw Pork=Сырая свинина
|
||||||
|
Cooked Pork=Жаренная свинина
|
||||||
|
Camel=Верблюд
|
||||||
|
Carp=Карп
|
||||||
|
Clamydosaurus=Плащеносная ящерица
|
||||||
|
Cockatoo=Какаду
|
||||||
|
Cockroach=Таракан
|
||||||
|
Roasted Cockroach=Жаренный таракан
|
||||||
|
Termite Concrete Wall=Стена с термитами
|
||||||
|
Termite Concrete Stair=Ступеньки с термитами
|
||||||
|
Termite Concrete Slab=Полублок с термитами
|
||||||
|
Termite Concrete White Wall=Белая стена с термитами
|
||||||
|
Termite Concrete White Stair=Белые ступеньки с термитами
|
||||||
|
Termite Concrete White Slab=Белый полублок с термитами
|
||||||
|
Termite Concrete Grey Wall=Серая стена с термитами
|
||||||
|
Termite Concrete Grey Stair=Серые ступеньки с термитами
|
||||||
|
Termite Concrete Grey Slab=Серый полублок с термитами
|
||||||
|
Termite Concrete Black Wall=Черная стена с термитами
|
||||||
|
Termite Concrete Black Stair=Черные ступеньки с термитами
|
||||||
|
Termite Concrete Black Slab=Черный полублок с термитами
|
||||||
|
Termite Concrete Blue Wall=Синяя стена с термитами
|
||||||
|
Termite Concrete Blue Stair=Синие ступеньки с термитами
|
||||||
|
Termite Concrete Blue Slab=Синий полублок с термитами
|
||||||
|
Termite Concrete Cyan Wall=Голубая стена с термитами
|
||||||
|
Termite Concrete Cyan Stair=Голубые ступеньки с термитами
|
||||||
|
Termite Concrete Cyan Slab=Голубой полублок с термитами
|
||||||
|
Termite Concrete Green Wall=Зеленая стена с термитами
|
||||||
|
Termite Concrete Green Stair=Зеленые ступеньки с термитами
|
||||||
|
Termite Concrete Green Slab=Зеленый полублок с термитами
|
||||||
|
Termite Concrete Dark Green Wall=Темно-зеленая стена с термитами
|
||||||
|
Termite Concrete Dark Green Stair=Темно-зеленые ступеньки с термитами
|
||||||
|
Termite Concrete Dark Green Slab=Темно-зеленый полублок с термитами
|
||||||
|
Termite Concrete Yellow Wall=Желтая стена с термитами
|
||||||
|
Termite Concrete Yellow Stair=Желтые ступеньки с термитами
|
||||||
|
Termite Concrete Yellow Slab=Желтый полублок с термитами
|
||||||
|
Termite Concrete Orange Wall=Оранжевая стена с термитами
|
||||||
|
Termite Concrete Orange Stair=Оранжевые ступеньки с термитами
|
||||||
|
Termite Concrete Orange Slab=Оранжевый полублок с термитами
|
||||||
|
Termite Concrete Brown Wall=Коричневая стена с термитами
|
||||||
|
Termite Concrete Brown Stair=Коричневые ступеньки с термитами
|
||||||
|
Termite Concrete Brown Slab=Коричневый полублок с термитами
|
||||||
|
Termite Concrete Red Wall=Красная стена с термитами
|
||||||
|
Termite Concrete Red Stair=Красные ступеньки с термитами
|
||||||
|
Termite Concrete Red Slab=Красный полублок с термитами
|
||||||
|
Termite Concrete Pink Wall=Розовая стена с термитами
|
||||||
|
Termite Concrete Pink Stair=Розовые ступеньки с термитами
|
||||||
|
Termite Concrete Pink Slab=Розовый полублок с термитами
|
||||||
|
Termite Concrete Magenta Wall=Пурпурная стена с термитами
|
||||||
|
Termite Concrete Magenta Stair=Пурпурные ступеньки с термитами
|
||||||
|
Termite Concrete Magenta Slab=Пурпурный полублок с термитами
|
||||||
|
Termite Concrete Violet Wall=Фиолетовая стена с термитами
|
||||||
|
Termite Concrete Violet Stair=Фиолетовые ступеньки с термитами
|
||||||
|
Termite Concrete Violet Slab=Фиолетовый полублок с термитами
|
||||||
|
Crab=Краб
|
||||||
|
Crocodile=Крокодил
|
||||||
|
Diving Beetle=Плавунец
|
||||||
|
Dragonfly=Стрекоза
|
||||||
|
Echidna=Ехидна
|
||||||
|
Elephant=Слон
|
||||||
|
Fox=Лиса
|
||||||
|
Frog=Лягушка
|
||||||
|
Goby=Бычок
|
||||||
|
Golden Mole=Слепыш
|
||||||
|
Goose=Гусь
|
||||||
|
Hare=Заяц
|
||||||
|
Raw Hare=Сырая зайчатина
|
||||||
|
Cooked Hare=Жаренная зайчатина
|
||||||
|
Hare Hide=Шкура кролика
|
||||||
|
Hermit Crab=Рак-отшельник
|
||||||
|
Hippo=Бегемот
|
||||||
|
Hyena=Гиена
|
||||||
|
Ibex=Козерог
|
||||||
|
Iguana=Игуана
|
||||||
|
Indian Rhino=Индийский носорог
|
||||||
|
Kangaroo=Кенгуру
|
||||||
|
Cobra=Кобра
|
||||||
|
Leopard Seal=Морской леопард
|
||||||
|
Lobster=Лобстер
|
||||||
|
Locust=Саранча
|
||||||
|
Roasted Locust=Жаренная саранча
|
||||||
|
Manatee=Ламантин
|
||||||
|
Marmot=Сурок
|
||||||
|
Monitor Lizard=Варан
|
||||||
|
Monkey=Обезъяна
|
||||||
|
Moose=Лось
|
||||||
|
Mosquito=Москит
|
||||||
|
Musk Ox=Овцебык
|
||||||
|
Bird Egg=Яйцо птицы
|
||||||
|
Fried Egg=Жаренное яйцо
|
||||||
|
Raw Birdmeat=Сырое птичье мясо
|
||||||
|
Cooked Birdmeat=Жаренное птичье мясо
|
||||||
|
Feather=Перо
|
||||||
|
Notoptera=Уховертка
|
||||||
|
Bug on Ice=Жук во льду
|
||||||
|
Dragonfly Nymph=Разнокрылая стрекоза
|
||||||
|
Oryx=Орикс
|
||||||
|
Otter=Выдра
|
||||||
|
Owl=Сова
|
||||||
|
Panda=Панда
|
||||||
|
Parrot=Попугай
|
||||||
|
Flying Parrot=Летающий попугай
|
||||||
|
Polar Bear=Белый медведь
|
||||||
|
Puffin=Тупик
|
||||||
|
Rat=Крыса
|
||||||
|
Cooked Rodent Meat=Жаренное мясо грызуна
|
||||||
|
Stingray=Скат
|
||||||
|
Termite Queen=Королева термитов
|
||||||
|
Termite Mound=Термитник
|
||||||
|
Termite Concrete=Блок с термитами
|
||||||
|
Termite Concrete Blue=Синий блок с термитами
|
||||||
|
Termite Concrete Green=Зеленый блок с термитами
|
||||||
|
Termite Concrete Yellow=Желтый блок с термитами
|
||||||
|
Termite Concrete Red=Красный блок с термитами
|
||||||
|
Termite Concrete Orange=Оранжевый блок с термитами
|
||||||
|
Termite Concrete Violet=Фиолетовый блок с термитами
|
||||||
|
Termite Concrete White=Белый блок с термитами
|
||||||
|
Termite Concrete Black=Черный блок с термитами
|
||||||
|
Termite Concrete Grey=Серый блок с термитами
|
||||||
|
Termite Concrete Dark Green=Зеленый блок с термитами
|
||||||
|
Termite Concrete Brown=Коричневый блок с термитами
|
||||||
|
Termite Concrete Pink=Розовый блок с термитами
|
||||||
|
Termite Concrete Magenta=Пурпурный блок с термитами
|
||||||
|
Termite Concrete Cyan=Голубой блок с термитами
|
||||||
|
Tortoise=Черепаха
|
||||||
|
Toucan=Тукан
|
||||||
|
Tree Lobster=Палочник
|
||||||
|
Anteater Pillow=Подушка из шкуры муравьеда
|
||||||
|
Anteater Pillow Left=Подушка из шкуры муравьеда повернутая влево
|
||||||
|
Anteater Pillow Right=Подушка из шкуры муравьеда повернутая вправо
|
||||||
|
Anteater Corpse=Труп муравьеда
|
||||||
|
Bear Trophy=Трофей с медведем
|
||||||
|
Bear Pelt=Ковер из шкуры медведя
|
||||||
|
Bear Pelt hanging=Вертикальный ковер из шкуры медведя
|
||||||
|
Bear Corpse=Труп медведя
|
||||||
|
Bear Stool=Стул с медведьей шкурой
|
||||||
|
Blackbird Pillow=Подушка из шкуры черного дятла
|
||||||
|
Blackbird Pillow Left=Подушка из шкуры черного дятла повернутая влево
|
||||||
|
Blackbird Pillow Right=Подушка из шкуры черного дятла повернутая вправо
|
||||||
|
Blackbird Corpse=Труп черного дятла
|
||||||
|
Blackbird Curtain=Занавеска из крыльев черного дятла
|
||||||
|
Boar Trophy=Трофей с кабаном
|
||||||
|
Boar Pelt=Ковер из шкуры кабана
|
||||||
|
Boar Pelt hanging=Вертикальный ковер из шкуры кабана
|
||||||
|
Boar Corpse=Труп кабана
|
||||||
|
Camel Pillow=Подушка из шкуры верблюда
|
||||||
|
Camel Pillow Left=Подушка из шкуры верблюда повернутая влево
|
||||||
|
Camel Pillow Right=Подушка из шкуры верблюда повернутая вправо
|
||||||
|
Camel Corpse=Труп верблюда
|
||||||
|
Camel Pelt=Ковер из шкуры верблюда
|
||||||
|
Camel Pelt hanging=Вертикальный ковер из шкуры верблюда
|
||||||
|
Camel Curtain=Занавески из шкуры верблюда
|
||||||
|
Crocodile Trophy=Трофей с крокодилом
|
||||||
|
Crocodile Corpse=Труп крокодила
|
||||||
|
Crocodile Stool=Стул с кожей крокодила
|
||||||
|
Crocodile Curtain=Занавески из кожи крокодила
|
||||||
|
Crocodile Skin=Кожа крокодила
|
||||||
|
Crocodile Skin hanging=Вертикальная кожа крокодила
|
||||||
|
Elephant Trophy=Трофей со слоном
|
||||||
|
Elephant Corpse=Труп слона
|
||||||
|
Ivory Table=Стол из слоновой кости
|
||||||
|
Ivory Chair=Стул из слоновой кости
|
||||||
|
Ivory Vase=Ваза из слоновой кости
|
||||||
|
Elephant Stool=Стул со шкурой слона
|
||||||
|
Gnu Pelt=Ковер из шкур антилопы гну
|
||||||
|
Gnu Pelt hanging=Вертикальный ковер из шкуры антилопы гну
|
||||||
|
Gnu Corpse=Труп антилопы гну
|
||||||
|
Gnu Trophy=Трофей с антилопой гну
|
||||||
|
Gnu Stool=Стул со шкурой антилопы гну
|
||||||
|
Gnu Curtain=Занавески из шкуры антилопы гну
|
||||||
|
Hippo Stool=Стул со шкурой гиппопотама
|
||||||
|
Hippo Curtain=Занавески из шкуры гиппопотама
|
||||||
|
Hippo Corpse=Труп гиппопотама
|
||||||
|
Hyena Trophy=Трофей с гиеной
|
||||||
|
Hyena Corpse=Труп гиены
|
||||||
|
Hyena Pillow=Подушка из шкуры гиены
|
||||||
|
Hyea Pillow Left=Подушка из шкуры гиены повернутая влево
|
||||||
|
Hyena Pillow Right=Подушка из шкуры гиены повернутая вправо
|
||||||
|
Kangaroo Corpse=Труп кенгуру
|
||||||
|
Kangaroo Pillow=Подушка из шкуры кенгуру
|
||||||
|
Kangaroo Pillow Left=Подушка из шкуры кенгуру повернутая вправо
|
||||||
|
Kangaroo Pillow Right=Подушка из шкуры кенгуру повернутая влево
|
||||||
|
Kangaroo Curtain=Занавески из шкуры кенгуру
|
||||||
|
Monitor Lizard Trophy=Трофей с вараном
|
||||||
|
Monitor Lizard Corpse=Труп варана
|
||||||
|
Monitor Lizard Stool=Стул со шкурой варана
|
||||||
|
Monitor Curtain=Занавески из шкуры варана
|
||||||
|
Moose Trophy=Трофей с лосем
|
||||||
|
Moose Pelt=Ковер из шкуры лося
|
||||||
|
Moose Pelt hanging=Вертикальный ковер из шкуры лося
|
||||||
|
Moose Corpse=Труп лося
|
||||||
|
Owl Trophy=Трофей с совой
|
||||||
|
Owl Corpse=Труп совы
|
||||||
|
Reindeer=Северный олень
|
||||||
|
Reindeer Trophy=Трофей с северным оленем
|
||||||
|
Reindeer Pelt=Ковер с шкуры северного оленя
|
||||||
|
Reindeer Pelt hanging=Вертикальный ковер из шкуры северного оленя
|
||||||
|
Reindeer Corpse=Труп северного оленя
|
||||||
|
Seal Pillow=Подушка из шкуры тюленя
|
||||||
|
Seal Pillow Left=Подушка из шкуры тюленя повернутая влево
|
||||||
|
Seal Pillow Right=Подушка из шкуры тюленя повернутая вправо
|
||||||
|
Seal Corpse=Труп тюленя
|
||||||
|
Seal Stool=Стул со шкурой тюленя
|
||||||
|
Seal Curtain=Занавески из шкуры тюленя
|
||||||
|
Seal=Тюлень
|
||||||
|
Shark Trophy=Трофей с акулой
|
||||||
|
Shark Corpse=Труп акулы
|
||||||
|
Vulture Pillow=Подушка из шкуры стервятника
|
||||||
|
Vulture Pillow Left=Подушка из шкуры стервятника повернутая влево
|
||||||
|
Vulture Pillow Right=Подушка из шкуры стервятника повернутая вправо
|
||||||
|
Vulture Corpse=Труп стервятника
|
||||||
|
Yak Trophy=Трофей с яком
|
||||||
|
Yak Pelt=Ковер из шкуры яка
|
||||||
|
Yak Pelt hanging=Вертикальный ковер из шкуры яка
|
||||||
|
Yak Corpse=Труп яка
|
||||||
|
Yak Stool=Стул со шкурой яка
|
||||||
|
Yak Curtain=Занавески из шкуры яка
|
||||||
|
Snow Leopard Trophy=Трофей с ирбисом
|
||||||
|
Snow Leopard Pillow=Подушка со шкурой ирбиса
|
||||||
|
Snow Leopard Pillow Left=Подушка со шкурой ирбиса повернутая влево
|
||||||
|
Snow Leopard Pillow Right=Подушка со шкурой ирбиса повернутая вправо
|
||||||
|
Snowleopard Corpse=Труп ирбиса
|
||||||
|
Tiger Trophy=Труп тигра
|
||||||
|
Tiger Pillow=Подушка со шкурой тигра
|
||||||
|
Tiger Pillow Left=Подушка со шкурой тигра повернутая влево
|
||||||
|
Tiger Pillow Right=Подушка со шкурой тигра повернутая вправо
|
||||||
|
Tiger Corpse=Труп тигра
|
||||||
|
Tiger Stool=Стул со шкурой тигра
|
||||||
|
Tiger Curtain=Занавески из шкурой тигра
|
||||||
|
Tiger Pelt=Ковер из шкуры тигра
|
||||||
|
Tiger Pelt hanging=Вертикальный ковер из шкуры тигра
|
||||||
|
Wolverine Trophy=Трофей с росомахой
|
||||||
|
Wolverine Corpse=Труп росомахи
|
||||||
|
Polar Bear Trophy=Трофей с белым медведем
|
||||||
|
Polar Bear Pelt=Ковер из шкуры белого медведя
|
||||||
|
Polar Bear Pelt hanging=Вертикальный ковер из шкуры белого медведя
|
||||||
|
Polar Bear Corpse=Труп белого медведя
|
||||||
|
Muskox Trophy=Трофей с овцебыком
|
||||||
|
Muskox Pelt=Ковер из шкуры овцебыка
|
||||||
|
Muskox Pelt hanging=Вертикальный ковер из шкуры овцебыка
|
||||||
|
Muskox Corpse=Труп из овцебыка
|
||||||
|
Muskox Stool=Стул со шкурой овцебыка
|
||||||
|
Trout=Форель
|
||||||
|
Tundra Shrub=Тундровый кустарник
|
||||||
|
Viper=Гадюка
|
||||||
|
Wolverine=Росомаха
|
||||||
|
Vulture=Стервятник
|
||||||
|
Wasp=Оса
|
||||||
|
Wasp Nest=Осиное гнездо
|
||||||
|
Wild Boar=Дикий кабан
|
||||||
|
Glass of Milk=Бутылка молока
|
||||||
|
Cheese=Сыр
|
||||||
|
Cheese Block=Сырный блок
|
||||||
|
Yak already milked!=Як уже подоен!
|
||||||
|
Bucket of Milk=Ведро молока
|
||||||
|
Raw Mollusk=Сырой моллюск
|
||||||
|
Fried Mollusk=Жаренный моллюск
|
||||||
|
Squid=Кальмар
|
||||||
|
Spider=Паук
|
||||||
|
Cooked Athropod=Жаренный атропод
|
||||||
|
Raw Athropod=Сырой атропод
|
||||||
|
Raw Fish=Сырая рыба
|
||||||
|
Cooked Fish=Жаренная рыба
|
||||||
|
Fish Food=Корм для рыбы
|
||||||
|
Snail=Улитка
|
||||||
|
Escargots=Эскарго
|
||||||
|
Stellers Sea Eagle=Белоплечий орлан
|
||||||
|
Spider Male=Паук-самец
|
||||||
|
Scorpion=Скорпион
|
||||||
|
Seahorse=Морской конек
|
||||||
|
Roadrunner=Кукушки-подорожники
|
||||||
|
Shark=Акула
|
||||||
|
Snow Leopard=Ирбис
|
||||||
|
Robin=Зарянка
|
107
mods/animalworld/locust.lua
Normal file
107
mods/animalworld/locust.lua
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:locust", {
|
||||||
|
stepheight = 3,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 0,
|
||||||
|
hp_min = 5,
|
||||||
|
hp_max = 20,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.1, -0.01, -0.1, 0.1, 0.2, 0.1},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Locust.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"texturelocust.png"},
|
||||||
|
},
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_locust",
|
||||||
|
distance = 16,
|
||||||
|
},
|
||||||
|
makes_footstep_sound = false,
|
||||||
|
walk_velocity = 3,
|
||||||
|
walk_chance = 15,
|
||||||
|
run_velocity = 4,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = true,
|
||||||
|
jump_height = 6,
|
||||||
|
stepheight = 3,
|
||||||
|
stay_near = {{"default:dry_grass_1", "default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4", "naturalbiomes:bushland_grass", "naturalbiomes:bushland_grass2", "naturalbiomes:bushland_grass3", "naturalbiomes:bushland_grass4"}, 4},
|
||||||
|
drops = {
|
||||||
|
{name = "animalworld:locust", chance = 1, min = 1, max = 1},
|
||||||
|
|
||||||
|
},
|
||||||
|
water_damage = 1,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 10,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 100,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
stand2_start = 0,
|
||||||
|
stand2_end = 1,
|
||||||
|
walk_start = 100,
|
||||||
|
walk_end = 200,
|
||||||
|
fly_start = 250, -- swim animation
|
||||||
|
fly_end = 350,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
fly_in = {"air"},
|
||||||
|
floats = 0,
|
||||||
|
follow = {"default:dry_shrub ", "default:grass_1", "ethereal:dry_shrub", "farming:seed_wheat", "farming:seed_rye", "default:junglegrass", "ethereal:banana_single", "farming:corn_cob", "farming:cabbage",
|
||||||
|
"default:apple", "farming:cabbage", "farming:carrot", "farming:cucumber", "farming:grapes", "farming:pineapple", "ethereal:orange", "ethereal:coconut", "ethereal:coconut_slice", "group:grass", "group:normal_grass"},
|
||||||
|
|
||||||
|
view_range = 4,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 15, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:locust",
|
||||||
|
nodes = {"default:dry_dirt_with_dry_grass", "mcl_core:dirt_with_grass", "ethereal:prairie_dirt", "naturalbiomes:bushland_bushlandlitter"},
|
||||||
|
neighbors = {"naturalbiomes:heath_grass", "mcl_flowers:tallgrass", "naturalbiomes:heath_grass2", "naturalbiomes:heath_grass3", "naturalbiomes:heatherflower", "naturalbiomes:heatherflower2", "naturalbiomes:heatherflower3", "group:grass", "group:normal_grass", "naturalbiomes:med_flower2", "naturalbiomes:med_grass1", "naturalbiomes:med_grass2", "naturalbiomes:med_flower3", "naturalbiomes:bushland_grass4", "naturalbiomes:bushland_grass5", "naturalbiomes:bushland_grass6", "group:grass", "group:normal_grass"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = 10,
|
||||||
|
max_height = 75,
|
||||||
|
day_toggle = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:locust", S("Locust"), "alocust.png")
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craftitem(":animalworld:locust_roasted", {
|
||||||
|
description = S("Roasted Locust"),
|
||||||
|
inventory_image = "animalworld_locust_roasted.png",
|
||||||
|
on_use = minetest.item_eat(8),
|
||||||
|
groups = {food_meat = 1, flammable = 2},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "cooking",
|
||||||
|
output = "animalworld:locust_roasted",
|
||||||
|
recipe = "animalworld:locust",
|
||||||
|
cooktime = 2,
|
||||||
|
})
|
||||||
|
|
118
mods/animalworld/manatee.lua
Normal file
118
mods/animalworld/manatee.lua
Normal file
|
@ -0,0 +1,118 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
local random = math.random
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:manatee", {
|
||||||
|
stepheight = 0.0,
|
||||||
|
type = "animal",
|
||||||
|
passive = true,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
attack_animals = false,
|
||||||
|
reach = 1,
|
||||||
|
damage = 1,
|
||||||
|
hp_min = 50,
|
||||||
|
hp_max = 80,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.7, -0.01, -0.7, 0.7, 0.95, 0.7},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Manatee.b3d",
|
||||||
|
visual_size = {x = 1.0, y = 1.0},
|
||||||
|
textures = {
|
||||||
|
{"texturemanatee.png"},
|
||||||
|
},
|
||||||
|
sounds = {},
|
||||||
|
makes_footstep_sound = false,
|
||||||
|
walk_velocity = 0.5,
|
||||||
|
run_velocity = 2,
|
||||||
|
fly = true,
|
||||||
|
fly_in = "default:water_source", "default:river_water_source", "default:water_flowing", "default:river_water_flowing", "mcl_core:water_source", "mcl_core:water_flowing",
|
||||||
|
fall_speed = 0,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = false,
|
||||||
|
stepheight = 0.0,
|
||||||
|
stay_near = {{"marinara:sand_with_alage", "marinara:sand_with_seagrass", "mcl_flowers:waterlily", "mcl_ocean:seagrass:sand", "default:sand_with_kelp", "marinara:sand_with_kelp", "marinara:reed_root", "flowers:waterlily_waving", "naturalbiomes:waterlily", "default:clay"}, 5},
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 4,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 2,
|
||||||
|
animation = {
|
||||||
|
speed_normal = 75,
|
||||||
|
stand_speed = 40,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
fly_start = 100, -- swim animation
|
||||||
|
fly_end = 250,
|
||||||
|
punch_start = 100,
|
||||||
|
punch_end = 200,
|
||||||
|
die_start = 100,
|
||||||
|
die_end = 200,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
fly_in = {"default:water_source", "default:river_water_source", "default:water_flowing", "mcl_core:water_source", "mcl_core:water_flowing"},
|
||||||
|
floats = 0,
|
||||||
|
follow = {
|
||||||
|
"default:kelp", "mcl_flowers:tallgrass", "mcl_core:deadbush", "mcl_bamboo:bamboo", "seaweed", "marinara:sand_with_seagrass", "marinara:sand_with_seagrass2", "xocean:kelp",
|
||||||
|
"default:grass", "farming:cucumber", "farming:cabbage", "xocean:seagrass", "farming:lettuce", "default:junglegrass", "group:grass", "group:normal_grass"
|
||||||
|
},
|
||||||
|
view_range = 10,
|
||||||
|
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
-- feed or tame
|
||||||
|
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||||
|
if mobs:protect(self, clicker) then return end
|
||||||
|
if mobs:capture_mob(self, clicker, 0, 15, 25, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:manatee",
|
||||||
|
nodes = {"mcl_core:water_source", "default:water_source"}, {"default:river_water_source"}, {"mcl_core:water_source"}, {"mcl_core:water_flowing"},
|
||||||
|
neighbors = {"marinara:sand_with_seagrass", "default:sand_with_kelp", "marinara:sand_with_kelp", "mcl_ocean:seagrass:sand", "mcl_ocean:bubble_coral", "mcl_ocean:tube_coral", "mcl_ocean:fire_coral", "mcl_ocean:brain_coral"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 30,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 2,
|
||||||
|
min_height = -10,
|
||||||
|
max_height = 10,
|
||||||
|
day_toggle = true,
|
||||||
|
|
||||||
|
on_spawn = function(self, pos)
|
||||||
|
|
||||||
|
local nods = minetest.find_nodes_in_area_under_air(
|
||||||
|
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
|
||||||
|
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
|
||||||
|
{"default:water_source", "default:river_water_source"})
|
||||||
|
|
||||||
|
if nods and #nods > 0 then
|
||||||
|
|
||||||
|
-- min herd of 2
|
||||||
|
local iter = math.min(#nods, 2)
|
||||||
|
|
||||||
|
-- print("--- manatee at", minetest.pos_to_string(pos), iter)
|
||||||
|
|
||||||
|
for n = 1, iter do
|
||||||
|
|
||||||
|
local pos2 = nods[random(#nods)]
|
||||||
|
local kid = random(4) == 1 and true or nil
|
||||||
|
|
||||||
|
pos2.y = pos2.y + 2
|
||||||
|
|
||||||
|
if minetest.get_node(pos2).name == "air" then
|
||||||
|
|
||||||
|
mobs:add_mob(pos2, {
|
||||||
|
name = "animalworld:manatee", child = kid})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:manatee", S("Manatee"), "amanatee.png")
|
131
mods/animalworld/marmot.lua
Normal file
131
mods/animalworld/marmot.lua
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
local S = minetest.get_translator("animalworld")
|
||||||
|
local random = math.random
|
||||||
|
|
||||||
|
mobs:register_mob("animalworld:marmot", {
|
||||||
|
stepheight = 2,
|
||||||
|
type = "animal",
|
||||||
|
passive = false,
|
||||||
|
attack_type = "dogfight",
|
||||||
|
group_attack = true,
|
||||||
|
owner_loyal = true,
|
||||||
|
attack_npcs = false,
|
||||||
|
reach = 2,
|
||||||
|
damage = 1,
|
||||||
|
hp_min = 10,
|
||||||
|
hp_max = 30,
|
||||||
|
armor = 100,
|
||||||
|
collisionbox = {-0.3, -0.01, -0.3, 0.3, 0.95, 0.3},
|
||||||
|
visual = "mesh",
|
||||||
|
mesh = "Marmot.b3d",
|
||||||
|
textures = {
|
||||||
|
{"texturemarmot.png"},
|
||||||
|
},
|
||||||
|
makes_footstep_sound = true,
|
||||||
|
sounds = {
|
||||||
|
random = "animalworld_marmot",
|
||||||
|
damage = "animalworld_marmot2",
|
||||||
|
},
|
||||||
|
walk_velocity = 2,
|
||||||
|
run_velocity = 3,
|
||||||
|
runaway = true,
|
||||||
|
runaway_from = {"animalworld:bear", "animalworld:crocodile", "animalworld:tiger", "animalworld:spider", "animalworld:spidermale", "animalworld:shark", "animalworld:hyena", "animalworld:kobra", "animalworld:monitor", "animalworld:snowleopard", "animalworld:volverine", "livingfloatlands:deinotherium", "livingfloatlands:carnotaurus", "livingfloatlands:lycaenops", "livingfloatlands:smilodon", "livingfloatlands:tyrannosaurus", "livingfloatlands:velociraptor", "animalworld:divingbeetle", "animalworld:scorpion", "animalworld:polarbear", "animalworld:leopardseal", "animalworld:stellerseagle", "player", "animalworld:wolf", "animalworld:panda", "animalworld:stingray", "marinaramobs:jellyfish", "marinaramobs:octopus", "livingcavesmobs:biter", "livingcavesmobs:flesheatingbacteria"},
|
||||||
|
jump = false,
|
||||||
|
jump_height = 6,
|
||||||
|
pushable = true,
|
||||||
|
follow = {"default:grass_3", "default:dry_grass_3", "ethereal:dry_shrub", "mcl_flowers:tallgrass", "mcl_flowers:tulip_red", "mcl_flowers:sunflower", "farming:lettuce", "farming:seed_wheat", "default:junglegrass", "naturalbiomes:alpine_grass1", "naturalbiomes:alpine_grass2", "naturalbiomes:alpine_grass3", "naturalbiomes:alpine_dandelion", "livingdesert:coldsteppe_grass1", "livingdesert:coldsteppe_grass2"},
|
||||||
|
view_range = 10,
|
||||||
|
drops = {
|
||||||
|
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||||
|
{name = "mobs:leather", chance = 1, min = 0, max = 2},
|
||||||
|
},
|
||||||
|
water_damage = 0,
|
||||||
|
lava_damage = 5,
|
||||||
|
light_damage = 0,
|
||||||
|
fear_height = 3,
|
||||||
|
stay_near = {{"naturalbiomes:alpine_grass1", "naturalbiomes:alpine_grass2", "naturalbiomes:alpine_grass3", "naturalbiomes:alpine_dandelion", "naturalbiomes:alpine_edelweiss", "livingdesert:coldsteppe_grass1", "livingdesert:coldsteppe_grass2", "livingdesert:coldsteppe_grass3"}, 5},
|
||||||
|
animation = {
|
||||||
|
speed_normal = 90,
|
||||||
|
stand_start = 0,
|
||||||
|
stand_end = 100,
|
||||||
|
stand1_start = 100,
|
||||||
|
stand1_end = 200,
|
||||||
|
stand2_start = 350,
|
||||||
|
stand2_end = 450,
|
||||||
|
walk_start = 200,
|
||||||
|
walk_end = 300,
|
||||||
|
punch_start = 200,
|
||||||
|
punch_end = 300,
|
||||||
|
die_start = 200,
|
||||||
|
die_end = 300,
|
||||||
|
die_speed = 50,
|
||||||
|
die_loop = false,
|
||||||
|
die_rotate = true,
|
||||||
|
},
|
||||||
|
on_rightclick = function(self, clicker)
|
||||||
|
|
||||||
|
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, 25, 0, false, nil) then return end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local spawn_on = {"default:desert_sand", "default:dry_dirt_with_dry_grass"}
|
||||||
|
|
||||||
|
if minetest.get_mapgen_setting("mg_name") ~= "v6" then
|
||||||
|
spawn_on = {"default:desert_sand", "default:dry_dirt_with_dry_grass"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.get_modpath("ethereal") then
|
||||||
|
spawn_on = {"ethereal:grass_grove", "default:desert_sand", "ethereal:dry_dirt"}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not mobs.custom_spawn_animalworld then
|
||||||
|
mobs:spawn({
|
||||||
|
name = "animalworld:marmot",
|
||||||
|
nodes = {"naturalbiomes:alpine_litter", "mcl_core:dirt_with_grass", "livingdesert:coldsteppe_ground2", "mcl_core:stone", "mcl_core:granite"},
|
||||||
|
neighbors = {"naturalbiomes:alpine_grass1", "mcl_flowers:tallgrass", "mcl_flowers:double:fern", "mcl_flowers:fern", "naturalbiomes:alpine_grass2", "naturalbiomes:alpine_grass3", "naturalbiomes:alpine_dandelion", "naturalbiomes:alpine_edelweiss", "livingdesert:coldsteppe_grass1", "livingdesert:coldsteppe_grass2", "livingdesert:coldsteppe_grass3"},
|
||||||
|
min_light = 0,
|
||||||
|
interval = 60,
|
||||||
|
chance = 2000, -- 15000
|
||||||
|
active_object_count = 4,
|
||||||
|
min_height = 30,
|
||||||
|
max_height = 31000,
|
||||||
|
day_toggle = true,
|
||||||
|
|
||||||
|
on_spawn = function(self, pos)
|
||||||
|
|
||||||
|
local nods = minetest.find_nodes_in_area_under_air(
|
||||||
|
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
|
||||||
|
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
|
||||||
|
{"naturalbiomes:alpine_litter", "livingdesert:coldsteppe_ground2"})
|
||||||
|
|
||||||
|
if nods and #nods > 0 then
|
||||||
|
|
||||||
|
-- min herd of 4
|
||||||
|
local iter = math.min(#nods, 4)
|
||||||
|
|
||||||
|
-- print("--- marmot at", minetest.pos_to_string(pos), iter)
|
||||||
|
|
||||||
|
for n = 1, iter do
|
||||||
|
|
||||||
|
local pos2 = nods[random(#nods)]
|
||||||
|
local kid = random(4) == 1 and true or nil
|
||||||
|
|
||||||
|
pos2.y = pos2.y + 2
|
||||||
|
|
||||||
|
if minetest.get_node(pos2).name == "air" then
|
||||||
|
|
||||||
|
mobs:add_mob(pos2, {
|
||||||
|
name = "animalworld:marmot", child = kid})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
mobs:register_egg("animalworld:marmot", S("Marmot"), "amarmot.png")
|
||||||
|
|
||||||
|
|
||||||
|
mobs:alias_mob("animalworld:marmot", "animalworld:marmot") -- compatibility
|
||||||
|
|
8
mods/animalworld/mod.conf
Normal file
8
mods/animalworld/mod.conf
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
name = animalworld
|
||||||
|
depends = mobs
|
||||||
|
optional_depends = default, mcl_core, mcl_sounds, bucket, ethereal, xocean, farming, fishing, hunger_ng, livingcaves
|
||||||
|
description = Adds various wild animals to your Minetest Game world.
|
||||||
|
|
||||||
|
release = 24027
|
||||||
|
author = Liil
|
||||||
|
title = Wilhelmines Animal World
|
BIN
mods/animalworld/models/Ant.b3d
Normal file
BIN
mods/animalworld/models/Ant.b3d
Normal file
Binary file not shown.
BIN
mods/animalworld/models/Anteater.b3d
Normal file
BIN
mods/animalworld/models/Anteater.b3d
Normal file
Binary file not shown.
BIN
mods/animalworld/models/Anthil.b3d
Normal file
BIN
mods/animalworld/models/Anthil.b3d
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue