fixes
|
@ -501,7 +501,7 @@ armor.get_player_skin = function(self, name)
|
||||||
elseif self.skin_mod == "wardrobe" and wardrobe.playerSkins and wardrobe.playerSkins[name] then
|
elseif self.skin_mod == "wardrobe" and wardrobe.playerSkins and wardrobe.playerSkins[name] then
|
||||||
return wardrobe.playerSkins[name]
|
return wardrobe.playerSkins[name]
|
||||||
end
|
end
|
||||||
local gender = player:get_meta():get_string("gender")
|
local gender = player:get_meta():get_string("gender")
|
||||||
return player_api.registered_models[player_api.get_gender_model(gender)].textures[1]
|
return player_api.registered_models[player_api.get_gender_model(gender)].textures[1]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,7 @@ end
|
||||||
|
|
||||||
if minetest.get_modpath("technic") then
|
if minetest.get_modpath("technic") then
|
||||||
armor.formspec = armor.formspec..
|
armor.formspec = armor.formspec..
|
||||||
"label[5,2.5;"..F(S("Radiation"))..": armor_group_radiation]"
|
"label[5,2.5;"..F(S("Radiation"))..": armor_group_radiation]"
|
||||||
armor:register_armor_group("radiation")
|
armor:register_armor_group("radiation")
|
||||||
end
|
end
|
||||||
local skin_mods = {"skins", "u_skins", "simple_skins", "wardrobe"}
|
local skin_mods = {"skins", "u_skins", "simple_skins", "wardrobe"}
|
||||||
|
@ -94,9 +94,9 @@ dofile(modpath.."/armor.lua")
|
||||||
|
|
||||||
armor.formspec = armor.formspec..
|
armor.formspec = armor.formspec..
|
||||||
"label[5,1;"..F(S("Level"))..": armor_level]"..
|
"label[5,1;"..F(S("Level"))..": armor_level]"..
|
||||||
"label[5,1.5;"..F(S("Heal"))..": armor_attr_heal]"
|
"label[5,1.5;"..F(S("Heal"))..": armor_attr_heal]"
|
||||||
if armor.config.fire_protect then
|
if armor.config.fire_protect then
|
||||||
armor.formspec = armor.formspec.."label[5,2;"..F(S("Fire"))..": armor_attr_fire]"
|
armor.formspec = armor.formspec.."label[5,2;"..F(S("Fire"))..": armor_attr_fire]"
|
||||||
end
|
end
|
||||||
armor:register_on_damage(function(player, index, stack)
|
armor:register_on_damage(function(player, index, stack)
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
|
@ -192,6 +192,9 @@ local function init_player_armor(initplayer)
|
||||||
armor:set_player_armor(player)
|
armor:set_player_armor(player)
|
||||||
end,
|
end,
|
||||||
allow_put = function(inv, listname, index, put_stack, player)
|
allow_put = function(inv, listname, index, put_stack, player)
|
||||||
|
if player:get_player_name() ~= name then
|
||||||
|
return 0
|
||||||
|
end
|
||||||
local element = armor:get_element(put_stack:get_name())
|
local element = armor:get_element(put_stack:get_name())
|
||||||
if not element then
|
if not element then
|
||||||
return 0
|
return 0
|
||||||
|
@ -207,9 +210,15 @@ local function init_player_armor(initplayer)
|
||||||
return 1
|
return 1
|
||||||
end,
|
end,
|
||||||
allow_take = function(inv, listname, index, stack, player)
|
allow_take = function(inv, listname, index, stack, player)
|
||||||
|
if player:get_player_name() ~= name then
|
||||||
|
return 0
|
||||||
|
end
|
||||||
return stack:get_count()
|
return stack:get_count()
|
||||||
end,
|
end,
|
||||||
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
|
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
|
||||||
|
if player:get_player_name() ~= name then
|
||||||
|
return 0
|
||||||
|
end
|
||||||
return count
|
return count
|
||||||
end,
|
end,
|
||||||
}, name)
|
}, name)
|
||||||
|
@ -308,7 +317,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
if not name then
|
if not name then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local player_name = player:get_player_name()
|
local player_name = player:get_player_name()
|
||||||
for field, _ in pairs(fields) do
|
for field, _ in pairs(fields) do
|
||||||
if string.find(field, "skins_set") then
|
if string.find(field, "skins_set") then
|
||||||
armor:update_skin(player_name)
|
armor:update_skin(player_name)
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit a6777dc539625ff863c73cecfb9addffb12825db
|
|
@ -155,7 +155,8 @@ function beds.register_bed(name, def)
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
pointable = false,
|
pointable = false,
|
||||||
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, bed = 2},
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, bed = 2,
|
||||||
|
not_in_creative_inventory = 1},
|
||||||
sounds = def.sounds or default.node_sound_wood_defaults(),
|
sounds = def.sounds or default.node_sound_wood_defaults(),
|
||||||
drop = name .. "_bottom",
|
drop = name .. "_bottom",
|
||||||
node_box = {
|
node_box = {
|
||||||
|
|
|
@ -75,7 +75,7 @@ local function lay_down(player, pos, bed_pos, state, skip)
|
||||||
player:set_eye_offset({x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
|
player:set_eye_offset({x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
|
||||||
player:set_look_horizontal(math.random(1, 180) / 100)
|
player:set_look_horizontal(math.random(1, 180) / 100)
|
||||||
player_api.player_attached[name] = false
|
player_api.player_attached[name] = false
|
||||||
player:set_physics_override(1, 1, 1)
|
player:set_physics_override({speed = 1, jump = 1, gravity = 1})
|
||||||
hud_flags.wielditem = true
|
hud_flags.wielditem = true
|
||||||
player_api.set_animation(player, "stand" , 30)
|
player_api.set_animation(player, "stand" , 30)
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ local function lay_down(player, pos, bed_pos, state, skip)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Check if player is moving
|
-- Check if player is moving
|
||||||
if vector.length(player:get_player_velocity()) > 0.001 then
|
if vector.length(player:get_velocity()) > 0.001 then
|
||||||
minetest.chat_send_player(name, S("You have to stop moving before going to bed!"))
|
minetest.chat_send_player(name, S("You have to stop moving before going to bed!"))
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
@ -112,7 +112,7 @@ local function lay_down(player, pos, bed_pos, state, skip)
|
||||||
y = bed_pos.y + 0.07,
|
y = bed_pos.y + 0.07,
|
||||||
z = bed_pos.z + dir.z / 2
|
z = bed_pos.z + dir.z / 2
|
||||||
}
|
}
|
||||||
player:set_physics_override(0, 0, 0)
|
player:set_physics_override({speed = 0, jump = 0, gravity = 0})
|
||||||
player:set_pos(p)
|
player:set_pos(p)
|
||||||
player_api.player_attached[name] = true
|
player_api.player_attached[name] = true
|
||||||
hud_flags.wielditem = false
|
hud_flags.wielditem = false
|
||||||
|
@ -284,4 +284,3 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
# textdomain: beds
|
||||||
|
Leave Bed=Opusti posteľ
|
||||||
|
Good morning.=Dobré ráno.
|
||||||
|
@1 of @2 players are in bed=@1 z @2 hráčov sú v posteli
|
||||||
|
Force night skip=Nútene preskočiť noc
|
||||||
|
You can only sleep at night.=Môžeš spať len v noci.
|
||||||
|
Fancy Bed=Pekná posteľ
|
||||||
|
Simple Bed=Jednoduchá posteľ
|
|
@ -0,0 +1,3 @@
|
||||||
|
# textdomain: binoculars
|
||||||
|
Binoculars=Ďalekohľad
|
||||||
|
Use with 'Zoom' key=Použi s klávesou "Priblíž"
|
|
@ -0,0 +1,4 @@
|
||||||
|
# textdomain: boats
|
||||||
|
Boat cruise mode on=Cestovný režim loďky zapnutý
|
||||||
|
Boat cruise mode off=Cestovný režim loďky vypnutý
|
||||||
|
Boat=Loďka
|
|
@ -0,0 +1,8 @@
|
||||||
|
# textdomain: bones
|
||||||
|
Bones=Kosti
|
||||||
|
@1's old bones=Staré kosti hráča @1
|
||||||
|
@1 died at @2.=@1 zomrel na pozícií @2.
|
||||||
|
@1 died at @2, and dropped their inventory.=@1 zomrel na pozícií @2 a vysypal svoj inventár.
|
||||||
|
@1 died at @2, and bones were placed.=@1 zomrel na pozícií @2 a ostali po ňom kosti.
|
||||||
|
@1's fresh bones=Čerstvé kosti hráča @1
|
||||||
|
@1's bones=Kosti hráča @1
|
|
@ -0,0 +1,5 @@
|
||||||
|
# textdomain: bucket
|
||||||
|
Empty Bucket=Prázdne vedro
|
||||||
|
Water Bucket=Vedro s vodou
|
||||||
|
River Water Bucket=Vedro s vodou z rieky
|
||||||
|
Lava Bucket=Vedro s lávou
|
|
@ -0,0 +1,4 @@
|
||||||
|
# textdomain: butterflies
|
||||||
|
White Butterfly=Biely motýlik
|
||||||
|
Red Butterfly=Červený motýlik
|
||||||
|
Violet Butterfly=Fialový motýlik
|
|
@ -0,0 +1,6 @@
|
||||||
|
# textdomain: carts
|
||||||
|
Cart=Vozík
|
||||||
|
(Sneak+Click to pick up)=(Zakrádanie sa + Klik pre zdvihnutie)
|
||||||
|
Rail=Koľajnica
|
||||||
|
Powered Rail=Koľajnica s pohonom
|
||||||
|
Brake Rail=Brzdná koľajnica
|
|
@ -0,0 +1,10 @@
|
||||||
|
# textdomain: creative
|
||||||
|
Allow player to use creative inventory=Povolí hráčovi použivať kreatívny inventár
|
||||||
|
Search=Hľadaj
|
||||||
|
Reset=Vrátiť späť
|
||||||
|
Previous page=Predchádzajúca stránka
|
||||||
|
Next page=Nasledujúca stránka
|
||||||
|
All=Všetko
|
||||||
|
Nodes=Kocky
|
||||||
|
Tools=Nástroje
|
||||||
|
Items=Veci
|
|
@ -19,17 +19,17 @@ Mese Crystal=Кристалл Месе
|
||||||
Gold Lump=Кусок Золота
|
Gold Lump=Кусок Золота
|
||||||
Diamond=Алмаз
|
Diamond=Алмаз
|
||||||
Clay Lump=Ком Глины
|
Clay Lump=Ком Глины
|
||||||
Steel Ingot=Железный Брусок
|
Steel Ingot=Железный Слиток
|
||||||
Copper Ingot=Медный Брусок
|
Copper Ingot=Медный Слиток
|
||||||
Tin Ingot=Оловянный Брусок
|
Tin Ingot=Оловянный Слиток
|
||||||
Bronze Ingot=Бронзовый Брусок
|
Bronze Ingot=Бронзовый Слиток
|
||||||
Gold Ingot=Золотой Брусок
|
Gold Ingot=Золотой Слиток
|
||||||
Mese Crystal Fragment=Осколок Кристалла Месе
|
Mese Crystal Fragment=Осколок Кристалла Месе
|
||||||
Clay Brick=Глиняный Кирпич
|
Clay Brick=Глиняный Кирпич
|
||||||
Obsidian Shard=Обсидиановый Осколок
|
Obsidian Shard=Обсидиановый Осколок
|
||||||
Flint=Огниво
|
Flint=Кремень
|
||||||
Blueberries=Черника
|
Blueberries=Черника
|
||||||
Furnace is empty=Печь пустая
|
Furnace is empty=Печь пуста
|
||||||
100% (output full)=100% (полное приготовление)
|
100% (output full)=100% (полное приготовление)
|
||||||
@1%=@1%
|
@1%=@1%
|
||||||
Empty=Пустое
|
Empty=Пустое
|
||||||
|
@ -80,29 +80,29 @@ Snow=Снег
|
||||||
Snow Block=Снежный Блок
|
Snow Block=Снежный Блок
|
||||||
Ice=Лёд
|
Ice=Лёд
|
||||||
Cave Ice=Пещерный Лёд
|
Cave Ice=Пещерный Лёд
|
||||||
Apple Tree=Яблоневый Ствол
|
Apple Tree=Ствол Яблони
|
||||||
Apple Wood Planks=Яблоневые Деревянные Доски
|
Apple Wood Planks=Яблоневые Доски
|
||||||
Apple Tree Sapling=Яблоневый Саженец
|
Apple Tree Sapling=Саженец Яблони
|
||||||
Apple Tree Leaves=Яблоневая Листва
|
Apple Tree Leaves=Яблоневая Листва
|
||||||
Apple=Яблоко
|
Apple=Яблоко
|
||||||
Apple Marker=Яблочная Метка
|
Apple Marker=Яблочная Метка
|
||||||
Jungle Tree=Ствол Тропического Дерева
|
Jungle Tree=Ствол Тропического Дерева
|
||||||
Jungle Wood Planks=Деревянные Доски Тропического Дерева
|
Jungle Wood Planks=Доски из Тропического Дерева
|
||||||
Jungle Tree Leaves=Листва Тропического Дерева
|
Jungle Tree Leaves=Листва Тропического Дерева
|
||||||
Jungle Tree Sapling=Саженец Тропического Дерева
|
Jungle Tree Sapling=Саженец Тропического Дерева
|
||||||
Emergent Jungle Tree Sapling=Выросший Саженец Тропического Дерева
|
Emergent Jungle Tree Sapling=Выросший Саженец Тропического Дерева
|
||||||
Pine Tree=Сосновый Ствол
|
Pine Tree=Сосновый Ствол
|
||||||
Pine Wood Planks=Сосновые Деревянные Доски
|
Pine Wood Planks=Сосновые Доски
|
||||||
Pine Needles=Сосновая Хвоя
|
Pine Needles=Сосновая Хвоя
|
||||||
Pine Tree Sapling=Сосновый Саженец
|
Pine Tree Sapling=Саженец Сосны
|
||||||
Acacia Tree=Ствол Акации
|
Acacia Tree=Ствол Акации
|
||||||
Acacia Wood Planks=Деревянные Доски Акации
|
Acacia Wood Planks=Доски Акации
|
||||||
Acacia Tree Leaves=Листва Акации
|
Acacia Tree Leaves=Листва Акации
|
||||||
Acacia Tree Sapling=Саженец Акации
|
Acacia Tree Sapling=Саженец Акации
|
||||||
Aspen Tree=Осиновый Ствол
|
Aspen Tree=Ствол Осины
|
||||||
Aspen Wood Planks=Осиновые Деревянные Доски
|
Aspen Wood Planks=Осиновые Доски
|
||||||
Aspen Tree Leaves=Осиновая Листва
|
Aspen Tree Leaves=Осиновая Листва
|
||||||
Aspen Tree Sapling=Осиновый Саженец
|
Aspen Tree Sapling=Саженец Осины
|
||||||
Coal Ore=Уголь
|
Coal Ore=Уголь
|
||||||
Coal Block=Угольный Блок
|
Coal Block=Угольный Блок
|
||||||
Iron Ore=Железная Руда
|
Iron Ore=Железная Руда
|
||||||
|
@ -119,7 +119,7 @@ Gold Block=Золотой Блок
|
||||||
Diamond Ore=Алмаз
|
Diamond Ore=Алмаз
|
||||||
Diamond Block=Алмазный Блок
|
Diamond Block=Алмазный Блок
|
||||||
Cactus=Кактус
|
Cactus=Кактус
|
||||||
Large Cactus Seedling=Кактусовый Саженец
|
Large Cactus Seedling=Саженец Кактуса
|
||||||
Papyrus=Папирус
|
Papyrus=Папирус
|
||||||
Dry Shrub=Сухой Куст
|
Dry Shrub=Сухой Куст
|
||||||
Jungle Grass=Тропическая Трава
|
Jungle Grass=Тропическая Трава
|
||||||
|
@ -127,23 +127,23 @@ Grass=Трава
|
||||||
Dry Grass=Сухая Трава
|
Dry Grass=Сухая Трава
|
||||||
Fern=Папоротник
|
Fern=Папоротник
|
||||||
Marram Grass=Песколюб
|
Marram Grass=Песколюб
|
||||||
Bush Stem=Ствол Яблочного Деревца
|
Bush Stem=Стебли Куста
|
||||||
Bush Leaves=Листья Яблочного Деревца
|
Bush Leaves=Листья Куста
|
||||||
Bush Sapling=Саженца яблочного деревца
|
Bush Sapling=Саженец Куста
|
||||||
Blueberry Bush Leaves with Berries=Куст Черники с Ягодами
|
Blueberry Bush Leaves with Berries=Куст Черники с Ягодами
|
||||||
Blueberry Bush Leaves=Куст Черники
|
Blueberry Bush Leaves=Куст Черники
|
||||||
Blueberry Bush Sapling=Саженца Куста Черники
|
Blueberry Bush Sapling=Саженец Куста Черники
|
||||||
Acacia Bush Stem=Ствол Деревца Акации
|
Acacia Bush Stem=Стебли Куста Акации
|
||||||
Acacia Bush Leaves=Листья Деревца Акации
|
Acacia Bush Leaves=Листья Куста Акации
|
||||||
Acacia Bush Sapling=Саженца Деревца Акации
|
Acacia Bush Sapling=Саженец Куста Акации
|
||||||
Pine Bush Stem=Сосновое Деревце
|
Pine Bush Stem=Стебли Хвойного Куста
|
||||||
Pine Bush Needles=Хвоя Соснового Деревца
|
Pine Bush Needles=Хвоя Куста
|
||||||
Pine Bush Sapling=Саженца Соснового Деревца
|
Pine Bush Sapling=Саженец Хвойного Куста
|
||||||
Kelp=Ламинария
|
Kelp=Ламинария
|
||||||
Green Coral=Зеленый Коралл
|
Green Coral=Зеленый Коралл
|
||||||
Pink Coral=Розовый Коралл
|
Pink Coral=Розовый Коралл
|
||||||
Cyan Coral=Голубой Коралл
|
Cyan Coral=Голубой Коралл
|
||||||
Brown Coral=Бурый Коралл
|
Brown Coral=Коричневый Коралл
|
||||||
Orange Coral=Оранжевый Коралл
|
Orange Coral=Оранжевый Коралл
|
||||||
Coral Skeleton=Коралловый Остов
|
Coral Skeleton=Коралловый Остов
|
||||||
Water Source=Водный Источник
|
Water Source=Водный Источник
|
||||||
|
|
|
@ -0,0 +1,211 @@
|
||||||
|
# textdomain: default
|
||||||
|
Locked Chest=Uzamknutá truhlica
|
||||||
|
Locked Chest (owned by @1)=Uzamknutá truhlica (Vlastník - @1)
|
||||||
|
You do not own this chest.=Túto truhlicu nevlastníš.
|
||||||
|
a locked chest=zamknutá truhlica
|
||||||
|
Chest=Truhlica
|
||||||
|
Stick=Palica
|
||||||
|
Paper=Papier
|
||||||
|
"@1" by @2=„@1“ z @2
|
||||||
|
Book=Kniha
|
||||||
|
Book with Text=Kniha s textom
|
||||||
|
Skeleton Key=Základný kľuč
|
||||||
|
Key to @1's @2=Kľuč pre @2 hráča @1
|
||||||
|
Coal Lump=Hruda uhlia
|
||||||
|
Iron Lump=Hruda železa
|
||||||
|
Copper Lump=Hruda medi
|
||||||
|
Tin Lump=Hruda cínu
|
||||||
|
Mese Crystal=Mese Krištáľ
|
||||||
|
Gold Lump=Hruda zlata
|
||||||
|
Diamond=Diamant
|
||||||
|
Clay Lump=Hruda ílu
|
||||||
|
Steel Ingot=Oceľový ingot
|
||||||
|
Copper Ingot=Medený ingot
|
||||||
|
Tin Ingot=Cínový ingot
|
||||||
|
Bronze Ingot=Bronzový ingot
|
||||||
|
Gold Ingot=Zlatý ingot
|
||||||
|
Mese Crystal Fragment=Fragment Mese krištáľu
|
||||||
|
Clay Brick=Nepálená tehla
|
||||||
|
Obsidian Shard=Úlomok obsidiánu
|
||||||
|
Flint=Kresací kamienok
|
||||||
|
Blueberries=Čučoriedky
|
||||||
|
Furnace is empty=Pec je prázdna
|
||||||
|
100% (output full)=100% (Výstup je plný)
|
||||||
|
@1%=@1%
|
||||||
|
Empty=Prázdne
|
||||||
|
Not cookable=Nie je variteľné
|
||||||
|
Furnace active=Pec je aktívna
|
||||||
|
Furnace inactive=Pec je neaktívna
|
||||||
|
(Item: @1; Fuel: @2)=(Vec: @1; Palivo: @2)
|
||||||
|
Furnace=Pec
|
||||||
|
Stone=Kameň
|
||||||
|
Cobblestone=Dlažbový kameň
|
||||||
|
Stone Brick=Tehla z kameňa
|
||||||
|
Stone Block=Blok kameňa
|
||||||
|
Mossy Cobblestone=Dlažbový kameň obrastený machom
|
||||||
|
Desert Stone=Púštny kameň
|
||||||
|
Desert Cobblestone=Púštny dlažbový kameň
|
||||||
|
Desert Stone Brick=Tehla z púštneho kameňa
|
||||||
|
Desert Stone Block=Blok púštneho kameňa
|
||||||
|
Sandstone=Pieskovec
|
||||||
|
Sandstone Brick=Tehla z pieskovca
|
||||||
|
Sandstone Block=Blok pieskovca
|
||||||
|
Desert Sandstone=Púštny pieskovec
|
||||||
|
Desert Sandstone Brick=Tehla z púštneho pieskovca
|
||||||
|
Desert Sandstone Block=Blok púštneho pieskovca
|
||||||
|
Silver Sandstone=Strieborný pieskovec
|
||||||
|
Silver Sandstone Brick=Tehla zo strieborného pieskovca
|
||||||
|
Silver Sandstone Block=Blok strieborného pieskovca
|
||||||
|
Obsidian=Obsidián
|
||||||
|
Obsidian Brick=Tehla z obsidiánu
|
||||||
|
Obsidian Block=Blok obsidiánu
|
||||||
|
Dirt=Hlina
|
||||||
|
Dirt with Grass=Hlina s trávou
|
||||||
|
Dirt with Grass and Footsteps=Hlina s trávou a stopami
|
||||||
|
Dirt with Savanna Grass=Hlina s trávou zo savany
|
||||||
|
Dirt with Snow=Hlina so snehom
|
||||||
|
Dirt with Rainforest Litter=Hlina s povrchom dažďového pralesa
|
||||||
|
Dirt with Coniferous Litter=Hlina s ihličnatým povrchom
|
||||||
|
Savanna Dirt=Hlina zo savany
|
||||||
|
Savanna Dirt with Savanna Grass=Hlina zo savany s trávou
|
||||||
|
Permafrost=Permafrost
|
||||||
|
Permafrost with Stones=Permafrost s kameňmi
|
||||||
|
Permafrost with Moss=Permafrost s machom
|
||||||
|
Sand=Piesok
|
||||||
|
Desert Sand=Púštny piesok
|
||||||
|
Silver Sand=Strieborný piesok
|
||||||
|
Gravel=Štrk
|
||||||
|
Clay=Íl
|
||||||
|
Snow=Sneh
|
||||||
|
Snow Block=Blok snehu
|
||||||
|
Ice=Ľad
|
||||||
|
Cave Ice=Jaskynný ľad
|
||||||
|
Apple Tree=Jabloň
|
||||||
|
Apple Wood Planks=Drevené dosky z jablone
|
||||||
|
Apple Tree Sapling=Stromček jablone
|
||||||
|
Apple Tree Leaves=Listy z jablone
|
||||||
|
Apple=Jablko
|
||||||
|
Apple Marker=Jablková značka
|
||||||
|
Jungle Tree=Ďungľový strom
|
||||||
|
Jungle Wood Planks=Drevené dosky z džungľového stromu
|
||||||
|
Jungle Tree Leaves=Listy z džungľového stromu
|
||||||
|
Jungle Tree Sapling=Džungľový stromček
|
||||||
|
Emergent Jungle Tree Sapling=Vznikajúci džungľový stromček
|
||||||
|
Pine Tree=Borovica
|
||||||
|
Pine Wood Planks=Drevené dosky z borovice
|
||||||
|
Pine Needles=Ihličie z borovice
|
||||||
|
Pine Tree Sapling=Borovicový stromček
|
||||||
|
Acacia Tree=Akácia
|
||||||
|
Acacia Wood Planks=Drevené dosky z akácie
|
||||||
|
Acacia Tree Leaves=Listy z akácie
|
||||||
|
Acacia Tree Sapling=Stromček akácie
|
||||||
|
Aspen Tree=Osika
|
||||||
|
Aspen Wood Planks=Drevené dosky z osiky
|
||||||
|
Aspen Tree Leaves=Listy z osiky
|
||||||
|
Aspen Tree Sapling=Stromček osiky
|
||||||
|
Coal Ore=Uhoľná ruda
|
||||||
|
Coal Block=Blok uhlia
|
||||||
|
Iron Ore=Železná ruda
|
||||||
|
Steel Block=Blok ocele
|
||||||
|
Copper Ore=Medená ruda
|
||||||
|
Copper Block=Blok medi
|
||||||
|
Tin Ore=Cínová ruda
|
||||||
|
Tin Block=Blok cínu
|
||||||
|
Bronze Block=Blok bronzu
|
||||||
|
Mese Ore=Mese Ruda
|
||||||
|
Mese Block=Blok Mese
|
||||||
|
Gold Ore=Zlatá ruda
|
||||||
|
Gold Block=Blok zlata
|
||||||
|
Diamond Ore=Diamantová ruda
|
||||||
|
Diamond Block=Blok diamantu
|
||||||
|
Cactus=Kaktus
|
||||||
|
Large Cactus Seedling=Vaľká sadenica kaktusu
|
||||||
|
Papyrus=Papyrus
|
||||||
|
Dry Shrub=Suchý ker
|
||||||
|
Jungle Grass=Džungľová tráva
|
||||||
|
Grass=Tráva
|
||||||
|
Savanna Grass=Tráva zo savany
|
||||||
|
Fern=Papraď
|
||||||
|
Marram Grass=Pobrežná tráva
|
||||||
|
Bush Stem=Stonka z kríka
|
||||||
|
Bush Leaves=Listy z kríka
|
||||||
|
Bush Sapling=Sadenica kríka
|
||||||
|
Blueberry Bush Leaves with Berries=Čučoriedkové listy s čučoriedkami
|
||||||
|
Blueberry Bush Leaves=Čučoriedkové listy
|
||||||
|
Blueberry Bush Sapling=Sadenica čučoriedky
|
||||||
|
Acacia Bush Stem=Stonka z kríka akácie
|
||||||
|
Acacia Bush Leaves=Listy z kríka akácie
|
||||||
|
Acacia Bush Sapling=Sadenica kríka akácie
|
||||||
|
Pine Bush Stem=Stonka kríka borovice
|
||||||
|
Pine Bush Needles=Ihličie kríka borovice
|
||||||
|
Pine Bush Sapling=Sadenica kríka borovice
|
||||||
|
Kelp=Riasa
|
||||||
|
Green Coral=Zelený koral
|
||||||
|
Pink Coral=Ružový koral
|
||||||
|
Cyan Coral=Tyrkysový koral
|
||||||
|
Brown Coral=Hnedý koral
|
||||||
|
Orange Coral=Oranžový koral
|
||||||
|
Coral Skeleton=Koralová kostra
|
||||||
|
Water Source=Zdroj vody
|
||||||
|
Flowing Water=Tečúca voda
|
||||||
|
River Water Source=Zdroj riečnej voda
|
||||||
|
Flowing River Water=Tečúca riečna voda
|
||||||
|
Lava Source=Zdroj lávy
|
||||||
|
Flowing Lava=Tečúca láva
|
||||||
|
Empty Bookshelf=Prázdna knižnica
|
||||||
|
Bookshelf (@1 written, @2 empty books)=Knižnica (@1 popísané, @2 prázdne knihy)
|
||||||
|
Bookshelf=Knižnica
|
||||||
|
Text too long=Text je príliš dlhý
|
||||||
|
Wooden Sign=Drevená tabuľka
|
||||||
|
Steel Sign=Oceľová tabuľka
|
||||||
|
Wooden Ladder=Drevený rebrík
|
||||||
|
Steel Ladder=Oceľový rebrík
|
||||||
|
Apple Wood Fence=Drevený plot z jablone
|
||||||
|
Acacia Wood Fence=Drevený plot z akácie
|
||||||
|
Jungle Wood Fence=Drevený plot z džungľového dreva
|
||||||
|
Pine Wood Fence=Drevený plot z borovice
|
||||||
|
Aspen Wood Fence=Drevený plot z osiky
|
||||||
|
Apple Wood Fence Rail=Drevené zábradlie z jablone
|
||||||
|
Acacia Wood Fence Rail=Drevené zábradlie z akácie
|
||||||
|
Jungle Wood Fence Rail=Drevené zábradlie z džungľového dreva
|
||||||
|
Pine Wood Fence Rail=Drevené zábradlie z borovice
|
||||||
|
Aspen Wood Fence Rail=Drevené zábradlie z osiky
|
||||||
|
Glass=Sklo
|
||||||
|
Obsidian Glass=Obsidiánové sklo
|
||||||
|
Brick Block=Blok z tehál
|
||||||
|
Mese Lamp=Mese lampa
|
||||||
|
Mese Post Light=Mese stĺpová lampa
|
||||||
|
Cloud=Oblak
|
||||||
|
Wooden Pickaxe=Drevený krompáč
|
||||||
|
Stone Pickaxe=Kamenný krompáč
|
||||||
|
Bronze Pickaxe=Bronzový krompáč
|
||||||
|
Steel Pickaxe=Oceľový krompáč
|
||||||
|
Mese Pickaxe=Mese krompáč
|
||||||
|
Diamond Pickaxe=Diamantový krompáč
|
||||||
|
Wooden Shovel=Drevená lopata
|
||||||
|
Stone Shovel=Kamenná lopata
|
||||||
|
Bronze Shovel=Bronzová lopata
|
||||||
|
Steel Shovel=Oceľová lopata
|
||||||
|
Mese Shovel=Mese lopata
|
||||||
|
Diamond Shovel=Diamantová lopata
|
||||||
|
Wooden Axe=Drevená sekera
|
||||||
|
Stone Axe=Kamenná sekera
|
||||||
|
Bronze Axe=Bronzová sekera
|
||||||
|
Steel Axe=Oceľová sekera
|
||||||
|
Mese Axe=Mese sekera
|
||||||
|
Diamond Axe=Diamantová sekera
|
||||||
|
Wooden Sword=Drevený meč
|
||||||
|
Stone Sword=Kamenný meč
|
||||||
|
Bronze Sword=Bronzový meč
|
||||||
|
Steel Sword=Oceľový meč
|
||||||
|
Mese Sword=Mese meč
|
||||||
|
Diamond Sword=Diamantový meč
|
||||||
|
Key=Kľúč
|
||||||
|
Torch=Fakľa
|
||||||
|
@1 will intersect protection on growth.=@1 prekročí pri raste chránenú zónu.
|
||||||
|
Title:=Názov:
|
||||||
|
Contents:=Obsah:
|
||||||
|
Save=Uložiť
|
||||||
|
by @1=od @1
|
||||||
|
Page @1 of @2=Strana @1 z @2
|
||||||
|
"@1"=„@1“
|
|
@ -4,9 +4,8 @@
|
||||||
local S = default.get_translator
|
local S = default.get_translator
|
||||||
|
|
||||||
-- The hand
|
-- The hand
|
||||||
minetest.register_item(":", {
|
-- Override the hand item registered in the engine in builtin/game/register.lua
|
||||||
type = "none",
|
minetest.override_item("", {
|
||||||
wield_image = "wieldhand.png",
|
|
||||||
wield_scale = {x=1,y=1,z=2.5},
|
wield_scale = {x=1,y=1,z=2.5},
|
||||||
tool_capabilities = {
|
tool_capabilities = {
|
||||||
full_punch_interval = 0.9,
|
full_punch_interval = 0.9,
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
# textdomain: doors
|
||||||
|
Hidden Door Segment=Skrytá časť dverí
|
||||||
|
Owned by @1=Vlastník - @1
|
||||||
|
You do not own this locked door.=Nevlastníš tieto uzamknuté dvere.
|
||||||
|
a locked door=uzamknuté dvere
|
||||||
|
Wooden Door=Drevené dvere
|
||||||
|
Steel Door=Oceľové dvere
|
||||||
|
Glass Door=Sklenené dvere
|
||||||
|
Obsidian Glass Door=Obsidiánové sklenené dvere
|
||||||
|
You do not own this trapdoor.=Nevlastníš tieto padacie dvere.
|
||||||
|
a locked trapdoor=uzamknuté padacie dvere
|
||||||
|
Wooden Trapdoor=Drevené padacie dvere
|
||||||
|
Steel Trapdoor=Oceľové padacie dvere
|
||||||
|
Apple Wood Fence Gate=Drevený plot z jablone
|
||||||
|
Acacia Wood Fence Gate=Drevený plot z akácie
|
||||||
|
Jungle Wood Fence Gate=Drevený plot z džungľového dreva
|
||||||
|
Pine Wood Fence Gate=Drevený plot z borovice
|
||||||
|
Aspen Wood Fence Gate=Drevený plot z osiky
|
|
@ -0,0 +1,16 @@
|
||||||
|
# textdomain: dye
|
||||||
|
White Dye=Biele farbivo
|
||||||
|
Grey Dye=Šedé farbivo
|
||||||
|
Dark Grey Dye=Tmavo šedé farbivo
|
||||||
|
Black Dye=Čierne farbivo
|
||||||
|
Violet Dye=Fialové farbivo
|
||||||
|
Blue Dye=Modré farbivo
|
||||||
|
Cyan Dye=Tyrkysové farbivo
|
||||||
|
Dark Green Dye=Tmavozelené farbivo
|
||||||
|
Green Dye=Zelené farbivo
|
||||||
|
Yellow Dye=Žlté farbivo
|
||||||
|
Brown Dye=Hnedé farbivo
|
||||||
|
Orange Dye=Oranžové farbivo
|
||||||
|
Red Dye=Červené farbivo
|
||||||
|
Magenta Dye=Purpurové farbivo
|
||||||
|
Pink Dye=Ružové farbivo
|
|
@ -0,0 +1,28 @@
|
||||||
|
# textdomain: farming
|
||||||
|
Wooden Hoe=Drevená motyka
|
||||||
|
Stone Hoe=Kamenná motyka
|
||||||
|
Steel Hoe=Oceľová motyka
|
||||||
|
Bronze Hoe=Bronzová motyka
|
||||||
|
Mese Hoe=Mese motyka
|
||||||
|
Diamond Hoe=Diamantová motyka
|
||||||
|
Wheat Seed=Pšeničné semienko
|
||||||
|
Flour=Múka
|
||||||
|
Bread=Chlieb
|
||||||
|
Cotton Seed=Bavlnené semienko
|
||||||
|
String=Šňúra
|
||||||
|
Soil=Zemina
|
||||||
|
Wet Soil=Mokrá zemina
|
||||||
|
Savanna Soil=Zemina zo savany
|
||||||
|
Wet Savanna Soil=Morká zemina zo savany
|
||||||
|
Desert Sand Soil=Zemina s púšte
|
||||||
|
Wet Desert Sand Soil=Mokrá zemina s púšte
|
||||||
|
Straw=Slama
|
||||||
|
Straw Stair=Slamenné schody
|
||||||
|
Straw Slab=Slamenná doska
|
||||||
|
Inner Straw Stair=Vnútorné slamenné schodisko
|
||||||
|
Outer Straw Stair=Vonkajšie slamenné schodisko
|
||||||
|
Wheat=Pšenica
|
||||||
|
Cotton=Bavlna
|
||||||
|
Hoe=Motyka
|
||||||
|
Seed=Semienko
|
||||||
|
Wild Cotton=Divoká bavlna
|
|
@ -1,3 +1,3 @@
|
||||||
# textdomain: fire
|
# textdomain: fire
|
||||||
Permanent Flame=Вечный Огонь
|
Permanent Flame=Вечный Огонь
|
||||||
Flint and Steel=Огниво и Сталь
|
Flint and Steel=Огниво
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
# textdomain: fire
|
||||||
|
Fire=Oheň
|
||||||
|
Permanent Fire=Stály oheň
|
||||||
|
Flint and Steel=Pazúrik a ocieľka
|
|
@ -0,0 +1,5 @@
|
||||||
|
# textdomain: fireflies
|
||||||
|
Firefly=Svetluška
|
||||||
|
Hidden Firefly=Skrytá svetluška
|
||||||
|
Bug Net=Sieťka na hmyz
|
||||||
|
Firefly in a Bottle=Svetluška vo fľaši
|
|
@ -0,0 +1,12 @@
|
||||||
|
# textdomain: flowers
|
||||||
|
Red Rose=Červená ruža
|
||||||
|
Orange Tulip=Oranžový tulipán
|
||||||
|
Yellow Dandelion=Žltá púpava
|
||||||
|
Green Chrysanthemum=Zelená chryzantéma
|
||||||
|
Blue Geranium=Modrý muškát
|
||||||
|
Viola=Fialka
|
||||||
|
White Dandelion=Biela púpava
|
||||||
|
Black Tulip=Čierny tulipán
|
||||||
|
Red Mushroom=Červená huba
|
||||||
|
Brown Mushroom=Hnedá huba
|
||||||
|
Waterlily=Lekno
|
|
@ -0,0 +1,4 @@
|
||||||
|
# textdomain: game_commands
|
||||||
|
Kill yourself to respawn=Samovražda pre znovuzrodenie
|
||||||
|
No static_spawnpoint defined=Nie je definované stále miesto znovuzrodenia
|
||||||
|
You need to be online to be killed!=Musíš byť online, aby si mohol byť zabitý!
|
|
@ -0,0 +1,3 @@
|
||||||
|
# textdomain: map
|
||||||
|
Mapping Kit=Kartografická súprava
|
||||||
|
Use with 'Minimap' key=Použi klávesou 'Prepni minimpu'
|
|
@ -71,6 +71,31 @@ function player_api.get_gender_model(gender)
|
||||||
return model
|
return model
|
||||||
end
|
end
|
||||||
|
|
||||||
|
minetest.register_chatcommand("toggle_gender", {
|
||||||
|
description = S("Change the gender, from male to female or viceversa"),
|
||||||
|
func = function(name, param)
|
||||||
|
local player = minetest.get_player_by_name(name)
|
||||||
|
local meta = player:get_meta()
|
||||||
|
local old_gender = player_api.get_gender(player)
|
||||||
|
if old_gender then
|
||||||
|
local new_gender
|
||||||
|
if old_gender == "male" then
|
||||||
|
new_gender = "female"
|
||||||
|
else
|
||||||
|
new_gender = "male"
|
||||||
|
end
|
||||||
|
meta:set_string("gender", new_gender)
|
||||||
|
player_api.set_model(player, player_api.get_gender_model(new_gender))
|
||||||
|
local gender_model = player_api.get_gender_model(new_gender)
|
||||||
|
local cloth = player_api.compose_cloth(player)
|
||||||
|
player_api.registered_models[gender_model].textures[1] = cloth
|
||||||
|
player_api.set_textures(player, models[gender_model].textures)
|
||||||
|
local new_gender_cap = new_gender:gsub("^%l", string.upper)
|
||||||
|
minetest.chat_send_player(name, S("Your gender is changed to").." "..S(new_gender_cap)..".")
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
-- Called when a player's appearance needs to be updated
|
-- Called when a player's appearance needs to be updated
|
||||||
function player_api.set_model(player, model_name)
|
function player_api.set_model(player, model_name)
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
|
@ -218,8 +243,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
else
|
else
|
||||||
gender = player_api.set_gender(player, "random")
|
gender = player_api.set_gender(player, "random")
|
||||||
end
|
end
|
||||||
player_api.set_cloths(player, gender)
|
player_api.set_cloths(player)
|
||||||
local cloth = player_api.compose_cloth(player, gender)
|
local cloth = player_api.compose_cloth(player)
|
||||||
local gender_model = player_api.get_gender_model(gender)
|
local gender_model = player_api.get_gender_model(gender)
|
||||||
player_api.registered_models[gender_model].textures[1] = cloth
|
player_api.registered_models[gender_model].textures[1] = cloth
|
||||||
player_api.set_model(player, gender_model)
|
player_api.set_model(player, gender_model)
|
||||||
|
|
|
@ -16,13 +16,35 @@ function player_api.register_cloth(name, def)
|
||||||
if not(def.wield_image) then
|
if not(def.wield_image) then
|
||||||
def.wield_image = def.inventory_image
|
def.wield_image = def.inventory_image
|
||||||
end
|
end
|
||||||
|
local tooltip
|
||||||
|
if def.groups["cloth"] == 1 then
|
||||||
|
tooltip = S("Head")
|
||||||
|
elseif def.groups["cloth"] == 2 then
|
||||||
|
tooltip = S("Upper")
|
||||||
|
else
|
||||||
|
tooltip = S("Lower")
|
||||||
|
end
|
||||||
|
tooltip = "(" .. tooltip .. ")"
|
||||||
|
local gender, gender_color
|
||||||
|
if def.gender == "male" then
|
||||||
|
gender = S("Male")
|
||||||
|
gender_color = "#00baff"
|
||||||
|
elseif def.gender == "female" then
|
||||||
|
gender = S("Female")
|
||||||
|
gender_color = "#ff69b4"
|
||||||
|
else
|
||||||
|
gender = S("Unisex")
|
||||||
|
gender_color = "#9400d3"
|
||||||
|
end
|
||||||
|
tooltip = tooltip.."\n".. minetest.colorize(gender_color, gender)
|
||||||
minetest.register_craftitem(name, {
|
minetest.register_craftitem(name, {
|
||||||
description = def.description,
|
description = def.description .. "\n" .. tooltip,
|
||||||
inventory_image = def.inventory_image,
|
inventory_image = def.inventory_image,
|
||||||
wield_image = def.wield_image,
|
wield_image = def.wield_image,
|
||||||
stack_max = def.stack_max or 16,
|
stack_max = def.stack_max or 16,
|
||||||
_cloth_texture = def.texture,
|
_cloth_texture = def.texture,
|
||||||
_cloth_genre = def.genre,
|
_cloth_preview = def.preview,
|
||||||
|
_cloth_gender = def.gender,
|
||||||
groups = def.groups,
|
groups = def.groups,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
@ -32,7 +54,8 @@ player_api.register_cloth("player_api:cloth_female_upper_default", {
|
||||||
inventory_image = "cloth_female_upper_default_inv.png",
|
inventory_image = "cloth_female_upper_default_inv.png",
|
||||||
wield_image = "cloth_female_upper_default.png",
|
wield_image = "cloth_female_upper_default.png",
|
||||||
texture = "cloth_female_upper_default.png",
|
texture = "cloth_female_upper_default.png",
|
||||||
genre = "female",
|
preview = "cloth_female_upper_preview.png",
|
||||||
|
gender = "female",
|
||||||
groups = {cloth = 2},
|
groups = {cloth = 2},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -41,7 +64,8 @@ player_api.register_cloth("player_api:cloth_female_lower_default", {
|
||||||
inventory_image = "cloth_female_lower_default_inv.png",
|
inventory_image = "cloth_female_lower_default_inv.png",
|
||||||
wield_image = "cloth_female_lower_default_inv.png",
|
wield_image = "cloth_female_lower_default_inv.png",
|
||||||
texture = "cloth_female_lower_default.png",
|
texture = "cloth_female_lower_default.png",
|
||||||
genre = "female",
|
preview = "cloth_female_lower_preview.png",
|
||||||
|
gender = "female",
|
||||||
groups = {cloth = 3},
|
groups = {cloth = 3},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -50,7 +74,8 @@ player_api.register_cloth("player_api:cloth_female_head_default", {
|
||||||
inventory_image = "cloth_female_head_default_inv.png",
|
inventory_image = "cloth_female_head_default_inv.png",
|
||||||
wield_image = "cloth_female_head_default_inv.png",
|
wield_image = "cloth_female_head_default_inv.png",
|
||||||
texture = "cloth_female_head_default.png",
|
texture = "cloth_female_head_default.png",
|
||||||
genre = "female",
|
preview = "cloth_female_head_preview.png",
|
||||||
|
gender = "female",
|
||||||
groups = {cloth = 1},
|
groups = {cloth = 1},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -59,7 +84,8 @@ player_api.register_cloth("player_api:cloth_male_upper_default", {
|
||||||
inventory_image = "cloth_male_upper_default_inv.png",
|
inventory_image = "cloth_male_upper_default_inv.png",
|
||||||
wield_image = "cloth_male_upper_default_inv.png",
|
wield_image = "cloth_male_upper_default_inv.png",
|
||||||
texture = "cloth_male_upper_default.png",
|
texture = "cloth_male_upper_default.png",
|
||||||
genre = "male",
|
preview = "cloth_male_upper_preview.png",
|
||||||
|
gender = "male",
|
||||||
groups = {cloth = 2},
|
groups = {cloth = 2},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -68,16 +94,16 @@ player_api.register_cloth("player_api:cloth_male_lower_default", {
|
||||||
inventory_image = "cloth_male_lower_default_inv.png",
|
inventory_image = "cloth_male_lower_default_inv.png",
|
||||||
wield_image = "cloth_male_lower_default_inv.png",
|
wield_image = "cloth_male_lower_default_inv.png",
|
||||||
texture = "cloth_male_lower_default.png",
|
texture = "cloth_male_lower_default.png",
|
||||||
genre = "male",
|
preview = "cloth_male_lower_preview.png",
|
||||||
|
gender = "male",
|
||||||
groups = {cloth = 3},
|
groups = {cloth = 3},
|
||||||
})
|
})
|
||||||
|
|
||||||
function player_api.set_cloths(player, gender)
|
function player_api.set_cloths(player)
|
||||||
|
local gender = player:get_meta():get_string("gender")
|
||||||
--Create the "cloths" inventory
|
--Create the "cloths" inventory
|
||||||
|
|
||||||
local inv = player:get_inventory()
|
local inv = player:get_inventory()
|
||||||
inv:set_size("cloths", 3)
|
inv:set_size("cloths", 8)
|
||||||
|
|
||||||
if gender == "male" then
|
if gender == "male" then
|
||||||
inv:add_item("cloths", 'player_api:cloth_male_upper_default')
|
inv:add_item("cloths", 'player_api:cloth_male_upper_default')
|
||||||
|
@ -90,15 +116,14 @@ function player_api.set_cloths(player, gender)
|
||||||
end
|
end
|
||||||
|
|
||||||
function player_api.compose_cloth(player)
|
function player_api.compose_cloth(player)
|
||||||
if not(player_api.has_cloths(player)) then
|
local meta = player:get_meta()
|
||||||
return nil
|
local gender = meta:get_string("gender")
|
||||||
end
|
|
||||||
local gender = player:get_meta():get_string("gender")
|
|
||||||
local inv = player:get_inventory()
|
local inv = player:get_inventory()
|
||||||
local inv_list = inv:get_list("cloths")
|
local inv_list = inv:get_list("cloths")
|
||||||
local upper_ItemStack
|
local upper_ItemStack
|
||||||
local lower_ItemStack
|
local lower_ItemStack
|
||||||
local head_ItemStack
|
local head_ItemStack
|
||||||
|
local underwear = false
|
||||||
for i = 1, #inv_list do
|
for i = 1, #inv_list do
|
||||||
local item_name = inv_list[i]:get_name()
|
local item_name = inv_list[i]:get_name()
|
||||||
--minetest.chat_send_all(item_name)
|
--minetest.chat_send_all(item_name)
|
||||||
|
@ -110,8 +135,12 @@ function player_api.compose_cloth(player)
|
||||||
upper_ItemStack = minetest.registered_items[item_name]._cloth_texture
|
upper_ItemStack = minetest.registered_items[item_name]._cloth_texture
|
||||||
elseif cloth_type == 3 then
|
elseif cloth_type == 3 then
|
||||||
lower_ItemStack = minetest.registered_items[item_name]._cloth_texture
|
lower_ItemStack = minetest.registered_items[item_name]._cloth_texture
|
||||||
|
underwear = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if not(underwear) then
|
||||||
|
lower_ItemStack = "cloth_lower_underwear_default.png"
|
||||||
|
end
|
||||||
local base_texture
|
local base_texture
|
||||||
if gender == "male" then
|
if gender == "male" then
|
||||||
base_texture = "player_male_base.png"
|
base_texture = "player_male_base.png"
|
||||||
|
|
|
@ -2,6 +2,12 @@
|
||||||
Select your gender=Selecciona tu género
|
Select your gender=Selecciona tu género
|
||||||
Male=Hombre
|
Male=Hombre
|
||||||
Female=Mujer
|
Female=Mujer
|
||||||
|
Unisex=Unisex
|
||||||
|
Change the gender, from male to female or viceversa=Cambiar el género, de hombre a mujer o viceversa
|
||||||
|
Your gender is changed to=Tu género se ha cambiado a
|
||||||
|
Head=Cabeza
|
||||||
|
Upper=Parte superior
|
||||||
|
Lower=Parte inferior
|
||||||
Purple Stripe Summer T-shirt=Camiseta veraniega púrpura a rayas
|
Purple Stripe Summer T-shirt=Camiseta veraniega púrpura a rayas
|
||||||
Fresh Summer Denim Shorts=Pantalones vaqueros cortos y frescos
|
Fresh Summer Denim Shorts=Pantalones vaqueros cortos y frescos
|
||||||
Pink Bow=Lazo rosa
|
Pink Bow=Lazo rosa
|
||||||
|
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 8.4 KiB |
After Width: | Height: | Size: 629 B |
After Width: | Height: | Size: 449 B |
After Width: | Height: | Size: 447 B |
After Width: | Height: | Size: 6.7 KiB |
After Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 360 B After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 318 B |
After Width: | Height: | Size: 508 B |
|
@ -0,0 +1,3 @@
|
||||||
|
# textdomain: screwdriver
|
||||||
|
Screwdriver=Skrutkovač
|
||||||
|
(left-click rotates face, right-click rotates axis)=(Ľavý klik otáča stranu, pravý klik otáča os)
|
|
@ -0,0 +1,8 @@
|
||||||
|
# textdomain: sethome
|
||||||
|
Can use /sethome and /home=Môžeš použivať /sethome a /home
|
||||||
|
Teleport you to your home point=Teleportuj sa domov
|
||||||
|
Teleported to home!=Teleportovaný domov!
|
||||||
|
Set a home using /sethome=Nastav si domov použitím /sethome
|
||||||
|
Set your home point=Nastaviť si domov
|
||||||
|
Home set!=Domov nastavený!
|
||||||
|
Player not found!=Hráč nenájdený!
|
|
@ -0,0 +1,2 @@
|
||||||
|
# textdomain:sfinv
|
||||||
|
Crafting=Vytváranie
|
|
@ -0,0 +1,145 @@
|
||||||
|
# textdomain: stairs
|
||||||
|
Glass Stair=Sklenené schod
|
||||||
|
Glass Slab=Sklenený stupienok
|
||||||
|
Inner Glass Stair=Vnútorný sklenené schod
|
||||||
|
Outer Glass Stair=Vonkajší sklenené schod
|
||||||
|
Obsidian Glass Stair=Obsidiánové sklenené schod
|
||||||
|
Obsidian Glass Slab=Obsidiánový sklenený stupienok
|
||||||
|
Inner Obsidian Glass Stair=Vnútorný obsidiánové sklenené schod
|
||||||
|
Outer Obsidian Glass Stair=Vonkajší obsidiánové sklenené schod
|
||||||
|
Wooden Stair=Drevené schod
|
||||||
|
Inner Wooden Stair=Vnútorný drevené schod
|
||||||
|
Outer Wooden Stair=Vonkajší drevené schod
|
||||||
|
Wooden Slab=Drevený stupienok
|
||||||
|
Jungle Wood Stair=Drevené schod z džungľového dreva
|
||||||
|
Inner Jungle Wood Stair=Vnútorný drevené schod z džungľového dreva
|
||||||
|
Outer Jungle Wood Stair=Vonkajší drevené schod z džungľového dreva
|
||||||
|
Jungle Wood Slab=Stupienok z džungľového dreva
|
||||||
|
Pine Wood Stair=Drevené schod z borovicového dreva
|
||||||
|
Inner Pine Wood Stair=Vnútorný drevené schod z borovicového dreva
|
||||||
|
Outer Pine Wood Stair=Vonkajší drevené schod z borovicového dreva
|
||||||
|
Pine Wood Slab=Stupienok z borovicového dreva
|
||||||
|
Acacia Wood Stair=Drevené schod z akáciového dreva
|
||||||
|
Inner Acacia Wood Stair=Vnútorný drevené schod z akáciového dreva
|
||||||
|
Outer Acacia Wood Stair=Vonkajší drevené schod z akáciového dreva
|
||||||
|
Acacia Wood Slab=Stupienok z akáciového dreva
|
||||||
|
Aspen Wood Stair=Drevené schod z osiky
|
||||||
|
Inner Aspen Wood Stair=Vnútorný drevené schod z osiky
|
||||||
|
Outer Aspen Wood Stair=Vonkajší drevené schod z osiky
|
||||||
|
Aspen Wood Slab=Stupienok z osiky
|
||||||
|
Stone Stair=Kamenné schod
|
||||||
|
Inner Stone Stair=Vnútorný kamenné schod
|
||||||
|
Outer Stone Stair=Vonkajší kamenné schod
|
||||||
|
Stone Slab=Kamenný stupienok
|
||||||
|
Cobblestone Stair=Schod z dlažbového kameňa
|
||||||
|
Inner Cobblestone Stair=Vnútorný schod z dlažbového kameňa
|
||||||
|
Outer Cobblestone Stair=Vonkajší schod z dlažbového kameňa
|
||||||
|
Cobblestone Slab=Stupienok z dlažbového kameňa
|
||||||
|
Mossy Cobblestone Stair=Schod dlažbového kameňa obrastené machom
|
||||||
|
Inner Mossy Cobblestone Stair=Vnútorný schod dlažbového kameňa obrastené machom
|
||||||
|
Outer Mossy Cobblestone Stair=Vonkajší schod dlažbového kameňa obrastené machom
|
||||||
|
Mossy Cobblestone Slab=Stupienok z dlažbového kameňa obrastený machom
|
||||||
|
Stone Brick Stair=Schod z kamenných tehál
|
||||||
|
Inner Stone Brick Stair=Vnútorný schod z kamenných tehál
|
||||||
|
Outer Stone Brick Stair=Vonkajší schod z kamenných tehál
|
||||||
|
Stone Brick Slab=Stupienok z kamenných tehál
|
||||||
|
Stone Block Stair=Schod z kameňa
|
||||||
|
Inner Stone Block Stair=Vnútorný schod z kameňa
|
||||||
|
Outer Stone Block Stair=Vonkajší schod z kameňa
|
||||||
|
Stone Block Slab=Stupienok z kameňa
|
||||||
|
Desert Stone Stair=Schod z púštneho kameňa
|
||||||
|
Inner Desert Stone Stair=Vnútorný schod z púštneho kameňa
|
||||||
|
Outer Desert Stone Stair=Vonkajší schod z púštneho kameňa
|
||||||
|
Desert Stone Slab=Stupienok z púštneho kameňa
|
||||||
|
Desert Cobblestone Stair=Schod z púštneho dlažbového kameňa
|
||||||
|
Inner Desert Cobblestone Stair=Vnútorný schod z púštneho dlažbového kameňa
|
||||||
|
Outer Desert Cobblestone Stair=Vonkajší schod z púštneho dlažbového kameňa
|
||||||
|
Desert Cobblestone Slab=Stupienok z púštneho dlažbového kameňa
|
||||||
|
Desert Stone Brick Stair=Schod z tehiel z púštneho kameňa
|
||||||
|
Inner Desert Stone Brick Stair=Vnútorný schod z tehiel z púštneho kameňa
|
||||||
|
Outer Desert Stone Brick Stair=Vonkajší schod z tehiel z púštneho kameňa
|
||||||
|
Desert Stone Brick Slab=Stupienok z tehiel z púštneho kameňa
|
||||||
|
Desert Stone Block Stair=Schod z blokov púštneho kameňa
|
||||||
|
Inner Desert Stone Block Stair=Vnútorný schod z blokov púštneho kameňa
|
||||||
|
Outer Desert Stone Block Stair=Vonkajší schod z blokov púštneho kameňa
|
||||||
|
Desert Stone Block Slab=Stupienok z blokov púštneho kameňa
|
||||||
|
Sandstone Stair=Schod z pieskovca
|
||||||
|
Inner Sandstone Stair=Vnútorný schod z pieskovca
|
||||||
|
Outer Sandstone Stair=Vonkajší schod z pieskovca
|
||||||
|
Sandstone Slab=Stupienok z pieskovca
|
||||||
|
Sandstone Brick Stair=Schod z tehál pieskovca
|
||||||
|
Inner Sandstone Brick Stair=Vnútorný schod z tehál pieskovca
|
||||||
|
Outer Sandstone Brick Stair=Vonkajší schod z tehál pieskovca
|
||||||
|
Sandstone Brick Slab=Stupienok z tehál pieskovca
|
||||||
|
Sandstone Block Stair=Schod z blokov pieskovca
|
||||||
|
Inner Sandstone Block Stair=Vnútorný schod z blokov pieskovca
|
||||||
|
Outer Sandstone Block Stair=Vonkajší schod z blokov pieskovca
|
||||||
|
Sandstone Block Slab=Stupienok z blokov pieskovca
|
||||||
|
Desert Sandstone Stair=Schod z púštneho pieskovca
|
||||||
|
Inner Desert Sandstone Stair=Vnútorný schod z púštneho pieskovca
|
||||||
|
Outer Desert Sandstone Stair=Vonkajší schod z púštneho pieskovca
|
||||||
|
Desert Sandstone Slab=Stupienok z púštneho pieskovca
|
||||||
|
Desert Sandstone Brick Stair=Schod z tehál z púštneho pieskovca
|
||||||
|
Inner Desert Sandstone Brick Stair=Vnútorný schod z tehál z púštneho pieskovca
|
||||||
|
Outer Desert Sandstone Brick Stair=Vonkajší schod z tehál z púštneho pieskovca
|
||||||
|
Desert Sandstone Brick Slab=Stupienok z tehál z púštneho pieskovca
|
||||||
|
Desert Sandstone Block Stair=Schod z blokov púštneho pieskovca
|
||||||
|
Inner Desert Sandstone Block Stair=Vnútorný schod z blokov púštneho pieskovca
|
||||||
|
Outer Desert Sandstone Block Stair=Vonkajší schod z blokov púštneho pieskovca
|
||||||
|
Desert Sandstone Block Slab=Stupienok z blokov púštneho pieskovca
|
||||||
|
Silver Sandstone Stair=Schod zo strieborného pieskovca
|
||||||
|
Inner Silver Sandstone Stair=Vnútorný schod zo strieborného pieskovca
|
||||||
|
Outer Silver Sandstone Stair=Vonkajší schod zo strieborného pieskovca
|
||||||
|
Silver Sandstone Slab=Stupienok zo strieborného pieskovca
|
||||||
|
Silver Sandstone Brick Stair=Schod z tehál zo strieborného pieskovca
|
||||||
|
Inner Silver Sandstone Brick Stair=Vnútorný schod z tehál zo strieborného pieskovca
|
||||||
|
Outer Silver Sandstone Brick Stair=Vonkajší schod z tehál zo strieborného pieskovca
|
||||||
|
Silver Sandstone Brick Slab=Stupienok z tehál zo strieborného pieskovca
|
||||||
|
Silver Sandstone Block Stair=Schod z blokov strieborného pieskovca
|
||||||
|
Inner Silver Sandstone Block Stair=Vnútorný schod z blokov strieborného pieskovca
|
||||||
|
Outer Silver Sandstone Block Stair=Vonkajší schod z blokov strieborného pieskovca
|
||||||
|
Silver Sandstone Block Slab=Stupienok z blokov strieborného pieskovca
|
||||||
|
Obsidian Stair=Schod z obsidiánu
|
||||||
|
Inner Obsidian Stair=Vnútorný schod z obsidiánu
|
||||||
|
Outer Obsidian Stair=Vonkajší schod z obsidiánu
|
||||||
|
Obsidian Slab=Stupienok z obsidiánu
|
||||||
|
Obsidian Brick Stair=Schod z tehál obsidiánu
|
||||||
|
Inner Obsidian Brick Stair=Vnútorný schod z tehál obsidiánu
|
||||||
|
Outer Obsidian Brick Stair=Vonkajší schod z tehál obsidiánu
|
||||||
|
Obsidian Brick Slab=Stupienok z tehál obsidiánu
|
||||||
|
Obsidian Block Stair=Schod z bloku obsidiánu
|
||||||
|
Inner Obsidian Block Stair=Vnútorný schod z bloku obsidiánu
|
||||||
|
Outer Obsidian Block Stair=Vonkajší schod z bloku obsidiánu
|
||||||
|
Obsidian Block Slab=Stupienok z bloku obsidiánu
|
||||||
|
Brick Stair=Schod z tehál
|
||||||
|
Inner Brick Stair=Vnútorný schod z tehál
|
||||||
|
Outer Brick Stair=Vonkajší schod z tehál
|
||||||
|
Brick Slab=Stupienok z tehál
|
||||||
|
Steel Block Stair=Oceľový schod
|
||||||
|
Inner Steel Block Stair=Vnútorný oceľový schod
|
||||||
|
Outer Steel Block Stair=Vonkajší oceľový schod
|
||||||
|
Steel Block Slab=Oceľový stupienok
|
||||||
|
Tin Block Stair=Cínový schod
|
||||||
|
Inner Tin Block Stair=Vnútorný cínový schod
|
||||||
|
Outer Tin Block Stair=Vonkajší cínový schod
|
||||||
|
Tin Block Slab=Cínový stupienok
|
||||||
|
Copper Block Stair=Medený schod
|
||||||
|
Inner Copper Block Stair=Vnútorný medený schod
|
||||||
|
Outer Copper Block Stair=Vonkajší medený schod
|
||||||
|
Copper Block Slab=Medený stupienok
|
||||||
|
Bronze Block Stair=Bronzový schod
|
||||||
|
Inner Bronze Block Stair=Vnútorný bronzový schod
|
||||||
|
Outer Bronze Block Stair=Vonkajší bronzový schod
|
||||||
|
Bronze Block Slab=Bronzový stupienok
|
||||||
|
Gold Block Stair=Zlatý schod
|
||||||
|
Inner Gold Block Stair=Vnútorný zlatý schod
|
||||||
|
Outer Gold Block Stair=Vonkajší zlatý schod
|
||||||
|
Gold Block Slab=Zlatý stupienok
|
||||||
|
Ice Stair=Ľadový schod
|
||||||
|
Inner Ice Stair=Vnútorný ľadový schod
|
||||||
|
Outer Ice Stair=Vonkajší ľadový schod
|
||||||
|
Ice Slab=Ľadový stupienok
|
||||||
|
Snow Block Stair=Snehový schod
|
||||||
|
Inner Snow Block Stair=Vnútorný snehový schod
|
||||||
|
Outer Snow Block Stair=Vonkajší snehový schod
|
||||||
|
Snow Block Slab=Snehový stupienok
|
|
@ -165,7 +165,7 @@ local function entity_physics(pos, radius, drops)
|
||||||
if obj:is_player() then
|
if obj:is_player() then
|
||||||
local dir = vector.normalize(vector.subtract(obj_pos, pos))
|
local dir = vector.normalize(vector.subtract(obj_pos, pos))
|
||||||
local moveoff = vector.multiply(dir, 2 / dist * radius)
|
local moveoff = vector.multiply(dir, 2 / dist * radius)
|
||||||
obj:add_player_velocity(moveoff)
|
obj:add_velocity(moveoff)
|
||||||
|
|
||||||
obj:set_hp(obj:get_hp() - damage)
|
obj:set_hp(obj:get_hp() - damage)
|
||||||
else
|
else
|
||||||
|
@ -434,7 +434,7 @@ minetest.register_node("tnt:boom", {
|
||||||
light_source = default.LIGHT_MAX,
|
light_source = default.LIGHT_MAX,
|
||||||
walkable = false,
|
walkable = false,
|
||||||
drop = "",
|
drop = "",
|
||||||
groups = {dig_immediate = 3},
|
groups = {dig_immediate = 3, not_in_creative_inventory = 1},
|
||||||
-- unaffected by explosions
|
-- unaffected by explosions
|
||||||
on_blast = function() end,
|
on_blast = function() end,
|
||||||
})
|
})
|
||||||
|
@ -531,7 +531,8 @@ minetest.register_node("tnt:gunpowder_burning", {
|
||||||
groups = {
|
groups = {
|
||||||
dig_immediate = 2,
|
dig_immediate = 2,
|
||||||
attached_node = 1,
|
attached_node = 1,
|
||||||
connect_to_raillike = minetest.raillike_group("gunpowder")
|
connect_to_raillike = minetest.raillike_group("gunpowder"),
|
||||||
|
not_in_creative_inventory = 1
|
||||||
},
|
},
|
||||||
sounds = default.node_sound_leaves_defaults(),
|
sounds = default.node_sound_leaves_defaults(),
|
||||||
on_timer = function(pos, elapsed)
|
on_timer = function(pos, elapsed)
|
||||||
|
@ -678,7 +679,7 @@ function tnt.register_tnt(def)
|
||||||
light_source = 5,
|
light_source = 5,
|
||||||
drop = "",
|
drop = "",
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_wood_defaults(),
|
||||||
groups = {falling_node = 1},
|
groups = {falling_node = 1, not_in_creative_inventory = 1},
|
||||||
on_timer = function(pos, elapsed)
|
on_timer = function(pos, elapsed)
|
||||||
tnt.boom(pos, def)
|
tnt.boom(pos, def)
|
||||||
end,
|
end,
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
# textdomain: tnt
|
||||||
|
Gun Powder=Pušný prach
|
||||||
|
TNT Stick=Časť TNT
|
||||||
|
TNT=TNT
|
|
@ -0,0 +1,8 @@
|
||||||
|
# textdomain: vessels
|
||||||
|
Vessels Shelf=Polica na fľašky
|
||||||
|
Empty Glass Bottle=Prázdna sklenená fľaša
|
||||||
|
Empty Drinking Glass=Prázdny pohár na pitie
|
||||||
|
Empty Heavy Steel Bottle=Prázdna oceľová fľaša
|
||||||
|
Glass Fragments=Časti skla
|
||||||
|
Empty Vessels Shelf=Prázdna polica na fľašky
|
||||||
|
Vessels Shelf (@1 items)=Polica na fľašky (@1 položka/y)
|
|
@ -0,0 +1,4 @@
|
||||||
|
# textdomain: walls
|
||||||
|
Cobblestone Wall=Múr z dlažbových kociek
|
||||||
|
Mossy Cobblestone Wall=Múr z dlažbových kociek obrastených machom
|
||||||
|
Desert Cobblestone Wall=Múr z púštnych dlažbových kociek
|
|
@ -9,7 +9,7 @@ Cyan Wool=Голубая Шерсть
|
||||||
Dark Green Wool=Тёмно-Зелёная Шерсть
|
Dark Green Wool=Тёмно-Зелёная Шерсть
|
||||||
Green Wool=Зелёная Шерсть
|
Green Wool=Зелёная Шерсть
|
||||||
Yellow Wool=Жёлтая Шерсть
|
Yellow Wool=Жёлтая Шерсть
|
||||||
Brown Wool=Бурая Шерсть
|
Brown Wool=Коричневая Шерсть
|
||||||
Orange Wool=Оранжевая Шерсть
|
Orange Wool=Оранжевая Шерсть
|
||||||
Red Wool=Красная Шерсть
|
Red Wool=Красная Шерсть
|
||||||
Magenta Wool=Пурпурная Шерсть
|
Magenta Wool=Пурпурная Шерсть
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
# textdomain: wool
|
||||||
|
White Wool=Biela vlna
|
||||||
|
Grey Wool=Šedá vlna
|
||||||
|
Dark Grey Wool=Tmavošedá vlna
|
||||||
|
Black Wool=Čierna vlna
|
||||||
|
Violet Wool=Fialová vlna
|
||||||
|
Blue Wool=Modrá vlna
|
||||||
|
Cyan Wool=Tyrkysová vlna
|
||||||
|
Dark Green Wool=Tmavozelená vlna
|
||||||
|
Green Wool=Zelená vlna
|
||||||
|
Yellow Wool=Žltá vlna
|
||||||
|
Brown Wool=Hnedá vlna
|
||||||
|
Orange Wool=Oranžová vlna
|
||||||
|
Red Wool=Červená vlna
|
||||||
|
Magenta Wool=Purpurová vlna
|
||||||
|
Pink Wool=Ružová vlna
|
|
@ -0,0 +1,6 @@
|
||||||
|
# textdomain: xpanes
|
||||||
|
Glass Pane=Tabuľa skla
|
||||||
|
Obsidian Glass Pane=Tabuľa obsidiánového skla
|
||||||
|
Steel Bars=Oceľové mreže
|
||||||
|
Steel Bar Door=Dvere z oceľových mreží
|
||||||
|
Steel Bar Trapdoor=Padajúce dvere z oceľových mreží
|
|
@ -27,7 +27,7 @@ end
|
||||||
mobkit.terminal_velocity = sqrt(2*-mobkit.gravity*20) -- 20 meter fall = dead
|
mobkit.terminal_velocity = sqrt(2*-mobkit.gravity*20) -- 20 meter fall = dead
|
||||||
mobkit.safe_velocity = sqrt(2*-mobkit.gravity*5) -- 5 m safe fall
|
mobkit.safe_velocity = sqrt(2*-mobkit.gravity*5) -- 5 m safe fall
|
||||||
|
|
||||||
local abr = minetest.get_mapgen_setting('active_block_range')
|
local abr = tonumber(minetest.get_mapgen_setting('active_block_range')) or 3
|
||||||
|
|
||||||
local neighbors ={
|
local neighbors ={
|
||||||
{x=1,z=0},
|
{x=1,z=0},
|
||||||
|
@ -40,7 +40,7 @@ local neighbors ={
|
||||||
{x=1,z=-1}
|
{x=1,z=-1}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
-- UTILITY FUNCTIONS
|
-- UTILITY FUNCTIONS
|
||||||
|
|
||||||
function mobkit.dot(v1,v2)
|
function mobkit.dot(v1,v2)
|
||||||
|
@ -80,7 +80,7 @@ end
|
||||||
|
|
||||||
function mobkit.is_pos_in_box(pos,bpos,box)
|
function mobkit.is_pos_in_box(pos,bpos,box)
|
||||||
return pos.x > bpos.x+box[1] and pos.x < bpos.x+box[4] and
|
return pos.x > bpos.x+box[1] and pos.x < bpos.x+box[4] and
|
||||||
pos.y > bpos.y+box[2]+0.5 and pos.y < bpos.y+box[5]+0.5 and
|
pos.y > bpos.y+box[2] and pos.y < bpos.y+box[5] and
|
||||||
pos.z > bpos.z+box[3] and pos.z < bpos.z+box[6]
|
pos.z > bpos.z+box[3] and pos.z < bpos.z+box[6]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ function mobkit.get_stand_pos(thing) -- thing can be luaentity or objectref.
|
||||||
elseif type(thing) == 'userdata' then
|
elseif type(thing) == 'userdata' then
|
||||||
pos = thing:get_pos()
|
pos = thing:get_pos()
|
||||||
colbox = thing:get_properties().collisionbox
|
colbox = thing:get_properties().collisionbox
|
||||||
else
|
else
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
return mobkit.pos_shift(pos,{y=colbox[2]+0.01}), pos
|
return mobkit.pos_shift(pos,{y=colbox[2]+0.01}), pos
|
||||||
|
@ -116,7 +116,7 @@ function mobkit.set_acceleration(thing,vec,limit)
|
||||||
vec.x=mobkit.minmax(vec.x,limit)
|
vec.x=mobkit.minmax(vec.x,limit)
|
||||||
vec.y=mobkit.minmax(vec.y,limit)
|
vec.y=mobkit.minmax(vec.y,limit)
|
||||||
vec.z=mobkit.minmax(vec.z,limit)
|
vec.z=mobkit.minmax(vec.z,limit)
|
||||||
|
|
||||||
thing:set_acceleration(vec)
|
thing:set_acceleration(vec)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -142,15 +142,15 @@ function mobkit.get_nodes_in_area(pos1,pos2,full)
|
||||||
local npos2=mobkit.get_node_pos(pos2)
|
local npos2=mobkit.get_node_pos(pos2)
|
||||||
local result = {}
|
local result = {}
|
||||||
local cnt = 0 -- safety
|
local cnt = 0 -- safety
|
||||||
|
|
||||||
local sx = (pos2.x<pos1.x) and -1 or 1
|
local sx = (pos2.x<pos1.x) and -1 or 1
|
||||||
local sz = (pos2.z<pos1.z) and -1 or 1
|
local sz = (pos2.z<pos1.z) and -1 or 1
|
||||||
local sy = (pos2.y<pos1.y) and -1 or 1
|
local sy = (pos2.y<pos1.y) and -1 or 1
|
||||||
|
|
||||||
local x=npos1.x-sx
|
local x=npos1.x-sx
|
||||||
local z=npos1.z-sz
|
local z=npos1.z-sz
|
||||||
local y=npos1.y-sy
|
local y=npos1.y-sy
|
||||||
|
|
||||||
repeat
|
repeat
|
||||||
x=x+sx
|
x=x+sx
|
||||||
z=npos1.z-sz
|
z=npos1.z-sz
|
||||||
|
@ -159,7 +159,7 @@ function mobkit.get_nodes_in_area(pos1,pos2,full)
|
||||||
y=npos1.y-sy
|
y=npos1.y-sy
|
||||||
repeat
|
repeat
|
||||||
y=y+sy
|
y=y+sy
|
||||||
|
|
||||||
local pos = {x=x,y=y,z=z}
|
local pos = {x=x,y=y,z=z}
|
||||||
local node = mobkit.nodeatpos(pos)
|
local node = mobkit.nodeatpos(pos)
|
||||||
if node then
|
if node then
|
||||||
|
@ -169,17 +169,17 @@ function mobkit.get_nodes_in_area(pos1,pos2,full)
|
||||||
result[node] = true
|
result[node] = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
cnt=cnt+1
|
cnt=cnt+1
|
||||||
if cnt > 125 then
|
if cnt > 125 then
|
||||||
minetest.chat_send_all('get_nodes_in_area: area too big ')
|
minetest.chat_send_all('get_nodes_in_area: area too big ')
|
||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
|
|
||||||
until y==npos2.y
|
until y==npos2.y
|
||||||
until z==npos2.z
|
until z==npos2.z
|
||||||
until x==npos2.x
|
until x==npos2.x
|
||||||
|
|
||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -193,12 +193,12 @@ function mobkit.get_hitbox_bottom(self)
|
||||||
{x=pos.x+self.collisionbox[4],y=pos.y+y,z=pos.z+self.collisionbox[6]},
|
{x=pos.x+self.collisionbox[4],y=pos.y+y,z=pos.z+self.collisionbox[6]},
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
function mobkit.get_node_height(pos)
|
function mobkit.get_node_height(pos)
|
||||||
local npos = mobkit.get_node_pos(pos)
|
local npos = mobkit.get_node_pos(pos)
|
||||||
local node = mobkit.nodeatpos(npos)
|
local node = mobkit.nodeatpos(npos)
|
||||||
if node == nil then return nil end
|
if node == nil then return nil end
|
||||||
|
|
||||||
if node.walkable then
|
if node.walkable then
|
||||||
if node.drawtype == 'nodebox' then
|
if node.drawtype == 'nodebox' then
|
||||||
if node.node_box and node.node_box.type == 'fixed' then
|
if node.node_box and node.node_box.type == 'fixed' then
|
||||||
|
@ -208,7 +208,7 @@ function mobkit.get_node_height(pos)
|
||||||
return npos.y + node.node_box.fixed[1][5] ,0, false
|
return npos.y + node.node_box.fixed[1][5] ,0, false
|
||||||
else
|
else
|
||||||
return npos.y + 0.5,1, false -- todo handle table of boxes
|
return npos.y + 0.5,1, false -- todo handle table of boxes
|
||||||
end
|
end
|
||||||
elseif node.node_box and node.node_box.type == 'leveled' then
|
elseif node.node_box and node.node_box.type == 'leveled' then
|
||||||
return minetest.get_node_level(pos)/64-0.5+mobkit.get_node_pos(pos).y, 0, false
|
return minetest.get_node_level(pos)/64-0.5+mobkit.get_node_pos(pos).y, 0, false
|
||||||
else
|
else
|
||||||
|
@ -220,7 +220,7 @@ function mobkit.get_node_height(pos)
|
||||||
else
|
else
|
||||||
local liquidflag = false
|
local liquidflag = false
|
||||||
if node.drawtype == 'liquid' then liquidflag = true end
|
if node.drawtype == 'liquid' then liquidflag = true end
|
||||||
return npos.y-0.5,-1,liquidflag
|
return npos.y-0.5,-1,liquidflag
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -228,18 +228,18 @@ end
|
||||||
-- steps(optional) number of recursion steps; default=3
|
-- steps(optional) number of recursion steps; default=3
|
||||||
-- dir(optional) is 1=up, -1=down, 0=both; default=0
|
-- dir(optional) is 1=up, -1=down, 0=both; default=0
|
||||||
-- liquidflag(forbidden) never provide this parameter.
|
-- liquidflag(forbidden) never provide this parameter.
|
||||||
function mobkit.get_terrain_height(pos,steps,dir,liquidflag) --dir is 1=up, -1=down, 0=both
|
function mobkit.get_terrain_height(pos,steps,dir,liquidflag) --dir is 1=up, -1=down, 0=both
|
||||||
steps = steps or 3
|
steps = steps or 3
|
||||||
dir = dir or 0
|
dir = dir or 0
|
||||||
|
|
||||||
local h,f,l = mobkit.get_node_height(pos)
|
local h,f,l = mobkit.get_node_height(pos)
|
||||||
if h == nil then return nil end
|
if h == nil then return nil end
|
||||||
if l then liquidflag = true end
|
if l then liquidflag = true end
|
||||||
|
|
||||||
if f==0 then
|
if f==0 then
|
||||||
return h, liquidflag
|
return h, liquidflag
|
||||||
end
|
end
|
||||||
|
|
||||||
if dir==0 or dir==f then
|
if dir==0 or dir==f then
|
||||||
steps = steps - 1
|
steps = steps - 1
|
||||||
if steps <=0 then return nil end
|
if steps <=0 then return nil end
|
||||||
|
@ -258,7 +258,7 @@ function mobkit.get_spawn_pos_abr(dtime,intrvl,radius,chance,reduction)
|
||||||
local vel = plyr:get_player_velocity()
|
local vel = plyr:get_player_velocity()
|
||||||
local spd = vector.length(vel)
|
local spd = vector.length(vel)
|
||||||
chance = (1-chance) * 1/(spd*0.75+1)
|
chance = (1-chance) * 1/(spd*0.75+1)
|
||||||
|
|
||||||
local yaw
|
local yaw
|
||||||
if spd > 1 then
|
if spd > 1 then
|
||||||
-- spawn in the front arc
|
-- spawn in the front arc
|
||||||
|
@ -300,15 +300,15 @@ function mobkit.turn2yaw(self,tyaw,rate)
|
||||||
local yaw = self.object:get_yaw()
|
local yaw = self.object:get_yaw()
|
||||||
yaw = yaw+pi
|
yaw = yaw+pi
|
||||||
tyaw=(tyaw+pi)%(pi*2)
|
tyaw=(tyaw+pi)%(pi*2)
|
||||||
|
|
||||||
local step=min(self.dtime*rate,abs(tyaw-yaw)%(pi*2))
|
local step=min(self.dtime*rate,abs(tyaw-yaw)%(pi*2))
|
||||||
|
|
||||||
local dir = abs(tyaw-yaw)>pi and -1 or 1
|
local dir = abs(tyaw-yaw)>pi and -1 or 1
|
||||||
dir = tyaw>yaw and dir*1 or dir * -1
|
dir = tyaw>yaw and dir*1 or dir * -1
|
||||||
|
|
||||||
local nyaw = (yaw+step*dir)%(pi*2)
|
local nyaw = (yaw+step*dir)%(pi*2)
|
||||||
self.object:set_yaw(nyaw-pi)
|
self.object:set_yaw(nyaw-pi)
|
||||||
|
|
||||||
if nyaw==tyaw then return true, nyaw-pi
|
if nyaw==tyaw then return true, nyaw-pi
|
||||||
else return false, nyaw-pi end
|
else return false, nyaw-pi end
|
||||||
end
|
end
|
||||||
|
@ -337,9 +337,9 @@ end
|
||||||
-- object has reached the destination if dest is in the rear half plane.
|
-- object has reached the destination if dest is in the rear half plane.
|
||||||
function mobkit.is_there_yet2d(pos,dir,dest) -- obj positon; facing vector; destination position
|
function mobkit.is_there_yet2d(pos,dir,dest) -- obj positon; facing vector; destination position
|
||||||
|
|
||||||
local c = -dir.x*pos.x-dir.z*pos.z -- the constant
|
local c = -dir.x*pos.x-dir.z*pos.z -- the constant
|
||||||
|
|
||||||
if dir.z > 0 then
|
if dir.z > 0 then
|
||||||
return dest.z <= (-dir.x*dest.x - c)/dir.z -- line equation
|
return dest.z <= (-dir.x*dest.x - c)/dir.z -- line equation
|
||||||
elseif dir.z < 0 then
|
elseif dir.z < 0 then
|
||||||
return dest.z >= (-dir.x*dest.x - c)/dir.z
|
return dest.z >= (-dir.x*dest.x - c)/dir.z
|
||||||
|
@ -350,7 +350,7 @@ function mobkit.is_there_yet2d(pos,dir,dest) -- obj positon; facing vector; dest
|
||||||
else
|
else
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function mobkit.isnear3d(p1,p2,thresh)
|
function mobkit.isnear3d(p1,p2,thresh)
|
||||||
|
@ -365,9 +365,9 @@ function mobkit.get_box_height(thing)
|
||||||
if type(thing) == 'table' then thing = thing.object end
|
if type(thing) == 'table' then thing = thing.object end
|
||||||
local colbox = thing:get_properties().collisionbox
|
local colbox = thing:get_properties().collisionbox
|
||||||
local height
|
local height
|
||||||
if colbox then height = colbox[5]-colbox[2]
|
if colbox then height = colbox[5]-colbox[2]
|
||||||
else height = 0.1 end
|
else height = 0.1 end
|
||||||
|
|
||||||
return height > 0 and height or 0.1
|
return height > 0 and height or 0.1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -376,7 +376,7 @@ function mobkit.is_alive(thing) -- thing can be luaentity or objectref.
|
||||||
if not mobkit.exists(thing) then return false end
|
if not mobkit.exists(thing) then return false end
|
||||||
if type(thing) == 'table' then return thing.hp > 0 end
|
if type(thing) == 'table' then return thing.hp > 0 end
|
||||||
if thing:is_player() then return thing:get_hp() > 0
|
if thing:is_player() then return thing:get_hp() > 0
|
||||||
else
|
else
|
||||||
local lua = thing:get_luaentity()
|
local lua = thing:get_luaentity()
|
||||||
local hp = lua and lua.hp or nil
|
local hp = lua and lua.hp or nil
|
||||||
return hp and hp > 0
|
return hp and hp > 0
|
||||||
|
@ -386,9 +386,9 @@ end
|
||||||
function mobkit.exists(thing)
|
function mobkit.exists(thing)
|
||||||
if not thing then return false end
|
if not thing then return false end
|
||||||
if type(thing) == 'table' then thing=thing.object end
|
if type(thing) == 'table' then thing=thing.object end
|
||||||
if type(thing) == 'userdata' then
|
if type(thing) == 'userdata' then
|
||||||
if thing:is_player() then
|
if thing:is_player() then
|
||||||
if thing:get_look_horizontal() then return true end
|
if thing:get_look_horizontal() then return true end
|
||||||
else
|
else
|
||||||
if thing:get_yaw() then return true end
|
if thing:get_yaw() then return true end
|
||||||
end
|
end
|
||||||
|
@ -413,15 +413,17 @@ function mobkit.animate(self,anim)
|
||||||
if self.animation and self.animation[anim] then
|
if self.animation and self.animation[anim] then
|
||||||
if self._anim == anim then return end
|
if self._anim == anim then return end
|
||||||
self._anim=anim
|
self._anim=anim
|
||||||
|
|
||||||
local aparms = {}
|
local aparms = {}
|
||||||
if #self.animation[anim] > 0 then
|
if #self.animation[anim] > 0 then
|
||||||
aparms = self.animation[anim][random(#self.animation[anim])]
|
aparms = self.animation[anim][random(#self.animation[anim])]
|
||||||
else
|
else
|
||||||
aparms = self.animation[anim]
|
aparms = self.animation[anim]
|
||||||
end
|
end
|
||||||
|
|
||||||
self.object:set_animation(aparms.range,aparms.speed,0,aparms.loop)
|
aparms.frame_blend = aparms.frame_blend or 0
|
||||||
|
|
||||||
|
self.object:set_animation(aparms.range,aparms.speed,aparms.frame_blend,aparms.loop)
|
||||||
else
|
else
|
||||||
self._anim = nil
|
self._anim = nil
|
||||||
end
|
end
|
||||||
|
@ -430,20 +432,21 @@ end
|
||||||
function mobkit.make_sound(self, sound)
|
function mobkit.make_sound(self, sound)
|
||||||
local spec = self.sounds and self.sounds[sound]
|
local spec = self.sounds and self.sounds[sound]
|
||||||
local param_table = {object=self.object}
|
local param_table = {object=self.object}
|
||||||
|
|
||||||
if type(spec) == 'table' then
|
if type(spec) == 'table' then
|
||||||
--pick random sound if it's a spec for random sounds
|
--pick random sound if it's a spec for random sounds
|
||||||
if #spec > 0 then spec = spec[random(#spec)] end
|
if #spec > 0 then spec = spec[random(#spec)] end
|
||||||
|
|
||||||
--returns value or a random value within the range [value[1], value[2])
|
--returns value or a random value within the range [value[1], value[2])
|
||||||
local function in_range(value)
|
local function in_range(value)
|
||||||
return type(value) == 'table' and value[1]+random()*(value[2]-value[1]) or value
|
return type(value) == 'table' and value[1]+random()*(value[2]-value[1]) or value
|
||||||
end
|
end
|
||||||
|
|
||||||
--pick random values within a range if they're a table
|
--pick random values within a range if they're a table
|
||||||
param_table.gain = in_range(spec.gain)
|
param_table.gain = in_range(spec.gain)
|
||||||
param_table.fade = in_range(spec.fade)
|
param_table.fade = in_range(spec.fade)
|
||||||
param_table.pitch = in_range(spec.pitch)
|
param_table.pitch = in_range(spec.pitch)
|
||||||
|
return minetest.sound_play(spec.name, param_table)
|
||||||
end
|
end
|
||||||
return minetest.sound_play(spec, param_table)
|
return minetest.sound_play(spec, param_table)
|
||||||
end
|
end
|
||||||
|
@ -458,7 +461,7 @@ function mobkit.is_neighbor_node_reachable(self,neighbor) -- todo: take either n
|
||||||
if height and abs(height-pos.y) <= self.jump_height then
|
if height and abs(height-pos.y) <= self.jump_height then
|
||||||
tpos.y = height
|
tpos.y = height
|
||||||
height = height - pos.y
|
height = height - pos.y
|
||||||
|
|
||||||
-- don't cut corners
|
-- don't cut corners
|
||||||
if neighbor % 2 == 0 then -- diagonal neighbors are even
|
if neighbor % 2 == 0 then -- diagonal neighbors are even
|
||||||
local n2 = neighbor-1 -- left neighbor never < 0
|
local n2 = neighbor-1 -- left neighbor never < 0
|
||||||
|
@ -472,7 +475,7 @@ function mobkit.is_neighbor_node_reachable(self,neighbor) -- todo: take either n
|
||||||
h2 = mobkit.get_terrain_height(t2,recursteps)
|
h2 = mobkit.get_terrain_height(t2,recursteps)
|
||||||
if h2 and h2 - pos.y > 0.02 then return end
|
if h2 and h2 - pos.y > 0.02 then return end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- check headroom
|
-- check headroom
|
||||||
if tpos.y+self.height-pos.y > 1 then -- if head in next node above, else no point checking headroom
|
if tpos.y+self.height-pos.y > 1 then -- if head in next node above, else no point checking headroom
|
||||||
local snpos = mobkit.get_node_pos(pos)
|
local snpos = mobkit.get_node_pos(pos)
|
||||||
|
@ -480,17 +483,17 @@ function mobkit.is_neighbor_node_reachable(self,neighbor) -- todo: take either n
|
||||||
local pos2 = {x=tpos.x,y=tpos.y+self.height,z=tpos.z} -- target head pos
|
local pos2 = {x=tpos.x,y=tpos.y+self.height,z=tpos.z} -- target head pos
|
||||||
|
|
||||||
local nodes = mobkit.get_nodes_in_area(pos1,pos2,true)
|
local nodes = mobkit.get_nodes_in_area(pos1,pos2,true)
|
||||||
|
|
||||||
for p,node in pairs(nodes) do
|
for p,node in pairs(nodes) do
|
||||||
if snpos.x==p.x and snpos.z==p.z then
|
if snpos.x==p.x and snpos.z==p.z then
|
||||||
if node.name=='ignore' or node.walkable then return end
|
if node.name=='ignore' or node.walkable then return end
|
||||||
else
|
else
|
||||||
if node.name=='ignore' or
|
if node.name=='ignore' or
|
||||||
(node.walkable and mobkit.get_node_height(p)>tpos.y+0.001) then return end
|
(node.walkable and mobkit.get_node_height(p)>tpos.y+0.001) then return end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return height, tpos, liquidflag
|
return height, tpos, liquidflag
|
||||||
else
|
else
|
||||||
return
|
return
|
||||||
|
@ -506,11 +509,11 @@ function mobkit.get_next_waypoint(self,tpos)
|
||||||
if #self.pos_history > 2 then table.remove(self.pos_history,#self.pos_history) end
|
if #self.pos_history > 2 then table.remove(self.pos_history,#self.pos_history) end
|
||||||
end
|
end
|
||||||
local nogopos = self.pos_history[2]
|
local nogopos = self.pos_history[2]
|
||||||
|
|
||||||
local height, pos2, liquidflag = mobkit.is_neighbor_node_reachable(self,neighbor)
|
local height, pos2, liquidflag = mobkit.is_neighbor_node_reachable(self,neighbor)
|
||||||
--minetest.chat_send_all('pos2 ' .. minetest.serialize(pos2))
|
--minetest.chat_send_all('pos2 ' .. minetest.serialize(pos2))
|
||||||
--minetest.chat_send_all('nogopos ' .. minetest.serialize(nogopos))
|
--minetest.chat_send_all('nogopos ' .. minetest.serialize(nogopos))
|
||||||
if height and not liquidflag
|
if height and not liquidflag
|
||||||
and not (nogopos and mobkit.isnear2d(pos2,nogopos,0.1)) then
|
and not (nogopos and mobkit.isnear2d(pos2,nogopos,0.1)) then
|
||||||
|
|
||||||
local heightl = mobkit.is_neighbor_node_reachable(self,mobkit.neighbor_shift(neighbor,-1))
|
local heightl = mobkit.is_neighbor_node_reachable(self,mobkit.neighbor_shift(neighbor,-1))
|
||||||
|
@ -531,25 +534,25 @@ function mobkit.get_next_waypoint(self,tpos)
|
||||||
for i=1,3 do
|
for i=1,3 do
|
||||||
-- scan left
|
-- scan left
|
||||||
local height, pos2, liq = mobkit.is_neighbor_node_reachable(self,mobkit.neighbor_shift(neighbor,-i*self.path_dir))
|
local height, pos2, liq = mobkit.is_neighbor_node_reachable(self,mobkit.neighbor_shift(neighbor,-i*self.path_dir))
|
||||||
if height and not liq
|
if height and not liq
|
||||||
and not (nogopos and mobkit.isnear2d(pos2,nogopos,0.1)) then
|
and not (nogopos and mobkit.isnear2d(pos2,nogopos,0.1)) then
|
||||||
update_pos_history(self,pos2)
|
update_pos_history(self,pos2)
|
||||||
return height,pos2
|
return height,pos2
|
||||||
end
|
end
|
||||||
-- scan right
|
-- scan right
|
||||||
height, pos2, liq = mobkit.is_neighbor_node_reachable(self,mobkit.neighbor_shift(neighbor,i*self.path_dir))
|
height, pos2, liq = mobkit.is_neighbor_node_reachable(self,mobkit.neighbor_shift(neighbor,i*self.path_dir))
|
||||||
if height and not liq
|
if height and not liq
|
||||||
and not (nogopos and mobkit.isnear2d(pos2,nogopos,0.1)) then
|
and not (nogopos and mobkit.isnear2d(pos2,nogopos,0.1)) then
|
||||||
update_pos_history(self,pos2)
|
update_pos_history(self,pos2)
|
||||||
return height,pos2
|
return height,pos2
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
--scan rear
|
--scan rear
|
||||||
height, pos2, liquidflag = mobkit.is_neighbor_node_reachable(self,mobkit.neighbor_shift(neighbor,4))
|
height, pos2, liquidflag = mobkit.is_neighbor_node_reachable(self,mobkit.neighbor_shift(neighbor,4))
|
||||||
if height and not liquidflag
|
if height and not liquidflag
|
||||||
and not (nogopos and mobkit.isnear2d(pos2,nogopos,0.1)) then
|
and not (nogopos and mobkit.isnear2d(pos2,nogopos,0.1)) then
|
||||||
update_pos_history(self,pos2)
|
update_pos_history(self,pos2)
|
||||||
return height,pos2
|
return height,pos2
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- stuck condition here
|
-- stuck condition here
|
||||||
|
@ -562,7 +565,7 @@ function mobkit.get_next_waypoint_fast(self,tpos,nogopos)
|
||||||
local dir=vector.direction(pos,tpos)
|
local dir=vector.direction(pos,tpos)
|
||||||
local neighbor = mobkit.dir2neighbor(dir)
|
local neighbor = mobkit.dir2neighbor(dir)
|
||||||
local height, pos2, liquidflag = mobkit.is_neighbor_node_reachable(self,neighbor)
|
local height, pos2, liquidflag = mobkit.is_neighbor_node_reachable(self,neighbor)
|
||||||
|
|
||||||
if height and not liquidflag then
|
if height and not liquidflag then
|
||||||
local fast = false
|
local fast = false
|
||||||
heightl = mobkit.is_neighbor_node_reachable(self,mobkit.neighbor_shift(neighbor,-1))
|
heightl = mobkit.is_neighbor_node_reachable(self,mobkit.neighbor_shift(neighbor,-1))
|
||||||
|
@ -593,19 +596,19 @@ end
|
||||||
|
|
||||||
function mobkit.goto_next_waypoint(self,tpos)
|
function mobkit.goto_next_waypoint(self,tpos)
|
||||||
local height, pos2 = mobkit.get_next_waypoint(self,tpos)
|
local height, pos2 = mobkit.get_next_waypoint(self,tpos)
|
||||||
|
|
||||||
if not height then return false end
|
if not height then return false end
|
||||||
|
|
||||||
if height <= 0.01 then
|
if height <= 0.01 then
|
||||||
local yaw = self.object:get_yaw()
|
local yaw = self.object:get_yaw()
|
||||||
local tyaw = minetest.dir_to_yaw(vector.direction(self.object:get_pos(),pos2))
|
local tyaw = minetest.dir_to_yaw(vector.direction(self.object:get_pos(),pos2))
|
||||||
if abs(tyaw-yaw) > 1 then
|
if abs(tyaw-yaw) > 1 then
|
||||||
mobkit.lq_turn2pos(self,pos2)
|
mobkit.lq_turn2pos(self,pos2)
|
||||||
end
|
end
|
||||||
mobkit.lq_dumbwalk(self,pos2)
|
mobkit.lq_dumbwalk(self,pos2)
|
||||||
else
|
else
|
||||||
mobkit.lq_turn2pos(self,pos2)
|
mobkit.lq_turn2pos(self,pos2)
|
||||||
mobkit.lq_dumbjump(self,height)
|
mobkit.lq_dumbjump(self,height)
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
@ -618,7 +621,7 @@ function mobkit.go_forward_horizontal(self,speed) -- sets velocity in yaw direct
|
||||||
self.object:set_velocity(vel)
|
self.object:set_velocity(vel)
|
||||||
end
|
end
|
||||||
|
|
||||||
function mobkit.drive_to_pos(self,tpos,speed,turn_rate,dist)
|
function mobkit.drive_to_pos(self,tpos,speed,turn_rate,dist)
|
||||||
local pos=self.object:get_pos()
|
local pos=self.object:get_pos()
|
||||||
dist = dist or 0.2
|
dist = dist or 0.2
|
||||||
if mobkit.isnear2d(pos,tpos,dist) then return true end
|
if mobkit.isnear2d(pos,tpos,dist) then return true end
|
||||||
|
@ -634,7 +637,7 @@ function mobkit.timer(self,s) -- returns true approx every s seconds
|
||||||
if t2>t1 and t2%s==0 then return true end
|
if t2>t1 and t2%s==0 then return true end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Memory functions.
|
-- Memory functions.
|
||||||
-- Stuff in memory is serialized, never try to remember objectrefs.
|
-- Stuff in memory is serialized, never try to remember objectrefs.
|
||||||
function mobkit.remember(self,key,val)
|
function mobkit.remember(self,key,val)
|
||||||
self.memory[key]=val
|
self.memory[key]=val
|
||||||
|
@ -749,20 +752,20 @@ local function sensors()
|
||||||
return function(self)
|
return function(self)
|
||||||
timer=timer-self.dtime
|
timer=timer-self.dtime
|
||||||
if timer < 0 then
|
if timer < 0 then
|
||||||
|
|
||||||
pulse = pulse + 1 -- do full range every third scan
|
pulse = pulse + 1 -- do full range every third scan
|
||||||
local range = self.view_range
|
local range = self.view_range
|
||||||
if pulse > 2 then
|
if pulse > 2 then
|
||||||
pulse = 1
|
pulse = 1
|
||||||
else
|
else
|
||||||
range = self.view_range*0.5
|
range = self.view_range*0.5
|
||||||
end
|
end
|
||||||
|
|
||||||
local pos = self.object:get_pos()
|
local pos = self.object:get_pos()
|
||||||
--local tim = minetest.get_us_time()
|
--local tim = minetest.get_us_time()
|
||||||
self.nearby_objects = minetest.get_objects_inside_radius(pos, range)
|
self.nearby_objects = minetest.get_objects_inside_radius(pos, range)
|
||||||
--minetest.chat_send_all(minetest.get_us_time()-tim)
|
--minetest.chat_send_all(minetest.get_us_time()-tim)
|
||||||
for i,obj in ipairs(self.nearby_objects) do
|
for i,obj in ipairs(self.nearby_objects) do
|
||||||
if obj == self.object then
|
if obj == self.object then
|
||||||
table.remove(self.nearby_objects,i)
|
table.remove(self.nearby_objects,i)
|
||||||
break
|
break
|
||||||
|
@ -789,19 +792,19 @@ function mobkit.physics(self)
|
||||||
y=vel.y,
|
y=vel.y,
|
||||||
z=vel.z > 0.2 and vel.z*mobkit.friction or 0})
|
z=vel.z > 0.2 and vel.z*mobkit.friction or 0})
|
||||||
end
|
end
|
||||||
|
|
||||||
-- bounciness
|
-- bounciness
|
||||||
if self.springiness and self.springiness > 0 then
|
if self.springiness and self.springiness > 0 then
|
||||||
local vnew = vector.new(vel)
|
local vnew = vector.new(vel)
|
||||||
|
|
||||||
if not self.collided then -- ugly workaround for inconsistent collisions
|
if not self.collided then -- ugly workaround for inconsistent collisions
|
||||||
for _,k in ipairs({'y','z','x'}) do
|
for _,k in ipairs({'y','z','x'}) do
|
||||||
if vel[k]==0 and abs(self.lastvelocity[k])> 0.1 then
|
if vel[k]==0 and abs(self.lastvelocity[k])> 0.1 then
|
||||||
vnew[k]=-self.lastvelocity[k]*self.springiness
|
vnew[k]=-self.lastvelocity[k]*self.springiness
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not vector.equals(vel,vnew) then
|
if not vector.equals(vel,vnew) then
|
||||||
self.collided = true
|
self.collided = true
|
||||||
else
|
else
|
||||||
|
@ -810,10 +813,10 @@ function mobkit.physics(self)
|
||||||
end
|
end
|
||||||
self.collided = false
|
self.collided = false
|
||||||
end
|
end
|
||||||
|
|
||||||
self.object:set_velocity(vnew)
|
self.object:set_velocity(vnew)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- buoyancy
|
-- buoyancy
|
||||||
local surface = nil
|
local surface = nil
|
||||||
local surfnodename = nil
|
local surfnodename = nil
|
||||||
|
@ -841,7 +844,7 @@ function mobkit.physics(self)
|
||||||
-- self.isinliquid = false
|
-- self.isinliquid = false
|
||||||
self.object:set_acceleration({x=0,y=mobkit.gravity,z=0})
|
self.object:set_acceleration({x=0,y=mobkit.gravity,z=0})
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function mobkit.vitals(self)
|
function mobkit.vitals(self)
|
||||||
|
@ -851,17 +854,17 @@ function mobkit.vitals(self)
|
||||||
if velocity_delta > mobkit.safe_velocity then
|
if velocity_delta > mobkit.safe_velocity then
|
||||||
self.hp = self.hp - floor(self.max_hp * min(1, velocity_delta/mobkit.terminal_velocity))
|
self.hp = self.hp - floor(self.max_hp * min(1, velocity_delta/mobkit.terminal_velocity))
|
||||||
end
|
end
|
||||||
|
|
||||||
-- vitals: oxygen
|
-- vitals: oxygen
|
||||||
if self.lung_capacity then
|
if self.lung_capacity then
|
||||||
local colbox = self.object:get_properties().collisionbox
|
local colbox = self.object:get_properties().collisionbox
|
||||||
local headnode = mobkit.nodeatpos(mobkit.pos_shift(self.object:get_pos(),{y=colbox[5]})) -- node at hitbox top
|
local headnode = mobkit.nodeatpos(mobkit.pos_shift(self.object:get_pos(),{y=colbox[5]})) -- node at hitbox top
|
||||||
if headnode and headnode.drawtype == 'liquid' then
|
if headnode and headnode.drawtype == 'liquid' then
|
||||||
self.oxygen = self.oxygen - self.dtime
|
self.oxygen = self.oxygen - self.dtime
|
||||||
else
|
else
|
||||||
self.oxygen = self.lung_capacity
|
self.oxygen = self.lung_capacity
|
||||||
end
|
end
|
||||||
|
|
||||||
if self.oxygen <= 0 then self.hp=0 end -- drown
|
if self.oxygen <= 0 then self.hp=0 end -- drown
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -878,7 +881,7 @@ function mobkit.actfunc(self, staticdata, dtime_s)
|
||||||
|
|
||||||
self.logic = self.logic or self.brainfunc
|
self.logic = self.logic or self.brainfunc
|
||||||
self.physics = self.physics or mobkit.physics
|
self.physics = self.physics or mobkit.physics
|
||||||
|
|
||||||
self.lqueue = {}
|
self.lqueue = {}
|
||||||
self.hqueue = {}
|
self.hqueue = {}
|
||||||
self.nearby_objects = {}
|
self.nearby_objects = {}
|
||||||
|
@ -889,28 +892,28 @@ function mobkit.actfunc(self, staticdata, dtime_s)
|
||||||
self.water_drag = self.water_drag or 1
|
self.water_drag = self.water_drag or 1
|
||||||
|
|
||||||
local sdata = minetest.deserialize(staticdata)
|
local sdata = minetest.deserialize(staticdata)
|
||||||
if sdata then
|
if sdata then
|
||||||
for k,v in pairs(sdata) do
|
for k,v in pairs(sdata) do
|
||||||
self[k] = v
|
self[k] = v
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if self.textures==nil then
|
if self.textures==nil then
|
||||||
local prop_tex = self.object:get_properties().textures
|
local prop_tex = self.object:get_properties().textures
|
||||||
if prop_tex then self.textures=prop_tex end
|
if prop_tex then self.textures=prop_tex end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not self.memory then -- this is the initial activation
|
if not self.memory then -- this is the initial activation
|
||||||
self.memory = {}
|
self.memory = {}
|
||||||
|
|
||||||
-- texture variation
|
-- texture variation
|
||||||
if #self.textures > 1 then self.texture_no = random(#self.textures) end
|
if #self.textures > 1 then self.texture_no = random(#self.textures) end
|
||||||
end
|
end
|
||||||
|
|
||||||
if self.timeout and self.timeout>0 and dtime_s > self.timeout and next(self.memory)==nil then
|
if self.timeout and self.timeout>0 and dtime_s > self.timeout and next(self.memory)==nil then
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
end
|
end
|
||||||
|
|
||||||
-- apply texture
|
-- apply texture
|
||||||
if self.textures and self.texture_no then
|
if self.textures and self.texture_no then
|
||||||
local props = {}
|
local props = {}
|
||||||
|
@ -927,7 +930,7 @@ function mobkit.actfunc(self, staticdata, dtime_s)
|
||||||
end
|
end
|
||||||
self.armor_groups.immortal = 1
|
self.armor_groups.immortal = 1
|
||||||
self.object:set_armor_groups(self.armor_groups)
|
self.object:set_armor_groups(self.armor_groups)
|
||||||
|
|
||||||
self.buoyancy = self.buoyancy or 0
|
self.buoyancy = self.buoyancy or 0
|
||||||
self.oxygen = self.oxygen or self.lung_capacity
|
self.oxygen = self.oxygen or self.lung_capacity
|
||||||
self.lastvelocity = {x=0,y=0,z=0}
|
self.lastvelocity = {x=0,y=0,z=0}
|
||||||
|
@ -937,11 +940,11 @@ end
|
||||||
function mobkit.stepfunc(self,dtime) -- not intended to be modified
|
function mobkit.stepfunc(self,dtime) -- not intended to be modified
|
||||||
self.dtime = min(dtime,0.2)
|
self.dtime = min(dtime,0.2)
|
||||||
self.height = mobkit.get_box_height(self)
|
self.height = mobkit.get_box_height(self)
|
||||||
|
|
||||||
-- physics comes first
|
-- physics comes first
|
||||||
-- self.object:set_acceleration({x=0,y=mobkit.gravity,z=0})
|
-- self.object:set_acceleration({x=0,y=mobkit.gravity,z=0})
|
||||||
local vel = self.object:get_velocity()
|
local vel = self.object:get_velocity()
|
||||||
|
|
||||||
-- if self.lastvelocity.y == vel.y then
|
-- if self.lastvelocity.y == vel.y then
|
||||||
-- if abs(self.lastvelocity.y-vel.y)<0.001 then
|
-- if abs(self.lastvelocity.y-vel.y)<0.001 then
|
||||||
if self.lastvelocity.y==0 and vel.y==0 then
|
if self.lastvelocity.y==0 and vel.y==0 then
|
||||||
|
@ -949,7 +952,7 @@ function mobkit.stepfunc(self,dtime) -- not intended to be modified
|
||||||
else
|
else
|
||||||
self.isonground = false
|
self.isonground = false
|
||||||
end
|
end
|
||||||
|
|
||||||
self:physics()
|
self:physics()
|
||||||
|
|
||||||
if self.logic then
|
if self.logic then
|
||||||
|
@ -957,7 +960,7 @@ function mobkit.stepfunc(self,dtime) -- not intended to be modified
|
||||||
self:logic()
|
self:logic()
|
||||||
execute_queues(self)
|
execute_queues(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
self.lastvelocity = self.object:get_velocity()
|
self.lastvelocity = self.object:get_velocity()
|
||||||
self.time_total=self.time_total+self.dtime
|
self.time_total=self.time_total+self.dtime
|
||||||
end
|
end
|
||||||
|
@ -981,8 +984,8 @@ function mobkit.lq_idle(self,duration,anim)
|
||||||
anim = anim or 'stand'
|
anim = anim or 'stand'
|
||||||
local init = true
|
local init = true
|
||||||
local func=function(self)
|
local func=function(self)
|
||||||
if init then
|
if init then
|
||||||
mobkit.animate(self,anim)
|
mobkit.animate(self,anim)
|
||||||
init=false
|
init=false
|
||||||
end
|
end
|
||||||
duration = duration-self.dtime
|
duration = duration-self.dtime
|
||||||
|
@ -998,7 +1001,7 @@ function mobkit.lq_dumbwalk(self,dest,speed_factor)
|
||||||
mobkit.animate(self,'walk')
|
mobkit.animate(self,'walk')
|
||||||
timer = timer - self.dtime
|
timer = timer - self.dtime
|
||||||
if timer < 0 then return true end
|
if timer < 0 then return true end
|
||||||
|
|
||||||
local pos = mobkit.get_stand_pos(self)
|
local pos = mobkit.get_stand_pos(self)
|
||||||
local y = self.object:get_velocity().y
|
local y = self.object:get_velocity().y
|
||||||
|
|
||||||
|
@ -1008,7 +1011,7 @@ function mobkit.lq_dumbwalk(self,dest,speed_factor)
|
||||||
-- if abs(dest.y-pos.y) > 0.1 then -- isonground too slow for speeds > 4
|
-- if abs(dest.y-pos.y) > 0.1 then -- isonground too slow for speeds > 4
|
||||||
self.object:set_velocity({x=0,y=y,z=0})
|
self.object:set_velocity({x=0,y=y,z=0})
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
if self.isonground then
|
if self.isonground then
|
||||||
|
@ -1040,7 +1043,7 @@ function mobkit.lq_dumbjump(self,height,anim)
|
||||||
else -- the eagle has landed
|
else -- the eagle has landed
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
local dir = minetest.yaw_to_dir(yaw)
|
local dir = minetest.yaw_to_dir(yaw)
|
||||||
local vel = self.object:get_velocity()
|
local vel = self.object:get_velocity()
|
||||||
if self.lastvelocity.y < 0.9 then
|
if self.lastvelocity.y < 0.9 then
|
||||||
|
@ -1090,7 +1093,7 @@ function mobkit.lq_freejump(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
function mobkit.lq_jumpattack(self,height,target)
|
function mobkit.lq_jumpattack(self,height,target)
|
||||||
local phase=1
|
local phase=1
|
||||||
local timer=0.5
|
local timer=0.5
|
||||||
local tgtbox = target:get_properties().collisionbox
|
local tgtbox = target:get_properties().collisionbox
|
||||||
local func=function(self)
|
local func=function(self)
|
||||||
|
@ -1121,11 +1124,11 @@ function mobkit.lq_jumpattack(self,height,target)
|
||||||
local dir = minetest.yaw_to_dir(yaw)
|
local dir = minetest.yaw_to_dir(yaw)
|
||||||
local apos = mobkit.pos_translate2d(pos,yaw,self.attack.range)
|
local apos = mobkit.pos_translate2d(pos,yaw,self.attack.range)
|
||||||
|
|
||||||
if mobkit.is_pos_in_box(apos,tgtpos,tgtbox, self.offset) then --bite
|
if mobkit.is_pos_in_box(apos,tgtpos,tgtbox) then --bite
|
||||||
target:punch(self.object,1,self.attack)
|
target:punch(self.object,1,self.attack)
|
||||||
-- bounce off
|
-- bounce off
|
||||||
local vy = self.object:get_velocity().y
|
local vy = self.object:get_velocity().y
|
||||||
self.object:set_velocity({x=dir.x*-3,y=vy,z=dir.z*-3})
|
self.object:set_velocity({x=dir.x*-3,y=vy,z=dir.z*-3})
|
||||||
-- play attack sound if defined
|
-- play attack sound if defined
|
||||||
mobkit.make_sound(self,'attack')
|
mobkit.make_sound(self,'attack')
|
||||||
phase=4
|
phase=4
|
||||||
|
@ -1158,11 +1161,11 @@ end
|
||||||
|
|
||||||
function mobkit.dumbstep(self,height,tpos,speed_factor,idle_duration)
|
function mobkit.dumbstep(self,height,tpos,speed_factor,idle_duration)
|
||||||
if height <= 0.001 then
|
if height <= 0.001 then
|
||||||
mobkit.lq_turn2pos(self,tpos)
|
mobkit.lq_turn2pos(self,tpos)
|
||||||
mobkit.lq_dumbwalk(self,tpos,speed_factor)
|
mobkit.lq_dumbwalk(self,tpos,speed_factor)
|
||||||
else
|
else
|
||||||
mobkit.lq_turn2pos(self,tpos)
|
mobkit.lq_turn2pos(self,tpos)
|
||||||
mobkit.lq_dumbjump(self,height)
|
mobkit.lq_dumbjump(self,height)
|
||||||
end
|
end
|
||||||
idle_duration = idle_duration or 6
|
idle_duration = idle_duration or 6
|
||||||
mobkit.lq_idle(self,random(ceil(idle_duration*0.5),idle_duration))
|
mobkit.lq_idle(self,random(ceil(idle_duration*0.5),idle_duration))
|
||||||
|
@ -1192,7 +1195,7 @@ function mobkit.hq_follow0(self,tgtobj) -- probably delete this one
|
||||||
if not neighbor then return true end --temp debug
|
if not neighbor then return true end --temp debug
|
||||||
local height, tpos = mobkit.is_neighbor_node_reachable(self,neighbor)
|
local height, tpos = mobkit.is_neighbor_node_reachable(self,neighbor)
|
||||||
if height then mobkit.dumbstep(self,height,tpos)
|
if height then mobkit.dumbstep(self,height,tpos)
|
||||||
else
|
else
|
||||||
for i=1,4 do --scan left
|
for i=1,4 do --scan left
|
||||||
height, tpos = mobkit.is_neighbor_node_reachable(self,(8+neighbor-i-1)%8+1)
|
height, tpos = mobkit.is_neighbor_node_reachable(self,(8+neighbor-i-1)%8+1)
|
||||||
if height then mobkit.dumbstep(self,height,tpos)
|
if height then mobkit.dumbstep(self,height,tpos)
|
||||||
|
@ -1246,7 +1249,7 @@ function mobkit.hq_runfrom(self,prty,tgtobj)
|
||||||
local init=true
|
local init=true
|
||||||
local timer=6
|
local timer=6
|
||||||
local func = function(self)
|
local func = function(self)
|
||||||
|
|
||||||
if not mobkit.is_alive(tgtobj) then return true end
|
if not mobkit.is_alive(tgtobj) then return true end
|
||||||
if init then
|
if init then
|
||||||
timer = timer-self.dtime
|
timer = timer-self.dtime
|
||||||
|
@ -1256,7 +1259,7 @@ function mobkit.hq_runfrom(self,prty,tgtobj)
|
||||||
end
|
end
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if mobkit.is_queue_empty_low(self) and self.isonground then
|
if mobkit.is_queue_empty_low(self) and self.isonground then
|
||||||
local pos = mobkit.get_stand_pos(self)
|
local pos = mobkit.get_stand_pos(self)
|
||||||
local opos = tgtobj:get_pos()
|
local opos = tgtobj:get_pos()
|
||||||
|
@ -1286,7 +1289,7 @@ function mobkit.hq_hunt(self,prty,tgtobj)
|
||||||
elseif dist > 3 then
|
elseif dist > 3 then
|
||||||
mobkit.goto_next_waypoint(self,opos)
|
mobkit.goto_next_waypoint(self,opos)
|
||||||
else
|
else
|
||||||
mobkit.hq_attack(self,prty+1,tgtobj)
|
mobkit.hq_attack(self,prty+1,tgtobj)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1306,7 +1309,7 @@ function mobkit.hq_warn(self,prty,tgtobj)
|
||||||
local pos = mobkit.get_stand_pos(self)
|
local pos = mobkit.get_stand_pos(self)
|
||||||
local opos = tgtobj:get_pos()
|
local opos = tgtobj:get_pos()
|
||||||
local dist = vector.distance(pos,opos)
|
local dist = vector.distance(pos,opos)
|
||||||
|
|
||||||
if dist > 11 then
|
if dist > 11 then
|
||||||
return true
|
return true
|
||||||
elseif dist < 4 or timer > 12 then -- too close man
|
elseif dist < 4 or timer > 12 then -- too close man
|
||||||
|
@ -1315,7 +1318,7 @@ function mobkit.hq_warn(self,prty,tgtobj)
|
||||||
mobkit.hq_hunt(self,prty+1,tgtobj) -- priority
|
mobkit.hq_hunt(self,prty+1,tgtobj) -- priority
|
||||||
else
|
else
|
||||||
timer = timer+self.dtime
|
timer = timer+self.dtime
|
||||||
if mobkit.is_queue_empty_low(self) then
|
if mobkit.is_queue_empty_low(self) then
|
||||||
mobkit.lq_turn2pos(self,opos)
|
mobkit.lq_turn2pos(self,opos)
|
||||||
end
|
end
|
||||||
-- make noise in random intervals
|
-- make noise in random intervals
|
||||||
|
@ -1335,8 +1338,8 @@ function mobkit.hq_die(self)
|
||||||
local timer = 5
|
local timer = 5
|
||||||
local start = true
|
local start = true
|
||||||
local func = function(self)
|
local func = function(self)
|
||||||
if start then
|
if start then
|
||||||
mobkit.lq_fallover(self)
|
mobkit.lq_fallover(self)
|
||||||
self.logic = function(self) end -- brain dead as well
|
self.logic = function(self) end -- brain dead as well
|
||||||
start=false
|
start=false
|
||||||
end
|
end
|
||||||
|
@ -1354,13 +1357,13 @@ function mobkit.hq_attack(self,prty,tgtobj)
|
||||||
-- local tpos = tgtobj:get_pos()
|
-- local tpos = tgtobj:get_pos()
|
||||||
local tpos = mobkit.get_stand_pos(tgtobj)
|
local tpos = mobkit.get_stand_pos(tgtobj)
|
||||||
local dist = vector.distance(pos,tpos)
|
local dist = vector.distance(pos,tpos)
|
||||||
if dist > 3 then
|
if dist > 3 then
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
mobkit.lq_turn2pos(self,tpos)
|
mobkit.lq_turn2pos(self,tpos)
|
||||||
local height = tgtobj:is_player() and 0.35 or tgtobj:get_luaentity().height*0.6
|
local height = tgtobj:is_player() and 0.35 or tgtobj:get_luaentity().height*0.6
|
||||||
if tpos.y+height>pos.y then
|
if tpos.y+height>pos.y then
|
||||||
mobkit.lq_jumpattack(self,tpos.y+height-pos.y,tgtobj)
|
mobkit.lq_jumpattack(self,tpos.y+height-pos.y,tgtobj)
|
||||||
else
|
else
|
||||||
mobkit.lq_dumbwalk(self,mobkit.pos_shift(tpos,{x=random()-0.5,z=random()-0.5}))
|
mobkit.lq_dumbwalk(self,mobkit.pos_shift(tpos,{x=random()-0.5,z=random()-0.5}))
|
||||||
end
|
end
|
||||||
|
@ -1387,10 +1390,10 @@ function mobkit.hq_liquid_recovery(self,prty) -- scan for nearest land
|
||||||
if yaw>2*pi then
|
if yaw>2*pi then
|
||||||
yaw = 0
|
yaw = 0
|
||||||
radius=radius+1
|
radius=radius+1
|
||||||
if radius > self.view_range then
|
if radius > self.view_range then
|
||||||
self.hp = 0
|
self.hp = 0
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
mobkit.queue_high(self,func,prty)
|
mobkit.queue_high(self,func,prty)
|
||||||
|
@ -1407,14 +1410,14 @@ function mobkit.hq_swimto(self,prty,tpos)
|
||||||
local pos2d = {x=pos.x,y=0,z=pos.z}
|
local pos2d = {x=pos.x,y=0,z=pos.z}
|
||||||
local dir=vector.normalize(vector.direction(pos2d,tpos))
|
local dir=vector.normalize(vector.direction(pos2d,tpos))
|
||||||
local yaw = minetest.dir_to_yaw(dir)
|
local yaw = minetest.dir_to_yaw(dir)
|
||||||
|
|
||||||
if mobkit.timer(self,1) then
|
if mobkit.timer(self,1) then
|
||||||
--perpendicular vectors: {-z,x};{z,-x}
|
--perpendicular vectors: {-z,x};{z,-x}
|
||||||
local pos1 = mobkit.pos_shift(mobkit.pos_shift(pos,{x=-dir.z*offset,z=dir.x*offset}),dir)
|
local pos1 = mobkit.pos_shift(mobkit.pos_shift(pos,{x=-dir.z*offset,z=dir.x*offset}),dir)
|
||||||
local h,l = mobkit.get_terrain_height(pos1)
|
local h,l = mobkit.get_terrain_height(pos1)
|
||||||
if h and h>pos.y then
|
if h and h>pos.y then
|
||||||
mobkit.lq_freejump(self)
|
mobkit.lq_freejump(self)
|
||||||
else
|
else
|
||||||
local pos2 = mobkit.pos_shift(mobkit.pos_shift(pos,{x=dir.z*offset,z=-dir.x*offset}),dir)
|
local pos2 = mobkit.pos_shift(mobkit.pos_shift(pos,{x=dir.z*offset,z=-dir.x*offset}),dir)
|
||||||
local h,l = mobkit.get_terrain_height(pos2)
|
local h,l = mobkit.get_terrain_height(pos2)
|
||||||
if h and h>pos.y then
|
if h and h>pos.y then
|
||||||
|
@ -1436,11 +1439,11 @@ end
|
||||||
-- MACROS
|
-- MACROS
|
||||||
local function aqua_radar_dumb(pos,yaw,range,reverse)
|
local function aqua_radar_dumb(pos,yaw,range,reverse)
|
||||||
range = range or 4
|
range = range or 4
|
||||||
|
|
||||||
local function okpos(p)
|
local function okpos(p)
|
||||||
local node = mobkit.nodeatpos(p)
|
local node = mobkit.nodeatpos(p)
|
||||||
if node then
|
if node then
|
||||||
if node.drawtype == 'liquid' then
|
if node.drawtype == 'liquid' then
|
||||||
local nodeu = mobkit.nodeatpos(mobkit.pos_shift(p,{y=1}))
|
local nodeu = mobkit.nodeatpos(mobkit.pos_shift(p,{y=1}))
|
||||||
local noded = mobkit.nodeatpos(mobkit.pos_shift(p,{y=-1}))
|
local noded = mobkit.nodeatpos(mobkit.pos_shift(p,{y=-1}))
|
||||||
if (nodeu and nodeu.drawtype == 'liquid') or (noded and noded.drawtype == 'liquid') then
|
if (nodeu and nodeu.drawtype == 'liquid') or (noded and noded.drawtype == 'liquid') then
|
||||||
|
@ -1450,7 +1453,7 @@ local function aqua_radar_dumb(pos,yaw,range,reverse)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
local h,l = mobkit.get_terrain_height(p)
|
local h,l = mobkit.get_terrain_height(p)
|
||||||
if h then
|
if h then
|
||||||
local node2 = mobkit.nodeatpos({x=p.x,y=h+1.99,z=p.z})
|
local node2 = mobkit.nodeatpos({x=p.x,y=h+1.99,z=p.z})
|
||||||
if node2 and node2.drawtype == 'liquid' then return true, h end
|
if node2 and node2.drawtype == 'liquid' then return true, h end
|
||||||
else
|
else
|
||||||
|
@ -1461,12 +1464,12 @@ local function aqua_radar_dumb(pos,yaw,range,reverse)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local fpos = mobkit.pos_translate2d(pos,yaw,range)
|
local fpos = mobkit.pos_translate2d(pos,yaw,range)
|
||||||
local ok,h = okpos(fpos)
|
local ok,h = okpos(fpos)
|
||||||
if not ok then
|
if not ok then
|
||||||
local ffrom, fto, fstep
|
local ffrom, fto, fstep
|
||||||
if reverse then
|
if reverse then
|
||||||
ffrom, fto, fstep = 3,1,-1
|
ffrom, fto, fstep = 3,1,-1
|
||||||
else
|
else
|
||||||
ffrom, fto, fstep = 1,3,1
|
ffrom, fto, fstep = 1,3,1
|
||||||
|
@ -1478,9 +1481,9 @@ local function aqua_radar_dumb(pos,yaw,range,reverse)
|
||||||
if ok then return yaw-i,h end
|
if ok then return yaw-i,h end
|
||||||
end
|
end
|
||||||
return yaw+pi,h
|
return yaw+pi,h
|
||||||
else
|
else
|
||||||
return yaw, h
|
return yaw, h
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function mobkit.is_in_deep(target)
|
function mobkit.is_in_deep(target)
|
||||||
|
@ -1518,7 +1521,7 @@ function mobkit.hq_aqua_roam(self,prty,speed)
|
||||||
local vel = self.object:get_velocity()
|
local vel = self.object:get_velocity()
|
||||||
vel.y = vel.y+1
|
vel.y = vel.y+1
|
||||||
self.object:set_velocity(vel)
|
self.object:set_velocity(vel)
|
||||||
end
|
end
|
||||||
if yaw ~= nyaw then
|
if yaw ~= nyaw then
|
||||||
tyaw=nyaw
|
tyaw=nyaw
|
||||||
mobkit.hq_aqua_turn(self,prty+1,tyaw,speed)
|
mobkit.hq_aqua_turn(self,prty+1,tyaw,speed)
|
||||||
|
@ -1532,7 +1535,7 @@ function mobkit.hq_aqua_roam(self,prty,speed)
|
||||||
if random(10)>=9 then tyaw=tyaw+random()*pi - pi*0.5 end
|
if random(10)>=9 then tyaw=tyaw+random()*pi - pi*0.5 end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
mobkit.turn2yaw(self,tyaw,3)
|
mobkit.turn2yaw(self,tyaw,3)
|
||||||
-- local yaw = self.object:get_yaw()
|
-- local yaw = self.object:get_yaw()
|
||||||
mobkit.go_forward_horizontal(self,speed)
|
mobkit.go_forward_horizontal(self,speed)
|
||||||
|
@ -1572,7 +1575,7 @@ function mobkit.hq_aqua_attack(self,prty,tgtobj,speed)
|
||||||
local vel = self.object:get_velocity()
|
local vel = self.object:get_velocity()
|
||||||
vel.y = vel.y+1
|
vel.y = vel.y+1
|
||||||
self.object:set_velocity(vel)
|
self.object:set_velocity(vel)
|
||||||
end
|
end
|
||||||
if yaw ~= nyaw then
|
if yaw ~= nyaw then
|
||||||
tyaw=nyaw
|
tyaw=nyaw
|
||||||
mobkit.hq_aqua_turn(self,prty+1,tyaw,speed)
|
mobkit.hq_aqua_turn(self,prty+1,tyaw,speed)
|
||||||
|
@ -1581,7 +1584,7 @@ function mobkit.hq_aqua_attack(self,prty,tgtobj,speed)
|
||||||
end
|
end
|
||||||
|
|
||||||
local tpos = tgtobj:get_pos()
|
local tpos = tgtobj:get_pos()
|
||||||
local tyaw=minetest.dir_to_yaw(vector.direction(pos,tpos))
|
local tyaw=minetest.dir_to_yaw(vector.direction(pos,tpos))
|
||||||
mobkit.turn2yaw(self,tyaw,3)
|
mobkit.turn2yaw(self,tyaw,3)
|
||||||
local yaw = self.object:get_yaw()
|
local yaw = self.object:get_yaw()
|
||||||
if mobkit.timer(self,1) then
|
if mobkit.timer(self,1) then
|
||||||
|
|
|
@ -145,15 +145,22 @@ petz.growth_timer = function(self, dtime)
|
||||||
local pos = self.object:get_pos()
|
local pos = self.object:get_pos()
|
||||||
pos.y = pos.y + 1.01 -- grows a litte up
|
pos.y = pos.y + 1.01 -- grows a litte up
|
||||||
self.object:set_pos(pos)
|
self.object:set_pos(pos)
|
||||||
local vel = self.object:get_velocity()
|
local obj
|
||||||
|
if self.parents then -- for chicken only
|
||||||
|
mokapi.remove_mob(self)
|
||||||
|
obj = minetest.add_entity(pos, self.parents[math.random(1, #self.parents)])
|
||||||
|
else
|
||||||
|
obj = self.object
|
||||||
|
petz.set_properties(self, {
|
||||||
|
jump = false,
|
||||||
|
is_baby = false,
|
||||||
|
visual_size = self.visual_size,
|
||||||
|
collisionbox = self.collisionbox
|
||||||
|
})
|
||||||
|
end
|
||||||
|
local vel = obj:get_velocity()
|
||||||
vel.y=vel.y + 4.0
|
vel.y=vel.y + 4.0
|
||||||
self.object:set_velocity(vel)
|
obj:set_velocity(vel)
|
||||||
petz.set_properties(self, {
|
mokapi.make_sound("object", obj, "petz_pop_sound", petz.settings.max_hear_distance)
|
||||||
jump = false,
|
|
||||||
is_baby = false,
|
|
||||||
visual_size = self.visual_size,
|
|
||||||
collisionbox = self.collisionbox
|
|
||||||
})
|
|
||||||
mokapi.make_sound("object", self.object, "petz_pop_sound", petz.settings.max_hear_distance)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -14,7 +14,8 @@ petz.lay_egg = function(self)
|
||||||
end
|
end
|
||||||
local pos = self.object:get_pos()
|
local pos = self.object:get_pos()
|
||||||
if self.type_of_egg == "item" then
|
if self.type_of_egg == "item" then
|
||||||
if math.random(1, petz.settings.lay_egg_chance) == 1 then
|
local lay_egg_timing = petz.settings.lay_egg_timing
|
||||||
|
if mobkit.timer(self, math.random(lay_egg_timing - (lay_egg_timing*0.2), lay_egg_timing+ (lay_egg_timing*0.2))) then
|
||||||
minetest.add_item(pos, "petz:"..self.type.."_egg") --chicken/duck/penguin egg!
|
minetest.add_item(pos, "petz:"..self.type.."_egg") --chicken/duck/penguin egg!
|
||||||
petz.increase_egg_count(self)
|
petz.increase_egg_count(self)
|
||||||
end
|
end
|
||||||
|
@ -26,8 +27,14 @@ petz.lay_egg = function(self)
|
||||||
{x = pos.x + lay_range, y = pos.y + 1, z = pos.z + lay_range},
|
{x = pos.x + lay_range, y = pos.y + 1, z = pos.z + lay_range},
|
||||||
"petz:ducky_nest")
|
"petz:ducky_nest")
|
||||||
if #nearby_nodes > 1 then
|
if #nearby_nodes > 1 then
|
||||||
|
local nest_type
|
||||||
|
if self.type == "hen" then
|
||||||
|
nest_type = "chicken"
|
||||||
|
else
|
||||||
|
nest_type = "ducky"
|
||||||
|
end
|
||||||
local nest_to_lay = nearby_nodes[math.random(1, #nearby_nodes)]
|
local nest_to_lay = nearby_nodes[math.random(1, #nearby_nodes)]
|
||||||
minetest.set_node(nest_to_lay, {name= "petz:"..self.type.."_nest_egg"})
|
minetest.set_node(nest_to_lay, {name= "petz:"..nest_type.."_nest_egg"})
|
||||||
petz.increase_egg_count(self)
|
petz.increase_egg_count(self)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -170,7 +170,10 @@ function petz.set_initial_properties(self, staticdata, dtime_s)
|
||||||
self.gallop_exhausted = mobkit.remember(self, "gallop_exhausted", false)
|
self.gallop_exhausted = mobkit.remember(self, "gallop_exhausted", false)
|
||||||
self.gallop_recover_time = mobkit.remember(self, "gallop_recover_time", petz.settings.gallop_recover_time)
|
self.gallop_recover_time = mobkit.remember(self, "gallop_recover_time", petz.settings.gallop_recover_time)
|
||||||
end
|
end
|
||||||
if self.type == "pony" then
|
if self.parents then
|
||||||
|
self.is_baby = mobkit.remember(self, "is_baby", true)
|
||||||
|
end
|
||||||
|
if self.type == "pony" then --not in the previopus loop, cos also is mountable
|
||||||
self.horseshoes = mobkit.remember(self, "horseshoes", 0)
|
self.horseshoes = mobkit.remember(self, "horseshoes", 0)
|
||||||
end
|
end
|
||||||
if self.herd then
|
if self.herd then
|
||||||
|
@ -351,6 +354,13 @@ function petz.set_initial_properties(self, staticdata, dtime_s)
|
||||||
petz.colorize(self, self.colorized)
|
petz.colorize(self, self.colorized)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
--DELETE THIS BLOCK IN THE NEXT UPDATE -- FOR COMPATIBIITY PURPOSES FOR OLD CHICKENS ONLY>>>
|
||||||
|
if self.type == "chicken" and self.texture_no > 1 then
|
||||||
|
self.is_baby = mobkit.remember(self, "is_baby", true)
|
||||||
|
self.texture_no = mobkit.remember(self, "texture_no", 1)
|
||||||
|
petz.set_properties(self, {textures = {self.textures[1]}})
|
||||||
|
end
|
||||||
|
--<<<
|
||||||
if self.horseshoes and captured_mob == false then
|
if self.horseshoes and captured_mob == false then
|
||||||
petz.horseshoes_speedup(self)
|
petz.horseshoes_speedup(self)
|
||||||
end
|
end
|
||||||
|
|
|
@ -62,6 +62,7 @@ petz.on_rightclick = function(self, clicker)
|
||||||
petz.capture(self, clicker, true)
|
petz.capture(self, clicker, true)
|
||||||
minetest.chat_send_player("singleplayer", S("Your").." "..S(pet_name).." "..S("has been captured")..".")
|
minetest.chat_send_player("singleplayer", S("Your").." "..S(pet_name).." "..S("has been captured")..".")
|
||||||
elseif self.breed and wielded_item_name == petz.settings[self.type.."_breed"] and not(self.is_baby) then
|
elseif self.breed and wielded_item_name == petz.settings[self.type.."_breed"] and not(self.is_baby) then
|
||||||
|
minetest.chat_send_all("test="..petz.settings[self.type.."_breed"])
|
||||||
petz.breed(self, clicker, wielded_item, wielded_item_name)
|
petz.breed(self, clicker, wielded_item, wielded_item_name)
|
||||||
elseif (wielded_item_name == "petz:dreamcatcher") and (self.tamed == true) and (self.is_pet == true) and is_owner then
|
elseif (wielded_item_name == "petz:dreamcatcher") and (self.tamed == true) and (self.is_pet == true) and is_owner then
|
||||||
petz.put_dreamcatcher(self, clicker, wielded_item, wielded_item_name)
|
petz.put_dreamcatcher(self, clicker, wielded_item, wielded_item_name)
|
||||||
|
|
|
@ -23,7 +23,7 @@ petz.on_step = function(self, dtime)
|
||||||
end
|
end
|
||||||
--Tamagochi
|
--Tamagochi
|
||||||
--Check the hungry
|
--Check the hungry
|
||||||
if petz.settings.tamagochi_mode == true and self.owner and self.is_pet and petz.settings.tamagochi_hungry_warning > 0 and not(self.status=="sleep") then
|
if petz.settings.tamagochi_mode == true and self.owner and self.is_pet and petz.settings.tamagochi_hungry_warning > 0 and not(self.status=="sleep") and petz.settings[self.type.."_follow"] then
|
||||||
if not(self.tmp_follow_texture) then
|
if not(self.tmp_follow_texture) then
|
||||||
local items = string.split(petz.settings[self.type.."_follow"], ',')
|
local items = string.split(petz.settings[self.type.."_follow"], ',')
|
||||||
local item = petz.str_remove_spaces(items[1]) --the first one
|
local item = petz.str_remove_spaces(items[1]) --the first one
|
||||||
|
|
|
@ -98,6 +98,7 @@ has been captured=foi capturado.
|
||||||
has been tamed.=foi domado.
|
has been tamed.=foi domado.
|
||||||
has starved to death!!!=morreu de fome!!!
|
has starved to death!!!=morreu de fome!!!
|
||||||
Saúde=Abraço
|
Saúde=Abraço
|
||||||
|
Hen=Galinha
|
||||||
Herding=Pastoreio
|
Herding=Pastoreio
|
||||||
Honey=Mel
|
Honey=Mel
|
||||||
Honeycomb=Favo de mel
|
Honeycomb=Favo de mel
|
||||||
|
@ -178,6 +179,7 @@ Roasted Goat Meat=Carne assada de caprino
|
||||||
Roasted Lamb Chop=Costeleta de cordeiro assada
|
Roasted Lamb Chop=Costeleta de cordeiro assada
|
||||||
Roasted Parrot=Papagaio Assado
|
Roasted Parrot=Papagaio Assado
|
||||||
Roasted Porkchop=Costeleta de porco assada
|
Roasted Porkchop=Costeleta de porco assada
|
||||||
|
Rooster=Galo
|
||||||
Saddle=Sela
|
Saddle=Sela
|
||||||
Saddlebag=Sacos de Sela
|
Saddlebag=Sacos de Sela
|
||||||
Santa Killer=Papai Noel Assassino
|
Santa Killer=Papai Noel Assassino
|
||||||
|
|
|
@ -98,6 +98,7 @@ has been captured=wurde gefangen
|
||||||
has been tamed.=wurde gezähmt.
|
has been tamed.=wurde gezähmt.
|
||||||
has starved to death!!!=ist verhungert!!!
|
has starved to death!!!=ist verhungert!!!
|
||||||
Health=Gesundheit
|
Health=Gesundheit
|
||||||
|
Hen=Henne
|
||||||
Herding=Hüten
|
Herding=Hüten
|
||||||
Honey=Honig
|
Honey=Honig
|
||||||
Honeycomb=Honigwabe
|
Honeycomb=Honigwabe
|
||||||
|
@ -178,6 +179,7 @@ Roasted Goat Meat=Gebratenes Ziegenfleisch
|
||||||
Roasted Lamb Chop=Gebratene Lammkeule
|
Roasted Lamb Chop=Gebratene Lammkeule
|
||||||
Roasted Parrot=Gebratener Papagei
|
Roasted Parrot=Gebratener Papagei
|
||||||
Roasted Porkchop=Gebratenes Schweinekotelett
|
Roasted Porkchop=Gebratenes Schweinekotelett
|
||||||
|
Rooster=Hahn
|
||||||
Saddle=Sattel
|
Saddle=Sattel
|
||||||
Saddlebag=Satteltasche
|
Saddlebag=Satteltasche
|
||||||
Santa Killer=Santa der Killer
|
Santa Killer=Santa der Killer
|
||||||
|
|
|
@ -98,6 +98,7 @@ has been captured=ha sido capturado
|
||||||
has been tamed.=ha sido domesticado.
|
has been tamed.=ha sido domesticado.
|
||||||
has starved to death!!!=ha muerto de hambre!!!
|
has starved to death!!!=ha muerto de hambre!!!
|
||||||
Health=Salud
|
Health=Salud
|
||||||
|
Hen=Gallina
|
||||||
Herding=Pastoreo
|
Herding=Pastoreo
|
||||||
Honey=Miel
|
Honey=Miel
|
||||||
Honeycomb=Panal
|
Honeycomb=Panal
|
||||||
|
@ -178,6 +179,7 @@ Roasted Goat Meat=Carne de cabrito asada
|
||||||
Roasted Lamb Chop=Chuletilla de cordero asada
|
Roasted Lamb Chop=Chuletilla de cordero asada
|
||||||
Roasted Parrot=Loro tostado
|
Roasted Parrot=Loro tostado
|
||||||
Roasted Porkchop=Chuleta de cerdo asada
|
Roasted Porkchop=Chuleta de cerdo asada
|
||||||
|
Rooster=Gallo
|
||||||
Saddle=Silla de montar
|
Saddle=Silla de montar
|
||||||
Saddlebag=Alforjas
|
Saddlebag=Alforjas
|
||||||
Santa Killer=Papá Noel asesino
|
Santa Killer=Papá Noel asesino
|
||||||
|
|
|
@ -98,6 +98,7 @@ has been captured=a été capturé
|
||||||
has been tamed.=a été apprivoisé.
|
has been tamed.=a été apprivoisé.
|
||||||
has starved to death!!!=est mort de faim!!!
|
has starved to death!!!=est mort de faim!!!
|
||||||
Health=Santé
|
Health=Santé
|
||||||
|
Hen=Poule
|
||||||
Herding=Troupeau
|
Herding=Troupeau
|
||||||
Honey=Miel
|
Honey=Miel
|
||||||
Honeycomb=Ruche
|
Honeycomb=Ruche
|
||||||
|
@ -178,6 +179,7 @@ Roasted Goat Meat=Viande de chèvre rôtie
|
||||||
Roasted Lamb Chop=Mouton rôti
|
Roasted Lamb Chop=Mouton rôti
|
||||||
Roasted Parrot=Perroquet rôti
|
Roasted Parrot=Perroquet rôti
|
||||||
Roasted Porkchop=Rôti de porc
|
Roasted Porkchop=Rôti de porc
|
||||||
|
Rooster=Coq
|
||||||
Saddle=Selle
|
Saddle=Selle
|
||||||
Saddlebag=Sac pour selle
|
Saddlebag=Sac pour selle
|
||||||
Santa Killer=Papa Noël tueur
|
Santa Killer=Papa Noël tueur
|
||||||
|
|
|
@ -98,6 +98,7 @@ has been captured=был пойман
|
||||||
has been tamed.=был приручен.
|
has been tamed.=был приручен.
|
||||||
has starved to death!!!=Умер от голода!!!
|
has starved to death!!!=Умер от голода!!!
|
||||||
Health=Здоровье
|
Health=Здоровье
|
||||||
|
Hen=Курица
|
||||||
Herding=выпас
|
Herding=выпас
|
||||||
Honey=Мёд
|
Honey=Мёд
|
||||||
Honeycomb=Соты
|
Honeycomb=Соты
|
||||||
|
@ -178,6 +179,7 @@ Roasted Lamb Chop=Жареные отбивные из ягненка
|
||||||
Roasted Goat Meat=Жареное козье мясо
|
Roasted Goat Meat=Жареное козье мясо
|
||||||
Roasted Parrot=Жареный попугай
|
Roasted Parrot=Жареный попугай
|
||||||
Roasted Porkchop=Жареная свиная отбивная
|
Roasted Porkchop=Жареная свиная отбивная
|
||||||
|
Rooster=Рустер
|
||||||
Saddle=Седло
|
Saddle=Седло
|
||||||
Saddlebag=Мешок
|
Saddlebag=Мешок
|
||||||
Santa Killer=Злой Санта
|
Santa Killer=Злой Санта
|
||||||
|
|
|
@ -66,7 +66,17 @@ minetest.register_craftitem("petz:kennel", {
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local pt_above = pointed_thing.above
|
local pt_above = pointed_thing.above
|
||||||
if not(minetest.is_protected(pt_above, user:get_player_name())) then
|
local pos2 = {
|
||||||
|
x = pt_above.x + 3,
|
||||||
|
y = pt_above.y + 5,
|
||||||
|
z = pt_above.z + 4,
|
||||||
|
}
|
||||||
|
local player_name = user:get_player_name()
|
||||||
|
if petz.settings["disable_kennel"] then
|
||||||
|
minetest.chat_send_player(player_name, S("The placement of kennel was disabled."))
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if not(minetest.is_area_protected(pt_above, pos2, player_name, 4)) then
|
||||||
minetest.place_schematic(pt_above, modpath..'/schematics/kennel.mts', 0, nil, true)
|
minetest.place_schematic(pt_above, modpath..'/schematics/kennel.mts', 0, nil, true)
|
||||||
itemstack:take_item()
|
itemstack:take_item()
|
||||||
return itemstack
|
return itemstack
|
||||||
|
@ -194,7 +204,8 @@ minetest.register_node("petz:chicken_nest_egg", {
|
||||||
},
|
},
|
||||||
on_construct = function(pos)
|
on_construct = function(pos)
|
||||||
local timer = minetest.get_node_timer(pos)
|
local timer = minetest.get_node_timer(pos)
|
||||||
timer:start(math.random(400, 600))
|
local hatch_egg_timing = petz.settings.hatch_egg_timing
|
||||||
|
timer:start(math.random(hatch_egg_timing - (hatch_egg_timing*0.2), hatch_egg_timing+ (hatch_egg_timing*0.2)))
|
||||||
end,
|
end,
|
||||||
on_timer = function(pos)
|
on_timer = function(pos)
|
||||||
local pos_above = {x = pos.x, y = pos.y +1, z= pos.z}
|
local pos_above = {x = pos.x, y = pos.y +1, z= pos.z}
|
||||||
|
@ -202,7 +213,9 @@ minetest.register_node("petz:chicken_nest_egg", {
|
||||||
if not minetest.registered_entities["petz:chicken"] then
|
if not minetest.registered_entities["petz:chicken"] then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
minetest.add_entity(pos_above, "petz:chicken")
|
local entity = minetest.add_entity(pos_above, "petz:chicken"):get_luaentity()
|
||||||
|
entity.is_baby = mobkit.remember(entity, "is_baby", true) --it is a baby
|
||||||
|
entity.growth_time = mobkit.remember(entity, "growth_time", 0.0) --the chicken to grow
|
||||||
minetest.set_node(pos, {name= "petz:ducky_nest"})
|
minetest.set_node(pos, {name= "petz:ducky_nest"})
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
|
@ -9,7 +9,10 @@ function petz.bh_create_anthill(self, pos)
|
||||||
if not self.create_anthill or pos.y > 8 then
|
if not self.create_anthill or pos.y > 8 then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
local node_name = mobkit.node_name_in(self, "below")
|
local node_name, pos_below = mobkit.node_name_in(self, "below")
|
||||||
|
if minetest.is_protected(pos_below, "") then --check for a non-protected node
|
||||||
|
return false
|
||||||
|
end
|
||||||
--Only construct on 'soil' or 'sand' nodes
|
--Only construct on 'soil' or 'sand' nodes
|
||||||
if minetest.get_item_group(node_name, "soil") > 0 or minetest.get_item_group(node_name, "sand") > 0 then
|
if minetest.get_item_group(node_name, "soil") > 0 or minetest.get_item_group(node_name, "sand") > 0 then
|
||||||
local minp = {
|
local minp = {
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
---
|
---
|
||||||
--- Aquatic Behaviours
|
--- Aquatic Behaviours
|
||||||
---
|
---
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- ARBOREAL BRAIN
|
-- ARBOREAL BRAIN
|
||||||
--
|
--
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Attack Player Behaviour
|
-- Attack Player Behaviour
|
||||||
--
|
--
|
||||||
|
@ -102,8 +100,6 @@ end
|
||||||
|
|
||||||
function petz.lq_jumpattack(self,height,target)
|
function petz.lq_jumpattack(self,height,target)
|
||||||
local phase=1
|
local phase=1
|
||||||
local timer=0.5
|
|
||||||
local tgtbox = target:get_properties().collisionbox
|
|
||||||
local func=function(self)
|
local func=function(self)
|
||||||
if not mobkit.is_alive(target) then return true end
|
if not mobkit.is_alive(target) then return true end
|
||||||
if self.isonground then
|
if self.isonground then
|
||||||
|
@ -130,7 +126,6 @@ function petz.lq_jumpattack(self,height,target)
|
||||||
-- calculate attack spot
|
-- calculate attack spot
|
||||||
local yaw = self.object:get_yaw()
|
local yaw = self.object:get_yaw()
|
||||||
local dir = minetest.yaw_to_dir(yaw)
|
local dir = minetest.yaw_to_dir(yaw)
|
||||||
local apos = mobkit.pos_translate2d(pos,yaw,self.attack.range)
|
|
||||||
local distance = vector.distance(pos, tgtpos)
|
local distance = vector.distance(pos, tgtpos)
|
||||||
--minetest.chat_send_all(tostring(distance))
|
--minetest.chat_send_all(tostring(distance))
|
||||||
if distance < 2.0 then
|
if distance < 2.0 then
|
||||||
|
@ -218,8 +213,3 @@ function mobkit.lq_flyattack(self, target)
|
||||||
end
|
end
|
||||||
mobkit.queue_low(self,func)
|
mobkit.queue_low(self,func)
|
||||||
end
|
end
|
||||||
|
|
||||||
function petz.rpg_damage(self)
|
|
||||||
local attack = self.attack or nil
|
|
||||||
local max_speed = max_speed or 0
|
|
||||||
end
|
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
---
|
---
|
||||||
--- Bee Behaviours
|
--- Bee Behaviours
|
||||||
---
|
---
|
||||||
|
@ -126,7 +124,6 @@ function mobkit.lq_approach_behive(self)
|
||||||
else
|
else
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
local pos = self.object:get_pos()
|
|
||||||
--local y_distance = tpos.y - pos.y
|
--local y_distance = tpos.y - pos.y
|
||||||
if mobkit.drive_to_pos(self, tpos, 1.5, 6.28, (self.view_range / 4) ) then
|
if mobkit.drive_to_pos(self, tpos, 1.5, 6.28, (self.view_range / 4) ) then
|
||||||
mobkit.clear_queue_high(self)
|
mobkit.clear_queue_high(self)
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Breed Behaviour
|
-- Breed Behaviour
|
||||||
--
|
--
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- WANDER FLY BEHAVIOUR (2 functions: HQ & LQ)
|
-- WANDER FLY BEHAVIOUR (2 functions: HQ & LQ)
|
||||||
--
|
--
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- FOLLOW BEHAVIOURS
|
-- FOLLOW BEHAVIOURS
|
||||||
-- 2 types: for terrestrial and for flying/aquatic mobs.
|
-- 2 types: for terrestrial and for flying/aquatic mobs.
|
||||||
|
@ -103,3 +101,28 @@ function mobkit.flyto(self, target)
|
||||||
self.object:set_yaw(new_yaw)
|
self.object:set_yaw(new_yaw)
|
||||||
self.object:set_velocity(velocity)
|
self.object:set_velocity(velocity)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function petz.follow_parents(self, pos)
|
||||||
|
local tpos
|
||||||
|
local ent_obj = mobkit.get_closest_entity(self, self.parents[1]) -- look for the mom to join with
|
||||||
|
if not ent_obj then
|
||||||
|
ent_obj = mobkit.get_closest_entity(self, self.parents[2]) -- look for the dad to join with
|
||||||
|
end
|
||||||
|
if ent_obj then
|
||||||
|
local ent = ent_obj:get_luaentity()
|
||||||
|
if ent then
|
||||||
|
tpos = ent_obj:get_pos()
|
||||||
|
local distance = vector.distance(pos, tpos)
|
||||||
|
if distance > 5 then
|
||||||
|
mobkit.hq_goto(self, 10, tpos)
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
function petz.bh_look_at(self, player_pos, prty)
|
function petz.bh_look_at(self, player_pos, prty)
|
||||||
if not(petz.settings.look_at) or not(self.head) or not(petz.is_standing(self)) or self.looking
|
if not(petz.settings.look_at) or not(self.head) or not(petz.is_standing(self)) or self.looking
|
||||||
or not(math.random(1, petz.settings.look_at_random) == 1)
|
or not(math.random(1, petz.settings.look_at_random) == 1)
|
||||||
|
@ -15,7 +13,7 @@ function petz.hq_look_at(self, player_pos, prty)
|
||||||
local func = function(self)
|
local func = function(self)
|
||||||
if not(self.looking) then
|
if not(self.looking) then
|
||||||
local random_time = math.random(1, 2)
|
local random_time = math.random(1, 2)
|
||||||
local body_yaw = petz.move_head(self, player_pos)
|
petz.move_head(self, player_pos)
|
||||||
--if random_time == 1 then --move the body to fit the head
|
--if random_time == 1 then --move the body to fit the head
|
||||||
--self.object:set_yaw(body_yaw)
|
--self.object:set_yaw(body_yaw)
|
||||||
--end
|
--end
|
||||||
|
@ -57,7 +55,7 @@ function petz.move_head(self, tpos)
|
||||||
self.head_rotation = vector.add(head_rotation, self.head.rotation_origin) --the offset for the rotation, depends on the blender model
|
self.head_rotation = vector.add(head_rotation, self.head.rotation_origin) --the offset for the rotation, depends on the blender model
|
||||||
self.object:set_bone_position("head", self.head.position, self.head_rotation) --set the head movement
|
self.object:set_bone_position("head", self.head.position, self.head_rotation) --set the head movement
|
||||||
--minetest.chat_send_all(tostring(mokapi.degrees_to_radians(yaw)))
|
--minetest.chat_send_all(tostring(mokapi.degrees_to_radians(yaw)))
|
||||||
return mokapi.degrees_to_radians(body_yaw-yaw)
|
return mokapi.degrees_to_radians(body_yaw-yaw) --returns body_yaw
|
||||||
end
|
end
|
||||||
|
|
||||||
--this sets the mob to move it's head back to pointing forwards
|
--this sets the mob to move it's head back to pointing forwards
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Herding Behaviour
|
-- Herding Behaviour
|
||||||
--
|
--
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
function petz.bh_hunt(self, prty)
|
function petz.bh_hunt(self, prty, force)
|
||||||
if self.tamed == true then
|
if self.tamed == true and not(force) then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local preys_list = petz.settings[self.type.."_preys"]
|
local preys_list = petz.settings[self.type.."_preys"]
|
||||||
|
|
|
@ -70,9 +70,9 @@ function mobkit.lq_mountdriver(self)
|
||||||
local auto_drive = false
|
local auto_drive = false
|
||||||
local func = function(self)
|
local func = function(self)
|
||||||
if not(self.driver) then return true end
|
if not(self.driver) then return true end
|
||||||
local rot_steer, rot_view = math.pi/2, 0
|
local rot_view = 0
|
||||||
if self.player_rotation.y == 90 then
|
if self.player_rotation.y == 90 then
|
||||||
rot_steer, rot_view = 0, math.pi/2
|
rot_view = math.pi/2
|
||||||
end
|
end
|
||||||
local acce_y = 0
|
local acce_y = 0
|
||||||
local velo= {
|
local velo= {
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Replace Behaviour
|
-- Replace Behaviour
|
||||||
--
|
--
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Runaway from predator behaviour
|
-- Runaway from predator behaviour
|
||||||
--
|
--
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Teleport Behaviour
|
-- Teleport Behaviour
|
||||||
--
|
--
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Approach Torch Behaviour
|
-- Approach Torch Behaviour
|
||||||
-- for moths (not finished!!!)
|
-- for moths (not finished!!!)
|
||||||
|
|
|
@ -38,7 +38,7 @@ function petz.ant_brain(self)
|
||||||
|
|
||||||
-- hunt a prey (another queen in the case of a queen)
|
-- hunt a prey (another queen in the case of a queen)
|
||||||
if prty < 20 and self.ant_type == "queen" then
|
if prty < 20 and self.ant_type == "queen" then
|
||||||
petz.bh_hunt(self, 20)
|
petz.bh_hunt(self, 20, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
if prty < 13 and self.ant_type == "queen" and not(self.anthill_founded) then --if queen, try to create a colony (anthill)
|
if prty < 13 and self.ant_type == "queen" and not(self.anthill_founded) then --if queen, try to create a colony (anthill)
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- AQUATIC BRAIN
|
-- AQUATIC BRAIN
|
||||||
--
|
--
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
|
||||||
-- BEE BRAIN
|
-- BEE BRAIN
|
||||||
--
|
--
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
|
||||||
-- 1. HERBIBORE/FLYING MOBS BRAIN
|
-- 1. HERBIBORE/FLYING MOBS BRAIN
|
||||||
--
|
--
|
||||||
|
|
||||||
|
@ -100,6 +97,20 @@ function petz.herbivore_brain(self)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- hunt a prey (another congener)
|
||||||
|
if prty < 12 and self.aggressive then
|
||||||
|
petz.bh_hunt(self, 12, true)
|
||||||
|
end
|
||||||
|
|
||||||
|
--Baby petz follow their parents
|
||||||
|
if prty < 10 then
|
||||||
|
if petz.settings.parent_search and self.parents then
|
||||||
|
if mobkit.timer(self, 5) then --each 5 seconds search for parents
|
||||||
|
petz.follow_parents(self, pos)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
--if prty < 7 and self.type == "moth" and mobkit.is_queue_empty_high(self) then --search for a squareball
|
--if prty < 7 and self.type == "moth" and mobkit.is_queue_empty_high(self) then --search for a squareball
|
||||||
--local pos_torch_near = minetest.find_node_near(pos, self.view_range, "default:torch")
|
--local pos_torch_near = minetest.find_node_near(pos, self.view_range, "default:torch")
|
||||||
--if pos_torch_near then
|
--if pos_torch_near then
|
||||||
|
@ -108,7 +119,7 @@ function petz.herbivore_brain(self)
|
||||||
--end
|
--end
|
||||||
--end
|
--end
|
||||||
|
|
||||||
--Replace nodes by others
|
--Poop
|
||||||
if prty < 7 then
|
if prty < 7 then
|
||||||
petz.poop(self, pos)
|
petz.poop(self, pos)
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- MONSTER BRAIN
|
-- MONSTER BRAIN
|
||||||
--
|
--
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- PREDATOR BRAIN
|
-- PREDATOR BRAIN
|
||||||
--
|
--
|
||||||
|
@ -49,7 +47,7 @@ function petz.predator_brain(self)
|
||||||
|
|
||||||
-- hunt a prey
|
-- hunt a prey
|
||||||
if prty < 12 then -- if not busy with anything important
|
if prty < 12 then -- if not busy with anything important
|
||||||
petz.bh_hunt(self, 12)
|
petz.bh_hunt(self, 12, false)
|
||||||
end
|
end
|
||||||
|
|
||||||
if prty < 10 then
|
if prty < 10 then
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- SEMIAQUATIC BRAIN
|
-- SEMIAQUATIC BRAIN
|
||||||
--
|
--
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
local modpath, S = ...
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Helpers Functions
|
-- Helpers Functions
|
||||||
--
|
--
|
||||||
|
|
|
@ -1,26 +1,26 @@
|
||||||
local modpath, S = ...
|
local modpath, S = ...
|
||||||
|
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_ant.lua"))(modpath)
|
assert(loadfile(modpath .. "/mobkit/bh_ant.lua"))(modpath)
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_aquatic.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/bh_aquatic.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_arboreal.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/bh_arboreal.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_attack.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/bh_attack.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_bee.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/bh_bee.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_breed.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/bh_breed.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_fly.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/bh_fly.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_follow.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/bh_follow.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_herding.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/bh_herding.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_hunt.lua"))()
|
assert(loadfile(modpath .. "/mobkit/bh_hunt.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_mount.lua"))()
|
assert(loadfile(modpath .. "/mobkit/bh_mount.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_replace.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/bh_replace.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_runaway.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/bh_runaway.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_teleport.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/bh_teleport.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_torch.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/bh_torch.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/br_ant.lua"))()
|
assert(loadfile(modpath .. "/mobkit/br_ant.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/br_aquatic.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/br_aquatic.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/br_bee.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/br_bee.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/br_herbivore.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/br_herbivore.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/br_monster.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/br_monster.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/br_predator.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/br_predator.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/br_semiaquatic.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/br_semiaquatic.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/helper_functions.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/helper_functions.lua"))()
|
||||||
assert(loadfile(modpath .. "/mobkit/bh_head.lua"))(modpath, S)
|
assert(loadfile(modpath .. "/mobkit/bh_head.lua"))()
|
||||||
|
|
Before Width: | Height: | Size: 73 B |
|
@ -0,0 +1,394 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
|
||||||
|
<asset>
|
||||||
|
<contributor>
|
||||||
|
<author>VoxelShop User</author>
|
||||||
|
<authoring_tool>VoxelShop V1.8.26
|
||||||
|
</authoring_tool>
|
||||||
|
</contributor>
|
||||||
|
<created>2020-11-29T13:30:01</created>
|
||||||
|
<modified>2020-11-29T13:30:01</modified>
|
||||||
|
<unit meter="1" name="meter"/>
|
||||||
|
<up_axis>Z_UP</up_axis>
|
||||||
|
</asset>
|
||||||
|
<library_images>
|
||||||
|
<image id="petz_chick_texture0-image" name="petz_chick_texture0-image">
|
||||||
|
<init_from>file://petz_chick_texture0.png</init_from>
|
||||||
|
</image>
|
||||||
|
</library_images>
|
||||||
|
<library_effects>
|
||||||
|
<effect id="lambert0-fx">
|
||||||
|
<profile_COMMON>
|
||||||
|
<newparam sid="petz_chick_texture0-surface">
|
||||||
|
<surface type="2D">
|
||||||
|
<init_from>petz_chick_texture0-image</init_from>
|
||||||
|
</surface>
|
||||||
|
</newparam>
|
||||||
|
<newparam sid="petz_chick_texture0-sampler">
|
||||||
|
<sampler2D>
|
||||||
|
<source>petz_chick_texture0-surface</source>
|
||||||
|
<wrap_s>WRAP</wrap_s>
|
||||||
|
<wrap_t>WRAP</wrap_t>
|
||||||
|
<minfilter>NEAREST</minfilter>
|
||||||
|
<magfilter>NEAREST</magfilter>
|
||||||
|
</sampler2D>
|
||||||
|
</newparam>
|
||||||
|
<technique sid="common">
|
||||||
|
<lambert>
|
||||||
|
<emission>
|
||||||
|
<color>0 0 0 1</color>
|
||||||
|
</emission>
|
||||||
|
<ambient>
|
||||||
|
<color>0 0 0 1</color>
|
||||||
|
</ambient>
|
||||||
|
<diffuse>
|
||||||
|
<texture texcoord="TEX0" texture="petz_chick_texture0-sampler"/>
|
||||||
|
</diffuse>
|
||||||
|
</lambert>
|
||||||
|
</technique>
|
||||||
|
</profile_COMMON>
|
||||||
|
</effect>
|
||||||
|
</library_effects>
|
||||||
|
<library_materials>
|
||||||
|
<material id="lambert0-material" name="lambert0">
|
||||||
|
<instance_effect url="#lambert0-fx"/>
|
||||||
|
</material>
|
||||||
|
</library_materials>
|
||||||
|
<library_geometries>
|
||||||
|
<geometry id="Plane-tex-mesh-0" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-0-positions">
|
||||||
|
<float_array count="24" id="Plane-tex-mesh-0-positions-array">-6 -4 -8 -6 0 -10 -6 -4 -10 -6 0 -8 -4 -4 -8 -4 0 -10 -4 -4 -10 -4 0 -8</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="8" source="#Plane-tex-mesh-0-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-0-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-0-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-0-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-0-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-0-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="12" material="Plane-tex-mesh-0-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-0-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-0-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane-tex-mesh-1" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-1-positions">
|
||||||
|
<float_array count="24" id="Plane-tex-mesh-1-positions-array">2 -4 -8 2 0 -10 2 -4 -10 2 0 -8 4 -4 -8 4 0 -10 4 -4 -10 4 0 -8</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="8" source="#Plane-tex-mesh-1-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-1-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-1-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-1-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-1-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-1-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="12" material="Plane-tex-mesh-1-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-1-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-1-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane-tex-mesh-2" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-2-positions">
|
||||||
|
<float_array count="24" id="Plane-tex-mesh-2-positions-array">-2 -8 -6 -2 -6 -8 -2 -8 -8 -2 -6 -6 0 -8 -6 0 -6 -8 0 -8 -8 0 -6 -6</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="8" source="#Plane-tex-mesh-2-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-2-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-2-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-2-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-2-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-2-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="12" material="Plane-tex-mesh-2-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-2-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-2-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane-tex-mesh-3" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-3-positions">
|
||||||
|
<float_array count="48" id="Plane-tex-mesh-3-positions-array">-2 2 -2 -2 4 -4 -2 2 -4 -2 4 -2 -4 -4 0 -4 2 -6 -4 -4 -6 -4 2 0 2 -4 0 2 2 -6 2 -4 -6 2 2 0 0 2 -2 0 4 -4 0 2 -4 0 4 -2</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="16" source="#Plane-tex-mesh-3-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-3-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-3-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-3-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-3-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-3-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="28" material="Plane-tex-mesh-3-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-3-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-3-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 0 0 3 1 1 2 4 0 5 1 6 2 4 0 7 1 5 2 9 1 8 0 10 2 11 1 8 0 9 2 13 1 12 0 14 2 15 1 12 0 13 2 5 1 10 0 6 2 9 1 10 0 5 2 1 1 14 0 2 2 13 1 14 0 1 2 12 0 3 1 0 2 12 0 15 1 3 2 8 0 7 1 4 2 8 0 11 1 7 2 10 0 4 1 6 2 10 0 8 1 4 2 14 1 9 0 5 2 2 1 14 0 5 2 11 1 9 0 14 2 7 1 2 0 5 2 12 1 11 0 14 2 0 1 2 0 7 2 11 1 12 0 7 2 12 1 0 0 7 2 3 1 13 0 1 2 15 1 13 0 3 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane-tex-mesh-4" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-4-positions">
|
||||||
|
<float_array count="36" id="Plane-tex-mesh-4-positions-array">0 -2 -12 0 0 -14 0 -2 -16 0 2 -16 0 0 -12 0 2 -14 2 -2 -12 2 0 -14 2 -2 -16 2 2 -16 2 0 -12 2 2 -14</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="12" source="#Plane-tex-mesh-4-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-4-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-4-uvs-array">0.6667845 0.66643095 0.83309764 0.66643095 0.6667845 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-4-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-4-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-4-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="20" material="Plane-tex-mesh-4-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-4-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-4-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 1 0 3 1 2 2 0 0 4 1 1 2 1 0 5 1 3 2 7 1 6 0 8 2 9 1 7 0 8 2 10 1 6 0 7 2 11 1 7 0 9 2 3 1 8 0 2 2 9 1 8 0 3 2 6 0 4 1 0 2 6 0 10 1 4 2 7 0 5 1 1 2 7 0 11 1 5 2 8 0 0 1 2 2 8 0 6 1 0 2 4 1 7 0 1 2 10 1 7 0 4 2 5 1 9 0 3 2 11 1 9 0 5 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane-tex-mesh-5" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-5-positions">
|
||||||
|
<float_array count="24" id="Plane-tex-mesh-5-positions-array">-4 -6 -6 -4 2 -12 -4 -6 -12 -4 2 -6 2 -6 -6 2 2 -12 2 -6 -12 2 2 -6</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="8" source="#Plane-tex-mesh-5-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-5-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-5-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-5-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-5-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-5-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="12" material="Plane-tex-mesh-5-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-5-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-5-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane-tex-mesh-6" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-6-positions">
|
||||||
|
<float_array count="36" id="Plane-tex-mesh-6-positions-array">-4 -2 -12 -4 0 -14 -4 -2 -16 -4 2 -16 -4 0 -12 -4 2 -14 -2 -2 -12 -2 0 -14 -2 -2 -16 -2 2 -16 -2 0 -12 -2 2 -14</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="12" source="#Plane-tex-mesh-6-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-6-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-6-uvs-array">0.6667845 0.66643095 0.83309764 0.66643095 0.6667845 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-6-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-6-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-6-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="20" material="Plane-tex-mesh-6-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-6-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-6-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 1 0 3 1 2 2 0 0 4 1 1 2 1 0 5 1 3 2 7 1 6 0 8 2 9 1 7 0 8 2 10 1 6 0 7 2 11 1 7 0 9 2 3 1 8 0 2 2 9 1 8 0 3 2 6 0 4 1 0 2 6 0 10 1 4 2 7 0 5 1 1 2 7 0 11 1 5 2 8 0 0 1 2 2 8 0 6 1 0 2 4 1 7 0 1 2 10 1 7 0 4 2 5 1 9 0 3 2 11 1 9 0 5 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
</library_geometries>
|
||||||
|
<library_visual_scenes>
|
||||||
|
<visual_scene id="Scene" name="Scene">
|
||||||
|
<node id="petz_chick.layer" name="petz_chick.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chick.layer" url="#Plane-tex-mesh-0">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="petz_chick.layer.001" name="petz_chick.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chick.layer.001" url="#Plane-tex-mesh-1">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="petz_chick.layer.002" name="petz_chick.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chick.layer.002" url="#Plane-tex-mesh-2">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="petz_chick.layer.003" name="petz_chick.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chick.layer.003" url="#Plane-tex-mesh-3">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="petz_chick.layer.004" name="petz_chick.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chick.layer.004" url="#Plane-tex-mesh-4">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="petz_chick.layer.005" name="petz_chick.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chick.layer.005" url="#Plane-tex-mesh-5">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="petz_chick.layer.006" name="petz_chick.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chick.layer.006" url="#Plane-tex-mesh-6">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
</visual_scene>
|
||||||
|
</library_visual_scenes>
|
||||||
|
<scene>
|
||||||
|
<instance_visual_scene url="#Scene"/>
|
||||||
|
</scene>
|
||||||
|
</COLLADA>
|
|
@ -0,0 +1,488 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
|
||||||
|
<asset>
|
||||||
|
<contributor>
|
||||||
|
<author>VoxelShop User</author>
|
||||||
|
<authoring_tool>VoxelShop V1.8.26
|
||||||
|
</authoring_tool>
|
||||||
|
</contributor>
|
||||||
|
<created>2020-11-29T13:34:13</created>
|
||||||
|
<modified>2020-11-29T13:34:13</modified>
|
||||||
|
<unit meter="1" name="meter"/>
|
||||||
|
<up_axis>Z_UP</up_axis>
|
||||||
|
</asset>
|
||||||
|
<library_images>
|
||||||
|
<image id="petz_chicken_texture0-image" name="petz_chicken_texture0-image">
|
||||||
|
<init_from>file://petz_chicken_texture0.png</init_from>
|
||||||
|
</image>
|
||||||
|
</library_images>
|
||||||
|
<library_effects>
|
||||||
|
<effect id="lambert0-fx">
|
||||||
|
<profile_COMMON>
|
||||||
|
<newparam sid="petz_chicken_texture0-surface">
|
||||||
|
<surface type="2D">
|
||||||
|
<init_from>petz_chicken_texture0-image</init_from>
|
||||||
|
</surface>
|
||||||
|
</newparam>
|
||||||
|
<newparam sid="petz_chicken_texture0-sampler">
|
||||||
|
<sampler2D>
|
||||||
|
<source>petz_chicken_texture0-surface</source>
|
||||||
|
<wrap_s>WRAP</wrap_s>
|
||||||
|
<wrap_t>WRAP</wrap_t>
|
||||||
|
<minfilter>NEAREST</minfilter>
|
||||||
|
<magfilter>NEAREST</magfilter>
|
||||||
|
</sampler2D>
|
||||||
|
</newparam>
|
||||||
|
<technique sid="common">
|
||||||
|
<lambert>
|
||||||
|
<emission>
|
||||||
|
<color>0 0 0 1</color>
|
||||||
|
</emission>
|
||||||
|
<ambient>
|
||||||
|
<color>0 0 0 1</color>
|
||||||
|
</ambient>
|
||||||
|
<diffuse>
|
||||||
|
<texture texcoord="TEX0" texture="petz_chicken_texture0-sampler"/>
|
||||||
|
</diffuse>
|
||||||
|
</lambert>
|
||||||
|
</technique>
|
||||||
|
</profile_COMMON>
|
||||||
|
</effect>
|
||||||
|
</library_effects>
|
||||||
|
<library_materials>
|
||||||
|
<material id="lambert0-material" name="lambert0">
|
||||||
|
<instance_effect url="#lambert0-fx"/>
|
||||||
|
</material>
|
||||||
|
</library_materials>
|
||||||
|
<library_geometries>
|
||||||
|
<geometry id="Plane-tex-mesh-0" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-0-positions">
|
||||||
|
<float_array count="24" id="Plane-tex-mesh-0-positions-array">-2 2 -2 -2 4 -4 -2 2 -4 -2 4 -2 0 2 -2 0 4 -4 0 2 -4 0 4 -2</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="8" source="#Plane-tex-mesh-0-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-0-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-0-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-0-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-0-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-0-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="12" material="Plane-tex-mesh-0-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-0-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-0-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane-tex-mesh-1" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-1-positions">
|
||||||
|
<float_array count="48" id="Plane-tex-mesh-1-positions-array">0 0 -14 0 2 -16 0 0 -16 0 2 -14 -4 0 -14 -4 2 -16 -4 0 -16 -4 2 -14 2 0 -14 2 2 -16 2 0 -16 2 2 -14 -2 0 -14 -2 2 -16 -2 0 -16 -2 2 -14</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="16" source="#Plane-tex-mesh-1-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-1-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-1-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-1-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-1-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-1-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="24" material="Plane-tex-mesh-1-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-1-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-1-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 0 0 3 1 1 2 4 0 5 1 6 2 4 0 7 1 5 2 9 1 8 0 10 2 11 1 8 0 9 2 13 1 12 0 14 2 15 1 12 0 13 2 1 1 10 0 2 2 9 1 10 0 1 2 5 1 14 0 6 2 13 1 14 0 5 2 8 0 3 1 0 2 8 0 11 1 3 2 12 0 7 1 4 2 12 0 15 1 7 2 10 0 0 1 2 2 10 0 8 1 0 2 14 0 4 1 6 2 14 0 12 1 4 2 3 1 9 0 1 2 11 1 9 0 3 2 7 1 13 0 5 2 15 1 13 0 7 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane-tex-mesh-2" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-2-positions">
|
||||||
|
<float_array count="24" id="Plane-tex-mesh-2-positions-array">-6 -4 -8 -6 0 -10 -6 -4 -10 -6 0 -8 -4 -4 -8 -4 0 -10 -4 -4 -10 -4 0 -8</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="8" source="#Plane-tex-mesh-2-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-2-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-2-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-2-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-2-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-2-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="12" material="Plane-tex-mesh-2-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-2-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-2-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane-tex-mesh-3" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-3-positions">
|
||||||
|
<float_array count="24" id="Plane-tex-mesh-3-positions-array">2 -4 -8 2 0 -10 2 -4 -10 2 0 -8 4 -4 -8 4 0 -10 4 -4 -10 4 0 -8</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="8" source="#Plane-tex-mesh-3-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-3-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-3-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-3-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-3-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-3-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="12" material="Plane-tex-mesh-3-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-3-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-3-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane-tex-mesh-4" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-4-positions">
|
||||||
|
<float_array count="24" id="Plane-tex-mesh-4-positions-array">-2 -8 -6 -2 -6 -8 -2 -8 -8 -2 -6 -6 0 -8 -6 0 -6 -8 0 -8 -8 0 -6 -6</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="8" source="#Plane-tex-mesh-4-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-4-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-4-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-4-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-4-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-4-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="12" material="Plane-tex-mesh-4-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-4-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-4-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane-tex-mesh-5" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-5-positions">
|
||||||
|
<float_array count="24" id="Plane-tex-mesh-5-positions-array">-4 -4 0 -4 2 -6 -4 -4 -6 -4 2 0 2 -4 0 2 2 -6 2 -4 -6 2 2 0</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="8" source="#Plane-tex-mesh-5-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-5-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-5-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-5-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-5-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-5-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="12" material="Plane-tex-mesh-5-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-5-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-5-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane-tex-mesh-6" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-6-positions">
|
||||||
|
<float_array count="24" id="Plane-tex-mesh-6-positions-array">0 -2 -12 0 0 -16 0 -2 -16 0 0 -12 2 -2 -12 2 0 -16 2 -2 -16 2 0 -12</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="8" source="#Plane-tex-mesh-6-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-6-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-6-uvs-array">0.6667845 0.66643095 0.83309764 0.66643095 0.6667845 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-6-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-6-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-6-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="12" material="Plane-tex-mesh-6-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-6-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-6-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane-tex-mesh-7" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-7-positions">
|
||||||
|
<float_array count="24" id="Plane-tex-mesh-7-positions-array">-4 -6 -6 -4 2 -12 -4 -6 -12 -4 2 -6 2 -6 -6 2 2 -12 2 -6 -12 2 2 -6</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="8" source="#Plane-tex-mesh-7-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-7-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-7-uvs-array">0.16678452 0.66643095 0.33309764 0.66643095 0.16678452 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-7-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-7-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-7-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="12" material="Plane-tex-mesh-7-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-7-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-7-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
<geometry id="Plane-tex-mesh-8" name="Plane-tex">
|
||||||
|
<mesh>
|
||||||
|
<source id="Plane-tex-mesh-8-positions">
|
||||||
|
<float_array count="24" id="Plane-tex-mesh-8-positions-array">-4 -2 -12 -4 0 -16 -4 -2 -16 -4 0 -12 -2 -2 -12 -2 0 -16 -2 -2 -16 -2 0 -12</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="8" source="#Plane-tex-mesh-8-positions-array" stride="3">
|
||||||
|
<param name="X" type="float"/>
|
||||||
|
<param name="Y" type="float"/>
|
||||||
|
<param name="Z" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<source id="Plane-tex-mesh-8-uvs">
|
||||||
|
<float_array count="6" id="Plane-tex-mesh-8-uvs-array">0.6667845 0.66643095 0.83309764 0.66643095 0.6667845 0.33380473</float_array>
|
||||||
|
<technique_common>
|
||||||
|
<accessor count="3" source="#Plane-tex-mesh-8-uvs-array" stride="2">
|
||||||
|
<param name="S" type="float"/>
|
||||||
|
<param name="T" type="float"/>
|
||||||
|
</accessor>
|
||||||
|
</technique_common>
|
||||||
|
</source>
|
||||||
|
<vertices id="Plane-tex-mesh-8-vertices">
|
||||||
|
<input semantic="POSITION" source="#Plane-tex-mesh-8-positions"/>
|
||||||
|
</vertices>
|
||||||
|
<triangles count="12" material="Plane-tex-mesh-8-lambert0-material">
|
||||||
|
<input offset="0" semantic="VERTEX" source="#Plane-tex-mesh-8-vertices"/>
|
||||||
|
<input offset="1" semantic="TEXCOORD" set="0" source="#Plane-tex-mesh-8-uvs"/>
|
||||||
|
<p>0 0 1 1 2 2 0 0 3 1 1 2 5 1 4 0 6 2 7 1 4 0 5 2 1 1 6 0 2 2 5 1 6 0 1 2 4 0 3 1 0 2 4 0 7 1 3 2 6 0 0 1 2 2 6 0 4 1 0 2 3 1 5 0 1 2 7 1 5 0 3 2</p>
|
||||||
|
</triangles>
|
||||||
|
</mesh>
|
||||||
|
</geometry>
|
||||||
|
</library_geometries>
|
||||||
|
<library_visual_scenes>
|
||||||
|
<visual_scene id="Scene" name="Scene">
|
||||||
|
<node id="petz_chicken.layer" name="petz_chicken.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chicken.layer" url="#Plane-tex-mesh-0">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="petz_chicken.layer.001" name="petz_chicken.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chicken.layer.001" url="#Plane-tex-mesh-1">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="petz_chicken.layer.002" name="petz_chicken.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chicken.layer.002" url="#Plane-tex-mesh-2">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="petz_chicken.layer.003" name="petz_chicken.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chicken.layer.003" url="#Plane-tex-mesh-3">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="petz_chicken.layer.004" name="petz_chicken.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chicken.layer.004" url="#Plane-tex-mesh-4">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="petz_chicken.layer.005" name="petz_chicken.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chicken.layer.005" url="#Plane-tex-mesh-5">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="petz_chicken.layer.006" name="petz_chicken.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chicken.layer.006" url="#Plane-tex-mesh-6">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="petz_chicken.layer.007" name="petz_chicken.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chicken.layer.007" url="#Plane-tex-mesh-7">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
<node id="petz_chicken.layer.008" name="petz_chicken.Layer" type="NODE">
|
||||||
|
<translate sid="location">-0.0 -0.0 -0.0</translate>
|
||||||
|
<rotate sid="rotationZ">0 0 1 0</rotate>
|
||||||
|
<rotate sid="rotationY">0 1 0 0</rotate>
|
||||||
|
<rotate sid="rotationX">1 0 0 0</rotate>
|
||||||
|
<scale sid="scale">0.03125 0.03125 0.03125</scale>
|
||||||
|
<instance_geometry name="Layer" sid="petz_chicken.layer.008" url="#Plane-tex-mesh-8">
|
||||||
|
<bind_material>
|
||||||
|
<technique_common>
|
||||||
|
<instance_material symbol="lambert0-material" target="#lambert0-material">
|
||||||
|
<bind_vertex_input input_semantic="TEXCOORD" input_set="0" semantic="TEX0"/>
|
||||||
|
</instance_material>
|
||||||
|
</technique_common>
|
||||||
|
</bind_material>
|
||||||
|
</instance_geometry>
|
||||||
|
</node>
|
||||||
|
</visual_scene>
|
||||||
|
</library_visual_scenes>
|
||||||
|
<scene>
|
||||||
|
<instance_visual_scene url="#Scene"/>
|
||||||
|
</scene>
|
||||||
|
</COLLADA>
|