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
|
||||
return wardrobe.playerSkins[name]
|
||||
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]
|
||||
end
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ end
|
|||
|
||||
if minetest.get_modpath("technic") then
|
||||
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")
|
||||
end
|
||||
local skin_mods = {"skins", "u_skins", "simple_skins", "wardrobe"}
|
||||
|
@ -94,9 +94,9 @@ dofile(modpath.."/armor.lua")
|
|||
|
||||
armor.formspec = armor.formspec..
|
||||
"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
|
||||
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
|
||||
armor:register_on_damage(function(player, index, stack)
|
||||
local name = player:get_player_name()
|
||||
|
@ -192,6 +192,9 @@ local function init_player_armor(initplayer)
|
|||
armor:set_player_armor(player)
|
||||
end,
|
||||
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())
|
||||
if not element then
|
||||
return 0
|
||||
|
@ -207,9 +210,15 @@ local function init_player_armor(initplayer)
|
|||
return 1
|
||||
end,
|
||||
allow_take = function(inv, listname, index, stack, player)
|
||||
if player:get_player_name() ~= name then
|
||||
return 0
|
||||
end
|
||||
return stack:get_count()
|
||||
end,
|
||||
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
|
||||
end,
|
||||
}, name)
|
||||
|
@ -308,7 +317,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||
if not name then
|
||||
return
|
||||
end
|
||||
local player_name = player:get_player_name()
|
||||
local player_name = player:get_player_name()
|
||||
for field, _ in pairs(fields) do
|
||||
if string.find(field, "skins_set") then
|
||||
armor:update_skin(player_name)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Subproject commit a6777dc539625ff863c73cecfb9addffb12825db
|
|
@ -155,7 +155,8 @@ function beds.register_bed(name, def)
|
|||
paramtype2 = "facedir",
|
||||
is_ground_content = 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(),
|
||||
drop = name .. "_bottom",
|
||||
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_look_horizontal(math.random(1, 180) / 100)
|
||||
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
|
||||
player_api.set_animation(player, "stand" , 30)
|
||||
|
||||
|
@ -91,7 +91,7 @@ local function lay_down(player, pos, bed_pos, state, skip)
|
|||
end
|
||||
|
||||
-- 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!"))
|
||||
return false
|
||||
end
|
||||
|
@ -112,7 +112,7 @@ local function lay_down(player, pos, bed_pos, state, skip)
|
|||
y = bed_pos.y + 0.07,
|
||||
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_api.player_attached[name] = true
|
||||
hud_flags.wielditem = false
|
||||
|
@ -284,4 +284,3 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||
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=Кусок Золота
|
||||
Diamond=Алмаз
|
||||
Clay Lump=Ком Глины
|
||||
Steel Ingot=Железный Брусок
|
||||
Copper Ingot=Медный Брусок
|
||||
Tin Ingot=Оловянный Брусок
|
||||
Bronze Ingot=Бронзовый Брусок
|
||||
Gold Ingot=Золотой Брусок
|
||||
Steel Ingot=Железный Слиток
|
||||
Copper Ingot=Медный Слиток
|
||||
Tin Ingot=Оловянный Слиток
|
||||
Bronze Ingot=Бронзовый Слиток
|
||||
Gold Ingot=Золотой Слиток
|
||||
Mese Crystal Fragment=Осколок Кристалла Месе
|
||||
Clay Brick=Глиняный Кирпич
|
||||
Obsidian Shard=Обсидиановый Осколок
|
||||
Flint=Огниво
|
||||
Flint=Кремень
|
||||
Blueberries=Черника
|
||||
Furnace is empty=Печь пустая
|
||||
Furnace is empty=Печь пуста
|
||||
100% (output full)=100% (полное приготовление)
|
||||
@1%=@1%
|
||||
Empty=Пустое
|
||||
|
@ -80,29 +80,29 @@ Snow=Снег
|
|||
Snow Block=Снежный Блок
|
||||
Ice=Лёд
|
||||
Cave Ice=Пещерный Лёд
|
||||
Apple Tree=Яблоневый Ствол
|
||||
Apple Wood Planks=Яблоневые Деревянные Доски
|
||||
Apple Tree Sapling=Яблоневый Саженец
|
||||
Apple Tree=Ствол Яблони
|
||||
Apple Wood Planks=Яблоневые Доски
|
||||
Apple Tree Sapling=Саженец Яблони
|
||||
Apple Tree Leaves=Яблоневая Листва
|
||||
Apple=Яблоко
|
||||
Apple Marker=Яблочная Метка
|
||||
Jungle Tree=Ствол Тропического Дерева
|
||||
Jungle Wood Planks=Деревянные Доски Тропического Дерева
|
||||
Jungle Wood Planks=Доски из Тропического Дерева
|
||||
Jungle Tree Leaves=Листва Тропического Дерева
|
||||
Jungle Tree Sapling=Саженец Тропического Дерева
|
||||
Emergent Jungle Tree Sapling=Выросший Саженец Тропического Дерева
|
||||
Pine Tree=Сосновый Ствол
|
||||
Pine Wood Planks=Сосновые Деревянные Доски
|
||||
Pine Wood Planks=Сосновые Доски
|
||||
Pine Needles=Сосновая Хвоя
|
||||
Pine Tree Sapling=Сосновый Саженец
|
||||
Pine Tree Sapling=Саженец Сосны
|
||||
Acacia Tree=Ствол Акации
|
||||
Acacia Wood Planks=Деревянные Доски Акации
|
||||
Acacia Wood Planks=Доски Акации
|
||||
Acacia Tree Leaves=Листва Акации
|
||||
Acacia Tree Sapling=Саженец Акации
|
||||
Aspen Tree=Осиновый Ствол
|
||||
Aspen Wood Planks=Осиновые Деревянные Доски
|
||||
Aspen Tree=Ствол Осины
|
||||
Aspen Wood Planks=Осиновые Доски
|
||||
Aspen Tree Leaves=Осиновая Листва
|
||||
Aspen Tree Sapling=Осиновый Саженец
|
||||
Aspen Tree Sapling=Саженец Осины
|
||||
Coal Ore=Уголь
|
||||
Coal Block=Угольный Блок
|
||||
Iron Ore=Железная Руда
|
||||
|
@ -119,7 +119,7 @@ Gold Block=Золотой Блок
|
|||
Diamond Ore=Алмаз
|
||||
Diamond Block=Алмазный Блок
|
||||
Cactus=Кактус
|
||||
Large Cactus Seedling=Кактусовый Саженец
|
||||
Large Cactus Seedling=Саженец Кактуса
|
||||
Papyrus=Папирус
|
||||
Dry Shrub=Сухой Куст
|
||||
Jungle Grass=Тропическая Трава
|
||||
|
@ -127,23 +127,23 @@ Grass=Трава
|
|||
Dry Grass=Сухая Трава
|
||||
Fern=Папоротник
|
||||
Marram Grass=Песколюб
|
||||
Bush Stem=Ствол Яблочного Деревца
|
||||
Bush Leaves=Листья Яблочного Деревца
|
||||
Bush Sapling=Саженца яблочного деревца
|
||||
Bush Stem=Стебли Куста
|
||||
Bush Leaves=Листья Куста
|
||||
Bush Sapling=Саженец Куста
|
||||
Blueberry Bush Leaves with Berries=Куст Черники с Ягодами
|
||||
Blueberry Bush Leaves=Куст Черники
|
||||
Blueberry Bush Sapling=Саженца Куста Черники
|
||||
Acacia Bush Stem=Ствол Деревца Акации
|
||||
Acacia Bush Leaves=Листья Деревца Акации
|
||||
Acacia Bush Sapling=Саженца Деревца Акации
|
||||
Pine Bush Stem=Сосновое Деревце
|
||||
Pine Bush Needles=Хвоя Соснового Деревца
|
||||
Pine Bush Sapling=Саженца Соснового Деревца
|
||||
Blueberry Bush Sapling=Саженец Куста Черники
|
||||
Acacia Bush Stem=Стебли Куста Акации
|
||||
Acacia Bush Leaves=Листья Куста Акации
|
||||
Acacia Bush Sapling=Саженец Куста Акации
|
||||
Pine Bush Stem=Стебли Хвойного Куста
|
||||
Pine Bush Needles=Хвоя Куста
|
||||
Pine Bush Sapling=Саженец Хвойного Куста
|
||||
Kelp=Ламинария
|
||||
Green Coral=Зеленый Коралл
|
||||
Pink Coral=Розовый Коралл
|
||||
Cyan Coral=Голубой Коралл
|
||||
Brown Coral=Бурый Коралл
|
||||
Brown Coral=Коричневый Коралл
|
||||
Orange Coral=Оранжевый Коралл
|
||||
Coral Skeleton=Коралловый Остов
|
||||
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
|
||||
|
||||
-- The hand
|
||||
minetest.register_item(":", {
|
||||
type = "none",
|
||||
wield_image = "wieldhand.png",
|
||||
-- Override the hand item registered in the engine in builtin/game/register.lua
|
||||
minetest.override_item("", {
|
||||
wield_scale = {x=1,y=1,z=2.5},
|
||||
tool_capabilities = {
|
||||
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
|
||||
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
|
||||
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
|
||||
function player_api.set_model(player, model_name)
|
||||
local name = player:get_player_name()
|
||||
|
@ -218,8 +243,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||
else
|
||||
gender = player_api.set_gender(player, "random")
|
||||
end
|
||||
player_api.set_cloths(player, gender)
|
||||
local cloth = player_api.compose_cloth(player, gender)
|
||||
player_api.set_cloths(player)
|
||||
local cloth = player_api.compose_cloth(player)
|
||||
local gender_model = player_api.get_gender_model(gender)
|
||||
player_api.registered_models[gender_model].textures[1] = cloth
|
||||
player_api.set_model(player, gender_model)
|
||||
|
|
|
@ -16,13 +16,35 @@ function player_api.register_cloth(name, def)
|
|||
if not(def.wield_image) then
|
||||
def.wield_image = def.inventory_image
|
||||
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, {
|
||||
description = def.description,
|
||||
description = def.description .. "\n" .. tooltip,
|
||||
inventory_image = def.inventory_image,
|
||||
wield_image = def.wield_image,
|
||||
stack_max = def.stack_max or 16,
|
||||
_cloth_texture = def.texture,
|
||||
_cloth_genre = def.genre,
|
||||
_cloth_preview = def.preview,
|
||||
_cloth_gender = def.gender,
|
||||
groups = def.groups,
|
||||
})
|
||||
end
|
||||
|
@ -32,7 +54,8 @@ player_api.register_cloth("player_api:cloth_female_upper_default", {
|
|||
inventory_image = "cloth_female_upper_default_inv.png",
|
||||
wield_image = "cloth_female_upper_default.png",
|
||||
texture = "cloth_female_upper_default.png",
|
||||
genre = "female",
|
||||
preview = "cloth_female_upper_preview.png",
|
||||
gender = "female",
|
||||
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",
|
||||
wield_image = "cloth_female_lower_default_inv.png",
|
||||
texture = "cloth_female_lower_default.png",
|
||||
genre = "female",
|
||||
preview = "cloth_female_lower_preview.png",
|
||||
gender = "female",
|
||||
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",
|
||||
wield_image = "cloth_female_head_default_inv.png",
|
||||
texture = "cloth_female_head_default.png",
|
||||
genre = "female",
|
||||
preview = "cloth_female_head_preview.png",
|
||||
gender = "female",
|
||||
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",
|
||||
wield_image = "cloth_male_upper_default_inv.png",
|
||||
texture = "cloth_male_upper_default.png",
|
||||
genre = "male",
|
||||
preview = "cloth_male_upper_preview.png",
|
||||
gender = "male",
|
||||
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",
|
||||
wield_image = "cloth_male_lower_default_inv.png",
|
||||
texture = "cloth_male_lower_default.png",
|
||||
genre = "male",
|
||||
preview = "cloth_male_lower_preview.png",
|
||||
gender = "male",
|
||||
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
|
||||
|
||||
local inv = player:get_inventory()
|
||||
inv:set_size("cloths", 3)
|
||||
inv:set_size("cloths", 8)
|
||||
|
||||
if gender == "male" then
|
||||
inv:add_item("cloths", 'player_api:cloth_male_upper_default')
|
||||
|
@ -90,15 +116,14 @@ function player_api.set_cloths(player, gender)
|
|||
end
|
||||
|
||||
function player_api.compose_cloth(player)
|
||||
if not(player_api.has_cloths(player)) then
|
||||
return nil
|
||||
end
|
||||
local gender = player:get_meta():get_string("gender")
|
||||
local meta = player:get_meta()
|
||||
local gender = meta:get_string("gender")
|
||||
local inv = player:get_inventory()
|
||||
local inv_list = inv:get_list("cloths")
|
||||
local upper_ItemStack
|
||||
local lower_ItemStack
|
||||
local head_ItemStack
|
||||
local underwear = false
|
||||
for i = 1, #inv_list do
|
||||
local item_name = inv_list[i]:get_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
|
||||
elseif cloth_type == 3 then
|
||||
lower_ItemStack = minetest.registered_items[item_name]._cloth_texture
|
||||
underwear = true
|
||||
end
|
||||
end
|
||||
if not(underwear) then
|
||||
lower_ItemStack = "cloth_lower_underwear_default.png"
|
||||
end
|
||||
local base_texture
|
||||
if gender == "male" then
|
||||
base_texture = "player_male_base.png"
|
||||
|
|
|
@ -2,6 +2,12 @@
|
|||
Select your gender=Selecciona tu género
|
||||
Male=Hombre
|
||||
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
|
||||
Fresh Summer Denim Shorts=Pantalones vaqueros cortos y frescos
|
||||
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
|
||||
local dir = vector.normalize(vector.subtract(obj_pos, pos))
|
||||
local moveoff = vector.multiply(dir, 2 / dist * radius)
|
||||
obj:add_player_velocity(moveoff)
|
||||
obj:add_velocity(moveoff)
|
||||
|
||||
obj:set_hp(obj:get_hp() - damage)
|
||||
else
|
||||
|
@ -434,7 +434,7 @@ minetest.register_node("tnt:boom", {
|
|||
light_source = default.LIGHT_MAX,
|
||||
walkable = false,
|
||||
drop = "",
|
||||
groups = {dig_immediate = 3},
|
||||
groups = {dig_immediate = 3, not_in_creative_inventory = 1},
|
||||
-- unaffected by explosions
|
||||
on_blast = function() end,
|
||||
})
|
||||
|
@ -531,7 +531,8 @@ minetest.register_node("tnt:gunpowder_burning", {
|
|||
groups = {
|
||||
dig_immediate = 2,
|
||||
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(),
|
||||
on_timer = function(pos, elapsed)
|
||||
|
@ -678,7 +679,7 @@ function tnt.register_tnt(def)
|
|||
light_source = 5,
|
||||
drop = "",
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
groups = {falling_node = 1},
|
||||
groups = {falling_node = 1, not_in_creative_inventory = 1},
|
||||
on_timer = function(pos, elapsed)
|
||||
tnt.boom(pos, def)
|
||||
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=Тёмно-Зелёная Шерсть
|
||||
Green Wool=Зелёная Шерсть
|
||||
Yellow Wool=Жёлтая Шерсть
|
||||
Brown Wool=Бурая Шерсть
|
||||
Brown Wool=Коричневая Шерсть
|
||||
Orange Wool=Оранжевая Шерсть
|
||||
Red 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.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 ={
|
||||
{x=1,z=0},
|
||||
|
@ -40,7 +40,7 @@ local neighbors ={
|
|||
{x=1,z=-1}
|
||||
}
|
||||
|
||||
|
||||
|
||||
-- UTILITY FUNCTIONS
|
||||
|
||||
function mobkit.dot(v1,v2)
|
||||
|
@ -80,7 +80,7 @@ end
|
|||
|
||||
function mobkit.is_pos_in_box(pos,bpos,box)
|
||||
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]
|
||||
end
|
||||
|
||||
|
@ -104,7 +104,7 @@ function mobkit.get_stand_pos(thing) -- thing can be luaentity or objectref.
|
|||
elseif type(thing) == 'userdata' then
|
||||
pos = thing:get_pos()
|
||||
colbox = thing:get_properties().collisionbox
|
||||
else
|
||||
else
|
||||
return false
|
||||
end
|
||||
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.y=mobkit.minmax(vec.y,limit)
|
||||
vec.z=mobkit.minmax(vec.z,limit)
|
||||
|
||||
|
||||
thing:set_acceleration(vec)
|
||||
end
|
||||
|
||||
|
@ -142,15 +142,15 @@ function mobkit.get_nodes_in_area(pos1,pos2,full)
|
|||
local npos2=mobkit.get_node_pos(pos2)
|
||||
local result = {}
|
||||
local cnt = 0 -- safety
|
||||
|
||||
|
||||
local sx = (pos2.x<pos1.x) 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 x=npos1.x-sx
|
||||
local z=npos1.z-sz
|
||||
local y=npos1.y-sy
|
||||
|
||||
|
||||
repeat
|
||||
x=x+sx
|
||||
z=npos1.z-sz
|
||||
|
@ -159,7 +159,7 @@ function mobkit.get_nodes_in_area(pos1,pos2,full)
|
|||
y=npos1.y-sy
|
||||
repeat
|
||||
y=y+sy
|
||||
|
||||
|
||||
local pos = {x=x,y=y,z=z}
|
||||
local node = mobkit.nodeatpos(pos)
|
||||
if node then
|
||||
|
@ -169,17 +169,17 @@ function mobkit.get_nodes_in_area(pos1,pos2,full)
|
|||
result[node] = true
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
cnt=cnt+1
|
||||
if cnt > 125 then
|
||||
if cnt > 125 then
|
||||
minetest.chat_send_all('get_nodes_in_area: area too big ')
|
||||
return result
|
||||
end
|
||||
|
||||
|
||||
until y==npos2.y
|
||||
until z==npos2.z
|
||||
until x==npos2.x
|
||||
|
||||
|
||||
return result
|
||||
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]},
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
function mobkit.get_node_height(pos)
|
||||
local npos = mobkit.get_node_pos(pos)
|
||||
local node = mobkit.nodeatpos(npos)
|
||||
if node == nil then return nil end
|
||||
|
||||
|
||||
if node.walkable then
|
||||
if node.drawtype == 'nodebox' 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
|
||||
else
|
||||
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
|
||||
return minetest.get_node_level(pos)/64-0.5+mobkit.get_node_pos(pos).y, 0, false
|
||||
else
|
||||
|
@ -220,7 +220,7 @@ function mobkit.get_node_height(pos)
|
|||
else
|
||||
local liquidflag = false
|
||||
if node.drawtype == 'liquid' then liquidflag = true end
|
||||
return npos.y-0.5,-1,liquidflag
|
||||
return npos.y-0.5,-1,liquidflag
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -228,18 +228,18 @@ end
|
|||
-- steps(optional) number of recursion steps; default=3
|
||||
-- dir(optional) is 1=up, -1=down, 0=both; default=0
|
||||
-- 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
|
||||
dir = dir or 0
|
||||
|
||||
local h,f,l = mobkit.get_node_height(pos)
|
||||
if h == nil then return nil end
|
||||
if l then liquidflag = true end
|
||||
|
||||
if f==0 then
|
||||
|
||||
if f==0 then
|
||||
return h, liquidflag
|
||||
end
|
||||
|
||||
|
||||
if dir==0 or dir==f then
|
||||
steps = steps - 1
|
||||
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 spd = vector.length(vel)
|
||||
chance = (1-chance) * 1/(spd*0.75+1)
|
||||
|
||||
|
||||
local yaw
|
||||
if spd > 1 then
|
||||
-- spawn in the front arc
|
||||
|
@ -300,15 +300,15 @@ function mobkit.turn2yaw(self,tyaw,rate)
|
|||
local yaw = self.object:get_yaw()
|
||||
yaw = yaw+pi
|
||||
tyaw=(tyaw+pi)%(pi*2)
|
||||
|
||||
|
||||
local step=min(self.dtime*rate,abs(tyaw-yaw)%(pi*2))
|
||||
|
||||
|
||||
local dir = abs(tyaw-yaw)>pi and -1 or 1
|
||||
dir = tyaw>yaw and dir*1 or dir * -1
|
||||
|
||||
|
||||
local nyaw = (yaw+step*dir)%(pi*2)
|
||||
self.object:set_yaw(nyaw-pi)
|
||||
|
||||
|
||||
if nyaw==tyaw then return true, nyaw-pi
|
||||
else return false, nyaw-pi end
|
||||
end
|
||||
|
@ -337,9 +337,9 @@ end
|
|||
-- 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
|
||||
|
||||
local c = -dir.x*pos.x-dir.z*pos.z -- the constant
|
||||
|
||||
if dir.z > 0 then
|
||||
local c = -dir.x*pos.x-dir.z*pos.z -- the constant
|
||||
|
||||
if dir.z > 0 then
|
||||
return dest.z <= (-dir.x*dest.x - c)/dir.z -- line equation
|
||||
elseif dir.z < 0 then
|
||||
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
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
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
|
||||
local colbox = thing:get_properties().collisionbox
|
||||
local height
|
||||
if colbox then height = colbox[5]-colbox[2]
|
||||
if colbox then height = colbox[5]-colbox[2]
|
||||
else height = 0.1 end
|
||||
|
||||
|
||||
return height > 0 and height or 0.1
|
||||
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 type(thing) == 'table' then return thing.hp > 0 end
|
||||
if thing:is_player() then return thing:get_hp() > 0
|
||||
else
|
||||
else
|
||||
local lua = thing:get_luaentity()
|
||||
local hp = lua and lua.hp or nil
|
||||
return hp and hp > 0
|
||||
|
@ -386,9 +386,9 @@ end
|
|||
function mobkit.exists(thing)
|
||||
if not thing then return false 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:get_look_horizontal() then return true end
|
||||
if thing:get_look_horizontal() then return true end
|
||||
else
|
||||
if thing:get_yaw() then return true end
|
||||
end
|
||||
|
@ -413,15 +413,17 @@ function mobkit.animate(self,anim)
|
|||
if self.animation and self.animation[anim] then
|
||||
if self._anim == anim then return end
|
||||
self._anim=anim
|
||||
|
||||
|
||||
local aparms = {}
|
||||
if #self.animation[anim] > 0 then
|
||||
aparms = self.animation[anim][random(#self.animation[anim])]
|
||||
else
|
||||
aparms = self.animation[anim]
|
||||
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
|
||||
self._anim = nil
|
||||
end
|
||||
|
@ -430,20 +432,21 @@ end
|
|||
function mobkit.make_sound(self, sound)
|
||||
local spec = self.sounds and self.sounds[sound]
|
||||
local param_table = {object=self.object}
|
||||
|
||||
|
||||
if type(spec) == 'table' then
|
||||
--pick random sound if it's a spec for random sounds
|
||||
if #spec > 0 then spec = spec[random(#spec)] end
|
||||
|
||||
|
||||
--returns value or a random value within the range [value[1], value[2])
|
||||
local function in_range(value)
|
||||
return type(value) == 'table' and value[1]+random()*(value[2]-value[1]) or value
|
||||
end
|
||||
|
||||
|
||||
--pick random values within a range if they're a table
|
||||
param_table.gain = in_range(spec.gain)
|
||||
param_table.fade = in_range(spec.fade)
|
||||
param_table.pitch = in_range(spec.pitch)
|
||||
return minetest.sound_play(spec.name, param_table)
|
||||
end
|
||||
return minetest.sound_play(spec, param_table)
|
||||
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
|
||||
tpos.y = height
|
||||
height = height - pos.y
|
||||
|
||||
|
||||
-- don't cut corners
|
||||
if neighbor % 2 == 0 then -- diagonal neighbors are even
|
||||
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)
|
||||
if h2 and h2 - pos.y > 0.02 then return end
|
||||
end
|
||||
|
||||
|
||||
-- check 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)
|
||||
|
@ -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 nodes = mobkit.get_nodes_in_area(pos1,pos2,true)
|
||||
|
||||
|
||||
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
|
||||
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
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
return height, tpos, liquidflag
|
||||
else
|
||||
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
|
||||
end
|
||||
local nogopos = self.pos_history[2]
|
||||
|
||||
|
||||
local height, pos2, liquidflag = mobkit.is_neighbor_node_reachable(self,neighbor)
|
||||
--minetest.chat_send_all('pos2 ' .. minetest.serialize(pos2))
|
||||
--minetest.chat_send_all('nogopos ' .. minetest.serialize(nogopos))
|
||||
if height and not liquidflag
|
||||
--minetest.chat_send_all('nogopos ' .. minetest.serialize(nogopos))
|
||||
if height and not liquidflag
|
||||
and not (nogopos and mobkit.isnear2d(pos2,nogopos,0.1)) then
|
||||
|
||||
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
|
||||
-- scan left
|
||||
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
|
||||
update_pos_history(self,pos2)
|
||||
return height,pos2
|
||||
end
|
||||
return height,pos2
|
||||
end
|
||||
-- scan right
|
||||
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
|
||||
update_pos_history(self,pos2)
|
||||
return height,pos2
|
||||
return height,pos2
|
||||
end
|
||||
end
|
||||
--scan rear
|
||||
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
|
||||
update_pos_history(self,pos2)
|
||||
return height,pos2
|
||||
return height,pos2
|
||||
end
|
||||
end
|
||||
-- stuck condition here
|
||||
|
@ -562,7 +565,7 @@ function mobkit.get_next_waypoint_fast(self,tpos,nogopos)
|
|||
local dir=vector.direction(pos,tpos)
|
||||
local neighbor = mobkit.dir2neighbor(dir)
|
||||
local height, pos2, liquidflag = mobkit.is_neighbor_node_reachable(self,neighbor)
|
||||
|
||||
|
||||
if height and not liquidflag then
|
||||
local fast = false
|
||||
heightl = mobkit.is_neighbor_node_reachable(self,mobkit.neighbor_shift(neighbor,-1))
|
||||
|
@ -593,19 +596,19 @@ end
|
|||
|
||||
function mobkit.goto_next_waypoint(self,tpos)
|
||||
local height, pos2 = mobkit.get_next_waypoint(self,tpos)
|
||||
|
||||
|
||||
if not height then return false end
|
||||
|
||||
|
||||
if height <= 0.01 then
|
||||
local yaw = self.object:get_yaw()
|
||||
local tyaw = minetest.dir_to_yaw(vector.direction(self.object:get_pos(),pos2))
|
||||
if abs(tyaw-yaw) > 1 then
|
||||
mobkit.lq_turn2pos(self,pos2)
|
||||
mobkit.lq_turn2pos(self,pos2)
|
||||
end
|
||||
mobkit.lq_dumbwalk(self,pos2)
|
||||
else
|
||||
mobkit.lq_turn2pos(self,pos2)
|
||||
mobkit.lq_dumbjump(self,height)
|
||||
mobkit.lq_turn2pos(self,pos2)
|
||||
mobkit.lq_dumbjump(self,height)
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
@ -618,7 +621,7 @@ function mobkit.go_forward_horizontal(self,speed) -- sets velocity in yaw direct
|
|||
self.object:set_velocity(vel)
|
||||
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()
|
||||
dist = dist or 0.2
|
||||
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
|
||||
end
|
||||
|
||||
-- Memory functions.
|
||||
-- Memory functions.
|
||||
-- Stuff in memory is serialized, never try to remember objectrefs.
|
||||
function mobkit.remember(self,key,val)
|
||||
self.memory[key]=val
|
||||
|
@ -749,20 +752,20 @@ local function sensors()
|
|||
return function(self)
|
||||
timer=timer-self.dtime
|
||||
if timer < 0 then
|
||||
|
||||
|
||||
pulse = pulse + 1 -- do full range every third scan
|
||||
local range = self.view_range
|
||||
if pulse > 2 then
|
||||
if pulse > 2 then
|
||||
pulse = 1
|
||||
else
|
||||
range = self.view_range*0.5
|
||||
end
|
||||
|
||||
|
||||
local pos = self.object:get_pos()
|
||||
--local tim = minetest.get_us_time()
|
||||
self.nearby_objects = minetest.get_objects_inside_radius(pos, range)
|
||||
--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
|
||||
table.remove(self.nearby_objects,i)
|
||||
break
|
||||
|
@ -789,19 +792,19 @@ function mobkit.physics(self)
|
|||
y=vel.y,
|
||||
z=vel.z > 0.2 and vel.z*mobkit.friction or 0})
|
||||
end
|
||||
|
||||
|
||||
-- bounciness
|
||||
if self.springiness and self.springiness > 0 then
|
||||
local vnew = vector.new(vel)
|
||||
|
||||
|
||||
if not self.collided then -- ugly workaround for inconsistent collisions
|
||||
for _,k in ipairs({'y','z','x'}) do
|
||||
if vel[k]==0 and abs(self.lastvelocity[k])> 0.1 then
|
||||
vnew[k]=-self.lastvelocity[k]*self.springiness
|
||||
for _,k in ipairs({'y','z','x'}) do
|
||||
if vel[k]==0 and abs(self.lastvelocity[k])> 0.1 then
|
||||
vnew[k]=-self.lastvelocity[k]*self.springiness
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if not vector.equals(vel,vnew) then
|
||||
self.collided = true
|
||||
else
|
||||
|
@ -810,10 +813,10 @@ function mobkit.physics(self)
|
|||
end
|
||||
self.collided = false
|
||||
end
|
||||
|
||||
|
||||
self.object:set_velocity(vnew)
|
||||
end
|
||||
|
||||
|
||||
-- buoyancy
|
||||
local surface = nil
|
||||
local surfnodename = nil
|
||||
|
@ -841,7 +844,7 @@ function mobkit.physics(self)
|
|||
-- self.isinliquid = false
|
||||
self.object:set_acceleration({x=0,y=mobkit.gravity,z=0})
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
function mobkit.vitals(self)
|
||||
|
@ -851,17 +854,17 @@ function mobkit.vitals(self)
|
|||
if velocity_delta > mobkit.safe_velocity then
|
||||
self.hp = self.hp - floor(self.max_hp * min(1, velocity_delta/mobkit.terminal_velocity))
|
||||
end
|
||||
|
||||
|
||||
-- vitals: oxygen
|
||||
if self.lung_capacity then
|
||||
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
|
||||
if headnode and headnode.drawtype == 'liquid' then
|
||||
if headnode and headnode.drawtype == 'liquid' then
|
||||
self.oxygen = self.oxygen - self.dtime
|
||||
else
|
||||
self.oxygen = self.lung_capacity
|
||||
end
|
||||
|
||||
|
||||
if self.oxygen <= 0 then self.hp=0 end -- drown
|
||||
end
|
||||
end
|
||||
|
@ -878,7 +881,7 @@ function mobkit.actfunc(self, staticdata, dtime_s)
|
|||
|
||||
self.logic = self.logic or self.brainfunc
|
||||
self.physics = self.physics or mobkit.physics
|
||||
|
||||
|
||||
self.lqueue = {}
|
||||
self.hqueue = {}
|
||||
self.nearby_objects = {}
|
||||
|
@ -889,28 +892,28 @@ function mobkit.actfunc(self, staticdata, dtime_s)
|
|||
self.water_drag = self.water_drag or 1
|
||||
|
||||
local sdata = minetest.deserialize(staticdata)
|
||||
if sdata then
|
||||
if sdata then
|
||||
for k,v in pairs(sdata) do
|
||||
self[k] = v
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if self.textures==nil then
|
||||
local prop_tex = self.object:get_properties().textures
|
||||
if prop_tex then self.textures=prop_tex end
|
||||
end
|
||||
|
||||
|
||||
if not self.memory then -- this is the initial activation
|
||||
self.memory = {}
|
||||
|
||||
self.memory = {}
|
||||
|
||||
-- texture variation
|
||||
if #self.textures > 1 then self.texture_no = random(#self.textures) end
|
||||
end
|
||||
|
||||
|
||||
if self.timeout and self.timeout>0 and dtime_s > self.timeout and next(self.memory)==nil then
|
||||
self.object:remove()
|
||||
end
|
||||
|
||||
|
||||
-- apply texture
|
||||
if self.textures and self.texture_no then
|
||||
local props = {}
|
||||
|
@ -927,7 +930,7 @@ function mobkit.actfunc(self, staticdata, dtime_s)
|
|||
end
|
||||
self.armor_groups.immortal = 1
|
||||
self.object:set_armor_groups(self.armor_groups)
|
||||
|
||||
|
||||
self.buoyancy = self.buoyancy or 0
|
||||
self.oxygen = self.oxygen or self.lung_capacity
|
||||
self.lastvelocity = {x=0,y=0,z=0}
|
||||
|
@ -937,11 +940,11 @@ end
|
|||
function mobkit.stepfunc(self,dtime) -- not intended to be modified
|
||||
self.dtime = min(dtime,0.2)
|
||||
self.height = mobkit.get_box_height(self)
|
||||
|
||||
|
||||
-- physics comes first
|
||||
-- self.object:set_acceleration({x=0,y=mobkit.gravity,z=0})
|
||||
local vel = self.object:get_velocity()
|
||||
|
||||
|
||||
-- if self.lastvelocity.y == vel.y then
|
||||
-- if abs(self.lastvelocity.y-vel.y)<0.001 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
|
||||
self.isonground = false
|
||||
end
|
||||
|
||||
|
||||
self:physics()
|
||||
|
||||
if self.logic then
|
||||
|
@ -957,7 +960,7 @@ function mobkit.stepfunc(self,dtime) -- not intended to be modified
|
|||
self:logic()
|
||||
execute_queues(self)
|
||||
end
|
||||
|
||||
|
||||
self.lastvelocity = self.object:get_velocity()
|
||||
self.time_total=self.time_total+self.dtime
|
||||
end
|
||||
|
@ -981,8 +984,8 @@ function mobkit.lq_idle(self,duration,anim)
|
|||
anim = anim or 'stand'
|
||||
local init = true
|
||||
local func=function(self)
|
||||
if init then
|
||||
mobkit.animate(self,anim)
|
||||
if init then
|
||||
mobkit.animate(self,anim)
|
||||
init=false
|
||||
end
|
||||
duration = duration-self.dtime
|
||||
|
@ -998,7 +1001,7 @@ function mobkit.lq_dumbwalk(self,dest,speed_factor)
|
|||
mobkit.animate(self,'walk')
|
||||
timer = timer - self.dtime
|
||||
if timer < 0 then return true end
|
||||
|
||||
|
||||
local pos = mobkit.get_stand_pos(self)
|
||||
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
|
||||
self.object:set_velocity({x=0,y=y,z=0})
|
||||
end
|
||||
return true
|
||||
return true
|
||||
end
|
||||
|
||||
if self.isonground then
|
||||
|
@ -1040,7 +1043,7 @@ function mobkit.lq_dumbjump(self,height,anim)
|
|||
else -- the eagle has landed
|
||||
return true
|
||||
end
|
||||
else
|
||||
else
|
||||
local dir = minetest.yaw_to_dir(yaw)
|
||||
local vel = self.object:get_velocity()
|
||||
if self.lastvelocity.y < 0.9 then
|
||||
|
@ -1090,7 +1093,7 @@ function mobkit.lq_freejump(self)
|
|||
end
|
||||
|
||||
function mobkit.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)
|
||||
|
@ -1121,11 +1124,11 @@ function mobkit.lq_jumpattack(self,height,target)
|
|||
local dir = minetest.yaw_to_dir(yaw)
|
||||
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)
|
||||
-- bounce off
|
||||
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
|
||||
mobkit.make_sound(self,'attack')
|
||||
phase=4
|
||||
|
@ -1158,11 +1161,11 @@ end
|
|||
|
||||
function mobkit.dumbstep(self,height,tpos,speed_factor,idle_duration)
|
||||
if height <= 0.001 then
|
||||
mobkit.lq_turn2pos(self,tpos)
|
||||
mobkit.lq_turn2pos(self,tpos)
|
||||
mobkit.lq_dumbwalk(self,tpos,speed_factor)
|
||||
else
|
||||
mobkit.lq_turn2pos(self,tpos)
|
||||
mobkit.lq_dumbjump(self,height)
|
||||
mobkit.lq_turn2pos(self,tpos)
|
||||
mobkit.lq_dumbjump(self,height)
|
||||
end
|
||||
idle_duration = idle_duration or 6
|
||||
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
|
||||
local height, tpos = mobkit.is_neighbor_node_reachable(self,neighbor)
|
||||
if height then mobkit.dumbstep(self,height,tpos)
|
||||
else
|
||||
else
|
||||
for i=1,4 do --scan left
|
||||
height, tpos = mobkit.is_neighbor_node_reachable(self,(8+neighbor-i-1)%8+1)
|
||||
if height then mobkit.dumbstep(self,height,tpos)
|
||||
|
@ -1246,7 +1249,7 @@ function mobkit.hq_runfrom(self,prty,tgtobj)
|
|||
local init=true
|
||||
local timer=6
|
||||
local func = function(self)
|
||||
|
||||
|
||||
if not mobkit.is_alive(tgtobj) then return true end
|
||||
if init then
|
||||
timer = timer-self.dtime
|
||||
|
@ -1256,7 +1259,7 @@ function mobkit.hq_runfrom(self,prty,tgtobj)
|
|||
end
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
if mobkit.is_queue_empty_low(self) and self.isonground then
|
||||
local pos = mobkit.get_stand_pos(self)
|
||||
local opos = tgtobj:get_pos()
|
||||
|
@ -1286,7 +1289,7 @@ function mobkit.hq_hunt(self,prty,tgtobj)
|
|||
elseif dist > 3 then
|
||||
mobkit.goto_next_waypoint(self,opos)
|
||||
else
|
||||
mobkit.hq_attack(self,prty+1,tgtobj)
|
||||
mobkit.hq_attack(self,prty+1,tgtobj)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1306,7 +1309,7 @@ function mobkit.hq_warn(self,prty,tgtobj)
|
|||
local pos = mobkit.get_stand_pos(self)
|
||||
local opos = tgtobj:get_pos()
|
||||
local dist = vector.distance(pos,opos)
|
||||
|
||||
|
||||
if dist > 11 then
|
||||
return true
|
||||
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
|
||||
else
|
||||
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)
|
||||
end
|
||||
-- make noise in random intervals
|
||||
|
@ -1335,8 +1338,8 @@ function mobkit.hq_die(self)
|
|||
local timer = 5
|
||||
local start = true
|
||||
local func = function(self)
|
||||
if start then
|
||||
mobkit.lq_fallover(self)
|
||||
if start then
|
||||
mobkit.lq_fallover(self)
|
||||
self.logic = function(self) end -- brain dead as well
|
||||
start=false
|
||||
end
|
||||
|
@ -1354,13 +1357,13 @@ function mobkit.hq_attack(self,prty,tgtobj)
|
|||
-- local tpos = tgtobj:get_pos()
|
||||
local tpos = mobkit.get_stand_pos(tgtobj)
|
||||
local dist = vector.distance(pos,tpos)
|
||||
if dist > 3 then
|
||||
if dist > 3 then
|
||||
return true
|
||||
else
|
||||
mobkit.lq_turn2pos(self,tpos)
|
||||
local height = tgtobj:is_player() and 0.35 or tgtobj:get_luaentity().height*0.6
|
||||
if tpos.y+height>pos.y then
|
||||
mobkit.lq_jumpattack(self,tpos.y+height-pos.y,tgtobj)
|
||||
if tpos.y+height>pos.y then
|
||||
mobkit.lq_jumpattack(self,tpos.y+height-pos.y,tgtobj)
|
||||
else
|
||||
mobkit.lq_dumbwalk(self,mobkit.pos_shift(tpos,{x=random()-0.5,z=random()-0.5}))
|
||||
end
|
||||
|
@ -1387,10 +1390,10 @@ function mobkit.hq_liquid_recovery(self,prty) -- scan for nearest land
|
|||
if yaw>2*pi then
|
||||
yaw = 0
|
||||
radius=radius+1
|
||||
if radius > self.view_range then
|
||||
if radius > self.view_range then
|
||||
self.hp = 0
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
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 dir=vector.normalize(vector.direction(pos2d,tpos))
|
||||
local yaw = minetest.dir_to_yaw(dir)
|
||||
|
||||
|
||||
if mobkit.timer(self,1) then
|
||||
--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 h,l = mobkit.get_terrain_height(pos1)
|
||||
if h and h>pos.y then
|
||||
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 h,l = mobkit.get_terrain_height(pos2)
|
||||
if h and h>pos.y then
|
||||
|
@ -1436,11 +1439,11 @@ end
|
|||
-- MACROS
|
||||
local function aqua_radar_dumb(pos,yaw,range,reverse)
|
||||
range = range or 4
|
||||
|
||||
|
||||
local function okpos(p)
|
||||
local node = mobkit.nodeatpos(p)
|
||||
if node then
|
||||
if node.drawtype == 'liquid' then
|
||||
if node then
|
||||
if node.drawtype == 'liquid' then
|
||||
local nodeu = 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
|
||||
|
@ -1450,7 +1453,7 @@ local function aqua_radar_dumb(pos,yaw,range,reverse)
|
|||
end
|
||||
else
|
||||
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})
|
||||
if node2 and node2.drawtype == 'liquid' then return true, h end
|
||||
else
|
||||
|
@ -1461,12 +1464,12 @@ local function aqua_radar_dumb(pos,yaw,range,reverse)
|
|||
return false
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local fpos = mobkit.pos_translate2d(pos,yaw,range)
|
||||
local ok,h = okpos(fpos)
|
||||
if not ok then
|
||||
local ffrom, fto, fstep
|
||||
if reverse then
|
||||
if reverse then
|
||||
ffrom, fto, fstep = 3,1,-1
|
||||
else
|
||||
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
|
||||
end
|
||||
return yaw+pi,h
|
||||
else
|
||||
else
|
||||
return yaw, h
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mobkit.is_in_deep(target)
|
||||
|
@ -1518,7 +1521,7 @@ function mobkit.hq_aqua_roam(self,prty,speed)
|
|||
local vel = self.object:get_velocity()
|
||||
vel.y = vel.y+1
|
||||
self.object:set_velocity(vel)
|
||||
end
|
||||
end
|
||||
if yaw ~= nyaw then
|
||||
tyaw=nyaw
|
||||
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
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
mobkit.turn2yaw(self,tyaw,3)
|
||||
-- local yaw = self.object:get_yaw()
|
||||
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()
|
||||
vel.y = vel.y+1
|
||||
self.object:set_velocity(vel)
|
||||
end
|
||||
end
|
||||
if yaw ~= nyaw then
|
||||
tyaw=nyaw
|
||||
mobkit.hq_aqua_turn(self,prty+1,tyaw,speed)
|
||||
|
@ -1581,7 +1584,7 @@ function mobkit.hq_aqua_attack(self,prty,tgtobj,speed)
|
|||
end
|
||||
|
||||
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)
|
||||
local yaw = self.object:get_yaw()
|
||||
if mobkit.timer(self,1) then
|
||||
|
|
|
@ -145,15 +145,22 @@ petz.growth_timer = function(self, dtime)
|
|||
local pos = self.object:get_pos()
|
||||
pos.y = pos.y + 1.01 -- grows a litte up
|
||||
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
|
||||
self.object:set_velocity(vel)
|
||||
petz.set_properties(self, {
|
||||
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)
|
||||
obj:set_velocity(vel)
|
||||
mokapi.make_sound("object", obj, "petz_pop_sound", petz.settings.max_hear_distance)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -14,7 +14,8 @@ petz.lay_egg = function(self)
|
|||
end
|
||||
local pos = self.object:get_pos()
|
||||
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!
|
||||
petz.increase_egg_count(self)
|
||||
end
|
||||
|
@ -26,8 +27,14 @@ petz.lay_egg = function(self)
|
|||
{x = pos.x + lay_range, y = pos.y + 1, z = pos.z + lay_range},
|
||||
"petz:ducky_nest")
|
||||
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)]
|
||||
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)
|
||||
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_recover_time = mobkit.remember(self, "gallop_recover_time", petz.settings.gallop_recover_time)
|
||||
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)
|
||||
end
|
||||
if self.herd then
|
||||
|
@ -351,6 +354,13 @@ function petz.set_initial_properties(self, staticdata, dtime_s)
|
|||
petz.colorize(self, self.colorized)
|
||||
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
|
||||
petz.horseshoes_speedup(self)
|
||||
end
|
||||
|
|
|
@ -62,6 +62,7 @@ petz.on_rightclick = function(self, clicker)
|
|||
petz.capture(self, clicker, true)
|
||||
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
|
||||
minetest.chat_send_all("test="..petz.settings[self.type.."_breed"])
|
||||
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
|
||||
petz.put_dreamcatcher(self, clicker, wielded_item, wielded_item_name)
|
||||
|
|
|
@ -23,7 +23,7 @@ petz.on_step = function(self, dtime)
|
|||
end
|
||||
--Tamagochi
|
||||
--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
|
||||
local items = string.split(petz.settings[self.type.."_follow"], ',')
|
||||
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 starved to death!!!=morreu de fome!!!
|
||||
Saúde=Abraço
|
||||
Hen=Galinha
|
||||
Herding=Pastoreio
|
||||
Honey=Mel
|
||||
Honeycomb=Favo de mel
|
||||
|
@ -178,6 +179,7 @@ Roasted Goat Meat=Carne assada de caprino
|
|||
Roasted Lamb Chop=Costeleta de cordeiro assada
|
||||
Roasted Parrot=Papagaio Assado
|
||||
Roasted Porkchop=Costeleta de porco assada
|
||||
Rooster=Galo
|
||||
Saddle=Sela
|
||||
Saddlebag=Sacos de Sela
|
||||
Santa Killer=Papai Noel Assassino
|
||||
|
|
|
@ -98,6 +98,7 @@ has been captured=wurde gefangen
|
|||
has been tamed.=wurde gezähmt.
|
||||
has starved to death!!!=ist verhungert!!!
|
||||
Health=Gesundheit
|
||||
Hen=Henne
|
||||
Herding=Hüten
|
||||
Honey=Honig
|
||||
Honeycomb=Honigwabe
|
||||
|
@ -178,6 +179,7 @@ Roasted Goat Meat=Gebratenes Ziegenfleisch
|
|||
Roasted Lamb Chop=Gebratene Lammkeule
|
||||
Roasted Parrot=Gebratener Papagei
|
||||
Roasted Porkchop=Gebratenes Schweinekotelett
|
||||
Rooster=Hahn
|
||||
Saddle=Sattel
|
||||
Saddlebag=Satteltasche
|
||||
Santa Killer=Santa der Killer
|
||||
|
|
|
@ -98,6 +98,7 @@ has been captured=ha sido capturado
|
|||
has been tamed.=ha sido domesticado.
|
||||
has starved to death!!!=ha muerto de hambre!!!
|
||||
Health=Salud
|
||||
Hen=Gallina
|
||||
Herding=Pastoreo
|
||||
Honey=Miel
|
||||
Honeycomb=Panal
|
||||
|
@ -178,6 +179,7 @@ Roasted Goat Meat=Carne de cabrito asada
|
|||
Roasted Lamb Chop=Chuletilla de cordero asada
|
||||
Roasted Parrot=Loro tostado
|
||||
Roasted Porkchop=Chuleta de cerdo asada
|
||||
Rooster=Gallo
|
||||
Saddle=Silla de montar
|
||||
Saddlebag=Alforjas
|
||||
Santa Killer=Papá Noel asesino
|
||||
|
|
|
@ -98,6 +98,7 @@ has been captured=a été capturé
|
|||
has been tamed.=a été apprivoisé.
|
||||
has starved to death!!!=est mort de faim!!!
|
||||
Health=Santé
|
||||
Hen=Poule
|
||||
Herding=Troupeau
|
||||
Honey=Miel
|
||||
Honeycomb=Ruche
|
||||
|
@ -178,6 +179,7 @@ Roasted Goat Meat=Viande de chèvre rôtie
|
|||
Roasted Lamb Chop=Mouton rôti
|
||||
Roasted Parrot=Perroquet rôti
|
||||
Roasted Porkchop=Rôti de porc
|
||||
Rooster=Coq
|
||||
Saddle=Selle
|
||||
Saddlebag=Sac pour selle
|
||||
Santa Killer=Papa Noël tueur
|
||||
|
|
|
@ -98,6 +98,7 @@ has been captured=был пойман
|
|||
has been tamed.=был приручен.
|
||||
has starved to death!!!=Умер от голода!!!
|
||||
Health=Здоровье
|
||||
Hen=Курица
|
||||
Herding=выпас
|
||||
Honey=Мёд
|
||||
Honeycomb=Соты
|
||||
|
@ -178,6 +179,7 @@ Roasted Lamb Chop=Жареные отбивные из ягненка
|
|||
Roasted Goat Meat=Жареное козье мясо
|
||||
Roasted Parrot=Жареный попугай
|
||||
Roasted Porkchop=Жареная свиная отбивная
|
||||
Rooster=Рустер
|
||||
Saddle=Седло
|
||||
Saddlebag=Мешок
|
||||
Santa Killer=Злой Санта
|
||||
|
|
|
@ -66,7 +66,17 @@ minetest.register_craftitem("petz:kennel", {
|
|||
return
|
||||
end
|
||||
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)
|
||||
itemstack:take_item()
|
||||
return itemstack
|
||||
|
@ -194,7 +204,8 @@ minetest.register_node("petz:chicken_nest_egg", {
|
|||
},
|
||||
on_construct = function(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,
|
||||
on_timer = function(pos)
|
||||
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
|
||||
return
|
||||
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"})
|
||||
return true
|
||||
end
|
||||
|
|
|
@ -9,7 +9,10 @@ function petz.bh_create_anthill(self, pos)
|
|||
if not self.create_anthill or pos.y > 8 then
|
||||
return false
|
||||
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
|
||||
if minetest.get_item_group(node_name, "soil") > 0 or minetest.get_item_group(node_name, "sand") > 0 then
|
||||
local minp = {
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
---
|
||||
--- Aquatic Behaviours
|
||||
---
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- ARBOREAL BRAIN
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Attack Player Behaviour
|
||||
--
|
||||
|
@ -102,8 +100,6 @@ end
|
|||
|
||||
function petz.lq_jumpattack(self,height,target)
|
||||
local phase=1
|
||||
local timer=0.5
|
||||
local tgtbox = target:get_properties().collisionbox
|
||||
local func=function(self)
|
||||
if not mobkit.is_alive(target) then return true end
|
||||
if self.isonground then
|
||||
|
@ -130,7 +126,6 @@ function petz.lq_jumpattack(self,height,target)
|
|||
-- calculate attack spot
|
||||
local yaw = self.object:get_yaw()
|
||||
local dir = minetest.yaw_to_dir(yaw)
|
||||
local apos = mobkit.pos_translate2d(pos,yaw,self.attack.range)
|
||||
local distance = vector.distance(pos, tgtpos)
|
||||
--minetest.chat_send_all(tostring(distance))
|
||||
if distance < 2.0 then
|
||||
|
@ -218,8 +213,3 @@ function mobkit.lq_flyattack(self, target)
|
|||
end
|
||||
mobkit.queue_low(self,func)
|
||||
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
|
||||
---
|
||||
|
@ -126,7 +124,6 @@ function mobkit.lq_approach_behive(self)
|
|||
else
|
||||
return true
|
||||
end
|
||||
local pos = self.object:get_pos()
|
||||
--local y_distance = tpos.y - pos.y
|
||||
if mobkit.drive_to_pos(self, tpos, 1.5, 6.28, (self.view_range / 4) ) then
|
||||
mobkit.clear_queue_high(self)
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Breed Behaviour
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- WANDER FLY BEHAVIOUR (2 functions: HQ & LQ)
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- FOLLOW BEHAVIOURS
|
||||
-- 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_velocity(velocity)
|
||||
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)
|
||||
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)
|
||||
|
@ -15,7 +13,7 @@ function petz.hq_look_at(self, player_pos, prty)
|
|||
local func = function(self)
|
||||
if not(self.looking) then
|
||||
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
|
||||
--self.object:set_yaw(body_yaw)
|
||||
--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.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)))
|
||||
return mokapi.degrees_to_radians(body_yaw-yaw)
|
||||
return mokapi.degrees_to_radians(body_yaw-yaw) --returns body_yaw
|
||||
end
|
||||
|
||||
--this sets the mob to move it's head back to pointing forwards
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Herding Behaviour
|
||||
--
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
function petz.bh_hunt(self, prty)
|
||||
if self.tamed == true then
|
||||
function petz.bh_hunt(self, prty, force)
|
||||
if self.tamed == true and not(force) then
|
||||
return
|
||||
end
|
||||
local preys_list = petz.settings[self.type.."_preys"]
|
||||
|
|
|
@ -70,9 +70,9 @@ function mobkit.lq_mountdriver(self)
|
|||
local auto_drive = false
|
||||
local func = function(self)
|
||||
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
|
||||
rot_steer, rot_view = 0, math.pi/2
|
||||
rot_view = math.pi/2
|
||||
end
|
||||
local acce_y = 0
|
||||
local velo= {
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Replace Behaviour
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Runaway from predator behaviour
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Teleport Behaviour
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Approach Torch Behaviour
|
||||
-- for moths (not finished!!!)
|
||||
|
|
|
@ -38,7 +38,7 @@ function petz.ant_brain(self)
|
|||
|
||||
-- hunt a prey (another queen in the case of a queen)
|
||||
if prty < 20 and self.ant_type == "queen" then
|
||||
petz.bh_hunt(self, 20)
|
||||
petz.bh_hunt(self, 20, true)
|
||||
end
|
||||
|
||||
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
|
||||
--
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- BEE BRAIN
|
||||
--
|
||||
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- 1. HERBIBORE/FLYING MOBS BRAIN
|
||||
--
|
||||
|
||||
|
@ -100,6 +97,20 @@ function petz.herbivore_brain(self)
|
|||
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
|
||||
--local pos_torch_near = minetest.find_node_near(pos, self.view_range, "default:torch")
|
||||
--if pos_torch_near then
|
||||
|
@ -108,7 +119,7 @@ function petz.herbivore_brain(self)
|
|||
--end
|
||||
--end
|
||||
|
||||
--Replace nodes by others
|
||||
--Poop
|
||||
if prty < 7 then
|
||||
petz.poop(self, pos)
|
||||
end
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- MONSTER BRAIN
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- PREDATOR BRAIN
|
||||
--
|
||||
|
@ -49,7 +47,7 @@ function petz.predator_brain(self)
|
|||
|
||||
-- hunt a prey
|
||||
if prty < 12 then -- if not busy with anything important
|
||||
petz.bh_hunt(self, 12)
|
||||
petz.bh_hunt(self, 12, false)
|
||||
end
|
||||
|
||||
if prty < 10 then
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- SEMIAQUATIC BRAIN
|
||||
--
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
local modpath, S = ...
|
||||
|
||||
--
|
||||
-- Helpers Functions
|
||||
--
|
||||
|
|
|
@ -1,26 +1,26 @@
|
|||
local modpath, S = ...
|
||||
|
||||
assert(loadfile(modpath .. "/mobkit/bh_ant.lua"))(modpath)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_aquatic.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_arboreal.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_attack.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_bee.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_breed.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_fly.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_follow.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_herding.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_aquatic.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_arboreal.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_attack.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_bee.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_breed.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_fly.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_follow.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_herding.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_hunt.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_mount.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_replace.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_runaway.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_teleport.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_torch.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_replace.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_runaway.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_teleport.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/bh_torch.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/br_ant.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/br_aquatic.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/br_bee.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/br_herbivore.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/br_monster.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/br_predator.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/br_semiaquatic.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/helper_functions.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/bh_head.lua"))(modpath, S)
|
||||
assert(loadfile(modpath .. "/mobkit/br_aquatic.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/br_bee.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/br_herbivore.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/br_monster.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/br_predator.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/br_semiaquatic.lua"))()
|
||||
assert(loadfile(modpath .. "/mobkit/helper_functions.lua"))()
|
||||
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>
|